@patternfly/react-core#TextContent JavaScript Examples
The following examples show how to use
@patternfly/react-core#TextContent.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: BuildModalReview.js From edge-frontend with Apache License 2.0 | 6 votes |
BuildModalReview = ({ reviewObject, key }) => {
return (
<TextContent>
<Title headingLevel="h3">
<Text component={'b'}>{reviewObject.title}</Text>
</Title>
<TextList component={TextListVariants.dl}>
{reviewObject.rows.map((row) => (
<Fragment key={row.title + key}>
<TextListItem component={TextListItemVariants.dt}>
{row.title}
</TextListItem>
<TextListItem component={TextListItemVariants.dd}>
{row.value}
</TextListItem>
</Fragment>
))}
</TextList>
</TextContent>
);
}
Example #2
Source File: LogNestedtable.js From sed-frontend with Apache License 2.0 | 6 votes |
LogNestedTable = ({ services, isInsights }) => {
return (
<Stack>
<StackItem>
<TextContent>
<Text component={TextVariants.h3}>State pushed to systems</Text>
</TextContent>
</StackItem>
<Table
aria-label="Active services Table"
className="sed-c-services__table"
cells={columns}
rows={[
{
noPadding: true,
cells: [
'Connected to Red Hat Insighsts',
isInsights ? 'on' : 'off',
],
},
...Object.entries(services).map(([key, value]) => [
rowMapper[key],
value === 'enabled' ? 'on' : 'off',
]),
]}
variant="compact"
>
<TableHeader />
<TableBody />
</Table>
</Stack>
);
}
Example #3
Source File: ActivationKeysDocsPopover.js From sed-frontend with Apache License 2.0 | 6 votes |
ActivationKeysDocsPopover = (props) => {
const { orgId } = props;
return (
<Popover
headerContent="Activation Keys"
position={PopoverPosition.rightStart}
bodyContent={
<TextContent>
<Text>
Activation keys assist you in registering systems. Metadata such as
role, system purpose, and usage can be automatically attached to
systems via an activation key, and monitored with
<a
target="_blank"
rel="noopener noreferrer"
href={'https://console.redhat.com/insights/subscriptions/rhel'}
>
{' '}
Subscription Watch.
</a>
</Text>
<Text>
To register with an activation key, you will need your organization
ID: <b>{orgId}</b>
</Text>
</TextContent>
}
>
<Button variant="plain" isInline style={{ padding: 0 }}>
<OutlinedQuestionCircleIcon />
</Button>
</Popover>
);
}
Example #4
Source File: view.js From ibutsu-server with MIT License | 6 votes |
render() {
const { view } = this.state;
const { location, history } = this.props;
document.title = view ? view.title + ' | Ibutsu' : document.title;
const ViewComponent = view ? VIEW_MAP[view.widget] : 'div';
return (
<React.Fragment>
<PageSection id="page" variant={PageSectionVariants.light}>
<TextContent>
<Text className="title" component="h1">{(view && view.title) || 'Loading...'}</Text>
</TextContent>
</PageSection>
<PageSection className="pf-u-pb-0">
<ViewComponent view={view} location={location} history={history}/>
</PageSection>
</React.Fragment>
);
}
Example #5
Source File: home.js From ibutsu-server with MIT License | 6 votes |
render() {
return (
<React.Fragment>
<PageSection id="page" variant={PageSectionVariants.light}>
<TextContent>
<Text className="title" component="h1" ouiaId="admin">Administration</Text>
</TextContent>
</PageSection>
<PageSection />
</React.Fragment>
);
}
Example #6
Source File: result.js From ibutsu-server with MIT License | 6 votes |
render() {
const testResult = this.state.testResult;
return (
<React.Fragment>
<PageSection variant={PageSectionVariants.light}>
<TextContent>
<Text component="h1">
{testResult ? testResult.test_id : <Text>Result</Text>}
</Text>
</TextContent>
</PageSection>
<PageSection>
{this.state.isResultValid ?
<ResultView testResult={testResult} history={this.props.history} location={this.props.location}/> :
<EmptyObject headingText="Result not found" returnLink="/results" returnLinkText="Return to results list"/>}
</PageSection>
</React.Fragment>
);
}
Example #7
Source File: TableHeader.js From edge-frontend with Apache License 2.0 | 6 votes |
Header = () => {
return (
<TextContent style={{ padding: '15px', backgroundColor: 'white' }}>
<Text component={TextVariants.h1}>Custom repositories</Text>
<Text component={TextVariants.p}>
Add custom repositories to build RHEL for Edge images with additional
packages.{' '}
{/*<Text
style={{ display: 'inline' }}
component={TextVariants.small}
href="#"
>
<Text component={TextVariants.a} href="#">
Learn more
<ExternalLinkAltIcon size="sm" className="pf-u-ml-sm" />
</Text>
</Text>*/}
</Text>
</TextContent>
);
}
Example #8
Source File: Quickstarts.js From edge-frontend with Apache License 2.0 | 6 votes |
Quickstarts = () => {
return (
<QuickStartCatalogSection>
<TextContent className="pf-u-mb-md">
<Text component="h2">Documentation</Text>
<Text component="p" className="catalog-sub">
Technical information for using the service
</Text>
</TextContent>
<Gallery className="pfext-quick-start-catalog__gallery" hasGutter>
{quickstarts.map((quickStart, index) => {
return (
<GalleryItem
key={index}
className="pfext-quick-start-catalog__gallery-item"
>
<QuickStartTile quickStart={quickStart} />
</GalleryItem>
);
})}
</Gallery>
</QuickStartCatalogSection>
);
}
Example #9
Source File: Layout.js From operate-first.github.io-old with GNU General Public License v3.0 | 6 votes |
Layout = ({ location, srcLink, banner, children }) => {
const [isNavOpen, setIsNavOpen] = useState(true);
const onNavToggle = () => {
setIsNavOpen(!isNavOpen);
};
return (
<Page
header={<Header isNavOpen={isNavOpen} onNavToggle={onNavToggle} location={location} />}
sidebar={<NavSidebar isNavOpen={isNavOpen} location={location} />}
isManagedSidebar
className="layout"
>
{banner && (
<PageSection className="banner">
<TextContent>
<section dangerouslySetInnerHTML={{ __html: banner.html }} />
</TextContent>
</PageSection>
)}
{children}
<PageSection isFilled className="ofc-text-center" variant={PageSectionVariants.dark}>
<TextContent>
<Button variant="primary" isLarge component="a" href={srcLink} target="_contribute">
Contribute to this page
</Button>
</TextContent>
</PageSection>
<Footer />
</Page>
);
}
Example #10
Source File: Samples.js From operate-first.github.io-old with GNU General Public License v3.0 | 6 votes |
Samples = () => (
<div className="samples">
<TextContent>
<Text component={TextVariants.h1}>Hello World</Text>
<Text component={TextVariants.h2}>Second level</Text>
<Text component={TextVariants.h3}>Third level</Text>
<Text component={TextVariants.h4}>Fourth level</Text>
<Text component={TextVariants.h5}>Fifth level</Text>
<Text component={TextVariants.h6}>Sixth level</Text>
</TextContent>
</div>
)
Example #11
Source File: packages.js From edge-frontend with Apache License 2.0 | 6 votes |
PackagesLabel = () => {
const { getState } = useFormApi();
const release = getState()?.values?.release;
const releaseName = release !== undefined ? releaseMapper[release] : '';
return (
<TextContent>
<Text>
Add packages to your <Text component="b">{releaseName}</Text> image.
</Text>
</TextContent>
);
}
Example #12
Source File: JupyterNotebook.js From operate-first.github.io-old with GNU General Public License v3.0 | 6 votes |
JupyterNotebookTemplate = ({ data: { site, jupyterNotebook }, location }) => {
return (
<Layout
location={location}
title={site.siteMetadata.title}
srcLink={jupyterNotebook.fields.srcLink}
>
<SEO title={''} description={''} />
<PageSection className="jupyterNotebook" variant={PageSectionVariants.light}>
<TextContent>
<div className="jupyter-notebook">
<div dangerouslySetInnerHTML={{ __html: jupyterNotebook.html }} />
</div>
</TextContent>
</PageSection>
</Layout>
);
}
Example #13
Source File: MarkdownRemark.js From operate-first.github.io-old with GNU General Public License v3.0 | 6 votes |
MarkdownTemplate = ({ data: { site, markdownRemark }, location }) => {
const siteTitle = site.siteMetadata.title;
return (
<Layout
location={location}
title={siteTitle}
srcLink={markdownRemark.fields.srcLink}
banner={markdownRemark.frontmatter.banner}
>
<SEO
title={markdownRemark.frontmatter.title}
description={markdownRemark.frontmatter.description}
/>
<PageSection
className={`doc ${markdownRemark.frontmatter.extraClasses}`}
variant={PageSectionVariants.light}
isWidthLimited
>
<TextContent>
<h1>{markdownRemark.frontmatter.title}</h1>
<section dangerouslySetInnerHTML={{ __html: markdownRemark.html }} />
</TextContent>
</PageSection>
</Layout>
);
}
Example #14
Source File: Mdx.js From operate-first.github.io-old with GNU General Public License v3.0 | 6 votes |
DocTemplate = ({ data: { site, mdx }, location }) => {
const siteTitle = site.siteMetadata.title;
const shortcodes = { Link, JupyterNotebook }; // Provide common components here
return (
<Layout location={location} title={siteTitle}>
<SEO
title={mdx.frontmatter.title}
description={mdx.frontmatter.description}
srcLink={mdx.fields.srcLink}
/>
<PageSection className="doc" variant={PageSectionVariants.light}>
<TextContent>
<h1>{mdx.frontmatter.title}</h1>
<MDXProvider components={shortcodes}>
<MDXRenderer>{mdx.body}</MDXRenderer>
</MDXProvider>
</TextContent>
</PageSection>
</Layout>
);
}
Example #15
Source File: DeleteActivationKeyConfirmationModal.js From sed-frontend with Apache License 2.0 | 5 votes |
DeleteActivationKeyConfirmationModal = (props) => { const { isOpen, handleModalToggle, name } = props; const { addSuccessNotification, addErrorNotification } = useNotifications(); const { mutate, isLoading } = useDeleteActivationKey(); const queryClient = useQueryClient(); const deleteActivationKey = (name) => { mutate(name, { onSuccess: (_data, name) => { queryClient.setQueryData('activation_keys', (oldData) => oldData.filter((entry) => entry.name != name) ); addSuccessNotification(`Activation Key ${name} deleted`); handleModalToggle(); }, onError: () => { addErrorNotification('Something went wrong. Please try again'); handleModalToggle(); }, }); mutate; }; const actions = [ <Button key="confirm" variant="danger" onClick={() => deleteActivationKey(name)} data-testid="delete-activation-key-confirmation-modal-confirm-button" > Delete </Button>, <Button key="cancel" variant="link" onClick={handleModalToggle}> Cancel </Button>, ]; const title = ( <> <TextContent> <Text component={TextVariants.h2}> <ExclamationTriangleIcon size="md" color="#F0AB00" /> Delete Activation Key? </Text> </TextContent> </> ); const content = () => { if (isLoading) { return <Loading />; } else { return ( <TextContent> <Text component={TextVariants.p}> <b>{name}</b> will no longer be available for use. This operation cannot be undone. </Text> </TextContent> ); } }; return ( <Modal title={title} isOpen={isOpen} onClose={handleModalToggle} variant={ModalVariant.small} actions={actions} > {content()} </Modal> ); }
Example #16
Source File: report-builder.js From ibutsu-server with MIT License | 5 votes |
render() {
document.title = 'Report Builder | Ibutsu';
const { columns, rows, actions } = this.state;
const reportTypes = this.state.reportTypes.map((reportType) => <FormSelectOption key={reportType.type} value={reportType.type} label={reportType.name} />);
const pagination = {
page: this.state.page,
pageSize: this.state.pageSize,
totalItems: this.state.totalItems
};
return (
<React.Fragment>
<PageSection variant={PageSectionVariants.light}>
<TextContent>
<Text component="h1">Report Builder</Text>
</TextContent>
</PageSection>
<PageSection>
<Card>
<CardBody>
<Form isHorizontal>
<FormGroup isRequired label="Report Type" helperText="The type of report" fieldId="report-type">
<FormSelect id="report-type" value={this.state.reportType} onChange={this.onReportTypeChange}>
{reportTypes}
</FormSelect>
</FormGroup>
<FormGroup label="Filter" fieldId="report-filter">
<TextInput type="text" id="report-filter" value={this.state.reportFilter} onChange={this.onReportFilterChange} />
<ExpandableSection toggleText="Filter Help" onToggle={this.onHelpToggle} isExpanded={this.state.isHelpExpanded}>
<TextContent>
<p>The filter parameter takes a comma-separated list of filters to apply. <Linkify componentDecorator={linkifyDecorator}>https://docs.ibutsu-project.org/en/latest/user-guide/filter-help.html</Linkify></p>
</TextContent>
</ExpandableSection>
</FormGroup>
<FormGroup label="Source" helperText="The source of report" fieldId="report-source">
<TextInput type="text" id="report-source" value={this.state.reportSource} onChange={this.onReportSourceChange} />
</FormGroup>
<ActionGroup>
<Button variant="primary" onClick={this.onRunReportClick}>Run Report</Button>
</ActionGroup>
</Form>
</CardBody>
<CardFooter>
<Text className="disclaimer" component="h4">
* Note: reports can only show a maximum of 100,000 results.
</Text>
</CardFooter>
</Card>
</PageSection>
<PageSection>
<Card>
<CardBody>
<FilterTable
columns={columns}
rows={rows}
actions={actions}
pagination={pagination}
isEmpty={this.state.isEmpty}
isError={this.state.isError}
onSetPage={this.setPage}
onSetPageSize={this.setPageSize}
/>
</CardBody>
</Card>
</PageSection>
</React.Fragment>
);
}
Example #17
Source File: tokens.js From ibutsu-server with MIT License | 5 votes |
render() {
document.title = 'User Tokens | Ibutsu';
const { columns, rows } = this.state;
const pagination = {
pageSize: this.state.pageSize,
page: this.state.page,
totalItems: this.state.totalItems
};
return (
<React.Fragment>
<PageSection id="page" variant={PageSectionVariants.light}>
<Flex justifyContent={{ default: 'justifyContentSpaceBetween' }}>
<FlexItem spacer={{ default: 'spacerLg' }}>
<TextContent>
<Text className="title" component="h1">Tokens</Text>
</TextContent>
</FlexItem>
<FlexItem>
<Button
aria-label="Add token"
variant="secondary"
title="Add token"
onClick={this.onAddTokenClick}
>
<PlusCircleIcon /> Add Token
</Button>
</FlexItem>
</Flex>
</PageSection>
<PageSection>
<Card>
<CardBody className="pf-u-p-0">
<FilterTable
columns={columns}
rows={rows}
pagination={pagination}
isEmpty={this.state.isEmpty}
isError={this.state.isError}
onSetPage={this.setPage}
onSetPageSize={this.setPageSize}
/>
</CardBody>
</Card>
</PageSection>
<AddTokenModal
isOpen={this.state.isAddTokenOpen}
onSave={this.onAddTokenSave}
onClose={this.onAddTokenClose}
/>
<DeleteModal
title="Delete token"
body="Would you like to delete the selected token?"
isOpen={this.state.isDeleteTokenOpen}
onDelete={this.onDeleteToken}
onClose={this.onDeleteTokenClose}
/>
</React.Fragment>
);
}
Example #18
Source File: user-list.js From ibutsu-server with MIT License | 5 votes |
render() {
document.title = 'Users - Administration | Ibutsu';
const { columns, rows, textFilter } = this.state;
const pagination = {
pageSize: this.state.pageSize,
page: this.state.page,
totalItems: this.state.totalItems
};
const filters = [
<TextInput type="text" id="filter" placeholder="Search for user..." value={textFilter || ''} onChange={this.onTextChanged} style={{height: "inherit"}} key="textFilter"/>
];
return (
<React.Fragment>
<PageSection id="page" variant={PageSectionVariants.light}>
<TextContent>
<Text className="title" component="h1" ouiaId="users">Users</Text>
</TextContent>
</PageSection>
<PageSection className="pf-u-pb-0">
<Card>
<CardBody className="pf-u-p-0">
<FilterTable
columns={columns}
rows={rows}
filters={filters}
pagination={pagination}
isEmpty={this.state.isEmpty}
isError={this.state.isError}
onSetPage={this.setPage}
onSetPageSize={this.setPageSize}
/>
</CardBody>
</Card>
</PageSection>
<Modal
title="Confirm Delete"
variant="small"
isOpen={this.state.isDeleteModalOpen}
onClose={this.onDeleteModalClose}
actions={[
<Button key="delete" variant="danger" isLoading={this.state.isDeleting} isDisabled={this.state.isDeleting} onClick={this.onModalDeleteClick}>
{this.state.isDeleting ? 'Deleting...' : 'Delete'}
</Button>,
<Button key="cancel" variant="secondary" isDisabled={this.state.isDeleting} onClick={this.onDeleteModalClose}>
Cancel
</Button>
]}
>
Are you sure you want to delete “{this.state.selectedUser && this.state.selectedUser.name}”? This cannot be undone!
</Modal>
</React.Fragment>
);
}
Example #19
Source File: classify-failures.js From ibutsu-server with MIT License | 5 votes |
render() {
const {
columns,
rows,
selectedResults,
includeSkipped,
filters
} = this.state;
const { run_id } = this.props
const pagination = {
pageSize: this.state.pageSize,
page: this.state.page,
totalItems: this.state.totalItems
}
// filters for the metadata
const resultFilters = [
<MetaFilter
key="metafilter"
// user_properties fields shouldn't be injected here
fieldOptions={FILTERABLE_RESULT_FIELDS}
runId={run_id}
setFilter={this.setFilter}
customFilters={{'result': filters['result']}}
/>,
]
return (
<Card className="pf-u-mt-lg">
<CardHeader>
<Flex style={{ width: '100%' }}>
<FlexItem grow={{ default: 'grow' }}>
<TextContent>
<Text component="h2" className="pf-c-title pf-m-xl">Test Failures</Text>
</TextContent>
</FlexItem>
<FlexItem>
<TextContent>
<Checkbox id="include-skips" label="Include skips, xfails" isChecked={includeSkipped} aria-label="include-skips-checkbox" onChange={this.onSkipCheck}/>
</TextContent>
</FlexItem>
<FlexItem>
<MultiClassificationDropdown selectedResults={selectedResults} refreshFunc={this.refreshResults}/>
</FlexItem>
<FlexItem>
<Button variant="secondary" onClick={this.refreshResults}>Refresh results</Button>
</FlexItem>
</Flex>
</CardHeader>
<CardBody>
<FilterTable
columns={columns}
rows={rows}
pagination={pagination}
isEmpty={this.state.isEmpty}
isError={this.state.isError}
onCollapse={this.onCollapse}
onSetPage={this.setPage}
onSetPageSize={this.pageSizeSelect}
canSelectAll={true}
onRowSelect={this.onTableRowSelect}
variant={TableVariant.compact}
activeFilters={this.state.filters}
filters={resultFilters}
onRemoveFilter={this.removeFilter}
hideFilters={["run_id", "project_id"]}
/>
</CardBody>
</Card>
);
}
Example #20
Source File: YourInformation.js From user-preferences-frontend with Apache License 2.0 | 5 votes |
YourInformation = () => {
const env = insights.chrome.getEnvironment();
const prefix = insights.chrome.isProd ? '' : `${env === 'ci' ? 'qa' : env}.`;
const { isLoaded, currentUser } = useCurrentUser();
return (
<Card className="pref-email__info" ouiaId="user-pref-info-card">
<CardHeader>
<TextContent>
<Text component={TextVariants.h2}>Your information</Text>
</TextContent>
</CardHeader>
<CardBody>
<DataList>
<DataListItem>
<DataListItemRow>
<DataListItemCells
className="pref-u-condensed"
dataListCells={[
<DataListCell
isFilled={false}
className="pref-c-title pref-u-bold pref-u-condensed"
key="email-title"
>
Email address
</DataListCell>,
<DataListCell
isFilled
key="email-value"
className="pref-email__info-user-email pref-u-condensed"
>
{isLoaded ? (
<Fragment>
<span className="pf-u-mr-md">{currentUser.email}</span>
<a
rel="noopener noreferrer"
target="_blank"
href={`https://www.${prefix}redhat.com/wapps/ugc/protected/emailChange.html`}
>
Not correct?
</a>
</Fragment>
) : (
<Skeleton size="lg" />
)}
</DataListCell>,
]}
/>
</DataListItemRow>
</DataListItem>
</DataList>
</CardBody>
</Card>
);
}
Example #21
Source File: customPackage.js From edge-frontend with Apache License 2.0 | 5 votes |
CustomPackageLabel = () => {
const { getState, change } = useFormApi();
const addedRepos = getState()?.values?.['third-party-repositories'];
const initialRepos = getState()?.values?.['initial-custom-repositories'];
const customPackages = getState()?.values?.['custom-packages'];
const release = getState()?.values?.release;
const releaseName = release !== undefined ? releaseMapper[release] : '';
useEffect(() => {
change('validate-custom-repos', true);
change('show-custom-packages', true);
}, []);
return (
<>
<TextContent>
<Text>
Add packages from{' '}
<Popover
style={{ visibility: 'visible' }}
position="bottom"
headerContent="Custom Repositories"
bodyContent={
<Stack>
{addedRepos.map((repo) => (
<StackItem key={repo}>
<Text>{repo.name}</Text>
</StackItem>
))}
</Stack>
}
>
<Button variant="link" isInline>
{addedRepos.length} custom repositories
</Button>{' '}
to your
</Popover>
<b> {releaseName}</b> image.
</Text>
</TextContent>
{addedRepos.length === 0 && customPackages.length > 0
? showAlert('danger')
: checkRepoNameMismatch(initialRepos, addedRepos, customPackages)
? showAlert('warning')
: null}
</>
);
}
Example #22
Source File: index.js From sed-frontend with Apache License 2.0 | 5 votes |
ConfirmChangesModal = ({
isOpen = false,
handleCancel,
handleConfirm,
systemsCount,
data,
}) => {
return (
<Modal
variant="small"
title="Confirm changes"
isOpen={isOpen}
onClose={handleCancel}
actions={[
<Button
key="confirm"
variant="primary"
type="button"
onClick={handleConfirm}
>
Confirm changes
</Button>,
<Button
key="cancel"
variant="link"
type="button"
onClick={handleCancel}
>
Cancel
</Button>,
]}
>
<TextContent>
<Text component="p">
Your changes applies to{' '}
<b>
{systemsCount} connected {pluralize(systemsCount, 'system')}
</b>
. Selected settings will also be applied to <b>all future systems</b>{' '}
that are connected through remote host configuration (rhc).
</Text>
<Text component="p" className="pf-u-mb-sm">
Upon confirmation, an Ansible Playbook will be pushed to{' '}
{systemsCount} {pluralize(systemsCount, 'system')} to apply changes.
</Text>
</TextContent>
<Button
variant="link"
onClick={() => {
(async () => {
const playbook = await configApi.getPlaybookPreview({
compliance_openscap: data.useOpenSCAP ? 'enabled' : 'disabled',
insights: data.hasInsights ? 'enabled' : 'disabled',
remediations: data.enableCloudConnector ? 'enabled' : 'disabled',
});
downloadFile(playbook);
})();
}}
style={{ paddingLeft: 0 }}
>
View playbook
</Button>
</Modal>
);
}
Example #23
Source File: AboutRemoteHostConfigPopover.js From sed-frontend with Apache License 2.0 | 5 votes |
ConnectSystemsModal = () => {
return (
<Popover
maxWidth="200px"
headerContent="About Remote Host Configuration Manager"
className="connector"
bodyContent={
<TextContent>
<Text>
Remote host configuration (rhc) allows you to register with Red Hat
Subscription Management (RHSM), connect to Red Hat Insights, and
manage your Insights connections with one command.
<br /> rhc can enable Cloud Connector on supported configurations to
allow for remediation of Insights issues directly from
console.redhat.com.
<br />
</Text>
<Text>
Remote host configuration connects RHEL 7.9+ and 8.4+ systems. To
register other systems with RHSM or Insights, check out the{' '}
<Text
href="./insights/registration"
component="a"
target="_blank"
rel="noopener noreferrer"
>
Registration Assistant
</Text>
.
</Text>
<div className="pf-c-form inc-c-connector__connect-systems-modal-form">
<RegisterWithActivationKey />
</div>
<a
target="_blank"
rel="noopener noreferrer"
href={
'https://access.redhat.com/documentation/en-us/red_hat_insights/2022/html-single/red_hat_connector_configuration_guide/index'
}
>
Connecting with Red Hat
{<ExternalLinkAltIcon className="pf-u-ml-sm" />}
</a>
</TextContent>
}
>
<Button variant="plain" isInline style={{ padding: 0 }}>
<OutlinedQuestionCircleIcon />
</Button>
</Popover>
);
}
Example #24
Source File: RemoveModal.js From edge-frontend with Apache License 2.0 | 5 votes |
LabelWithText = ({ label, text }) => {
return (
<TextContent>
<Text component={'b'}>{label}</Text>
<Text>{text}</Text>
</TextContent>
);
}
Example #25
Source File: RegisterWithUserName.js From sed-frontend with Apache License 2.0 | 5 votes |
RegisterWithUserName = () => {
return (
<FormGroup
label={
<span>
Register with a username and password
<Popover
position="right"
bodyContent={
<TextContent>
<Text>
Recommended for users with accounts with Simple Content Access
(SCA) enabled. If SCA is not enabled for your account,
subscriptions will be auto-attached.
<Text
href="https://access.redhat.com/articles/simple-content-access"
component="a"
target="_blank"
rel="noopener noreferrer"
>
Learn about Simple Content Access
<ExternalLinkAltIcon />
</Text>
</Text>
<Text>
Any credentials of a user with a valid subscription can be
used.
</Text>
</TextContent>
}
>
<OutlinedQuestionCircleIcon />
</Popover>
</span>
}
helperText={<CopyHelperText />}
>
<ClipboardCopy>
rhc connect -u <username> -p <password>
</ClipboardCopy>
</FormGroup>
);
}
Example #26
Source File: ImageOutputCheckbox.js From edge-frontend with Apache License 2.0 | 5 votes |
ImageOutputCheckbox = (props) => {
const { getState } = useFormApi();
const { input } = useFieldApi(props);
const toggleCheckbox = useCallback(
(checked, event) => {
input.onChange(
checked
? [...input.value, event.currentTarget.id]
: input.value.filter((item) => item !== event.currentTarget.id)
);
},
[input.onChange]
);
return (
<FormGroup
label="Output type"
isHelperTextBeforeField
hasNoPaddingTop
isRequired
isStack
>
{props.options.map(({ value, label }, index) => (
<Fragment key={index}>
<Checkbox
label={label}
id={value}
isChecked={input.value.includes(value)}
onChange={toggleCheckbox}
isDisabled={value === 'rhel-edge-commit'}
/>
<TextContent>
{getState()?.initialValues?.isUpdate &&
value === 'rhel-edge-installer' ? (
<WarningInstallerHelperText />
) : (
<HelperText className="pf-u-ml-lg pf-u-pb-sm">
<HelperTextItem variant="indeterminate">
{outputHelperText[value]}
</HelperTextItem>
</HelperText>
)}
</TextContent>
{value === 'rhel-edge-installer' && (
<Fragment>
<Text component={TextVariants.small}>
<Text
target="_blank"
href="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html-single/composing_installing_and_managing_rhel_for_edge_images/index#edge-how-to-compose-and-deploy-a-rhel-for-edge-image_introducing-rhel-for-edge-images"
component={TextVariants.a}
isVisitedLink
>
Learn more about image types.
<ExternalLinkAltIcon className="pf-u-ml-sm" />
</Text>
</Text>
</Fragment>
)}
</Fragment>
))}
</FormGroup>
);
}
Example #27
Source File: Packages.js From edge-frontend with Apache License 2.0 | 5 votes |
NoResultsText = ({ heading, body }) => (
<TextContent className="pf-u-text-align-center pf-u-pr-xl pf-u-pl-xl pf-u-pt-xl">
<Text component="h3">{heading}</Text>
<Text component="small">{body}</Text>
</TextContent>
)
Example #28
Source File: project-list.js From ibutsu-server with MIT License | 4 votes |
render() {
document.title = 'Projects - Administration | Ibutsu';
const { columns, rows, textFilter } = this.state;
const pagination = {
pageSize: this.state.pageSize,
page: this.state.page,
totalItems: this.state.totalItems
};
const filters = [
<TextInput type="text" id="filter" placeholder="Search for project..." value={textFilter || ''} onChange={this.onTextChanged} style={{height: "inherit"}} key="textFilter"/>
];
return (
<React.Fragment>
<PageSection id="page" variant={PageSectionVariants.light}>
<Flex justifyContent={{ default: 'justifyContentSpaceBetween' }}>
<Flex>
<FlexItem spacer={{ default: 'spacerLg' }}>
<TextContent>
<Text className="title" component="h1" ouiaId="admin-projects">Projects</Text>
</TextContent>
</FlexItem>
</Flex>
<Flex>
<FlexItem>
<Button
aria-label="Add project"
variant="secondary"
title="Add project"
ouiaId="admin-projects-add"
component={(props: any) => <Link {...props} to="/admin/projects/new" />}
>
<PlusCircleIcon /> Add Project
</Button>
</FlexItem>
</Flex>
</Flex>
</PageSection>
<PageSection className="pf-u-pb-0">
<Card>
<CardBody className="pf-u-p-0">
<FilterTable
columns={columns}
rows={rows}
filters={filters}
pagination={pagination}
isEmpty={this.state.isEmpty}
isError={this.state.isError}
onSetPage={this.setPage}
onSetPageSize={this.setPageSize}
/>
</CardBody>
</Card>
</PageSection>
<Modal
title="Confirm Delete"
variant="small"
isOpen={this.state.isDeleteModalOpen}
onClose={this.onDeleteModalClose}
actions={[
<Button
key="delete"
variant="danger"
ouiaId="admin-projects-modal-delete"
isLoading={this.state.isDeleting}
isDisabled={this.state.isDeleting}
onClick={this.onModalDeleteClick}
>
{this.state.isDeleting ? 'Deleting...' : 'Delete'}
</Button>,
<Button
key="cancel"
variant="secondary"
ouiaId="admin-projects-modal-cancel"
isDisabled={this.state.isDeleting}
onClick={this.onDeleteModalClose}
>
Cancel
</Button>
]}
>
Are you sure you want to delete “{this.state.selectedProject && this.state.selectedProject.title}”? This cannot be undone!
</Modal>
</React.Fragment>
);
}
Example #29
Source File: UpdateImageModal.js From edge-frontend with Apache License 2.0 | 4 votes |
UpdateImageModal = ({ updateCveModal, setUpdateCveModal, setReload }) => {
const dispatch = useDispatch();
const { getRegistry } = useContext(RegistryContext);
const { data } = useSelector(
({ imageDetailReducer }) => ({
data: imageDetailReducer?.data || null,
}),
shallowEqual
);
useEffect(() => {
const registered = getRegistry().register({
imageDetailReducer,
});
updateCveModal?.imageId &&
loadImageDetail(dispatch, updateCveModal?.imageId);
return () => registered();
}, [dispatch]);
const handleUpdateModal = () => {
const payload = {
Id: data?.image?.ID,
description: data?.image?.Description,
name: data?.image?.Name,
version: data?.image?.Version + 1,
architecture: 'x86_64',
credentials: data?.image?.Installer.SshKey,
username: data?.image?.Installer.Username,
imageType: data?.image?.OutputTypes,
'selected-packages': data?.image?.Packages?.map((pack) => ({
name: pack.Name,
})),
release: data?.image?.Distribution,
};
handleClose();
setReload(true);
createNewImage(dispatch, payload, (resp) => {
dispatch({
...addNotification({
variant: 'info',
title: 'Update image',
description: `${resp.value.Name} image was added to the queue.`,
}),
meta: {
polling: {
id: `FETCH_IMAGE_${resp.value.ID}_BUILD_STATUS`,
fetcher: () => getEdgeImageStatus(resp.value.ID),
condition: (resp) => {
switch (resp.Status) {
case 'BUILDING':
return [true, ''];
case 'ERROR':
return [false, 'failure'];
default:
return [false, 'success'];
}
},
onEvent: {
failure: [
(dispatch) =>
dispatch(
addNotification({
variant: 'danger',
title: 'Image build failed',
description: `${resp.value.Name} image build is completed unsuccessfully`,
})
),
],
success: [
(dispatch) =>
dispatch(
addNotification({
variant: 'success',
title: 'Image is ready',
description: `${resp.value.Name} image build is completed`,
})
),
(dispatch) => loadEdgeImageSets(dispatch),
],
},
},
},
});
loadEdgeImageSets(dispatch);
dispatch(
addImageToPoll({ name: data?.image?.Name, id: data?.image?.ID })
);
});
};
const handleClose = () => {
setUpdateCveModal((prevState) => ({ ...prevState, isOpen: false }));
};
return data ? (
<Modal
variant="medium"
title={`Update image: ${data?.image?.Name}`}
description="Review the information and click Create image to start the build process"
isOpen={updateCveModal.isOpen}
onClose={handleClose}
//onSubmit={handleUpdateModal}
actions={[
<Button key="confirm" variant="primary" onClick={handleUpdateModal}>
Create Image
</Button>,
<Button key="cancel" variant="link" onClick={handleClose}>
Cancel
</Button>,
]}
>
<TextContent>
<TextListItem component={TextVariants.h3}>
<Text component={'b'}>Details</Text>
</TextListItem>
<TextList component={TextListVariants.dl}>
<TextListItem component={TextListItemVariants.dt}>Name</TextListItem>
<TextListItem component={TextListItemVariants.dd}>
{data?.image?.Name}
</TextListItem>
<TextListItem component={TextListItemVariants.dt}>
Version
</TextListItem>
<TextListItem component={TextListItemVariants.dd}>
{data?.image?.Version + 1}
</TextListItem>
<TextListItem component={TextListItemVariants.dt}>
Description
</TextListItem>
<TextListItem component={TextListItemVariants.dd}>
{data?.image?.Description}
</TextListItem>
</TextList>
<TextListItem component={TextVariants.h3}>
<Text component={'b'}>Output</Text>
</TextListItem>
<TextList component={TextListVariants.dl}>
<TextListItem component={TextListItemVariants.dt}>
Release
</TextListItem>
<TextListItem component={TextListItemVariants.dd}>
{releaseMapper[data?.image?.Distribution]}
</TextListItem>
<TextListItem component={TextListItemVariants.dt}>
Output type
</TextListItem>
<TextListItem component={TextListItemVariants.dd}>
{imageTypeMapper[data?.image?.ImageType]}
</TextListItem>
</TextList>
<TextListItem component={TextVariants.h3}>
<Text component={'b'}>Packages</Text>
</TextListItem>
<TextList component={TextListVariants.dl}>
<TextListItem component={TextListItemVariants.dt}>
Updated
</TextListItem>
<TextListItem
className="pf-u-pl-lg"
component={TextListItemVariants.dd}
>
{updateCveModal?.cveCount}
</TextListItem>
</TextList>
</TextContent>
</Modal>
) : (
<Backdrop>
<Bullseye>
<Spinner isSVG diameter="100px" />
</Bullseye>
</Backdrop>
);
}