@salt-ds/lab 1.0.0-alpha.26 → 1.0.0-alpha.28
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/css/salt-lab.css +327 -561
- package/dist-cjs/combo-box-next/ComboBoxNext.js +303 -166
- package/dist-cjs/combo-box-next/ComboBoxNext.js.map +1 -1
- package/dist-cjs/combo-box-next/useComboBoxNext.js +55 -0
- package/dist-cjs/combo-box-next/useComboBoxNext.js.map +1 -0
- package/dist-cjs/dropdown/DropdownBase.js +1 -1
- package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
- package/dist-cjs/dropdown-next/DropdownNext.css.js +1 -1
- package/dist-cjs/dropdown-next/DropdownNext.js +333 -169
- package/dist-cjs/dropdown-next/DropdownNext.js.map +1 -1
- package/dist-cjs/editable-label/EditableLabel.js +1 -1
- package/dist-cjs/editable-label/EditableLabel.js.map +1 -1
- package/dist-cjs/index.js +8 -24
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/layer-layout/LayerLayout.js +1 -3
- package/dist-cjs/layer-layout/LayerLayout.js.map +1 -1
- package/dist-cjs/list-control/ListControlContext.js +36 -0
- package/dist-cjs/list-control/ListControlContext.js.map +1 -0
- package/dist-cjs/list-control/ListControlState.js +193 -0
- package/dist-cjs/list-control/ListControlState.js.map +1 -0
- package/dist-cjs/option/Option.css.js +6 -0
- package/dist-cjs/option/Option.css.js.map +1 -0
- package/dist-cjs/option/Option.js +113 -0
- package/dist-cjs/option/Option.js.map +1 -0
- package/dist-cjs/option/OptionGroup.css.js +6 -0
- package/dist-cjs/option/OptionGroup.css.js.map +1 -0
- package/dist-cjs/option/OptionGroup.js +44 -0
- package/dist-cjs/option/OptionGroup.js.map +1 -0
- package/dist-cjs/option/OptionList.css.js +6 -0
- package/dist-cjs/option/OptionList.css.js.map +1 -0
- package/dist-cjs/option/OptionList.js +40 -0
- package/dist-cjs/option/OptionList.js.map +1 -0
- package/dist-cjs/tokenized-input/internal/InputPill.js +13 -9
- package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js +6 -0
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js.map +1 -0
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.js +244 -0
- package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -0
- package/dist-cjs/tokenized-input-next/internal/InputPill.css.js +6 -0
- package/dist-cjs/tokenized-input-next/internal/InputPill.css.js.map +1 -0
- package/dist-cjs/tokenized-input-next/internal/InputPill.js +83 -0
- package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -0
- package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js +22 -0
- package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -0
- package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js +37 -0
- package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js.map +1 -0
- package/dist-cjs/tokenized-input-next/internal/useWidth.js +48 -0
- package/dist-cjs/tokenized-input-next/internal/useWidth.js.map +1 -0
- package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js +479 -0
- package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -0
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js +1 -1
- package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
- package/dist-cjs/tree/Tree.js +1 -2
- package/dist-cjs/tree/Tree.js.map +1 -1
- package/dist-es/combo-box-next/ComboBoxNext.js +306 -169
- package/dist-es/combo-box-next/ComboBoxNext.js.map +1 -1
- package/dist-es/combo-box-next/useComboBoxNext.js +51 -0
- package/dist-es/combo-box-next/useComboBoxNext.js.map +1 -0
- package/dist-es/dropdown/DropdownBase.js +1 -1
- package/dist-es/dropdown/DropdownBase.js.map +1 -1
- package/dist-es/dropdown-next/DropdownNext.css.js +1 -1
- package/dist-es/dropdown-next/DropdownNext.js +332 -168
- package/dist-es/dropdown-next/DropdownNext.js.map +1 -1
- package/dist-es/editable-label/EditableLabel.js +1 -1
- package/dist-es/editable-label/EditableLabel.js.map +1 -1
- package/dist-es/index.js +4 -12
- package/dist-es/index.js.map +1 -1
- package/dist-es/layer-layout/LayerLayout.js +1 -3
- package/dist-es/layer-layout/LayerLayout.js.map +1 -1
- package/dist-es/list-control/ListControlContext.js +31 -0
- package/dist-es/list-control/ListControlContext.js.map +1 -0
- package/dist-es/list-control/ListControlState.js +189 -0
- package/dist-es/list-control/ListControlState.js.map +1 -0
- package/dist-es/option/Option.css.js +4 -0
- package/dist-es/option/Option.css.js.map +1 -0
- package/dist-es/option/Option.js +109 -0
- package/dist-es/option/Option.js.map +1 -0
- package/dist-es/option/OptionGroup.css.js +4 -0
- package/dist-es/option/OptionGroup.css.js.map +1 -0
- package/dist-es/option/OptionGroup.js +40 -0
- package/dist-es/option/OptionGroup.js.map +1 -0
- package/dist-es/option/OptionList.css.js +4 -0
- package/dist-es/option/OptionList.css.js.map +1 -0
- package/dist-es/option/OptionList.js +36 -0
- package/dist-es/option/OptionList.js.map +1 -0
- package/dist-es/tokenized-input/internal/InputPill.js +15 -11
- package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
- package/dist-es/tokenized-input-next/TokenizedInputNext.css.js +4 -0
- package/dist-es/tokenized-input-next/TokenizedInputNext.css.js.map +1 -0
- package/dist-es/tokenized-input-next/TokenizedInputNext.js +240 -0
- package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -0
- package/dist-es/tokenized-input-next/internal/InputPill.css.js +4 -0
- package/dist-es/tokenized-input-next/internal/InputPill.css.js.map +1 -0
- package/dist-es/tokenized-input-next/internal/InputPill.js +79 -0
- package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -0
- package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js +18 -0
- package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -0
- package/dist-es/tokenized-input-next/internal/useResizeObserver.js +33 -0
- package/dist-es/tokenized-input-next/internal/useResizeObserver.js.map +1 -0
- package/dist-es/tokenized-input-next/internal/useWidth.js +42 -0
- package/dist-es/tokenized-input-next/internal/useWidth.js.map +1 -0
- package/dist-es/tokenized-input-next/useTokenizedInputNext.js +471 -0
- package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -0
- package/dist-es/toolbar/overflow-panel/OverflowPanel.js +1 -1
- package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
- package/dist-es/tree/Tree.js +1 -2
- package/dist-es/tree/Tree.js.map +1 -1
- package/dist-types/combo-box-next/ComboBoxNext.d.ts +7 -80
- package/dist-types/combo-box-next/useComboBoxNext.d.ts +31 -0
- package/dist-types/dropdown-next/DropdownNext.d.ts +25 -27
- package/dist-types/index.d.ts +2 -5
- package/dist-types/layer-layout/LayerLayout.d.ts +1 -1
- package/dist-types/list-control/ListControlContext.d.ts +20 -0
- package/dist-types/list-control/ListControlState.d.ts +68 -0
- package/dist-types/option/Option.d.ts +20 -0
- package/dist-types/option/OptionGroup.d.ts +12 -0
- package/dist-types/option/OptionList.d.ts +5 -0
- package/dist-types/option/index.d.ts +2 -0
- package/dist-types/tokenized-input/internal/InputPill.d.ts +7 -5
- package/dist-types/tokenized-input-next/TokenizedInputNext.d.ts +51 -0
- package/dist-types/tokenized-input-next/index.d.ts +2 -0
- package/dist-types/tokenized-input-next/internal/InputPill.d.ts +29 -0
- package/dist-types/tokenized-input-next/internal/calcFirstHiddenIndex.d.ts +4 -0
- package/dist-types/tokenized-input-next/internal/useResizeObserver.d.ts +6 -0
- package/dist-types/tokenized-input-next/internal/useWidth.d.ts +7 -0
- package/dist-types/tokenized-input-next/useTokenizedInputNext.d.ts +47 -0
- package/package.json +2 -2
- package/dist-cjs/combo-box-next/ComboBoxNext.css.js +0 -6
- package/dist-cjs/combo-box-next/ComboBoxNext.css.js.map +0 -1
- package/dist-cjs/combo-box-next/useComboBox.js +0 -147
- package/dist-cjs/combo-box-next/useComboBox.js.map +0 -1
- package/dist-cjs/combo-box-next/useComboboxPortal.js +0 -75
- package/dist-cjs/combo-box-next/useComboboxPortal.js.map +0 -1
- package/dist-cjs/combo-box-next/utils.js +0 -36
- package/dist-cjs/combo-box-next/utils.js.map +0 -1
- package/dist-cjs/dropdown-next/useDropdownNext.js +0 -188
- package/dist-cjs/dropdown-next/useDropdownNext.js.map +0 -1
- package/dist-cjs/focus-manager/FocusManager.js +0 -158
- package/dist-cjs/focus-manager/FocusManager.js.map +0 -1
- package/dist-cjs/focus-manager/internal/findAllTabbableElements.js +0 -45
- package/dist-cjs/focus-manager/internal/findAllTabbableElements.js.map +0 -1
- package/dist-cjs/focus-manager/internal/useReturnFocus.js +0 -59
- package/dist-cjs/focus-manager/internal/useReturnFocus.js.map +0 -1
- package/dist-cjs/navigation-item/ConditionalWrapper.js +0 -37
- package/dist-cjs/navigation-item/ConditionalWrapper.js.map +0 -1
- package/dist-cjs/navigation-item/ExpansionIcon.js +0 -31
- package/dist-cjs/navigation-item/ExpansionIcon.js.map +0 -1
- package/dist-cjs/navigation-item/NavigationItem.css.js +0 -6
- package/dist-cjs/navigation-item/NavigationItem.css.js.map +0 -1
- package/dist-cjs/navigation-item/NavigationItem.js +0 -81
- package/dist-cjs/navigation-item/NavigationItem.js.map +0 -1
- package/dist-cjs/pagination/CompactInput.css.js +0 -6
- package/dist-cjs/pagination/CompactInput.css.js.map +0 -1
- package/dist-cjs/pagination/CompactInput.js +0 -62
- package/dist-cjs/pagination/CompactInput.js.map +0 -1
- package/dist-cjs/pagination/CompactPaginator.css.js +0 -6
- package/dist-cjs/pagination/CompactPaginator.css.js.map +0 -1
- package/dist-cjs/pagination/CompactPaginator.js +0 -76
- package/dist-cjs/pagination/CompactPaginator.js.map +0 -1
- package/dist-cjs/pagination/GoToInput.css.js +0 -6
- package/dist-cjs/pagination/GoToInput.css.js.map +0 -1
- package/dist-cjs/pagination/GoToInput.js +0 -77
- package/dist-cjs/pagination/GoToInput.js.map +0 -1
- package/dist-cjs/pagination/PageButton.css.js +0 -6
- package/dist-cjs/pagination/PageButton.css.js.map +0 -1
- package/dist-cjs/pagination/PageButton.js +0 -44
- package/dist-cjs/pagination/PageButton.js.map +0 -1
- package/dist-cjs/pagination/PageRanges.css.js +0 -6
- package/dist-cjs/pagination/PageRanges.css.js.map +0 -1
- package/dist-cjs/pagination/PageRanges.js +0 -73
- package/dist-cjs/pagination/PageRanges.js.map +0 -1
- package/dist-cjs/pagination/Pagination.css.js +0 -6
- package/dist-cjs/pagination/Pagination.css.js.map +0 -1
- package/dist-cjs/pagination/Pagination.js +0 -78
- package/dist-cjs/pagination/Pagination.js.map +0 -1
- package/dist-cjs/pagination/PaginationContext.js +0 -17
- package/dist-cjs/pagination/PaginationContext.js.map +0 -1
- package/dist-cjs/pagination/Paginator.css.js +0 -6
- package/dist-cjs/pagination/Paginator.css.js.map +0 -1
- package/dist-cjs/pagination/Paginator.js +0 -69
- package/dist-cjs/pagination/Paginator.js.map +0 -1
- package/dist-cjs/pagination/usePagination.js +0 -27
- package/dist-cjs/pagination/usePagination.js.map +0 -1
- package/dist-cjs/pagination/usePaginationContext.js +0 -19
- package/dist-cjs/pagination/usePaginationContext.js.map +0 -1
- package/dist-cjs/pill/ClosablePill.js +0 -61
- package/dist-cjs/pill/ClosablePill.js.map +0 -1
- package/dist-cjs/pill/Pill.css.js +0 -6
- package/dist-cjs/pill/Pill.css.js.map +0 -1
- package/dist-cjs/pill/Pill.js +0 -49
- package/dist-cjs/pill/Pill.js.map +0 -1
- package/dist-cjs/pill/PillBase.js +0 -133
- package/dist-cjs/pill/PillBase.js.map +0 -1
- package/dist-cjs/pill/SelectablePill.js +0 -55
- package/dist-cjs/pill/SelectablePill.js.map +0 -1
- package/dist-cjs/pill/constants.js +0 -8
- package/dist-cjs/pill/constants.js.map +0 -1
- package/dist-cjs/pill/internal/DeleteButton.js +0 -37
- package/dist-cjs/pill/internal/DeleteButton.js.map +0 -1
- package/dist-cjs/pill/internal/DivButton.js +0 -68
- package/dist-cjs/pill/internal/DivButton.js.map +0 -1
- package/dist-cjs/pill/internal/PillCheckbox.css.js +0 -6
- package/dist-cjs/pill/internal/PillCheckbox.css.js.map +0 -1
- package/dist-cjs/pill/internal/PillCheckbox.js +0 -27
- package/dist-cjs/pill/internal/PillCheckbox.js.map +0 -1
- package/dist-cjs/pill-next/PillNext.css.js +0 -6
- package/dist-cjs/pill-next/PillNext.css.js.map +0 -1
- package/dist-cjs/pill-next/PillNext.js +0 -60
- package/dist-cjs/pill-next/PillNext.js.map +0 -1
- package/dist-cjs/scrim/Scrim.css.js +0 -6
- package/dist-cjs/scrim/Scrim.css.js.map +0 -1
- package/dist-cjs/scrim/Scrim.js +0 -170
- package/dist-cjs/scrim/Scrim.js.map +0 -1
- package/dist-cjs/scrim/ScrimContext.js +0 -13
- package/dist-cjs/scrim/ScrimContext.js.map +0 -1
- package/dist-cjs/scrim/internal/PreventFocus.js +0 -39
- package/dist-cjs/scrim/internal/PreventFocus.js.map +0 -1
- package/dist-es/combo-box-next/ComboBoxNext.css.js +0 -4
- package/dist-es/combo-box-next/ComboBoxNext.css.js.map +0 -1
- package/dist-es/combo-box-next/useComboBox.js +0 -143
- package/dist-es/combo-box-next/useComboBox.js.map +0 -1
- package/dist-es/combo-box-next/useComboboxPortal.js +0 -71
- package/dist-es/combo-box-next/useComboboxPortal.js.map +0 -1
- package/dist-es/combo-box-next/utils.js +0 -31
- package/dist-es/combo-box-next/utils.js.map +0 -1
- package/dist-es/dropdown-next/useDropdownNext.js +0 -184
- package/dist-es/dropdown-next/useDropdownNext.js.map +0 -1
- package/dist-es/focus-manager/FocusManager.js +0 -154
- package/dist-es/focus-manager/FocusManager.js.map +0 -1
- package/dist-es/focus-manager/internal/findAllTabbableElements.js +0 -41
- package/dist-es/focus-manager/internal/findAllTabbableElements.js.map +0 -1
- package/dist-es/focus-manager/internal/useReturnFocus.js +0 -55
- package/dist-es/focus-manager/internal/useReturnFocus.js.map +0 -1
- package/dist-es/navigation-item/ConditionalWrapper.js +0 -33
- package/dist-es/navigation-item/ConditionalWrapper.js.map +0 -1
- package/dist-es/navigation-item/ExpansionIcon.js +0 -27
- package/dist-es/navigation-item/ExpansionIcon.js.map +0 -1
- package/dist-es/navigation-item/NavigationItem.css.js +0 -4
- package/dist-es/navigation-item/NavigationItem.css.js.map +0 -1
- package/dist-es/navigation-item/NavigationItem.js +0 -77
- package/dist-es/navigation-item/NavigationItem.js.map +0 -1
- package/dist-es/pagination/CompactInput.css.js +0 -4
- package/dist-es/pagination/CompactInput.css.js.map +0 -1
- package/dist-es/pagination/CompactInput.js +0 -58
- package/dist-es/pagination/CompactInput.js.map +0 -1
- package/dist-es/pagination/CompactPaginator.css.js +0 -4
- package/dist-es/pagination/CompactPaginator.css.js.map +0 -1
- package/dist-es/pagination/CompactPaginator.js +0 -72
- package/dist-es/pagination/CompactPaginator.js.map +0 -1
- package/dist-es/pagination/GoToInput.css.js +0 -4
- package/dist-es/pagination/GoToInput.css.js.map +0 -1
- package/dist-es/pagination/GoToInput.js +0 -73
- package/dist-es/pagination/GoToInput.js.map +0 -1
- package/dist-es/pagination/PageButton.css.js +0 -4
- package/dist-es/pagination/PageButton.css.js.map +0 -1
- package/dist-es/pagination/PageButton.js +0 -40
- package/dist-es/pagination/PageButton.js.map +0 -1
- package/dist-es/pagination/PageRanges.css.js +0 -4
- package/dist-es/pagination/PageRanges.css.js.map +0 -1
- package/dist-es/pagination/PageRanges.js +0 -69
- package/dist-es/pagination/PageRanges.js.map +0 -1
- package/dist-es/pagination/Pagination.css.js +0 -4
- package/dist-es/pagination/Pagination.css.js.map +0 -1
- package/dist-es/pagination/Pagination.js +0 -74
- package/dist-es/pagination/Pagination.js.map +0 -1
- package/dist-es/pagination/PaginationContext.js +0 -13
- package/dist-es/pagination/PaginationContext.js.map +0 -1
- package/dist-es/pagination/Paginator.css.js +0 -4
- package/dist-es/pagination/Paginator.css.js.map +0 -1
- package/dist-es/pagination/Paginator.js +0 -65
- package/dist-es/pagination/Paginator.js.map +0 -1
- package/dist-es/pagination/usePagination.js +0 -23
- package/dist-es/pagination/usePagination.js.map +0 -1
- package/dist-es/pagination/usePaginationContext.js +0 -15
- package/dist-es/pagination/usePaginationContext.js.map +0 -1
- package/dist-es/pill/ClosablePill.js +0 -57
- package/dist-es/pill/ClosablePill.js.map +0 -1
- package/dist-es/pill/Pill.css.js +0 -4
- package/dist-es/pill/Pill.css.js.map +0 -1
- package/dist-es/pill/Pill.js +0 -45
- package/dist-es/pill/Pill.js.map +0 -1
- package/dist-es/pill/PillBase.js +0 -129
- package/dist-es/pill/PillBase.js.map +0 -1
- package/dist-es/pill/SelectablePill.js +0 -51
- package/dist-es/pill/SelectablePill.js.map +0 -1
- package/dist-es/pill/constants.js +0 -4
- package/dist-es/pill/constants.js.map +0 -1
- package/dist-es/pill/internal/DeleteButton.js +0 -33
- package/dist-es/pill/internal/DeleteButton.js.map +0 -1
- package/dist-es/pill/internal/DivButton.js +0 -64
- package/dist-es/pill/internal/DivButton.js.map +0 -1
- package/dist-es/pill/internal/PillCheckbox.css.js +0 -4
- package/dist-es/pill/internal/PillCheckbox.css.js.map +0 -1
- package/dist-es/pill/internal/PillCheckbox.js +0 -23
- package/dist-es/pill/internal/PillCheckbox.js.map +0 -1
- package/dist-es/pill-next/PillNext.css.js +0 -4
- package/dist-es/pill-next/PillNext.css.js.map +0 -1
- package/dist-es/pill-next/PillNext.js +0 -52
- package/dist-es/pill-next/PillNext.js.map +0 -1
- package/dist-es/scrim/Scrim.css.js +0 -4
- package/dist-es/scrim/Scrim.css.js.map +0 -1
- package/dist-es/scrim/Scrim.js +0 -162
- package/dist-es/scrim/Scrim.js.map +0 -1
- package/dist-es/scrim/ScrimContext.js +0 -9
- package/dist-es/scrim/ScrimContext.js.map +0 -1
- package/dist-es/scrim/internal/PreventFocus.js +0 -35
- package/dist-es/scrim/internal/PreventFocus.js.map +0 -1
- package/dist-types/combo-box-next/useComboBox.d.ts +0 -44
- package/dist-types/combo-box-next/useComboboxPortal.d.ts +0 -22
- package/dist-types/combo-box-next/utils.d.ts +0 -7
- package/dist-types/dropdown-next/useDropdownNext.d.ts +0 -50
- package/dist-types/navigation-item/ConditionalWrapper.d.ts +0 -8
- package/dist-types/navigation-item/ExpansionIcon.d.ts +0 -2
- package/dist-types/navigation-item/NavigationItem.d.ts +0 -36
- package/dist-types/navigation-item/index.d.ts +0 -1
- package/dist-types/pagination/CompactInput.d.ts +0 -2
- package/dist-types/pagination/CompactPaginator.d.ts +0 -1
- package/dist-types/pagination/GoToInput.d.ts +0 -16
- package/dist-types/pagination/PageButton.d.ts +0 -6
- package/dist-types/pagination/PageRanges.d.ts +0 -5
- package/dist-types/pagination/Pagination.d.ts +0 -20
- package/dist-types/pagination/PaginationContext.d.ts +0 -7
- package/dist-types/pagination/Paginator.d.ts +0 -12
- package/dist-types/pagination/index.d.ts +0 -5
- package/dist-types/pagination/usePagination.d.ts +0 -2
- package/dist-types/pagination/usePaginationContext.d.ts +0 -1
- package/dist-types/pill/ClosablePill.d.ts +0 -8
- package/dist-types/pill/Pill.d.ts +0 -15
- package/dist-types/pill/PillBase.d.ts +0 -52
- package/dist-types/pill/SelectablePill.d.ts +0 -17
- package/dist-types/pill/constants.d.ts +0 -1
- package/dist-types/pill/index.d.ts +0 -3
- package/dist-types/pill/internal/DeleteButton.d.ts +0 -8
- package/dist-types/pill/internal/DivButton.d.ts +0 -12
- package/dist-types/pill/internal/PillCheckbox.d.ts +0 -3
- package/dist-types/pill-next/PillNext.d.ts +0 -4
- package/dist-types/pill-next/index.d.ts +0 -1
- package/dist-types/scrim/Scrim.d.ts +0 -68
- package/dist-types/scrim/ScrimContext.d.ts +0 -1
- package/dist-types/scrim/index.d.ts +0 -2
- package/dist-types/scrim/internal/PreventFocus.d.ts +0 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { useListControl } from '../list-control/ListControlState.js';
|
|
2
|
+
|
|
3
|
+
function useComboBoxNext(props) {
|
|
4
|
+
const {
|
|
5
|
+
open,
|
|
6
|
+
defaultOpen,
|
|
7
|
+
onOpenChange,
|
|
8
|
+
multiselect,
|
|
9
|
+
defaultSelected,
|
|
10
|
+
selected,
|
|
11
|
+
onSelectionChange,
|
|
12
|
+
defaultValue,
|
|
13
|
+
value
|
|
14
|
+
} = props;
|
|
15
|
+
const listControl = useListControl({
|
|
16
|
+
open,
|
|
17
|
+
defaultOpen,
|
|
18
|
+
onOpenChange,
|
|
19
|
+
multiselect,
|
|
20
|
+
defaultSelected,
|
|
21
|
+
selected,
|
|
22
|
+
onSelectionChange,
|
|
23
|
+
defaultValue,
|
|
24
|
+
value
|
|
25
|
+
});
|
|
26
|
+
const { selectedState, getOptionsMatching, setValueState, setSelectedState } = listControl;
|
|
27
|
+
const select = (event, option) => {
|
|
28
|
+
const { disabled, value: value2 } = option;
|
|
29
|
+
if (disabled) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
let newSelected = [value2];
|
|
33
|
+
if (multiselect) {
|
|
34
|
+
if (selectedState.includes(value2)) {
|
|
35
|
+
newSelected = selectedState.filter((item) => item !== value2);
|
|
36
|
+
} else {
|
|
37
|
+
newSelected = selectedState.concat([value2]);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
setSelectedState(newSelected);
|
|
41
|
+
const newValue = getOptionsMatching(
|
|
42
|
+
(option2) => newSelected.includes(option2.value)
|
|
43
|
+
).map((option2) => option2.text);
|
|
44
|
+
setValueState(multiselect ? "" : newValue[0]);
|
|
45
|
+
onSelectionChange == null ? void 0 : onSelectionChange(event, newSelected);
|
|
46
|
+
};
|
|
47
|
+
return { ...listControl, select };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { useComboBoxNext };
|
|
51
|
+
//# sourceMappingURL=useComboBoxNext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useComboBoxNext.js","sources":["../src/combo-box-next/useComboBoxNext.tsx"],"sourcesContent":["import {\n useListControl,\n ListControlProps,\n} from \"../list-control/ListControlState\";\n\nimport { SyntheticEvent } from \"react\";\nimport { OptionValue } from \"../list-control/ListControlContext\";\n\nexport function useComboBoxNext(props: ListControlProps) {\n const {\n open,\n defaultOpen,\n onOpenChange,\n multiselect,\n defaultSelected,\n selected,\n onSelectionChange,\n defaultValue,\n value,\n } = props;\n\n const listControl = useListControl({\n open,\n defaultOpen,\n onOpenChange,\n multiselect,\n defaultSelected,\n selected,\n onSelectionChange,\n defaultValue,\n value,\n });\n\n const { selectedState, getOptionsMatching, setValueState, setSelectedState } =\n listControl;\n\n const select = (event: SyntheticEvent, option: OptionValue) => {\n const { disabled, value } = option;\n\n if (disabled) {\n return;\n }\n\n let newSelected = [value];\n\n if (multiselect) {\n if (selectedState.includes(value)) {\n newSelected = selectedState.filter((item) => item !== value);\n } else {\n newSelected = selectedState.concat([value]);\n }\n }\n\n setSelectedState(newSelected);\n const newValue = getOptionsMatching((option) =>\n newSelected.includes(option.value)\n ).map((option) => option.text);\n setValueState(multiselect ? \"\" : newValue[0]);\n onSelectionChange?.(event, newSelected);\n };\n\n return { ...listControl, select };\n}\n"],"names":["value","option"],"mappings":";;AAQO,SAAS,gBAAgB,KAAyB,EAAA;AACvD,EAAM,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,cAAc,cAAe,CAAA;AAAA,IACjC,IAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,aAAA,EAAe,kBAAoB,EAAA,aAAA,EAAe,kBACxD,GAAA,WAAA,CAAA;AAEF,EAAM,MAAA,MAAA,GAAS,CAAC,KAAA,EAAuB,MAAwB,KAAA;AAC7D,IAAA,MAAM,EAAE,QAAA,EAAU,KAAAA,EAAAA,MAAAA,EAAU,GAAA,MAAA,CAAA;AAE5B,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,OAAA;AAAA,KACF;AAEA,IAAI,IAAA,WAAA,GAAc,CAACA,MAAK,CAAA,CAAA;AAExB,IAAA,IAAI,WAAa,EAAA;AACf,MAAI,IAAA,aAAA,CAAc,QAASA,CAAAA,MAAK,CAAG,EAAA;AACjC,QAAA,WAAA,GAAc,aAAc,CAAA,MAAA,CAAO,CAAC,IAAA,KAAS,SAASA,MAAK,CAAA,CAAA;AAAA,OACtD,MAAA;AACL,QAAA,WAAA,GAAc,aAAc,CAAA,MAAA,CAAO,CAACA,MAAK,CAAC,CAAA,CAAA;AAAA,OAC5C;AAAA,KACF;AAEA,IAAA,gBAAA,CAAiB,WAAW,CAAA,CAAA;AAC5B,IAAA,MAAM,QAAW,GAAA,kBAAA;AAAA,MAAmB,CAACC,OAAAA,KACnC,WAAY,CAAA,QAAA,CAASA,QAAO,KAAK,CAAA;AAAA,KACjC,CAAA,GAAA,CAAI,CAACA,OAAAA,KAAWA,QAAO,IAAI,CAAA,CAAA;AAC7B,IAAc,aAAA,CAAA,WAAA,GAAc,EAAK,GAAA,QAAA,CAAS,CAAE,CAAA,CAAA,CAAA;AAC5C,IAAA,iBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,iBAAA,CAAoB,KAAO,EAAA,WAAA,CAAA,CAAA;AAAA,GAC7B,CAAA;AAEA,EAAO,OAAA,EAAE,GAAG,WAAA,EAAa,MAAO,EAAA,CAAA;AAClC;;;;"}
|
|
@@ -144,7 +144,7 @@ const DropdownBase = forwardRef(
|
|
|
144
144
|
top: y != null ? y : 0,
|
|
145
145
|
left: x != null ? x : 0,
|
|
146
146
|
position: strategy,
|
|
147
|
-
maxHeight: maxPopupHeight
|
|
147
|
+
maxHeight: maxPopupHeight
|
|
148
148
|
},
|
|
149
149
|
ref: handleFloatingRef,
|
|
150
150
|
children: getPopupComponent()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownBase.js","sources":["../src/dropdown/DropdownBase.tsx"],"sourcesContent":["import { flip, limitShift, shift, size } from \"@floating-ui/react\";\nimport {\n makePrefixer,\n useFloatingUI,\n useForkRef,\n useIdMemo as useId,\n} from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { Children, cloneElement, forwardRef, useRef, useState } from \"react\";\nimport { forwardCallbackProps } from \"../utils\";\nimport { DropdownBaseProps } from \"./dropdownTypes\";\nimport { useDropdownBase } from \"./useDropdownBase\";\nimport { Portal } from \"../portal\";\nimport { isDesktop, useWindow as usePortalWindow } from \"../window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport { useWindow } from \"@salt-ds/window\";\n\nimport dropdownCss from \"./Dropdown.css\";\n// Any component may be passed as our trigger or popup component.\n// Define the common props that we will act on, if present,\n// so we can type them.\nexport type MaybeChildProps = {\n className?: string;\n id?: string;\n role?: string;\n width: number | string;\n};\n\nconst withBaseName = makePrefixer(\"saltDropdown\");\n\nexport const DropdownBase = forwardRef<HTMLDivElement, DropdownBaseProps>(\n function Dropdown(\n {\n \"aria-labelledby\": ariaLabelledByProp,\n children,\n className: classNameProp,\n container,\n defaultIsOpen,\n disabled,\n disablePortal,\n fullWidth,\n id: idProp,\n isOpen: isOpenProp,\n onKeyDown,\n onOpenChange,\n openOnFocus,\n placement = \"bottom-start\",\n popupWidth,\n width,\n ...htmlAttributes\n },\n forwardedRef\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dropdown\",\n css: dropdownCss,\n window: targetWindow,\n });\n\n const rootRef = useRef<HTMLDivElement>(null);\n const className = clsx(withBaseName(), classNameProp, {\n [withBaseName(\"fullWidth\")]: fullWidth,\n [withBaseName(\"disabled\")]: disabled,\n });\n const [trigger, popupComponent] = Children.toArray(\n children\n ) as JSX.Element[];\n const id = useId(idProp);\n const Window = usePortalWindow();\n\n const { componentProps, popperRef, isOpen, triggerProps } = useDropdownBase(\n {\n ariaLabelledBy: ariaLabelledByProp,\n defaultIsOpen,\n disabled,\n fullWidth,\n id,\n isOpen: isOpenProp,\n onOpenChange,\n onKeyDown,\n openOnFocus,\n popupComponent,\n popupWidth,\n rootRef,\n width,\n }\n );\n const [maxPopupHeight, setMaxPopupHeight] = useState<number | undefined>(\n undefined\n );\n\n const middleware = isDesktop\n ? []\n : [\n flip({\n fallbackPlacements: [\"bottom-start\", \"top-start\"],\n }),\n shift({ limiter: limitShift() }),\n size({\n apply({ availableHeight }) {\n setMaxPopupHeight(availableHeight);\n },\n }),\n ];\n\n const { reference, floating, x, y, strategy } = useFloatingUI({\n placement,\n middleware,\n });\n\n const handlePopperListAdapterRef = useForkRef<HTMLDivElement>(\n reference,\n forwardedRef\n );\n const handleRootRef = useForkRef(rootRef, handlePopperListAdapterRef);\n const handleFloatingRef = useForkRef<HTMLDivElement>(floating, popperRef);\n // TODO maybe we should pass style, with maxHeight, to the popupComponent\n\n const getTriggerComponent = () => {\n const {\n id: defaultId,\n role: defaultRole,\n ...restTriggerProps\n } = triggerProps;\n\n const {\n id = defaultId,\n role = defaultRole,\n ...ownProps\n } = trigger.props as MaybeChildProps;\n\n return cloneElement(\n trigger,\n forwardCallbackProps(ownProps, {\n ...restTriggerProps,\n id,\n role,\n })\n );\n };\n\n const getPopupComponent = () => {\n const { id: defaultId, width, ...restComponentProps } = componentProps;\n const {\n className,\n id = defaultId,\n width: ownWidth,\n ...ownProps\n } = popupComponent.props as MaybeChildProps;\n return cloneElement(popupComponent, {\n ...ownProps,\n ...restComponentProps,\n className: clsx(className, withBaseName(\"popup-component\")),\n id,\n width: ownWidth ?? width,\n });\n };\n\n return (\n <div\n {...htmlAttributes}\n className={className}\n data-testid=\"dropdown\"\n id={idProp}\n ref={handleRootRef}\n >\n {getTriggerComponent()}\n {isOpen && (\n <Portal disablePortal={disablePortal} container={container}>\n <Window\n className={clsx(withBaseName(\"popup\"), classNameProp)}\n id={`${id}-popup`}\n style={{\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n maxHeight: maxPopupHeight
|
|
1
|
+
{"version":3,"file":"DropdownBase.js","sources":["../src/dropdown/DropdownBase.tsx"],"sourcesContent":["import { flip, limitShift, shift, size } from \"@floating-ui/react\";\nimport {\n makePrefixer,\n useFloatingUI,\n useForkRef,\n useIdMemo as useId,\n} from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { Children, cloneElement, forwardRef, useRef, useState } from \"react\";\nimport { forwardCallbackProps } from \"../utils\";\nimport { DropdownBaseProps } from \"./dropdownTypes\";\nimport { useDropdownBase } from \"./useDropdownBase\";\nimport { Portal } from \"../portal\";\nimport { isDesktop, useWindow as usePortalWindow } from \"../window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport { useWindow } from \"@salt-ds/window\";\n\nimport dropdownCss from \"./Dropdown.css\";\n// Any component may be passed as our trigger or popup component.\n// Define the common props that we will act on, if present,\n// so we can type them.\nexport type MaybeChildProps = {\n className?: string;\n id?: string;\n role?: string;\n width: number | string;\n};\n\nconst withBaseName = makePrefixer(\"saltDropdown\");\n\nexport const DropdownBase = forwardRef<HTMLDivElement, DropdownBaseProps>(\n function Dropdown(\n {\n \"aria-labelledby\": ariaLabelledByProp,\n children,\n className: classNameProp,\n container,\n defaultIsOpen,\n disabled,\n disablePortal,\n fullWidth,\n id: idProp,\n isOpen: isOpenProp,\n onKeyDown,\n onOpenChange,\n openOnFocus,\n placement = \"bottom-start\",\n popupWidth,\n width,\n ...htmlAttributes\n },\n forwardedRef\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-dropdown\",\n css: dropdownCss,\n window: targetWindow,\n });\n\n const rootRef = useRef<HTMLDivElement>(null);\n const className = clsx(withBaseName(), classNameProp, {\n [withBaseName(\"fullWidth\")]: fullWidth,\n [withBaseName(\"disabled\")]: disabled,\n });\n const [trigger, popupComponent] = Children.toArray(\n children\n ) as JSX.Element[];\n const id = useId(idProp);\n const Window = usePortalWindow();\n\n const { componentProps, popperRef, isOpen, triggerProps } = useDropdownBase(\n {\n ariaLabelledBy: ariaLabelledByProp,\n defaultIsOpen,\n disabled,\n fullWidth,\n id,\n isOpen: isOpenProp,\n onOpenChange,\n onKeyDown,\n openOnFocus,\n popupComponent,\n popupWidth,\n rootRef,\n width,\n }\n );\n const [maxPopupHeight, setMaxPopupHeight] = useState<number | undefined>(\n undefined\n );\n\n const middleware = isDesktop\n ? []\n : [\n flip({\n fallbackPlacements: [\"bottom-start\", \"top-start\"],\n }),\n shift({ limiter: limitShift() }),\n size({\n apply({ availableHeight }) {\n setMaxPopupHeight(availableHeight);\n },\n }),\n ];\n\n const { reference, floating, x, y, strategy } = useFloatingUI({\n placement,\n middleware,\n });\n\n const handlePopperListAdapterRef = useForkRef<HTMLDivElement>(\n reference,\n forwardedRef\n );\n const handleRootRef = useForkRef(rootRef, handlePopperListAdapterRef);\n const handleFloatingRef = useForkRef<HTMLDivElement>(floating, popperRef);\n // TODO maybe we should pass style, with maxHeight, to the popupComponent\n\n const getTriggerComponent = () => {\n const {\n id: defaultId,\n role: defaultRole,\n ...restTriggerProps\n } = triggerProps;\n\n const {\n id = defaultId,\n role = defaultRole,\n ...ownProps\n } = trigger.props as MaybeChildProps;\n\n return cloneElement(\n trigger,\n forwardCallbackProps(ownProps, {\n ...restTriggerProps,\n id,\n role,\n })\n );\n };\n\n const getPopupComponent = () => {\n const { id: defaultId, width, ...restComponentProps } = componentProps;\n const {\n className,\n id = defaultId,\n width: ownWidth,\n ...ownProps\n } = popupComponent.props as MaybeChildProps;\n return cloneElement(popupComponent, {\n ...ownProps,\n ...restComponentProps,\n className: clsx(className, withBaseName(\"popup-component\")),\n id,\n width: ownWidth ?? width,\n });\n };\n\n return (\n <div\n {...htmlAttributes}\n className={className}\n data-testid=\"dropdown\"\n id={idProp}\n ref={handleRootRef}\n >\n {getTriggerComponent()}\n {isOpen && (\n <Portal disablePortal={disablePortal} container={container}>\n <Window\n className={clsx(withBaseName(\"popup\"), classNameProp)}\n id={`${id}-popup`}\n style={{\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n maxHeight: maxPopupHeight,\n }}\n ref={handleFloatingRef}\n >\n {getPopupComponent()}\n </Window>\n </Portal>\n )}\n </div>\n );\n }\n);\n"],"names":["dropdownCss","useId","usePortalWindow","id","width","className"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var css_248z = ".saltDropdownNext
|
|
1
|
+
var css_248z = ".saltDropdownNext {\n --dropdownNext-borderColor: var(--salt-editable-borderColor);\n --dropdownNext-color: var(--salt-content-primary-foreground);\n --dropdownNext-cursor: var(--salt-selectable-cursor-hover);\n}\n\n.saltDropdownNext {\n all: unset;\n box-sizing: border-box;\n min-width: 4em;\n width: 100%;\n background: var(--dropdownNext-background);\n cursor: var(--dropdownNext-cursor);\n min-height: var(--salt-size-base);\n border-bottom: var(--salt-size-border) var(--salt-editable-borderStyle) var(--dropdownNext-borderColor);\n display: flex;\n align-items: center;\n padding: 0 var(--salt-spacing-100);\n gap: var(--salt-spacing-100);\n color: var(--dropdownNext-color);\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n}\n\n.saltDropdownNext:hover {\n --dropdownNext-borderColor: var(--salt-editable-borderColor-hover);\n}\n\n.saltDropdownNext:focus-visible {\n outline: var(--salt-focused-outline);\n --dropdownNext-borderColor: var(--salt-editable-borderColor-hover);\n}\n\n.saltDropdownNext-content {\n flex: 1;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n text-wrap: nowrap;\n}\n\n.saltDropdownNext-placeholder {\n color: var(--salt-content-secondary-foreground);\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n.saltDropdownNext-primary {\n --dropdownNext-background: var(--salt-editable-primary-background);\n}\n\n.saltDropdownNext-secondary {\n --dropdownNext-background: var(--salt-editable-secondary-background);\n}\n\n.saltDropdownNext:disabled {\n --dropdownNext-background: var(--salt-editable-primary-background-disabled);\n --dropdownNext-borderColor: var(--salt-editable-borderColor-disabled);\n --dropdownNext-color: var(--salt-content-primary-foreground-disabled);\n --dropdownNext-cursor: var(--salt-selectable-cursor-disabled);\n}\n\n.saltDropdownNext[aria-readonly=\"true\"] {\n --dropdownNext-background: var(--salt-editable-primary-background-readonly);\n --dropdownNext-borderColor: var(--salt-editable-borderColor-readonly);\n --dropdownNext-color: var(--salt-content-primary-foreground);\n --dropdownNext-cursor: var(--salt-selectable-cursor-readonly);\n}\n\n.saltDropdownNext-error {\n --dropdownNext-background: var(--salt-status-error-background);\n --dropdownNext-borderColor: var(--salt-status-error-borderColor);\n}\n\n.saltDropdownNext-error .saltDropdownNext:focus-visible {\n outline-color: var(--salt-status-error-borderColor);\n --dropdownNext-borderColor: var(--salt-status-error-borderColor);\n}\n\n.saltDropdownNext-warning {\n --dropdownNext-background: var(--salt-status-warning-background);\n --dropdownNext-borderColor: var(--salt-status-warning-borderColor);\n}\n\n.saltDropdownNext-warning .saltDropdownNext:focus-visible {\n outline-color: var(--salt-status-warning-borderColor);\n --dropdownNext-borderColor: var(--salt-status-warning-borderColor);\n}\n\n.saltDropdownNext-success {\n --dropdownNext-background: var(--salt-status-success-background);\n --dropdownNext-borderColor: var(--salt-status-success-borderColor);\n}\n\n.saltDropdownNext-success .saltDropdownNext:focus-visible {\n outline-color: var(--salt-status-success-borderColor);\n --dropdownNext-borderColor: var(--salt-status-success-borderColor);\n}\n";
|
|
2
2
|
|
|
3
3
|
export { css_248z as default };
|
|
4
4
|
//# sourceMappingURL=DropdownNext.css.js.map
|
|
@@ -1,182 +1,346 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import '../list-next/ListItemNext.js';
|
|
5
|
-
import { makePrefixer, useId, useForkRef, useFloatingComponent } from '@salt-ds/core';
|
|
2
|
+
import { forwardRef, useRef, useEffect } from 'react';
|
|
3
|
+
import { useListControl } from '../list-control/ListControlState.js';
|
|
6
4
|
import { ChevronUpIcon, ChevronDownIcon } from '@salt-ds/icons';
|
|
7
|
-
import {
|
|
5
|
+
import { makePrefixer, useFormFieldProps, useFloatingComponent, useFloatingUI, useForkRef, useId, StatusAdornment } from '@salt-ds/core';
|
|
6
|
+
import { size, flip } from '@floating-ui/react';
|
|
7
|
+
import { clsx } from 'clsx';
|
|
8
8
|
import { useWindow } from '@salt-ds/window';
|
|
9
|
-
import css_248z from './DropdownNext.css.js';
|
|
10
9
|
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
11
|
-
import
|
|
10
|
+
import css_248z from './DropdownNext.css.js';
|
|
11
|
+
import { ListControlContext } from '../list-control/ListControlContext.js';
|
|
12
|
+
import { OptionList } from '../option/OptionList.js';
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
variant = "primary",
|
|
19
|
-
id: dropdownIdProp,
|
|
20
|
-
defaultSelected,
|
|
21
|
-
readOnly,
|
|
22
|
-
source,
|
|
23
|
-
placement = "bottom",
|
|
24
|
-
open: openControlProp,
|
|
25
|
-
selected: selectedControlProp,
|
|
26
|
-
highlightedItem: highlightedItemControlProp,
|
|
27
|
-
onFocus,
|
|
28
|
-
onKeyDown,
|
|
29
|
-
onMouseOver,
|
|
30
|
-
onMouseDown,
|
|
31
|
-
onSelect,
|
|
32
|
-
listRef: listRefProp,
|
|
33
|
-
ListProps,
|
|
34
|
-
...restProps
|
|
35
|
-
} = props;
|
|
36
|
-
const targetWindow = useWindow();
|
|
37
|
-
useComponentCssInjection({
|
|
38
|
-
testId: "salt-dropdown-next",
|
|
39
|
-
css: css_248z,
|
|
40
|
-
window: targetWindow
|
|
41
|
-
});
|
|
42
|
-
const listId = useId(ListProps == null ? void 0 : ListProps.id);
|
|
43
|
-
const dropdownId = useId(dropdownIdProp);
|
|
44
|
-
const listRef = useRef(null);
|
|
45
|
-
const setListRef = useForkRef(listRefProp, listRef);
|
|
46
|
-
const listProps = {
|
|
47
|
-
defaultSelected,
|
|
48
|
-
disabled,
|
|
49
|
-
ref: listRef,
|
|
50
|
-
id: listId,
|
|
51
|
-
onSelect,
|
|
52
|
-
selected: selectedControlProp,
|
|
53
|
-
highlightedItem: highlightedItemControlProp
|
|
54
|
-
};
|
|
55
|
-
const {
|
|
56
|
-
handlers,
|
|
57
|
-
activeDescendant,
|
|
58
|
-
selectedItem,
|
|
59
|
-
highlightedItem,
|
|
60
|
-
getListItems,
|
|
61
|
-
portalProps,
|
|
62
|
-
getReferenceProps,
|
|
63
|
-
refs
|
|
64
|
-
} = useDropdownNext({
|
|
65
|
-
listProps,
|
|
66
|
-
placement,
|
|
67
|
-
openControlProp
|
|
14
|
+
function ExpandIcon({ open }) {
|
|
15
|
+
return open ? /* @__PURE__ */ jsx(ChevronUpIcon, {
|
|
16
|
+
"aria-hidden": true
|
|
17
|
+
}) : /* @__PURE__ */ jsx(ChevronDownIcon, {
|
|
18
|
+
"aria-hidden": true
|
|
68
19
|
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
20
|
+
}
|
|
21
|
+
const withBaseName = makePrefixer("saltDropdownNext");
|
|
22
|
+
const DropdownNext = forwardRef(
|
|
23
|
+
function DropdownNext2(props, ref) {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
const {
|
|
26
|
+
"aria-labelledby": ariaLabelledBy,
|
|
27
|
+
"aria-describedby": ariaDescribedBy,
|
|
28
|
+
children,
|
|
29
|
+
className,
|
|
30
|
+
disabled: disabledProp,
|
|
31
|
+
emptyReadOnlyMarker = "\u2014",
|
|
32
|
+
readOnly: readOnlyProp,
|
|
33
|
+
multiselect,
|
|
34
|
+
onSelectionChange,
|
|
35
|
+
selected,
|
|
36
|
+
defaultSelected,
|
|
37
|
+
defaultOpen,
|
|
38
|
+
defaultValue: defaultValueProp,
|
|
39
|
+
value,
|
|
40
|
+
onOpenChange,
|
|
41
|
+
open,
|
|
42
|
+
placeholder,
|
|
43
|
+
startAdornment,
|
|
44
|
+
required: requiredProp,
|
|
45
|
+
variant = "primary",
|
|
46
|
+
validationStatus: validationStatusProp,
|
|
47
|
+
onClick,
|
|
48
|
+
onKeyDown,
|
|
49
|
+
onFocus,
|
|
50
|
+
onBlur,
|
|
51
|
+
...rest
|
|
52
|
+
} = props;
|
|
53
|
+
const targetWindow = useWindow();
|
|
54
|
+
useComponentCssInjection({
|
|
55
|
+
testId: "salt-DropdownNext",
|
|
56
|
+
css: css_248z,
|
|
57
|
+
window: targetWindow
|
|
58
|
+
});
|
|
59
|
+
const {
|
|
60
|
+
a11yProps: {
|
|
61
|
+
"aria-describedby": formFieldDescribedBy,
|
|
62
|
+
"aria-labelledby": formFieldLabelledBy
|
|
63
|
+
} = {},
|
|
64
|
+
disabled: formFieldDisabled,
|
|
65
|
+
readOnly: formFieldReadOnly,
|
|
66
|
+
necessity: formFieldRequired,
|
|
67
|
+
validationStatus: formFieldValidationStatus
|
|
68
|
+
} = useFormFieldProps();
|
|
69
|
+
const disabled = Boolean(disabledProp) || formFieldDisabled;
|
|
70
|
+
const readOnly = Boolean(readOnlyProp) || formFieldReadOnly;
|
|
71
|
+
const validationStatus = validationStatusProp != null ? validationStatusProp : formFieldValidationStatus;
|
|
72
|
+
const required = formFieldRequired ? ["required", "asterisk"].includes(formFieldRequired) : requiredProp;
|
|
73
|
+
const isEmptyReadOnly = readOnly && !defaultValueProp && !value;
|
|
74
|
+
const defaultValue = isEmptyReadOnly ? emptyReadOnlyMarker : defaultValueProp;
|
|
75
|
+
const listControl = useListControl({
|
|
76
|
+
open,
|
|
77
|
+
defaultOpen,
|
|
78
|
+
onOpenChange,
|
|
79
|
+
multiselect,
|
|
80
|
+
defaultSelected,
|
|
81
|
+
selected,
|
|
82
|
+
onSelectionChange,
|
|
83
|
+
defaultValue,
|
|
84
|
+
value
|
|
84
85
|
});
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
const {
|
|
87
|
+
activeState,
|
|
88
|
+
setActive,
|
|
89
|
+
openState,
|
|
90
|
+
setOpen,
|
|
91
|
+
openKey,
|
|
92
|
+
getOptionAtIndex,
|
|
93
|
+
getIndexOfOption,
|
|
94
|
+
getOptionsMatching,
|
|
95
|
+
getOptionFromSearch,
|
|
96
|
+
options,
|
|
97
|
+
selectedState,
|
|
98
|
+
select,
|
|
99
|
+
valueState,
|
|
100
|
+
setFocusVisibleState,
|
|
101
|
+
focusedState,
|
|
102
|
+
setFocusedState,
|
|
103
|
+
listRef
|
|
104
|
+
} = listControl;
|
|
105
|
+
const { Component: FloatingComponent } = useFloatingComponent();
|
|
106
|
+
const { x, y, strategy, elements, floating, reference } = useFloatingUI({
|
|
107
|
+
open,
|
|
108
|
+
placement: "bottom-start",
|
|
109
|
+
middleware: [
|
|
110
|
+
size({
|
|
111
|
+
apply({ rects, elements: elements2, availableHeight }) {
|
|
112
|
+
Object.assign(elements2.floating.style, {
|
|
113
|
+
minWidth: `${rects.reference.width}px`,
|
|
114
|
+
maxHeight: `max(calc((var(--salt-size-base) + var(--salt-spacing-100)) * 5), calc(${availableHeight}px - var(--salt-spacing-100)))`
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}),
|
|
118
|
+
flip({ fallbackStrategy: "initialPlacement" })
|
|
119
|
+
]
|
|
89
120
|
});
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
121
|
+
const buttonRef = useRef(null);
|
|
122
|
+
const handleTriggerRef = useForkRef(
|
|
123
|
+
reference,
|
|
124
|
+
buttonRef
|
|
125
|
+
);
|
|
126
|
+
const handleButtonRef = useForkRef(handleTriggerRef, ref);
|
|
127
|
+
const handleClick = (event) => {
|
|
128
|
+
if (!readOnly) {
|
|
129
|
+
setFocusVisibleState(false);
|
|
130
|
+
setOpen(event, !openState);
|
|
131
|
+
}
|
|
132
|
+
onClick == null ? void 0 : onClick(event);
|
|
133
|
+
};
|
|
134
|
+
const typeaheadString = useRef("");
|
|
135
|
+
const typeaheadTimeout = useRef();
|
|
136
|
+
const handleTypeahead = (event) => {
|
|
137
|
+
if (typeaheadTimeout.current) {
|
|
138
|
+
clearTimeout(typeaheadTimeout.current);
|
|
139
|
+
}
|
|
140
|
+
typeaheadString.current += event.key;
|
|
141
|
+
typeaheadTimeout.current = window.setTimeout(() => {
|
|
142
|
+
typeaheadString.current = "";
|
|
143
|
+
}, 500);
|
|
144
|
+
if (!openState) {
|
|
145
|
+
setOpen(event, true);
|
|
146
|
+
}
|
|
147
|
+
let newOption = getOptionFromSearch(typeaheadString.current, activeState);
|
|
148
|
+
if (!newOption) {
|
|
149
|
+
newOption = getOptionFromSearch(typeaheadString.current);
|
|
150
|
+
}
|
|
151
|
+
if (newOption) {
|
|
152
|
+
setActive(newOption);
|
|
153
|
+
setFocusVisibleState(true);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
const handleKeyDown = (event) => {
|
|
157
|
+
const currentIndex = activeState ? getIndexOfOption(activeState) : -1;
|
|
158
|
+
const count = options.length - 1;
|
|
159
|
+
if (readOnly) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (!openState) {
|
|
163
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
164
|
+
setOpen(event, true);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {
|
|
169
|
+
event.preventDefault();
|
|
170
|
+
event.stopPropagation();
|
|
171
|
+
handleTypeahead(event);
|
|
172
|
+
}
|
|
173
|
+
let newActive;
|
|
174
|
+
switch (event.key) {
|
|
175
|
+
case "ArrowDown":
|
|
176
|
+
newActive = getOptionAtIndex(Math.min(count, currentIndex + 1));
|
|
177
|
+
break;
|
|
178
|
+
case "ArrowUp":
|
|
179
|
+
newActive = getOptionAtIndex(Math.max(0, currentIndex - 1));
|
|
180
|
+
break;
|
|
181
|
+
case "Home":
|
|
182
|
+
newActive = getOptionAtIndex(0);
|
|
183
|
+
break;
|
|
184
|
+
case "End":
|
|
185
|
+
newActive = getOptionAtIndex(count);
|
|
186
|
+
break;
|
|
187
|
+
case "PageUp":
|
|
188
|
+
newActive = getOptionAtIndex(Math.max(0, currentIndex - 10));
|
|
189
|
+
break;
|
|
190
|
+
case "PageDown":
|
|
191
|
+
newActive = getOptionAtIndex(Math.min(count, currentIndex + 10));
|
|
192
|
+
break;
|
|
193
|
+
case "Enter":
|
|
194
|
+
case " ":
|
|
195
|
+
if (openState && Boolean(activeState == null ? void 0 : activeState.disabled) || typeaheadString.current.trim().length > 0 && event.key === " ") {
|
|
196
|
+
event.preventDefault();
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (!openState || !activeState) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
event.preventDefault();
|
|
203
|
+
select(event, activeState);
|
|
204
|
+
if (!multiselect) {
|
|
205
|
+
setOpen(event, false);
|
|
206
|
+
}
|
|
207
|
+
break;
|
|
208
|
+
case "Escape":
|
|
209
|
+
setOpen(event, false);
|
|
210
|
+
break;
|
|
211
|
+
case "Tab":
|
|
212
|
+
if (!multiselect && activeState) {
|
|
213
|
+
select(event, activeState);
|
|
214
|
+
}
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
if (newActive && (newActive == null ? void 0 : newActive.id) != (activeState == null ? void 0 : activeState.id)) {
|
|
218
|
+
event.preventDefault();
|
|
219
|
+
setActive(newActive);
|
|
220
|
+
setFocusVisibleState(true);
|
|
221
|
+
}
|
|
222
|
+
onKeyDown == null ? void 0 : onKeyDown(event);
|
|
223
|
+
};
|
|
224
|
+
const handleFocus = (event) => {
|
|
225
|
+
setFocusedState(true);
|
|
226
|
+
onFocus == null ? void 0 : onFocus(event);
|
|
227
|
+
};
|
|
228
|
+
const ignoreBlur = useRef(false);
|
|
229
|
+
const handleBlur = (event) => {
|
|
230
|
+
if (!ignoreBlur.current) {
|
|
231
|
+
setOpen(event, false);
|
|
232
|
+
}
|
|
233
|
+
ignoreBlur.current = false;
|
|
234
|
+
setFocusedState(false);
|
|
235
|
+
onBlur == null ? void 0 : onBlur(event);
|
|
236
|
+
};
|
|
237
|
+
const handleListMouseOver = () => {
|
|
238
|
+
setFocusVisibleState(false);
|
|
239
|
+
};
|
|
240
|
+
const handleListMouseDown = () => {
|
|
241
|
+
ignoreBlur.current = true;
|
|
242
|
+
};
|
|
243
|
+
const handleListFocus = () => {
|
|
244
|
+
var _a2;
|
|
245
|
+
(_a2 = buttonRef.current) == null ? void 0 : _a2.focus();
|
|
246
|
+
};
|
|
247
|
+
const handleListClick = () => {
|
|
248
|
+
var _a2;
|
|
249
|
+
(_a2 = buttonRef.current) == null ? void 0 : _a2.focus();
|
|
250
|
+
};
|
|
251
|
+
useEffect(() => {
|
|
252
|
+
const activeIndex = activeState ? getIndexOfOption(activeState) : -1;
|
|
253
|
+
if (openState && activeIndex < 0) {
|
|
254
|
+
if (openKey.current.key === "ArrowDown") {
|
|
255
|
+
setActive(getOptionAtIndex(0));
|
|
256
|
+
} else if (openKey.current.key === "ArrowUp") {
|
|
257
|
+
setActive(getOptionAtIndex(options.length - 1));
|
|
258
|
+
} else {
|
|
259
|
+
if (selectedState.length > 0) {
|
|
260
|
+
const selected2 = getOptionsMatching(
|
|
261
|
+
(option) => option.value === selectedState[0]
|
|
262
|
+
).pop();
|
|
263
|
+
if (selected2) {
|
|
264
|
+
setActive(selected2);
|
|
265
|
+
}
|
|
266
|
+
} else {
|
|
267
|
+
setActive(getOptionAtIndex(0));
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
} else if (!openState) {
|
|
271
|
+
setActive(void 0);
|
|
272
|
+
}
|
|
273
|
+
}, [openState, children]);
|
|
274
|
+
const listId = useId();
|
|
275
|
+
return /* @__PURE__ */ jsxs(ListControlContext.Provider, {
|
|
276
|
+
value: listControl,
|
|
277
|
+
children: [
|
|
278
|
+
/* @__PURE__ */ jsxs("button", {
|
|
279
|
+
className: clsx(
|
|
280
|
+
withBaseName(),
|
|
281
|
+
withBaseName(variant),
|
|
282
|
+
{
|
|
283
|
+
[withBaseName("disabled")]: disabled,
|
|
284
|
+
[withBaseName(validationStatus != null ? validationStatus : "")]: validationStatus
|
|
285
|
+
},
|
|
286
|
+
className
|
|
287
|
+
),
|
|
288
|
+
ref: handleButtonRef,
|
|
289
|
+
onClick: handleClick,
|
|
290
|
+
onKeyDown: handleKeyDown,
|
|
125
291
|
onFocus: handleFocus,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
292
|
+
onBlur: handleBlur,
|
|
293
|
+
role: "combobox",
|
|
294
|
+
type: "button",
|
|
295
|
+
disabled,
|
|
296
|
+
"aria-readonly": readOnly ? "true" : void 0,
|
|
297
|
+
"aria-required": required ? "true" : void 0,
|
|
298
|
+
"aria-expanded": openState,
|
|
299
|
+
"aria-activedescendant": activeState == null ? void 0 : activeState.id,
|
|
300
|
+
"aria-labelledby": clsx(formFieldLabelledBy, ariaLabelledBy) || void 0,
|
|
301
|
+
"aria-describedby": clsx(formFieldDescribedBy, ariaDescribedBy) || void 0,
|
|
302
|
+
"aria-multiselectable": multiselect,
|
|
303
|
+
"aria-controls": openState ? listId : void 0,
|
|
304
|
+
...rest,
|
|
305
|
+
children: [
|
|
306
|
+
startAdornment,
|
|
307
|
+
/* @__PURE__ */ jsx("span", {
|
|
308
|
+
className: clsx(withBaseName("content"), {
|
|
309
|
+
[withBaseName("placeholder")]: !valueState
|
|
310
|
+
}),
|
|
311
|
+
children: valueState != null ? valueState : placeholder
|
|
312
|
+
}),
|
|
313
|
+
validationStatus && /* @__PURE__ */ jsx(StatusAdornment, {
|
|
314
|
+
status: validationStatus
|
|
315
|
+
}),
|
|
316
|
+
!readOnly && /* @__PURE__ */ jsx(ExpandIcon, {
|
|
317
|
+
open: openState
|
|
318
|
+
})
|
|
319
|
+
]
|
|
129
320
|
}),
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
...restProps,
|
|
149
|
-
ref: triggerRef,
|
|
150
|
-
children: [
|
|
151
|
-
/* @__PURE__ */ jsx("span", {
|
|
152
|
-
className: clsx(withBaseName("buttonText")),
|
|
153
|
-
children: selectedItem
|
|
154
|
-
}),
|
|
155
|
-
getIcon()
|
|
156
|
-
]
|
|
157
|
-
}),
|
|
158
|
-
/* @__PURE__ */ jsx(FloatingComponent, {
|
|
159
|
-
open: open && !disabled,
|
|
160
|
-
...getDropdownNextProps(),
|
|
161
|
-
...getPosition(),
|
|
162
|
-
ref: floating,
|
|
163
|
-
children: /* @__PURE__ */ jsx(ListNext, {
|
|
164
|
-
"data-test-id": "list-container",
|
|
165
|
-
id: listId,
|
|
166
|
-
className: clsx(withBaseName("list"), ListProps == null ? void 0 : ListProps.className),
|
|
167
|
-
disableFocus: true,
|
|
168
|
-
disabled: disabled || (ListProps == null ? void 0 : ListProps.disabled),
|
|
169
|
-
selected: selectedItem,
|
|
170
|
-
highlightedItem,
|
|
171
|
-
...ListProps,
|
|
172
|
-
ref: setListRef,
|
|
173
|
-
onSelect: handleListSelect,
|
|
174
|
-
children: getListItems(source)
|
|
321
|
+
/* @__PURE__ */ jsx(FloatingComponent, {
|
|
322
|
+
open: (openState || focusedState) && !readOnly,
|
|
323
|
+
left: x != null ? x : 0,
|
|
324
|
+
top: y != null ? y : 0,
|
|
325
|
+
position: strategy,
|
|
326
|
+
width: (_a = elements.floating) == null ? void 0 : _a.offsetWidth,
|
|
327
|
+
height: (_b = elements.floating) == null ? void 0 : _b.offsetHeight,
|
|
328
|
+
ref: floating,
|
|
329
|
+
children: /* @__PURE__ */ jsx(OptionList, {
|
|
330
|
+
id: listId,
|
|
331
|
+
collapsed: !openState,
|
|
332
|
+
onMouseOver: handleListMouseOver,
|
|
333
|
+
onMouseDown: handleListMouseDown,
|
|
334
|
+
onFocus: handleListFocus,
|
|
335
|
+
onClick: handleListClick,
|
|
336
|
+
ref: listRef,
|
|
337
|
+
children
|
|
338
|
+
})
|
|
175
339
|
})
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
179
|
-
|
|
340
|
+
]
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
);
|
|
180
344
|
|
|
181
345
|
export { DropdownNext };
|
|
182
346
|
//# sourceMappingURL=DropdownNext.js.map
|