@patternfly/react-core#Popover JavaScript Examples
The following examples show how to use
@patternfly/react-core#Popover.
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: EditRequestModal.js From access-requests-frontend with Apache License 2.0 | 6 votes |
getLabelIcon = (field) => (
<Popover bodyContent={<p>{helperTexts[field]}</p>}>
<button
type="button"
aria-label={`More info for ${field}`}
onClick={(e) => e.preventDefault()}
aria-describedby="form-name"
className="pf-c-form__group-label-help"
>
<HelpIcon noVerticalAlign />
</button>
</Popover>
)
Example #2
Source File: TitleWithPopover.js From edge-frontend with Apache License 2.0 | 6 votes |
TitleWithPopover = ({ title, content }) => (
<>
<span>{title}</span>
<Popover
headerContent={<div>{title}</div>}
bodyContent={<div>{content}</div>}
>
<Button
variant="plain"
aria-label={`Action for ${title}`}
className="ins-active-general_information__popover-icon"
>
<OutlinedQuestionCircleIcon />
</Button>
</Popover>
</>
)
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: TasksPopover.js From tasks-frontend with Apache License 2.0 | 6 votes |
TasksPopover = ({ body, content, footer, header, label }) => {
return (
<div>
<Popover
aria-label={label}
headerContent={header}
bodyContent={body}
footerContent={footer}
>
{content}
</Popover>
</div>
);
}
Example #5
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 #6
Source File: Signatures.js From malware-detection-frontend with Apache License 2.0 | 5 votes |
Signatures = () => {
const intl = useIntl();
const sigPageData = useQuery(GET_SIGNATURE_PAGE);
const chartCmpData = useQuery(GET_TIME_SERIES_STATS);
return <React.Fragment>
<PageHeader>
<Split hasGutter isWrappable>
<SplitItem>
<PageHeaderTitle title={(<Popover
enableFlip
position={'right'}
headerContent={intl.formatMessage(messages.headerPopoverTitle)}
bodyContent={(<Grid hasGutter>
<GridItem>{intl.formatMessage(messages.headerPopoverBody1)}</GridItem>
</Grid>)}
footerContent={<a
href={'https://access.redhat.com/documentation/en-us/red_hat_insights/2022/html/' +
'assessing_and_reporting_malware_signatures_on_rhel_systems_with_the_insights_for' +
'_rhel_malware_service/'}
target="__blank" rel="noopener noreferrer">
{intl.formatMessage(messages.headerPopoverFooter)} <ExternalLinkAltIcon />
</a>}
>
<Title headingLevel='h1' size={TitleSizes['3xl']}>
{intl.formatMessage(messages.malwareDetection)}
<OutlinedQuestionCircleIcon
color={'var(--pf-global--secondary-color--100)'}
className="pf-u-ml-sm pointer cves-header-questionmark"
style={{ verticalAlign: '-2' }}
/>
</Title>
</Popover>)} />
</SplitItem>
</Split>
</PageHeader>
<Main>
<Grid hasGutter>
<GridItem lg={6} md={12}>
<Suspense fallback={<Loading />}><StatusCard {...sigPageData} /></Suspense>
</GridItem>
<GridItem lg={6} md={12}>
<Suspense fallback={<Loading />}><ChartCard sysStats={sigPageData} chartStats={chartCmpData}/></Suspense>
</GridItem>
<GridItem span={12}>
<Suspense fallback={<Loading />}><SigTable /></Suspense>
</GridItem>
</Grid>
</Main>
</React.Fragment>;
}
Example #7
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 #8
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 #9
Source File: ActivationKeyForm.js From sed-frontend with Apache License 2.0 | 4 votes |
ActivationKeyForm = (props) => {
const { handleModalToggle, submitForm, isSuccess, isError, activationKey } =
props;
const { addSuccessNotification, addErrorNotification } = useNotifications();
const { isLoading, error, data } = useSystemPurposeAttributes();
const [name, setName] = useState('');
const [role, setRole] = useState('');
const [serviceLevel, setServiceLevel] = useState('');
const [usage, setUsage] = useState('');
const [validated, setValidated] = useState('default');
const nameRegex = '^[a-zA-Z0-9-_]*$';
const validationText =
'Provide a name to be used when registering the activation key. Your activation key name must be unique, may contain only numbers, letters, underscores, and hyphens, and less than 256 characters.';
const handleSubmit = (event) => {
event.preventDefault();
if (validated === 'success' || activationKey) {
submitForm(name, role, serviceLevel, usage);
} else {
setValidated('error');
}
};
const validateName = (value) => {
if (value.length === 0 || value.length > 255) {
setValidated('error');
} else if (!value.match(nameRegex)) {
setValidated('error');
} else {
setValidated('success');
setName(value);
}
};
useEffect(() => {
if (activationKey) {
setRole(activationKey.role);
setUsage(activationKey.usage);
setServiceLevel(activationKey.serviceLevel);
}
}, [activationKey]);
const createButtonDisabled = () => {
if (activationKey) {
return (
activationKey.role === role &&
activationKey.serviceLevel === serviceLevel &&
activationKey.usage === usage
);
} else {
return (
validated === 'error' || name.length === 0 || !name.match(nameRegex)
);
}
};
if (isSuccess) {
const successMessage = activationKey
? `Activation key ${activationKey.name} updated successfully.`
: 'Activation key created successfully.';
addSuccessNotification(successMessage, {
timeout: false,
});
handleModalToggle();
} else if (isError) {
const errorMessage = activationKey
? `Error updating activation key ${activationKey.name}.`
: 'Activation Key was not created, please try again.';
addErrorNotification(errorMessage, {
timeout: 8000,
});
handleModalToggle();
}
return (
<Form id="activation-key-form" onSubmit={handleSubmit}>
{!activationKey && (
<FormGroup label="Name" isRequired helperText={validationText}>
<TextInput
id="activation-key-name"
label="Name"
isRequired
type="text"
validated={validated}
onChange={validateName}
name="name"
/>
</FormGroup>
)}
{activationKey && (
<FormGroup label="Name">
{' '}
<TextContent>{activationKey.name}</TextContent>
</FormGroup>
)}
{!isLoading && !error && (
<ActivationKeysFormSelect
data={data.roles}
value={role}
onSelect={setRole}
label="Role"
name="role"
placeholderValue="Select role"
disableDefaultValues={activationKey ? true : false}
popover={
<Popover
bodyContent={
<TextContent>
<Text component={TextVariants.p}>
Role is used to categorize systems by the workload on the
system
</Text>
<Text component={TextVariants.p}>
Subscription Watch can help you filter and report by these
items.
</Text>
<Text component={TextVariants.p}>
Only roles available to your account are shown.
</Text>
</TextContent>
}
>
<HelpIcon />
</Popover>
}
helperText="Select the required role from the list. The list only contains roles available to the activation key."
/>
)}
{!isLoading && !error && (
<ActivationKeysFormSelect
data={data.serviceLevel}
value={serviceLevel}
onSelect={setServiceLevel}
label="Service Level Agreement (SLA)"
name="serviceLevel"
placeholderValue="Select a service level agreement"
disableDefaultValues={activationKey ? true : false}
popover={
<Popover
bodyContent={
<TextContent>
<Text component={TextVariants.p}>
Service Level Agreement (SLA) determines the level of
support for systems registered with this activation key.
</Text>
</TextContent>
}
>
<HelpIcon />
</Popover>
}
helperText="Select the required service level from the list. The list only contains service levels available to the activation key."
/>
)}
{!isLoading && !error && (
<ActivationKeysFormSelect
data={data.usage}
value={usage}
onSelect={setUsage}
label="Usage"
name="usage"
placeholderValue="Select usage"
disableDefaultValues={activationKey ? true : false}
popover={
<Popover
bodyContent={
<TextContent>
<Text component={TextVariants.p}>
Usage is used to categorize systems by how they are meant to
be used, and therefore supported.
</Text>
<Text component={TextVariants.p}>
Subscription Watch can help you filter and report by these
items.
</Text>
</TextContent>
}
>
<HelpIcon />
</Popover>
}
helperText="Select the required usage from the list. The list only contains usages available to the activation key."
/>
)}
<ActionGroup>
<Button
key="create"
id="submit-activation-key-button"
variant="primary"
type="submit"
isDisabled={createButtonDisabled()}
data-testid="activation-key-submit-button"
>
{activationKey ? 'Save changes' : 'Create'}
</Button>
<Button
key="cancel"
id="cancel-activation-key-button"
variant="link"
onClick={handleModalToggle}
>
Cancel
</Button>
</ActionGroup>
</Form>
);
}