@servicetitan/anvil2 1.49.4 → 1.49.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/dist/{Breadcrumbs-DjR-2OEH.js → Breadcrumbs-Y6IaMoi5.js} +2 -2
- package/dist/{Breadcrumbs-DjR-2OEH.js.map → Breadcrumbs-Y6IaMoi5.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-BkJs1qTF.js → Calendar-B5Ednjem.js} +2 -2
- package/dist/{Calendar-BkJs1qTF.js.map → Calendar-B5Ednjem.js.map} +1 -1
- package/dist/{Calendar-WHERvu2Y.js → Calendar-Ce08LvdP.js} +2 -2
- package/dist/{Calendar-WHERvu2Y.js.map → Calendar-Ce08LvdP.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-C5Qjq_tU.js → Checkbox-ByaZv8wu.js} +2 -2
- package/dist/{Checkbox-C5Qjq_tU.js.map → Checkbox-ByaZv8wu.js.map} +1 -1
- package/dist/{Checkbox-Bhjj-jM4.js → Checkbox-nE-_tWmc.js} +4 -3
- package/dist/{Checkbox-Bhjj-jM4.js.map → Checkbox-nE-_tWmc.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/Checkbox.module-D4EgXL0i.js +27 -0
- package/dist/Checkbox.module-D4EgXL0i.js.map +1 -0
- package/dist/{Chip-X2EwdZ97.js → Chip-UqdorCE2.js} +23 -17
- package/dist/Chip-UqdorCE2.js.map +1 -0
- package/dist/Chip.js +1 -1
- package/dist/Combobox-Dy4IZDg1.js +4281 -0
- package/dist/Combobox-Dy4IZDg1.js.map +1 -0
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable--vA-HttA.js → DataTable-D6MmOQF2.js} +8 -8
- package/dist/{DataTable--vA-HttA.js.map → DataTable-D6MmOQF2.js.map} +1 -1
- package/dist/{DateField-BNleIuS8.js → DateField-BxS9LZG7.js} +6 -6
- package/dist/{DateField-BNleIuS8.js.map → DateField-BxS9LZG7.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-BBgvno-_.js → DateFieldRange-BdDiHUfv.js} +7 -7
- package/dist/{DateFieldRange-BBgvno-_.js.map → DateFieldRange-BdDiHUfv.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-Bcwkxogy.js → DateFieldSingle-CuQO3LH9.js} +7 -7
- package/dist/{DateFieldSingle-Bcwkxogy.js.map → DateFieldSingle-CuQO3LH9.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-DnVJaBBq.js → DateFieldYearless-2YhZmNYg.js} +3 -3
- package/dist/{DateFieldYearless-DnVJaBBq.js.map → DateFieldYearless-2YhZmNYg.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-BivGidsU.js → DateFieldYearlessRange-CgCmvHLs.js} +3 -3
- package/dist/{DateFieldYearlessRange-BivGidsU.js.map → DateFieldYearlessRange-CgCmvHLs.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-Dn6zHxpt.js → DaysOfTheWeek-DlIka9b_.js} +3 -3
- package/dist/{DaysOfTheWeek-Dn6zHxpt.js.map → DaysOfTheWeek-DlIka9b_.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-3ptbLquZ.js → Dialog-DSwvbfdW.js} +21 -62
- package/dist/Dialog-DSwvbfdW.js.map +1 -0
- package/dist/Dialog.css +29 -29
- package/dist/Dialog.js +2 -1
- package/dist/Dialog.js.map +1 -1
- package/dist/DialogCancelButton-sTEfx5kf.js +50 -0
- package/dist/DialogCancelButton-sTEfx5kf.js.map +1 -0
- package/dist/{Drawer-plkbENfI.js → Drawer-CGYcEj6d.js} +5 -4
- package/dist/{Drawer-plkbENfI.js.map → Drawer-CGYcEj6d.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{DrawerContext-D4tWTLVf.js → DrawerContext-Cs3k160L.js} +127 -2
- package/dist/{DrawerContext-D4tWTLVf.js.map → DrawerContext-Cs3k160L.js.map} +1 -1
- package/dist/{FieldLabel-CHMCV9wX.js → FieldLabel-jqlQ1Ldh.js} +2 -2
- package/dist/{FieldLabel-CHMCV9wX.js.map → FieldLabel-jqlQ1Ldh.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{InputMask-Cd01c3Tj.js → InputMask-DaN_Adz6.js} +3 -3
- package/dist/{InputMask-Cd01c3Tj.js.map → InputMask-DaN_Adz6.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{Link-DuYh7Xl2.js → Link-DqZxs0kQ.js} +13 -4
- package/dist/Link-DqZxs0kQ.js.map +1 -0
- package/dist/Link.css +27 -19
- package/dist/Link.js +1 -1
- package/dist/Link.module-CjeOl2NH.js +14 -0
- package/dist/Link.module-CjeOl2NH.js.map +1 -0
- package/dist/{LinkButton-pIUNATNE.js → LinkButton-jb2Gc3hC.js} +5 -2
- package/dist/LinkButton-jb2Gc3hC.js.map +1 -0
- package/dist/LinkButton.js +1 -1
- package/dist/{ListView-CZ5T8bR1.js → ListView-B1I7Ii3g.js} +2 -2
- package/dist/{ListView-CZ5T8bR1.js.map → ListView-B1I7Ii3g.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Menu-DUAfSImY.js → Menu-Cn2JJe1Y.js} +2 -2
- package/dist/{Menu-DUAfSImY.js.map → Menu-Cn2JJe1Y.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/{NumberField-C62E56_v.js → NumberField-BdK4U9mW.js} +2 -2
- package/dist/{NumberField-C62E56_v.js.map → NumberField-BdK4U9mW.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-Bc8ko-eM.js → Page-C-yMjgoO.js} +7 -7
- package/dist/{Page-Bc8ko-eM.js.map → Page-C-yMjgoO.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-BHEEnNas.js → Pagination-CnF6yBr5.js} +2 -2
- package/dist/{Pagination-BHEEnNas.js.map → Pagination-CnF6yBr5.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CIPg_ZgX.js → Popover-CcMDyKTj.js} +2 -2
- package/dist/{Popover-CIPg_ZgX.js.map → Popover-CcMDyKTj.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-CUpF9fFW.js → ProgressBar-CufkbVu5.js} +2 -2
- package/dist/{ProgressBar-CUpF9fFW.js.map → ProgressBar-CufkbVu5.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-CyCFna1X.js → Radio-BeBG7Ksw.js} +2 -2
- package/dist/{Radio-CyCFna1X.js.map → Radio-BeBG7Ksw.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-DRS2EjVH.js → RadioGroup-BAjpkCjp.js} +2 -2
- package/dist/{RadioGroup-DRS2EjVH.js.map → RadioGroup-BAjpkCjp.js.map} +1 -1
- package/dist/{SearchField-DrgNbG3I.js → SearchField-D6bICv4b.js} +36 -7
- package/dist/SearchField-D6bICv4b.js.map +1 -0
- package/dist/SearchField.css +13 -8
- package/dist/SearchField.js +1 -1
- package/dist/{SelectCard-lBcnP5j5.js → SelectCard-DDN7qqHv.js} +3 -3
- package/dist/{SelectCard-lBcnP5j5.js.map → SelectCard-DDN7qqHv.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.d.ts +2 -0
- package/dist/SelectField.js +2 -0
- package/dist/SelectField.js.map +1 -0
- package/dist/SelectFieldSync-DQm3_D0v.js +1122 -0
- package/dist/SelectFieldSync-DQm3_D0v.js.map +1 -0
- package/dist/SelectFieldSync.css +168 -0
- package/dist/{SelectTrigger-DdsBqEtU.js → SelectTrigger-CNEhRluU.js} +2 -2
- package/dist/{SelectTrigger-DdsBqEtU.js.map → SelectTrigger-CNEhRluU.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-BkVt3IP4.js → SelectTriggerBase-Cv6hGsrC.js} +5 -35
- package/dist/{SelectTriggerBase-BkVt3IP4.js.map → SelectTriggerBase-Cv6hGsrC.js.map} +1 -1
- package/dist/SelectTriggerBase.css +59 -59
- package/dist/SelectTriggerBase.module-Ce49lamD.js +35 -0
- package/dist/SelectTriggerBase.module-Ce49lamD.js.map +1 -0
- package/dist/Table.js +1 -1
- package/dist/{TextField-CpVkZxMT.js → TextField--y8q4R2H.js} +2 -2
- package/dist/{TextField-CpVkZxMT.js.map → TextField--y8q4R2H.js.map} +1 -1
- package/dist/{TextField-CygbgVVt.js → TextField-aMwSN1iP.js} +2 -2
- package/dist/{TextField-CygbgVVt.js.map → TextField-aMwSN1iP.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-DacevzmW.js → Textarea-D1zwX2h6.js} +2 -2
- package/dist/{Textarea-DacevzmW.js.map → Textarea-D1zwX2h6.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-BkOB5ESa.js → TimeField-BHxXbOfe.js} +4 -4
- package/dist/{TimeField-BkOB5ESa.js.map → TimeField-BHxXbOfe.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-nFhRAJc8.js → Toaster-CRp3nf4U.js} +2 -2
- package/dist/{Toaster-nFhRAJc8.js.map → Toaster-CRp3nf4U.js.map} +1 -1
- package/dist/{Toaster-Dx0cFQwb.js → Toaster-qPt6zb6F.js} +3 -3
- package/dist/{Toaster-Dx0cFQwb.js.map → Toaster-qPt6zb6F.js.map} +1 -1
- package/dist/{Toolbar-DuuaM0Cz.js → Toolbar-XJrmS4v4.js} +13 -13
- package/dist/{Toolbar-DuuaM0Cz.js.map → Toolbar-XJrmS4v4.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-CZsoFe6C.js → Tooltip-CBy7srE2.js} +3 -3
- package/dist/Tooltip-CBy7srE2.js.map +1 -0
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-MHLlAdrH.js → YearlessDateInputWithPicker-LiMI-Oer.js} +4 -4
- package/dist/{YearlessDateInputWithPicker-MHLlAdrH.js.map → YearlessDateInputWithPicker-LiMI-Oer.js.map} +1 -1
- package/dist/assets/icons/st/titan_intelligence.svg +1 -1
- package/dist/assets/icons/st/transactional.svg +1 -0
- package/dist/assets/icons/st.ts +1 -0
- package/dist/beta/components/SelectField/SelectField.d.ts +2 -0
- package/dist/beta/components/SelectField/SelectFieldSync.d.ts +39 -0
- package/dist/beta/components/SelectField/index.d.ts +3 -0
- package/dist/beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts +8 -0
- package/dist/beta/components/SelectField/internal/FieldPopover/FieldPopover.d.ts +8 -0
- package/dist/beta/components/SelectField/internal/InView.d.ts +34 -0
- package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +64 -0
- package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +39 -0
- package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +26 -0
- package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +14 -0
- package/dist/beta/components/SelectField/internal/useCombo.d.ts +31 -0
- package/dist/beta/components/SelectField/stories/SelectField.stories.data.d.ts +32 -0
- package/dist/beta/components/SelectField/types.d.ts +275 -0
- package/dist/beta/components/Table/types.d.ts +1 -1
- package/dist/beta/components/index.d.ts +1 -0
- package/dist/beta/hooks/index.d.ts +1 -0
- package/dist/beta/hooks/useAdaptiveView.d.ts +50 -0
- package/dist/beta/index.d.ts +1 -0
- package/dist/beta.js +5 -4
- package/dist/beta.js.map +1 -1
- package/dist/components/ButtonToggle/ButtonToggle.d.ts +1 -1
- package/dist/components/Chip/Chip.d.ts +2 -1
- package/dist/components/Chip/internal/Chip.d.ts +2 -1
- package/dist/components/DateFieldRange/internal/MaskedDateRangeInput.d.ts +1 -1
- package/dist/components/DateFieldSingle/internal/MaskedDateInput.d.ts +1 -1
- package/dist/components/Link/internal/Link.d.ts +21 -2
- package/dist/components/Link/useLinkStyles.d.ts +1 -1
- package/dist/components/LinkButton/LinkButton.d.ts +13 -1
- package/dist/components/SearchField/SearchField.d.ts +6 -3
- package/dist/components/Stepper/Stepper.d.ts +1 -1
- package/dist/components/Stepper/StepperStep.d.ts +1 -1
- package/dist/components/Tab/Tab.d.ts +1 -1
- package/dist/components/Tab/TabButton.d.ts +1 -1
- package/dist/{indeterminate_check_box-RY9zr3xS.js → indeterminate_check_box-B4zobNlt.js} +2 -27
- package/dist/{indeterminate_check_box-RY9zr3xS.js.map → indeterminate_check_box-B4zobNlt.js.map} +1 -1
- package/dist/index.js +39 -38
- package/dist/index.js.map +1 -1
- package/dist/internal/hooks/index.d.ts +1 -0
- package/dist/internal/hooks/useDebouncedCallback/index.d.ts +1 -0
- package/dist/internal/hooks/useDebouncedCallback/useDebouncedCallback.d.ts +28 -0
- package/dist/internal/hooks/useSelectFieldLoading/index.d.ts +1 -0
- package/dist/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.d.ts +102 -0
- package/dist/{Combobox-BO-k4QZE.js → match-sorter.esm-CtBw0MrM.js} +4 -4278
- package/dist/match-sorter.esm-CtBw0MrM.js.map +1 -0
- package/dist/useDialogScrollLock-BW-aVboo.js +41 -0
- package/dist/useDialogScrollLock-BW-aVboo.js.map +1 -0
- package/dist/{useInitialFocus-Cl_Txu7W.js → useInitialFocus-BpmW7pDB.js} +4 -41
- package/dist/useInitialFocus-BpmW7pDB.js.map +1 -0
- package/dist/{usePopoverSupport-CWTCDfN2.js → usePopoverSupport-CCSCHnit.js} +2 -2
- package/dist/{usePopoverSupport-CWTCDfN2.js.map → usePopoverSupport-CCSCHnit.js.map} +1 -1
- package/dist/{utils-aSAOVHjX.js → utils-C-hkPwMi.js} +2 -2
- package/dist/{utils-aSAOVHjX.js.map → utils-C-hkPwMi.js.map} +1 -1
- package/package.json +1 -1
- package/dist/Chip-X2EwdZ97.js.map +0 -1
- package/dist/Combobox-BO-k4QZE.js.map +0 -1
- package/dist/Dialog-3ptbLquZ.js.map +0 -1
- package/dist/Link-DuYh7Xl2.js.map +0 -1
- package/dist/Link.module-Cf17JWod.js +0 -12
- package/dist/Link.module-Cf17JWod.js.map +0 -1
- package/dist/LinkButton-pIUNATNE.js.map +0 -1
- package/dist/SearchField-DrgNbG3I.js.map +0 -1
- package/dist/Tooltip-CZsoFe6C.js.map +0 -1
- package/dist/useInitialFocus-Cl_Txu7W.js.map +0 -1
- /package/dist/{indeterminate_check_box.css → Checkbox.css} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog-3ptbLquZ.js","sources":["../src/components/Dialog/internal/useDialogContext.ts","../src/components/Dialog/DialogCancelButton.tsx","../src/components/Dialog/DialogHeader.tsx","../src/components/Dialog/DialogFooter.tsx","../src/components/Dialog/DialogContent.tsx","../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport { DialogContext } from \"./DialogContext\";\n\nexport function useDialogContext() {\n const context = useContext(DialogContext);\n if (!context) {\n throw new Error(\n \"useDialogContext must be used within a DialogContextProvider\",\n );\n }\n return context;\n}\n","import { MouseEvent, forwardRef } from \"react\";\nimport { Button, ButtonProps } from \"../Button\";\nimport { useDialogContext } from \"./internal/useDialogContext\";\nimport { DataTrackingId } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\n\n/**\n * Props for the DialogCancelButton component\n * @extends ButtonProps\n */\nexport type DialogCancelButtonProps = ButtonProps & DataTrackingId;\n\n/**\n * DialogCancelButton component for cancel/close actions in a Dialog.\n *\n * Features:\n * - Button that automatically closes the dialog when clicked\n * - Extends all Button component props and functionality\n * - Proper accessibility with close dialog semantics\n * - Automatic focus management\n * - Consistent styling with other dialog elements\n *\n * @example\n * <Dialog.CancelButton appearance=\"ghost\">Cancel</Dialog.CancelButton>\n */\nexport const DialogCancelButton = forwardRef<\n HTMLButtonElement,\n DialogCancelButtonProps\n>((props, ref) => {\n const { onClick, ...rest } = props;\n const { close } = useDialogContext();\n const data = {\n title: props.title,\n appearance: props.appearance,\n size: props.size,\n type: props.type,\n };\n\n const trackingId = useTrackingId({\n name: \"DialogCancelButton\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n const onClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n close();\n };\n return (\n <Button\n aria-label=\"Close dialog\"\n data-anv=\"dialog-cancel-button\"\n data-tracking-id={trackingId}\n onClick={onClickHandler}\n ref={ref}\n {...rest}\n />\n );\n});\n\nDialogCancelButton.displayName = \"DialogCancelButton\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport cx from \"classnames\";\n\nimport { Text } from \"../Text\";\nimport { DialogCancelButton } from \"./DialogCancelButton\";\n\nimport styles from \"./Dialog.module.scss\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId, useMergeRefs } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\nimport { useDialogContext } from \"./internal/useDialogContext\";\n\n/**\n * Props for the DialogHeader component\n * @extends ComponentPropsWithoutRef<\"header\">\n */\nexport type DialogHeaderProps = ComponentPropsWithoutRef<\"header\"> &\n DataTrackingId;\n\n/**\n * DialogHeader component for the header section of a Dialog.\n *\n * Features:\n * - Displays dialog title with headline typography\n * - Includes close button with proper accessibility\n * - Sticky positioning for long content\n * - Consistent spacing and styling\n * - Automatic focus management\n *\n * @example\n * <Dialog.Header>Confirm Delete</Dialog.Header>\n */\nexport const DialogHeader = forwardRef<HTMLDivElement, DialogHeaderProps>(\n (props: DialogHeaderProps, ref) => {\n const { children, className, ...rest } = props;\n const { headerRef } = useDialogContext();\n const data = {\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"Dialog\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const headerClassNames = cx(className, styles[\"header\"]);\n\n return (\n <header\n className={headerClassNames}\n data-anv=\"dialog-header\"\n data-tracking-id={trackingId}\n ref={useMergeRefs([ref, headerRef])}\n {...rest}\n >\n <Text variant=\"headline\" el=\"h1\">\n {children}\n </Text>\n <span className={styles[\"close-container\"]}>\n <DialogCancelButton\n className={styles[\"close-button\"]}\n size=\"small\"\n appearance=\"ghost\"\n aria-label=\"Close dialog\"\n icon={Close}\n />\n </span>\n </header>\n );\n },\n);\n\nDialogHeader.displayName = \"DialogHeader\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dialog.module.scss\";\n\n/**\n * Props for the DialogFooter component\n * @extends ComponentPropsWithoutRef<\"footer\">\n */\nexport type DialogFooterProps = ComponentPropsWithoutRef<\"footer\"> & {\n /**\n * @default false\n */\n sticky?: boolean;\n};\n\n/**\n * DialogFooter component for the footer section of a Dialog.\n *\n * Features:\n * - Container for dialog action buttons\n * - Optional sticky positioning for long content\n * - Consistent spacing and alignment\n * - Right-aligned button layout by default\n * - Flexible content area for custom layouts\n *\n * @example\n * <Dialog.Footer sticky>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Save</Button>\n * </Dialog.Footer>\n */\nexport const DialogFooter = forwardRef<HTMLElement, DialogFooterProps>(\n (props, ref) => {\n const { children, className, sticky = false, ...rest } = props;\n\n const footerClassNames = cx(styles[\"footer\"], className, {\n [styles[\"sticky\"]]: sticky,\n });\n\n return (\n <footer\n className={footerClassNames}\n data-anv=\"dialog-footer\"\n ref={ref}\n {...rest}\n >\n {children}\n </footer>\n );\n },\n);\n\nDialogFooter.displayName = \"DialogFooter\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport styles from \"./Dialog.module.scss\";\nimport { useDialogContext } from \"./internal/useDialogContext\";\n\n/**\n * Props for the DialogContent component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type DialogContentProps = ComponentPropsWithoutRef<\"div\"> & {\n /**\n * When true, the content will stick below the header during scroll.\n * @default false\n */\n sticky?: boolean;\n};\n\n/**\n * DialogContent component for the main content area of a Dialog.\n *\n * Features:\n * - Main content container for dialog body\n * - Flexible height with overflow handling\n * - Optional sticky positioning below header\n * - Consistent padding and spacing\n * - Responsive design\n * - Proper content scrolling for long content\n *\n * @example\n * // Basic content\n * <Dialog.Content>\n * <p>This is the main content of the dialog.</p>\n * </Dialog.Content>\n *\n * @example\n * // Sticky content (e.g., search field that remains visible while scrolling)\n * <Dialog.Content sticky>\n * <TextField placeholder=\"Filter results...\" />\n * </Dialog.Content>\n */\nexport const DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (props, ref) => {\n const { children, className, sticky = false, ...rest } = props;\n const { headerRef } = useDialogContext();\n const [headerHeight, setHeaderHeight] = useState(0);\n\n useEffect(() => {\n const headerElement = headerRef?.current;\n if (!sticky || !headerElement) return;\n\n const updateHeight = () => {\n setHeaderHeight(headerElement.offsetHeight || 0);\n };\n\n updateHeight();\n const resizeObserver = new ResizeObserver(updateHeight);\n resizeObserver.observe(headerElement);\n\n return () => resizeObserver.disconnect();\n }, [sticky, headerRef]);\n\n const contentClassNames = cx(styles[\"content\"], className, {\n [styles[\"sticky\"]]: sticky,\n });\n\n const stickyStyle = sticky ? { top: `${headerHeight}px` } : undefined;\n\n return (\n <div\n className={contentClassNames}\n data-anv=\"dialog-content\"\n ref={ref}\n style={{ ...stickyStyle, ...rest.style }}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDialogContent.displayName = \"DialogContent\";\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n KeyboardEvent,\n} from \"react\";\nimport { DialogHeader } from \"./DialogHeader\";\nimport { DialogFooter } from \"./DialogFooter\";\nimport { DialogContent } from \"./DialogContent\";\nimport { DialogCancelButton } from \"./DialogCancelButton\";\nimport {\n OpenCloseTransitionStateEffects,\n useDialogScrollLock,\n useDialogTransitionStates,\n useKeyboardFocusables,\n useOnClickOutside,\n} from \"../../internal/hooks\";\nimport {\n FocusableElement,\n DisableCloseOnEscapeOrClickProps,\n Size,\n} from \"../../types\";\nimport { registerLayer, unregisterLayer } from \"../../internal/utils\";\nimport { DialogContext, DialogContextProps } from \"./internal/DialogContext\";\nimport styles from \"./Dialog.module.scss\";\nimport { useMergeRefs } from \"../../hooks\";\nimport cx from \"classnames\";\n\nimport { ToastProvider } from \"../Toast/internal/ToastProvider\";\nimport { ToasterPopover } from \"../Toast/internal/ToasterPopover\";\nimport { ToasterContent } from \"../Toast/internal/Toaster\";\nimport { useInitialFocus } from \"./internal/useInitialFocus\";\n\n/**\n * Props for the Dialog component\n * @extends ComponentPropsWithoutRef<\"dialog\">\n * @extends DialogTransitionStateEffects\n * @extends DisableCloseOnEscapeOrClickProps\n */\nexport type DialogProps = ComponentPropsWithoutRef<\"dialog\"> &\n OpenCloseTransitionStateEffects &\n DisableCloseOnEscapeOrClickProps & {\n /**\n * @default false\n */\n fullScreen?: boolean;\n /**\n * @default \"medium\"\n */\n size?: Extract<Size, \"medium\" | \"large\">;\n\n /**\n * @default false\n */\n open?: boolean;\n onClose?: () => void;\n /**\n * @deprecated - use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpen?: () => void;\n /**\n * @deprecated - use onOpenAnimationStart or onOpenAnimationComplete instead\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Callback when clicking outside the dialog\n */\n onClickOutside?: (e: globalThis.MouseEvent) => void;\n /**\n * Enables scroll chaining\n * @link https://developer.mozilla.org/en-US/docs/Glossary/Scroll_chaining\n */\n enableScrollChaining?: boolean;\n /**\n * Given an array of focusable elements, return the initial focus target.\n * @param focusables - The focusable elements to pick from\n * @returns The initial focus target\n */\n initialFocusResolver?: (focusables: FocusableElement[]) => FocusableElement;\n };\n\nexport const DialogElement = forwardRef<HTMLDialogElement, DialogProps>(\n (props, ref) => {\n const {\n className,\n open = false,\n children,\n onOpen,\n onOpenChange,\n onClose,\n onKeyDown,\n fullScreen = false,\n disableCloseOnEscape = false,\n onClickOutside,\n disableCloseOnClickOutside = false,\n size,\n enableScrollChaining,\n onOpenAnimationStart,\n onOpenAnimationComplete,\n onCloseAnimationStart,\n onCloseAnimationComplete,\n initialFocusResolver,\n ...rest\n } = props;\n\n const elRef = useRef<HTMLDialogElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const toasterRef = useRef<HTMLDivElement>(null);\n const headerRef = useRef<HTMLElement>(null);\n\n const [hasOpenPopover, setHasOpenPopover] =\n useState<DialogContextProps[\"hasOpenPopover\"]>(false);\n const id = useId();\n\n const { state, isOpenOrOpening } = useDialogTransitionStates(elRef, open, {\n onOpenAnimationStart: useCallback(() => {\n onOpenAnimationStart?.();\n }, [onOpenAnimationStart]),\n onOpenAnimationComplete: useCallback(() => {\n onOpenAnimationComplete?.();\n onOpen?.(); // DEPRECATED\n }, [onOpen, onOpenAnimationComplete]),\n onCloseAnimationStart: useCallback(() => {\n onCloseAnimationStart?.();\n }, [onCloseAnimationStart]),\n onCloseAnimationComplete: useCallback(() => {\n onCloseAnimationComplete?.();\n }, [onCloseAnimationComplete]),\n });\n\n // DEPRECATED\n const initial = useRef(true);\n useEffect(() => {\n if (initial.current) {\n initial.current = false;\n } else {\n onOpenChange?.(isOpenOrOpening);\n }\n }, [id, onOpenChange, isOpenOrOpening]);\n\n const classNames = cx([styles[\"dialog\"]], className, {\n [styles[\"closing\"]]: state === \"closing\",\n [styles[\"fullscreen\"]]: fullScreen,\n [styles[\"large\"]]: size === \"large\",\n });\n\n const { focusables } = useKeyboardFocusables(contentRef, {\n observeChange: true,\n });\n\n useDialogScrollLock({\n open: isOpenOrOpening,\n id,\n enableScrollChaining,\n elementRef: elRef,\n });\n\n // Register/unregister with layer manager for proper stacking\n useEffect(() => {\n if (open) {\n registerLayer(id);\n } else {\n unregisterLayer(id);\n }\n\n // Cleanup when component unmounts\n return () => {\n unregisterLayer(id);\n };\n }, [open, id]);\n\n useOnClickOutside({\n onOutsidePress: (e) => {\n if (!open) return;\n onClickOutside?.(e);\n },\n targets: [\n contentRef.current as HTMLElement,\n toasterRef.current as HTMLElement,\n ],\n onClose: () => {\n if (disableCloseOnClickOutside || !open) return;\n onClose?.();\n },\n layerId: id,\n });\n\n const computeFocus = useCallback((focusables: FocusableElement[]) => {\n return (\n focusables.find(\n (focusable) => focusable.dataset.anv !== \"dialog-cancel-button\",\n ) || focusables[0]\n );\n }, []);\n\n useInitialFocus(elRef, {\n computeFocus: initialFocusResolver || computeFocus,\n });\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDialogElement>) => {\n onKeyDown?.(e);\n if (e.code === \"Escape\") {\n e.preventDefault();\n if (disableCloseOnEscape) return;\n if (hasOpenPopover) return;\n onClose?.();\n return;\n }\n\n if (e.code === \"Tab\") {\n if (e.shiftKey && e.target === focusables?.[0]) {\n e.preventDefault();\n (focusables[focusables.length - 1] as HTMLElement)?.focus();\n return;\n }\n if (e.target === focusables?.[focusables.length - 1] && !e.shiftKey) {\n e.preventDefault();\n focusables[0].focus();\n return;\n }\n }\n };\n\n return (\n // dialog element does seem to be interactive on MDN guideline\n <dialog\n className={classNames}\n data-anv=\"dialog\"\n data-anv-scroll-chaining={enableScrollChaining}\n data-anv-transition-state={state}\n ref={useMergeRefs([ref, elRef])}\n onKeyDown={onKeyDownHandler}\n {...rest}\n >\n <ToastProvider isDialogToaster={open}>\n <ToasterPopover>\n <ToasterContent id=\"dialog-toaster\" ref={toasterRef} />\n </ToasterPopover>\n </ToastProvider>\n <DialogContext.Provider\n value={{\n close: () => onClose?.(),\n ref: elRef,\n hasOpenPopover,\n setHasOpenPopover,\n headerRef,\n }}\n >\n <section\n ref={contentRef}\n className={styles[\"container\"]}\n data-open={open}\n >\n {children}\n </section>\n </DialogContext.Provider>\n </dialog>\n );\n },\n);\n\nDialogElement.displayName = \"Dialog\";\n\n/**\n * Dialog component for creating modal dialogs and overlays.\n *\n * Features:\n * - Modal dialog with backdrop overlay\n * - Controlled and uncontrolled open state\n * - Smooth open/close animations\n * - Keyboard navigation and focus management\n * - Escape key and click outside to close\n * - Multiple size variants (medium, large, fullscreen)\n * - Scroll chaining support\n * - Toast integration for notifications\n * - Compound component pattern with Header, Footer, Content, and CancelButton sub-components\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog open={isOpen} onClose={() => setIsOpen(false)}>\n * <Dialog.Header>Confirm Action</Dialog.Header>\n * <Dialog.Content>Are you sure you want to proceed?</Dialog.Content>\n * <Dialog.Footer>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Confirm</Button>\n * </Dialog.Footer>\n * </Dialog>\n */\nexport const Dialog = Object.assign(DialogElement, {\n /**\n * DialogHeader component for the header section of a Dialog.\n *\n * Features:\n * - Displays dialog title with headline typography\n * - Includes close button with proper accessibility\n * - Sticky positioning for long content\n * - Consistent spacing and styling\n * - Automatic focus management\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog.Header>Confirm Delete</Dialog.Header>\n */\n Header: DialogHeader,\n /**\n * DialogFooter component for the footer section of a Dialog.\n *\n * Features:\n * - Container for dialog action buttons\n * - Optional sticky positioning for long content\n * - Consistent spacing and alignment\n * - Right-aligned button layout by default\n * - Flexible content area for custom layouts\n *\n * @example\n * <Dialog.Footer sticky>\n * <Dialog.CancelButton>Cancel</Dialog.CancelButton>\n * <Button appearance=\"primary\">Save</Button>\n * </Dialog.Footer>\n */\n Footer: DialogFooter,\n /**\n * DialogContent component for the main content area of a Dialog.\n *\n * Features:\n * - Main content container for dialog body\n * - Flexible height with overflow handling\n * - Consistent padding and spacing\n * - Responsive design\n * - Proper content scrolling for long content\n *\n * @example\n * <Dialog.Content>\n * <p>This is the main content of the dialog.</p>\n * </Dialog.Content>\n */\n Content: DialogContent,\n /**\n * DialogCancelButton component for cancel/close actions in a Dialog.\n *\n * Features:\n * - Button that automatically closes the dialog when clicked\n * - Extends all Button component props and functionality\n * - Proper accessibility with close dialog semantics\n * - Automatic focus management\n * - Consistent styling with other dialog elements\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Dialog.CancelButton appearance=\"ghost\">Cancel</Dialog.CancelButton>\n */\n CancelButton: DialogCancelButton,\n});\n"],"names":["Close","focusables"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Link-DuYh7Xl2.js","sources":["../../hammer-icon/mdi/round/open_in_new.svg","../src/components/Link/internal/LinkHeadless.tsx","../src/components/Link/useLinkStyles.ts","../src/components/Link/internal/Link.tsx","../src/components/Link/Link.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgOpenInNew = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M18 19H6c-.55 0-1-.45-1-1V6c0-.55.45-1 1-1h5c.55 0 1-.45 1-1s-.45-1-1-1H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-6c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55-.45 1-1 1zM14 4c0 .55.45 1 1 1h2.59l-9.13 9.13a.996.996 0 1 0 1.41 1.41L19 6.41V9c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1h-5c-.55 0-1 .45-1 1z\" }));\nexport default SvgOpenInNew;\n","import { forwardRef, ComponentPropsWithoutRef } from \"react\";\n\nimport styles from \"./Link.module.scss\";\nimport { Icon } from \"../../Icon\";\nimport OpenInNew from \"@servicetitan/hammer-icon/mdi/round/open_in_new.svg\";\n\n/**\n * Props for the LinkHeadless component.\n * @extends ComponentPropsWithoutRef<\"a\">\n */\nexport type LinkHeadlessProps = ComponentPropsWithoutRef<\"a\">;\n\n/**\n * Headless link component for creating accessible hyperlinks.\n *\n * Features:\n * - Security attributes (rel=\"noopener noreferrer\") for external links\n *\n * @example\n * <LinkHeadless href=\"/dashboard\">\n * Go to Dashboard\n * </LinkHeadless>\n *\n * @example\n * <LinkHeadless href=\"https://example.com\" target=\"_blank\">\n * External Documentation\n * </LinkHeadless>\n *\n */\nexport const LinkHeadless = forwardRef<HTMLAnchorElement, LinkHeadlessProps>(\n ({ children, ...props }, ref) => {\n return (\n <a\n rel=\"noopener noreferrer\"\n data-anv=\"link-headless\"\n ref={ref}\n {...props}\n >\n {children}\n {props.target === \"_blank\" && (\n <Icon className={styles[\"open-in-new\"]} inherit svg={OpenInNew} />\n )}\n </a>\n );\n },\n);\n\nLinkHeadless.displayName = \"LinkHeadless\";\n","import cx from \"classnames\";\n\nimport { LayoutUtilProps } from \"../../types\";\nimport { LinkProps } from \"./Link\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\nimport styles from \"./internal/Link.module.scss\";\n\n/**\n * Props for the useLinkStyles hook.\n * @extends LayoutUtilProps\n */\nexport type UseLinkStylesProps = LayoutUtilProps &\n Pick<LinkProps, \"className\" | \"appearance\" | \"quiet\" | \"style\">;\n\n/**\n * Hook for generating link styles and class names.\n *\n * @param props - The link style properties\n * @returns Object containing linkClassNames and styleCombined\n */\nexport const useLinkStyles = (props: UseLinkStylesProps) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const { className, appearance = \"primary\", quiet, style } = componentProps;\n\n const linkClassNames = cx([styles[\"link\"]], className, {\n [styles[\"quiet\"]]: quiet,\n [styles[\"secondary\"]]: appearance === \"secondary\",\n });\n\n const styleCombined = Object.assign({}, style, layoutStyles);\n\n return { linkClassNames, styleCombined };\n};\n","import { forwardRef, ComponentPropsWithoutRef } from \"react\";\n\nimport { LayoutUtilProps } from \"../../../types\";\n\nimport { LinkHeadless } from \"./LinkHeadless\";\n\nimport { useLinkStyles } from \"../useLinkStyles\";\n\n/**\n * Props for the Link component.\n * @extends ComponentPropsWithoutRef<\"a\">\n * @extends LayoutUtilProps\n */\nexport type LinkProps = ComponentPropsWithoutRef<\"a\"> &\n LayoutUtilProps &\n (\n | {\n /**\n * The visual appearance of the link.\n * @default \"primary\"\n */\n appearance?: \"primary\";\n /** Whether the link should have a quieter, less prominent appearance */\n quiet?: boolean;\n }\n | {\n /** The visual appearance of the link. Secondary appearance cannot be quiet. */\n appearance: \"secondary\";\n quiet?: false;\n }\n );\n\n/**\n * Link component for creating accessible, styled hyperlinks.\n *\n * Features:\n * - Two visual appearances: primary (default) and secondary\n * - Quiet mode for less prominent styling\n * - Automatic external link icon for target=\"_blank\" links\n * - Security attributes (rel=\"noopener noreferrer\") for external links\n * - Full accessibility support with proper focus management\n * - Supports layout utilities for positioning and spacing\n * - Flexible content support for text and other elements\n * - Responsive design with consistent typography\n * - Hover and focus states with proper visual feedback\n * - Screen reader support for external link announcements\n *\n * @example\n * <Link href=\"/dashboard\" appearance=\"primary\">\n * Go to Dashboard\n * </Link>\n *\n * @example\n * <Link href=\"https://example.com\" target=\"_blank\" quiet>\n * External Documentation\n * </Link>\n *\n * @example\n * <Link href=\"/settings\" appearance=\"secondary\">\n * Settings\n * </Link>\n *\n * @example\n * <Link href=\"/profile\" gap=\"2\" alignItems=\"center\">\n * <Avatar name=\"John Doe\" size=\"small\" />\n * View Profile\n * </Link>\n */\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>((props, ref) => {\n const { appearance, className, quiet, style, children, ...rest } = props;\n const { linkClassNames, styleCombined } = useLinkStyles({\n appearance,\n className,\n quiet,\n style,\n });\n\n return (\n <LinkHeadless\n className={linkClassNames}\n data-anv=\"link\"\n ref={ref}\n style={styleCombined}\n {...rest}\n >\n {children}\n </LinkHeadless>\n );\n});\n\nLink.displayName = \"Link\";\n","import { Ref, forwardRef } from \"react\";\n\nimport { childrenToString } from \"../../internal/functions\";\nimport { DataTrackingId, DistributiveOmit } from \"../../types\";\nimport { useTrackingId } from \"../../hooks\";\n\nimport { LinkProps as BaseLinkProps, Link as BaseLink } from \"./internal/Link\";\n\n/**\n * Props for the Link component.\n * @extends Omit<BaseLinkProps, \"href\">\n * @extends DataTrackingId\n */\nexport type LinkProps = DistributiveOmit<BaseLinkProps, \"href\"> &\n DataTrackingId &\n (\n | {\n pathname?: never;\n search?: never;\n href?: BaseLinkProps[\"href\"];\n }\n | {\n pathname: string;\n search?: string;\n href?: never;\n }\n | {\n pathname?: never;\n search?: never;\n href?: never;\n }\n );\n\n/**\n * Link component for creating accessible, styled hyperlinks with tracking support.\n *\n * Features:\n * - Two visual appearances: primary (default) and secondary\n * - Quiet mode for less prominent styling\n * - Automatic external link icon for target=\"_blank\" links\n * - Security attributes (rel=\"noopener noreferrer\") for external links\n * - Full accessibility support with proper focus management\n * - Supports layout utilities for positioning and spacing\n * - Flexible content support for text and other elements\n * - Responsive design with consistent typography\n * - Hover and focus states with proper visual feedback\n * - Screen reader support for external link announcements\n * - Automatic tracking ID generation for analytics\n * - Client-side navigation support with pathname and search params\n * - History API integration for single-page application navigation\n *\n * @example\n * <Link href=\"/dashboard\" appearance=\"primary\">\n * Go to Dashboard\n * </Link>\n *\n * @example\n * <Link pathname=\"/settings\" search=\"?tab=profile\">\n * Profile Settings\n * </Link>\n *\n * @example\n * <Link href=\"https://example.com\" target=\"_blank\" quiet>\n * External Documentation\n * </Link>\n *\n * @example\n * <Link href=\"/profile\" gap=\"2\" alignItems=\"center\">\n * <Avatar name=\"John Doe\" size=\"small\" />\n * View Profile\n * </Link>\n */\nexport const Link = forwardRef(\n (props: LinkProps, ref: Ref<HTMLAnchorElement>) => {\n const { onClick, pathname, children, search, ...rest } = props;\n const data = {\n appearance: props.appearance,\n quiet: props.quiet,\n children: childrenToString(children),\n };\n\n const handleClick = (\n ...args: Parameters<NonNullable<LinkProps[\"onClick\"]>>\n ) => {\n if (pathname) {\n const to = pathname + (search ?? \"\");\n args[0].preventDefault();\n history.pushState(null, \"\", to);\n onClick?.(...args);\n } else {\n onClick?.(...args);\n }\n };\n\n const trackingId = useTrackingId({\n name: \"Link\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n\n return (\n <BaseLink\n onClick={handleClick}\n ref={ref}\n data-tracking-id={trackingId}\n {...rest}\n >\n {children}\n </BaseLink>\n );\n },\n);\n\nLink.displayName = BaseLink.displayName;\n"],"names":["styles","OpenInNew","Link","BaseLink"],"mappings":";;;;;;;;;;AACA,MAAM,YAAY,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,oTAAoT,EAAE,CAAC,CAAC;;AC4BnhB,MAAM,YAAA,GAAe,UAAA;AAAA,EAC1B,CAAC,EAAE,QAAA,EAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC/B,IAAA,uBACE,IAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAI,qBAAA;AAAA,QACJ,UAAA,EAAS,eAAA;AAAA,QACT,GAAA;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,KAAA,CAAM,MAAA,KAAW,QAAA,oBAChB,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAWA,UAAA,CAAO,aAAa,CAAA,EAAG,OAAA,EAAO,IAAA,EAAC,GAAA,EAAKC,YAAA,EAAW;AAAA;AAAA;AAAA,KAEpE;AAAA,EAEJ;AACF,CAAA;AAEA,YAAA,CAAa,WAAA,GAAc,cAAA;;AC1BpB,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA8B;AAC1D,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,EAAA,MAAM,EAAE,SAAA,EAAW,UAAA,GAAa,SAAA,EAAW,KAAA,EAAO,OAAM,GAAI,cAAA;AAE5D,EAAA,MAAM,iBAAiB,EAAA,CAAG,CAACD,WAAO,MAAM,CAAC,GAAG,SAAA,EAAW;AAAA,IACrD,CAACA,UAAA,CAAO,OAAO,CAAC,GAAG,KAAA;AAAA,IACnB,CAACA,UAAA,CAAO,WAAW,CAAC,GAAG,UAAA,KAAe;AAAA,GACvC,CAAA;AAED,EAAA,MAAM,gBAAgB,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,OAAO,YAAY,CAAA;AAE3D,EAAA,OAAO,EAAE,gBAAgB,aAAA,EAAc;AACzC;;ACmCO,MAAME,MAAA,GAAO,UAAA,CAAyC,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC3E,EAAA,MAAM,EAAE,YAAY,SAAA,EAAW,KAAA,EAAO,OAAO,QAAA,EAAU,GAAG,MAAK,GAAI,KAAA;AACnE,EAAA,MAAM,EAAE,cAAA,EAAgB,aAAA,EAAc,GAAI,aAAA,CAAc;AAAA,IACtD,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,cAAA;AAAA,MACX,UAAA,EAAS,MAAA;AAAA,MACT,GAAA;AAAA,MACA,KAAA,EAAO,aAAA;AAAA,MACN,GAAG,IAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ,CAAC,CAAA;AAEDA,MAAA,CAAK,WAAA,GAAc,MAAA;;AClBZ,MAAM,IAAA,GAAO,UAAA;AAAA,EAClB,CAAC,OAAkB,GAAA,KAAgC;AACjD,IAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,UAAU,MAAA,EAAQ,GAAG,MAAK,GAAI,KAAA;AACzD,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,QAAA,EAAU,iBAAiB,QAAQ;AAAA,KACrC;AAEA,IAAA,MAAM,WAAA,GAAc,IACf,IAAA,KACA;AACH,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,MAAM,EAAA,GAAK,YAAY,MAAA,IAAU,EAAA,CAAA;AACjC,QAAA,IAAA,CAAK,CAAC,EAAE,cAAA,EAAe;AACvB,QAAA,OAAA,CAAQ,SAAA,CAAU,IAAA,EAAM,EAAA,EAAI,EAAE,CAAA;AAC9B,QAAA,OAAA,GAAU,GAAG,IAAI,CAAA;AAAA,MACnB,CAAA,MAAO;AACL,QAAA,OAAA,GAAU,GAAG,IAAI,CAAA;AAAA,MACnB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,MAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,IAAA,CAAK,kBAAkB;AAAA,KACvC,CAAA;AAED,IAAA,uBACE,GAAA;AAAA,MAACC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,WAAA;AAAA,QACT,GAAA;AAAA,QACA,kBAAA,EAAkB,UAAA;AAAA,QACjB,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,IAAA,CAAK,cAAcA,MAAA,CAAS,WAAA;;;;"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import './Link.css';const link = "_link_4o01j_2";
|
|
2
|
-
const secondary = "_secondary_4o01j_43";
|
|
3
|
-
const quiet = "_quiet_4o01j_52";
|
|
4
|
-
const linkStyles = {
|
|
5
|
-
link: link,
|
|
6
|
-
"open-in-new": "_open-in-new_4o01j_27",
|
|
7
|
-
secondary: secondary,
|
|
8
|
-
quiet: quiet
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export { linkStyles as l };
|
|
12
|
-
//# sourceMappingURL=Link.module-Cf17JWod.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Link.module-Cf17JWod.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LinkButton-pIUNATNE.js","sources":["../src/components/LinkButton/LinkButton.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, Ref, forwardRef } from \"react\";\nimport styles from \"./LinkButton.module.scss\";\nimport linkStyles from \"../Link/internal/Link.module.scss\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\nimport { DataTrackingId } from \"../../types/DataTrackingId\";\nimport cx from \"classnames\";\nimport { LayoutUtilProps } from \"../../types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\n\n/**\n * Props for the Link component.\n * @extends CoreLinkButtonProps\n * @extends DataTrackingId\n */\nexport type LinkButtonProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"type\" | \"disabled\"\n> &\n LayoutUtilProps &\n (\n | {\n /**\n * The visual appearance of the LinkButton.\n * @default \"primary\"\n */\n appearance?: \"primary\";\n /**\n * Whether the LinkButton should have a quieter, less prominent appearance.\n * @remarks Only available when appearance is \"primary\".\n */\n quiet?: boolean;\n }\n | {\n /**\n * The visual appearance of the LinkButton. Secondary appearance cannot be quiet.\n */\n appearance: \"secondary\";\n /**\n * Whether the LinkButton should have a quieter, less prominent appearance.\n * @remarks Must be false when appearance is \"secondary\".\n */\n quiet?: false;\n }\n ) &\n DataTrackingId;\n\nexport const LinkButton = forwardRef(\n (props: LinkButtonProps, ref: Ref<HTMLButtonElement>) => {\n const data = {\n appearance: props.appearance,\n quiet: props.quiet,\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"Link\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n children,\n className,\n appearance = \"primary\",\n quiet,\n style,\n ...rest\n } = componentProps;\n\n const linkClassNames = cx(\n [linkStyles[\"link\"]],\n styles[\"link-button\"],\n className,\n {\n [linkStyles[\"quiet\"]]: quiet,\n [linkStyles[\"secondary\"]]: appearance === \"secondary\",\n },\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <button\n className={linkClassNames}\n data-anv=\"link-button\"\n ref={ref}\n style={styleCombined}\n data-tracking-id={trackingId}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nLinkButton.displayName = \"LinkButton\";\n"],"names":[],"mappings":";;;;;;;;;;;;AA+CO,MAAM,UAAA,GAAa,UAAA;AAAA,EACxB,CAAC,OAAwB,GAAA,KAAgC;AACvD,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,QAAA,EAAU,gBAAA,CAAiB,KAAA,CAAM,QAAQ;AAAA,KAC3C;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,MAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA,GAAa,SAAA;AAAA,MACb,KAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,cAAA,GAAiB,EAAA;AAAA,MACrB,CAAC,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA,MACnB,OAAO,aAAa,CAAA;AAAA,MACpB,SAAA;AAAA,MACA;AAAA,QACE,CAAC,UAAA,CAAW,OAAO,CAAC,GAAG,KAAA;AAAA,QACvB,CAAC,UAAA,CAAW,WAAW,CAAC,GAAG,UAAA,KAAe;AAAA;AAC5C,KACF;AAEA,IAAA,MAAM,aAAA,GAAgB;AAAA,MACpB,GAAG,KAAA;AAAA,MACH,GAAG;AAAA,KACL;AAEA,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,cAAA;AAAA,QACX,UAAA,EAAS,aAAA;AAAA,QACT,GAAA;AAAA,QACA,KAAA,EAAO,aAAA;AAAA,QACP,kBAAA,EAAkB,UAAA;AAAA,QACjB,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SearchField-DrgNbG3I.js","sources":["../../hammer-icon/mdi/round/search.svg","../src/components/SearchField/SearchField.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgSearch = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.5 14h-.79l-.28-.27a6.5 6.5 0 0 0 1.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 0 0-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 0 0 5.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" }));\nexport default SvgSearch;\n","import {\n forwardRef,\n ComponentPropsWithoutRef,\n useId,\n useRef,\n ChangeEvent,\n useState,\n useEffect,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport textfieldStyles from \"../TextField/TextField.module.scss\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport Search from \"@servicetitan/hammer-icon/mdi/round/search.svg\";\nimport styles from \"./SearchField.module.scss\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { SrOnly } from \"../SrOnly\";\nimport { Icon } from \"../Icon\";\nimport { useTrackingId, useMergeRefs } from \"../../hooks\";\nimport { DataTrackingId, LayoutUtilProps, Size } from \"../../types\";\n\n/**\n * Props for the SearchField component\n * @extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\" | \"prefix\" | \"required\" | \"children\">\n * @extends LayoutUtilProps\n */\nexport type SearchFieldProps = Omit<\n ComponentPropsWithoutRef<\"input\">,\n \"size\" | \"prefix\" | \"required\" | \"children\"\n> &\n LayoutUtilProps & {\n /**\n * Size of the search field\n * @default \"medium\"\n */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n /**\n * Whether the search field is disabled\n * @default false\n */\n disabled?: boolean;\n /**\n * Callback when the clear button is clicked\n */\n onClear?: () => void;\n } & DataTrackingId;\n\n/**\n * SearchField component for text input with search functionality.\n *\n * Features:\n * - Search icon prefix for visual clarity\n * - Clear button that appears when input has value\n * - Multiple size variants (small, medium, large)\n * - Controlled and uncontrolled modes\n * - Disabled and read-only states\n * - Accessibility support with proper ARIA attributes\n * - Layout utility props for positioning and spacing\n * - Automatic value detection for clear button visibility\n * - Search-specific input type and autocomplete settings\n * - Screen reader support with placeholder announcements\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <SearchField\n * placeholder=\"Search users...\"\n * onChange={(e) => setSearchTerm(e.target.value)}\n * onClear={() => setSearchTerm(\"\")}\n * />\n *\n * @example\n * <SearchField\n * size=\"large\"\n * value={searchValue}\n * onChange={(e) => setSearchValue(e.target.value)}\n * disabled={isLoading}\n * />\n */\nexport const SearchField = forwardRef<HTMLInputElement, SearchFieldProps>(\n function SearchField(props, ref) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n size,\n onChange,\n onClear,\n id: idProp,\n disabled,\n style,\n value,\n placeholder = \"Search...\",\n autoComplete = \"off\",\n ...rest\n } = componentProps;\n\n const [hasValue, setHasValue] = useState(\n rest.defaultValue || value ? true : false,\n );\n const placeholderUid = useId();\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const styleCombined = { ...style, ...layoutStyles };\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.value) {\n setHasValue(true);\n } else {\n setHasValue(false);\n }\n onChange?.(e);\n };\n\n useEffect(() => {\n if (typeof value === \"undefined\") return;\n if (value === \"\" || !value) {\n setHasValue(false);\n } else {\n setHasValue(true);\n }\n }, [value]);\n\n const handleClear = () => {\n if (!inputRef.current) return;\n if (disabled || rest.readOnly) return;\n onClear?.();\n if (value) {\n return;\n }\n const nativeInputValueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\",\n )?.set;\n nativeInputValueSetter?.call(inputRef.current, \"\");\n inputRef.current.dispatchEvent(new Event(\"input\", { bubbles: true }));\n setHasValue(false);\n };\n\n const data = {\n value: props.value,\n defaultValue: props.defaultValue,\n disabled: props.disabled,\n readOnly: props.readOnly,\n size: props.size,\n };\n\n const trackingId = useTrackingId({\n name: \"SearchField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n return (\n <div\n className={cx(\n textfieldStyles[\"textfield\"],\n styles[\"searchfield\"],\n className,\n )}\n data-anv=\"SearchField\"\n style={styleCombined}\n >\n <div\n className={cx(\n textfieldStyles[\"input-wrapper\"],\n styles[\"input-wrapper\"],\n {\n [textfieldStyles[\"small\"]]: size === \"small\",\n [textfieldStyles[\"large\"]]: size === \"large\",\n },\n )}\n role=\"presentation\"\n onClick={() => inputRef.current?.focus()}\n >\n <div aria-hidden className={textfieldStyles[\"prefix\"]}>\n <Icon aria-label=\"search\" svg={Search} />\n </div>\n <input\n className={cx(textfieldStyles[\"input\"])}\n ref={useMergeRefs([ref, inputRef])}\n onChange={handleOnChange}\n placeholder={placeholder}\n value={value}\n type=\"search\"\n autoComplete={autoComplete}\n disabled={disabled}\n aria-labelledby={placeholderUid}\n data-tracking-id={trackingId}\n {...rest}\n />\n <Icon\n aria-label=\"cancel\"\n svg={Close}\n role=\"button\"\n onClick={handleClear}\n className={styles[\"clear\"]}\n aria-disabled={disabled}\n style={{\n visibility: hasValue ? \"visible\" : \"hidden\",\n }}\n />\n </div>\n <SrOnly id={placeholderUid}>{placeholder}</SrOnly>\n </div>\n );\n },\n);\n"],"names":["SearchField","textfieldStyles","Search","Close"],"mappings":";;;;;;;;;;;;AACK,MAAC,SAAS,GAAG,CAAC,KAAK,qBAAqB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,kBAAkB,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,8SAA8S,EAAE,CAAC;;;;;;;;;AC6EzgB,MAAM,WAAA,GAAc,UAAA;AAAA,EACzB,SAASA,YAAAA,CAAY,KAAA,EAAO,GAAA,EAAK;AAC/B,IAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AACjE,IAAA,MAAM;AAAA,MACJ,SAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,EAAA,EAAI,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,WAAA,GAAc,WAAA;AAAA,MACd,YAAA,GAAe,KAAA;AAAA,MACf,GAAG;AAAA,KACL,GAAI,cAAA;AAEJ,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA;AAAA,MAC9B,IAAA,CAAK,YAAA,IAAgB,KAAA,GAAQ,IAAA,GAAO;AAAA,KACtC;AACA,IAAA,MAAM,iBAAiB,KAAA,EAAM;AAE7B,IAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAE9C,IAAA,MAAM,aAAA,GAAgB,EAAE,GAAG,KAAA,EAAO,GAAG,YAAA,EAAa;AAElD,IAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAqC;AAC3D,MAAA,IAAI,CAAA,CAAE,OAAO,KAAA,EAAO;AAClB,QAAA,WAAA,CAAY,IAAI,CAAA;AAAA,MAClB,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,KAAK,CAAA;AAAA,MACnB;AACA,MAAA,QAAA,GAAW,CAAC,CAAA;AAAA,IACd,CAAA;AAEA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,OAAO,UAAU,WAAA,EAAa;AAClC,MAAA,IAAI,KAAA,KAAU,EAAA,IAAM,CAAC,KAAA,EAAO;AAC1B,QAAA,WAAA,CAAY,KAAK,CAAA;AAAA,MACnB,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,IAAI,CAAA;AAAA,MAClB;AAAA,IACF,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,CAAC,SAAS,OAAA,EAAS;AACvB,MAAA,IAAI,QAAA,IAAY,KAAK,QAAA,EAAU;AAC/B,MAAA,OAAA,IAAU;AACV,MAAA,IAAI,KAAA,EAAO;AACT,QAAA;AAAA,MACF;AACA,MAAA,MAAM,yBAAyB,MAAA,CAAO,wBAAA;AAAA,QACpC,OAAO,gBAAA,CAAiB,SAAA;AAAA,QACxB;AAAA,OACF,EAAG,GAAA;AACH,MAAA,sBAAA,EAAwB,IAAA,CAAK,QAAA,CAAS,OAAA,EAAS,EAAE,CAAA;AACjD,MAAA,QAAA,CAAS,OAAA,CAAQ,cAAc,IAAI,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,IAAA,EAAM,CAAC,CAAA;AACpE,MAAA,WAAA,CAAY,KAAK,CAAA;AAAA,IACnB,CAAA;AAEA,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,OAAO,KAAA,CAAM,KAAA;AAAA,MACb,cAAc,KAAA,CAAM,YAAA;AAAA,MACpB,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,UAAU,KAAA,CAAM,QAAA;AAAA,MAChB,MAAM,KAAA,CAAM;AAAA,KACd;AAEA,IAAA,MAAM,aAAa,aAAA,CAAc;AAAA,MAC/B,IAAA,EAAM,aAAA;AAAA,MACN,IAAA;AAAA,MACA,WAAA,EAAa,CAAC,CAAC,KAAA,CAAM,kBAAkB;AAAA,KACxC,CAAA;AAED,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACTC,gBAAgB,WAAW,CAAA;AAAA,UAC3B,OAAO,aAAa,CAAA;AAAA,UACpB;AAAA,SACF;AAAA,QACA,UAAA,EAAS,aAAA;AAAA,QACT,KAAA,EAAO,aAAA;AAAA,QAEP,QAAA,EAAA;AAAA,0BAAA,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACTA,gBAAgB,eAAe,CAAA;AAAA,gBAC/B,OAAO,eAAe,CAAA;AAAA,gBACtB;AAAA,kBACE,CAACA,eAAA,CAAgB,OAAO,CAAC,GAAG,IAAA,KAAS,OAAA;AAAA,kBACrC,CAACA,eAAA,CAAgB,OAAO,CAAC,GAAG,IAAA,KAAS;AAAA;AACvC,eACF;AAAA,cACA,IAAA,EAAK,cAAA;AAAA,cACL,OAAA,EAAS,MAAM,QAAA,CAAS,OAAA,EAAS,KAAA,EAAM;AAAA,cAEvC,QAAA,EAAA;AAAA,gCAAA,GAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAW,IAAA,EAAC,SAAA,EAAWA,eAAA,CAAgB,QAAQ,CAAA,EAClD,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,YAAA,EAAW,QAAA,EAAS,GAAA,EAAKC,WAAQ,CAAA,EACzC,CAAA;AAAA,gCACA,GAAA;AAAA,kBAAC,OAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,EAAA,CAAGD,eAAA,CAAgB,OAAO,CAAC,CAAA;AAAA,oBACtC,GAAA,EAAK,YAAA,CAAa,CAAC,GAAA,EAAK,QAAQ,CAAC,CAAA;AAAA,oBACjC,QAAA,EAAU,cAAA;AAAA,oBACV,WAAA;AAAA,oBACA,KAAA;AAAA,oBACA,IAAA,EAAK,QAAA;AAAA,oBACL,YAAA;AAAA,oBACA,QAAA;AAAA,oBACA,iBAAA,EAAiB,cAAA;AAAA,oBACjB,kBAAA,EAAkB,UAAA;AAAA,oBACjB,GAAG;AAAA;AAAA,iBACN;AAAA,gCACA,GAAA;AAAA,kBAAC,IAAA;AAAA,kBAAA;AAAA,oBACC,YAAA,EAAW,QAAA;AAAA,oBACX,GAAA,EAAKE,QAAA;AAAA,oBACL,IAAA,EAAK,QAAA;AAAA,oBACL,OAAA,EAAS,WAAA;AAAA,oBACT,SAAA,EAAW,OAAO,OAAO,CAAA;AAAA,oBACzB,eAAA,EAAe,QAAA;AAAA,oBACf,KAAA,EAAO;AAAA,sBACL,UAAA,EAAY,WAAW,SAAA,GAAY;AAAA;AACrC;AAAA;AACF;AAAA;AAAA,WACF;AAAA,0BACA,GAAA,CAAC,MAAA,EAAA,EAAO,EAAA,EAAI,cAAA,EAAiB,QAAA,EAAA,WAAA,EAAY;AAAA;AAAA;AAAA,KAC3C;AAAA,EAEJ;AACF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Tooltip-CZsoFe6C.js","sources":["../src/components/Tooltip/internal/TooltipLegacy/useTooltipLegacyContext.tsx","../src/components/Tooltip/internal/TooltipLegacy/TooltipLegacyContent.tsx","../src/components/Tooltip/internal/TooltipContext.ts","../src/components/Tooltip/internal/useTooltipContext.tsx","../src/components/Tooltip/TooltipContent.tsx","../src/components/Tooltip/internal/TooltipLegacy/useTooltipLegacy.tsx","../src/components/Tooltip/internal/TooltipLegacy/TooltipLegacyTrigger.tsx","../src/components/Tooltip/internal/TooltipLegacy/TooltipLegacy.tsx","../src/components/Tooltip/internal/isNonInteractiveTrigger.ts","../src/components/Tooltip/TooltipTrigger.tsx","../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport { useTooltipLegacy } from \"./useTooltipLegacy\";\nimport { ThemeProviderContextProps } from \"../../../../providers\";\n\nexport type TooltipLegacyContextType =\n | (ReturnType<typeof useTooltipLegacy> & {\n theme?: ThemeProviderContextProps[\"theme\"];\n mode?: ThemeProviderContextProps[\"mode\"];\n })\n | null;\n\nexport const TooltipLegacyContext =\n createContext<TooltipLegacyContextType>(null);\n\nexport const useTooltipLegacyContext = () => {\n const context = useContext(TooltipLegacyContext);\n\n if (context == null) {\n throw new Error(\n \"TooltipLegacy components must be wrapped in <TooltipLegacy />\",\n );\n }\n\n return context;\n};\n","import {\n FloatingPortal,\n FloatingArrow,\n useDelayGroup,\n} from \"@floating-ui/react\";\nimport {\n ComponentPropsWithoutRef,\n MutableRefObject,\n forwardRef,\n useContext,\n useId,\n} from \"react\";\nimport { useTooltipLegacyContext } from \"./useTooltipLegacyContext\";\nimport styles from \"./TooltipLegacy.module.scss\";\nimport { useMergeRefs } from \"../../../../hooks\";\nimport { ThemeProvider } from \"../../../../providers\";\nimport cx from \"classnames\";\nimport { PortalProviderContext } from \"../../../../providers/PortalProvider\";\nimport { DialogContext } from \"../../../Dialog/internal/DialogContext\";\nimport { DrawerContext } from \"../../../Drawer/internal/DrawerContext\";\n\nexport type TooltipLegacyContentProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const TooltipLegacyContent = forwardRef<\n HTMLDivElement,\n TooltipLegacyContentProps\n>(function TooltipLegacyContent({ style, className, ...props }, propRef) {\n const {\n context: floatingContext,\n theme,\n mode,\n root,\n ...context\n } = useTooltipLegacyContext();\n const { root: portalRoot } = useContext(PortalProviderContext);\n const dialogContext = useContext(DialogContext);\n const drawerContext = useContext(DrawerContext);\n\n const id = useId();\n\n useDelayGroup(floatingContext, { id });\n\n const ref = useMergeRefs([context.refs.setFloating, propRef]);\n\n if (!floatingContext.open) return null;\n\n const contentCx = cx(styles[\"content-legacy\"], className);\n\n return (\n <FloatingPortal\n root={\n root ??\n dialogContext?.ref?.current ??\n drawerContext?.ref?.current ??\n portalRoot ??\n (context.refs.reference as\n | MutableRefObject<HTMLElement | null>\n | null\n | undefined)\n }\n >\n <ThemeProvider theme={theme} mode={mode}>\n <div\n ref={ref}\n className={contentCx}\n data-anv=\"tooltip-content\"\n style={{\n ...context.floatingStyles,\n ...style,\n }}\n onBlur={() => context.setOpen(false)}\n {...context.getFloatingProps(props)}\n >\n <FloatingArrow\n ref={context.arrowRef}\n context={floatingContext}\n className={styles[\"arrow-legacy\"]}\n />\n {props.children}\n </div>\n </ThemeProvider>\n </FloatingPortal>\n );\n});\n","import {\n Dispatch,\n SetStateAction,\n CSSProperties,\n RefObject,\n createContext,\n} from \"react\";\nimport { Placement } from \"@floating-ui/react-dom\";\n\nimport { TooltipProps } from \"../Tooltip\";\n\n/**\n * Context props for the Tooltip component\n */\nexport type TooltipContextProps = {\n /**\n * Unique identifier for the tooltip\n */\n tooltipId: string;\n /**\n * Function to set the tooltip ID\n */\n setTooltipId: Dispatch<SetStateAction<string>>;\n /**\n * The trigger element reference\n */\n invoker?: HTMLElement;\n /**\n * Function to set the trigger element\n */\n setInvoker?: Dispatch<SetStateAction<HTMLElement | undefined>>;\n /**\n * The tooltip content element reference\n */\n popover?: HTMLElement;\n /**\n * Function to set the tooltip content element\n */\n setTooltip?: Dispatch<SetStateAction<HTMLElement | undefined>>;\n /**\n * The root node for the tooltip\n */\n rootNode?: HTMLElement;\n /**\n * Function to set the root node\n */\n setRootNode?: Dispatch<SetStateAction<HTMLElement | undefined>>;\n /**\n * The arrow element reference\n */\n arrowElement?: HTMLSpanElement;\n /**\n * Function to set the arrow element\n */\n setArrowElement?: Dispatch<SetStateAction<HTMLSpanElement | undefined>>;\n /**\n * Current open state of the tooltip\n */\n openState: boolean;\n /**\n * Function to set the open state\n */\n setOpenState: Dispatch<SetStateAction<boolean>>;\n /**\n * Inline styles for the tooltip\n */\n tooltipStyle?: CSSProperties;\n /**\n * Placement of the tooltip\n */\n placement?: Placement;\n /**\n * Function to open the tooltip\n */\n openTooltip: () => void;\n /**\n * Function to close the tooltip\n */\n closeTooltip: (replacementFn?: () => void) => void;\n /**\n * Whether the tooltip is controlled\n */\n controlled: boolean;\n /**\n * Whether to disable flip fallback\n */\n disableFlipFallback: TooltipProps[\"disableFlipFallback\"];\n /**\n * Reference to the arrow element\n */\n arrowRef: RefObject<HTMLSpanElement>;\n /**\n * Key for resetting the tooltip\n */\n resetKey: number;\n};\n\n/**\n * React context for sharing tooltip state and functions between components\n */\nexport const TooltipContext = createContext<TooltipContextProps | null>(null);\n","import { useRef, useContext, useLayoutEffect, KeyboardEvent } from \"react\";\n\nimport { TooltipContext } from \"./TooltipContext\";\n\nexport type dataStateType = \"open\" | \"closed\";\n\n/**\n * Custom hook for managing tooltip context and interactions.\n *\n * Features:\n * - Manages tooltip trigger and content refs\n * - Handles mouse and keyboard interactions\n * - Provides ARIA attributes for accessibility\n * - Manages controlled and uncontrolled states\n * - Handles tooltip positioning and visibility\n * - Provides event handlers for trigger and content\n * - Manages arrow element positioning\n *\n * @returns Object containing tooltip context, refs, and event handlers\n */\nexport function useTooltipContext() {\n const context = useContext(TooltipContext);\n const invokerRef = useRef<HTMLButtonElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const arrowRef = useRef<HTMLSpanElement>(null);\n\n useLayoutEffect(() => {\n if (!invokerRef.current) return;\n context?.setInvoker?.(invokerRef.current);\n if (!context?.openState) return;\n context.openTooltip();\n }, [context, invokerRef]);\n\n useLayoutEffect(() => {\n if (!popoverRef.current) return;\n context?.setTooltip?.(popoverRef.current);\n context?.setRootNode?.(popoverRef.current.getRootNode() as HTMLElement);\n if (!arrowRef.current) return;\n context?.setArrowElement?.(arrowRef.current);\n }, [context, popoverRef]);\n\n const onMouseEnterHandler = () => {\n if (context?.controlled) return;\n context?.openTooltip();\n };\n const onMouseLeaveHandler = () => {\n if (context?.controlled) return;\n context?.closeTooltip();\n };\n\n const onFocusHandler = () => {\n if (context?.controlled) return;\n context?.openTooltip();\n };\n const onBlurHandler = () => {\n if (context?.controlled) return;\n context?.closeTooltip();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent) => {\n if (!context?.openState) return;\n if (e.code === \"Escape\" && !context.controlled) {\n context?.closeTooltip();\n return;\n }\n };\n\n if (!context || !invokerRef || !popoverRef) return;\n return {\n invoker: {\n ref: invokerRef,\n element: context.invoker,\n onMouseEnter: onMouseEnterHandler,\n onMouseLeave: onMouseLeaveHandler,\n onKeyDown: onKeyDownHandler,\n onFocus: onFocusHandler,\n onBlur: onBlurHandler,\n \"aria-haspopup\": true,\n \"aria-details\": context.tooltipId,\n \"data-state\": context.openState ? \"open\" : (\"closed\" as dataStateType),\n \"aria-describedby\": context.tooltipId,\n },\n tooltip: {\n ref: popoverRef,\n element: context.popover,\n id: context.tooltipId,\n setId: context.setTooltipId,\n show: context.openTooltip,\n close: context.closeTooltip,\n style: context.tooltipStyle,\n arrowRef: arrowRef,\n key: context.resetKey,\n },\n setOpen: context.setOpenState,\n open: context.openState,\n controlled: context.controlled,\n placement: context.placement,\n disableFlipFallback: context.disableFlipFallback,\n };\n}\n","import {\n ComponentPropsWithoutRef,\n forwardRef,\n MouseEvent,\n KeyboardEvent,\n useLayoutEffect,\n useRef,\n FocusEvent,\n useContext,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { getKeyboardFocusableElements } from \"../../internal/functions\";\nimport { supportsPopover } from \"../../internal/functions\";\nimport { ThemeProvider } from \"../../providers\";\nimport { ThemeProviderContext } from \"../../providers/ThemeProvider/internal/ThemeProviderContext\";\nimport { useMergeRefs } from \"../../hooks\";\n\nimport { TooltipLegacyContent } from \"./internal/TooltipLegacy/TooltipLegacyContent\";\nimport { useTooltipContext } from \"./internal/useTooltipContext\";\n\nimport styles from \"./Tooltip.module.scss\";\n\n/**\n * Props for the TooltipContent component\n * @extends Omit<ComponentPropsWithoutRef<\"div\">, \"popover\">\n */\nexport type TooltipContentProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"popover\"\n>;\n\nconst TooltipContentElement = forwardRef<HTMLDivElement, TooltipContentProps>(\n function TooltipContent(props, ref) {\n const {\n children,\n className,\n style,\n onMouseEnter,\n onMouseLeave,\n onKeyDown,\n onFocus,\n onBlur,\n id,\n ...rest\n } = props;\n const context = useTooltipContext();\n const { mode: currentMode } = useContext(ThemeProviderContext);\n const tooltipClassNames = cx(className, styles[\"content\"]);\n const childrenRef = useRef<HTMLDivElement>(null);\n const focusItems = useRef<Element[]>();\n const combinedStyles = {\n ...style,\n ...context?.tooltip.style,\n };\n\n // Determine the opposite mode for the tooltip\n const tooltipMode = currentMode === \"dark\" ? \"light\" : \"dark\";\n\n // TODO: getFocusableElement is not reliable\n // Need update!!!!! https://servicetitan.atlassian.net/browse/ANV-2605\n useLayoutEffect(() => {\n if (!childrenRef.current) return;\n const focusElements = getKeyboardFocusableElements(childrenRef.current);\n focusItems.current = focusElements;\n }, [childrenRef, children, context?.open]);\n\n useLayoutEffect(() => {\n if (id) {\n context?.tooltip.setId(id);\n }\n }, [id, context?.tooltip.setId, context?.tooltip]);\n\n const onMouseEnterHandler = (e: MouseEvent<HTMLDivElement>) => {\n onMouseEnter?.(e);\n if (context?.controlled) return;\n context?.tooltip.show();\n };\n const onMouseLeaveHandler = (e: MouseEvent<HTMLDivElement>) => {\n onMouseLeave?.(e);\n if (context?.controlled) return;\n context?.tooltip.close();\n };\n const onFocusHandler = (e: FocusEvent<HTMLDivElement>) => {\n onFocus?.(e);\n if (context?.controlled) return;\n context?.tooltip.show();\n };\n const onBlurHandler = (e: FocusEvent<HTMLDivElement>) => {\n onBlur?.(e);\n if (context?.controlled) return;\n context?.tooltip.close();\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (!context?.open) return;\n if (e.code === \"Escape\") {\n context?.tooltip.close();\n }\n };\n\n const hasSimpleContent = typeof children === \"string\";\n const role = hasSimpleContent ? \"tooltip\" : \"region\";\n const tooltipWrapperRef = useMergeRefs([context?.tooltip.ref, ref]);\n\n return (\n <div\n popover={context?.controlled ? \"manual\" : \"auto\"}\n data-anv=\"tooltip-content\"\n className={tooltipClassNames}\n ref={tooltipWrapperRef}\n style={combinedStyles}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n onBlur={onBlurHandler}\n onFocus={onFocusHandler}\n role={role}\n id={context?.tooltip.id}\n {...rest}\n >\n <div\n className={styles.scroller}\n role=\"presentation\"\n tabIndex={-1}\n ref={childrenRef}\n key={context?.tooltip.key}\n onKeyDown={onKeyDownHandler}\n >\n {hasSimpleContent ? (\n children\n ) : (\n <ThemeProvider mode={tooltipMode} data-anv=\"tooltip-content-theme\">\n {children}\n </ThemeProvider>\n )}\n </div>\n <span className={styles[\"arrow\"]} ref={context?.tooltip.arrowRef}>\n <svg aria-hidden=\"true\" width=\"14\" height=\"14\" viewBox=\"0 0 14 14\">\n <path stroke=\"none\" d=\"M0,0 H14 L7,7 Q7,7 7,7 Z\"></path>\n <clipPath id=\":r9:\">\n <rect x=\"0\" y=\"0\" width=\"14\" height=\"14\"></rect>\n </clipPath>\n </svg>\n </span>\n </div>\n );\n },\n);\n\n/**\n * TooltipContent component that displays the tooltip content.\n *\n * Features:\n * - Displays the tooltip content with proper positioning\n * - Includes an arrow pointing to the trigger element\n * - Supports keyboard navigation and escape key to close\n * - Handles mouse interactions for hover behavior\n * - Accessible with proper ARIA roles\n * - Supports all standard div element props\n * - Automatic focus management for keyboard navigation\n * - Real-time position updates\n * - Handles both string and complex content\n *\n * @example\n * <Tooltip.Content>\n * This tooltip provides helpful context\n * </Tooltip.Content>\n */\nexport const TooltipContent = forwardRef<HTMLDivElement, TooltipContentProps>(\n function TooltipContent(props, ref) {\n if (!supportsPopover())\n return <TooltipLegacyContent {...props} ref={ref} />;\n\n return <TooltipContentElement {...props} ref={ref} />;\n },\n);\n","import {\n useFloating,\n autoUpdate,\n offset,\n flip,\n shift,\n useHover,\n useFocus,\n useDismiss,\n useRole,\n useInteractions,\n limitShift,\n arrow,\n safePolygon,\n useDelayGroupContext,\n} from \"@floating-ui/react\";\nimport type { Placement } from \"@floating-ui/react\";\nimport { ReactNode, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTooltipLegacyGroup } from \"../../../../providers/AnvilProvider/AnvilProviderContext\";\n\nexport type TooltipLegacyProps = {\n children?: ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n placement?: Placement;\n offset?: number;\n onOpenChange?: (open: boolean) => void;\n /**\n * Disables the shift of floating element\n * @internal\n */\n disableShift?: boolean;\n /**\n * Disables the flip of floating element\n * @internal\n */\n disableFlip?: boolean;\n fallbackPlacements?: Placement[];\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n};\n\nexport function useTooltipLegacy({\n defaultOpen = false,\n offset: offsetProp = 5,\n open: controlledOpen,\n placement = \"top\",\n fallbackPlacements,\n disableFlip,\n disableShift,\n root,\n}: TooltipLegacyProps = {}) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = setUncontrolledOpen;\n\n const { disableDelayGroup } = useTooltipLegacyGroup();\n\n useEffect(() => {\n if (!defaultOpen && !controlledOpen) {\n disableDelayGroup(true);\n }\n\n disableDelayGroup(false);\n }, [defaultOpen, controlledOpen, disableDelayGroup]);\n\n const arrowRef = useRef(null);\n const { delay } = useDelayGroupContext();\n\n const data = useFloating({\n placement,\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(offsetProp),\n flip({\n crossAxis: !disableFlip ? placement.includes(\"-\") : false,\n mainAxis: !disableFlip,\n fallbackAxisSideDirection: \"start\",\n fallbackPlacements,\n padding: 5,\n }),\n shift({\n padding: 5,\n mainAxis: !disableShift,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !disableShift,\n }),\n }),\n arrow({ element: arrowRef, padding: 5 }),\n ],\n });\n const context = data.context;\n\n const hover = useHover(context, {\n move: false,\n handleClose: safePolygon(),\n delay: delay,\n });\n const focus = useFocus(context, {});\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: \"tooltip\" });\n\n const interactions = useInteractions([hover, focus, dismiss, role]);\n\n return useMemo(\n () => ({\n open,\n setOpen,\n arrowRef,\n root,\n ...interactions,\n ...data,\n }),\n [open, setOpen, interactions, data, root],\n );\n}\n","import { HTMLProps, ReactElement, cloneElement, forwardRef } from \"react\";\nimport { useTooltipLegacyContext } from \"./useTooltipLegacyContext\";\nimport styles from \"./TooltipLegacy.module.scss\";\nimport cx from \"classnames\";\nimport { useMergeRefs } from \"../../../../hooks\";\n\nexport type TooltipLegacyTriggerProps = HTMLProps<HTMLElement> & {\n children: ReactElement;\n};\nexport const TooltipLegacyTrigger = forwardRef<\n HTMLElement,\n TooltipLegacyTriggerProps\n>(function TooltipLegacyTrigger({ children, className, ...props }, propRef) {\n const context = useTooltipLegacyContext();\n const ref = useMergeRefs([context.refs.setReference, propRef]);\n const { \"aria-describedby\": ariaDescribedBy, ...restOfContextProps } =\n context.getReferenceProps(props);\n const child = cloneElement(children, {\n ref,\n \"aria-describedby\": ariaDescribedBy,\n });\n\n return (\n <span\n ref={ref}\n className={cx([styles[\"trigger-legacy\"]], className)}\n data-anv=\"tooltip-trigger\"\n // The user can style the trigger based on the state\n data-state={context.open ? \"open\" : \"closed\"}\n {...restOfContextProps}\n >\n {child}\n </span>\n );\n});\n","import { useContext, useMemo } from \"react\";\nimport { useTooltipLegacy, TooltipLegacyProps } from \"./useTooltipLegacy\";\nimport { TooltipLegacyContext } from \"./useTooltipLegacyContext\";\nimport { TooltipLegacyTrigger } from \"./TooltipLegacyTrigger\";\nimport { TooltipLegacyContent } from \"./TooltipLegacyContent\";\nimport { ThemeProviderContext } from \"../../../../providers/ThemeProvider/internal/ThemeProviderContext\";\n\nexport function TooltipLegacyElement({\n children,\n ...options\n}: TooltipLegacyProps) {\n // This can accept any props as options, e.g. `placement`,\n // or other positioning options.\n const tooltip = useTooltipLegacy(options);\n const { theme, mode } = useContext(ThemeProviderContext);\n\n const value = useMemo(\n () => ({ ...tooltip, theme, mode }),\n [mode, theme, tooltip],\n );\n return (\n <TooltipLegacyContext.Provider value={value}>\n {children}\n </TooltipLegacyContext.Provider>\n );\n}\n\nexport const TooltipLegacy = Object.assign(TooltipLegacyElement, {\n Trigger: TooltipLegacyTrigger,\n Content: TooltipLegacyContent,\n});\n","import { isValidElement } from \"react\";\n\nconst INTERACTIVE_ELEMENTS = [\"button\", \"a\", \"input\", \"textarea\", \"select\"];\n\nexport function isNonInteractiveElement(element: React.ReactElement) {\n if (!isValidElement(element)) return false;\n const type = element.type as string;\n return typeof type === \"string\" && !INTERACTIVE_ELEMENTS.includes(type);\n}\n","import {\n KeyboardEvent,\n FocusEvent,\n cloneElement,\n HTMLProps,\n forwardRef,\n ReactElement,\n isValidElement,\n useMemo,\n Fragment,\n useLayoutEffect,\n Ref,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { childrenToString, supportsPopover } from \"../../internal/functions\";\nimport { DataTrackingId } from \"../../types\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport { isNonInteractiveElement } from \"./internal/isNonInteractiveTrigger\";\nimport { TooltipLegacyTrigger } from \"./internal/TooltipLegacy/TooltipLegacyTrigger\";\nimport { useTooltipContext } from \"./internal/useTooltipContext\";\n\nimport styles from \"./Tooltip.module.scss\";\n\n/**\n * Props for the TooltipTrigger component\n * @extends HTMLProps<HTMLElement>\n */\nexport type TooltipTriggerProps = HTMLProps<HTMLElement> & {\n /**\n * The element that triggers the tooltip\n */\n children: ReactElement;\n} & DataTrackingId;\n\nconst TooltipTriggerElement = forwardRef<HTMLElement, TooltipTriggerProps>(\n function TooltipTrigger(props, propRef) {\n const { children, className, onKeyDown, onFocus, onBlur, ...rest } = props;\n const context = useTooltipContext();\n\n // verify if the child can accept a ref\n const childCanAcceptRef = useMemo(\n () =>\n isValidElement(children) &&\n children.type !== Fragment &&\n typeof children.type !== \"function\",\n [children],\n );\n\n const refs = useMergeRefs([\n (children as unknown as { ref: Ref<HTMLElement> })?.ref,\n context?.invoker.ref,\n ]);\n\n // either pass to cloned children, or a span if child doesn't accept a ref\n const childProps = useMemo(() => {\n const baseProps = {\n ref: refs,\n \"aria-haspopup\": context?.invoker[\"aria-haspopup\"],\n \"aria-details\": context?.invoker[\"aria-details\"],\n \"data-state\": context?.invoker[\"data-state\"],\n \"aria-describedby\": context?.invoker[\"aria-describedby\"],\n };\n\n if (isNonInteractiveElement(children)) {\n if (!(\"tabIndex\" in (children.props || {}))) {\n (baseProps as HTMLProps<HTMLElement>).tabIndex = 0;\n }\n if (!(\"role\" in (children.props || {}))) {\n (baseProps as HTMLProps<HTMLElement>).role = \"button\";\n }\n }\n\n return baseProps;\n }, [context?.invoker, refs, children]);\n\n const child = childCanAcceptRef ? (\n cloneElement(children as ReactElement, childProps)\n ) : (\n <span {...childProps}>{children}</span>\n );\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLElement>) => {\n onKeyDown?.(e);\n context?.invoker.onKeyDown(e);\n };\n\n const onFocusHandler = (e: FocusEvent<HTMLElement>) => {\n onFocus?.(e);\n context?.invoker.onFocus();\n };\n\n const onBlurHandler = (e: FocusEvent<HTMLElement>) => {\n onBlur?.(e);\n context?.invoker.onBlur();\n };\n\n useLayoutEffect(() => {\n const onMouseEnterHandler = () => {\n context?.invoker.onMouseEnter();\n };\n const onMouseLeaveHandler = () => {\n context?.invoker.onMouseLeave();\n };\n context?.invoker.ref.current?.addEventListener(\n \"mouseleave\",\n onMouseLeaveHandler,\n );\n context?.invoker.ref.current?.addEventListener(\n \"mouseenter\",\n onMouseEnterHandler,\n );\n return () => {\n context?.invoker.ref.current?.removeEventListener(\n \"mouseleave\",\n onMouseLeaveHandler,\n );\n context?.invoker.ref.current?.removeEventListener(\n \"mouseenter\",\n onMouseEnterHandler,\n );\n };\n }, [context?.invoker]);\n\n const data = {\n children: childrenToString(props.children),\n };\n\n const trackingId = useTrackingId({\n name: \"TooltipTrigger\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n if (!supportsPopover()) return <TooltipLegacyTrigger {...props} />;\n\n return (\n <span\n className={cx([styles[\"trigger\"]], className)}\n data-anv=\"tooltip-trigger\"\n data-tracking-id={trackingId}\n ref={propRef}\n onKeyDown={onKeyDownHandler}\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n role=\"presentation\"\n {...rest}\n >\n {child}\n </span>\n );\n },\n);\n\n/**\n * TooltipTrigger component that wraps the element that triggers the tooltip.\n *\n * Features:\n * - Wraps any React element to make it a tooltip trigger\n * - Handles mouse and keyboard interactions\n * - Provides proper ARIA attributes for accessibility\n * - Supports all standard HTML element props\n * - Automatically clones child elements with proper refs\n * - Handles both focusable and non-focusable children\n * - Manages mouse enter/leave events for hover behavior\n *\n * @example\n * <Tooltip.Trigger>\n * <Button>Click me</Button>\n * </Tooltip.Trigger>\n */\nexport const TooltipTrigger = forwardRef<HTMLElement, TooltipTriggerProps>(\n function TooltipTrigger(props, propRef) {\n if (!supportsPopover())\n return <TooltipLegacyTrigger {...props} ref={propRef} />;\n\n return <TooltipTriggerElement {...props} ref={propRef} />;\n },\n);\n","import {\n ComponentPropsWithoutRef,\n useEffect,\n useId,\n useRef,\n useState,\n useMemo,\n useLayoutEffect,\n useCallback,\n} from \"react\";\nimport {\n Placement,\n UseFloatingOptions,\n arrow,\n flip,\n limitShift,\n offset,\n shift,\n computePosition,\n autoUpdate,\n} from \"@floating-ui/react\";\n\nimport {\n safeHidePopover,\n safeShowPopover,\n supportsPopover,\n} from \"../../internal/functions\";\n\nimport { TooltipContent } from \"./TooltipContent\";\nimport { TooltipContext, TooltipContextProps } from \"./internal/TooltipContext\";\nimport { TooltipLegacy } from \"./internal/TooltipLegacy/TooltipLegacy\";\nimport { TooltipTrigger } from \"./TooltipTrigger\";\n\n/**\n * Props for the Tooltip component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type TooltipProps = {\n /**\n * The content to be wrapped by the tooltip\n */\n children?: ComponentPropsWithoutRef<\"div\">[\"children\"];\n /**\n * Unique identifier for the tooltip\n */\n id?: ComponentPropsWithoutRef<\"div\">[\"id\"];\n /**\n * Disables the shift of floating element\n * @internal\n */\n disableShift?: boolean;\n /**\n * Disables the flip of floating element\n * @internal\n */\n disableFlip?: boolean;\n /**\n * Disables the flip cross-axis fallback of floating element\n * @internal\n */\n disableFlipFallback?: boolean;\n /**\n * Changes interaction to use hover\n */\n openOnHover?: boolean;\n /**\n * Changes height and positioning for select/combobox\n * @default top\n */\n placement?: Placement;\n /**\n * Controls the open state of the tooltip\n */\n open?: boolean;\n /**\n * Default open state of the tooltip\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Callback when open state changes\n */\n onOpenChange?: UseFloatingOptions[\"onOpenChange\"];\n /**\n * Delay before showing the tooltip\n * @default 100\n */\n delay?: number;\n /**\n * Offset distance from the trigger element\n * @default 5\n */\n offset?: number;\n /**\n * Fallback placement options\n */\n fallbackPlacements?: Placement[];\n /**\n * Root element for the tooltip\n * @deprecated to be removed on next major\n * This is not needed anymore as the Popover API is used.\n * Popover API uses top-layer for its popover content.\n */\n root?: HTMLElement | React.MutableRefObject<HTMLElement | null> | null;\n};\n\nconst TooltipElement = (props: TooltipProps) => {\n const {\n children,\n delay = 100,\n placement = \"top\",\n open,\n defaultOpen = false,\n disableShift,\n disableFlip,\n disableFlipFallback,\n id,\n offset: offsetProp = 5,\n fallbackPlacements,\n } = props;\n const uid = useId();\n const [invoker, setInvoker] =\n useState<TooltipContextProps[\"invoker\"]>(undefined);\n const [tooltip, setTooltip] =\n useState<TooltipContextProps[\"invoker\"]>(undefined);\n const [rootNode, setRootNode] = useState<TooltipContextProps[\"rootNode\"]>();\n const [arrowElement, setArrowElement] =\n useState<TooltipContextProps[\"arrowElement\"]>(undefined);\n const [openState, setOpenState] = useState<TooltipContextProps[\"openState\"]>(\n open ?? defaultOpen,\n );\n const arrowRef = useRef<HTMLSpanElement>(null);\n const [tooltipId, setTooltipId] = useState<TooltipContextProps[\"tooltipId\"]>(\n id ?? `tooltip-${uid.replace(/:/g, \"\")}`,\n );\n\n // TODO: Find a way to test these properly!\n // Stryker disable all : Currently relying on Chromatic test for all visuals\n /* istanbul ignore next */\n const updatePosition = useCallback(() => {\n if (!invoker || !tooltip) return;\n // disable position update when closing\n if (!openState) return;\n computePosition(invoker, tooltip, {\n placement: placement,\n middleware: [\n offset(offsetProp),\n flip({\n mainAxis: !disableFlip,\n crossAxis: false,\n fallbackAxisSideDirection: disableFlipFallback ? \"none\" : \"end\",\n fallbackPlacements,\n padding: 5,\n }),\n shift({\n padding: 5,\n mainAxis: !disableShift,\n crossAxis: false,\n limiter: limitShift({\n mainAxis: !disableShift,\n }),\n }),\n arrow({\n element: arrowElement ? arrowElement : null,\n padding: 5,\n }),\n ],\n }).then(({ x, y, placement, middlewareData }) => {\n const side = placement.split(\"-\")[0];\n\n const staticSide = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\",\n }[side];\n\n const arrowDeg = () => {\n if (staticSide === \"top\") return 180;\n if (staticSide === \"bottom\") return 0;\n if (staticSide === \"left\") return 90;\n return 270;\n };\n\n Object.assign(tooltip.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n if (middlewareData.arrow && arrowElement) {\n const { x, y } = middlewareData.arrow;\n Object.assign(arrowElement.style, {\n left: x != null ? `${x}px` : \"\",\n top: y != null ? `${y}px` : \"\",\n right: \"\",\n bottom: \"\",\n [staticSide as string]: `${-arrowElement.offsetWidth + 2}px`,\n transform: `rotate(${arrowDeg()}deg)`,\n });\n }\n });\n }, [\n invoker,\n tooltip,\n openState,\n placement,\n offsetProp,\n disableFlip,\n disableFlipFallback,\n fallbackPlacements,\n disableShift,\n arrowElement,\n ]);\n\n const resetKey = useRef(0);\n // Effect to add autoUpdate to eventListener\n // while the popover is opened\n useLayoutEffect(() => {\n if (!tooltip || !invoker) return;\n if (!openState) {\n resetKey.current += 1;\n return;\n }\n\n let requestID: number | null = null;\n const cleanup = autoUpdate(invoker, tooltip, () => {\n requestID = requestAnimationFrame(updatePosition);\n });\n\n return () => {\n if (requestID) cancelAnimationFrame(requestID);\n cleanup();\n };\n }, [invoker, tooltip, updatePosition, openState]);\n // Stryker restore all\n\n const isControlled = typeof open !== \"undefined\";\n const openTimeoutRef = useRef<number | NodeJS.Timeout | null>(null);\n const closeTimeoutRef = useRef<number | NodeJS.Timeout | null>(null);\n\n // Main function to open tooltip\n const openTooltip = useCallback(() => {\n clearTimeout(closeTimeoutRef.current as number | undefined);\n clearTimeout(openTimeoutRef.current as number | undefined);\n if (!tooltip || !rootNode?.querySelector(`#${tooltipId}`)) return;\n openTimeoutRef.current = setTimeout(() => {\n safeShowPopover(tooltip);\n setOpenState(true);\n }, delay);\n }, [tooltip, rootNode, tooltipId, delay]);\n\n // Main function to close tooltip\n const closeTooltip = useCallback(\n (fn?: () => void) => {\n clearTimeout(openTimeoutRef.current as number | undefined);\n clearTimeout(closeTimeoutRef.current as number | undefined);\n if (!tooltip || !openState) return;\n closeTimeoutRef.current = setTimeout(() => {\n fn?.();\n setOpenState(false);\n safeHidePopover(tooltip);\n }, 100);\n },\n [openState, tooltip],\n );\n\n useEffect(() => {\n return () => {\n clearTimeout(closeTimeoutRef.current as number | undefined);\n clearTimeout(openTimeoutRef.current as number | undefined);\n };\n }, []);\n\n // Updating openness for controlled\n const initialRender = useRef(true);\n useEffect(() => {\n if (initialRender.current === true) {\n if (openState) openTooltip();\n initialRender.current = false;\n return;\n }\n }, [openTooltip, openState, isControlled]);\n\n // Updating openness for controlled\n useEffect(() => {\n if (!isControlled) return;\n if (open) {\n openTooltip();\n } else {\n closeTooltip();\n }\n }, [closeTooltip, isControlled, open, openTooltip]);\n\n const value = useMemo(() => {\n updatePosition();\n return {\n tooltipId,\n setTooltipId,\n invoker,\n setInvoker,\n tooltip,\n setTooltip,\n arrowElement,\n setArrowElement,\n openTooltip,\n closeTooltip,\n placement,\n openState,\n setOpenState,\n disableFlipFallback,\n controlled: isControlled,\n arrowRef,\n resetKey: resetKey.current,\n rootNode,\n setRootNode,\n };\n }, [\n updatePosition,\n tooltipId,\n setTooltipId,\n invoker,\n tooltip,\n arrowElement,\n openTooltip,\n closeTooltip,\n placement,\n openState,\n disableFlipFallback,\n isControlled,\n rootNode,\n ]);\n\n if (!supportsPopover()) return <TooltipLegacy {...props} />;\n\n return (\n <TooltipContext.Provider value={value}>{children}</TooltipContext.Provider>\n );\n};\n\n/**\n * Tooltip component for displaying contextual information on hover or focus.\n *\n * Features:\n * - Displays contextual information when hovering over or focusing on elements\n * - Supports multiple placement options (top, bottom, left, right)\n * - Automatic positioning with fallback placements\n * - Accessible with proper ARIA roles and keyboard navigation\n * - Supports controlled and uncontrolled open states\n * - Configurable delay and offset settings\n * - Uses modern Popover API with fallback to legacy implementation\n * - Automatic arrow positioning and rotation\n * - Real-time position updates during scroll and resize\n *\n * @example\n * <Tooltip placement=\"top\" delay={200}>\n * <Tooltip.Trigger>\n * <Button>Hover me</Button>\n * </Tooltip.Trigger>\n * <Tooltip.Content>This is helpful information</Tooltip.Content>\n * </Tooltip>\n */\nexport const Tooltip = Object.assign(TooltipElement, {\n /**\n * TooltipTrigger component that wraps the element that triggers the tooltip.\n *\n * Features:\n * - Wraps any React element to make it a tooltip trigger\n * - Handles mouse and keyboard interactions\n * - Provides proper ARIA attributes for accessibility\n * - Supports all standard HTML element props\n * - Automatically clones child elements with proper refs\n * - Handles both focusable and non-focusable children\n * - Manages mouse enter/leave events for hover behavior\n *\n * @example\n * <Tooltip.Trigger>\n * <Button>Click me</Button>\n * </Tooltip.Trigger>\n */\n Trigger: TooltipTrigger,\n /**\n * TooltipContent component that displays the tooltip content.\n *\n * Features:\n * - Displays the tooltip content with proper positioning\n * - Includes an arrow pointing to the trigger element\n * - Supports keyboard navigation and escape key to close\n * - Handles mouse interactions for hover behavior\n * - Accessible with proper ARIA roles\n * - Supports all standard div element props\n * - Automatic focus management for keyboard navigation\n * - Real-time position updates\n * - Handles both string and complex content\n *\n * @example\n * <Tooltip.Content>\n * This tooltip provides helpful context\n * </Tooltip.Content>\n */\n Content: TooltipContent,\n});\n"],"names":["TooltipLegacyContent","styles","TooltipContent","arrow","TooltipLegacyTrigger","TooltipTrigger","placement","x","y"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useInitialFocus-Cl_Txu7W.js","sources":["../src/internal/hooks/useDialogScrollLock/useDialogScrollLock.ts","../src/internal/hooks/useDialogTransitionStates/useDialogTransitionStates.ts","../src/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.ts","../src/components/Dialog/internal/useInitialFocus.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nconst ATTRIBUTE_NAME_LIST = \"data-anv-dialogs\";\nconst ATTRIBUTE_NAME_BOOL = \"data-anv-dialogs-open\";\n\n/**\n * Props for the useDialogScrollLock hook\n * @property {boolean} open - Whether the dialog is open\n * @property {string} id - Unique identifier for the dialog\n * @property {boolean} [enableScrollChaining] - Whether to enable scroll chaining\n * @property {React.RefObject<HTMLElement>} elementRef - Reference to the dialog element\n */\nexport interface UseDialogScrollLockProps {\n /**\n * Whether the dialog is open\n */\n open: boolean;\n /**\n * Unique identifier for the dialog\n */\n id: string;\n /**\n * Whether to enable scroll chaining\n */\n enableScrollChaining?: boolean;\n /**\n * Reference to the dialog element\n */\n elementRef: React.RefObject<HTMLElement>;\n}\n\n/**\n * Custom hook for managing dialog scroll lock in shadow DOM environments.\n *\n * Features:\n * - Manages scroll lock state for dialogs in shadow DOM\n * - Tracks multiple open dialogs with unique IDs\n * - Prevents scroll chaining when dialogs are open\n * - Automatically cleans up scroll lock on unmount\n * - Supports enabling/disabling scroll chaining\n * - Uses data attributes to track dialog state\n *\n * @param props - Configuration object containing dialog state and element reference\n * @returns void\n */\nexport const useDialogScrollLock = ({\n open,\n id,\n enableScrollChaining,\n elementRef,\n}: UseDialogScrollLockProps) => {\n useEffect(() => {\n if (enableScrollChaining) return () => {};\n const root = elementRef.current?.getRootNode();\n if (!(root instanceof ShadowRoot)) return () => {};\n\n const updateDialogAttributes = (shouldAdd: boolean) => {\n const currentDialogs =\n root.host\n .getAttribute(ATTRIBUTE_NAME_LIST)\n ?.split(\" \")\n .filter(Boolean) ?? [];\n\n const newDialogs = new Set(currentDialogs);\n if (shouldAdd) {\n newDialogs.add(id);\n } else {\n newDialogs.delete(id);\n }\n\n const dialogList = Array.from(newDialogs);\n root.host.setAttribute(ATTRIBUTE_NAME_LIST, dialogList.join(\" \"));\n\n if (dialogList.length > 0) {\n root.host.setAttribute(ATTRIBUTE_NAME_BOOL, \"true\");\n } else {\n root.host.removeAttribute(ATTRIBUTE_NAME_BOOL);\n }\n };\n\n updateDialogAttributes(open);\n\n return () => {\n updateDialogAttributes(false);\n };\n }, [open, id, enableScrollChaining, elementRef]);\n};\n","import { RefObject } from \"react\";\nimport {\n useOpenCloseTransitionStates,\n type OpenCloseTransitionStateEffects,\n} from \"../useOpenCloseTransitionStates\";\n\n/**\n * Effects configuration for dialog transition states\n * @property {() => void} [onOpenAnimationStart] - Callback when opening animation starts\n * @property {() => void} [onCloseAnimationStart] - Callback when closing animation starts\n * @property {() => void} [onOpenAnimationComplete] - Callback when opening animation completes\n * @property {() => void} [onCloseAnimationComplete] - Callback when closing animation completes\n */\n\n/**\n * Custom hook for managing dialog transition states and animations.\n *\n * Features:\n * - Manages dialog open/close transition states\n * - Handles animation timing based on CSS animation duration\n * - Provides callbacks for animation lifecycle events\n * - Supports controlled dialog state management\n * - Automatically handles showModal() and close() calls\n * - Provides utility flags for open/closed states\n *\n * @param ref - The ref to the dialog element\n * @param openProp - The open prop controlling dialog visibility\n * @param options - Additional, optional options including callbacks for animation start, complete, and initialization\n * @returns Object containing dialog state, control functions, and utility flags\n */\n\n/**\n * Effects configuration for dialog transition states\n * @param openProp - The open prop controlling dialog visibility\n * @param options - The effects configuration\n * @returns The dialog transition state\n */\nexport const useDialogTransitionStates = (\n ref: RefObject<HTMLDialogElement>,\n openProp: boolean | undefined,\n options: OpenCloseTransitionStateEffects = {},\n) => {\n const { onOpenAnimationStart, onCloseAnimationComplete } = options;\n return useOpenCloseTransitionStates(openProp, {\n ...options,\n onOpenAnimationStart: () => {\n if (!ref.current) return;\n ref.current.showModal();\n onOpenAnimationStart?.();\n },\n onCloseAnimationComplete: () => {\n if (!ref.current) return;\n ref.current.close();\n onCloseAnimationComplete?.();\n },\n durationMs: () => {\n if (!ref.current || !window) return 0;\n const duration = window.getComputedStyle(ref.current).animationDuration;\n return parseFloat(duration) * 1000;\n },\n });\n};\n","import { RefObject, useEffect, useRef, useState } from \"react\";\nimport { FocusableElement, tabbable } from \"tabbable\";\n\n/**\n * Options for the useKeyboardFocusables hook\n */\ntype OptionProps =\n | {\n /**\n * Disable mutation observer\n */\n observeChange: false;\n }\n | {\n /**\n * Enable mutation observer with optional configuration\n */\n observeChange: true;\n /**\n * Observe attribute changes\n */\n attributes?: boolean;\n /**\n * Observe text content changes\n */\n characterData?: boolean;\n /**\n * Observe child element changes\n */\n childList?: boolean;\n /**\n * Observe descendant changes\n */\n subtree?: boolean;\n };\n\n/**\n * Custom hook for tracking keyboard focusable elements within a container.\n *\n * Features:\n * - Tracks all keyboard focusable elements within a target container\n * - Supports both ref objects and direct element references\n * - Optional mutation observer for real-time updates\n * - Debounced updates to prevent excessive re-renders\n * - Configurable mutation observer options\n * - Manual update function for immediate refresh\n * - Uses tabbable library for accurate focusable detection\n * - Automatically cleans up mutation observer\n *\n * @param element - Target element or ref to monitor for focusable elements\n * @param options - Configuration options for mutation observer behavior\n * @returns Object containing current focusable elements and update function\n */\nexport const useKeyboardFocusables = (\n element: RefObject<HTMLElement> | HTMLElement | undefined,\n options: OptionProps = {\n observeChange: true,\n attributes: true,\n characterData: true,\n childList: true,\n subtree: true,\n },\n) => {\n const [focusables, setFocusables] = useState<FocusableElement[] | null>(null);\n const observerRef = useRef<MutationObserver>();\n\n useEffect(() => {\n const target = element instanceof HTMLElement ? element : element?.current;\n if (!target) return;\n if (!options.observeChange && !focusables) {\n setFocusables(tabbable(target as Element));\n return;\n }\n\n const mutationCallback = () => {\n const targetArr = tabbable(target as Element);\n if (targetArr.length === 0) return;\n setFocusables(targetArr);\n };\n\n const observer = new MutationObserver(mutationCallback);\n observerRef.current = observer;\n observer.observe(target, {\n childList: true, // Observe changes to child elements\n subtree: true, // Observe changes to descendants of the target\n attributes: true, // Observe changes to attributes\n characterData: true, // Observe changes to text content\n });\n return () => {\n observer.disconnect();\n };\n }, [element, options, focusables]);\n\n return { focusables };\n};\n","import { RefObject, useEffect } from \"react\";\nimport { FocusableElement, tabbable } from \"tabbable\";\n\nexport type InitialFocusOptions = {\n /**\n * Function to pick the initial focus target, given an array of focusable elements\n */\n computeFocus?: (focusables: FocusableElement[]) => FocusableElement;\n};\n\n/**\n * Hook to set initial focus for a dialog (e.g. Dialog, Drawer) when it is opened.\n * @param dialogRef - Ref to the dialog element\n * @param options - Options for the hook\n * @param options.computeFocus - Function to pick the initial focus target, given an array of focusable elements\n */\nexport const useInitialFocus = (\n /**\n * Ref to the dialog element\n */\n dialogRef: RefObject<HTMLDialogElement>,\n { computeFocus }: InitialFocusOptions,\n) => {\n useEffect(() => {\n if (!dialogRef.current) {\n return () => {};\n }\n // Create a MutationObserver to check if dialogRef.current is open or closed\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.attributeName === \"open\" &&\n mutation.target === dialogRef.current &&\n mutation.target instanceof HTMLDialogElement &&\n mutation.target.open === true\n ) {\n const focusables = tabbable(dialogRef.current);\n const target = computeFocus?.(focusables) || focusables[0];\n target?.focus();\n }\n });\n });\n observer.observe(dialogRef.current, {\n attributes: true,\n attributeFilter: [\"open\"],\n });\n return () => {\n observer.disconnect();\n };\n }, [dialogRef, computeFocus]);\n};\n"],"names":[],"mappings":"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"}
|
|
File without changes
|