@servicetitan/anvil2 1.49.5 → 1.49.7
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 +36 -0
- package/dist/{Alert-aGBkujwE.js → Alert-DNhUyWVm.js} +3 -2
- package/dist/{Alert-aGBkujwE.js.map → Alert-DNhUyWVm.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-BPwFNhYe.js → Announcement-BBq8zIQ3.js} +3 -2
- package/dist/{Announcement-BPwFNhYe.js.map → Announcement-BBq8zIQ3.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{Breadcrumbs-DjR-2OEH.js → Breadcrumbs-CfJJlIIa.js} +2 -2
- package/dist/{Breadcrumbs-DjR-2OEH.js.map → Breadcrumbs-CfJJlIIa.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-CLSm88D2.js → Calendar-C9oxHTGG.js} +2 -2
- package/dist/{Calendar-CLSm88D2.js.map → Calendar-C9oxHTGG.js.map} +1 -1
- package/dist/{Calendar-BP6r1sP9.js → Calendar-CAYitkfM.js} +2 -2
- package/dist/{Calendar-BP6r1sP9.js.map → Calendar-CAYitkfM.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-DwuDx-t4.js → Checkbox-DbBeuNdW.js} +3 -3
- package/dist/{Checkbox-DwuDx-t4.js.map → Checkbox-DbBeuNdW.js.map} +1 -1
- package/dist/{Checkbox-PkAk1Saq.js → Checkbox-zAKOGEBl.js} +2 -2
- package/dist/{Checkbox-PkAk1Saq.js.map → Checkbox-zAKOGEBl.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- 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-DNCq-jkq.js → Combobox-hxGMMb8x.js} +6 -6
- package/dist/{Combobox-DNCq-jkq.js.map → Combobox-hxGMMb8x.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-BIhmpU0v.js → DataTable-CUFa7cQK.js} +6 -6
- package/dist/{DataTable-BIhmpU0v.js.map → DataTable-CUFa7cQK.js.map} +1 -1
- package/dist/{DateField-DsGHTMZ1.js → DateField-BT9jJRp5.js} +5 -5
- package/dist/{DateField-DsGHTMZ1.js.map → DateField-BT9jJRp5.js.map} +1 -1
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-Ct979nxF.js → DateFieldRange-ZAic_9mt.js} +5 -5
- package/dist/{DateFieldRange-Ct979nxF.js.map → DateFieldRange-ZAic_9mt.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-frMHnRSg.js → DateFieldSingle-DAtR8ImE.js} +5 -5
- package/dist/{DateFieldSingle-frMHnRSg.js.map → DateFieldSingle-DAtR8ImE.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-po9ieLod.js → DateFieldYearless-DXO_MPwA.js} +4 -4
- package/dist/{DateFieldYearless-po9ieLod.js.map → DateFieldYearless-DXO_MPwA.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-Dy8a8O1n.js → DateFieldYearlessRange-Cg6bbPIi.js} +4 -4
- package/dist/{DateFieldYearlessRange-Dy8a8O1n.js.map → DateFieldYearlessRange-Cg6bbPIi.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-2_k3T4n4.js → DaysOfTheWeek-9B9d7-hF.js} +4 -4
- package/dist/{DaysOfTheWeek-2_k3T4n4.js.map → DaysOfTheWeek-9B9d7-hF.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-BT7a5KNT.js → Dialog-UzG6-s9H.js} +13 -13
- package/dist/{Dialog-BT7a5KNT.js.map → Dialog-UzG6-s9H.js.map} +1 -1
- package/dist/Dialog.css +32 -32
- package/dist/Dialog.js +1 -1
- package/dist/{Drawer-scQFylHI.js → Drawer-BHK18NYm.js} +12 -12
- package/dist/{Drawer-scQFylHI.js.map → Drawer-BHK18NYm.js.map} +1 -1
- package/dist/Drawer.css +31 -31
- package/dist/Drawer.js +1 -1
- package/dist/{FieldLabel-BIStrC2x.js → FieldLabel-jqlQ1Ldh.js} +2 -2
- package/dist/{FieldLabel-BIStrC2x.js.map → FieldLabel-jqlQ1Ldh.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FieldMessage-DWONT3dr.js → FieldMessage-DdCUxZz-.js} +3 -3
- package/dist/FieldMessage-DdCUxZz-.js.map +1 -0
- package/dist/FieldMessage.js +1 -1
- package/dist/{Helper-DjWotFtO.js → Helper-DzVUQgUJ.js} +2 -2
- package/dist/{Helper-DjWotFtO.js.map → Helper-DzVUQgUJ.js.map} +1 -1
- package/dist/{InputMask-A5LDdyxL.js → InputMask-CJC9xZHG.js} +2 -2
- package/dist/{InputMask-A5LDdyxL.js.map → InputMask-CJC9xZHG.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{Link-DuYh7Xl2.js → Link-CGXEFA9w.js} +13 -4
- package/dist/Link-CGXEFA9w.js.map +1 -0
- package/dist/Link.css +34 -20
- package/dist/Link.js +1 -1
- package/dist/Link.module-ByPQQ0zy.js +14 -0
- package/dist/Link.module-ByPQQ0zy.js.map +1 -0
- package/dist/{LinkButton-pIUNATNE.js → LinkButton-BBCO-4em.js} +5 -2
- package/dist/LinkButton-BBCO-4em.js.map +1 -0
- package/dist/LinkButton.js +1 -1
- package/dist/{ListView-5cRssdYI.js → ListView-D8mfK8Lu.js} +2 -2
- package/dist/{ListView-5cRssdYI.js.map → ListView-D8mfK8Lu.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{NumberField-BUFymKV3.js → NumberField-CjWLnD9X.js} +3 -3
- package/dist/{NumberField-BUFymKV3.js.map → NumberField-CjWLnD9X.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-Dgpz2WD7.js → Page-ClI3IOc7.js} +6 -6
- package/dist/{Page-Dgpz2WD7.js.map → Page-ClI3IOc7.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Popover-CcMDyKTj.js → Popover-CCXrzBul.js} +27 -6
- package/dist/Popover-CCXrzBul.js.map +1 -0
- package/dist/Popover.css +40 -9
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-R_UjSR4o.js → ProgressBar-BpKEr6cO.js} +5 -4
- package/dist/{ProgressBar-R_UjSR4o.js.map → ProgressBar-BpKEr6cO.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-CLR1m8N9.js → Radio-jj0-1dOg.js} +2 -2
- package/dist/{Radio-CLR1m8N9.js.map → Radio-jj0-1dOg.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-m46C69uO.js → RadioGroup-Bxy415eu.js} +3 -3
- package/dist/{RadioGroup-m46C69uO.js.map → RadioGroup-Bxy415eu.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-DViLgRGh.js → SelectCard-CjbsPKZ4.js} +3 -3
- package/dist/{SelectCard-DViLgRGh.js.map → SelectCard-CjbsPKZ4.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldSync-DF05HvD4.js → SelectFieldSync-BOzavAtv.js} +132 -19
- package/dist/SelectFieldSync-BOzavAtv.js.map +1 -0
- package/dist/{SelectTrigger-BSzOoRsu.js → SelectTrigger-DfVnPiNf.js} +2 -2
- package/dist/{SelectTrigger-BSzOoRsu.js.map → SelectTrigger-DfVnPiNf.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-CfmRIFRs.js → SelectTriggerBase-D8scKtBr.js} +5 -5
- package/dist/{SelectTriggerBase-CfmRIFRs.js.map → SelectTriggerBase-D8scKtBr.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/{Switch-BXDPs2mD.js → Switch-CGpg2ake.js} +2 -2
- package/dist/{Switch-BXDPs2mD.js.map → Switch-CGpg2ake.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{TextField-B08U4_rt.js → TextField-DNuEXKyN.js} +3 -3
- package/dist/{TextField-B08U4_rt.js.map → TextField-DNuEXKyN.js.map} +1 -1
- package/dist/{TextField-D29fTRGR.js → TextField-Qv6OqiKQ.js} +2 -2
- package/dist/{TextField-D29fTRGR.js.map → TextField-Qv6OqiKQ.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-Dl4w2-t0.js → Textarea-DdLD4imO.js} +3 -3
- package/dist/{Textarea-Dl4w2-t0.js.map → Textarea-DdLD4imO.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-Dpi3fMsn.js → TimeField-C39hYluo.js} +3 -3
- package/dist/{TimeField-Dpi3fMsn.js.map → TimeField-C39hYluo.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-CRNOANCk.js → Toaster-DJ4tNy-0.js} +2 -2
- package/dist/{Toaster-CRNOANCk.js.map → Toaster-DJ4tNy-0.js.map} +1 -1
- package/dist/{Toaster-B0ogInIl.js → Toaster-DyDVYq4x.js} +148 -53
- package/dist/Toaster-DyDVYq4x.js.map +1 -0
- package/dist/Toaster.css +95 -71
- package/dist/{Toolbar-CPldWSNJ.js → Toolbar-BxYOXLmv.js} +13 -13
- package/dist/{Toolbar-CPldWSNJ.js.map → Toolbar-BxYOXLmv.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-BbfLb3pI.js → Tooltip-CBy7srE2.js} +2 -2
- package/dist/Tooltip-CBy7srE2.js.map +1 -0
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-LiMI-Oer.js → YearlessDateInputWithPicker-DMGx3gE2.js} +2 -2
- package/dist/{YearlessDateInputWithPicker-LiMI-Oer.js.map → YearlessDateInputWithPicker-DMGx3gE2.js.map} +1 -1
- package/dist/beta/components/SelectField/internal/SelectFieldInput.d.ts +14 -3
- package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +12 -1
- package/dist/beta/components/SelectField/internal/useCombo.d.ts +2 -1
- package/dist/beta/components/SelectField/types.d.ts +43 -0
- package/dist/beta.js +5 -5
- package/dist/check_circle-CM0ukqXv.js +6 -0
- package/dist/check_circle-CM0ukqXv.js.map +1 -0
- 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/Popover/internal/PopoverContext.d.ts +1 -0
- package/dist/components/Popover/internal/usePopoverContext.d.ts +1 -0
- 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/components/Toast/internal/constants.d.ts +16 -0
- package/dist/error-DR_wWdYY.js +6 -0
- package/dist/error-DR_wWdYY.js.map +1 -0
- package/dist/index.js +40 -40
- package/dist/{utils-CeT0omsG.js → utils-Bkbn9cyk.js} +2 -2
- package/dist/{utils-CeT0omsG.js.map → utils-Bkbn9cyk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/Chip-X2EwdZ97.js.map +0 -1
- package/dist/FieldMessage-DWONT3dr.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/Popover-CcMDyKTj.js.map +0 -1
- package/dist/SearchField-DrgNbG3I.js.map +0 -1
- package/dist/SelectFieldSync-DF05HvD4.js.map +0 -1
- package/dist/SelectTriggerBase.module-DUhQNr6j.js +0 -33
- package/dist/SelectTriggerBase.module-DUhQNr6j.js.map +0 -1
- package/dist/Toaster-B0ogInIl.js.map +0 -1
- package/dist/Tooltip-BbfLb3pI.js.map +0 -1
- package/dist/check_circle-Dja-C2lM.js +0 -8
- package/dist/check_circle-Dja-C2lM.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
|
-
import { l as linkStyles } from './Link.module-
|
|
4
|
+
import { l as linkStyles } from './Link.module-ByPQQ0zy.js';
|
|
5
5
|
import { I as Icon } from './Icon-BSuTVNaa.js';
|
|
6
6
|
import { c as cx } from './index-tZvMCc77.js';
|
|
7
7
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-BlIWftBb.js';
|
|
@@ -31,9 +31,16 @@ LinkHeadless.displayName = "LinkHeadless";
|
|
|
31
31
|
|
|
32
32
|
const useLinkStyles = (props) => {
|
|
33
33
|
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
34
|
-
const {
|
|
34
|
+
const {
|
|
35
|
+
className,
|
|
36
|
+
appearance = "primary",
|
|
37
|
+
quiet,
|
|
38
|
+
ghost,
|
|
39
|
+
style
|
|
40
|
+
} = componentProps;
|
|
35
41
|
const linkClassNames = cx([linkStyles["link"]], className, {
|
|
36
42
|
[linkStyles["quiet"]]: quiet,
|
|
43
|
+
[linkStyles["ghost"]]: ghost,
|
|
37
44
|
[linkStyles["secondary"]]: appearance === "secondary"
|
|
38
45
|
});
|
|
39
46
|
const styleCombined = Object.assign({}, style, layoutStyles);
|
|
@@ -41,11 +48,12 @@ const useLinkStyles = (props) => {
|
|
|
41
48
|
};
|
|
42
49
|
|
|
43
50
|
const Link$1 = forwardRef((props, ref) => {
|
|
44
|
-
const { appearance, className, quiet, style, children, ...rest } = props;
|
|
51
|
+
const { appearance, className, quiet, ghost, style, children, ...rest } = props;
|
|
45
52
|
const { linkClassNames, styleCombined } = useLinkStyles({
|
|
46
53
|
appearance,
|
|
47
54
|
className,
|
|
48
55
|
quiet,
|
|
56
|
+
ghost,
|
|
49
57
|
style
|
|
50
58
|
});
|
|
51
59
|
return /* @__PURE__ */ jsx(
|
|
@@ -68,6 +76,7 @@ const Link = forwardRef(
|
|
|
68
76
|
const data = {
|
|
69
77
|
appearance: props.appearance,
|
|
70
78
|
quiet: props.quiet,
|
|
79
|
+
ghost: props.ghost,
|
|
71
80
|
children: childrenToString(children)
|
|
72
81
|
};
|
|
73
82
|
const handleClick = (...args) => {
|
|
@@ -100,4 +109,4 @@ const Link = forwardRef(
|
|
|
100
109
|
Link.displayName = Link$1.displayName;
|
|
101
110
|
|
|
102
111
|
export { Link as L, useLinkStyles as u };
|
|
103
|
-
//# sourceMappingURL=Link-
|
|
112
|
+
//# sourceMappingURL=Link-CGXEFA9w.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link-CGXEFA9w.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\" | \"ghost\" | \"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 {\n className,\n appearance = \"primary\",\n quiet,\n ghost,\n style,\n } = componentProps;\n\n const linkClassNames = cx([styles[\"link\"]], className, {\n [styles[\"quiet\"]]: quiet,\n [styles[\"ghost\"]]: ghost,\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 /**\n * Whether the link should have a quieter, less prominent appearance\n * @deprecated to be removed on next major - use ghost instead\n */\n quiet?: boolean;\n /**\n * Whether the link should have a quieter, less prominent appearance\n * @remarks Only available when appearance is \"primary\".\n */\n ghost?: boolean;\n }\n | {\n /**\n * The visual appearance of the LinkButton. Secondary appearance cannot be quiet.\n */\n appearance: \"secondary\";\n /**\n * Whether the link should have a quieter, less prominent appearance\n * @deprecated to be removed on next major - use ghost instead\n */\n quiet?: false;\n /**\n * Whether the LinkButton should have a quieter, less prominent appearance.\n * @remarks Must be false when appearance is \"secondary\".\n */\n ghost?: 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, ghost, style, children, ...rest } =\n props;\n const { linkClassNames, styleCombined } = useLinkStyles({\n appearance,\n className,\n quiet,\n ghost,\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 ghost: props.ghost,\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":"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"}
|
package/dist/Link.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
@layer starter, reset, base, state, application;
|
|
2
2
|
@layer reset {
|
|
3
|
-
.
|
|
3
|
+
._link_p1bke_2 {
|
|
4
4
|
all: unset;
|
|
5
5
|
font-family: var(--font-family-base, "Nunito Sans", sans-serif);
|
|
6
6
|
font-size: 100%;
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
@layer base {
|
|
18
|
-
a.
|
|
19
|
-
.
|
|
18
|
+
a._link_p1bke_2,
|
|
19
|
+
._link_p1bke_2 {
|
|
20
20
|
cursor: pointer;
|
|
21
21
|
align-items: center;
|
|
22
22
|
border-radius: 0.1875rem;
|
|
@@ -25,37 +25,51 @@
|
|
|
25
25
|
outline-offset: 0.125rem;
|
|
26
26
|
font-size: inherit;
|
|
27
27
|
}
|
|
28
|
-
._open-in-
|
|
28
|
+
._open-in-new_p1bke_27 {
|
|
29
29
|
padding-inline-start: 0.25rem;
|
|
30
|
-
vertical-align:
|
|
30
|
+
vertical-align: middle;
|
|
31
|
+
}
|
|
32
|
+
._open-in-new_p1bke_27 > svg {
|
|
33
|
+
font-size: max(0.5625rem, 0.75em) !important;
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
@layer state {
|
|
34
|
-
a.
|
|
35
|
-
.
|
|
36
|
-
.
|
|
37
|
+
a._link_p1bke_2[data-interactive=focus-visible], a._link_p1bke_2:focus-visible,
|
|
38
|
+
._link_p1bke_2[data-interactive=focus-visible],
|
|
39
|
+
._link_p1bke_2:focus-visible {
|
|
37
40
|
outline-width: 0.125rem;
|
|
38
41
|
}
|
|
39
|
-
a.
|
|
40
|
-
.
|
|
41
|
-
.
|
|
42
|
+
a._link_p1bke_2[data-interactive=hover], a._link_p1bke_2:hover,
|
|
43
|
+
._link_p1bke_2[data-interactive=hover],
|
|
44
|
+
._link_p1bke_2:hover {
|
|
42
45
|
color: var(--foreground-color-hover-primary, #004491);
|
|
43
46
|
}
|
|
44
|
-
a.
|
|
45
|
-
.
|
|
47
|
+
a._link_p1bke_2._secondary_p1bke_46,
|
|
48
|
+
._link_p1bke_2._secondary_p1bke_46 {
|
|
46
49
|
color: var(--foreground-color, #141414);
|
|
47
50
|
}
|
|
48
|
-
a.
|
|
49
|
-
.
|
|
50
|
-
.
|
|
51
|
+
a._link_p1bke_2._secondary_p1bke_46[data-interactive=hover], a._link_p1bke_2._secondary_p1bke_46:hover,
|
|
52
|
+
._link_p1bke_2._secondary_p1bke_46[data-interactive=hover],
|
|
53
|
+
._link_p1bke_2._secondary_p1bke_46:hover {
|
|
51
54
|
opacity: 0.8;
|
|
52
55
|
}
|
|
53
|
-
a.
|
|
54
|
-
.
|
|
56
|
+
a._link_p1bke_2._quiet_p1bke_55,
|
|
57
|
+
._link_p1bke_2._quiet_p1bke_55 {
|
|
58
|
+
text-decoration: none;
|
|
59
|
+
}
|
|
60
|
+
a._link_p1bke_2._quiet_p1bke_55:hover,
|
|
61
|
+
._link_p1bke_2._quiet_p1bke_55:hover {
|
|
62
|
+
text-decoration: underline;
|
|
63
|
+
}
|
|
64
|
+
a._link_p1bke_2._ghost_p1bke_63,
|
|
65
|
+
._link_p1bke_2._ghost_p1bke_63 {
|
|
55
66
|
text-decoration: none;
|
|
56
67
|
}
|
|
57
|
-
a.
|
|
58
|
-
.
|
|
68
|
+
a._link_p1bke_2._ghost_p1bke_63:hover,
|
|
69
|
+
._link_p1bke_2._ghost_p1bke_63:hover {
|
|
59
70
|
text-decoration: underline;
|
|
60
71
|
}
|
|
72
|
+
}
|
|
73
|
+
a[data-anv=link]._link_p1bke_2 {
|
|
74
|
+
font-size: inherit;
|
|
61
75
|
}
|
package/dist/Link.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { L as Link, L as default, u as useLinkStyles } from './Link-
|
|
1
|
+
export { L as Link, L as default, u as useLinkStyles } from './Link-CGXEFA9w.js';
|
|
2
2
|
//# sourceMappingURL=Link.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import './Link.css';const link = "_link_p1bke_2";
|
|
2
|
+
const secondary = "_secondary_p1bke_46";
|
|
3
|
+
const quiet = "_quiet_p1bke_55";
|
|
4
|
+
const ghost = "_ghost_p1bke_63";
|
|
5
|
+
const linkStyles = {
|
|
6
|
+
link: link,
|
|
7
|
+
"open-in-new": "_open-in-new_p1bke_27",
|
|
8
|
+
secondary: secondary,
|
|
9
|
+
quiet: quiet,
|
|
10
|
+
ghost: ghost
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { linkStyles as l };
|
|
14
|
+
//# sourceMappingURL=Link.module-ByPQQ0zy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.module-ByPQQ0zy.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { forwardRef } from 'react';
|
|
3
|
-
import { l as linkStyles } from './Link.module-
|
|
3
|
+
import { l as linkStyles } from './Link.module-ByPQQ0zy.js';
|
|
4
4
|
import { useTrackingId } from './useTrackingId.js';
|
|
5
5
|
import { c as cx } from './index-tZvMCc77.js';
|
|
6
6
|
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
@@ -15,6 +15,7 @@ const LinkButton = forwardRef(
|
|
|
15
15
|
const data = {
|
|
16
16
|
appearance: props.appearance,
|
|
17
17
|
quiet: props.quiet,
|
|
18
|
+
ghost: props.ghost,
|
|
18
19
|
children: childrenToString(props.children)
|
|
19
20
|
};
|
|
20
21
|
const trackingId = useTrackingId({
|
|
@@ -28,6 +29,7 @@ const LinkButton = forwardRef(
|
|
|
28
29
|
className,
|
|
29
30
|
appearance = "primary",
|
|
30
31
|
quiet,
|
|
32
|
+
ghost,
|
|
31
33
|
style,
|
|
32
34
|
...rest
|
|
33
35
|
} = componentProps;
|
|
@@ -37,6 +39,7 @@ const LinkButton = forwardRef(
|
|
|
37
39
|
className,
|
|
38
40
|
{
|
|
39
41
|
[linkStyles["quiet"]]: quiet,
|
|
42
|
+
[linkStyles["ghost"]]: ghost,
|
|
40
43
|
[linkStyles["secondary"]]: appearance === "secondary"
|
|
41
44
|
}
|
|
42
45
|
);
|
|
@@ -61,4 +64,4 @@ const LinkButton = forwardRef(
|
|
|
61
64
|
LinkButton.displayName = "LinkButton";
|
|
62
65
|
|
|
63
66
|
export { LinkButton as L };
|
|
64
|
-
//# sourceMappingURL=LinkButton-
|
|
67
|
+
//# sourceMappingURL=LinkButton-BBCO-4em.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkButton-BBCO-4em.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 * @deprecated to be removed on next major - use ghost instead\n * @remarks Only available when appearance is \"primary\".\n */\n quiet?: boolean;\n /**\n * Whether the LinkButton should have a quieter, less prominent appearance.\n * @remarks Only available when appearance is \"primary\".\n */\n ghost?: boolean;\n }\n | {\n /**\n * The visual appearance of the LinkButton. Secondary appearance cannot be ghost.\n */\n appearance: \"secondary\";\n /**\n * Whether the LinkButton should have a quieter, less prominent appearance.\n * @deprecated to be removed on next major - use ghost instead\n * @remarks Must be false when appearance is \"secondary\".\n */\n quiet?: false;\n /**\n * Whether the LinkButton should have a quieter, less prominent appearance.\n * @remarks Must be false when appearance is \"secondary\".\n */\n ghost?: 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 ghost: props.ghost,\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 ghost,\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[\"ghost\"]]: ghost,\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":";;;;;;;;;;;;AA2DO,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,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,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,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;;;;"}
|
package/dist/LinkButton.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { L as LinkButton, L as default } from './LinkButton-
|
|
1
|
+
export { L as LinkButton, L as default } from './LinkButton-BBCO-4em.js';
|
|
2
2
|
//# sourceMappingURL=LinkButton.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { createContext, useContext, forwardRef, useRef, useId, useEffect, useMemo, useState } from 'react';
|
|
3
|
-
import { C as Checkbox } from './Checkbox-
|
|
3
|
+
import { C as Checkbox } from './Checkbox-zAKOGEBl.js';
|
|
4
4
|
import { c as cx } from './index-tZvMCc77.js';
|
|
5
5
|
import { l as listViewStyles } from './ListView.module-BilDg12y.js';
|
|
6
6
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
@@ -531,4 +531,4 @@ const ListView = Object.assign(
|
|
|
531
531
|
);
|
|
532
532
|
|
|
533
533
|
export { ListView as L, ListViewOption as a, ListViewOptionCell as b };
|
|
534
|
-
//# sourceMappingURL=ListView-
|
|
534
|
+
//# sourceMappingURL=ListView-D8mfK8Lu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView-5cRssdYI.js","sources":["../src/internal/functions/mapOrder.ts","../src/components/ListView/internal/ListViewContext.ts","../src/components/ListView/ListViewOption.tsx","../src/components/ListView/ListViewOptionCell.tsx","../src/components/ListView/internal/utils.ts","../src/components/ListView/ListView.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function mapOrder(array: any[], order: any[], key: string) {\n array.sort(function (a, b) {\n const A = a[key],\n B = b[key];\n\n if (order.indexOf(A) > order.indexOf(B)) {\n return 1;\n } else {\n return -1;\n }\n });\n\n return array;\n}\n","import { Dispatch, SetStateAction, createContext, useContext } from \"react\";\nimport { Option } from \"./types\";\n\n/**\n * Context properties for the ListView component\n */\nexport type ListViewContextProps = {\n /** Array of option objects for focus management */\n options?: Option[];\n /** Callback when selection changes */\n onSelectionChange?: (value: unknown[]) => void;\n /** Currently selected items */\n selectedItems: unknown[];\n /** Currently indeterminate items */\n indeterminateItems: unknown[];\n /** Array of items if using items prop */\n items?: unknown[];\n /** Function to set the selected items */\n setSelectedItems: Dispatch<\n SetStateAction<ListViewContextProps[\"selectedItems\"]>\n >;\n /** Whether the component is controlled */\n controlled?: boolean;\n};\n\nexport const ListViewContext = createContext<ListViewContextProps | null>(null);\n\n/**\n * Hook to access the listview context\n * @returns The listview context\n * @throws Error if used outside of a ListView component\n */\nexport function useListView() {\n const context = useContext(ListViewContext);\n\n if (context == null) {\n throw new Error(\"useListView must be wrapped in <ListView />\");\n }\n\n return context;\n}\n","import {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n} from \"react\";\nimport { Checkbox, CheckboxProps } from \"../Checkbox\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./ListView.module.scss\";\nimport { CheckboxState } from \"../Checkbox/types\";\nimport { useListView } from \"./internal/ListViewContext\";\nimport { DataTrackingId } from \"../../types\";\n\ntype ItemType = {\n label: string;\n disabled?: boolean;\n [key: string]: unknown;\n};\n\n/**\n * Props for the ListViewOption component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type ListViewOptionProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onChange\"\n> & {\n /** Whether the option is disabled */\n disabled?: boolean;\n /** Callback when the option changes */\n onChange?: (e?: ChangeEvent<HTMLInputElement>, state?: CheckboxState) => void;\n} & (\n | {\n /** The item object when using items prop */\n item: ItemType;\n }\n | {\n /** The display label for the option */\n label: string;\n }\n ) &\n DataTrackingId;\n\n/**\n * ListViewOption component for individual selectable items within a listview.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n *\n * @example\n * <ListView.Option item={{ label: \"Option 1\" }} />\n */\nexport const ListViewOption = forwardRef<HTMLDivElement, ListViewOptionProps>(\n (props, ref) => {\n const {\n className,\n children,\n onChange,\n style,\n disabled: disabledProp,\n ...remainingProps\n } = props;\n\n const optionRef = useRef<HTMLDivElement>(null);\n const mergedRef = useMergeRefs([ref, optionRef]);\n\n const cellRef = useRef<HTMLDivElement>(null);\n const rowId = useId();\n const {\n selectedItems,\n setSelectedItems,\n indeterminateItems,\n controlled,\n onSelectionChange,\n } = useListView();\n const disabled =\n \"item\" in remainingProps\n ? disabledProp || remainingProps.item.disabled\n : disabledProp;\n\n useEffect(() => {\n const focusables = optionRef.current?.querySelectorAll(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [tabindex='0']:not(:disabled):not([aria-disabled='true'])\",\n );\n focusables?.forEach((item, i) => {\n item.setAttribute(\"tabindex\", \"-1\");\n if (item.hasAttribute(\"id\")) return;\n item.setAttribute(\"id\", `${rowId}-${i}`);\n });\n }, [rowId]);\n\n const label =\n \"item\" in remainingProps\n ? remainingProps.item.label\n : remainingProps.label;\n\n const isSelected = useMemo(\n () => matchInArray(label, selectedItems),\n [selectedItems, label],\n );\n\n const isIndeterminate = useMemo(\n () => matchInArray(label, indeterminateItems),\n [indeterminateItems, label],\n );\n\n const onChangeHandler: CheckboxProps[\"onChange\"] = (e) => {\n onChange?.(e, { checked: isSelected });\n };\n\n const onClickHandler: CheckboxProps[\"onClick\"] = () => {\n updateSelectedItems();\n };\n\n const removeItemFromSelectedItems = (itemLabelToRemove: string) => {\n return (selectedItems as (ItemType | string)[]).filter(\n (potentialRemove) => {\n if (typeof potentialRemove === \"string\") {\n return potentialRemove !== itemLabelToRemove;\n }\n return potentialRemove.label !== itemLabelToRemove;\n },\n );\n };\n\n const addItemFromSelectedItems = (itemToAdd: ItemType | string) => {\n return [...selectedItems, itemToAdd];\n };\n\n function updateSelectedItems() {\n const isPartOfSelectedItems = matchInArray(label, selectedItems);\n const callback = controlled ? onSelectionChange : setSelectedItems;\n if (isPartOfSelectedItems) {\n callback?.(removeItemFromSelectedItems(label));\n } else {\n callback?.(\n addItemFromSelectedItems(\n \"item\" in remainingProps\n ? remainingProps.item\n : remainingProps.label,\n ),\n );\n }\n }\n\n const data = {\n label: \"item\" in props ? props.item?.label : props.label,\n };\n\n const trackingId = useTrackingId({\n name: \"ListViewOption\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const {\n item: _item,\n label: _label,\n ...forwardedProps\n } = remainingProps as {\n // This is to satisfy the type checker and allow us to destructure the item and label props which \"could\" exist.\n // We're destructuring them because we don't want to forward them to the div element.\n item: ItemType;\n label: string;\n };\n\n return (\n <div\n data-tracking-id={trackingId}\n className={cx([styles[\"listview-option\"]], className)}\n data-anv=\"listview-option\"\n style={style}\n ref={mergedRef}\n aria-disabled={disabled}\n aria-selected={isSelected}\n aria-label={label ?? \"Select\"}\n role=\"row\"\n {...forwardedProps}\n >\n <div className={styles[\"cell\"]} ref={cellRef} role=\"gridcell\">\n <Checkbox\n disabled={disabled}\n checked={isIndeterminate ? undefined : isSelected}\n indeterminate={isIndeterminate}\n aria-label={label ?? \"Select\"}\n onChange={onChangeHandler}\n onClick={onClickHandler}\n />\n </div>\n {children}\n </div>\n );\n },\n);\n\nListViewOption.displayName = \"ListViewOption\";\n\n/**\n * Helper function to check if a list view option item is in an array (e.g. selected items or indeterminate items)\n * @param itemLabel - The label of the item to check if it is in the array\n * @param array - The array to check if the item is in\n * @returns True if the item is in the array, false otherwise\n */\nfunction matchInArray(\n itemLabel: string,\n array: (ItemType | unknown)[],\n): boolean {\n return array.some(\n (i) => itemLabel === i || itemLabel === (i as ItemType).label,\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\n\n/**\n * ListViewOptionCell component for rendering a cell within a listview option.\n *\n * Features:\n * - Renders a grid cell for option content\n * - Supports custom content and layout\n * - Accessible with proper ARIA attributes\n *\n * @example\n * <ListView.OptionCell>Custom cell content</ListView.OptionCell>\n */\nexport const ListViewOptionCell = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<\"div\">\n>((props, ref) => {\n const { ...rest } = props;\n return (\n <div role=\"gridcell\" data-anv=\"listview-option-cell\" {...rest} ref={ref} />\n );\n});\n\nListViewOptionCell.displayName = \"ListViewOptionCell\";\n","import { Dispatch, KeyboardEvent, SetStateAction } from \"react\";\nimport { FocusedItem, Option } from \"./types\";\nimport { getActiveElement } from \"../../../internal/functions\";\n\nexport const listViewKeyboardNavigation = (\n e: KeyboardEvent<HTMLDivElement>,\n options: Option[],\n focusedItem: FocusedItem,\n setFocusedItem: Dispatch<SetStateAction<FocusedItem>>,\n parent: HTMLDivElement | null,\n currentFocusId: (id: string) => void,\n) => {\n if (!options) return;\n let activeElement: HTMLElement | null;\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n (\n options[focusedItem.row].focusables[focusedItem.col] as HTMLElement\n ).click();\n activeElement = getActiveElement(document);\n if (!activeElement) break;\n activeElement.click();\n e.preventDefault();\n break;\n case \"ArrowDown\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\",\n );\n if (focusedItem.row === options.length - 1) {\n options[0].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(options[0].focusables[focusedItem.col].id);\n setFocusedItem((prev) => {\n return { ...prev, row: 0 };\n });\n break;\n }\n\n options[focusedItem.row + 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(\n options[focusedItem.row + 1].focusables[focusedItem.col].id,\n );\n setFocusedItem((prev) => {\n return { ...prev, row: focusedItem.row + 1 };\n });\n break;\n case \"ArrowUp\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\",\n );\n if (focusedItem.row === 0) {\n options[options.length - 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(\n options[options.length - 1].focusables[focusedItem.col].id,\n );\n setFocusedItem((prev) => {\n return { ...prev, row: options.length - 1 };\n });\n break;\n }\n\n options[focusedItem.row - 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(\n options[focusedItem.row - 1].focusables[focusedItem.col].id,\n );\n setFocusedItem((prev) => {\n return { ...prev, row: focusedItem.row - 1 };\n });\n break;\n case \"ArrowRight\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\",\n );\n if (focusedItem.col === options[focusedItem.row].focusables.length - 1) {\n options[focusedItem.row].focusables[0].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(options[focusedItem.row].focusables[0].id);\n setFocusedItem((prev) => {\n return {\n ...prev,\n col: 0,\n };\n });\n break;\n }\n\n options[focusedItem.row].focusables[focusedItem.col + 1].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(\n options[focusedItem.row].focusables[focusedItem.col + 1].id,\n );\n setFocusedItem((prev) => {\n return { ...prev, col: focusedItem.col + 1 };\n });\n break;\n case \"ArrowLeft\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\",\n );\n if (focusedItem.col === 0) {\n options[focusedItem.row].focusables[\n options[focusedItem.row].focusables.length - 1\n ].setAttribute(\"data-interactive\", \"focus-visible\");\n currentFocusId(\n options[focusedItem.row].focusables[\n options[focusedItem.row].focusables.length - 1\n ].id,\n );\n setFocusedItem((prev) => {\n return {\n ...prev,\n col: options[focusedItem.row].focusables.length - 1,\n };\n });\n break;\n }\n\n options[focusedItem.row].focusables[focusedItem.col - 1].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(\n options[focusedItem.row].focusables[focusedItem.col - 1].id,\n );\n setFocusedItem((prev) => {\n return { ...prev, col: focusedItem.col - 1 };\n });\n break;\n\n default:\n break;\n }\n};\n\nexport const getFocusables = (el: Element) => {\n return el.querySelectorAll(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [tabindex='0']:not(:disabled):not([aria-disabled='true'])\",\n );\n};\n","import {\n KeyboardEvent,\n MouseEvent,\n Ref,\n forwardRef,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../types\";\nimport {\n FocusedItem,\n ItemType,\n ListViewWithItems,\n ListViewWithOutItems,\n Option,\n} from \"./internal/types\";\nimport { ListViewOption } from \"./ListViewOption\";\nimport { ListViewOptionCell } from \"./ListViewOptionCell\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { useMergeRefs } from \"../../hooks\";\nimport { getFocusables, listViewKeyboardNavigation } from \"./internal/utils\";\nimport { mapOrder } from \"../../internal/functions\";\nimport { ListViewContext } from \"./internal/ListViewContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./ListView.module.scss\";\n\n/**\n * Props for the ListView component\n * @template T - The type of additional properties for items\n * @extends LayoutUtilProps\n */\nexport type ListViewProps<T> = LayoutUtilProps & {\n /** Currently indeterminate items (controlled) */\n indeterminate?: unknown[];\n /** Callback when selection changes */\n onSelectionChange?: (value: unknown[]) => void;\n /** Currently selected items (controlled) */\n selected?: ItemType<T>[];\n} & (ListViewWithItems<T> | ListViewWithOutItems);\n\nconst ListViewElement = function <T>(\n props: ListViewProps<T>,\n ref: Ref<HTMLDivElement>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n indeterminate,\n onSelectionChange,\n className,\n selected,\n defaultSelected,\n style,\n onKeyDown,\n ...remainingProps\n } = componentProps;\n\n const ListViewRef = useRef<HTMLDivElement>(null);\n const isFocusVisible = useRef(true);\n const combinedRef = useMergeRefs([ref, ListViewRef]);\n const [options, setOptions] = useState<Option[]>();\n const [currentActive, setCurrentActive] = useState<string>();\n const [selectedItems, setSelectedItems] = useState<unknown[]>(\n selected ?? defaultSelected ?? [],\n );\n const [focusedItem, setFocusedItem] = useState<FocusedItem>({\n row: 0,\n col: 0,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const onFocusHandler = () => {\n if (!isFocusVisible.current) return;\n if (!options) return;\n options[focusedItem.row].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n return;\n };\n const onBlurHandler = () => {\n if (!options) return;\n options[focusedItem.row].focusables[focusedItem.col]?.removeAttribute(\n \"data-interactive\",\n );\n return;\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (!options) return;\n isFocusVisible.current = true;\n listViewKeyboardNavigation(\n e,\n options,\n focusedItem,\n setFocusedItem,\n ListViewRef.current,\n (id) => setCurrentActive(id),\n );\n };\n\n const onMouseDownHandler = (e: MouseEvent<HTMLDivElement>) => {\n isFocusVisible.current = false;\n if (options && ListViewRef.current) {\n options[focusedItem.row].focusables[focusedItem.col]?.removeAttribute(\n \"data-interactive\",\n );\n\n const closestFocusable = (e.target as HTMLElement).closest(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [data-anv='checkbox']\",\n );\n\n const optionRow = (e.target as HTMLElement).closest(\n '[data-anv=\"listview-option\"]',\n );\n if (!optionRow || optionRow.ariaDisabled) return;\n const row = options.findIndex((option) => option.node === optionRow);\n if (!closestFocusable) {\n (options[row].focusables[0] as HTMLElement).click();\n return;\n }\n const col = Array.prototype.indexOf.call(\n options[row].focusables,\n closestFocusable?.getAttribute(\"data-anv\") === \"checkbox\"\n ? closestFocusable.children[0]\n : closestFocusable,\n );\n setFocusedItem({ row, col });\n }\n };\n\n useEffect(() => {\n if (!ListViewRef.current) return;\n const optionArr = ListViewRef.current.querySelectorAll<HTMLDivElement>(\n \"div[data-anv='listview-option']:not([aria-disabled='true'])\",\n );\n const makeTree = Array.from(optionArr).map((option) => {\n const childFocusables = getFocusables(option);\n return {\n node: option,\n focusables: childFocusables,\n };\n });\n setOptions(makeTree);\n }, [props.children]);\n\n const prevSelectedItems = useRef<unknown[]>(\n selected ?? defaultSelected ?? [],\n );\n useEffect(() => {\n if (!options) return;\n const compareArr = options.map((option) => option.node.ariaLabel);\n const orderedSelectedItems = mapOrder(selectedItems, compareArr, \"label\");\n if (\n JSON.stringify(prevSelectedItems.current) ===\n JSON.stringify(orderedSelectedItems)\n )\n return;\n\n onSelectionChange?.(orderedSelectedItems);\n prevSelectedItems.current = orderedSelectedItems;\n }, [onSelectionChange, options, selectedItems]);\n\n useEffect(() => {\n if (!selected) return;\n const filterDuplicates = selected.reduce(\n (acc: ListViewWithItems<T>[\"items\"], current) => {\n const isDup = acc.find((item) => item.label === current.label);\n if (!isDup) {\n return acc.concat([current]);\n } else {\n return acc;\n }\n },\n [],\n );\n\n if (!options) return;\n const compareArr = options.map((option) => option.node.ariaLabel);\n const orderedSelected = mapOrder(filterDuplicates, compareArr, \"label\");\n if (\n JSON.stringify(prevSelectedItems.current) ===\n JSON.stringify(orderedSelected)\n )\n return;\n setSelectedItems(orderedSelected);\n prevSelectedItems.current = orderedSelected;\n }, [onSelectionChange, options, selected]);\n\n const ListViewClassNames = cx([styles[\"listview\"]], className);\n\n if (\"items\" in remainingProps) {\n const { children, items, ...rest } = remainingProps;\n return (\n <ListViewContext.Provider\n value={{\n options,\n onSelectionChange,\n indeterminateItems: indeterminate ?? [],\n selectedItems,\n setSelectedItems,\n items,\n controlled: !!selected,\n }}\n >\n <div\n ref={combinedRef}\n className={ListViewClassNames}\n style={styleCombined}\n data-anv=\"listview\"\n role=\"grid\"\n aria-multiselectable=\"true\"\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n onKeyDown={onKeyDownHandler}\n onMouseDown={onMouseDownHandler}\n aria-activedescendant={currentActive}\n tabIndex={0}\n {...rest}\n >\n {children?.({\n items: items.map((item: ItemType<T>) => {\n return item;\n }),\n })}\n </div>\n </ListViewContext.Provider>\n );\n }\n\n const { children, ...rest } = remainingProps;\n return (\n <ListViewContext.Provider\n value={{\n options,\n onSelectionChange,\n selectedItems,\n indeterminateItems: indeterminate ?? [],\n setSelectedItems,\n controlled: !!selected || !!indeterminate,\n }}\n >\n <div\n ref={combinedRef}\n className={ListViewClassNames}\n style={styleCombined}\n data-anv=\"listview\"\n role=\"grid\"\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n onKeyDown={onKeyDownHandler}\n onMouseDown={onMouseDownHandler}\n aria-activedescendant={currentActive}\n tabIndex={0}\n {...rest}\n >\n {children}\n </div>\n </ListViewContext.Provider>\n );\n};\n\nListViewElement.displayName = \"ListView\";\n\n/**\n * ListView component for displaying a list of selectable items in a grid layout.\n *\n * Features:\n * - Supports single and multiple selection modes\n * - Keyboard navigation with arrow keys\n * - Customizable item rendering\n * - Controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Focus management for interactive elements\n * - Layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ListView items={[{ label: \"Item 1\" }, { label: \"Item 2\" }]} onSelectionChange={handleSelection}>\n * {({ items }) => items.map(item => (\n * <ListView.Option key={item.label} item={item} />\n * ))}\n * </ListView>\n */\nexport const ListView = Object.assign(\n forwardRef(ListViewElement) as <T>(\n props: ListViewProps<T> & { ref?: React.ForwardedRef<HTMLUListElement> },\n ) => ReturnType<typeof ListViewElement>,\n {\n /**\n * ListViewOption component for individual selectable items within a listview.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ListView.Option item={{ label: \"Option 1\" }} />\n */\n Option: ListViewOption,\n /**\n * ListViewOptionCell component for rendering a cell within a listview option.\n *\n * Features:\n * - Renders a grid cell for option content\n * - Supports custom content and layout\n * - Accessible with proper ARIA attributes\n *\n * @example\n * <ListView.OptionCell>Custom cell content</ListView.OptionCell>\n */\n OptionCell: ListViewOptionCell,\n },\n);\n"],"names":["styles","children","rest"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListView-D8mfK8Lu.js","sources":["../src/internal/functions/mapOrder.ts","../src/components/ListView/internal/ListViewContext.ts","../src/components/ListView/ListViewOption.tsx","../src/components/ListView/ListViewOptionCell.tsx","../src/components/ListView/internal/utils.ts","../src/components/ListView/ListView.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function mapOrder(array: any[], order: any[], key: string) {\n array.sort(function (a, b) {\n const A = a[key],\n B = b[key];\n\n if (order.indexOf(A) > order.indexOf(B)) {\n return 1;\n } else {\n return -1;\n }\n });\n\n return array;\n}\n","import { Dispatch, SetStateAction, createContext, useContext } from \"react\";\nimport { Option } from \"./types\";\n\n/**\n * Context properties for the ListView component\n */\nexport type ListViewContextProps = {\n /** Array of option objects for focus management */\n options?: Option[];\n /** Callback when selection changes */\n onSelectionChange?: (value: unknown[]) => void;\n /** Currently selected items */\n selectedItems: unknown[];\n /** Currently indeterminate items */\n indeterminateItems: unknown[];\n /** Array of items if using items prop */\n items?: unknown[];\n /** Function to set the selected items */\n setSelectedItems: Dispatch<\n SetStateAction<ListViewContextProps[\"selectedItems\"]>\n >;\n /** Whether the component is controlled */\n controlled?: boolean;\n};\n\nexport const ListViewContext = createContext<ListViewContextProps | null>(null);\n\n/**\n * Hook to access the listview context\n * @returns The listview context\n * @throws Error if used outside of a ListView component\n */\nexport function useListView() {\n const context = useContext(ListViewContext);\n\n if (context == null) {\n throw new Error(\"useListView must be wrapped in <ListView />\");\n }\n\n return context;\n}\n","import {\n ChangeEvent,\n ComponentPropsWithoutRef,\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n} from \"react\";\nimport { Checkbox, CheckboxProps } from \"../Checkbox\";\nimport { useMergeRefs, useTrackingId } from \"../../hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./ListView.module.scss\";\nimport { CheckboxState } from \"../Checkbox/types\";\nimport { useListView } from \"./internal/ListViewContext\";\nimport { DataTrackingId } from \"../../types\";\n\ntype ItemType = {\n label: string;\n disabled?: boolean;\n [key: string]: unknown;\n};\n\n/**\n * Props for the ListViewOption component\n * @extends ComponentPropsWithoutRef<\"div\">\n */\nexport type ListViewOptionProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"onChange\"\n> & {\n /** Whether the option is disabled */\n disabled?: boolean;\n /** Callback when the option changes */\n onChange?: (e?: ChangeEvent<HTMLInputElement>, state?: CheckboxState) => void;\n} & (\n | {\n /** The item object when using items prop */\n item: ItemType;\n }\n | {\n /** The display label for the option */\n label: string;\n }\n ) &\n DataTrackingId;\n\n/**\n * ListViewOption component for individual selectable items within a listview.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n *\n * @example\n * <ListView.Option item={{ label: \"Option 1\" }} />\n */\nexport const ListViewOption = forwardRef<HTMLDivElement, ListViewOptionProps>(\n (props, ref) => {\n const {\n className,\n children,\n onChange,\n style,\n disabled: disabledProp,\n ...remainingProps\n } = props;\n\n const optionRef = useRef<HTMLDivElement>(null);\n const mergedRef = useMergeRefs([ref, optionRef]);\n\n const cellRef = useRef<HTMLDivElement>(null);\n const rowId = useId();\n const {\n selectedItems,\n setSelectedItems,\n indeterminateItems,\n controlled,\n onSelectionChange,\n } = useListView();\n const disabled =\n \"item\" in remainingProps\n ? disabledProp || remainingProps.item.disabled\n : disabledProp;\n\n useEffect(() => {\n const focusables = optionRef.current?.querySelectorAll(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [tabindex='0']:not(:disabled):not([aria-disabled='true'])\",\n );\n focusables?.forEach((item, i) => {\n item.setAttribute(\"tabindex\", \"-1\");\n if (item.hasAttribute(\"id\")) return;\n item.setAttribute(\"id\", `${rowId}-${i}`);\n });\n }, [rowId]);\n\n const label =\n \"item\" in remainingProps\n ? remainingProps.item.label\n : remainingProps.label;\n\n const isSelected = useMemo(\n () => matchInArray(label, selectedItems),\n [selectedItems, label],\n );\n\n const isIndeterminate = useMemo(\n () => matchInArray(label, indeterminateItems),\n [indeterminateItems, label],\n );\n\n const onChangeHandler: CheckboxProps[\"onChange\"] = (e) => {\n onChange?.(e, { checked: isSelected });\n };\n\n const onClickHandler: CheckboxProps[\"onClick\"] = () => {\n updateSelectedItems();\n };\n\n const removeItemFromSelectedItems = (itemLabelToRemove: string) => {\n return (selectedItems as (ItemType | string)[]).filter(\n (potentialRemove) => {\n if (typeof potentialRemove === \"string\") {\n return potentialRemove !== itemLabelToRemove;\n }\n return potentialRemove.label !== itemLabelToRemove;\n },\n );\n };\n\n const addItemFromSelectedItems = (itemToAdd: ItemType | string) => {\n return [...selectedItems, itemToAdd];\n };\n\n function updateSelectedItems() {\n const isPartOfSelectedItems = matchInArray(label, selectedItems);\n const callback = controlled ? onSelectionChange : setSelectedItems;\n if (isPartOfSelectedItems) {\n callback?.(removeItemFromSelectedItems(label));\n } else {\n callback?.(\n addItemFromSelectedItems(\n \"item\" in remainingProps\n ? remainingProps.item\n : remainingProps.label,\n ),\n );\n }\n }\n\n const data = {\n label: \"item\" in props ? props.item?.label : props.label,\n };\n\n const trackingId = useTrackingId({\n name: \"ListViewOption\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const {\n item: _item,\n label: _label,\n ...forwardedProps\n } = remainingProps as {\n // This is to satisfy the type checker and allow us to destructure the item and label props which \"could\" exist.\n // We're destructuring them because we don't want to forward them to the div element.\n item: ItemType;\n label: string;\n };\n\n return (\n <div\n data-tracking-id={trackingId}\n className={cx([styles[\"listview-option\"]], className)}\n data-anv=\"listview-option\"\n style={style}\n ref={mergedRef}\n aria-disabled={disabled}\n aria-selected={isSelected}\n aria-label={label ?? \"Select\"}\n role=\"row\"\n {...forwardedProps}\n >\n <div className={styles[\"cell\"]} ref={cellRef} role=\"gridcell\">\n <Checkbox\n disabled={disabled}\n checked={isIndeterminate ? undefined : isSelected}\n indeterminate={isIndeterminate}\n aria-label={label ?? \"Select\"}\n onChange={onChangeHandler}\n onClick={onClickHandler}\n />\n </div>\n {children}\n </div>\n );\n },\n);\n\nListViewOption.displayName = \"ListViewOption\";\n\n/**\n * Helper function to check if a list view option item is in an array (e.g. selected items or indeterminate items)\n * @param itemLabel - The label of the item to check if it is in the array\n * @param array - The array to check if the item is in\n * @returns True if the item is in the array, false otherwise\n */\nfunction matchInArray(\n itemLabel: string,\n array: (ItemType | unknown)[],\n): boolean {\n return array.some(\n (i) => itemLabel === i || itemLabel === (i as ItemType).label,\n );\n}\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\n\n/**\n * ListViewOptionCell component for rendering a cell within a listview option.\n *\n * Features:\n * - Renders a grid cell for option content\n * - Supports custom content and layout\n * - Accessible with proper ARIA attributes\n *\n * @example\n * <ListView.OptionCell>Custom cell content</ListView.OptionCell>\n */\nexport const ListViewOptionCell = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<\"div\">\n>((props, ref) => {\n const { ...rest } = props;\n return (\n <div role=\"gridcell\" data-anv=\"listview-option-cell\" {...rest} ref={ref} />\n );\n});\n\nListViewOptionCell.displayName = \"ListViewOptionCell\";\n","import { Dispatch, KeyboardEvent, SetStateAction } from \"react\";\nimport { FocusedItem, Option } from \"./types\";\nimport { getActiveElement } from \"../../../internal/functions\";\n\nexport const listViewKeyboardNavigation = (\n e: KeyboardEvent<HTMLDivElement>,\n options: Option[],\n focusedItem: FocusedItem,\n setFocusedItem: Dispatch<SetStateAction<FocusedItem>>,\n parent: HTMLDivElement | null,\n currentFocusId: (id: string) => void,\n) => {\n if (!options) return;\n let activeElement: HTMLElement | null;\n switch (e.code) {\n case \"Enter\":\n case \"Space\":\n (\n options[focusedItem.row].focusables[focusedItem.col] as HTMLElement\n ).click();\n activeElement = getActiveElement(document);\n if (!activeElement) break;\n activeElement.click();\n e.preventDefault();\n break;\n case \"ArrowDown\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\",\n );\n if (focusedItem.row === options.length - 1) {\n options[0].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(options[0].focusables[focusedItem.col].id);\n setFocusedItem((prev) => {\n return { ...prev, row: 0 };\n });\n break;\n }\n\n options[focusedItem.row + 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(\n options[focusedItem.row + 1].focusables[focusedItem.col].id,\n );\n setFocusedItem((prev) => {\n return { ...prev, row: focusedItem.row + 1 };\n });\n break;\n case \"ArrowUp\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\",\n );\n if (focusedItem.row === 0) {\n options[options.length - 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(\n options[options.length - 1].focusables[focusedItem.col].id,\n );\n setFocusedItem((prev) => {\n return { ...prev, row: options.length - 1 };\n });\n break;\n }\n\n options[focusedItem.row - 1].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(\n options[focusedItem.row - 1].focusables[focusedItem.col].id,\n );\n setFocusedItem((prev) => {\n return { ...prev, row: focusedItem.row - 1 };\n });\n break;\n case \"ArrowRight\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\",\n );\n if (focusedItem.col === options[focusedItem.row].focusables.length - 1) {\n options[focusedItem.row].focusables[0].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(options[focusedItem.row].focusables[0].id);\n setFocusedItem((prev) => {\n return {\n ...prev,\n col: 0,\n };\n });\n break;\n }\n\n options[focusedItem.row].focusables[focusedItem.col + 1].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(\n options[focusedItem.row].focusables[focusedItem.col + 1].id,\n );\n setFocusedItem((prev) => {\n return { ...prev, col: focusedItem.col + 1 };\n });\n break;\n case \"ArrowLeft\":\n parent?.focus();\n options[focusedItem.row].focusables[focusedItem.col].removeAttribute(\n \"data-interactive\",\n );\n if (focusedItem.col === 0) {\n options[focusedItem.row].focusables[\n options[focusedItem.row].focusables.length - 1\n ].setAttribute(\"data-interactive\", \"focus-visible\");\n currentFocusId(\n options[focusedItem.row].focusables[\n options[focusedItem.row].focusables.length - 1\n ].id,\n );\n setFocusedItem((prev) => {\n return {\n ...prev,\n col: options[focusedItem.row].focusables.length - 1,\n };\n });\n break;\n }\n\n options[focusedItem.row].focusables[focusedItem.col - 1].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n currentFocusId(\n options[focusedItem.row].focusables[focusedItem.col - 1].id,\n );\n setFocusedItem((prev) => {\n return { ...prev, col: focusedItem.col - 1 };\n });\n break;\n\n default:\n break;\n }\n};\n\nexport const getFocusables = (el: Element) => {\n return el.querySelectorAll(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [tabindex='0']:not(:disabled):not([aria-disabled='true'])\",\n );\n};\n","import {\n KeyboardEvent,\n MouseEvent,\n Ref,\n forwardRef,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { LayoutUtilProps } from \"../../types\";\nimport {\n FocusedItem,\n ItemType,\n ListViewWithItems,\n ListViewWithOutItems,\n Option,\n} from \"./internal/types\";\nimport { ListViewOption } from \"./ListViewOption\";\nimport { ListViewOptionCell } from \"./ListViewOptionCell\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { useMergeRefs } from \"../../hooks\";\nimport { getFocusables, listViewKeyboardNavigation } from \"./internal/utils\";\nimport { mapOrder } from \"../../internal/functions\";\nimport { ListViewContext } from \"./internal/ListViewContext\";\n\nimport cx from \"classnames\";\nimport styles from \"./ListView.module.scss\";\n\n/**\n * Props for the ListView component\n * @template T - The type of additional properties for items\n * @extends LayoutUtilProps\n */\nexport type ListViewProps<T> = LayoutUtilProps & {\n /** Currently indeterminate items (controlled) */\n indeterminate?: unknown[];\n /** Callback when selection changes */\n onSelectionChange?: (value: unknown[]) => void;\n /** Currently selected items (controlled) */\n selected?: ItemType<T>[];\n} & (ListViewWithItems<T> | ListViewWithOutItems);\n\nconst ListViewElement = function <T>(\n props: ListViewProps<T>,\n ref: Ref<HTMLDivElement>,\n) {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n indeterminate,\n onSelectionChange,\n className,\n selected,\n defaultSelected,\n style,\n onKeyDown,\n ...remainingProps\n } = componentProps;\n\n const ListViewRef = useRef<HTMLDivElement>(null);\n const isFocusVisible = useRef(true);\n const combinedRef = useMergeRefs([ref, ListViewRef]);\n const [options, setOptions] = useState<Option[]>();\n const [currentActive, setCurrentActive] = useState<string>();\n const [selectedItems, setSelectedItems] = useState<unknown[]>(\n selected ?? defaultSelected ?? [],\n );\n const [focusedItem, setFocusedItem] = useState<FocusedItem>({\n row: 0,\n col: 0,\n });\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n const onFocusHandler = () => {\n if (!isFocusVisible.current) return;\n if (!options) return;\n options[focusedItem.row].focusables[focusedItem.col].setAttribute(\n \"data-interactive\",\n \"focus-visible\",\n );\n return;\n };\n const onBlurHandler = () => {\n if (!options) return;\n options[focusedItem.row].focusables[focusedItem.col]?.removeAttribute(\n \"data-interactive\",\n );\n return;\n };\n\n const onKeyDownHandler = (e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n if (!options) return;\n isFocusVisible.current = true;\n listViewKeyboardNavigation(\n e,\n options,\n focusedItem,\n setFocusedItem,\n ListViewRef.current,\n (id) => setCurrentActive(id),\n );\n };\n\n const onMouseDownHandler = (e: MouseEvent<HTMLDivElement>) => {\n isFocusVisible.current = false;\n if (options && ListViewRef.current) {\n options[focusedItem.row].focusables[focusedItem.col]?.removeAttribute(\n \"data-interactive\",\n );\n\n const closestFocusable = (e.target as HTMLElement).closest(\n \"button:not(:disabled):not([aria-disabled='true']), input:not(:disabled):not([aria-disabled='true']), [data-anv='checkbox']\",\n );\n\n const optionRow = (e.target as HTMLElement).closest(\n '[data-anv=\"listview-option\"]',\n );\n if (!optionRow || optionRow.ariaDisabled) return;\n const row = options.findIndex((option) => option.node === optionRow);\n if (!closestFocusable) {\n (options[row].focusables[0] as HTMLElement).click();\n return;\n }\n const col = Array.prototype.indexOf.call(\n options[row].focusables,\n closestFocusable?.getAttribute(\"data-anv\") === \"checkbox\"\n ? closestFocusable.children[0]\n : closestFocusable,\n );\n setFocusedItem({ row, col });\n }\n };\n\n useEffect(() => {\n if (!ListViewRef.current) return;\n const optionArr = ListViewRef.current.querySelectorAll<HTMLDivElement>(\n \"div[data-anv='listview-option']:not([aria-disabled='true'])\",\n );\n const makeTree = Array.from(optionArr).map((option) => {\n const childFocusables = getFocusables(option);\n return {\n node: option,\n focusables: childFocusables,\n };\n });\n setOptions(makeTree);\n }, [props.children]);\n\n const prevSelectedItems = useRef<unknown[]>(\n selected ?? defaultSelected ?? [],\n );\n useEffect(() => {\n if (!options) return;\n const compareArr = options.map((option) => option.node.ariaLabel);\n const orderedSelectedItems = mapOrder(selectedItems, compareArr, \"label\");\n if (\n JSON.stringify(prevSelectedItems.current) ===\n JSON.stringify(orderedSelectedItems)\n )\n return;\n\n onSelectionChange?.(orderedSelectedItems);\n prevSelectedItems.current = orderedSelectedItems;\n }, [onSelectionChange, options, selectedItems]);\n\n useEffect(() => {\n if (!selected) return;\n const filterDuplicates = selected.reduce(\n (acc: ListViewWithItems<T>[\"items\"], current) => {\n const isDup = acc.find((item) => item.label === current.label);\n if (!isDup) {\n return acc.concat([current]);\n } else {\n return acc;\n }\n },\n [],\n );\n\n if (!options) return;\n const compareArr = options.map((option) => option.node.ariaLabel);\n const orderedSelected = mapOrder(filterDuplicates, compareArr, \"label\");\n if (\n JSON.stringify(prevSelectedItems.current) ===\n JSON.stringify(orderedSelected)\n )\n return;\n setSelectedItems(orderedSelected);\n prevSelectedItems.current = orderedSelected;\n }, [onSelectionChange, options, selected]);\n\n const ListViewClassNames = cx([styles[\"listview\"]], className);\n\n if (\"items\" in remainingProps) {\n const { children, items, ...rest } = remainingProps;\n return (\n <ListViewContext.Provider\n value={{\n options,\n onSelectionChange,\n indeterminateItems: indeterminate ?? [],\n selectedItems,\n setSelectedItems,\n items,\n controlled: !!selected,\n }}\n >\n <div\n ref={combinedRef}\n className={ListViewClassNames}\n style={styleCombined}\n data-anv=\"listview\"\n role=\"grid\"\n aria-multiselectable=\"true\"\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n onKeyDown={onKeyDownHandler}\n onMouseDown={onMouseDownHandler}\n aria-activedescendant={currentActive}\n tabIndex={0}\n {...rest}\n >\n {children?.({\n items: items.map((item: ItemType<T>) => {\n return item;\n }),\n })}\n </div>\n </ListViewContext.Provider>\n );\n }\n\n const { children, ...rest } = remainingProps;\n return (\n <ListViewContext.Provider\n value={{\n options,\n onSelectionChange,\n selectedItems,\n indeterminateItems: indeterminate ?? [],\n setSelectedItems,\n controlled: !!selected || !!indeterminate,\n }}\n >\n <div\n ref={combinedRef}\n className={ListViewClassNames}\n style={styleCombined}\n data-anv=\"listview\"\n role=\"grid\"\n onFocus={onFocusHandler}\n onBlur={onBlurHandler}\n onKeyDown={onKeyDownHandler}\n onMouseDown={onMouseDownHandler}\n aria-activedescendant={currentActive}\n tabIndex={0}\n {...rest}\n >\n {children}\n </div>\n </ListViewContext.Provider>\n );\n};\n\nListViewElement.displayName = \"ListView\";\n\n/**\n * ListView component for displaying a list of selectable items in a grid layout.\n *\n * Features:\n * - Supports single and multiple selection modes\n * - Keyboard navigation with arrow keys\n * - Customizable item rendering\n * - Controlled and uncontrolled modes\n * - Accessible with proper ARIA attributes\n * - Focus management for interactive elements\n * - Layout utilities for positioning and spacing\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ListView items={[{ label: \"Item 1\" }, { label: \"Item 2\" }]} onSelectionChange={handleSelection}>\n * {({ items }) => items.map(item => (\n * <ListView.Option key={item.label} item={item} />\n * ))}\n * </ListView>\n */\nexport const ListView = Object.assign(\n forwardRef(ListViewElement) as <T>(\n props: ListViewProps<T> & { ref?: React.ForwardedRef<HTMLUListElement> },\n ) => ReturnType<typeof ListViewElement>,\n {\n /**\n * ListViewOption component for individual selectable items within a listview.\n *\n * Features:\n * - Displays selectable options with proper ARIA attributes\n * - Supports disabled state for non-selectable options\n * - Keyboard navigation support\n * - Accessible with screen reader support\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <ListView.Option item={{ label: \"Option 1\" }} />\n */\n Option: ListViewOption,\n /**\n * ListViewOptionCell component for rendering a cell within a listview option.\n *\n * Features:\n * - Renders a grid cell for option content\n * - Supports custom content and layout\n * - Accessible with proper ARIA attributes\n *\n * @example\n * <ListView.OptionCell>Custom cell content</ListView.OptionCell>\n */\n OptionCell: ListViewOptionCell,\n },\n);\n"],"names":["styles","children","rest"],"mappings":"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"}
|
package/dist/ListView.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { L as ListView, a as ListViewOption, b as ListViewOptionCell, L as default } from './ListView-
|
|
1
|
+
export { L as ListView, a as ListViewOption, b as ListViewOptionCell, L as default } from './ListView-D8mfK8Lu.js';
|
|
2
2
|
//# sourceMappingURL=ListView.js.map
|
|
@@ -6,7 +6,7 @@ import { S as Spinner } from './Spinner-xEFwsq8_.js';
|
|
|
6
6
|
import { t as textFieldStyles } from './TextField.module-pD1felN8.js';
|
|
7
7
|
import { B as Button } from './Button-92_FKAyV.js';
|
|
8
8
|
import { I as Icon } from './Icon-BSuTVNaa.js';
|
|
9
|
-
import { F as FieldLabel } from './FieldLabel-
|
|
9
|
+
import { F as FieldLabel } from './FieldLabel-jqlQ1Ldh.js';
|
|
10
10
|
import { d as maskitoNumberOptionsGenerator, e as maskitoParseNumber, f as maskitoStringifyNumber, u as useMaskito } from './index.esm-C2ZhC_8d.js';
|
|
11
11
|
import { u as usePrevious } from './usePrevious-Bvq-5auG.js';
|
|
12
12
|
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
@@ -15,7 +15,7 @@ import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-BlIWftBb.js';
|
|
|
15
15
|
import { u as useFocusWithin } from './useFocusWithin-hi77jsrB.js';
|
|
16
16
|
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
17
17
|
import { useTrackingId } from './useTrackingId.js';
|
|
18
|
-
import { H as Helper } from './Helper-
|
|
18
|
+
import { H as Helper } from './Helper-DzVUQgUJ.js';
|
|
19
19
|
|
|
20
20
|
import './NumberField.css';function usePlatform() {
|
|
21
21
|
const [platform, setPlatform] = useState(detectPlatform());
|
|
@@ -1575,4 +1575,4 @@ const NumberField = forwardRef(
|
|
|
1575
1575
|
NumberField.displayName = "NumberField";
|
|
1576
1576
|
|
|
1577
1577
|
export { NumberField as N };
|
|
1578
|
-
//# sourceMappingURL=NumberField-
|
|
1578
|
+
//# sourceMappingURL=NumberField-CjWLnD9X.js.map
|