@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
27 lines • 2.44 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { FormGroup, MenuToggle, Select, SelectList, SelectOption, Split, SplitItem, } from "@patternfly/react-core";
import { useState } from "react";
import { Controller, useFormContext } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { HelpItem } from "../../ui-shared";
import { TimeSelector, } from "../../components/time-selector/TimeSelector";
const inherited = "tokenLifespan.inherited";
const expires = "tokenLifespan.expires";
export const TokenLifespan = ({ id, name, defaultValue, units, }) => {
const { t } = useTranslation();
const [open, setOpen] = useState(false);
const [focused, setFocused] = useState(false);
const onFocus = () => setFocused(true);
const onBlur = () => setFocused(false);
const { control } = useFormContext();
const isExpireSet = (value) => typeof value === "number" ||
(typeof value === "string" && value !== "") ||
focused;
return (_jsx(FormGroup, { label: t(id), fieldId: id, labelIcon: _jsx(HelpItem, { helpText: t(`${id}Help`), fieldLabelId: id }), "data-testid": `token-lifespan-${id}`, children: _jsx(Controller, { name: name, defaultValue: "", control: control, render: ({ field }) => (_jsxs(Split, { hasGutter: true, children: [_jsx(SplitItem, { children: _jsx(Select, { toggle: (ref) => (_jsx(MenuToggle, { ref: ref, onClick: () => setOpen(!open), isExpanded: open, children: isExpireSet(field.value) ? t(expires) : t(inherited) })), isOpen: open, onOpenChange: (isOpen) => setOpen(isOpen), onSelect: (_, value) => {
field.onChange(value);
setOpen(false);
}, selected: isExpireSet(field.value) ? t(expires) : t(inherited), children: _jsxs(SelectList, { children: [_jsx(SelectOption, { value: "", children: t(inherited) }), _jsx(SelectOption, { value: 60, children: t(expires) })] }) }) }), _jsx(SplitItem, { hidden: !isExpireSet(field.value), children: _jsx(TimeSelector, { validated: isExpireSet(field.value) && field.value < 1
? "warning"
: "default", units: units, value: field.value === "" ? defaultValue : field.value, onChange: field.onChange, onFocus: onFocus, onBlur: onBlur, min: 1, isDisabled: !isExpireSet(field.value) }) })] })) }) }));
};
//# sourceMappingURL=TokenLifespan.js.map