@procore/core-react 12.35.0 → 12.37.0
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 +52 -0
- package/dist/AnchorNavigation/AnchorNavigation.styles.js +3 -3
- package/dist/Avatar/Avatar.styles.js +5 -5
- package/dist/AvatarStack/AvatarStack.styles.js +7 -7
- package/dist/Badge/Badge.styles.js +2 -2
- package/dist/BadgePill/BadgePill.styles.js +4 -4
- package/dist/Banner/Banner.styles.js +10 -10
- package/dist/Box/Box.styles.js +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
- package/dist/Button/Button.js +0 -1
- package/dist/Button/Button.js.map +1 -1
- package/dist/Button/Button.styles.js +5 -5
- package/dist/Calendar/Calendar.styles.js +9 -9
- package/dist/Card/Card.styles.js +1 -1
- package/dist/Checkbox/Checkbox.styles.js +6 -6
- package/dist/Checkbox/CheckboxTooltip.js +1 -1
- package/dist/ContactItem/ContactItem.styles.js +5 -5
- package/dist/Content/Content.styles.js +2 -2
- package/dist/DateInput/DateInput.js +2 -3
- package/dist/DateInput/DateInput.js.map +1 -1
- package/dist/DateInput/DateInput.styles.js +9 -9
- package/dist/DateInput/DateInput.styles.js.map +1 -1
- package/dist/DateSelect/DateSelect.js +1 -1
- package/dist/DateSelect/DateSelect.js.map +1 -1
- package/dist/DetailPage/DetailPage.styles.js +7 -7
- package/dist/Dropdown/Dropdown.js +0 -4
- package/dist/Dropdown/Dropdown.js.map +1 -1
- package/dist/Dropdown/Dropdown.styles.js +3 -3
- package/dist/DropdownFlyout/DropdownFlyout.js +8 -3
- package/dist/DropdownFlyout/DropdownFlyout.js.map +1 -1
- package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
- package/dist/DropdownFlyout/DropdownFlyout.types.d.ts +1 -0
- package/dist/DropdownFlyout/DropdownFlyout.types.js.map +1 -1
- package/dist/Dropzone/Dropzone.js +1 -1
- package/dist/Dropzone/Dropzone.styles.js +9 -9
- package/dist/EmptyState/EmptyState.styles.js +6 -6
- package/dist/Field/Field.styles.js +3 -3
- package/dist/FileList/FileList.styles.js +4 -4
- package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
- package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
- package/dist/FileSelect/FileSelect.styles.js +2 -2
- package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
- package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
- package/dist/FileSelect/GridSource/GridSource.js +2 -1
- package/dist/FileSelect/GridSource/GridSource.js.map +1 -1
- package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
- package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
- package/dist/FileSelect/SourceItem/SourceItem.js +19 -16
- package/dist/FileSelect/SourceItem/SourceItem.js.map +1 -1
- package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
- package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
- package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
- package/dist/FileToken/FileToken.styles.js +4 -4
- package/dist/FilterToken/FilterToken.styles.js +5 -5
- package/dist/FlexList/FlexList.styles.js +1 -1
- package/dist/Form/Form.styles.js +14 -14
- package/dist/Form/StyledFormikForm.styles.js +2 -2
- package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
- package/dist/Grid/Grid.styles.js +2 -2
- package/dist/GroupSelect/GroupSelect.styles.js +1 -1
- package/dist/Input/Input.styles.js +2 -2
- package/dist/Input/Input.styles.js.map +1 -1
- package/dist/Link/Link.styles.js +1 -1
- package/dist/ListPage/ListPage.styles.js +8 -8
- package/dist/Loader/Loader.styles.js +2 -2
- package/dist/MenuImperative/MenuImperative.styles.js +10 -10
- package/dist/Modal/Modal.styles.js +13 -13
- package/dist/MultiSelect/MultiSelect.js +3 -3
- package/dist/MultiSelect/MultiSelect.js.map +1 -1
- package/dist/MultiSelect/MultiSelect.styles.d.ts +7 -4
- package/dist/MultiSelect/MultiSelect.styles.js +18 -10
- package/dist/MultiSelect/MultiSelect.styles.js.map +1 -1
- package/dist/NextMenu/NextMenu.styles.js +3 -3
- package/dist/Notation/Notation.js +1 -1
- package/dist/NumberInput/NumberInput.styles.js +9 -9
- package/dist/NumberInput/NumberInput.styles.js.map +1 -1
- package/dist/Overlay/OverlayArrow.styles.js +1 -1
- package/dist/OverlayTrigger/OverlayTrigger.js +16 -0
- package/dist/OverlayTrigger/OverlayTrigger.js.map +1 -1
- package/dist/PageLayout/PageLayout.styles.js +16 -16
- package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +1 -1
- package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
- package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
- package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
- package/dist/Pagination/Pagination.styles.js +6 -6
- package/dist/Pagination/Pagination.styles.js.map +1 -1
- package/dist/Pagination/Pagination.types.d.ts +4 -0
- package/dist/Pagination/Pagination.types.js.map +1 -1
- package/dist/Pagination/PaginationSelect.js +59 -3
- package/dist/Pagination/PaginationSelect.js.map +1 -1
- package/dist/Panel/Panel.styles.js +11 -11
- package/dist/Pill/Pill.styles.js +3 -3
- package/dist/PillSelect/PillSelect.styles.js +4 -4
- package/dist/Popover/Popover.styles.js +2 -2
- package/dist/Portal/Portal.styles.js +1 -1
- package/dist/ProgressBar/ProgressBar.styles.js +2 -2
- package/dist/RadioButton/RadioButton.styles.js +4 -4
- package/dist/RadioButton/RadioButton.styles.js.map +1 -1
- package/dist/Required/Required.styles.js +3 -3
- package/dist/Search/Search.styles.js +5 -5
- package/dist/Section/Section.styles.js +7 -7
- package/dist/SegmentedController/SegmentedController.js +1 -1
- package/dist/SegmentedController/SegmentedController.js.map +1 -1
- package/dist/SegmentedController/SegmentedController.styles.js +4 -4
- package/dist/Select/Select.js +16 -11
- package/dist/Select/Select.js.map +1 -1
- package/dist/Select/Select.styles.d.ts +5 -1
- package/dist/Select/Select.styles.js +45 -35
- package/dist/Select/Select.styles.js.map +1 -1
- package/dist/Semantic/Semantic.styles.d.ts +4 -4
- package/dist/Semantic/Semantic.styles.js +9 -9
- package/dist/Slider/Slider.js +3 -1
- package/dist/Slider/Slider.js.map +1 -1
- package/dist/Slider/Slider.styles.js +5 -5
- package/dist/Spinner/Spinner.styles.js +7 -7
- package/dist/SplitViewCard/SplitViewCard.styles.js +8 -8
- package/dist/SuperSelect/SuperSelect.components.js +19 -12
- package/dist/SuperSelect/SuperSelect.components.js.map +1 -1
- package/dist/SuperSelect/SuperSelect.js +1 -1
- package/dist/SuperSelect/SuperSelect.js.map +1 -1
- package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
- package/dist/SuperSelect/SuperSelect.styles.js +41 -41
- package/dist/SuperSelect/SuperSelect.styles.js.map +1 -1
- package/dist/SuperSelect/SuperSelect.types.d.ts +4 -0
- package/dist/SuperSelect/SuperSelect.types.js.map +1 -1
- package/dist/SuperSelect/SuperSelect.utils.d.ts +2 -1
- package/dist/SuperSelect/SuperSelect.utils.js +17 -0
- package/dist/SuperSelect/SuperSelect.utils.js.map +1 -1
- package/dist/SuperSelect/useSuperSelect.d.ts +1 -1
- package/dist/SuperSelect/useSuperSelect.js +75 -46
- package/dist/SuperSelect/useSuperSelect.js.map +1 -1
- package/dist/Switch/Switch.styles.js +4 -4
- package/dist/Table/Table.styles.js +64 -61
- package/dist/Table/Table.styles.js.map +1 -1
- package/dist/TableShelf/TableShelf.styles.js +5 -5
- package/dist/Tabs/Tabs.styles.js +15 -15
- package/dist/Tearsheet/Tearsheet.styles.js +5 -5
- package/dist/TextArea/TextArea.styles.js +1 -1
- package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
- package/dist/Thumbnail/Thumbnail.styles.js +17 -17
- package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
- package/dist/TieredSelect/TierSelectionTieredSelect.js +12 -2
- package/dist/TieredSelect/TierSelectionTieredSelect.js.map +1 -1
- package/dist/TieredSelect/TieredSelect.js +18 -5
- package/dist/TieredSelect/TieredSelect.js.map +1 -1
- package/dist/TieredSelect/TieredSelect.styles.js +9 -9
- package/dist/TieredSelect/TieredSelectMenu.js +9 -2
- package/dist/TieredSelect/TieredSelectMenu.js.map +1 -1
- package/dist/Tile/Tile.styles.js +8 -8
- package/dist/Title/Title.styles.js +7 -7
- package/dist/Toast/Toast.styles.js +3 -3
- package/dist/ToggleButton/ToggleButton.styles.js +1 -1
- package/dist/Token/Token.styles.js +3 -3
- package/dist/ToolHeader/ToolHeader.styles.js +6 -6
- package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
- package/dist/Tooltip/Tooltip.styles.js +2 -2
- package/dist/Tooltip/Tooltip.types.d.ts +4 -0
- package/dist/Tooltip/Tooltip.types.js.map +1 -1
- package/dist/Tree/Tree.hooks.js +11 -6
- package/dist/Tree/Tree.hooks.js.map +1 -1
- package/dist/Tree/Tree.js +142 -49
- package/dist/Tree/Tree.js.map +1 -1
- package/dist/Tree/Tree.styles.d.ts +5 -0
- package/dist/Tree/Tree.styles.js +17 -9
- package/dist/Tree/Tree.styles.js.map +1 -1
- package/dist/Tree/Tree.types.d.ts +21 -1
- package/dist/Tree/Tree.types.js.map +1 -1
- package/dist/Typeahead/Typeahead.styles.js +3 -3
- package/dist/Typography/Typography.styles.js +1 -1
- package/dist/Typography/Typography.table.story.js +2 -2
- package/dist/_hooks/I18n.d.ts +38 -22
- package/dist/_locales/de-DE.json +4 -2
- package/dist/_locales/en-AU.json +3 -1
- package/dist/_locales/en-CA.json +3 -1
- package/dist/_locales/en-GB.json +3 -1
- package/dist/_locales/en.json +2 -0
- package/dist/_locales/es-ES.json +3 -1
- package/dist/_locales/es.json +5 -3
- package/dist/_locales/fr-CA.json +4 -2
- package/dist/_locales/fr-FR.json +6 -4
- package/dist/_locales/is-IS.json +4 -2
- package/dist/_locales/it-IT.json +49 -47
- package/dist/_locales/ja-JP.json +6 -4
- package/dist/_locales/pl-PL.json +3 -1
- package/dist/_locales/pseudo.json +2 -0
- package/dist/_locales/pt-BR.json +6 -4
- package/dist/_locales/pt-PT.json +13 -11
- package/dist/_locales/th-TH.json +6 -4
- package/dist/_locales/zh-SG.json +3 -1
- package/dist/_locales/zh-TW.json +7 -5
- package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
- package/dist/_storyHelpers_/components/StoryGrid.js +3 -3
- package/dist/_styles/colors.js +7 -3
- package/dist/_styles/colors.js.map +1 -1
- package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +3 -3
- package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
- package/dist/_typedoc/AvatarStack/AvatarStack.types.json +24 -24
- package/dist/_typedoc/Badge/Badge.types.json +6 -6
- package/dist/_typedoc/Banner/Banner.types.json +13 -13
- package/dist/_typedoc/Box/Box.types.json +68 -68
- package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +10 -10
- package/dist/_typedoc/Button/Button.types.json +13 -13
- package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
- package/dist/_typedoc/Card/Card.types.json +6 -6
- package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
- package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
- package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
- package/dist/_typedoc/DateSelect/DateSelect.types.json +13 -13
- package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
- package/dist/_typedoc/Dropdown/Dropdown.types.json +37 -37
- package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +40 -30
- package/dist/_typedoc/Dropzone/Dropzone.types.json +44 -44
- package/dist/_typedoc/EmptyState/EmptyState.types.json +16 -16
- package/dist/_typedoc/FileList/FileList.types.json +9 -9
- package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
- package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
- package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
- package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
- package/dist/_typedoc/Flex/Flex.types.json +27 -27
- package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
- package/dist/_typedoc/Form/Form.types.json +750 -750
- package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
- package/dist/_typedoc/Grid/Grid.types.json +8 -8
- package/dist/_typedoc/GroupSelect/GroupSelect.types.json +52 -52
- package/dist/_typedoc/Input/Input.types.json +2 -2
- package/dist/_typedoc/Link/Link.types.json +1 -1
- package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
- package/dist/_typedoc/Menu/Menu.types.json +62 -62
- package/dist/_typedoc/MenuImperative/MenuImperative.types.json +77 -77
- package/dist/_typedoc/Modal/Modal.types.json +46 -46
- package/dist/_typedoc/MultiSelect/MultiSelect.types.json +31 -31
- package/dist/_typedoc/NextTile/NextTile.types.json +32 -32
- package/dist/_typedoc/Notation/Notation.types.json +4 -4
- package/dist/_typedoc/NumberInput/NumberInput.types.json +48 -48
- package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +32 -32
- package/dist/_typedoc/PageLayout/PageLayout.types.json +26 -26
- package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
- package/dist/_typedoc/Panel/Panel.types.json +30 -30
- package/dist/_typedoc/Pill/Pill.types.json +2 -2
- package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
- package/dist/_typedoc/Popover/Popover.types.json +15 -15
- package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
- package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
- package/dist/_typedoc/Required/Required.types.json +5 -5
- package/dist/_typedoc/Search/Search.types.json +18 -18
- package/dist/_typedoc/Section/Section.types.json +15 -15
- package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
- package/dist/_typedoc/Select/Select.types.json +60 -60
- package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
- package/dist/_typedoc/Slider/Slider.types.json +6 -6
- package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
- package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
- package/dist/_typedoc/Table/Table.types.json +102 -102
- package/dist/_typedoc/Tabs/Tabs.types.json +20 -20
- package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
- package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
- package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
- package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
- package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
- package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
- package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
- package/dist/_typedoc/Tile/Tile.types.json +8 -8
- package/dist/_typedoc/Title/Title.types.json +1 -1
- package/dist/_typedoc/Toast/Toast.types.json +4 -4
- package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
- package/dist/_typedoc/Token/Token.types.json +7 -7
- package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
- package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
- package/dist/_typedoc/Tooltip/Tooltip.types.json +23 -13
- package/dist/_typedoc/Tree/Tree.types.json +111 -86
- package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
- package/dist/_typedoc/Typography/Typography.types.json +9 -9
- package/dist/_typedoc/_utils/types.json +3 -3
- package/dist/_utils/storybookTooltip.d.ts +2 -0
- package/dist/_utils/storybookTooltip.js +12 -0
- package/dist/_utils/storybookTooltip.js.map +1 -0
- package/dist/_utils/triggerListeners.js +2 -2
- package/dist/_utils/triggerListeners.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SuperSelect.utils.js","names":["isOptgroupSymbol","isOptSelectAllSymbol","getGroupNameIsValid","groupName","isGroupDefined","undefined","includes","length","getOptionsSortingAlgorithm","_ref","getOptionIsBatch","getOptionLabel","a","b","isOptionBatch1","isOptionBatch2","compareStrings","getBatchOptionFormatter","_ref2","value","multiple","getOptionValue","option","isMultiple","val","disabled","Array","isArray","every","v","_objectSpread","RESERVED_UNGROUPED_OPTGROUP_NAME","collectGroupsInOrderOfOccurrence","opts","getOptionGroup","output","reduce","_ref3","_groupedOptions$adjus","groups","groupedOptions","isGroupNameValid","adjustedGroupName","groupOptions","push","concat","_toConsumableArray","filter","group","findParentOptgroup","list","index","i","isOptgroup","getOptionIsOptgroup","id","reorder","options","startIndex","endIndex","nextOptions","_nextOptions$splice","splice","_nextOptions$splice2","_slicedToArray","removed","prevGroup","nextGroup","localeCompare","numeric","sensitivity","item","Boolean","getOptionIsOptSelectAll","sortOptgroups","groupA","groupB","getIsAllOptionsUngrouped","createOptgroup","optgroupHeader","_defineProperty","removeEmptyOptGroups","opt","arr","currentElementIsLast","currentElementIsOptgroup","nextElementIsOptgroup"],"sources":["../../src/SuperSelect/SuperSelect.utils.ts"],"sourcesContent":["import { isOptgroupSymbol, isOptSelectAllSymbol } from './SuperSelect.constants'\nimport type {\n SuperSelectConfig,\n SuperSelectOptgroup,\n SuperSelectOption,\n} from './SuperSelect.types'\n\nexport const getGroupNameIsValid = (groupName: unknown) => {\n const isGroupDefined = ![undefined, null, ''].includes(groupName as string)\n\n return isGroupDefined && typeof groupName === 'string' && groupName.length > 0\n}\n\nexport const getOptionsSortingAlgorithm =\n ({\n getOptionIsBatch,\n getOptionLabel,\n }: {\n getOptionIsBatch: NonNullable<SuperSelectConfig['getOptionIsBatch']>\n getOptionLabel: NonNullable<SuperSelectConfig['getOptionLabel']>\n }) =>\n (a: SuperSelectOption, b: SuperSelectOption) => {\n const isOptionBatch1 = getOptionIsBatch(a)\n const isOptionBatch2 = getOptionIsBatch(b)\n\n // move batched options up\n if (isOptionBatch1 && isOptionBatch2) {\n return compareStrings(getOptionLabel(a), getOptionLabel(b))\n } else if (isOptionBatch1) {\n return -1\n } else if (isOptionBatch2) {\n return 1\n }\n\n return compareStrings(getOptionLabel(a), getOptionLabel(b))\n }\n\nexport const getBatchOptionFormatter =\n ({\n value,\n multiple,\n getOptionIsBatch,\n getOptionValue,\n }: {\n value: SuperSelectConfig['value']\n multiple: NonNullable<SuperSelectConfig['multiple']>\n getOptionIsBatch: NonNullable<SuperSelectConfig['getOptionIsBatch']>\n getOptionValue: NonNullable<SuperSelectConfig['getOptionValue']>\n }) =>\n (option: SuperSelectOption) => {\n if (isMultiple(multiple, value) && getOptionIsBatch(option)) {\n const val = getOptionValue(option)\n\n const disabled = Array.isArray(val) && val.every((v) => value.includes(v))\n\n return {\n ...option,\n disabled,\n }\n }\n return option\n }\n\nexport const RESERVED_UNGROUPED_OPTGROUP_NAME =\n 'RESERVED_UNGROUPED_OPTGROUP_NAME'\n\nexport const collectGroupsInOrderOfOccurrence = (\n opts: SuperSelectOption[],\n getOptionGroup: NonNullable<SuperSelectConfig['getOptionGroup']>\n): {\n groups: string[]\n groupedOptions: Record<string, SuperSelectOption[]>\n} => {\n const output: {\n groups: string[]\n groupedOptions: Record<string, SuperSelectOption[]>\n } = opts.reduce(\n ({ groups, groupedOptions }, option) => {\n const groupName = getOptionGroup(option)\n\n // if group name is invalid, consider the option ungrouped\n const isGroupNameValid = getGroupNameIsValid(groupName)\n const adjustedGroupName = isGroupNameValid\n ? groupName\n : RESERVED_UNGROUPED_OPTGROUP_NAME\n\n const groupOptions = groupedOptions[adjustedGroupName] ?? []\n\n // push/assign for performance considerations\n groupOptions.push(option)\n groupedOptions[adjustedGroupName] = groupOptions\n\n return {\n groups: groups.includes(adjustedGroupName)\n ? groups\n : [...groups, adjustedGroupName],\n groupedOptions,\n }\n },\n {\n groups: [],\n groupedOptions: {},\n }\n )\n\n // if ungrouped options were found, lift them to the top\n if (output.groups.includes(RESERVED_UNGROUPED_OPTGROUP_NAME)) {\n return {\n groupedOptions: output.groupedOptions,\n groups: [\n RESERVED_UNGROUPED_OPTGROUP_NAME,\n ...output.groups.filter(\n (group) => group !== RESERVED_UNGROUPED_OPTGROUP_NAME\n ),\n ],\n }\n }\n\n return output\n}\n\nfunction findParentOptgroup(list: SuperSelectOption[], index: number) {\n for (let i = index; i >= 0; i--) {\n const option = list[i]\n const isOptgroup = getOptionIsOptgroup(option)\n\n if (isOptgroup) {\n return option.id\n }\n }\n // no parent optgroup was found, so the option is considered ungrouped\n return RESERVED_UNGROUPED_OPTGROUP_NAME\n}\n\nexport function reorder(\n options: SuperSelectOption[],\n startIndex: number,\n endIndex: number\n) {\n const nextOptions = [...options]\n const [removed] = nextOptions.splice(startIndex, 1)\n nextOptions.splice(endIndex, 0, removed)\n\n const prevGroup = findParentOptgroup(options, startIndex)\n const nextGroup = findParentOptgroup(nextOptions, endIndex)\n\n return { nextOptions, prevGroup, nextGroup }\n}\n\nfunction compareStrings(a: string, b: string) {\n return a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' })\n}\n\nexport function isMultiple<T>(multiple: boolean, value: T | T[]): value is T[] {\n return multiple && Array.isArray(value)\n}\n\nexport const getOptionIsOptgroup = (\n item: SuperSelectOption\n): item is SuperSelectOptgroup => {\n return Boolean(item[isOptgroupSymbol])\n}\n\nexport const getOptionIsOptSelectAll = (\n item: SuperSelectOption\n): item is SuperSelectOptgroup => {\n return Boolean(item[isOptSelectAllSymbol])\n}\n\nexport const sortOptgroups = (groupA: string, groupB: string) => {\n // always put ungrouped options on top\n if (groupA === RESERVED_UNGROUPED_OPTGROUP_NAME) {\n return -1\n }\n if (groupB === RESERVED_UNGROUPED_OPTGROUP_NAME) {\n return 1\n }\n return compareStrings(groupA, groupB)\n}\n\nexport function getIsAllOptionsUngrouped(groups: string[]) {\n return groups.length === 1 && groups[0] === RESERVED_UNGROUPED_OPTGROUP_NAME\n}\n\nexport function createOptgroup(\n groupName: string,\n groupOptions: SuperSelectOption[]\n) {\n // ungrouped options should not have a group header\n if (groupName === RESERVED_UNGROUPED_OPTGROUP_NAME) {\n return groupOptions\n }\n\n const optgroupHeader: SuperSelectOptgroup = {\n [isOptgroupSymbol]: true,\n id: groupName,\n label: groupName,\n }\n\n return [optgroupHeader, ...groupOptions]\n}\n\nexport function removeEmptyOptGroups(options: SuperSelectOption[]) {\n return options.filter((opt, index, arr) => {\n const currentElementIsLast = index === arr.length - 1\n const currentElementIsOptgroup = getOptionIsOptgroup(opt)\n const nextElementIsOptgroup =\n !currentElementIsLast && getOptionIsOptgroup(arr[index + 1])\n\n return !(\n currentElementIsOptgroup &&\n (nextElementIsOptgroup || currentElementIsLast)\n )\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SuperSelect.utils.js","names":["isOptgroupSymbol","isOptSelectAllSymbol","getGroupNameIsValid","groupName","isGroupDefined","undefined","includes","length","getOptionsSortingAlgorithm","_ref","getOptionIsBatch","getOptionLabel","a","b","isOptionBatch1","isOptionBatch2","compareStrings","getBatchOptionFormatter","_ref2","value","multiple","getOptionValue","option","isMultiple","val","disabled","Array","isArray","every","v","_objectSpread","RESERVED_UNGROUPED_OPTGROUP_NAME","collectGroupsInOrderOfOccurrence","opts","getOptionGroup","output","reduce","_ref3","_groupedOptions$adjus","groups","groupedOptions","isGroupNameValid","adjustedGroupName","groupOptions","push","concat","_toConsumableArray","filter","group","findParentOptgroup","list","index","i","isOptgroup","getOptionIsOptgroup","id","reorder","options","startIndex","endIndex","nextOptions","_nextOptions$splice","splice","_nextOptions$splice2","_slicedToArray","removed","prevGroup","nextGroup","localeCompare","numeric","sensitivity","item","Boolean","getOptionIsOptSelectAll","sortOptgroups","groupA","groupB","getIsAllOptionsUngrouped","createOptgroup","optgroupHeader","_defineProperty","removeEmptyOptGroups","opt","arr","currentElementIsLast","currentElementIsOptgroup","nextElementIsOptgroup","defaultOnUnselectAll","searchValue","getValue","currentValue","valueSet","Set","filteredOptions","forEach","from"],"sources":["../../src/SuperSelect/SuperSelect.utils.ts"],"sourcesContent":["import { isOptgroupSymbol, isOptSelectAllSymbol } from './SuperSelect.constants'\nimport type {\n SuperSelectConfig,\n SuperSelectOptgroup,\n SuperSelectOption,\n SuperSelectValue,\n SuperSelectValuePrimitive,\n} from './SuperSelect.types'\n\nexport const getGroupNameIsValid = (groupName: unknown) => {\n const isGroupDefined = ![undefined, null, ''].includes(groupName as string)\n\n return isGroupDefined && typeof groupName === 'string' && groupName.length > 0\n}\n\nexport const getOptionsSortingAlgorithm =\n ({\n getOptionIsBatch,\n getOptionLabel,\n }: {\n getOptionIsBatch: NonNullable<SuperSelectConfig['getOptionIsBatch']>\n getOptionLabel: NonNullable<SuperSelectConfig['getOptionLabel']>\n }) =>\n (a: SuperSelectOption, b: SuperSelectOption) => {\n const isOptionBatch1 = getOptionIsBatch(a)\n const isOptionBatch2 = getOptionIsBatch(b)\n\n // move batched options up\n if (isOptionBatch1 && isOptionBatch2) {\n return compareStrings(getOptionLabel(a), getOptionLabel(b))\n } else if (isOptionBatch1) {\n return -1\n } else if (isOptionBatch2) {\n return 1\n }\n\n return compareStrings(getOptionLabel(a), getOptionLabel(b))\n }\n\nexport const getBatchOptionFormatter =\n ({\n value,\n multiple,\n getOptionIsBatch,\n getOptionValue,\n }: {\n value: SuperSelectConfig['value']\n multiple: NonNullable<SuperSelectConfig['multiple']>\n getOptionIsBatch: NonNullable<SuperSelectConfig['getOptionIsBatch']>\n getOptionValue: NonNullable<SuperSelectConfig['getOptionValue']>\n }) =>\n (option: SuperSelectOption) => {\n if (isMultiple(multiple, value) && getOptionIsBatch(option)) {\n const val = getOptionValue(option)\n\n const disabled = Array.isArray(val) && val.every((v) => value.includes(v))\n\n return {\n ...option,\n disabled,\n }\n }\n return option\n }\n\nexport const RESERVED_UNGROUPED_OPTGROUP_NAME =\n 'RESERVED_UNGROUPED_OPTGROUP_NAME'\n\nexport const collectGroupsInOrderOfOccurrence = (\n opts: SuperSelectOption[],\n getOptionGroup: NonNullable<SuperSelectConfig['getOptionGroup']>\n): {\n groups: string[]\n groupedOptions: Record<string, SuperSelectOption[]>\n} => {\n const output: {\n groups: string[]\n groupedOptions: Record<string, SuperSelectOption[]>\n } = opts.reduce(\n ({ groups, groupedOptions }, option) => {\n const groupName = getOptionGroup(option)\n\n // if group name is invalid, consider the option ungrouped\n const isGroupNameValid = getGroupNameIsValid(groupName)\n const adjustedGroupName = isGroupNameValid\n ? groupName\n : RESERVED_UNGROUPED_OPTGROUP_NAME\n\n const groupOptions = groupedOptions[adjustedGroupName] ?? []\n\n // push/assign for performance considerations\n groupOptions.push(option)\n groupedOptions[adjustedGroupName] = groupOptions\n\n return {\n groups: groups.includes(adjustedGroupName)\n ? groups\n : [...groups, adjustedGroupName],\n groupedOptions,\n }\n },\n {\n groups: [],\n groupedOptions: {},\n }\n )\n\n // if ungrouped options were found, lift them to the top\n if (output.groups.includes(RESERVED_UNGROUPED_OPTGROUP_NAME)) {\n return {\n groupedOptions: output.groupedOptions,\n groups: [\n RESERVED_UNGROUPED_OPTGROUP_NAME,\n ...output.groups.filter(\n (group) => group !== RESERVED_UNGROUPED_OPTGROUP_NAME\n ),\n ],\n }\n }\n\n return output\n}\n\nfunction findParentOptgroup(list: SuperSelectOption[], index: number) {\n for (let i = index; i >= 0; i--) {\n const option = list[i]\n const isOptgroup = getOptionIsOptgroup(option)\n\n if (isOptgroup) {\n return option.id\n }\n }\n // no parent optgroup was found, so the option is considered ungrouped\n return RESERVED_UNGROUPED_OPTGROUP_NAME\n}\n\nexport function reorder(\n options: SuperSelectOption[],\n startIndex: number,\n endIndex: number\n) {\n const nextOptions = [...options]\n const [removed] = nextOptions.splice(startIndex, 1)\n nextOptions.splice(endIndex, 0, removed)\n\n const prevGroup = findParentOptgroup(options, startIndex)\n const nextGroup = findParentOptgroup(nextOptions, endIndex)\n\n return { nextOptions, prevGroup, nextGroup }\n}\n\nfunction compareStrings(a: string, b: string) {\n return a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' })\n}\n\nexport function isMultiple<T>(multiple: boolean, value: T | T[]): value is T[] {\n return multiple && Array.isArray(value)\n}\n\nexport const getOptionIsOptgroup = (\n item: SuperSelectOption\n): item is SuperSelectOptgroup => {\n return Boolean(item[isOptgroupSymbol])\n}\n\nexport const getOptionIsOptSelectAll = (\n item: SuperSelectOption\n): item is SuperSelectOptgroup => {\n return Boolean(item[isOptSelectAllSymbol])\n}\n\nexport const sortOptgroups = (groupA: string, groupB: string) => {\n // always put ungrouped options on top\n if (groupA === RESERVED_UNGROUPED_OPTGROUP_NAME) {\n return -1\n }\n if (groupB === RESERVED_UNGROUPED_OPTGROUP_NAME) {\n return 1\n }\n return compareStrings(groupA, groupB)\n}\n\nexport function getIsAllOptionsUngrouped(groups: string[]) {\n return groups.length === 1 && groups[0] === RESERVED_UNGROUPED_OPTGROUP_NAME\n}\n\nexport function createOptgroup(\n groupName: string,\n groupOptions: SuperSelectOption[]\n) {\n // ungrouped options should not have a group header\n if (groupName === RESERVED_UNGROUPED_OPTGROUP_NAME) {\n return groupOptions\n }\n\n const optgroupHeader: SuperSelectOptgroup = {\n [isOptgroupSymbol]: true,\n id: groupName,\n label: groupName,\n }\n\n return [optgroupHeader, ...groupOptions]\n}\n\nexport function removeEmptyOptGroups(options: SuperSelectOption[]) {\n return options.filter((opt, index, arr) => {\n const currentElementIsLast = index === arr.length - 1\n const currentElementIsOptgroup = getOptionIsOptgroup(opt)\n const nextElementIsOptgroup =\n !currentElementIsLast && getOptionIsOptgroup(arr[index + 1])\n\n return !(\n currentElementIsOptgroup &&\n (nextElementIsOptgroup || currentElementIsLast)\n )\n })\n}\n\nexport function defaultOnUnselectAll(\n value: SuperSelectValue,\n options: SuperSelectOption[],\n searchValue: string,\n getValue: (opt: SuperSelectOption) => Array<SuperSelectValuePrimitive>\n): SuperSelectValue {\n const currentValue = Array.isArray(value) ? value : []\n const valueSet = new Set(currentValue)\n\n if (searchValue) {\n const filteredOptions = options.filter((opt) => !getOptionIsOptgroup(opt))\n filteredOptions.forEach((opt) => {\n getValue(opt).forEach((val) => valueSet.delete(val))\n })\n return Array.from(valueSet)\n } else {\n return []\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SuperSelectApi, SuperSelectConfig } from './SuperSelect.types';
|
|
3
|
-
export declare function useSuperSelect({ block, components: customComponents, defaultValue, disabled, draggable, emptyMessage, selectAllEnabled, error, footer, getOptionGroup, getOptionIsBatch, getOptionIsDisabled, getOptionLabel, getOptionIsPartiallySelected, getOptionIsSelected, getOptionValue, onScrollBottom, onOpenChange, header, loading, multiple, onChange, onManualSort, onSelectAll, options: sourceOptions, placeholder, preset, presetProps, search, selectionStyle, setOptionGroup, sort, tabIndex, value: value_, overlayMatchesTriggerWidth, 'aria-label': ariaLabel, }: SuperSelectConfig): SuperSelectApi;
|
|
3
|
+
export declare function useSuperSelect({ block, components: customComponents, defaultValue, disabled, draggable, emptyMessage, selectAllEnabled, error, footer, getOptionGroup, getOptionIsBatch, getOptionIsDisabled, getOptionLabel, getOptionIsPartiallySelected, getOptionIsSelected, getOptionValue, onScrollBottom, onOpenChange, header, loading, multiple, onChange, onManualSort, onUnselectAll, onSelectAll, options: sourceOptions, placeholder, preset, presetProps, search, selectionStyle, setOptionGroup, sort, tabIndex, value: value_, overlayMatchesTriggerWidth, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, }: SuperSelectConfig): SuperSelectApi;
|
|
4
4
|
export declare const SuperSelectContext: React.Context<SuperSelectApi | null>;
|
|
5
5
|
export declare function useSuperSelectContext(): SuperSelectApi;
|
|
@@ -26,7 +26,7 @@ import { spacing } from '../_styles/spacing';
|
|
|
26
26
|
import * as defaultComponents from './SuperSelect.components';
|
|
27
27
|
import { draggableOptionIdSymbol, isOptSelectAllSymbol } from './SuperSelect.constants';
|
|
28
28
|
import { extendedSelectMenuWidth } from './SuperSelect.styles';
|
|
29
|
-
import { collectGroupsInOrderOfOccurrence, createOptgroup, getBatchOptionFormatter, getIsAllOptionsUngrouped, getOptionIsOptgroup, getOptionIsOptSelectAll, getOptionsSortingAlgorithm, isMultiple, removeEmptyOptGroups, reorder, sortOptgroups } from './SuperSelect.utils';
|
|
29
|
+
import { collectGroupsInOrderOfOccurrence, createOptgroup, defaultOnUnselectAll, getBatchOptionFormatter, getIsAllOptionsUngrouped, getOptionIsOptgroup, getOptionIsOptSelectAll, getOptionsSortingAlgorithm, isMultiple, removeEmptyOptGroups, reorder, sortOptgroups } from './SuperSelect.utils';
|
|
30
30
|
var listContainerVerticalPadding = spacing.sm * 2;
|
|
31
31
|
function noop() {}
|
|
32
32
|
function defaultGetOptionValue(option) {
|
|
@@ -169,6 +169,8 @@ export function useSuperSelect(_ref3) {
|
|
|
169
169
|
multiple = _ref3$multiple === void 0 ? false : _ref3$multiple,
|
|
170
170
|
onChange = _ref3.onChange,
|
|
171
171
|
onManualSort = _ref3.onManualSort,
|
|
172
|
+
_ref3$onUnselectAll = _ref3.onUnselectAll,
|
|
173
|
+
onUnselectAll = _ref3$onUnselectAll === void 0 ? defaultOnUnselectAll : _ref3$onUnselectAll,
|
|
172
174
|
onSelectAll = _ref3.onSelectAll,
|
|
173
175
|
_ref3$options = _ref3.options,
|
|
174
176
|
sourceOptions = _ref3$options === void 0 ? [] : _ref3$options,
|
|
@@ -189,7 +191,11 @@ export function useSuperSelect(_ref3) {
|
|
|
189
191
|
value_ = _ref3.value,
|
|
190
192
|
_ref3$overlayMatchesT = _ref3.overlayMatchesTriggerWidth,
|
|
191
193
|
overlayMatchesTriggerWidth = _ref3$overlayMatchesT === void 0 ? true : _ref3$overlayMatchesT,
|
|
192
|
-
ariaLabel = _ref3['aria-label']
|
|
194
|
+
ariaLabel = _ref3['aria-label'],
|
|
195
|
+
ariaLabelledBy = _ref3['aria-labelledby'];
|
|
196
|
+
var valueId = useId();
|
|
197
|
+
var labelId = useId();
|
|
198
|
+
var computedLabelledBy = ariaLabel ? undefined : ariaLabelledBy !== null && ariaLabelledBy !== void 0 ? ariaLabelledBy : labelId;
|
|
193
199
|
React.useEffect(function () {
|
|
194
200
|
if (!draggable) {
|
|
195
201
|
return;
|
|
@@ -227,12 +233,10 @@ export function useSuperSelect(_ref3) {
|
|
|
227
233
|
var isProcessingAutoSelectionRef = React.useRef(false);
|
|
228
234
|
|
|
229
235
|
/**
|
|
230
|
-
* Stores a snapshot of previously
|
|
231
|
-
*
|
|
232
|
-
* Value: The SuperSelectOption object
|
|
233
|
-
* Used to detect newly added options for auto-selection when Select All is active.
|
|
236
|
+
* Stores a snapshot of previously selected values to compare against
|
|
237
|
+
* current options for auto-selection.
|
|
234
238
|
*/
|
|
235
|
-
var
|
|
239
|
+
var previousSelectedValuesRef = React.useRef([]);
|
|
236
240
|
function setValue(v) {
|
|
237
241
|
if (!value_) {
|
|
238
242
|
setVal(v);
|
|
@@ -271,11 +275,6 @@ export function useSuperSelect(_ref3) {
|
|
|
271
275
|
if (!Array.isArray(currentValue) || currentSelectableOptions.length === 0) {
|
|
272
276
|
return false;
|
|
273
277
|
}
|
|
274
|
-
|
|
275
|
-
// Early exit if values count doesn't match options count
|
|
276
|
-
if (currentValue.length < currentSelectableOptions.length) {
|
|
277
|
-
return false;
|
|
278
|
-
}
|
|
279
278
|
var valueSet = new Set(currentValue);
|
|
280
279
|
|
|
281
280
|
// Use early termination for better performance
|
|
@@ -311,44 +310,38 @@ export function useSuperSelect(_ref3) {
|
|
|
311
310
|
* - Single pass to build current options map and detect new ones
|
|
312
311
|
* - Set-based deduplication for efficient value management
|
|
313
312
|
*
|
|
314
|
-
* @param currentSelectableOptions - Current array of selectable options
|
|
315
313
|
* @param currentValue - Current selected values
|
|
316
314
|
*/
|
|
317
|
-
var executeAutoSelection = React.useCallback(function (
|
|
315
|
+
var executeAutoSelection = React.useCallback(function (currentValue) {
|
|
318
316
|
// Early exit conditions for performance
|
|
319
317
|
if (!isSelectAllActive || !multiple || !Array.isArray(currentValue) || isProcessingAutoSelectionRef.current) {
|
|
320
318
|
return;
|
|
321
319
|
}
|
|
322
|
-
|
|
320
|
+
previousSelectedValuesRef.current = currentValue;
|
|
323
321
|
var newlyAddedOptions = [];
|
|
324
|
-
var
|
|
322
|
+
var currentValueSet = new Set(currentValue);
|
|
323
|
+
var _iterator2 = _createForOfIteratorHelper(selectableOptions),
|
|
325
324
|
_step2;
|
|
326
325
|
try {
|
|
327
326
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
328
327
|
var _option = _step2.value;
|
|
329
|
-
var
|
|
330
|
-
|
|
331
|
-
|
|
328
|
+
var _optionValues = getOptionValuesFlat(_option);
|
|
329
|
+
var hasNewValue = _optionValues.some(function (val) {
|
|
330
|
+
return !currentValueSet.has(val);
|
|
331
|
+
});
|
|
332
|
+
if (hasNewValue) {
|
|
332
333
|
newlyAddedOptions.push(_option);
|
|
333
334
|
}
|
|
334
335
|
}
|
|
335
|
-
|
|
336
|
-
// Update reference for next comparison
|
|
337
336
|
} catch (err) {
|
|
338
337
|
_iterator2.e(err);
|
|
339
338
|
} finally {
|
|
340
339
|
_iterator2.f();
|
|
341
340
|
}
|
|
342
|
-
previousSelectableOptionsRef.current = currentOptionKeys;
|
|
343
|
-
|
|
344
|
-
// No new options to auto-select
|
|
345
341
|
if (newlyAddedOptions.length === 0) {
|
|
346
342
|
return;
|
|
347
343
|
}
|
|
348
|
-
|
|
349
|
-
// Set processing flag to prevent recursive calls
|
|
350
344
|
isProcessingAutoSelectionRef.current = true;
|
|
351
|
-
var currentValueSet = new Set(currentValue);
|
|
352
345
|
var newValuesToAdd = [];
|
|
353
346
|
|
|
354
347
|
// Collect new values that aren't already selected
|
|
@@ -550,9 +543,9 @@ export function useSuperSelect(_ref3) {
|
|
|
550
543
|
*/
|
|
551
544
|
var autoSelectionEffect = React.useCallback(function () {
|
|
552
545
|
if (selectAllEnabled && multiple && isSelectAllActive && Array.isArray(value) && value.length) {
|
|
553
|
-
debouncedAutoSelection(
|
|
546
|
+
debouncedAutoSelection(value);
|
|
554
547
|
}
|
|
555
|
-
}, [selectAllEnabled, multiple, isSelectAllActive, value, debouncedAutoSelection
|
|
548
|
+
}, [selectAllEnabled, multiple, isSelectAllActive, value, debouncedAutoSelection]);
|
|
556
549
|
|
|
557
550
|
/**
|
|
558
551
|
* Effect that manages auto-selection behavior and cleanup.
|
|
@@ -647,6 +640,23 @@ export function useSuperSelect(_ref3) {
|
|
|
647
640
|
var selectedLabel = React.useMemo(function () {
|
|
648
641
|
return selectedOption ? getOptionLabel(selectedOption) : '';
|
|
649
642
|
}, [selectedOption]);
|
|
643
|
+
|
|
644
|
+
// Active option id calculation - ensures aria-activedescendant matches the active option
|
|
645
|
+
// in the combined navigation list, including SelectAll.
|
|
646
|
+
var activeOptionId = React.useMemo(function () {
|
|
647
|
+
if (activeMenuIndex === null) {
|
|
648
|
+
return undefined;
|
|
649
|
+
}
|
|
650
|
+
var baseOptions = selectAllEnabled && multiple ? allOptionsWithSelectAll : options;
|
|
651
|
+
var option = baseOptions[activeMenuIndex];
|
|
652
|
+
if (!option) {
|
|
653
|
+
return undefined;
|
|
654
|
+
}
|
|
655
|
+
var val = getOptionValue(option);
|
|
656
|
+
return "item-".concat(val);
|
|
657
|
+
}, [activeMenuIndex, selectAllEnabled, multiple, allOptionsWithSelectAll, options, getOptionValue]);
|
|
658
|
+
var isInitialSelectedOpen = open && selectedIndex !== null && activeMenuIndex === selectedIndex;
|
|
659
|
+
var activeDescendantId = open && !isInitialSelectedOpen && activeOptionId ? activeOptionId : undefined;
|
|
650
660
|
function isSelectableOption(o) {
|
|
651
661
|
return !getOptionIsOptgroup(o) && !getOptionIsDisabled(o);
|
|
652
662
|
}
|
|
@@ -678,12 +688,12 @@ export function useSuperSelect(_ref3) {
|
|
|
678
688
|
return getIsSelected(opt);
|
|
679
689
|
});
|
|
680
690
|
if (allSelected) {
|
|
681
|
-
|
|
691
|
+
var newValue = onUnselectAll(value, options, searchValue, getOptionValuesFlat);
|
|
692
|
+
setValue(newValue);
|
|
682
693
|
} else {
|
|
683
694
|
if (onSelectAll) {
|
|
684
695
|
onSelectAll(selectableOptions);
|
|
685
696
|
}
|
|
686
|
-
// Ensure we're working with an array for multiple selection
|
|
687
697
|
var currentValue = Array.isArray(value) ? value : [];
|
|
688
698
|
var valueSet = new Set(currentValue);
|
|
689
699
|
selectableOptions.forEach(function (opt) {
|
|
@@ -700,7 +710,7 @@ export function useSuperSelect(_ref3) {
|
|
|
700
710
|
* Select All activates when all selectable options become selected,
|
|
701
711
|
* but only if it wasn't already active (prevents unnecessary state changes).
|
|
702
712
|
*
|
|
703
|
-
* @param
|
|
713
|
+
* @param currentSelectableOptions - Current array of selectable options to check against
|
|
704
714
|
* @returns true if Select All should be activated, false otherwise
|
|
705
715
|
*/
|
|
706
716
|
var shouldActivateSelectAll = React.useCallback(function (currentSelectableOptions) {
|
|
@@ -709,14 +719,15 @@ export function useSuperSelect(_ref3) {
|
|
|
709
719
|
|
|
710
720
|
// Centralize select all active state
|
|
711
721
|
React.useEffect(function () {
|
|
712
|
-
var shouldBeActive = shouldActivateSelectAll(selectableOptions) && selectableOptions.length && value.length;
|
|
722
|
+
var shouldBeActive = shouldActivateSelectAll(selectableOptions) && selectableOptions.length && !!value.length;
|
|
713
723
|
|
|
714
724
|
// When Select All is already active and new selectable options are added,
|
|
715
725
|
// skip updating the Select All active state here. This allows the existing
|
|
716
726
|
// auto-selection logic to handle newly added options without triggering
|
|
717
727
|
// unnecessary state changes in this effect.
|
|
718
|
-
var hasNewOptions = selectableOptions.length >
|
|
719
|
-
|
|
728
|
+
var hasNewOptions = selectableOptions.length > previousSelectedValuesRef.current.length;
|
|
729
|
+
var hasRemovedValue = (value || []).length < previousSelectedValuesRef.current.length;
|
|
730
|
+
if (isSelectAllActive && hasNewOptions && !hasRemovedValue && value.length) {
|
|
720
731
|
return;
|
|
721
732
|
}
|
|
722
733
|
if (shouldBeActive) {
|
|
@@ -929,22 +940,22 @@ export function useSuperSelect(_ref3) {
|
|
|
929
940
|
$multiple: multiple,
|
|
930
941
|
$open: open,
|
|
931
942
|
$placeholder: !selectedLabel,
|
|
932
|
-
'aria-controls':
|
|
943
|
+
'aria-controls': overlayId,
|
|
933
944
|
'aria-expanded': open,
|
|
934
|
-
'aria-
|
|
945
|
+
'aria-describedby': valueId,
|
|
946
|
+
'aria-labelledby': computedLabelledBy
|
|
935
947
|
}, ariaLabel && {
|
|
936
948
|
'aria-label': ariaLabel
|
|
937
949
|
}), {}, {
|
|
938
950
|
onKeyDown: function onKeyDown() {
|
|
939
951
|
setPointer(false);
|
|
940
952
|
},
|
|
941
|
-
role: '
|
|
953
|
+
role: 'button',
|
|
942
954
|
search: search,
|
|
943
955
|
tabIndex: disabled ? -1 : tabIndex
|
|
944
956
|
}),
|
|
945
957
|
// TODO fix type
|
|
946
958
|
floating: {
|
|
947
|
-
role: search ? 'dialog' : 'none',
|
|
948
959
|
id: overlayId,
|
|
949
960
|
onKeyDown: function onKeyDown() {
|
|
950
961
|
setPointer(false);
|
|
@@ -967,15 +978,24 @@ export function useSuperSelect(_ref3) {
|
|
|
967
978
|
getItemProps = _useInteractions.getItemProps;
|
|
968
979
|
function getLabelProps() {
|
|
969
980
|
return {
|
|
970
|
-
$hoverable: false
|
|
981
|
+
$hoverable: false,
|
|
982
|
+
id: labelId
|
|
971
983
|
};
|
|
972
984
|
}
|
|
973
985
|
function getMultiInputProps() {
|
|
974
|
-
return {
|
|
986
|
+
return _objectSpread(_objectSpread({
|
|
975
987
|
ref: searchRef,
|
|
976
988
|
placeholder: isEmpty() ? placeholder : '',
|
|
977
989
|
disabled: disabled,
|
|
990
|
+
role: 'combobox',
|
|
991
|
+
'aria-expanded': open,
|
|
978
992
|
'aria-controls': listId,
|
|
993
|
+
'aria-haspopup': 'listbox',
|
|
994
|
+
'aria-labelledby': computedLabelledBy,
|
|
995
|
+
'aria-activedescendant': activeDescendantId
|
|
996
|
+
}, ariaLabel && {
|
|
997
|
+
'aria-label': ariaLabel
|
|
998
|
+
}), {}, {
|
|
979
999
|
onKeyDown: function onKeyDown(e) {
|
|
980
1000
|
if (e.key === 'Tab') {
|
|
981
1001
|
if (open) {
|
|
@@ -993,7 +1013,7 @@ export function useSuperSelect(_ref3) {
|
|
|
993
1013
|
style: {
|
|
994
1014
|
opacity: activeTokenIndex === null ? 1 : 0
|
|
995
1015
|
}
|
|
996
|
-
};
|
|
1016
|
+
});
|
|
997
1017
|
}
|
|
998
1018
|
function getMultiValueProps(index) {
|
|
999
1019
|
return {
|
|
@@ -1017,14 +1037,22 @@ export function useSuperSelect(_ref3) {
|
|
|
1017
1037
|
};
|
|
1018
1038
|
}
|
|
1019
1039
|
function getSearchProps() {
|
|
1020
|
-
return {
|
|
1040
|
+
return _objectSpread(_objectSpread({
|
|
1041
|
+
role: 'combobox',
|
|
1042
|
+
'aria-haspopup': 'listbox',
|
|
1043
|
+
'aria-expanded': open,
|
|
1021
1044
|
'aria-controls': listId,
|
|
1045
|
+
'aria-labelledby': computedLabelledBy,
|
|
1046
|
+
'aria-activedescendant': activeDescendantId
|
|
1047
|
+
}, ariaLabel && {
|
|
1048
|
+
'aria-label': ariaLabel
|
|
1049
|
+
}), {}, {
|
|
1022
1050
|
onChange: function onChange(value) {
|
|
1023
1051
|
setSearchValue(value);
|
|
1024
1052
|
setActiveTokenIndex(null);
|
|
1025
1053
|
},
|
|
1026
1054
|
placeholder: i18n.t('core.select.search')
|
|
1027
|
-
};
|
|
1055
|
+
});
|
|
1028
1056
|
}
|
|
1029
1057
|
function getHeaderProps() {
|
|
1030
1058
|
return {
|
|
@@ -1051,7 +1079,6 @@ export function useSuperSelect(_ref3) {
|
|
|
1051
1079
|
}
|
|
1052
1080
|
function getClearProps() {
|
|
1053
1081
|
return {
|
|
1054
|
-
'aria-hidden': true,
|
|
1055
1082
|
'aria-label': i18n.t('core.select.clear'),
|
|
1056
1083
|
onClick: function onClick(e) {
|
|
1057
1084
|
// prevent the menu from closing
|
|
@@ -1078,7 +1105,7 @@ export function useSuperSelect(_ref3) {
|
|
|
1078
1105
|
};
|
|
1079
1106
|
return {
|
|
1080
1107
|
role: 'listbox',
|
|
1081
|
-
id:
|
|
1108
|
+
id: listId,
|
|
1082
1109
|
data: draggable ? queriedDraggableOptions : options,
|
|
1083
1110
|
components: {
|
|
1084
1111
|
Item: components === null || components === void 0 ? void 0 : components.Item // TODO fix type
|
|
@@ -1237,6 +1264,8 @@ export function useSuperSelect(_ref3) {
|
|
|
1237
1264
|
setActiveMenuIndex: setActiveMenuIndex,
|
|
1238
1265
|
sourceOptions: sourceOptions,
|
|
1239
1266
|
value: value,
|
|
1267
|
+
labelId: labelId,
|
|
1268
|
+
valueId: valueId,
|
|
1240
1269
|
width: width
|
|
1241
1270
|
},
|
|
1242
1271
|
props: {
|