@servicetitan/anvil2 3.9.0 → 3.10.1
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 +46 -0
- package/dist/AiMark-2_O4tKv_.js.map +1 -1
- package/dist/Button-Dwh_Nd4l.js.map +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-CRzQKN_P.js → DataTable-D-SKKt5w.js} +53 -16
- package/dist/DataTable-D-SKKt5w.js.map +1 -0
- package/dist/{DateFieldRange-CHbrYgsD.js → DateFieldRange-DUFfyknZ.js} +51 -31
- package/dist/DateFieldRange-DUFfyknZ.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-D-KZ3NL0.js → DateFieldSingle-BZjlO0hX.js} +49 -28
- package/dist/DateFieldSingle-BZjlO0hX.js.map +1 -0
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-DouEX24o.js → DateFieldYearless-TcKb9jE2.js} +4 -2
- package/dist/DateFieldYearless-TcKb9jE2.js.map +1 -0
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-B_bImgyn.js → DateFieldYearlessRange-D9XtRNWi.js} +16 -4
- package/dist/DateFieldYearlessRange-D9XtRNWi.js.map +1 -0
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{Dialog-Clh3jaX8.js → Dialog-DjJ9wpeo.js} +2 -2
- package/dist/{Dialog-Clh3jaX8.js.map → Dialog-DjJ9wpeo.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-h2Mut1lB.js → Drawer-CZITBE8M.js} +2 -2
- package/dist/{Drawer-h2Mut1lB.js.map → Drawer-CZITBE8M.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.css +36 -34
- package/dist/DrillDown.js +1 -1
- package/dist/DrillDown.module-1VBKDZRA.js +27 -0
- package/dist/{DrillDown.module-D1Bf9_yP.js.map → DrillDown.module-1VBKDZRA.js.map} +1 -1
- package/dist/{FilterBar-CBTAkEri.js → FilterBar-B_ShYx2G.js} +28 -7
- package/dist/FilterBar-B_ShYx2G.js.map +1 -0
- package/dist/FilterBar.js +1 -1
- package/dist/{MenuFooter-BXcNxNnX.js → MenuFooter--lBF8OjJ.js} +5 -1
- package/dist/MenuFooter--lBF8OjJ.js.map +1 -0
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-CpfsWecG.js → MultiSelectFieldSync-B_vuR-ii.js} +220 -156
- package/dist/MultiSelectFieldSync-B_vuR-ii.js.map +1 -0
- package/dist/MultiSelectFieldSync.css +80 -69
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-CtyLYyDE.js → MultiSelectMenuSync-C3Y7jnJQ.js} +22 -8
- package/dist/MultiSelectMenuSync-C3Y7jnJQ.js.map +1 -0
- package/dist/{Page-B6E3Gbji.js → Page-BHBcuxcE.js} +14 -13
- package/dist/Page-BHBcuxcE.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/{Pagination-DF7iMeJe.js → Pagination-Bx_u6Uea.js} +32 -6
- package/dist/Pagination-Bx_u6Uea.js.map +1 -0
- package/dist/Pagination.js +1 -1
- package/dist/{RichTextEditor-CLo8yoUP.js → RichTextEditor-CTIGe6xA.js} +3 -3
- package/dist/{RichTextEditor-CLo8yoUP.js.map → RichTextEditor-CTIGe6xA.js.map} +1 -1
- package/dist/RichTextEditor.js +1 -1
- package/dist/{SavedFiltersButton-FcYVncxU.js → SavedFiltersButton-DV0xxLat.js} +251 -165
- package/dist/SavedFiltersButton-DV0xxLat.js.map +1 -0
- package/dist/SavedFiltersButton.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldSync-Bi8HsMYP.js → SelectFieldSync-rwfeNwN2.js} +45 -11
- package/dist/SelectFieldSync-rwfeNwN2.js.map +1 -0
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-DKg4g5nN.js → SelectMenuSync-BkC0FD5P.js} +22 -8
- package/dist/SelectMenuSync-BkC0FD5P.js.map +1 -0
- package/dist/{SelectOptions-DszNAjxB.js → SelectOptions-B3Vmtb_k.js} +2 -2
- package/dist/{SelectOptions-DszNAjxB.js.map → SelectOptions-B3Vmtb_k.js.map} +1 -1
- package/dist/{SelectTrigger-DNIc5ttg.js → SelectTrigger-BAnVo4Ln.js} +2 -2
- package/dist/{SelectTrigger-DNIc5ttg.js.map → SelectTrigger-BAnVo4Ln.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-1Cc6EUBw.js → SelectTriggerBase-D7zAT0UR.js} +8 -3
- package/dist/SelectTriggerBase-D7zAT0UR.js.map +1 -0
- package/dist/SelectTriggerBase.css +49 -47
- package/dist/SelectTriggerBase.module-mYOfdBGA.js +40 -0
- package/dist/SelectTriggerBase.module-mYOfdBGA.js.map +1 -0
- package/dist/Tab-Bqfvg8Ce.js.map +1 -1
- package/dist/Table.js +1 -1
- package/dist/Textarea-B3C7AkPj.js.map +1 -1
- package/dist/{Toolbar-2VQIjU5b.js → Toolbar-BOgHhw7K.js} +12 -3
- package/dist/Toolbar-BOgHhw7K.js.map +1 -0
- package/dist/{Toolbar-BbImThIu.js → Toolbar-DDWUuQm_.js} +24 -2
- package/dist/Toolbar-DDWUuQm_.js.map +1 -0
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-Bc0XvCM9.js → ToolbarButtonToggle-BbtKfezH.js} +18 -2
- package/dist/ToolbarButtonToggle-BbtKfezH.js.map +1 -0
- package/dist/TreeSelectField.js +1 -1
- package/dist/{TreeSelectFieldSync-DUHVmOQa.js → TreeSelectFieldSync-BRQgLPxB.js} +118 -87
- package/dist/TreeSelectFieldSync-BRQgLPxB.js.map +1 -0
- package/dist/TreeSelectFieldSync.css +44 -36
- package/dist/TreeSelectMenu.js +1 -1
- package/dist/{TreeSelectMenuSync-DVoYUG7F.js → TreeSelectMenuSync-88q0ydo5.js} +18 -6
- package/dist/TreeSelectMenuSync-88q0ydo5.js.map +1 -0
- package/dist/{YearlessDateInputWithPicker-CM9mmz8s.js → YearlessDateInputWithPicker-BquY4bCd.js} +19 -5
- package/dist/YearlessDateInputWithPicker-BquY4bCd.js.map +1 -0
- package/dist/anvParts-BGg5dgfl.js +43 -0
- package/dist/anvParts-BGg5dgfl.js.map +1 -0
- package/dist/beta.js +13 -13
- package/dist/{bulkActionTypes-BnZNAru6.js → bulkActionTypes-CWcUhKFS.js} +2 -2
- package/dist/{bulkActionTypes-BnZNAru6.js.map → bulkActionTypes-CWcUhKFS.js.map} +1 -1
- package/dist/downshift.esm-xtSnQp44.js.map +1 -1
- package/dist/{filter-state-XmqhkURU.js → filter-state-zlL4luoE.js} +153 -81
- package/dist/filter-state-zlL4luoE.js.map +1 -0
- package/dist/floating-ui.react-dom-CyrxPiI-.js.map +1 -1
- package/dist/index-DXeGMe23.js.map +1 -1
- package/dist/{index-BwNeldDw.js → index-DjirBR0l.js} +2 -2
- package/dist/{index-BwNeldDw.js.map → index-DjirBR0l.js.map} +1 -1
- package/dist/index.esm-C2ZhC_8d.js.map +1 -1
- package/dist/index.js +16 -16
- package/dist/proxy-DEehATlA.js.map +1 -1
- package/dist/src/beta/components/FilterBar/FilterBar.d.ts +3 -3
- package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +17 -3
- package/dist/src/beta/components/FilterBar/parts.d.ts +38 -0
- package/dist/src/beta/components/SavedFiltersButton/parts.d.ts +37 -0
- package/dist/src/beta/components/SavedFiltersButton/types.d.ts +2 -1
- package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +3 -2
- package/dist/src/beta/components/Table/DataTable/parts.d.ts +30 -0
- package/dist/src/beta/components/Table/internal/ResizeHandle.d.ts +3 -2
- package/dist/src/beta/components/Toolbar/Toolbar.d.ts +4 -4
- package/dist/src/beta/components/Toolbar/parts.d.ts +19 -0
- package/dist/src/beta/components/TreeSelectField/TreeSelectField.d.ts +6 -5
- package/dist/src/beta/components/TreeSelectField/parts.d.ts +23 -0
- package/dist/src/beta/components/TreeSelectField/types.d.ts +11 -4
- package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenu.d.ts +33 -2
- package/dist/src/beta/components/TreeSelectMenu/parts.d.ts +12 -0
- package/dist/src/beta/components/TreeSelectMenu/types.d.ts +3 -2
- package/dist/src/components/Combobox/ComboboxTypes.d.ts +2 -2
- package/dist/src/components/Combobox/parts.d.ts +19 -0
- package/dist/src/components/DateFieldRange/DateFieldRange.d.ts +2 -2
- package/dist/src/components/DateFieldRange/parts.d.ts +16 -0
- package/dist/src/components/DateFieldSingle/DateFieldSingle.d.ts +2 -2
- package/dist/src/components/DateFieldSingle/parts.d.ts +16 -0
- package/dist/src/components/DateFieldYearless/DateFieldYearless.d.ts +2 -2
- package/dist/src/components/DateFieldYearless/parts.d.ts +15 -0
- package/dist/src/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +2 -2
- package/dist/src/components/DateFieldYearlessRange/parts.d.ts +12 -0
- package/dist/src/components/DrillDown/DrillDown.d.ts +11 -0
- package/dist/src/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
- package/dist/src/components/MultiSelectField/internal/types.d.ts +3 -1
- package/dist/src/components/MultiSelectField/parts.d.ts +20 -0
- package/dist/src/components/MultiSelectField/types.d.ts +2 -2
- package/dist/src/components/MultiSelectMenu/parts.d.ts +12 -0
- package/dist/src/components/MultiSelectMenu/types.d.ts +3 -2
- package/dist/src/components/Pagination/Pagination.d.ts +4 -3
- package/dist/src/components/Pagination/parts.d.ts +28 -0
- package/dist/src/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
- package/dist/src/components/SelectField/parts.d.ts +18 -0
- package/dist/src/components/SelectField/types.d.ts +7 -2
- package/dist/src/components/SelectMenu/internal/useMenuInteraction.d.ts +8 -6
- package/dist/src/components/SelectMenu/parts.d.ts +12 -0
- package/dist/src/components/SelectMenu/types.d.ts +3 -2
- package/dist/src/components/SelectTrigger/internal/SelectTriggerBase.d.ts +6 -5
- package/dist/src/components/Toolbar/Toolbar.d.ts +3 -3
- package/dist/src/components/Toolbar/parts.d.ts +18 -0
- package/dist/src/internal/constants/anvParts.d.ts +81 -0
- package/dist/src/internal/testing/anvPartsContract.d.ts +24 -0
- package/dist/src/internal/types/selectFieldInternalTypes.d.ts +3 -1
- package/dist/{syncFilterUtils-UVNoFsDr.js → syncFilterUtils-YB6gRuuR.js} +11 -4
- package/dist/syncFilterUtils-YB6gRuuR.js.map +1 -0
- package/dist/{treeSync-CiU5d6rF.js → treeSync-DOen59wP.js} +24 -4
- package/dist/treeSync-DOen59wP.js.map +1 -0
- package/dist/use-reduced-motion-CqjZZ5QB.js.map +1 -1
- package/dist/{useAdaptiveView-C_WvM4-P.js → useAdaptiveView-DmhhcX-B.js} +3 -1
- package/dist/useAdaptiveView-DmhhcX-B.js.map +1 -0
- package/dist/useChipLayout-BBe6Tzyl.js +90 -0
- package/dist/useChipLayout-BBe6Tzyl.js.map +1 -0
- package/dist/{useDrillDownContext-iUvoTget.js → useDrillDownContext-D5_NjqY4.js} +2 -2
- package/dist/{useDrillDownContext-iUvoTget.js.map → useDrillDownContext-D5_NjqY4.js.map} +1 -1
- package/dist/{useDrilldown-D7DKSs7E.js → useDrilldown-glecoaI_.js} +45 -19
- package/dist/{useDrilldown-D7DKSs7E.js.map → useDrilldown-glecoaI_.js.map} +1 -1
- package/dist/{useInfiniteCombobox-COJTJxCZ.js → useInfiniteCombobox-CVAYoUvh.js} +70 -23
- package/dist/useInfiniteCombobox-CVAYoUvh.js.map +1 -0
- package/dist/{useMenuInteraction-AgrXU8kv.js → useMenuInteraction-nNF1dsrp.js} +7 -4
- package/dist/useMenuInteraction-nNF1dsrp.js.map +1 -0
- package/dist/useSize.js.map +1 -1
- package/package.json +9 -7
- package/dist/DataTable-CRzQKN_P.js.map +0 -1
- package/dist/DateFieldRange-CHbrYgsD.js.map +0 -1
- package/dist/DateFieldSingle-D-KZ3NL0.js.map +0 -1
- package/dist/DateFieldYearless-DouEX24o.js.map +0 -1
- package/dist/DateFieldYearlessRange-B_bImgyn.js.map +0 -1
- package/dist/DrillDown.module-D1Bf9_yP.js +0 -27
- package/dist/FilterBar-CBTAkEri.js.map +0 -1
- package/dist/MenuFooter-BXcNxNnX.js.map +0 -1
- package/dist/MultiSelectFieldSync-CpfsWecG.js.map +0 -1
- package/dist/MultiSelectMenuSync-CtyLYyDE.js.map +0 -1
- package/dist/Page-B6E3Gbji.js.map +0 -1
- package/dist/Pagination-DF7iMeJe.js.map +0 -1
- package/dist/SavedFiltersButton-FcYVncxU.js.map +0 -1
- package/dist/SelectFieldSync-Bi8HsMYP.js.map +0 -1
- package/dist/SelectMenuSync-DKg4g5nN.js.map +0 -1
- package/dist/SelectTriggerBase-1Cc6EUBw.js.map +0 -1
- package/dist/SelectTriggerBase.module-Brmw1nYG.js +0 -39
- package/dist/SelectTriggerBase.module-Brmw1nYG.js.map +0 -1
- package/dist/Toolbar-2VQIjU5b.js.map +0 -1
- package/dist/Toolbar-BbImThIu.js.map +0 -1
- package/dist/ToolbarButtonToggle-Bc0XvCM9.js.map +0 -1
- package/dist/TreeSelectFieldSync-DUHVmOQa.js.map +0 -1
- package/dist/TreeSelectMenuSync-DVoYUG7F.js.map +0 -1
- package/dist/YearlessDateInputWithPicker-CM9mmz8s.js.map +0 -1
- package/dist/filter-state-XmqhkURU.js.map +0 -1
- package/dist/syncFilterUtils-UVNoFsDr.js.map +0 -1
- package/dist/treeSync-CiU5d6rF.js.map +0 -1
- package/dist/useAdaptiveView-C_WvM4-P.js.map +0 -1
- package/dist/useChipLayout-BWZfKDgd.js +0 -51
- package/dist/useChipLayout-BWZfKDgd.js.map +0 -1
- package/dist/useInfiniteCombobox-COJTJxCZ.js.map +0 -1
- package/dist/useMenuInteraction-AgrXU8kv.js.map +0 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { B as Button } from './Button-Dwh_Nd4l.js';
|
|
3
|
+
import { C as COMMON_PART, A as ANV_PART_ATTR } from './anvParts-BGg5dgfl.js';
|
|
3
4
|
|
|
4
5
|
import './MenuFooter.css';const stack = "_stack_o8ro5_1";
|
|
5
6
|
const leading = "_leading_o8ro5_26";
|
|
@@ -30,6 +31,7 @@ const ClearButton = ({
|
|
|
30
31
|
onClick,
|
|
31
32
|
disabled,
|
|
32
33
|
className: fullWidth ? styles["clear-full"] : void 0,
|
|
34
|
+
...{ [ANV_PART_ATTR]: COMMON_PART.clearButton },
|
|
33
35
|
children: label
|
|
34
36
|
}
|
|
35
37
|
);
|
|
@@ -50,6 +52,7 @@ const ConfirmationRow = ({
|
|
|
50
52
|
size: "small",
|
|
51
53
|
onMouseDown: preventBlur,
|
|
52
54
|
onClick: onCancel,
|
|
55
|
+
...{ [ANV_PART_ATTR]: COMMON_PART.cancelButton },
|
|
53
56
|
children: cancelLabel
|
|
54
57
|
}
|
|
55
58
|
),
|
|
@@ -61,6 +64,7 @@ const ConfirmationRow = ({
|
|
|
61
64
|
onMouseDown: preventBlur,
|
|
62
65
|
onClick: onApply,
|
|
63
66
|
disabled: applyDisabled,
|
|
67
|
+
...{ [ANV_PART_ATTR]: COMMON_PART.applyButton },
|
|
64
68
|
children: applyLabel
|
|
65
69
|
}
|
|
66
70
|
)
|
|
@@ -112,4 +116,4 @@ const MenuFooter = ({
|
|
|
112
116
|
MenuFooter.displayName = "MenuFooter";
|
|
113
117
|
|
|
114
118
|
export { MenuFooter as M };
|
|
115
|
-
//# sourceMappingURL=MenuFooter
|
|
119
|
+
//# sourceMappingURL=MenuFooter--lBF8OjJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuFooter--lBF8OjJ.js","sources":["../src/internal/components/MenuFooter/MenuFooter.tsx"],"sourcesContent":["import type { MouseEvent, ReactNode } from \"react\";\nimport Button from \"../../../components/Button\";\nimport styles from \"./MenuFooter.module.scss\";\nimport { ANV_PART_ATTR, COMMON_PART } from \"../../constants/anvParts\";\n\n// Safari does not focus buttons on mousedown the way Chrome / Firefox do.\n// Combined with the popover's focusout listener, that means clicking a footer\n// button can fire focusout with relatedTarget=null and close the popover\n// before the click handler runs. Preventing the default on mousedown keeps the\n// previously focused element focused, sidestepping the focusout entirely.\nconst preventBlur = (e: MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n};\n\nexport type MenuFooterClearConfig = {\n onClick: () => void;\n label?: string;\n disabled?: boolean;\n};\n\nexport type MenuFooterConfirmationConfig = {\n onApply: () => void;\n onCancel: () => void;\n applyLabel?: string;\n cancelLabel?: string;\n applyDisabled?: boolean;\n};\n\nexport type MenuFooterProps = {\n /** Clear-selection button config. Omit to suppress. */\n clear?: MenuFooterClearConfig;\n /** Apply/Cancel pair config. Omit when not in confirmation mode. */\n confirmation?: MenuFooterConfirmationConfig;\n /**\n * Pre-rendered add-new affordance (AddNewItemButton or similar). Layout owns\n * its row vs. inline placement; the caller just provides the node.\n */\n addNew?: ReactNode;\n};\n\nconst ClearButton = ({\n onClick,\n label = \"Clear\",\n disabled,\n fullWidth,\n}: MenuFooterClearConfig & { fullWidth?: boolean }) => (\n <Button\n appearance=\"secondary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onClick}\n disabled={disabled}\n className={fullWidth ? styles[\"clear-full\"] : undefined}\n {...{ [ANV_PART_ATTR]: COMMON_PART.clearButton }}\n >\n {label}\n </Button>\n);\n\n/**\n * Single justified-flex row containing the Apply/Cancel pair, with an optional\n * leading element on the opposite side.\n */\nconst ConfirmationRow = ({\n applyLabel = \"Apply\",\n cancelLabel = \"Cancel\",\n onApply,\n onCancel,\n applyDisabled,\n leading,\n}: MenuFooterConfirmationConfig & { leading?: ReactNode }) => (\n <div className={styles[\"confirmation-row\"]}>\n {leading ? <div className={styles[\"leading\"]}>{leading}</div> : null}\n <div className={styles[\"trailing\"]}>\n <Button\n appearance=\"secondary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onCancel}\n {...{ [ANV_PART_ATTR]: COMMON_PART.cancelButton }}\n >\n {cancelLabel}\n </Button>\n <Button\n appearance=\"primary\"\n size=\"small\"\n onMouseDown={preventBlur}\n onClick={onApply}\n disabled={applyDisabled}\n {...{ [ANV_PART_ATTR]: COMMON_PART.applyButton }}\n >\n {applyLabel}\n </Button>\n </div>\n </div>\n);\n\n/**\n * MenuFooter composes the footer of a menu popover/dialog from up to three\n * optional pieces: a clear-selection button, an Apply/Cancel pair, and an\n * add-new affordance.\n *\n * Layout rules:\n * - clear + confirmation + addNew → [addNew full-width row] / [clear | apply cancel]\n * - clear + confirmation → [clear | apply cancel]\n * - clear + addNew → [addNew] / [clear] (stacked, both full-width)\n * - clear → [clear] (full-width)\n * - confirmation + addNew → [addNew | apply cancel] (addNew on the leading side)\n * - confirmation → [apply | cancel]\n * - addNew → [addNew]\n * - (none) → null\n */\nexport const MenuFooter = ({\n clear,\n confirmation,\n addNew,\n}: MenuFooterProps) => {\n // Branches with confirmation\n if (confirmation) {\n if (clear && addNew) {\n return (\n <div className={styles[\"stack\"]}>\n <div className={styles[\"stack-row\"]}>{addNew}</div>\n <ConfirmationRow\n {...confirmation}\n leading={<ClearButton {...clear} />}\n />\n </div>\n );\n }\n if (clear) {\n return (\n <ConfirmationRow\n {...confirmation}\n leading={<ClearButton {...clear} />}\n />\n );\n }\n return <ConfirmationRow {...confirmation} leading={addNew} />;\n }\n\n // Branches without confirmation\n if (clear && addNew) {\n return (\n <div className={styles[\"stack\"]}>\n <div className={styles[\"stack-row\"]}>{addNew}</div>\n <div className={styles[\"stack-row\"]}>\n <ClearButton {...clear} fullWidth />\n </div>\n </div>\n );\n }\n if (clear) {\n return (\n <div className={styles[\"stack-row\"]}>\n <ClearButton {...clear} fullWidth />\n </div>\n );\n }\n if (addNew) {\n return <>{addNew}</>;\n }\n return null;\n};\n\nMenuFooter.displayName = \"MenuFooter\";\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAUA,MAAM,WAAA,GAAc,CAAC,CAAA,KAAqC;AACxD,EAAA,CAAA,CAAE,cAAA,EAAe;AACnB,CAAA;AA4BA,MAAM,cAAc,CAAC;AAAA,EACnB,OAAA;AAAA,EACA,KAAA,GAAQ,OAAA;AAAA,EACR,QAAA;AAAA,EACA;AACF,CAAA,qBACE,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,UAAA,EAAW,WAAA;AAAA,IACX,IAAA,EAAK,OAAA;AAAA,IACL,WAAA,EAAa,WAAA;AAAA,IACb,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA,EAAW,SAAA,GAAY,MAAA,CAAO,YAAY,CAAA,GAAI,MAAA;AAAA,IAC7C,GAAG,EAAE,CAAC,aAAa,GAAG,YAAY,WAAA,EAAY;AAAA,IAE9C,QAAA,EAAA;AAAA;AACH,CAAA;AAOF,MAAM,kBAAkB,CAAC;AAAA,EACvB,UAAA,GAAa,OAAA;AAAA,EACb,WAAA,GAAc,QAAA;AAAA,EACd,OAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,qBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,kBAAkB,CAAA,EACtC,QAAA,EAAA;AAAA,EAAA,OAAA,uBAAW,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,SAAS,CAAA,EAAI,mBAAQ,CAAA,GAAS,IAAA;AAAA,kBAChE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,UAAU,CAAA,EAC/B,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAW,WAAA;AAAA,QACX,IAAA,EAAK,OAAA;AAAA,QACL,WAAA,EAAa,WAAA;AAAA,QACb,OAAA,EAAS,QAAA;AAAA,QACR,GAAG,EAAE,CAAC,aAAa,GAAG,YAAY,YAAA,EAAa;AAAA,QAE/C,QAAA,EAAA;AAAA;AAAA,KACH;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAW,SAAA;AAAA,QACX,IAAA,EAAK,OAAA;AAAA,QACL,WAAA,EAAa,WAAA;AAAA,QACb,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU,aAAA;AAAA,QACT,GAAG,EAAE,CAAC,aAAa,GAAG,YAAY,WAAA,EAAY;AAAA,QAE9C,QAAA,EAAA;AAAA;AAAA;AACH,GAAA,EACF;AAAA,CAAA,EACF,CAAA;AAkBK,MAAM,aAAa,CAAC;AAAA,EACzB,KAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAuB;AAErB,EAAA,IAAI,YAAA,EAAc;AAChB,IAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,MAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,OAAO,CAAA,EAC5B,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,WAAW,GAAI,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,wBAC7C,GAAA;AAAA,UAAC,eAAA;AAAA,UAAA;AAAA,YACE,GAAG,YAAA;AAAA,YACJ,OAAA,kBAAS,GAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO;AAAA;AAAA;AACnC,OAAA,EACF,CAAA;AAAA,IAEJ;AACA,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,uBACE,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACE,GAAG,YAAA;AAAA,UACJ,OAAA,kBAAS,GAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO;AAAA;AAAA,OACnC;AAAA,IAEJ;AACA,IAAA,uBAAO,GAAA,CAAC,eAAA,EAAA,EAAiB,GAAG,YAAA,EAAc,SAAS,MAAA,EAAQ,CAAA;AAAA,EAC7D;AAGA,EAAA,IAAI,SAAS,MAAA,EAAQ;AACnB,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,OAAO,CAAA,EAC5B,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,WAAW,GAAI,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,sBAC7C,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,WAAW,CAAA,EAChC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO,SAAA,EAAS,IAAA,EAAC,CAAA,EACpC;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,WAAW,CAAA,EAChC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO,SAAA,EAAS,IAAA,EAAC,CAAA,EACpC,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,uCAAU,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,EACnB;AACA,EAAA,OAAO,IAAA;AACT;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;;"}
|
package/dist/MultiSelectField.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-
|
|
1
|
+
export { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-B_vuR-ii.js';
|
|
2
2
|
//# sourceMappingURL=MultiSelectField.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useRef, useState, useMemo, useEffect, forwardRef, useId, useCallback } from 'react';
|
|
3
3
|
import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
|
|
4
|
-
import { a as useToggleSelection, M as MultiSelectOptions, u as useBulkActionRunner, r as resolveBulkActionCheckState, b as resolveBulkActionLabel } from './bulkActionTypes-
|
|
4
|
+
import { a as useToggleSelection, M as MultiSelectOptions, u as useBulkActionRunner, r as resolveBulkActionCheckState, b as resolveBulkActionLabel } from './bulkActionTypes-CWcUhKFS.js';
|
|
5
5
|
import { c as cx } from './index-De1g9FRV.js';
|
|
6
6
|
import { B as Button } from './Button-Dwh_Nd4l.js';
|
|
7
7
|
import { C as Chip } from './Chip-D6Q0J0Xe.js';
|
|
@@ -9,48 +9,59 @@ import { F as Flex } from './Flex-CRF7gj0_.js';
|
|
|
9
9
|
import { m as mergeRefs, u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
10
10
|
import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
|
|
11
11
|
import { S as SvgClose } from './close-DZj38AEh.js';
|
|
12
|
-
import { u as useChipLayout } from './useChipLayout-
|
|
12
|
+
import { u as useChipLayout } from './useChipLayout-BBe6Tzyl.js';
|
|
13
|
+
import { C as COMMON_PART, A as ANV_PART_ATTR } from './anvParts-BGg5dgfl.js';
|
|
13
14
|
import { S as SelectFieldLabel } from './SelectFieldLabel-CjY6zFJA.js';
|
|
14
|
-
import { s as styles$1 } from './SelectTriggerBase.module-
|
|
15
|
+
import { s as styles$1 } from './SelectTriggerBase.module-mYOfdBGA.js';
|
|
15
16
|
import { u as useDownshiftEnvironment, a as useCombobox, b as useSelect } from './downshift.esm-xtSnQp44.js';
|
|
16
|
-
import { a as useProcessedOptions, b as buildSelectItems, s as shouldShowAddNewItem, A as AddNewItemButton, u as useSelectOrchestration, d as defaultSyncFilter, t as toSyncFilterFn } from './syncFilterUtils-
|
|
17
|
-
import { O as OptionsDialog, a as OptionsPopover } from './useAdaptiveView-
|
|
17
|
+
import { a as useProcessedOptions, b as buildSelectItems, s as shouldShowAddNewItem, A as AddNewItemButton, u as useSelectOrchestration, d as defaultSyncFilter, t as toSyncFilterFn } from './syncFilterUtils-YB6gRuuR.js';
|
|
18
|
+
import { O as OptionsDialog, a as OptionsPopover } from './useAdaptiveView-DmhhcX-B.js';
|
|
18
19
|
import { F as FieldMessage } from './FieldMessage-mTGdycSA.js';
|
|
19
20
|
import { u as useDebouncedCallback } from './useDebouncedCallback-DLkapjcP.js';
|
|
20
21
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
|
|
21
22
|
import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
|
|
22
23
|
|
|
23
|
-
import './MultiSelectFieldSync.css';const input = "
|
|
24
|
-
const error = "
|
|
25
|
-
const disabled = "
|
|
26
|
-
const highlight = "
|
|
27
|
-
const chip = "
|
|
28
|
-
const prefix = "
|
|
29
|
-
const suffix = "
|
|
30
|
-
const small = "
|
|
31
|
-
const large = "
|
|
24
|
+
import './MultiSelectFieldSync.css';const input = "_input_14qyc_26";
|
|
25
|
+
const error = "_error_14qyc_55";
|
|
26
|
+
const disabled = "_disabled_14qyc_62";
|
|
27
|
+
const highlight = "_highlight_14qyc_74";
|
|
28
|
+
const chip = "_chip_14qyc_157";
|
|
29
|
+
const prefix = "_prefix_14qyc_247";
|
|
30
|
+
const suffix = "_suffix_14qyc_248";
|
|
31
|
+
const small = "_small_14qyc_323";
|
|
32
|
+
const large = "_large_14qyc_329";
|
|
32
33
|
const styles = {
|
|
33
|
-
"input-wrapper": "_input-
|
|
34
|
+
"input-wrapper": "_input-wrapper_14qyc_26",
|
|
34
35
|
input: input,
|
|
35
36
|
error: error,
|
|
36
37
|
disabled: disabled,
|
|
38
|
+
"is-disabled": "_is-disabled_14qyc_68",
|
|
37
39
|
highlight: highlight,
|
|
38
|
-
"input-flex": "_input-
|
|
39
|
-
"rows-wrapper": "_rows-
|
|
40
|
-
"chip-wrapper": "_chip-
|
|
40
|
+
"input-flex": "_input-flex_14qyc_78",
|
|
41
|
+
"rows-wrapper": "_rows-wrapper_14qyc_136",
|
|
42
|
+
"chip-wrapper": "_chip-wrapper_14qyc_157",
|
|
41
43
|
chip: chip,
|
|
42
|
-
"buttons-wrapper": "_buttons-
|
|
43
|
-
"close-button-wrapper": "_close-button-
|
|
44
|
-
"close-button": "_close-
|
|
45
|
-
"toggle-button-wrapper": "_toggle-button-
|
|
46
|
-
"toggle-button": "_toggle-
|
|
44
|
+
"buttons-wrapper": "_buttons-wrapper_14qyc_169",
|
|
45
|
+
"close-button-wrapper": "_close-button-wrapper_14qyc_186",
|
|
46
|
+
"close-button": "_close-button_14qyc_186",
|
|
47
|
+
"toggle-button-wrapper": "_toggle-button-wrapper_14qyc_209",
|
|
48
|
+
"toggle-button": "_toggle-button_14qyc_209",
|
|
47
49
|
prefix: prefix,
|
|
48
50
|
suffix: suffix,
|
|
49
|
-
"no-clear-button": "_no-clear-
|
|
50
|
-
"no-toggle-button": "_no-toggle-
|
|
51
|
+
"no-clear-button": "_no-clear-button_14qyc_315",
|
|
52
|
+
"no-toggle-button": "_no-toggle-button_14qyc_319",
|
|
51
53
|
small: small,
|
|
52
54
|
large: large};
|
|
53
55
|
|
|
56
|
+
const PARTS = {
|
|
57
|
+
trigger: COMMON_PART.trigger,
|
|
58
|
+
input: COMMON_PART.input,
|
|
59
|
+
chip: COMMON_PART.chip,
|
|
60
|
+
overflowChip: COMMON_PART.overflowChip,
|
|
61
|
+
clearButton: COMMON_PART.clearButton,
|
|
62
|
+
toggleButton: COMMON_PART.toggleButton
|
|
63
|
+
};
|
|
64
|
+
|
|
54
65
|
const MultiSelectFieldInput = ({
|
|
55
66
|
placeholder,
|
|
56
67
|
size,
|
|
@@ -89,17 +100,24 @@ const MultiSelectFieldInput = ({
|
|
|
89
100
|
[styles["no-clear-button"]]: disableClearButton,
|
|
90
101
|
[styles["no-toggle-button"]]: disableToggleButton,
|
|
91
102
|
[styles["disabled"]]: disabled || readOnly,
|
|
103
|
+
[styles["is-disabled"]]: disabled,
|
|
92
104
|
[styles["highlight"]]: isHighlighted
|
|
93
105
|
});
|
|
94
106
|
const handleInputKeyDown = (e) => {
|
|
95
107
|
if (e.key === "Backspace" && !inputProps?.value && selectedOptions.length > 0 && onRemoveOption && !disabled && !readOnly) {
|
|
96
|
-
|
|
108
|
+
const lastRemovable = [...selectedOptions].reverse().find((option) => !option.disabled);
|
|
109
|
+
if (lastRemovable) {
|
|
110
|
+
onRemoveOption(lastRemovable);
|
|
111
|
+
}
|
|
97
112
|
}
|
|
98
113
|
if (inputProps?.onKeyDown) {
|
|
99
114
|
inputProps.onKeyDown(e);
|
|
100
115
|
}
|
|
101
116
|
};
|
|
102
117
|
const handleWrapperClick = (e) => {
|
|
118
|
+
if (disabled) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
103
121
|
const target = e.target;
|
|
104
122
|
if (target.closest("button") || target.tagName === "INPUT") {
|
|
105
123
|
return;
|
|
@@ -115,55 +133,67 @@ const MultiSelectFieldInput = ({
|
|
|
115
133
|
ref: inputWrapperRef,
|
|
116
134
|
...htmlInputWrapperProps,
|
|
117
135
|
className: cx(inputWrapperClassNames, htmlInputWrapperProps?.className),
|
|
136
|
+
"aria-disabled": disabled || void 0,
|
|
118
137
|
onClick: handleWrapperClick,
|
|
119
138
|
children: [
|
|
120
139
|
prefix ? /* @__PURE__ */ jsx("div", { className: styles["prefix"], children: prefix }) : null,
|
|
121
|
-
/* @__PURE__ */ jsxs(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
140
|
+
/* @__PURE__ */ jsxs(
|
|
141
|
+
"div",
|
|
142
|
+
{
|
|
143
|
+
className: styles["rows-wrapper"],
|
|
144
|
+
ref: rowsRef,
|
|
145
|
+
"data-single-row": singleRow || void 0,
|
|
146
|
+
children: [
|
|
147
|
+
selectedOptions.length > 0 && onRemoveOption ? selectedOptions.slice(0, displayCount).map((option, index) => /* @__PURE__ */ jsx(
|
|
148
|
+
"div",
|
|
149
|
+
{
|
|
150
|
+
className: styles["chip-wrapper"],
|
|
151
|
+
children: /* @__PURE__ */ jsx(
|
|
152
|
+
Chip,
|
|
153
|
+
{
|
|
154
|
+
...getChipProps?.(option),
|
|
155
|
+
...{ [ANV_PART_ATTR]: PARTS.chip },
|
|
156
|
+
label: option.label,
|
|
157
|
+
onClose: disabled || readOnly || option.disabled ? void 0 : () => onRemoveOption(option),
|
|
158
|
+
className: styles["chip"],
|
|
159
|
+
title: option.label
|
|
160
|
+
}
|
|
161
|
+
)
|
|
162
|
+
},
|
|
163
|
+
`selected-item-${option.id}-${index}`
|
|
164
|
+
)) : null,
|
|
165
|
+
hiddenCount > 0 ? /* @__PURE__ */ jsx("div", { className: styles["chip-wrapper"], children: /* @__PURE__ */ jsx(
|
|
127
166
|
Chip,
|
|
128
167
|
{
|
|
129
|
-
|
|
130
|
-
label: option.label,
|
|
131
|
-
onClose: disabled || readOnly ? void 0 : () => onRemoveOption(option),
|
|
168
|
+
label: `+${hiddenCount}`,
|
|
132
169
|
className: styles["chip"],
|
|
133
|
-
title: option.label
|
|
170
|
+
title: selectedOptions.slice(displayCount).map((option) => option.label).join(", "),
|
|
171
|
+
...{ [ANV_PART_ATTR]: PARTS.overflowChip }
|
|
134
172
|
}
|
|
135
|
-
)
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
className: cx(styles["input"], inputProps?.className, {
|
|
160
|
-
[styles["error"]]: error
|
|
161
|
-
})
|
|
162
|
-
}
|
|
163
|
-
),
|
|
164
|
-
suffix ? /* @__PURE__ */ jsx("div", { className: styles["suffix"], children: suffix }) : null
|
|
165
|
-
] })
|
|
166
|
-
] }),
|
|
173
|
+
) }) : null,
|
|
174
|
+
/* @__PURE__ */ jsxs(Flex, { className: styles["input-flex"], alignItems: "center", children: [
|
|
175
|
+
/* @__PURE__ */ jsx(
|
|
176
|
+
"input",
|
|
177
|
+
{
|
|
178
|
+
id,
|
|
179
|
+
type: "text",
|
|
180
|
+
placeholder,
|
|
181
|
+
disabled,
|
|
182
|
+
readOnly,
|
|
183
|
+
...inputProps,
|
|
184
|
+
...{ [ANV_PART_ATTR]: PARTS.input },
|
|
185
|
+
ref: mergedInputRef,
|
|
186
|
+
onKeyDown: handleInputKeyDown,
|
|
187
|
+
className: cx(styles["input"], inputProps?.className, {
|
|
188
|
+
[styles["error"]]: error
|
|
189
|
+
})
|
|
190
|
+
}
|
|
191
|
+
),
|
|
192
|
+
suffix ? /* @__PURE__ */ jsx("div", { className: styles["suffix"], children: suffix }) : null
|
|
193
|
+
] })
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
),
|
|
167
197
|
/* @__PURE__ */ jsxs("div", { className: styles["buttons-wrapper"], children: [
|
|
168
198
|
disableClearButton ? null : /* @__PURE__ */ jsx("div", { className: styles["close-button-wrapper"], children: /* @__PURE__ */ jsx(
|
|
169
199
|
Button,
|
|
@@ -173,6 +203,7 @@ const MultiSelectFieldInput = ({
|
|
|
173
203
|
appearance: "ghost",
|
|
174
204
|
size: "small",
|
|
175
205
|
className: styles["close-button"],
|
|
206
|
+
...{ [ANV_PART_ATTR]: PARTS.clearButton },
|
|
176
207
|
onClick: () => {
|
|
177
208
|
onClear?.();
|
|
178
209
|
}
|
|
@@ -185,8 +216,9 @@ const MultiSelectFieldInput = ({
|
|
|
185
216
|
"aria-label": "toggle menu",
|
|
186
217
|
appearance: "ghost",
|
|
187
218
|
size: "small",
|
|
188
|
-
disabled,
|
|
189
219
|
...toggleButtonProps,
|
|
220
|
+
disabled,
|
|
221
|
+
...{ [ANV_PART_ATTR]: PARTS.toggleButton },
|
|
190
222
|
className: cx(
|
|
191
223
|
styles["toggle-button"],
|
|
192
224
|
toggleButtonProps?.className
|
|
@@ -496,7 +528,8 @@ const MultiSelectFieldComboboxMode = ({
|
|
|
496
528
|
addItemLabel,
|
|
497
529
|
onAddNewItem,
|
|
498
530
|
handleRemoveOption,
|
|
499
|
-
handleClear
|
|
531
|
+
handleClear,
|
|
532
|
+
dataAttributes
|
|
500
533
|
}) => {
|
|
501
534
|
const listRef = useRef(null);
|
|
502
535
|
const debouncedOptionLoader = useDebouncedCallback((inputValue2) => {
|
|
@@ -572,6 +605,8 @@ const MultiSelectFieldComboboxMode = ({
|
|
|
572
605
|
return /* @__PURE__ */ jsxs(
|
|
573
606
|
"div",
|
|
574
607
|
{
|
|
608
|
+
...dataAttributes,
|
|
609
|
+
"data-anv": "multi-select-field",
|
|
575
610
|
className: className ? `${styles$1["search-field"]} ${className}` : styles$1["search-field"],
|
|
576
611
|
style: { ...layoutStyles, ...style },
|
|
577
612
|
ref: wrapperDivRef,
|
|
@@ -597,7 +632,7 @@ const MultiSelectFieldComboboxMode = ({
|
|
|
597
632
|
disableToggleButton: false,
|
|
598
633
|
placeholder,
|
|
599
634
|
disableClearButton,
|
|
600
|
-
toggleButtonProps: getToggleButtonProps(),
|
|
635
|
+
toggleButtonProps: getToggleButtonProps({ disabled: !!disabled }),
|
|
601
636
|
onClear: handleClear,
|
|
602
637
|
id: `${id}-input`,
|
|
603
638
|
inputProps: getInputProps({
|
|
@@ -689,6 +724,8 @@ const MultiSelectFieldComboboxMode = ({
|
|
|
689
724
|
return /* @__PURE__ */ jsxs(
|
|
690
725
|
"div",
|
|
691
726
|
{
|
|
727
|
+
...dataAttributes,
|
|
728
|
+
"data-anv": "multi-select-field",
|
|
692
729
|
className: className ? `${styles$1["search-field"]} ${className}` : styles$1["search-field"],
|
|
693
730
|
style: { ...layoutStyles, ...style },
|
|
694
731
|
children: [
|
|
@@ -715,7 +752,7 @@ const MultiSelectFieldComboboxMode = ({
|
|
|
715
752
|
"aria-describedby": [hasHelperText && helperUid, moreInfo && moreInfoId].filter(Boolean).join(" ") || void 0,
|
|
716
753
|
"aria-invalid": error ? true : void 0
|
|
717
754
|
}),
|
|
718
|
-
toggleButtonProps: getToggleButtonProps(),
|
|
755
|
+
toggleButtonProps: getToggleButtonProps({ disabled: !!disabled }),
|
|
719
756
|
disableToggleButton: false,
|
|
720
757
|
placeholder,
|
|
721
758
|
disableClearButton,
|
|
@@ -813,63 +850,93 @@ const MultiSelectFieldTrigger = ({
|
|
|
813
850
|
[styles["large"]]: size === "large",
|
|
814
851
|
[styles["no-clear-button"]]: disableClearButton,
|
|
815
852
|
[styles["disabled"]]: disabled || readOnly,
|
|
853
|
+
[styles["is-disabled"]]: disabled,
|
|
816
854
|
[styles["highlight"]]: isHighlighted
|
|
817
855
|
});
|
|
818
|
-
return /* @__PURE__ */ jsxs(
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
e.stopPropagation();
|
|
841
|
-
onRemoveOption(option);
|
|
842
|
-
triggerRef.current?.focus();
|
|
843
|
-
},
|
|
844
|
-
className: styles["chip"],
|
|
845
|
-
title: option.label
|
|
846
|
-
}
|
|
847
|
-
)
|
|
848
|
-
},
|
|
849
|
-
`selected-item-${option.id}-${index}`
|
|
850
|
-
)) : null,
|
|
851
|
-
hiddenCount > 0 ? /* @__PURE__ */ jsx("div", { className: styles["chip-wrapper"], children: /* @__PURE__ */ jsx(
|
|
852
|
-
Chip,
|
|
853
|
-
{
|
|
854
|
-
label: `+${hiddenCount}`,
|
|
855
|
-
className: styles["chip"],
|
|
856
|
-
title: selectedOptions.slice(displayCount).map((option) => option.label).join(", ")
|
|
857
|
-
}
|
|
858
|
-
) }) : null,
|
|
859
|
-
selectedOptions.length === 0 ? /* @__PURE__ */ jsxs(Flex, { className: styles["input-flex"], alignItems: "center", children: [
|
|
860
|
-
/* @__PURE__ */ jsx(
|
|
856
|
+
return /* @__PURE__ */ jsxs(
|
|
857
|
+
"div",
|
|
858
|
+
{
|
|
859
|
+
ref: mergedRef,
|
|
860
|
+
...restToggleButtonProps,
|
|
861
|
+
popoverTarget,
|
|
862
|
+
id,
|
|
863
|
+
"aria-disabled": disabled || void 0,
|
|
864
|
+
onClick: disabled ? void 0 : restToggleButtonProps.onClick,
|
|
865
|
+
onKeyDown: disabled ? void 0 : restToggleButtonProps.onKeyDown,
|
|
866
|
+
...{ [ANV_PART_ATTR]: PARTS.trigger },
|
|
867
|
+
className: cx(inputWrapperClassNames, restToggleButtonProps?.className),
|
|
868
|
+
children: [
|
|
869
|
+
prefix ? /* @__PURE__ */ jsx("div", { className: styles["prefix"], children: prefix }) : null,
|
|
870
|
+
/* @__PURE__ */ jsxs(
|
|
871
|
+
"div",
|
|
872
|
+
{
|
|
873
|
+
className: styles["rows-wrapper"],
|
|
874
|
+
ref: rowsRef,
|
|
875
|
+
"data-single-row": singleRow || void 0,
|
|
876
|
+
children: [
|
|
877
|
+
selectedOptions.length > 0 && onRemoveOption ? selectedOptions.slice(0, displayCount).map((option, index) => /* @__PURE__ */ jsx(
|
|
861
878
|
"div",
|
|
862
879
|
{
|
|
863
|
-
className:
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
880
|
+
className: styles["chip-wrapper"],
|
|
881
|
+
children: /* @__PURE__ */ jsx(
|
|
882
|
+
Chip,
|
|
883
|
+
{
|
|
884
|
+
...getChipProps?.(option),
|
|
885
|
+
...{ [ANV_PART_ATTR]: PARTS.chip },
|
|
886
|
+
label: option.label,
|
|
887
|
+
onClose: disabled || readOnly || option.disabled ? void 0 : (e) => {
|
|
888
|
+
e.stopPropagation();
|
|
889
|
+
onRemoveOption(option);
|
|
890
|
+
triggerRef.current?.focus();
|
|
891
|
+
},
|
|
892
|
+
className: styles["chip"],
|
|
893
|
+
title: option.label
|
|
894
|
+
}
|
|
895
|
+
)
|
|
896
|
+
},
|
|
897
|
+
`selected-item-${option.id}-${index}`
|
|
898
|
+
)) : null,
|
|
899
|
+
hiddenCount > 0 ? /* @__PURE__ */ jsx("div", { className: styles["chip-wrapper"], children: /* @__PURE__ */ jsx(
|
|
900
|
+
Chip,
|
|
901
|
+
{
|
|
902
|
+
label: `+${hiddenCount}`,
|
|
903
|
+
className: styles["chip"],
|
|
904
|
+
title: selectedOptions.slice(displayCount).map((option) => option.label).join(", "),
|
|
905
|
+
...{ [ANV_PART_ATTR]: PARTS.overflowChip }
|
|
867
906
|
}
|
|
868
|
-
),
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
907
|
+
) }) : null,
|
|
908
|
+
selectedOptions.length === 0 ? /* @__PURE__ */ jsxs(Flex, { className: styles["input-flex"], alignItems: "center", children: [
|
|
909
|
+
/* @__PURE__ */ jsx(
|
|
910
|
+
"div",
|
|
911
|
+
{
|
|
912
|
+
className: cx(styles["input"], {
|
|
913
|
+
[styles["error"]]: error
|
|
914
|
+
}),
|
|
915
|
+
children: placeholder
|
|
916
|
+
}
|
|
917
|
+
),
|
|
918
|
+
suffix ? /* @__PURE__ */ jsx("div", { className: styles["suffix"], children: suffix }) : null
|
|
919
|
+
] }) : null
|
|
920
|
+
]
|
|
921
|
+
}
|
|
922
|
+
),
|
|
923
|
+
/* @__PURE__ */ jsxs("div", { className: styles["buttons-wrapper"], children: [
|
|
924
|
+
disableClearButton ? null : /* @__PURE__ */ jsx("div", { className: styles["close-button-wrapper"], children: /* @__PURE__ */ jsx(
|
|
925
|
+
Button,
|
|
926
|
+
{
|
|
927
|
+
icon: SvgClose,
|
|
928
|
+
"aria-label": "clear selection",
|
|
929
|
+
appearance: "ghost",
|
|
930
|
+
size: "small",
|
|
931
|
+
className: styles["close-button"],
|
|
932
|
+
...{ [ANV_PART_ATTR]: PARTS.clearButton },
|
|
933
|
+
onClick: (e) => {
|
|
934
|
+
e.stopPropagation();
|
|
935
|
+
onClear?.();
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
) }),
|
|
939
|
+
/* @__PURE__ */ jsx("div", { className: styles["toggle-button-wrapper"], children: /* @__PURE__ */ jsx(
|
|
873
940
|
Button,
|
|
874
941
|
{
|
|
875
942
|
icon: SvgChevronRight,
|
|
@@ -878,34 +945,14 @@ const MultiSelectFieldTrigger = ({
|
|
|
878
945
|
size: "small",
|
|
879
946
|
disabled,
|
|
880
947
|
tabIndex: -1,
|
|
948
|
+
...{ [ANV_PART_ATTR]: PARTS.toggleButton },
|
|
881
949
|
className: styles["toggle-button"]
|
|
882
950
|
}
|
|
883
|
-
) })
|
|
884
|
-
]
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
"div",
|
|
889
|
-
{
|
|
890
|
-
className: styles["buttons-wrapper"],
|
|
891
|
-
style: { insetInlineEnd: "2rem" },
|
|
892
|
-
children: /* @__PURE__ */ jsx("div", { className: styles["close-button-wrapper"], children: /* @__PURE__ */ jsx(
|
|
893
|
-
Button,
|
|
894
|
-
{
|
|
895
|
-
icon: SvgClose,
|
|
896
|
-
"aria-label": "clear selection",
|
|
897
|
-
appearance: "ghost",
|
|
898
|
-
size: "small",
|
|
899
|
-
className: styles["close-button"],
|
|
900
|
-
onClick: (e) => {
|
|
901
|
-
e.stopPropagation();
|
|
902
|
-
onClear?.();
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
|
-
) })
|
|
906
|
-
}
|
|
907
|
-
)
|
|
908
|
-
] });
|
|
951
|
+
) })
|
|
952
|
+
] })
|
|
953
|
+
]
|
|
954
|
+
}
|
|
955
|
+
);
|
|
909
956
|
};
|
|
910
957
|
MultiSelectFieldTrigger.displayName = "MultiSelectFieldTrigger";
|
|
911
958
|
|
|
@@ -1110,7 +1157,8 @@ const MultiSelectFieldSelectMode = ({
|
|
|
1110
1157
|
addItemLabel,
|
|
1111
1158
|
onAddNewItem,
|
|
1112
1159
|
handleRemoveOption,
|
|
1113
|
-
handleClear
|
|
1160
|
+
handleClear,
|
|
1161
|
+
dataAttributes
|
|
1114
1162
|
}) => {
|
|
1115
1163
|
const listRef = useRef(null);
|
|
1116
1164
|
const {
|
|
@@ -1180,6 +1228,8 @@ const MultiSelectFieldSelectMode = ({
|
|
|
1180
1228
|
return /* @__PURE__ */ jsxs(
|
|
1181
1229
|
"div",
|
|
1182
1230
|
{
|
|
1231
|
+
...dataAttributes,
|
|
1232
|
+
"data-anv": "multi-select-field",
|
|
1183
1233
|
className: className ? `${styles$1["search-field"]} ${className}` : styles$1["search-field"],
|
|
1184
1234
|
style: { ...layoutStyles, ...style },
|
|
1185
1235
|
ref: wrapperDivRef,
|
|
@@ -1271,6 +1321,8 @@ const MultiSelectFieldSelectMode = ({
|
|
|
1271
1321
|
return /* @__PURE__ */ jsxs(
|
|
1272
1322
|
"div",
|
|
1273
1323
|
{
|
|
1324
|
+
...dataAttributes,
|
|
1325
|
+
"data-anv": "multi-select-field",
|
|
1274
1326
|
className: className ? `${styles$1["search-field"]} ${className}` : styles$1["search-field"],
|
|
1275
1327
|
style: { ...layoutStyles, ...style },
|
|
1276
1328
|
children: [
|
|
@@ -1357,6 +1409,9 @@ const MultiSelectFieldSelectMode = ({
|
|
|
1357
1409
|
|
|
1358
1410
|
const MultiSelectField = forwardRef((propsWithLayout, ref) => {
|
|
1359
1411
|
const { layoutStyles, componentProps } = useLayoutPropsUtil(propsWithLayout);
|
|
1412
|
+
const dataAttributes = Object.fromEntries(
|
|
1413
|
+
Object.entries(componentProps).filter(([key]) => key.startsWith("data-"))
|
|
1414
|
+
);
|
|
1360
1415
|
const inputWrapperRef = useRef(null);
|
|
1361
1416
|
const {
|
|
1362
1417
|
id: idProp,
|
|
@@ -1435,6 +1490,10 @@ const MultiSelectField = forwardRef((propsWithLayout, ref) => {
|
|
|
1435
1490
|
});
|
|
1436
1491
|
const handleRemoveOption = useCallback(
|
|
1437
1492
|
(option) => {
|
|
1493
|
+
const target = selectedOptions.find((opt) => opt.id === option.id);
|
|
1494
|
+
if (target?.disabled) {
|
|
1495
|
+
return;
|
|
1496
|
+
}
|
|
1438
1497
|
onSelectedOptionsChange(
|
|
1439
1498
|
selectedOptions.filter((opt) => opt.id !== option.id)
|
|
1440
1499
|
);
|
|
@@ -1442,9 +1501,13 @@ const MultiSelectField = forwardRef((propsWithLayout, ref) => {
|
|
|
1442
1501
|
[selectedOptions, onSelectedOptionsChange]
|
|
1443
1502
|
);
|
|
1444
1503
|
const handleClear = useCallback(() => {
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1504
|
+
const lockedOptions = selectedOptions.filter((opt) => opt.disabled);
|
|
1505
|
+
onSelectedOptionsChange(lockedOptions);
|
|
1506
|
+
}, [selectedOptions, onSelectedOptionsChange]);
|
|
1507
|
+
const removableSelectedCount = selectedOptions.filter(
|
|
1508
|
+
(opt) => !opt.disabled
|
|
1509
|
+
).length;
|
|
1510
|
+
const disableClearButton = removableSelectedCount === 0 || isDisabledOrReadOnly;
|
|
1448
1511
|
const { pending: bulkPending, runBulk } = useBulkActionRunner({
|
|
1449
1512
|
setDraft: onSelectedOptionsChange
|
|
1450
1513
|
});
|
|
@@ -1531,7 +1594,8 @@ const MultiSelectField = forwardRef((propsWithLayout, ref) => {
|
|
|
1531
1594
|
addItemLabel,
|
|
1532
1595
|
onAddNewItem,
|
|
1533
1596
|
handleRemoveOption,
|
|
1534
|
-
handleClear
|
|
1597
|
+
handleClear,
|
|
1598
|
+
dataAttributes
|
|
1535
1599
|
};
|
|
1536
1600
|
if (disableSearch) {
|
|
1537
1601
|
return /* @__PURE__ */ jsx(MultiSelectFieldSelectMode, { ...baseProps });
|
|
@@ -1661,4 +1725,4 @@ const MultiSelectFieldSync = (props) => {
|
|
|
1661
1725
|
};
|
|
1662
1726
|
|
|
1663
1727
|
export { MultiSelectField as M, MultiSelectFieldSync as a };
|
|
1664
|
-
//# sourceMappingURL=MultiSelectFieldSync-
|
|
1728
|
+
//# sourceMappingURL=MultiSelectFieldSync-B_vuR-ii.js.map
|