@patternfly/react-core#KebabToggle JavaScript Examples
The following examples show how to use
@patternfly/react-core#KebabToggle.
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: ToolbarKebab.js From edge-frontend with Apache License 2.0 | 6 votes |
ToolbarKebab = ({ kebabItems }) => {
const [kebabIsOpen, setKebabIsOpen] = useState(false);
const dropdownItems = kebabItems.map(
({ title, isDisabled, onClick }, index) => (
<DropdownItem
key={index}
onClick={onClick ? onClick : () => {}}
isDisabled={isDisabled}
>
{title}
</DropdownItem>
)
);
return (
<ToolbarItem>
<Dropdown
toggle={
<KebabToggle onToggle={() => setKebabIsOpen((prev) => !prev)} />
}
isOpen={kebabIsOpen}
isPlain
dropdownItems={dropdownItems}
/>
</ToolbarItem>
);
}
Example #2
Source File: ActivationKeysTable.js From sed-frontend with Apache License 2.0 | 6 votes |
customActionsToggle = (props) => (
<KebabToggle
onToggle={props.onToggle}
isDisabled={props.isDisabled}
className={props.isDisabled ? 'pf-m-disabled' : ''}
>
Actions
</KebabToggle>
)
Example #3
Source File: ImageDetailActions.js From edge-frontend with Apache License 2.0 | 5 votes |
ImageActions = ({ imageData, openUpdateWizard }) => {
const [isOpen, setIsOpen] = useState(false);
const dropdownItems = [
<DropdownItem href={imageData?.Installer?.ImageBuildISOURL} key="link">
<Text className="force-text-black">Download</Text>
</DropdownItem>,
];
const handleToggle = (isOpen) => setIsOpen(isOpen);
const handleSelect = () => {
setIsOpen((prevState) => !prevState);
};
const handleUpdate = () => {
openUpdateWizard(imageData.ID);
};
return (
<>
<SplitItem>
<Button onClick={handleUpdate} variant="secondary">
Update
</Button>
{imageData?.Installer?.ImageBuildISOURL ? (
<Dropdown
position="right"
onSelect={handleSelect}
toggle={
<KebabToggle onToggle={handleToggle} id="image-detail-kebab" />
}
isOpen={isOpen}
isPlain
dropdownItems={dropdownItems}
/>
) : null}
</SplitItem>
</>
);
}
Example #4
Source File: certificateActions.jsx From cockpit-certificates with GNU Lesser General Public License v2.1 | 5 votes |
CertificateActions = ({ cas, certs, cert, certPath, addAlert, appOnValueChanged, idPrefix }) => { const [dropdownOpen, setDropdownOpen] = useState(false); const [showRemoveModal, setShowRemoveModal] = useState(false); const [showResubmitModal, setShowResubmitModal] = useState(false); const dropdownItems = [ <DropdownItem key={`${idPrefix}-resubmit`} id={`${idPrefix}-resubmit`} onClick={() => setShowResubmitModal(true)}> {_("Resubmit")} </DropdownItem>, <DropdownItem className="pf-m-danger" key={`${idPrefix}-remove`} id={`${idPrefix}-remove`} onClick={() => setShowRemoveModal(true)}> {_("Remove")} </DropdownItem>, ]; return ( <> <Dropdown onSelect={() => setDropdownOpen(!dropdownOpen)} id={`${idPrefix}-action-kebab`} toggle={ <KebabToggle key={`${idPrefix}-action-kebab-toggle`} onToggle={() => setDropdownOpen(!dropdownOpen)} /> } isOpen={dropdownOpen} position="right" dropdownItems={dropdownItems} isPlain /> {showRemoveModal && <RemoveModal onClose={() => setShowRemoveModal(false)} certs={certs} cert={cert} certPath={certPath} addAlert={addAlert} appOnValueChanged={appOnValueChanged} idPrefix={idPrefix} />} {showResubmitModal && <ResubmitCertificateModal onClose={() => setShowResubmitModal(false)} cas={cas} addAlert={addAlert} cert={cert} certPath={certPath} />} </> ); }
Example #5
Source File: AccessRequestDetailsPage.js From access-requests-frontend with Apache License 2.0 | 4 votes |
BaseAccessRequestDetailsPage = ({ isInternal }) => {
const [request, setRequest] = React.useState();
const { requestId } = useParams();
const dispatch = useDispatch();
React.useEffect(() => {
apiInstance
.get(
`${API_BASE}/cross-account-requests/${requestId}/${
isInternal ? '?query_by=user_id' : '?query_by=target_account'
}`,
{ headers: { Accept: 'application/json' } }
)
.then((res) => {
if (res.errors) {
throw Error(res.errors.map((e) => e.detail).join('\n'));
}
setRequest(res);
})
.catch((err) => {
dispatch(
addNotification({
variant: 'danger',
title: 'Could not load access request',
description: err.message,
})
);
});
}, []);
// Modal actions
const [openModal, setOpenModal] = React.useState({ type: null });
const onModalClose = () => setOpenModal({ type: null });
const actions = getInternalActions(
request && request.status,
requestId,
setOpenModal
);
const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);
const requestDisplayProps = [
...(isInternal
? ['request_id', 'target_account']
: ['first_name', 'last_name']),
'start_date',
'end_date',
'created',
];
return (
<React.Fragment>
<PageSection variant="light">
<Breadcrumb>
<BreadcrumbItem
render={() => (
<Link to={isInternal ? '/' : '/access-requests'}>
{!isInternal && 'Red Hat '}Access Requests
</Link>
)}
/>
<BreadcrumbItem>{requestId}</BreadcrumbItem>
</Breadcrumb>
<Flex direction={{ default: 'column', md: 'row' }}>
<FlexItem grow={{ default: 'grow' }}>
<Title headingLevel="h1" size="2xl" className="pf-u-pt-md">
{requestId}
</Title>
</FlexItem>
{isInternal && actions.items.length > 0 && (
<FlexItem alignSelf={{ default: 'alignRight' }}>
<Dropdown
position="right"
toggle={
<KebabToggle
onToggle={() => setIsDropdownOpen(!isDropdownOpen)}
id="actions-toggle"
/>
}
isOpen={isDropdownOpen}
isPlain
dropdownItems={actions.items.map(({ title, onClick }) => (
<DropdownItem
key={title}
component="button"
onClick={onClick}
>
{title}
</DropdownItem>
))}
isDisabled={actions.disable}
/>
</FlexItem>
)}
</Flex>
</PageSection>
<PageSection>
<Flex
spaceItems={{ xl: 'spaceItemsLg' }}
direction={{ default: 'column', lg: 'row' }}
>
<FlexItem
flex={{ default: 'flex_1' }}
alignSelf={{ default: 'alignSelfStretch' }}
>
<Card ouiaId="request-details" style={{ height: '100%' }}>
<CardTitle>
<Title headingLevel="h2" size="xl">
Request details
</Title>
</CardTitle>
<CardBody>
{!request ? (
<Spinner size="xl" />
) : (
<React.Fragment>
<div className="pf-u-pb-md">
{isInternal ? (
<div>
<label>
<b>Request status</b>
</label>
<br />
<Label
className="pf-u-mt-sm"
{...getLabelProps(request.status)}
>
{capitalize(request.status)}
</Label>
</div>
) : (
<React.Fragment>
<label>
<b>Request decision</b>
</label>
<br />
<StatusLabel
requestId={requestId}
status={request.status}
/>
</React.Fragment>
)}
</div>
{requestDisplayProps.map((prop, key) => (
<div className="pf-u-pb-md" key={key}>
<label>
<b>
{capitalize(
prop.replace(/_/g, ' ').replace('id', 'ID')
)}
</b>
</label>
<br />
<div>{request[prop]}</div>
</div>
))}
</React.Fragment>
)}
</CardBody>
</Card>
</FlexItem>
<FlexItem
flex={{ default: 'flex_3' }}
grow={{ default: 'grow' }}
alignSelf={{ default: 'alignSelfStretch' }}
>
<Card ouiaId="request-roles" style={{ height: '100%' }}>
<CardTitle>
<Title headingLevel="h2" size="xl">
Roles requested
</Title>
</CardTitle>
<CardBody>
{!request ? (
<Spinner size="xl" />
) : (
<MUARolesTable roles={request.roles} />
)}
</CardBody>
</Card>
</FlexItem>
</Flex>
</PageSection>
{openModal.type === 'cancel' && (
<CancelRequestModal requestId={requestId} onClose={onModalClose} />
)}
{openModal.type === 'edit' && (
<EditRequestModal
variant="edit"
requestId={requestId}
onClose={onModalClose}
/>
)}
</React.Fragment>
);
}