@economic/taco 13.0.0 → 14.0.0-tanstack-virtual-update.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/dist/charts/components/Area/AreaChart.cjs.map +1 -1
- package/dist/charts/components/Area/AreaChart.js.map +1 -1
- package/dist/charts/components/Bar/BarChart.cjs.map +1 -1
- package/dist/charts/components/Bar/BarChart.js.map +1 -1
- package/dist/charts/components/Composed/BarLineChart.cjs.map +1 -1
- package/dist/charts/components/Composed/BarLineChart.js.map +1 -1
- package/dist/charts/components/Donut/DonutChart.cjs +1 -1
- package/dist/charts/components/Donut/DonutChart.cjs.map +1 -1
- package/dist/charts/components/Donut/DonutChart.js +1 -1
- package/dist/charts/components/Donut/DonutChart.js.map +1 -1
- package/dist/charts/components/LegacyDonut/ActiveShape.cjs.map +1 -1
- package/dist/charts/components/LegacyDonut/ActiveShape.js.map +1 -1
- package/dist/charts/components/LegacyDonut/LegacyDonutChart.cjs.map +1 -1
- package/dist/charts/components/LegacyDonut/LegacyDonutChart.js.map +1 -1
- package/dist/charts/components/LegacyDonut/Legend.cjs.map +1 -1
- package/dist/charts/components/LegacyDonut/Legend.js.map +1 -1
- package/dist/charts/components/Legend.cjs +3 -3
- package/dist/charts/components/Legend.cjs.map +1 -1
- package/dist/charts/components/Legend.js +3 -3
- package/dist/charts/components/Legend.js.map +1 -1
- package/dist/charts/components/Line/LineChart.cjs.map +1 -1
- package/dist/charts/components/Line/LineChart.js.map +1 -1
- package/dist/charts/components/Pie/PieChart.cjs.map +1 -1
- package/dist/charts/components/Pie/PieChart.js.map +1 -1
- package/dist/charts/components/useChartData.cjs +1 -1
- package/dist/charts/components/useChartData.cjs.map +1 -1
- package/dist/charts/components/useChartData.js +1 -1
- package/dist/charts/components/useChartData.js.map +1 -1
- package/dist/charts/utils/color.cjs.map +1 -1
- package/dist/charts/utils/color.js.map +1 -1
- package/dist/charts/utils/common.cjs.map +1 -1
- package/dist/charts/utils/common.d.ts +1 -1
- package/dist/charts/utils/common.js.map +1 -1
- package/dist/components/Accordion/Accordion.cjs.map +1 -1
- package/dist/components/Accordion/Accordion.js.map +1 -1
- package/dist/components/Actions/Button/Button.cjs +2 -2
- package/dist/components/Actions/Button/Button.cjs.map +1 -1
- package/dist/components/Actions/Button/Button.d.ts +2 -2
- package/dist/components/Actions/Button/Button.js +2 -2
- package/dist/components/Actions/Button/Button.js.map +1 -1
- package/dist/components/Actions/Link/Link.cjs.map +1 -1
- package/dist/components/Actions/Link/Link.js.map +1 -1
- package/dist/components/Actions/LinkButton/LinkButton.cjs +1 -1
- package/dist/components/Actions/LinkButton/LinkButton.cjs.map +1 -1
- package/dist/components/Actions/LinkButton/LinkButton.d.ts +2 -2
- package/dist/components/Actions/LinkButton/LinkButton.js +1 -1
- package/dist/components/Actions/LinkButton/LinkButton.js.map +1 -1
- package/dist/components/Alert/Alert.cjs.map +1 -1
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/AlertDialog/components/Content.cjs +2 -2
- package/dist/components/AlertDialog/components/Content.cjs.map +1 -1
- package/dist/components/AlertDialog/components/Content.js +2 -2
- package/dist/components/AlertDialog/components/Content.js.map +1 -1
- package/dist/components/AlertDialog/components/Trigger.cjs.map +1 -1
- package/dist/components/AlertDialog/components/Trigger.js.map +1 -1
- package/dist/components/Backdrop/Backdrop.cjs.map +1 -1
- package/dist/components/Backdrop/Backdrop.js.map +1 -1
- package/dist/components/Badge/Badge.cjs +1 -1
- package/dist/components/Badge/Badge.cjs.map +1 -1
- package/dist/components/Badge/Badge.js +1 -1
- package/dist/components/Badge/Badge.js.map +1 -1
- package/dist/components/BadgeIcon/BadgeIcon.cjs.map +1 -1
- package/dist/components/BadgeIcon/BadgeIcon.d.ts +1 -1
- package/dist/components/BadgeIcon/BadgeIcon.js.map +1 -1
- package/dist/components/Banner/Banner.cjs +2 -2
- package/dist/components/Banner/Banner.cjs.map +1 -1
- package/dist/components/Banner/Banner.js +2 -2
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Banner/util.cjs.map +1 -1
- package/dist/components/Banner/util.js.map +1 -1
- package/dist/components/Calendar/Calendar.cjs +2 -2
- package/dist/components/Calendar/Calendar.cjs.map +1 -1
- package/dist/components/Calendar/Calendar.js +2 -2
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/Card/Card.cjs +2 -2
- package/dist/components/Card/Card.cjs.map +1 -1
- package/dist/components/Card/Card.d.ts +1 -1
- package/dist/components/Card/Card.js +2 -2
- package/dist/components/Card/Card.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Combobox/Combobox.cjs +4 -4
- package/dist/components/Combobox/Combobox.cjs.map +1 -1
- package/dist/components/Combobox/Combobox.d.ts +1 -2
- package/dist/components/Combobox/Combobox.js +4 -4
- package/dist/components/Combobox/Combobox.js.map +1 -1
- package/dist/components/Combobox/useCombobox.cjs +3 -3
- package/dist/components/Combobox/useCombobox.cjs.map +1 -1
- package/dist/components/Combobox/useCombobox.d.ts +1 -1
- package/dist/components/Combobox/useCombobox.js +3 -3
- package/dist/components/Combobox/useCombobox.js.map +1 -1
- package/dist/components/Datepicker/Datepicker.cjs +3 -3
- package/dist/components/Datepicker/Datepicker.cjs.map +1 -1
- package/dist/components/Datepicker/Datepicker.d.ts +1 -2
- package/dist/components/Datepicker/Datepicker.js +3 -3
- package/dist/components/Datepicker/Datepicker.js.map +1 -1
- package/dist/components/Datepicker/useDatepicker.cjs.map +1 -1
- package/dist/components/Datepicker/useDatepicker.d.ts +1 -2
- package/dist/components/Datepicker/useDatepicker.js.map +1 -1
- package/dist/components/Dialog/components/Content.cjs +3 -3
- package/dist/components/Dialog/components/Content.cjs.map +1 -1
- package/dist/components/Dialog/components/Content.js +3 -3
- package/dist/components/Dialog/components/Content.js.map +1 -1
- package/dist/components/Dialog/components/Trigger.cjs.map +1 -1
- package/dist/components/Dialog/components/Trigger.js.map +1 -1
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.d.ts +1 -1
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/components/Content.cjs +3 -3
- package/dist/components/Drawer/components/Content.cjs.map +1 -1
- package/dist/components/Drawer/components/Content.js +3 -3
- package/dist/components/Drawer/components/Content.js.map +1 -1
- package/dist/components/Field/Field.cjs +1 -1
- package/dist/components/Field/Field.cjs.map +1 -1
- package/dist/components/Field/Field.js +1 -1
- package/dist/components/Field/Field.js.map +1 -1
- package/dist/components/Form/Form.cjs.map +1 -1
- package/dist/components/Form/Form.d.ts +1 -1
- package/dist/components/Form/Form.js.map +1 -1
- package/dist/components/Group/Group.cjs.map +1 -1
- package/dist/components/Group/Group.d.ts +2 -1
- package/dist/components/Group/Group.js.map +1 -1
- package/dist/components/Hanger/Hanger.cjs +2 -2
- package/dist/components/Hanger/Hanger.cjs.map +1 -1
- package/dist/components/Hanger/Hanger.d.ts +1 -1
- package/dist/components/Hanger/Hanger.js +2 -2
- package/dist/components/Hanger/Hanger.js.map +1 -1
- package/dist/components/Header/components/Agreement/Badge.cjs.map +1 -1
- package/dist/components/Header/components/Agreement/Badge.js.map +1 -1
- package/dist/components/Header/components/Agreement/Display.cjs.map +1 -1
- package/dist/components/Header/components/Agreement/Display.js.map +1 -1
- package/dist/components/Header/components/Agreement/Item.cjs +1 -1
- package/dist/components/Header/components/Agreement/Item.cjs.map +1 -1
- package/dist/components/Header/components/Agreement/Item.js +1 -1
- package/dist/components/Header/components/Agreement/Item.js.map +1 -1
- package/dist/components/Header/components/AgreementSelector.cjs +3 -3
- package/dist/components/Header/components/AgreementSelector.cjs.map +1 -1
- package/dist/components/Header/components/AgreementSelector.js +3 -3
- package/dist/components/Header/components/AgreementSelector.js.map +1 -1
- package/dist/components/Header/components/Button.cjs.map +1 -1
- package/dist/components/Header/components/Button.d.ts +1 -1
- package/dist/components/Header/components/Button.js.map +1 -1
- package/dist/components/Header/components/Link.cjs +2 -2
- package/dist/components/Header/components/Link.cjs.map +1 -1
- package/dist/components/Header/components/Link.d.ts +1 -1
- package/dist/components/Header/components/Link.js +2 -2
- package/dist/components/Header/components/Link.js.map +1 -1
- package/dist/components/Header/components/MenuButton.cjs +1 -1
- package/dist/components/Header/components/MenuButton.cjs.map +1 -1
- package/dist/components/Header/components/MenuButton.js +1 -1
- package/dist/components/Header/components/MenuButton.js.map +1 -1
- package/dist/components/Header/components/PrimaryNavigation.cjs +3 -3
- package/dist/components/Header/components/PrimaryNavigation.cjs.map +1 -1
- package/dist/components/Header/components/PrimaryNavigation.js +3 -3
- package/dist/components/Header/components/PrimaryNavigation.js.map +1 -1
- package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
- package/dist/components/HoverCard/HoverCard.d.ts +1 -1
- package/dist/components/HoverCard/HoverCard.js.map +1 -1
- package/dist/components/Inline/Inline.cjs +2 -6
- package/dist/components/Inline/Inline.cjs.map +1 -1
- package/dist/components/Inline/Inline.d.ts +1 -1
- package/dist/components/Inline/Inline.js +2 -6
- package/dist/components/Inline/Inline.js.map +1 -1
- package/dist/components/Input/Input.cjs +1 -1
- package/dist/components/Input/Input.cjs.map +1 -1
- package/dist/components/Input/Input.d.ts +1 -1
- package/dist/components/Input/Input.js +1 -1
- package/dist/components/Input/Input.js.map +1 -1
- package/dist/components/Layout/components/Sidebar.cjs.map +1 -1
- package/dist/components/Layout/components/Sidebar.js.map +1 -1
- package/dist/components/LegacyComponents/Button/Button.cjs +1 -1
- package/dist/components/LegacyComponents/Button/Button.cjs.map +1 -1
- package/dist/components/LegacyComponents/Button/Button.d.ts +3 -7
- package/dist/components/LegacyComponents/Button/Button.js +1 -1
- package/dist/components/LegacyComponents/Button/Button.js.map +1 -1
- package/dist/components/LegacyComponents/Button/util.cjs.map +1 -1
- package/dist/components/LegacyComponents/Button/util.js.map +1 -1
- package/dist/components/LegacyComponents/IconButton/IconButton.cjs +1 -1
- package/dist/components/LegacyComponents/IconButton/IconButton.cjs.map +1 -1
- package/dist/components/LegacyComponents/IconButton/IconButton.d.ts +4 -8
- package/dist/components/LegacyComponents/IconButton/IconButton.js +1 -1
- package/dist/components/LegacyComponents/IconButton/IconButton.js.map +1 -1
- package/dist/components/List/components/Collapsible.cjs +1 -1
- package/dist/components/List/components/Collapsible.cjs.map +1 -1
- package/dist/components/List/components/Collapsible.js +1 -1
- package/dist/components/List/components/Collapsible.js.map +1 -1
- package/dist/components/List/components/Item.cjs.map +1 -1
- package/dist/components/List/components/Item.d.ts +1 -1
- package/dist/components/List/components/Item.js.map +1 -1
- package/dist/components/List/components/Link.cjs +1 -1
- package/dist/components/List/components/Link.cjs.map +1 -1
- package/dist/components/List/components/Link.js +1 -1
- package/dist/components/List/components/Link.js.map +1 -1
- package/dist/components/List/components/Toggle.cjs +2 -2
- package/dist/components/List/components/Toggle.cjs.map +1 -1
- package/dist/components/List/components/Toggle.d.ts +1 -2
- package/dist/components/List/components/Toggle.js +2 -2
- package/dist/components/List/components/Toggle.js.map +1 -1
- package/dist/components/Listbox/Listbox.d.ts +2 -2
- package/dist/components/Listbox/ScrollableList.cjs +3 -3
- package/dist/components/Listbox/ScrollableList.cjs.map +1 -1
- package/dist/components/Listbox/ScrollableList.d.ts +1 -1
- package/dist/components/Listbox/ScrollableList.js +3 -3
- package/dist/components/Listbox/ScrollableList.js.map +1 -1
- package/dist/components/Listbox/useListbox.cjs.map +1 -1
- package/dist/components/Listbox/useListbox.js.map +1 -1
- package/dist/components/Listbox/useMultiListbox.cjs +1 -1
- package/dist/components/Listbox/useMultiListbox.cjs.map +1 -1
- package/dist/components/Listbox/useMultiListbox.js +1 -1
- package/dist/components/Listbox/useMultiListbox.js.map +1 -1
- package/dist/components/Listbox/useTypeahead.cjs.map +1 -1
- package/dist/components/Listbox/useTypeahead.js.map +1 -1
- package/dist/components/Listbox/util.cjs.map +1 -1
- package/dist/components/Listbox/util.js.map +1 -1
- package/dist/components/Menu/Menu.cjs.map +1 -1
- package/dist/components/Menu/Menu.js.map +1 -1
- package/dist/components/Menu/components/Checkbox.cjs +1 -1
- package/dist/components/Menu/components/Checkbox.cjs.map +1 -1
- package/dist/components/Menu/components/Checkbox.js +1 -1
- package/dist/components/Menu/components/Checkbox.js.map +1 -1
- package/dist/components/Menu/components/Content.cjs.map +1 -1
- package/dist/components/Menu/components/Content.js.map +1 -1
- package/dist/components/Menu/components/Item.cjs +1 -1
- package/dist/components/Menu/components/Item.cjs.map +1 -1
- package/dist/components/Menu/components/Item.d.ts +1 -2
- package/dist/components/Menu/components/Item.js +1 -1
- package/dist/components/Menu/components/Item.js.map +1 -1
- package/dist/components/Menu/components/Link.cjs.map +1 -1
- package/dist/components/Menu/components/Link.d.ts +1 -1
- package/dist/components/Menu/components/Link.js.map +1 -1
- package/dist/components/Menu/components/RadioGroup.cjs.map +1 -1
- package/dist/components/Menu/components/RadioGroup.d.ts +1 -1
- package/dist/components/Menu/components/RadioGroup.js.map +1 -1
- package/dist/components/Menu/components/SubMenu.cjs.map +1 -1
- package/dist/components/Menu/components/SubMenu.js.map +1 -1
- package/dist/components/Menu/components/Trigger.cjs.map +1 -1
- package/dist/components/Menu/components/Trigger.js.map +1 -1
- package/dist/components/Navigation2/components/Group.cjs.map +1 -1
- package/dist/components/Navigation2/components/Group.js.map +1 -1
- package/dist/components/Navigation2/components/Link.cjs +2 -2
- package/dist/components/Navigation2/components/Link.cjs.map +1 -1
- package/dist/components/Navigation2/components/Link.d.ts +1 -2
- package/dist/components/Navigation2/components/Link.js +2 -2
- package/dist/components/Navigation2/components/Link.js.map +1 -1
- package/dist/components/OverflowGroup/OverflowGroup.cjs +1 -1
- package/dist/components/OverflowGroup/OverflowGroup.cjs.map +1 -1
- package/dist/components/OverflowGroup/OverflowGroup.d.ts +1 -1
- package/dist/components/OverflowGroup/OverflowGroup.js +1 -1
- package/dist/components/OverflowGroup/OverflowGroup.js.map +1 -1
- package/dist/components/Pagination/PageNumbers.cjs +1 -1
- package/dist/components/Pagination/PageNumbers.cjs.map +1 -1
- package/dist/components/Pagination/PageNumbers.js +1 -1
- package/dist/components/Pagination/PageNumbers.js.map +1 -1
- package/dist/components/Pagination/Pagination.cjs +4 -4
- package/dist/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/components/Pagination/Pagination.js +4 -4
- package/dist/components/Pagination/Pagination.js.map +1 -1
- package/dist/components/Popover/Popover.cjs.map +1 -1
- package/dist/components/Popover/Popover.d.ts +1 -1
- package/dist/components/Popover/Popover.js.map +1 -1
- package/dist/components/Provider/Localization.cjs.map +1 -1
- package/dist/components/Provider/Localization.d.ts +1 -1
- package/dist/components/Provider/Localization.js.map +1 -1
- package/dist/components/Provider/Provider.cjs +1 -1
- package/dist/components/Provider/Provider.cjs.map +1 -1
- package/dist/components/Provider/Provider.js +1 -1
- package/dist/components/Provider/Provider.js.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.cjs +1 -1
- package/dist/components/RadioGroup/RadioGroup.cjs.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/Report/Report.cjs.map +1 -1
- package/dist/components/Report/Report.js.map +1 -1
- package/dist/components/Report/useReport.cjs.map +1 -1
- package/dist/components/Report/useReport.js.map +1 -1
- package/dist/components/SearchInput/SearchInput.cjs +1 -1
- package/dist/components/SearchInput/SearchInput.cjs.map +1 -1
- package/dist/components/SearchInput/SearchInput.d.ts +5 -5
- package/dist/components/SearchInput/SearchInput.js +1 -1
- package/dist/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/SearchInput2/SearchInput2.cjs +3 -3
- package/dist/components/SearchInput2/SearchInput2.cjs.map +1 -1
- package/dist/components/SearchInput2/SearchInput2.js +3 -3
- package/dist/components/SearchInput2/SearchInput2.js.map +1 -1
- package/dist/components/Select/Select.cjs +4 -4
- package/dist/components/Select/Select.cjs.map +1 -1
- package/dist/components/Select/Select.d.ts +5 -5
- package/dist/components/Select/Select.js +4 -4
- package/dist/components/Select/Select.js.map +1 -1
- package/dist/components/Select/useSelect.cjs +1 -1
- package/dist/components/Select/useSelect.cjs.map +1 -1
- package/dist/components/Select/useSelect.js +1 -1
- package/dist/components/Select/useSelect.js.map +1 -1
- package/dist/components/Select2/Select2.cjs +4 -4
- package/dist/components/Select2/Select2.cjs.map +1 -1
- package/dist/components/Select2/Select2.d.ts +2 -2
- package/dist/components/Select2/Select2.js +4 -4
- package/dist/components/Select2/Select2.js.map +1 -1
- package/dist/components/Select2/components/Collection.cjs.map +1 -1
- package/dist/components/Select2/components/Collection.js.map +1 -1
- package/dist/components/Select2/components/Context.cjs.map +1 -1
- package/dist/components/Select2/components/Context.js.map +1 -1
- package/dist/components/Select2/components/Create.cjs +4 -4
- package/dist/components/Select2/components/Create.cjs.map +1 -1
- package/dist/components/Select2/components/Create.js +4 -4
- package/dist/components/Select2/components/Create.js.map +1 -1
- package/dist/components/Select2/components/Edit.cjs +5 -5
- package/dist/components/Select2/components/Edit.cjs.map +1 -1
- package/dist/components/Select2/components/Edit.d.ts +1 -1
- package/dist/components/Select2/components/Edit.js +5 -5
- package/dist/components/Select2/components/Edit.js.map +1 -1
- package/dist/components/Select2/components/Group.cjs +1 -1
- package/dist/components/Select2/components/Group.cjs.map +1 -1
- package/dist/components/Select2/components/Group.js +1 -1
- package/dist/components/Select2/components/Group.js.map +1 -1
- package/dist/components/Select2/components/Option.cjs +4 -4
- package/dist/components/Select2/components/Option.cjs.map +1 -1
- package/dist/components/Select2/components/Option.d.ts +1 -1
- package/dist/components/Select2/components/Option.js +4 -4
- package/dist/components/Select2/components/Option.js.map +1 -1
- package/dist/components/Select2/components/Search.cjs +1 -1
- package/dist/components/Select2/components/Search.cjs.map +1 -1
- package/dist/components/Select2/components/Search.js +1 -1
- package/dist/components/Select2/components/Search.js.map +1 -1
- package/dist/components/Select2/components/Title.cjs.map +1 -1
- package/dist/components/Select2/components/Title.js.map +1 -1
- package/dist/components/Select2/components/Trigger.cjs +6 -6
- package/dist/components/Select2/components/Trigger.cjs.map +1 -1
- package/dist/components/Select2/components/Trigger.d.ts +1 -1
- package/dist/components/Select2/components/Trigger.js +6 -6
- package/dist/components/Select2/components/Trigger.js.map +1 -1
- package/dist/components/Select2/types.d.ts +1 -1
- package/dist/components/Select2/utilities.cjs.map +1 -1
- package/dist/components/Select2/utilities.js.map +1 -1
- package/dist/components/Shortcut/Shortcut.cjs.map +1 -1
- package/dist/components/Shortcut/Shortcut.js.map +1 -1
- package/dist/components/Stack/Stack.cjs +2 -6
- package/dist/components/Stack/Stack.cjs.map +1 -1
- package/dist/components/Stack/Stack.d.ts +1 -1
- package/dist/components/Stack/Stack.js +2 -6
- package/dist/components/Stack/Stack.js.map +1 -1
- package/dist/components/Switch/Switch.cjs.map +1 -1
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Table3/Table3.cjs +1 -3
- package/dist/components/Table3/Table3.cjs.map +1 -1
- package/dist/components/Table3/Table3.d.ts +1 -4
- package/dist/components/Table3/Table3.js +1 -3
- package/dist/components/Table3/Table3.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/Cell.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/Cell.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.cjs +1 -1
- package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js +1 -1
- package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/Editing/TextareaWithAutosizing.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/Editing/TextareaWithAutosizing.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs +6 -6
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js +6 -6
- package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/EditingDisplayCell.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/EditingDisplayCell.js.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/util.cjs.map +1 -1
- package/dist/components/Table3/components/Columns/Cell/util.js.map +1 -1
- package/dist/components/Table3/components/Editing/Alert.cjs +3 -3
- package/dist/components/Table3/components/Editing/Alert.cjs.map +1 -1
- package/dist/components/Table3/components/Editing/Alert.d.ts +1 -1
- package/dist/components/Table3/components/Editing/Alert.js +3 -3
- package/dist/components/Table3/components/Editing/Alert.js.map +1 -1
- package/dist/components/Table3/components/Editing/DiscardChangesConfirmationDialog.cjs +3 -3
- package/dist/components/Table3/components/Editing/DiscardChangesConfirmationDialog.cjs.map +1 -1
- package/dist/components/Table3/components/Editing/DiscardChangesConfirmationDialog.d.ts +1 -1
- package/dist/components/Table3/components/Editing/DiscardChangesConfirmationDialog.js +3 -3
- package/dist/components/Table3/components/Editing/DiscardChangesConfirmationDialog.js.map +1 -1
- package/dist/components/Table3/components/Row/Editing/CreateNewRow.cjs +2 -2
- package/dist/components/Table3/components/Row/Editing/CreateNewRow.cjs.map +1 -1
- package/dist/components/Table3/components/Row/Editing/CreateNewRow.js +2 -2
- package/dist/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
- package/dist/components/Table3/components/Row/Editing/SaveStatus.cjs +2 -2
- package/dist/components/Table3/components/Row/Editing/SaveStatus.cjs.map +1 -1
- package/dist/components/Table3/components/Row/Editing/SaveStatus.js +2 -2
- package/dist/components/Table3/components/Row/Editing/SaveStatus.js.map +1 -1
- package/dist/components/Table3/components/Row/Editing/TemporaryRow.cjs.map +1 -1
- package/dist/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
- package/dist/components/Table3/components/Row/Row.cjs.map +1 -1
- package/dist/components/Table3/components/Row/Row.js.map +1 -1
- package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs +2 -2
- package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs.map +1 -1
- package/dist/components/Table3/components/Toolbar/Editing/Editing.js +2 -2
- package/dist/components/Table3/components/Toolbar/Editing/Editing.js.map +1 -1
- package/dist/components/Table3/features/useEditingState.cjs +1 -1
- package/dist/components/Table3/features/useEditingState.cjs.map +1 -1
- package/dist/components/Table3/features/useEditingState.js +1 -1
- package/dist/components/Table3/features/useEditingState.js.map +1 -1
- package/dist/components/Table3/features/useTableEditing.cjs +1 -1
- package/dist/components/Table3/features/useTableEditing.cjs.map +1 -1
- package/dist/components/Table3/features/useTableEditing.js +1 -1
- package/dist/components/Table3/features/useTableEditing.js.map +1 -1
- package/dist/components/Table3/listeners/useTableEditingListener.cjs +1 -1
- package/dist/components/Table3/listeners/useTableEditingListener.cjs.map +1 -1
- package/dist/components/Table3/listeners/useTableEditingListener.js +1 -1
- package/dist/components/Table3/listeners/useTableEditingListener.js.map +1 -1
- package/dist/components/Table3/useTable3.cjs +2 -2
- package/dist/components/Table3/useTable3.cjs.map +1 -1
- package/dist/components/Table3/useTable3.js +2 -2
- package/dist/components/Table3/useTable3.js.map +1 -1
- package/dist/components/Table3/util/editing.cjs.map +1 -1
- package/dist/components/Table3/util/editing.d.ts +2 -2
- package/dist/components/Table3/util/editing.js.map +1 -1
- package/dist/components/Tabs/Context.cjs.map +1 -1
- package/dist/components/Tabs/Context.js.map +1 -1
- package/dist/components/Tabs/Tabs.cjs.map +1 -1
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/components/TabList.cjs +2 -2
- package/dist/components/Tabs/components/TabList.cjs.map +1 -1
- package/dist/components/Tabs/components/TabList.js +2 -2
- package/dist/components/Tabs/components/TabList.js.map +1 -1
- package/dist/components/Tabs/components/Trigger.cjs +3 -3
- package/dist/components/Tabs/components/Trigger.cjs.map +1 -1
- package/dist/components/Tabs/components/Trigger.js +3 -3
- package/dist/components/Tabs/components/Trigger.js.map +1 -1
- package/dist/components/Tag/Tag.cjs.map +1 -1
- package/dist/components/Tag/Tag.d.ts +1 -1
- package/dist/components/Tag/Tag.js.map +1 -1
- package/dist/components/Textarea/Textarea.cjs +1 -1
- package/dist/components/Textarea/Textarea.cjs.map +1 -1
- package/dist/components/Textarea/Textarea.js +1 -1
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Toast/Toast.cjs +2 -2
- package/dist/components/Toast/Toast.cjs.map +1 -1
- package/dist/components/Toast/Toast.js +2 -2
- package/dist/components/Toast/Toast.js.map +1 -1
- package/dist/components/Toast/util.cjs +1 -1
- package/dist/components/Toast/util.cjs.map +1 -1
- package/dist/components/Toast/util.js +1 -1
- package/dist/components/Toast/util.js.map +1 -1
- package/dist/components/Tour/Tour.cjs +2 -2
- package/dist/components/Tour/Tour.cjs.map +1 -1
- package/dist/components/Tour/Tour.js +2 -2
- package/dist/components/Tour/Tour.js.map +1 -1
- package/dist/components/Truncate/Truncate.cjs.map +1 -1
- package/dist/components/Truncate/Truncate.js.map +1 -1
- package/dist/components/Typography/Heading.cjs.map +1 -1
- package/dist/components/Typography/Heading.d.ts +1 -1
- package/dist/components/Typography/Heading.js.map +1 -1
- package/dist/components/Typography/Text.cjs.map +1 -1
- package/dist/components/Typography/Text.d.ts +1 -1
- package/dist/components/Typography/Text.js.map +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/hooks/useBoundaryOverflowDetection.cjs.map +1 -1
- package/dist/hooks/useBoundaryOverflowDetection.js.map +1 -1
- package/dist/hooks/useBoundingClientRectListener.cjs.map +1 -1
- package/dist/hooks/useBoundingClientRectListener.js.map +1 -1
- package/dist/hooks/useGlobalKeyDown.cjs.map +1 -1
- package/dist/hooks/useGlobalKeyDown.js.map +1 -1
- package/dist/hooks/useTacoSettings.cjs.map +1 -1
- package/dist/hooks/useTacoSettings.d.ts +1 -1
- package/dist/hooks/useTacoSettings.js.map +1 -1
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/primitives/BubbleSelect.cjs.map +1 -1
- package/dist/primitives/BubbleSelect.js.map +1 -1
- package/dist/primitives/Button.cjs.map +1 -1
- package/dist/primitives/Button.js.map +1 -1
- package/dist/primitives/Collection/components/Root.cjs.map +1 -1
- package/dist/primitives/Collection/components/Root.js.map +1 -1
- package/dist/primitives/Listbox2/components/Option.cjs.map +1 -1
- package/dist/primitives/Listbox2/components/Option.js.map +1 -1
- package/dist/primitives/Listbox2/components/Root.cjs.map +1 -1
- package/dist/primitives/Listbox2/components/Root.js.map +1 -1
- package/dist/primitives/Listbox2/components/Title.cjs.map +1 -1
- package/dist/primitives/Listbox2/components/Title.js.map +1 -1
- package/dist/primitives/Table/Core/components/Body/Body.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Body/Body.js.map +1 -1
- package/dist/primitives/Table/Core/components/Body/EmptyStateBody.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Body/EmptyStateBody.js.map +1 -1
- package/dist/primitives/Table/Core/components/Body/util.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Body/util.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/util.js +1 -1
- package/dist/primitives/Table/Core/components/Columns/Cell/util.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Actions.cjs +3 -3
- package/dist/primitives/Table/Core/components/Columns/Internal/Actions.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Actions.js +3 -3
- package/dist/primitives/Table/Core/components/Columns/Internal/Actions.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Drag.cjs +2 -2
- package/dist/primitives/Table/Core/components/Columns/Internal/Drag.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Drag.js +2 -2
- package/dist/primitives/Table/Core/components/Columns/Internal/Drag.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.cjs +3 -3
- package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.js +3 -3
- package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.js.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Selection.cjs +4 -4
- package/dist/primitives/Table/Core/components/Columns/Internal/Selection.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Columns/Internal/Selection.js +4 -4
- package/dist/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
- package/dist/primitives/Table/Core/components/Footer/Summary.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
- package/dist/primitives/Table/Core/components/Header/Header.cjs +1 -1
- package/dist/primitives/Table/Core/components/Header/Header.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Header/Header.js +1 -1
- package/dist/primitives/Table/Core/components/Header/Header.js.map +1 -1
- package/dist/primitives/Table/Core/components/Header/components/Goto.cjs +1 -1
- package/dist/primitives/Table/Core/components/Header/components/Goto.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Header/components/Goto.d.ts +1 -1
- package/dist/primitives/Table/Core/components/Header/components/Goto.js +1 -1
- package/dist/primitives/Table/Core/components/Header/components/Goto.js.map +1 -1
- package/dist/primitives/Table/Core/components/Header/components/Menu.cjs +4 -6
- package/dist/primitives/Table/Core/components/Header/components/Menu.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Header/components/Menu.js +4 -6
- package/dist/primitives/Table/Core/components/Header/components/Menu.js.map +1 -1
- package/dist/primitives/Table/Core/components/Header/components/Resizer.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Header/components/Resizer.js.map +1 -1
- package/dist/primitives/Table/Core/components/Header/components/SortIndicator.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Header/components/SortIndicator.js.map +1 -1
- package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.cjs +3 -1
- package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +3 -1
- package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.cjs +5 -5
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js +5 -5
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs +4 -4
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +4 -4
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.cjs +2 -2
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js +2 -2
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.cjs +3 -3
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.d.ts +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js +3 -3
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.cjs +2 -2
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.d.ts +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js +2 -2
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.cjs +5 -5
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js +5 -5
- package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs +4 -4
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js +4 -4
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.cjs +6 -6
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.d.ts +1 -2
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.js +6 -6
- package/dist/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.cjs +2 -2
- package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.js +2 -2
- package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.cjs +7 -7
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.d.ts +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.js +7 -7
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.js.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.cjs +3 -3
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.cjs.map +1 -1
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.js +3 -3
- package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.js.map +1 -1
- package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.cjs.map +1 -1
- package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs.map +1 -1
- package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js.map +1 -1
- package/dist/primitives/Table/Core/useTable.cjs.map +1 -1
- package/dist/primitives/Table/Core/useTable.js.map +1 -1
- package/dist/primitives/Table/types.cjs.map +1 -1
- package/dist/primitives/Table/types.d.ts +1 -1
- package/dist/primitives/Table/types.js.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableFontSize.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableFontSize.js.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTablePrinting.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTablePrinting.js.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowActive.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableSettings.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/features/useTableSettings.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableFilterListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableFilterListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.cjs +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.js +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSortingListener.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSortingListener.js.map +1 -1
- package/dist/primitives/Table/useTableManager/useTableManager.cjs +1 -1
- package/dist/primitives/Table/useTableManager/useTableManager.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/useTableManager.js +1 -1
- package/dist/primitives/Table/useTableManager/useTableManager.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/columns.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/columns.d.ts +1 -1
- package/dist/primitives/Table/useTableManager/util/columns.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/dataTypes.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/dataTypes.d.ts +1 -1
- package/dist/primitives/Table/useTableManager/util/dataTypes.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/filtering.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/filtering.d.ts +1 -1
- package/dist/primitives/Table/useTableManager/util/filtering.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/search.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/search.d.ts +1 -1
- package/dist/primitives/Table/useTableManager/util/search.js.map +1 -1
- package/dist/primitives/Table/useTableManager/util/setup.cjs +11 -1
- package/dist/primitives/Table/useTableManager/util/setup.cjs.map +1 -1
- package/dist/primitives/Table/useTableManager/util/setup.d.ts +1 -1
- package/dist/primitives/Table/useTableManager/util/setup.js +12 -2
- package/dist/primitives/Table/useTableManager/util/setup.js.map +1 -1
- package/dist/utils/dom.cjs.map +1 -1
- package/dist/utils/dom.js.map +1 -1
- package/dist/utils/flattenChildren.cjs +12 -0
- package/dist/utils/flattenChildren.cjs.map +1 -0
- package/dist/utils/flattenChildren.d.ts +6 -0
- package/dist/utils/flattenChildren.js +12 -0
- package/dist/utils/flattenChildren.js.map +1 -0
- package/dist/utils/hooks/useListKeyboardNavigation.cjs.map +1 -1
- package/dist/utils/hooks/useListKeyboardNavigation.js.map +1 -1
- package/dist/utils/storyutils.d.ts +1 -1
- package/dist/utils/tailwind.cjs.map +1 -1
- package/dist/utils/tailwind.js.map +1 -1
- package/package.json +6 -5
- package/dist/components/Treeview/Treeview.cjs +0 -52
- package/dist/components/Treeview/Treeview.cjs.map +0 -1
- package/dist/components/Treeview/Treeview.d.ts +0 -25
- package/dist/components/Treeview/Treeview.js +0 -52
- package/dist/components/Treeview/Treeview.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select2.cjs","sources":["../../../src/components/Select2/Select2.tsx"],"sourcesContent":["import { Popover as PopoverPrimitive } from '@base-ui/react/popover';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener';\nimport { useControlled } from '../../hooks/useControlled';\nimport { useIsFormControl } from '../../hooks/useIsFormControl';\nimport { useIsHoverStatePaused } from '../../hooks/useIsHoverStatePaused';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { BubbleSelect } from '../../primitives/BubbleSelect';\nimport type { CollectionRef } from '../../primitives/Collection/Collection';\nimport * as ListboxPrimitive from '../../primitives/Listbox2/Listbox2';\nimport type { FontSize } from '../../types';\nimport { fixedForwardRef, FontSizes } from '../../types';\nimport { isAriaDirectionKey } from '../../utils/aria';\nimport { debounce } from '../../utils/debounce';\nimport { getNextFocussableElement, isElementInsideTable3OrReport } from '../../utils/dom';\nimport { createCustomKeyboardEvent } from '../../utils/input';\nimport { LegacyButton } from '../LegacyComponents/Button/Button';\nimport { useLocalization } from '../Provider/Localization';\nimport { Spinner } from '../Spinner/Spinner';\n\nimport { Collection } from './components/Collection';\nimport { Select2Context } from './components/Context';\nimport { Create } from './components/Create';\nimport type { Select2GroupProps } from './components/Group';\nimport { Group } from './components/Group';\nimport type { Select2OptionProps } from './components/Option';\nimport { Option } from './components/Option';\nimport { Search } from './components/Search';\nimport type { Select2TitleProps } from './components/Title';\nimport { Title } from './components/Title';\nimport { Trigger } from './components/Trigger';\nimport { isGroup, useChildren } from './hooks/useChildren';\nimport type {\n Select2Child,\n Select2Children,\n Select2CreateHandler,\n Select2CreateDialogRenderer,\n Select2DeleteHandler,\n Select2EditHandler,\n Select2OptionValue,\n Select2Value,\n} from './types';\nimport { createCollectionClassName, filterOption, FONT_SIZE_CLASSNAME } from './utilities';\n\ntype Select2Texts = {\n allSelect: string;\n allDeselect: string;\n cancel: string;\n chooseColor: string;\n create: string;\n delete: string;\n save: string;\n search: string;\n searchOrCreate: string;\n selectAll: string;\n selectAllResults: string;\n deselectAll: string;\n deselectAllResults: string;\n};\n\ntype Select2Props<T extends Select2Value = Select2Value> = Omit<\n React.HTMLAttributes<HTMLButtonElement>,\n 'children' | 'defaultValue' | 'onChange' | 'value'\n> & {\n /** Autofocus Select2 when loaded **/\n autoFocus?: boolean;\n /** Array of options in Select2 */\n children: Select2Children;\n /** Initial value of the input in Select2 */\n defaultValue?: T;\n /** Set what value should have an empty option in Select2 */\n emptyValue?: Extract<T, Select2OptionValue>;\n /** Whether the Select2 is in a disabled state **/\n disabled?: boolean;\n /** Font size of text in Select2 **/\n fontSize?: FontSize;\n /** Draws attention to the Select2 by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Whether the Select2 is in an invalid state **/\n invalid?: boolean;\n /** Whether the Select2 is loading the data **/\n loading?: boolean;\n /** Whether the Select2 allows selecting multiple values **/\n multiple?: boolean;\n /** Whether the Select2 is in an invalid state **/\n name?: string;\n /** Handler called when user chooses an option from the provided options **/\n onChange?: (value: T) => void;\n /** Handler called when user creates a new option **/\n onCreate?: Select2CreateHandler;\n /** Handler called when user deletes an option **/\n onDelete?: Select2DeleteHandler;\n /** Handler called when user edits an option **/\n onEdit?: Select2EditHandler;\n /** Placeholder showed when nothing is selected **/\n placeholder?: string;\n /** Whether the Select2 is in a readonly state **/\n readOnly?: boolean;\n required?: boolean;\n /** Renders select options as tags **/\n tags?: boolean;\n /** Value of the input in select2 */\n value?: T;\n /** Create dialog component, if specified, then create button will become always visible in the bottom of options dropdown,\n * when clicked, it will open create dialog and wait for 'onCreate' handler to be triggered from the dialog */\n createDialog?: Select2CreateDialogRenderer;\n /** Create button text */\n createTriggerText?: string;\n};\n\n// generic overload is the public face; the wide implementation signature lets the internals\n// (which all operate on Select2Value) consume the props without assertions\nfunction _Select2Inner<T extends Select2Value = Select2Value>(\n props: Select2Props<T>,\n ref: React.Ref<HTMLButtonElement>\n): React.JSX.Element;\nfunction _Select2Inner(props: Select2Props, ref: React.Ref<HTMLButtonElement>): React.JSX.Element {\n const {\n children: initChildren,\n defaultValue,\n disabled = false,\n emptyValue = undefined,\n fontSize,\n highlighted = false,\n invalid = false,\n loading,\n multiple = false,\n name,\n onChange,\n onCreate,\n onDelete,\n onEdit,\n placeholder,\n readOnly = false,\n tags = false,\n value: prop,\n createDialog,\n createTriggerText,\n ...otherProps\n } = props;\n\n const emptyOption: React.ReactElement<Select2OptionProps> | undefined = React.useMemo(() => {\n if (emptyValue !== undefined && !multiple) {\n // Empty option has 0px height, because it's empty, so need to apply height manually\n return <Option key=\"__empty\" children=\"\" value={emptyValue} className=\"h-8\" />;\n }\n return;\n }, [emptyValue, multiple]);\n\n const initialChildren = React.useMemo(() => {\n // flatten nested arrays from maps and strip conditionals (false/null) so the internals see a flat list\n const children = React.Children.toArray(initChildren).filter((child): child is Select2Child =>\n React.isValidElement(child)\n );\n\n return emptyOption ? [emptyOption, ...children] : children;\n }, [emptyOption, initChildren]);\n\n // refs\n const internalRef = useMergedRef<HTMLButtonElement>(ref);\n const listboxRef = React.useRef<CollectionRef>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n const { texts } = useLocalization();\n // align the listbox min width with the width of the input - it should never be smaller\n const dimensions = useBoundingClientRectListener(internalRef);\n\n // state\n const [open, setOpen] = React.useState(false);\n const [value, _setValue] = useControlled<Select2Value>({\n // uncontrolled\n defaultValue,\n // controlled\n onChange,\n value: prop,\n });\n const setValue = ListboxPrimitive.createListboxValueSetter(\n multiple,\n // the state can genuinely become undefined (form reset), but widening `useControlled` to\n // `Select2Value | undefined` would require onChange to accept `undefined` — a breaking API change\n _setValue as React.Dispatch<React.SetStateAction<Select2Value | undefined>>\n );\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n\n const { flattenedChildren, filteredChildren, searchQuery, setSearchQuery } = useChildren({\n children: initialChildren,\n emptyValue,\n multiple,\n open,\n setValue,\n value,\n });\n\n // context\n const context = {\n disabled,\n highlighted,\n invalid,\n listboxRef,\n multiple,\n onCreate,\n onDelete,\n onEdit,\n open,\n readOnly,\n ref: internalRef,\n searchQuery,\n searchRef,\n setOpen,\n setSearchQuery,\n setValidationError,\n setValue,\n shouldPauseHoverState,\n setShouldPauseHoverState,\n tags,\n fontSize,\n validationError,\n value,\n createDialog,\n createTriggerText,\n };\n\n const hasInlineCreation = onCreate && !createDialog;\n const hasSearch = flattenedChildren.length > 5 || hasInlineCreation;\n const visibleChildren = searchQuery === '' ? initialChildren : filteredChildren;\n const selectOptions =\n searchQuery === ''\n ? flattenedChildren.map(child => child.props.value)\n : filteredChildren.flatMap(child => {\n if (isGroup(child)) {\n return Array.isArray(child.props.children)\n ? child.props.children.map(subChild => subChild.props.value)\n : [];\n }\n return child.props.value;\n });\n\n // support typeahead functionality when search isn't available\n const queryTimeoutRef = React.useRef('');\n\n const typeahead = debounce(function () {\n if (!queryTimeoutRef.current) {\n return;\n }\n\n // match against the flattened list — selectOptions is flattened too, so indices\n // stay aligned when groups are present, and group members can be matched\n const matchedValueIndex = flattenedChildren.findIndex(child => filterOption(child, queryTimeoutRef.current));\n\n if (matchedValueIndex > -1 && selectOptions[matchedValueIndex] !== undefined) {\n setValue(selectOptions[matchedValueIndex]);\n }\n\n queryTimeoutRef.current = '';\n }, 200);\n\n const setValueIfMatched = (query: string) => {\n queryTimeoutRef.current = queryTimeoutRef.current + query;\n typeahead();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (isElementInsideTable3OrReport(event.currentTarget) && isAriaDirectionKey(event)) {\n return;\n } else if (!event.ctrlKey && !event.metaKey && (event.key === 'ArrowDown' || /^[a-z0-9]$/i.test(event.key))) {\n setOpen(true);\n\n if (!hasSearch) {\n setValueIfMatched(event.key);\n }\n }\n\n // Collect the first character when opening with keyboard (when user starts typing while focused on a trigger)\n if (hasSearch && /^[a-z0-9]$/i.test(event.key)) {\n setSearchQuery(prev => prev + event.key);\n }\n\n // the focus should always remain on the input, so we forward events on to the listbox\n listboxRef.current?.dispatchEvent(createCustomKeyboardEvent(event));\n };\n\n const shouldFocusNextRef = React.useRef<number | undefined>(undefined);\n\n const handleHorizontalNavigation = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (isElementInsideTable3OrReport(internalRef.current)) {\n const isTriggeredFromPopover = event.target instanceof Node && event.currentTarget.contains?.(event.target);\n\n if ((event.key === 'ArrowLeft' || event.key === 'ArrowRight') && isTriggeredFromPopover) {\n event.preventDefault(); // prevents scrolling horizontally in the table on arrow left/right.\n event.stopPropagation();\n\n shouldFocusNextRef.current = event.key === 'ArrowLeft' ? -1 : +1;\n setOpen(false);\n }\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isAriaDirectionKey(event)) {\n setShouldPauseHoverState(true);\n return;\n }\n\n if (event.key === 'Tab') {\n shouldFocusNextRef.current = event.shiftKey ? -1 : +1;\n setOpen(false);\n return;\n }\n\n // Handle Escape key to close the select without closing the parent dialog\n if (!hasSearch && event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n setOpen(false);\n return;\n }\n\n // support typeahead to set the value by typing its text\n if (!hasSearch && /^[a-z0-9]$/i.test(event.key)) {\n setValueIfMatched(event.key);\n return;\n }\n };\n\n const handleOpenChange = (open: boolean, details: { reason: string; event: Event }) => {\n if (!open && (details.reason === 'outside-press' || details.reason === 'focus-out')) {\n otherProps.onBlur?.(details.event as unknown as React.FocusEvent<HTMLButtonElement>);\n }\n setOpen(open);\n };\n\n const handleFinalFocus = (closeType: 'mouse' | 'touch' | 'keyboard' | 'pen' | '') => {\n if (shouldFocusNextRef.current !== undefined) {\n const el = getNextFocussableElement(internalRef.current, shouldFocusNextRef.current);\n shouldFocusNextRef.current = undefined;\n return el || false;\n }\n if (closeType === 'mouse' || closeType === 'touch') {\n // Don't steal focus — the clicked element receives it naturally.\n return false;\n }\n return true;\n };\n const areAllSelected = Array.isArray(value) && selectOptions.every(option => value.includes(option));\n\n const selectAllText = React.useMemo(() => {\n if (searchQuery === '') {\n if (areAllSelected) {\n return texts.select2.deselectAll;\n }\n return texts.select2.selectAll;\n }\n\n if (areAllSelected) {\n return texts.select2.deselectAllResults;\n }\n\n return texts.select2.selectAllResults;\n }, [areAllSelected, searchQuery]);\n\n const selectAll = () => {\n if (!Array.isArray(value) || value.length === 0) {\n setValue(selectOptions);\n } else {\n // array of all available options which are not selected\n const preselectedValues = selectOptions.filter(option => !value.includes(option));\n setValue([...value, ...preselectedValues]);\n }\n };\n\n const deselectAll = () => {\n if (searchQuery === '') {\n setValue([]);\n } else {\n const nextValue = Array.isArray(value) && value.filter(subValue => !selectOptions.includes(subValue));\n setValue(nextValue);\n }\n };\n\n const className = cn(\n 'rounded border border-gray-300 bg-white py-1.5 shadow-md',\n {\n 'focus-within:yt-focus': !hasSearch,\n 'outline-none': hasSearch,\n },\n createCollectionClassName()\n );\n\n return (\n <Select2Context.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <PopoverPrimitive.Trigger\n render={\n <Trigger\n {...otherProps}\n aria-haspopup=\"listbox\"\n aria-multiselectable={multiple}\n // oxlint-disable-next-line taco/data-taco-kebab-case -- established public selector API; renaming it is a breaking change\n data-taco=\"Select2\"\n emptyValue={emptyValue}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={internalRef}>\n {flattenedChildren}\n </Trigger>\n }\n />\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align=\"start\"\n sideOffset={4}\n collisionAvoidance={{\n side: 'flip',\n fallbackAxisSide: 'none',\n }}>\n <PopoverPrimitive.Popup\n className={className}\n style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}\n initialFocus={hasSearch ? searchRef : true}\n finalFocus={handleFinalFocus}\n onKeyDown={handleHorizontalNavigation}\n tabIndex={-1}>\n {hasSearch ? (\n <>\n <Search\n placeholder={hasInlineCreation ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\n />\n {multiple && selectOptions.length > 1 && (\n <>\n <LegacyButton\n className=\"!justify-start\"\n appearance=\"discrete\"\n onClick={areAllSelected ? deselectAll : selectAll}>\n {selectAllText}\n </LegacyButton>\n <div className=\"mx-3 rounded border-t border-gray-200\" />\n </>\n )}\n </>\n ) : null}\n {loading ? (\n <span\n className={cn(\n 'flex items-center italic text-gray-700',\n fontSize && FONT_SIZE_CLASSNAME[fontSize]\n )}>\n <span>\n <Spinner\n delay={0}\n className={cn('ml-3 mr-2 mt-1.5 h-5 w-5', {\n '!mt-1 !h-3.5 !w-3.5': fontSize === FontSizes.small,\n '!h-4 !w-4': fontSize === FontSizes.medium,\n '!h-5 !w-5': fontSize === FontSizes.large,\n })}\n />\n </span>\n <span>{texts.listbox.loading}</span>\n </span>\n ) : flattenedChildren.length <= 0 && !onCreate ? (\n <div className=\"-mt-0.5 flex h-8 items-center px-2 text-gray-700\" role=\"presentation\">\n {texts.listbox.empty}\n </div>\n ) : (\n <ListboxPrimitive.Root\n className=\"flex flex-col gap-0.5 focus-visible:outline-none\"\n customSelector=\":scope > button\"\n disabled={disabled}\n multiple={multiple}\n onKeyDown={handleListboxKeyDown}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n value={value}>\n <Collection>{visibleChildren}</Collection>\n {onCreate ? <Create onCreate={onCreate} options={flattenedChildren} /> : null}\n </ListboxPrimitive.Root>\n )}\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n <ControlledHiddenField\n emptyValue={emptyValue}\n multiple={multiple || tags}\n name={name}\n options={flattenedChildren.map(child => child.props.value)}\n parentRef={internalRef}\n setValue={setValue}\n value={value}\n />\n </PopoverPrimitive.Root>\n </Select2Context.Provider>\n );\n}\n\nexport const Select2 = Object.assign(fixedForwardRef(_Select2Inner), {\n Option,\n Group,\n Title,\n displayName: 'Select2',\n});\n\ntype ControlledHiddenFieldProps = {\n emptyValue: ListboxPrimitive.Listbox2OptionValue | undefined;\n multiple: boolean;\n name: string | undefined;\n options: Select2OptionValue[];\n parentRef: React.RefObject<HTMLButtonElement>;\n setValue: (nextValue: Select2Value | undefined) => void;\n value: Select2Value | undefined;\n};\n\nconst ControlledHiddenField = (props: ControlledHiddenFieldProps) => {\n const { emptyValue, multiple, name, options, parentRef, value, setValue } = props;\n const isFormControl = useIsFormControl(parentRef, () => setValue(multiple ? [] : undefined));\n\n let bubbleValue;\n\n if (isFormControl) {\n if (value !== undefined) {\n if (multiple) {\n bubbleValue = Array.isArray(value) ? value.map(String) : [value === null ? '' : String(value)];\n } else {\n bubbleValue = value === null ? '' : String(value);\n }\n }\n\n return (\n <BubbleSelect aria-hidden key={String(bubbleValue)} multiple={multiple} name={name} tabIndex={-1} value={bubbleValue}>\n {emptyValue === undefined ? null : <option value={emptyValue === null ? '' : String(emptyValue)} />}\n {options.map(option => (\n <option key={String(option)} value={String(option)} />\n ))}\n </BubbleSelect>\n );\n }\n\n return null;\n};\n\nexport type {\n Select2Texts,\n Select2Child,\n Select2GroupProps,\n Select2OptionProps,\n Select2OptionValue,\n Select2Value,\n Select2Props,\n Select2TitleProps,\n Select2Children,\n};\n"],"names":["Option","useMergedRef","useLocalization","useBoundingClientRectListener","useControlled","ListboxPrimitive.createListboxValueSetter","useIsHoverStatePaused","useChildren","isGroup","debounce","filterOption","isElementInsideTable3OrReport","isAriaDirectionKey","createCustomKeyboardEvent","open","getNextFocussableElement","createCollectionClassName","Select2Context","PopoverPrimitive","Trigger","Search","LegacyButton","FONT_SIZE_CLASSNAME","Spinner","FontSizes","ListboxPrimitive.Root","Collection","Create","fixedForwardRef","Group","Title","useIsFormControl","BubbleSelect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select2.cjs","sources":["../../../src/components/Select2/Select2.tsx"],"sourcesContent":["import { Popover as PopoverPrimitive } from '@base-ui/react/popover';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { LegacyButton, Spinner, useLocalization } from '@/components';\nimport { useBoundingClientRectListener } from '@/hooks/useBoundingClientRectListener';\nimport { useControlled } from '@/hooks/useControlled';\nimport { useIsFormControl } from '@/hooks/useIsFormControl';\nimport { useIsHoverStatePaused } from '@/hooks/useIsHoverStatePaused';\nimport { useMergedRef } from '@/hooks/useMergedRef';\nimport { BubbleSelect } from '@/primitives/BubbleSelect';\nimport type { CollectionRef } from '@/primitives/Collection/Collection';\nimport * as ListboxPrimitive from '@/primitives/Listbox2/Listbox2';\nimport type { FontSize } from '@/types';\nimport { fixedForwardRef, FontSizes } from '@/types';\nimport { isAriaDirectionKey } from '@/utils/aria';\nimport { debounce } from '@/utils/debounce';\nimport { getNextFocussableElement, isElementInsideTable3OrReport } from '@/utils/dom';\nimport { createCustomKeyboardEvent } from '@/utils/input';\n\nimport { Collection } from './components/Collection';\nimport { Select2Context } from './components/Context';\nimport { Create } from './components/Create';\nimport type { Select2GroupProps } from './components/Group';\nimport { Group } from './components/Group';\nimport type { Select2OptionProps } from './components/Option';\nimport { Option } from './components/Option';\nimport { Search } from './components/Search';\nimport type { Select2TitleProps } from './components/Title';\nimport { Title } from './components/Title';\nimport { Trigger } from './components/Trigger';\nimport { isGroup, useChildren } from './hooks/useChildren';\nimport type {\n Select2Child,\n Select2Children,\n Select2CreateHandler,\n Select2CreateDialogRenderer,\n Select2DeleteHandler,\n Select2EditHandler,\n Select2OptionValue,\n Select2Value,\n} from './types';\nimport { createCollectionClassName, filterOption, FONT_SIZE_CLASSNAME } from './utilities';\n\ntype Select2Texts = {\n allSelect: string;\n allDeselect: string;\n cancel: string;\n chooseColor: string;\n create: string;\n delete: string;\n save: string;\n search: string;\n searchOrCreate: string;\n selectAll: string;\n selectAllResults: string;\n deselectAll: string;\n deselectAllResults: string;\n};\n\ntype Select2Props<T extends Select2Value = Select2Value> = Omit<\n React.HTMLAttributes<HTMLButtonElement>,\n 'children' | 'defaultValue' | 'onChange' | 'value'\n> & {\n /** Autofocus Select2 when loaded **/\n autoFocus?: boolean;\n /** Array of options in Select2 */\n children: Select2Children;\n /** Initial value of the input in Select2 */\n defaultValue?: T;\n /** Set what value should have an empty option in Select2 */\n emptyValue?: Extract<T, Select2OptionValue>;\n /** Whether the Select2 is in a disabled state **/\n disabled?: boolean;\n /** Font size of text in Select2 **/\n fontSize?: FontSize;\n /** Draws attention to the Select2 by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Whether the Select2 is in an invalid state **/\n invalid?: boolean;\n /** Whether the Select2 is loading the data **/\n loading?: boolean;\n /** Whether the Select2 allows selecting multiple values **/\n multiple?: boolean;\n /** Whether the Select2 is in an invalid state **/\n name?: string;\n /** Handler called when user chooses an option from the provided options **/\n onChange?: (value: T) => void;\n /** Handler called when user creates a new option **/\n onCreate?: Select2CreateHandler;\n /** Handler called when user deletes an option **/\n onDelete?: Select2DeleteHandler;\n /** Handler called when user edits an option **/\n onEdit?: Select2EditHandler;\n /** Placeholder showed when nothing is selected **/\n placeholder?: string;\n /** Whether the Select2 is in a readonly state **/\n readOnly?: boolean;\n required?: boolean;\n /** Renders select options as tags **/\n tags?: boolean;\n /** Value of the input in select2 */\n value?: T;\n /** Create dialog component, if specified, then create button will become always visible in the bottom of options dropdown,\n * when clicked, it will open create dialog and wait for 'onCreate' handler to be triggered from the dialog */\n createDialog?: Select2CreateDialogRenderer;\n /** Create button text */\n createTriggerText?: string;\n};\n\n// generic overload is the public face; the wide implementation signature lets the internals\n// (which all operate on Select2Value) consume the props without assertions\nfunction _Select2Inner<T extends Select2Value = Select2Value>(\n props: Select2Props<T>,\n ref: React.Ref<HTMLButtonElement>\n): React.JSX.Element;\nfunction _Select2Inner(props: Select2Props, ref: React.Ref<HTMLButtonElement>): React.JSX.Element {\n const {\n children: initChildren,\n defaultValue,\n disabled = false,\n emptyValue = undefined,\n fontSize,\n highlighted = false,\n invalid = false,\n loading,\n multiple = false,\n name,\n onChange,\n onCreate,\n onDelete,\n onEdit,\n placeholder,\n readOnly = false,\n tags = false,\n value: prop,\n createDialog,\n createTriggerText,\n ...otherProps\n } = props;\n\n const emptyOption: React.ReactElement<Select2OptionProps> | undefined = React.useMemo(() => {\n if (emptyValue !== undefined && !multiple) {\n // Empty option has 0px height, because it's empty, so need to apply height manually\n return <Option key=\"__empty\" children=\"\" value={emptyValue} className=\"h-8\" />;\n }\n return;\n }, [emptyValue, multiple]);\n\n const initialChildren = React.useMemo(() => {\n // flatten nested arrays from maps and strip conditionals (false/null) so the internals see a flat list\n const children = React.Children.toArray(initChildren).filter((child): child is Select2Child =>\n React.isValidElement(child)\n );\n\n return emptyOption ? [emptyOption, ...children] : children;\n }, [emptyOption, initChildren]);\n\n // refs\n const internalRef = useMergedRef<HTMLButtonElement>(ref);\n const listboxRef = React.useRef<CollectionRef>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n const { texts } = useLocalization();\n // align the listbox min width with the width of the input - it should never be smaller\n const dimensions = useBoundingClientRectListener(internalRef);\n\n // state\n const [open, setOpen] = React.useState(false);\n const [value, _setValue] = useControlled<Select2Value>({\n // uncontrolled\n defaultValue,\n // controlled\n onChange,\n value: prop,\n });\n const setValue = ListboxPrimitive.createListboxValueSetter(\n multiple,\n // the state can genuinely become undefined (form reset), but widening `useControlled` to\n // `Select2Value | undefined` would require onChange to accept `undefined` — a breaking API change\n _setValue as React.Dispatch<React.SetStateAction<Select2Value | undefined>>\n );\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n\n const { flattenedChildren, filteredChildren, searchQuery, setSearchQuery } = useChildren({\n children: initialChildren,\n emptyValue,\n multiple,\n open,\n setValue,\n value,\n });\n\n // context\n const context = {\n disabled,\n highlighted,\n invalid,\n listboxRef,\n multiple,\n onCreate,\n onDelete,\n onEdit,\n open,\n readOnly,\n ref: internalRef,\n searchQuery,\n searchRef,\n setOpen,\n setSearchQuery,\n setValidationError,\n setValue,\n shouldPauseHoverState,\n setShouldPauseHoverState,\n tags,\n fontSize,\n validationError,\n value,\n createDialog,\n createTriggerText,\n };\n\n const hasInlineCreation = onCreate && !createDialog;\n const hasSearch = flattenedChildren.length > 5 || hasInlineCreation;\n const visibleChildren = searchQuery === '' ? initialChildren : filteredChildren;\n const selectOptions =\n searchQuery === ''\n ? flattenedChildren.map(child => child.props.value)\n : filteredChildren.flatMap(child => {\n if (isGroup(child)) {\n return Array.isArray(child.props.children)\n ? child.props.children.map(subChild => subChild.props.value)\n : [];\n }\n return child.props.value;\n });\n\n // support typeahead functionality when search isn't available\n const queryTimeoutRef = React.useRef('');\n\n const typeahead = debounce(function () {\n if (!queryTimeoutRef.current) {\n return;\n }\n\n // match against the flattened list — selectOptions is flattened too, so indices\n // stay aligned when groups are present, and group members can be matched\n const matchedValueIndex = flattenedChildren.findIndex(child => filterOption(child, queryTimeoutRef.current));\n\n if (matchedValueIndex > -1 && selectOptions[matchedValueIndex] !== undefined) {\n setValue(selectOptions[matchedValueIndex]);\n }\n\n queryTimeoutRef.current = '';\n }, 200);\n\n const setValueIfMatched = (query: string) => {\n queryTimeoutRef.current = queryTimeoutRef.current + query;\n typeahead();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (isElementInsideTable3OrReport(event.currentTarget) && isAriaDirectionKey(event)) {\n return;\n } else if (!event.ctrlKey && !event.metaKey && (event.key === 'ArrowDown' || /^[a-z0-9]$/i.test(event.key))) {\n setOpen(true);\n\n if (!hasSearch) {\n setValueIfMatched(event.key);\n }\n }\n\n // Collect the first character when opening with keyboard (when user starts typing while focused on a trigger)\n if (hasSearch && /^[a-z0-9]$/i.test(event.key)) {\n setSearchQuery(prev => prev + event.key);\n }\n\n // the focus should always remain on the input, so we forward events on to the listbox\n listboxRef.current?.dispatchEvent(createCustomKeyboardEvent(event));\n };\n\n const shouldFocusNextRef = React.useRef<number | undefined>(undefined);\n\n const handleHorizontalNavigation = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (isElementInsideTable3OrReport(internalRef.current)) {\n const isTriggeredFromPopover = event.target instanceof Node && event.currentTarget.contains?.(event.target);\n\n if ((event.key === 'ArrowLeft' || event.key === 'ArrowRight') && isTriggeredFromPopover) {\n event.preventDefault(); // prevents scrolling horizontally in the table on arrow left/right.\n event.stopPropagation();\n\n shouldFocusNextRef.current = event.key === 'ArrowLeft' ? -1 : +1;\n setOpen(false);\n }\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isAriaDirectionKey(event)) {\n setShouldPauseHoverState(true);\n return;\n }\n\n if (event.key === 'Tab') {\n shouldFocusNextRef.current = event.shiftKey ? -1 : +1;\n setOpen(false);\n return;\n }\n\n // Handle Escape key to close the select without closing the parent dialog\n if (!hasSearch && event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n setOpen(false);\n return;\n }\n\n // support typeahead to set the value by typing its text\n if (!hasSearch && /^[a-z0-9]$/i.test(event.key)) {\n setValueIfMatched(event.key);\n return;\n }\n };\n\n const handleOpenChange = (open: boolean, details: { reason: string; event: Event }) => {\n if (!open && (details.reason === 'outside-press' || details.reason === 'focus-out')) {\n otherProps.onBlur?.(details.event as unknown as React.FocusEvent<HTMLButtonElement>);\n }\n setOpen(open);\n };\n\n const handleFinalFocus = (closeType: 'mouse' | 'touch' | 'keyboard' | 'pen' | '') => {\n if (shouldFocusNextRef.current !== undefined) {\n const el = getNextFocussableElement(internalRef.current, shouldFocusNextRef.current);\n shouldFocusNextRef.current = undefined;\n return el || false;\n }\n if (closeType === 'mouse' || closeType === 'touch') {\n // Don't steal focus — the clicked element receives it naturally.\n return false;\n }\n return true;\n };\n const areAllSelected = Array.isArray(value) && selectOptions.every(option => value.includes(option));\n\n const selectAllText = React.useMemo(() => {\n if (searchQuery === '') {\n if (areAllSelected) {\n return texts.select2.deselectAll;\n }\n return texts.select2.selectAll;\n }\n\n if (areAllSelected) {\n return texts.select2.deselectAllResults;\n }\n\n return texts.select2.selectAllResults;\n }, [areAllSelected, searchQuery]);\n\n const selectAll = () => {\n if (!Array.isArray(value) || value.length === 0) {\n setValue(selectOptions);\n } else {\n // array of all available options which are not selected\n const preselectedValues = selectOptions.filter(option => !value.includes(option));\n setValue([...value, ...preselectedValues]);\n }\n };\n\n const deselectAll = () => {\n if (searchQuery === '') {\n setValue([]);\n } else {\n const nextValue = Array.isArray(value) && value.filter(subValue => !selectOptions.includes(subValue));\n setValue(nextValue);\n }\n };\n\n const className = cn(\n 'rounded border border-gray-300 bg-white py-1.5 shadow-md',\n {\n 'focus-within:yt-focus': !hasSearch,\n 'outline-none': hasSearch,\n },\n createCollectionClassName()\n );\n\n return (\n <Select2Context.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <PopoverPrimitive.Trigger\n render={\n <Trigger\n {...otherProps}\n aria-haspopup=\"listbox\"\n aria-multiselectable={multiple}\n // oxlint-disable-next-line taco/data-taco-kebab-case -- established public selector API; renaming it is a breaking change\n data-taco=\"Select2\"\n emptyValue={emptyValue}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={internalRef}>\n {flattenedChildren}\n </Trigger>\n }\n />\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align=\"start\"\n sideOffset={4}\n collisionAvoidance={{\n side: 'flip',\n fallbackAxisSide: 'none',\n }}>\n <PopoverPrimitive.Popup\n className={className}\n style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}\n initialFocus={hasSearch ? searchRef : true}\n finalFocus={handleFinalFocus}\n onKeyDown={handleHorizontalNavigation}\n tabIndex={-1}>\n {hasSearch ? (\n <>\n <Search\n placeholder={hasInlineCreation ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\n />\n {multiple && selectOptions.length > 1 && (\n <>\n <LegacyButton\n className=\"!justify-start\"\n appearance=\"discrete\"\n onClick={areAllSelected ? deselectAll : selectAll}>\n {selectAllText}\n </LegacyButton>\n <div className=\"mx-3 rounded border-t border-gray-200\" />\n </>\n )}\n </>\n ) : null}\n {loading ? (\n <span\n className={cn(\n 'flex items-center italic text-gray-700',\n fontSize && FONT_SIZE_CLASSNAME[fontSize]\n )}>\n <span>\n <Spinner\n delay={0}\n className={cn('ml-3 mr-2 mt-1.5 h-5 w-5', {\n '!mt-1 !h-3.5 !w-3.5': fontSize === FontSizes.small,\n '!h-4 !w-4': fontSize === FontSizes.medium,\n '!h-5 !w-5': fontSize === FontSizes.large,\n })}\n />\n </span>\n <span>{texts.listbox.loading}</span>\n </span>\n ) : flattenedChildren.length <= 0 && !onCreate ? (\n <div className=\"-mt-0.5 flex h-8 items-center px-2 text-gray-700\" role=\"presentation\">\n {texts.listbox.empty}\n </div>\n ) : (\n <ListboxPrimitive.Root\n className=\"flex flex-col gap-0.5 focus-visible:outline-none\"\n customSelector=\":scope > button\"\n disabled={disabled}\n multiple={multiple}\n onKeyDown={handleListboxKeyDown}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n value={value}>\n <Collection>{visibleChildren}</Collection>\n {onCreate ? <Create onCreate={onCreate} options={flattenedChildren} /> : null}\n </ListboxPrimitive.Root>\n )}\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n <ControlledHiddenField\n emptyValue={emptyValue}\n multiple={multiple || tags}\n name={name}\n options={flattenedChildren.map(child => child.props.value)}\n parentRef={internalRef}\n setValue={setValue}\n value={value}\n />\n </PopoverPrimitive.Root>\n </Select2Context.Provider>\n );\n}\n\nexport const Select2 = Object.assign(fixedForwardRef(_Select2Inner), {\n Option,\n Group,\n Title,\n displayName: 'Select2',\n});\n\ntype ControlledHiddenFieldProps = {\n emptyValue: ListboxPrimitive.Listbox2OptionValue | undefined;\n multiple: boolean;\n name: string | undefined;\n options: Select2OptionValue[];\n parentRef: React.RefObject<HTMLButtonElement>;\n setValue: (nextValue: Select2Value | undefined) => void;\n value: Select2Value | undefined;\n};\n\nconst ControlledHiddenField = (props: ControlledHiddenFieldProps) => {\n const { emptyValue, multiple, name, options, parentRef, value, setValue } = props;\n const isFormControl = useIsFormControl(parentRef, () => setValue(multiple ? [] : undefined));\n\n let bubbleValue;\n\n if (isFormControl) {\n if (value !== undefined) {\n if (multiple) {\n bubbleValue = Array.isArray(value) ? value.map(String) : [value === null ? '' : String(value)];\n } else {\n bubbleValue = value === null ? '' : String(value);\n }\n }\n\n return (\n <BubbleSelect aria-hidden key={String(bubbleValue)} multiple={multiple} name={name} tabIndex={-1} value={bubbleValue}>\n {emptyValue === undefined ? null : <option value={emptyValue === null ? '' : String(emptyValue)} />}\n {options.map(option => (\n <option key={String(option)} value={String(option)} />\n ))}\n </BubbleSelect>\n );\n }\n\n return null;\n};\n\nexport type {\n Select2Texts,\n Select2Child,\n Select2GroupProps,\n Select2OptionProps,\n Select2OptionValue,\n Select2Value,\n Select2Props,\n Select2TitleProps,\n Select2Children,\n};\n"],"names":["Option","useMergedRef","useLocalization","useBoundingClientRectListener","useControlled","ListboxPrimitive.createListboxValueSetter","useIsHoverStatePaused","useChildren","isGroup","debounce","filterOption","isElementInsideTable3OrReport","isAriaDirectionKey","createCustomKeyboardEvent","open","getNextFocussableElement","createCollectionClassName","Select2Context","PopoverPrimitive","Trigger","Search","LegacyButton","FONT_SIZE_CLASSNAME","Spinner","FontSizes","ListboxPrimitive.Root","Collection","Create","fixedForwardRef","Group","Title","useIsFormControl","BubbleSelect"],"mappings":"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"}
|
|
@@ -66,7 +66,7 @@ type Select2Props<T extends Select2Value = Select2Value> = Omit<React.HTMLAttrib
|
|
|
66
66
|
/** Create button text */
|
|
67
67
|
createTriggerText?: string;
|
|
68
68
|
};
|
|
69
|
-
export declare const Select2: (<T extends Select2Value = Select2Value>(props: Omit<React.HTMLAttributes<HTMLButtonElement>, "children" | "
|
|
69
|
+
export declare const Select2: (<T extends Select2Value = Select2Value>(props: Omit<React.HTMLAttributes<HTMLButtonElement>, "children" | "defaultValue" | "onChange" | "value"> & {
|
|
70
70
|
/** Autofocus Select2 when loaded **/
|
|
71
71
|
autoFocus?: boolean;
|
|
72
72
|
/** Array of options in Select2 */
|
|
@@ -114,7 +114,7 @@ export declare const Select2: (<T extends Select2Value = Select2Value>(props: Om
|
|
|
114
114
|
} & React.RefAttributes<HTMLButtonElement>) => React.JSX.Element) & {
|
|
115
115
|
Option: <T extends Select2OptionValue>(props: Omit<ListboxPrimitive.Listbox2OptionProps<T>, "children" | "prefix"> & {
|
|
116
116
|
children: string | React.JSX.Element;
|
|
117
|
-
color?: import('
|
|
117
|
+
color?: import('../../types').Color;
|
|
118
118
|
description?: string;
|
|
119
119
|
fontSize?: FontSize;
|
|
120
120
|
prefix?: import('..').IconName | React.JSX.Element;
|
|
@@ -7,14 +7,12 @@ import { useIsFormControl } from "../../hooks/useIsFormControl.js";
|
|
|
7
7
|
import { useIsHoverStatePaused } from "../../hooks/useIsHoverStatePaused.js";
|
|
8
8
|
import { useMergedRef } from "../../hooks/useMergedRef.js";
|
|
9
9
|
import { BubbleSelect } from "../../primitives/BubbleSelect.js";
|
|
10
|
+
import { Root, createListboxValueSetter } from "../../primitives/Listbox2/components/Root.js";
|
|
10
11
|
import { fixedForwardRef, FontSizes } from "../../types.js";
|
|
11
12
|
import { isAriaDirectionKey } from "../../utils/aria.js";
|
|
12
13
|
import { debounce } from "../../utils/debounce.js";
|
|
13
14
|
import { isElementInsideTable3OrReport, getNextFocussableElement } from "../../utils/dom.js";
|
|
14
15
|
import { createCustomKeyboardEvent } from "../../utils/input.js";
|
|
15
|
-
import { LegacyButton } from "../LegacyComponents/Button/Button.js";
|
|
16
|
-
import { useLocalization } from "../Provider/Localization.js";
|
|
17
|
-
import { Spinner } from "../Spinner/Spinner.js";
|
|
18
16
|
import { Collection } from "./components/Collection.js";
|
|
19
17
|
import { Select2Context } from "./components/Context.js";
|
|
20
18
|
import { Create } from "./components/Create.js";
|
|
@@ -25,7 +23,9 @@ import { Title } from "./components/Title.js";
|
|
|
25
23
|
import { Trigger } from "./components/Trigger.js";
|
|
26
24
|
import { useChildren, isGroup } from "./hooks/useChildren.js";
|
|
27
25
|
import { createCollectionClassName, FONT_SIZE_CLASSNAME, filterOption } from "./utilities.js";
|
|
28
|
-
import {
|
|
26
|
+
import { useLocalization } from "../Provider/Localization.js";
|
|
27
|
+
import { LegacyButton } from "../LegacyComponents/Button/Button.js";
|
|
28
|
+
import { Spinner } from "../Spinner/Spinner.js";
|
|
29
29
|
function _Select2Inner(props, ref) {
|
|
30
30
|
const {
|
|
31
31
|
children: initChildren,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select2.js","sources":["../../../src/components/Select2/Select2.tsx"],"sourcesContent":["import { Popover as PopoverPrimitive } from '@base-ui/react/popover';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { useBoundingClientRectListener } from '../../hooks/useBoundingClientRectListener';\nimport { useControlled } from '../../hooks/useControlled';\nimport { useIsFormControl } from '../../hooks/useIsFormControl';\nimport { useIsHoverStatePaused } from '../../hooks/useIsHoverStatePaused';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { BubbleSelect } from '../../primitives/BubbleSelect';\nimport type { CollectionRef } from '../../primitives/Collection/Collection';\nimport * as ListboxPrimitive from '../../primitives/Listbox2/Listbox2';\nimport type { FontSize } from '../../types';\nimport { fixedForwardRef, FontSizes } from '../../types';\nimport { isAriaDirectionKey } from '../../utils/aria';\nimport { debounce } from '../../utils/debounce';\nimport { getNextFocussableElement, isElementInsideTable3OrReport } from '../../utils/dom';\nimport { createCustomKeyboardEvent } from '../../utils/input';\nimport { LegacyButton } from '../LegacyComponents/Button/Button';\nimport { useLocalization } from '../Provider/Localization';\nimport { Spinner } from '../Spinner/Spinner';\n\nimport { Collection } from './components/Collection';\nimport { Select2Context } from './components/Context';\nimport { Create } from './components/Create';\nimport type { Select2GroupProps } from './components/Group';\nimport { Group } from './components/Group';\nimport type { Select2OptionProps } from './components/Option';\nimport { Option } from './components/Option';\nimport { Search } from './components/Search';\nimport type { Select2TitleProps } from './components/Title';\nimport { Title } from './components/Title';\nimport { Trigger } from './components/Trigger';\nimport { isGroup, useChildren } from './hooks/useChildren';\nimport type {\n Select2Child,\n Select2Children,\n Select2CreateHandler,\n Select2CreateDialogRenderer,\n Select2DeleteHandler,\n Select2EditHandler,\n Select2OptionValue,\n Select2Value,\n} from './types';\nimport { createCollectionClassName, filterOption, FONT_SIZE_CLASSNAME } from './utilities';\n\ntype Select2Texts = {\n allSelect: string;\n allDeselect: string;\n cancel: string;\n chooseColor: string;\n create: string;\n delete: string;\n save: string;\n search: string;\n searchOrCreate: string;\n selectAll: string;\n selectAllResults: string;\n deselectAll: string;\n deselectAllResults: string;\n};\n\ntype Select2Props<T extends Select2Value = Select2Value> = Omit<\n React.HTMLAttributes<HTMLButtonElement>,\n 'children' | 'defaultValue' | 'onChange' | 'value'\n> & {\n /** Autofocus Select2 when loaded **/\n autoFocus?: boolean;\n /** Array of options in Select2 */\n children: Select2Children;\n /** Initial value of the input in Select2 */\n defaultValue?: T;\n /** Set what value should have an empty option in Select2 */\n emptyValue?: Extract<T, Select2OptionValue>;\n /** Whether the Select2 is in a disabled state **/\n disabled?: boolean;\n /** Font size of text in Select2 **/\n fontSize?: FontSize;\n /** Draws attention to the Select2 by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Whether the Select2 is in an invalid state **/\n invalid?: boolean;\n /** Whether the Select2 is loading the data **/\n loading?: boolean;\n /** Whether the Select2 allows selecting multiple values **/\n multiple?: boolean;\n /** Whether the Select2 is in an invalid state **/\n name?: string;\n /** Handler called when user chooses an option from the provided options **/\n onChange?: (value: T) => void;\n /** Handler called when user creates a new option **/\n onCreate?: Select2CreateHandler;\n /** Handler called when user deletes an option **/\n onDelete?: Select2DeleteHandler;\n /** Handler called when user edits an option **/\n onEdit?: Select2EditHandler;\n /** Placeholder showed when nothing is selected **/\n placeholder?: string;\n /** Whether the Select2 is in a readonly state **/\n readOnly?: boolean;\n required?: boolean;\n /** Renders select options as tags **/\n tags?: boolean;\n /** Value of the input in select2 */\n value?: T;\n /** Create dialog component, if specified, then create button will become always visible in the bottom of options dropdown,\n * when clicked, it will open create dialog and wait for 'onCreate' handler to be triggered from the dialog */\n createDialog?: Select2CreateDialogRenderer;\n /** Create button text */\n createTriggerText?: string;\n};\n\n// generic overload is the public face; the wide implementation signature lets the internals\n// (which all operate on Select2Value) consume the props without assertions\nfunction _Select2Inner<T extends Select2Value = Select2Value>(\n props: Select2Props<T>,\n ref: React.Ref<HTMLButtonElement>\n): React.JSX.Element;\nfunction _Select2Inner(props: Select2Props, ref: React.Ref<HTMLButtonElement>): React.JSX.Element {\n const {\n children: initChildren,\n defaultValue,\n disabled = false,\n emptyValue = undefined,\n fontSize,\n highlighted = false,\n invalid = false,\n loading,\n multiple = false,\n name,\n onChange,\n onCreate,\n onDelete,\n onEdit,\n placeholder,\n readOnly = false,\n tags = false,\n value: prop,\n createDialog,\n createTriggerText,\n ...otherProps\n } = props;\n\n const emptyOption: React.ReactElement<Select2OptionProps> | undefined = React.useMemo(() => {\n if (emptyValue !== undefined && !multiple) {\n // Empty option has 0px height, because it's empty, so need to apply height manually\n return <Option key=\"__empty\" children=\"\" value={emptyValue} className=\"h-8\" />;\n }\n return;\n }, [emptyValue, multiple]);\n\n const initialChildren = React.useMemo(() => {\n // flatten nested arrays from maps and strip conditionals (false/null) so the internals see a flat list\n const children = React.Children.toArray(initChildren).filter((child): child is Select2Child =>\n React.isValidElement(child)\n );\n\n return emptyOption ? [emptyOption, ...children] : children;\n }, [emptyOption, initChildren]);\n\n // refs\n const internalRef = useMergedRef<HTMLButtonElement>(ref);\n const listboxRef = React.useRef<CollectionRef>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n const { texts } = useLocalization();\n // align the listbox min width with the width of the input - it should never be smaller\n const dimensions = useBoundingClientRectListener(internalRef);\n\n // state\n const [open, setOpen] = React.useState(false);\n const [value, _setValue] = useControlled<Select2Value>({\n // uncontrolled\n defaultValue,\n // controlled\n onChange,\n value: prop,\n });\n const setValue = ListboxPrimitive.createListboxValueSetter(\n multiple,\n // the state can genuinely become undefined (form reset), but widening `useControlled` to\n // `Select2Value | undefined` would require onChange to accept `undefined` — a breaking API change\n _setValue as React.Dispatch<React.SetStateAction<Select2Value | undefined>>\n );\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n\n const { flattenedChildren, filteredChildren, searchQuery, setSearchQuery } = useChildren({\n children: initialChildren,\n emptyValue,\n multiple,\n open,\n setValue,\n value,\n });\n\n // context\n const context = {\n disabled,\n highlighted,\n invalid,\n listboxRef,\n multiple,\n onCreate,\n onDelete,\n onEdit,\n open,\n readOnly,\n ref: internalRef,\n searchQuery,\n searchRef,\n setOpen,\n setSearchQuery,\n setValidationError,\n setValue,\n shouldPauseHoverState,\n setShouldPauseHoverState,\n tags,\n fontSize,\n validationError,\n value,\n createDialog,\n createTriggerText,\n };\n\n const hasInlineCreation = onCreate && !createDialog;\n const hasSearch = flattenedChildren.length > 5 || hasInlineCreation;\n const visibleChildren = searchQuery === '' ? initialChildren : filteredChildren;\n const selectOptions =\n searchQuery === ''\n ? flattenedChildren.map(child => child.props.value)\n : filteredChildren.flatMap(child => {\n if (isGroup(child)) {\n return Array.isArray(child.props.children)\n ? child.props.children.map(subChild => subChild.props.value)\n : [];\n }\n return child.props.value;\n });\n\n // support typeahead functionality when search isn't available\n const queryTimeoutRef = React.useRef('');\n\n const typeahead = debounce(function () {\n if (!queryTimeoutRef.current) {\n return;\n }\n\n // match against the flattened list — selectOptions is flattened too, so indices\n // stay aligned when groups are present, and group members can be matched\n const matchedValueIndex = flattenedChildren.findIndex(child => filterOption(child, queryTimeoutRef.current));\n\n if (matchedValueIndex > -1 && selectOptions[matchedValueIndex] !== undefined) {\n setValue(selectOptions[matchedValueIndex]);\n }\n\n queryTimeoutRef.current = '';\n }, 200);\n\n const setValueIfMatched = (query: string) => {\n queryTimeoutRef.current = queryTimeoutRef.current + query;\n typeahead();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (isElementInsideTable3OrReport(event.currentTarget) && isAriaDirectionKey(event)) {\n return;\n } else if (!event.ctrlKey && !event.metaKey && (event.key === 'ArrowDown' || /^[a-z0-9]$/i.test(event.key))) {\n setOpen(true);\n\n if (!hasSearch) {\n setValueIfMatched(event.key);\n }\n }\n\n // Collect the first character when opening with keyboard (when user starts typing while focused on a trigger)\n if (hasSearch && /^[a-z0-9]$/i.test(event.key)) {\n setSearchQuery(prev => prev + event.key);\n }\n\n // the focus should always remain on the input, so we forward events on to the listbox\n listboxRef.current?.dispatchEvent(createCustomKeyboardEvent(event));\n };\n\n const shouldFocusNextRef = React.useRef<number | undefined>(undefined);\n\n const handleHorizontalNavigation = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (isElementInsideTable3OrReport(internalRef.current)) {\n const isTriggeredFromPopover = event.target instanceof Node && event.currentTarget.contains?.(event.target);\n\n if ((event.key === 'ArrowLeft' || event.key === 'ArrowRight') && isTriggeredFromPopover) {\n event.preventDefault(); // prevents scrolling horizontally in the table on arrow left/right.\n event.stopPropagation();\n\n shouldFocusNextRef.current = event.key === 'ArrowLeft' ? -1 : +1;\n setOpen(false);\n }\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isAriaDirectionKey(event)) {\n setShouldPauseHoverState(true);\n return;\n }\n\n if (event.key === 'Tab') {\n shouldFocusNextRef.current = event.shiftKey ? -1 : +1;\n setOpen(false);\n return;\n }\n\n // Handle Escape key to close the select without closing the parent dialog\n if (!hasSearch && event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n setOpen(false);\n return;\n }\n\n // support typeahead to set the value by typing its text\n if (!hasSearch && /^[a-z0-9]$/i.test(event.key)) {\n setValueIfMatched(event.key);\n return;\n }\n };\n\n const handleOpenChange = (open: boolean, details: { reason: string; event: Event }) => {\n if (!open && (details.reason === 'outside-press' || details.reason === 'focus-out')) {\n otherProps.onBlur?.(details.event as unknown as React.FocusEvent<HTMLButtonElement>);\n }\n setOpen(open);\n };\n\n const handleFinalFocus = (closeType: 'mouse' | 'touch' | 'keyboard' | 'pen' | '') => {\n if (shouldFocusNextRef.current !== undefined) {\n const el = getNextFocussableElement(internalRef.current, shouldFocusNextRef.current);\n shouldFocusNextRef.current = undefined;\n return el || false;\n }\n if (closeType === 'mouse' || closeType === 'touch') {\n // Don't steal focus — the clicked element receives it naturally.\n return false;\n }\n return true;\n };\n const areAllSelected = Array.isArray(value) && selectOptions.every(option => value.includes(option));\n\n const selectAllText = React.useMemo(() => {\n if (searchQuery === '') {\n if (areAllSelected) {\n return texts.select2.deselectAll;\n }\n return texts.select2.selectAll;\n }\n\n if (areAllSelected) {\n return texts.select2.deselectAllResults;\n }\n\n return texts.select2.selectAllResults;\n }, [areAllSelected, searchQuery]);\n\n const selectAll = () => {\n if (!Array.isArray(value) || value.length === 0) {\n setValue(selectOptions);\n } else {\n // array of all available options which are not selected\n const preselectedValues = selectOptions.filter(option => !value.includes(option));\n setValue([...value, ...preselectedValues]);\n }\n };\n\n const deselectAll = () => {\n if (searchQuery === '') {\n setValue([]);\n } else {\n const nextValue = Array.isArray(value) && value.filter(subValue => !selectOptions.includes(subValue));\n setValue(nextValue);\n }\n };\n\n const className = cn(\n 'rounded border border-gray-300 bg-white py-1.5 shadow-md',\n {\n 'focus-within:yt-focus': !hasSearch,\n 'outline-none': hasSearch,\n },\n createCollectionClassName()\n );\n\n return (\n <Select2Context.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <PopoverPrimitive.Trigger\n render={\n <Trigger\n {...otherProps}\n aria-haspopup=\"listbox\"\n aria-multiselectable={multiple}\n // oxlint-disable-next-line taco/data-taco-kebab-case -- established public selector API; renaming it is a breaking change\n data-taco=\"Select2\"\n emptyValue={emptyValue}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={internalRef}>\n {flattenedChildren}\n </Trigger>\n }\n />\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align=\"start\"\n sideOffset={4}\n collisionAvoidance={{\n side: 'flip',\n fallbackAxisSide: 'none',\n }}>\n <PopoverPrimitive.Popup\n className={className}\n style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}\n initialFocus={hasSearch ? searchRef : true}\n finalFocus={handleFinalFocus}\n onKeyDown={handleHorizontalNavigation}\n tabIndex={-1}>\n {hasSearch ? (\n <>\n <Search\n placeholder={hasInlineCreation ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\n />\n {multiple && selectOptions.length > 1 && (\n <>\n <LegacyButton\n className=\"!justify-start\"\n appearance=\"discrete\"\n onClick={areAllSelected ? deselectAll : selectAll}>\n {selectAllText}\n </LegacyButton>\n <div className=\"mx-3 rounded border-t border-gray-200\" />\n </>\n )}\n </>\n ) : null}\n {loading ? (\n <span\n className={cn(\n 'flex items-center italic text-gray-700',\n fontSize && FONT_SIZE_CLASSNAME[fontSize]\n )}>\n <span>\n <Spinner\n delay={0}\n className={cn('ml-3 mr-2 mt-1.5 h-5 w-5', {\n '!mt-1 !h-3.5 !w-3.5': fontSize === FontSizes.small,\n '!h-4 !w-4': fontSize === FontSizes.medium,\n '!h-5 !w-5': fontSize === FontSizes.large,\n })}\n />\n </span>\n <span>{texts.listbox.loading}</span>\n </span>\n ) : flattenedChildren.length <= 0 && !onCreate ? (\n <div className=\"-mt-0.5 flex h-8 items-center px-2 text-gray-700\" role=\"presentation\">\n {texts.listbox.empty}\n </div>\n ) : (\n <ListboxPrimitive.Root\n className=\"flex flex-col gap-0.5 focus-visible:outline-none\"\n customSelector=\":scope > button\"\n disabled={disabled}\n multiple={multiple}\n onKeyDown={handleListboxKeyDown}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n value={value}>\n <Collection>{visibleChildren}</Collection>\n {onCreate ? <Create onCreate={onCreate} options={flattenedChildren} /> : null}\n </ListboxPrimitive.Root>\n )}\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n <ControlledHiddenField\n emptyValue={emptyValue}\n multiple={multiple || tags}\n name={name}\n options={flattenedChildren.map(child => child.props.value)}\n parentRef={internalRef}\n setValue={setValue}\n value={value}\n />\n </PopoverPrimitive.Root>\n </Select2Context.Provider>\n );\n}\n\nexport const Select2 = Object.assign(fixedForwardRef(_Select2Inner), {\n Option,\n Group,\n Title,\n displayName: 'Select2',\n});\n\ntype ControlledHiddenFieldProps = {\n emptyValue: ListboxPrimitive.Listbox2OptionValue | undefined;\n multiple: boolean;\n name: string | undefined;\n options: Select2OptionValue[];\n parentRef: React.RefObject<HTMLButtonElement>;\n setValue: (nextValue: Select2Value | undefined) => void;\n value: Select2Value | undefined;\n};\n\nconst ControlledHiddenField = (props: ControlledHiddenFieldProps) => {\n const { emptyValue, multiple, name, options, parentRef, value, setValue } = props;\n const isFormControl = useIsFormControl(parentRef, () => setValue(multiple ? [] : undefined));\n\n let bubbleValue;\n\n if (isFormControl) {\n if (value !== undefined) {\n if (multiple) {\n bubbleValue = Array.isArray(value) ? value.map(String) : [value === null ? '' : String(value)];\n } else {\n bubbleValue = value === null ? '' : String(value);\n }\n }\n\n return (\n <BubbleSelect aria-hidden key={String(bubbleValue)} multiple={multiple} name={name} tabIndex={-1} value={bubbleValue}>\n {emptyValue === undefined ? null : <option value={emptyValue === null ? '' : String(emptyValue)} />}\n {options.map(option => (\n <option key={String(option)} value={String(option)} />\n ))}\n </BubbleSelect>\n );\n }\n\n return null;\n};\n\nexport type {\n Select2Texts,\n Select2Child,\n Select2GroupProps,\n Select2OptionProps,\n Select2OptionValue,\n Select2Value,\n Select2Props,\n Select2TitleProps,\n Select2Children,\n};\n"],"names":["React","ListboxPrimitive.createListboxValueSetter","open","PopoverPrimitive","ListboxPrimitive.Root"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Select2.js","sources":["../../../src/components/Select2/Select2.tsx"],"sourcesContent":["import { Popover as PopoverPrimitive } from '@base-ui/react/popover';\nimport cn from 'clsx';\nimport React from 'react';\n\nimport { LegacyButton, Spinner, useLocalization } from '@/components';\nimport { useBoundingClientRectListener } from '@/hooks/useBoundingClientRectListener';\nimport { useControlled } from '@/hooks/useControlled';\nimport { useIsFormControl } from '@/hooks/useIsFormControl';\nimport { useIsHoverStatePaused } from '@/hooks/useIsHoverStatePaused';\nimport { useMergedRef } from '@/hooks/useMergedRef';\nimport { BubbleSelect } from '@/primitives/BubbleSelect';\nimport type { CollectionRef } from '@/primitives/Collection/Collection';\nimport * as ListboxPrimitive from '@/primitives/Listbox2/Listbox2';\nimport type { FontSize } from '@/types';\nimport { fixedForwardRef, FontSizes } from '@/types';\nimport { isAriaDirectionKey } from '@/utils/aria';\nimport { debounce } from '@/utils/debounce';\nimport { getNextFocussableElement, isElementInsideTable3OrReport } from '@/utils/dom';\nimport { createCustomKeyboardEvent } from '@/utils/input';\n\nimport { Collection } from './components/Collection';\nimport { Select2Context } from './components/Context';\nimport { Create } from './components/Create';\nimport type { Select2GroupProps } from './components/Group';\nimport { Group } from './components/Group';\nimport type { Select2OptionProps } from './components/Option';\nimport { Option } from './components/Option';\nimport { Search } from './components/Search';\nimport type { Select2TitleProps } from './components/Title';\nimport { Title } from './components/Title';\nimport { Trigger } from './components/Trigger';\nimport { isGroup, useChildren } from './hooks/useChildren';\nimport type {\n Select2Child,\n Select2Children,\n Select2CreateHandler,\n Select2CreateDialogRenderer,\n Select2DeleteHandler,\n Select2EditHandler,\n Select2OptionValue,\n Select2Value,\n} from './types';\nimport { createCollectionClassName, filterOption, FONT_SIZE_CLASSNAME } from './utilities';\n\ntype Select2Texts = {\n allSelect: string;\n allDeselect: string;\n cancel: string;\n chooseColor: string;\n create: string;\n delete: string;\n save: string;\n search: string;\n searchOrCreate: string;\n selectAll: string;\n selectAllResults: string;\n deselectAll: string;\n deselectAllResults: string;\n};\n\ntype Select2Props<T extends Select2Value = Select2Value> = Omit<\n React.HTMLAttributes<HTMLButtonElement>,\n 'children' | 'defaultValue' | 'onChange' | 'value'\n> & {\n /** Autofocus Select2 when loaded **/\n autoFocus?: boolean;\n /** Array of options in Select2 */\n children: Select2Children;\n /** Initial value of the input in Select2 */\n defaultValue?: T;\n /** Set what value should have an empty option in Select2 */\n emptyValue?: Extract<T, Select2OptionValue>;\n /** Whether the Select2 is in a disabled state **/\n disabled?: boolean;\n /** Font size of text in Select2 **/\n fontSize?: FontSize;\n /** Draws attention to the Select2 by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Whether the Select2 is in an invalid state **/\n invalid?: boolean;\n /** Whether the Select2 is loading the data **/\n loading?: boolean;\n /** Whether the Select2 allows selecting multiple values **/\n multiple?: boolean;\n /** Whether the Select2 is in an invalid state **/\n name?: string;\n /** Handler called when user chooses an option from the provided options **/\n onChange?: (value: T) => void;\n /** Handler called when user creates a new option **/\n onCreate?: Select2CreateHandler;\n /** Handler called when user deletes an option **/\n onDelete?: Select2DeleteHandler;\n /** Handler called when user edits an option **/\n onEdit?: Select2EditHandler;\n /** Placeholder showed when nothing is selected **/\n placeholder?: string;\n /** Whether the Select2 is in a readonly state **/\n readOnly?: boolean;\n required?: boolean;\n /** Renders select options as tags **/\n tags?: boolean;\n /** Value of the input in select2 */\n value?: T;\n /** Create dialog component, if specified, then create button will become always visible in the bottom of options dropdown,\n * when clicked, it will open create dialog and wait for 'onCreate' handler to be triggered from the dialog */\n createDialog?: Select2CreateDialogRenderer;\n /** Create button text */\n createTriggerText?: string;\n};\n\n// generic overload is the public face; the wide implementation signature lets the internals\n// (which all operate on Select2Value) consume the props without assertions\nfunction _Select2Inner<T extends Select2Value = Select2Value>(\n props: Select2Props<T>,\n ref: React.Ref<HTMLButtonElement>\n): React.JSX.Element;\nfunction _Select2Inner(props: Select2Props, ref: React.Ref<HTMLButtonElement>): React.JSX.Element {\n const {\n children: initChildren,\n defaultValue,\n disabled = false,\n emptyValue = undefined,\n fontSize,\n highlighted = false,\n invalid = false,\n loading,\n multiple = false,\n name,\n onChange,\n onCreate,\n onDelete,\n onEdit,\n placeholder,\n readOnly = false,\n tags = false,\n value: prop,\n createDialog,\n createTriggerText,\n ...otherProps\n } = props;\n\n const emptyOption: React.ReactElement<Select2OptionProps> | undefined = React.useMemo(() => {\n if (emptyValue !== undefined && !multiple) {\n // Empty option has 0px height, because it's empty, so need to apply height manually\n return <Option key=\"__empty\" children=\"\" value={emptyValue} className=\"h-8\" />;\n }\n return;\n }, [emptyValue, multiple]);\n\n const initialChildren = React.useMemo(() => {\n // flatten nested arrays from maps and strip conditionals (false/null) so the internals see a flat list\n const children = React.Children.toArray(initChildren).filter((child): child is Select2Child =>\n React.isValidElement(child)\n );\n\n return emptyOption ? [emptyOption, ...children] : children;\n }, [emptyOption, initChildren]);\n\n // refs\n const internalRef = useMergedRef<HTMLButtonElement>(ref);\n const listboxRef = React.useRef<CollectionRef>(null);\n const searchRef = React.useRef<HTMLInputElement>(null);\n const { texts } = useLocalization();\n // align the listbox min width with the width of the input - it should never be smaller\n const dimensions = useBoundingClientRectListener(internalRef);\n\n // state\n const [open, setOpen] = React.useState(false);\n const [value, _setValue] = useControlled<Select2Value>({\n // uncontrolled\n defaultValue,\n // controlled\n onChange,\n value: prop,\n });\n const setValue = ListboxPrimitive.createListboxValueSetter(\n multiple,\n // the state can genuinely become undefined (form reset), but widening `useControlled` to\n // `Select2Value | undefined` would require onChange to accept `undefined` — a breaking API change\n _setValue as React.Dispatch<React.SetStateAction<Select2Value | undefined>>\n );\n const [validationError, setValidationError] = React.useState<Error | undefined>();\n const [shouldPauseHoverState, setShouldPauseHoverState] = useIsHoverStatePaused();\n\n const { flattenedChildren, filteredChildren, searchQuery, setSearchQuery } = useChildren({\n children: initialChildren,\n emptyValue,\n multiple,\n open,\n setValue,\n value,\n });\n\n // context\n const context = {\n disabled,\n highlighted,\n invalid,\n listboxRef,\n multiple,\n onCreate,\n onDelete,\n onEdit,\n open,\n readOnly,\n ref: internalRef,\n searchQuery,\n searchRef,\n setOpen,\n setSearchQuery,\n setValidationError,\n setValue,\n shouldPauseHoverState,\n setShouldPauseHoverState,\n tags,\n fontSize,\n validationError,\n value,\n createDialog,\n createTriggerText,\n };\n\n const hasInlineCreation = onCreate && !createDialog;\n const hasSearch = flattenedChildren.length > 5 || hasInlineCreation;\n const visibleChildren = searchQuery === '' ? initialChildren : filteredChildren;\n const selectOptions =\n searchQuery === ''\n ? flattenedChildren.map(child => child.props.value)\n : filteredChildren.flatMap(child => {\n if (isGroup(child)) {\n return Array.isArray(child.props.children)\n ? child.props.children.map(subChild => subChild.props.value)\n : [];\n }\n return child.props.value;\n });\n\n // support typeahead functionality when search isn't available\n const queryTimeoutRef = React.useRef('');\n\n const typeahead = debounce(function () {\n if (!queryTimeoutRef.current) {\n return;\n }\n\n // match against the flattened list — selectOptions is flattened too, so indices\n // stay aligned when groups are present, and group members can be matched\n const matchedValueIndex = flattenedChildren.findIndex(child => filterOption(child, queryTimeoutRef.current));\n\n if (matchedValueIndex > -1 && selectOptions[matchedValueIndex] !== undefined) {\n setValue(selectOptions[matchedValueIndex]);\n }\n\n queryTimeoutRef.current = '';\n }, 200);\n\n const setValueIfMatched = (query: string) => {\n queryTimeoutRef.current = queryTimeoutRef.current + query;\n typeahead();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (open) {\n event.preventDefault();\n } else if (isElementInsideTable3OrReport(event.currentTarget) && isAriaDirectionKey(event)) {\n return;\n } else if (!event.ctrlKey && !event.metaKey && (event.key === 'ArrowDown' || /^[a-z0-9]$/i.test(event.key))) {\n setOpen(true);\n\n if (!hasSearch) {\n setValueIfMatched(event.key);\n }\n }\n\n // Collect the first character when opening with keyboard (when user starts typing while focused on a trigger)\n if (hasSearch && /^[a-z0-9]$/i.test(event.key)) {\n setSearchQuery(prev => prev + event.key);\n }\n\n // the focus should always remain on the input, so we forward events on to the listbox\n listboxRef.current?.dispatchEvent(createCustomKeyboardEvent(event));\n };\n\n const shouldFocusNextRef = React.useRef<number | undefined>(undefined);\n\n const handleHorizontalNavigation = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (isElementInsideTable3OrReport(internalRef.current)) {\n const isTriggeredFromPopover = event.target instanceof Node && event.currentTarget.contains?.(event.target);\n\n if ((event.key === 'ArrowLeft' || event.key === 'ArrowRight') && isTriggeredFromPopover) {\n event.preventDefault(); // prevents scrolling horizontally in the table on arrow left/right.\n event.stopPropagation();\n\n shouldFocusNextRef.current = event.key === 'ArrowLeft' ? -1 : +1;\n setOpen(false);\n }\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n if (isAriaDirectionKey(event)) {\n setShouldPauseHoverState(true);\n return;\n }\n\n if (event.key === 'Tab') {\n shouldFocusNextRef.current = event.shiftKey ? -1 : +1;\n setOpen(false);\n return;\n }\n\n // Handle Escape key to close the select without closing the parent dialog\n if (!hasSearch && event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n setOpen(false);\n return;\n }\n\n // support typeahead to set the value by typing its text\n if (!hasSearch && /^[a-z0-9]$/i.test(event.key)) {\n setValueIfMatched(event.key);\n return;\n }\n };\n\n const handleOpenChange = (open: boolean, details: { reason: string; event: Event }) => {\n if (!open && (details.reason === 'outside-press' || details.reason === 'focus-out')) {\n otherProps.onBlur?.(details.event as unknown as React.FocusEvent<HTMLButtonElement>);\n }\n setOpen(open);\n };\n\n const handleFinalFocus = (closeType: 'mouse' | 'touch' | 'keyboard' | 'pen' | '') => {\n if (shouldFocusNextRef.current !== undefined) {\n const el = getNextFocussableElement(internalRef.current, shouldFocusNextRef.current);\n shouldFocusNextRef.current = undefined;\n return el || false;\n }\n if (closeType === 'mouse' || closeType === 'touch') {\n // Don't steal focus — the clicked element receives it naturally.\n return false;\n }\n return true;\n };\n const areAllSelected = Array.isArray(value) && selectOptions.every(option => value.includes(option));\n\n const selectAllText = React.useMemo(() => {\n if (searchQuery === '') {\n if (areAllSelected) {\n return texts.select2.deselectAll;\n }\n return texts.select2.selectAll;\n }\n\n if (areAllSelected) {\n return texts.select2.deselectAllResults;\n }\n\n return texts.select2.selectAllResults;\n }, [areAllSelected, searchQuery]);\n\n const selectAll = () => {\n if (!Array.isArray(value) || value.length === 0) {\n setValue(selectOptions);\n } else {\n // array of all available options which are not selected\n const preselectedValues = selectOptions.filter(option => !value.includes(option));\n setValue([...value, ...preselectedValues]);\n }\n };\n\n const deselectAll = () => {\n if (searchQuery === '') {\n setValue([]);\n } else {\n const nextValue = Array.isArray(value) && value.filter(subValue => !selectOptions.includes(subValue));\n setValue(nextValue);\n }\n };\n\n const className = cn(\n 'rounded border border-gray-300 bg-white py-1.5 shadow-md',\n {\n 'focus-within:yt-focus': !hasSearch,\n 'outline-none': hasSearch,\n },\n createCollectionClassName()\n );\n\n return (\n <Select2Context.Provider value={context}>\n <PopoverPrimitive.Root open={open} onOpenChange={handleOpenChange}>\n <PopoverPrimitive.Trigger\n render={\n <Trigger\n {...otherProps}\n aria-haspopup=\"listbox\"\n aria-multiselectable={multiple}\n // oxlint-disable-next-line taco/data-taco-kebab-case -- established public selector API; renaming it is a breaking change\n data-taco=\"Select2\"\n emptyValue={emptyValue}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n ref={internalRef}>\n {flattenedChildren}\n </Trigger>\n }\n />\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Positioner\n align=\"start\"\n sideOffset={4}\n collisionAvoidance={{\n side: 'flip',\n fallbackAxisSide: 'none',\n }}>\n <PopoverPrimitive.Popup\n className={className}\n style={{ minWidth: dimensions?.width ? `${dimensions.width}px` : undefined }}\n initialFocus={hasSearch ? searchRef : true}\n finalFocus={handleFinalFocus}\n onKeyDown={handleHorizontalNavigation}\n tabIndex={-1}>\n {hasSearch ? (\n <>\n <Search\n placeholder={hasInlineCreation ? texts.select2.searchOrCreate : texts.select2.search}\n ref={searchRef}\n />\n {multiple && selectOptions.length > 1 && (\n <>\n <LegacyButton\n className=\"!justify-start\"\n appearance=\"discrete\"\n onClick={areAllSelected ? deselectAll : selectAll}>\n {selectAllText}\n </LegacyButton>\n <div className=\"mx-3 rounded border-t border-gray-200\" />\n </>\n )}\n </>\n ) : null}\n {loading ? (\n <span\n className={cn(\n 'flex items-center italic text-gray-700',\n fontSize && FONT_SIZE_CLASSNAME[fontSize]\n )}>\n <span>\n <Spinner\n delay={0}\n className={cn('ml-3 mr-2 mt-1.5 h-5 w-5', {\n '!mt-1 !h-3.5 !w-3.5': fontSize === FontSizes.small,\n '!h-4 !w-4': fontSize === FontSizes.medium,\n '!h-5 !w-5': fontSize === FontSizes.large,\n })}\n />\n </span>\n <span>{texts.listbox.loading}</span>\n </span>\n ) : flattenedChildren.length <= 0 && !onCreate ? (\n <div className=\"-mt-0.5 flex h-8 items-center px-2 text-gray-700\" role=\"presentation\">\n {texts.listbox.empty}\n </div>\n ) : (\n <ListboxPrimitive.Root\n className=\"flex flex-col gap-0.5 focus-visible:outline-none\"\n customSelector=\":scope > button\"\n disabled={disabled}\n multiple={multiple}\n onKeyDown={handleListboxKeyDown}\n readOnly={readOnly}\n ref={listboxRef}\n setValue={setValue}\n value={value}>\n <Collection>{visibleChildren}</Collection>\n {onCreate ? <Create onCreate={onCreate} options={flattenedChildren} /> : null}\n </ListboxPrimitive.Root>\n )}\n </PopoverPrimitive.Popup>\n </PopoverPrimitive.Positioner>\n </PopoverPrimitive.Portal>\n <ControlledHiddenField\n emptyValue={emptyValue}\n multiple={multiple || tags}\n name={name}\n options={flattenedChildren.map(child => child.props.value)}\n parentRef={internalRef}\n setValue={setValue}\n value={value}\n />\n </PopoverPrimitive.Root>\n </Select2Context.Provider>\n );\n}\n\nexport const Select2 = Object.assign(fixedForwardRef(_Select2Inner), {\n Option,\n Group,\n Title,\n displayName: 'Select2',\n});\n\ntype ControlledHiddenFieldProps = {\n emptyValue: ListboxPrimitive.Listbox2OptionValue | undefined;\n multiple: boolean;\n name: string | undefined;\n options: Select2OptionValue[];\n parentRef: React.RefObject<HTMLButtonElement>;\n setValue: (nextValue: Select2Value | undefined) => void;\n value: Select2Value | undefined;\n};\n\nconst ControlledHiddenField = (props: ControlledHiddenFieldProps) => {\n const { emptyValue, multiple, name, options, parentRef, value, setValue } = props;\n const isFormControl = useIsFormControl(parentRef, () => setValue(multiple ? [] : undefined));\n\n let bubbleValue;\n\n if (isFormControl) {\n if (value !== undefined) {\n if (multiple) {\n bubbleValue = Array.isArray(value) ? value.map(String) : [value === null ? '' : String(value)];\n } else {\n bubbleValue = value === null ? '' : String(value);\n }\n }\n\n return (\n <BubbleSelect aria-hidden key={String(bubbleValue)} multiple={multiple} name={name} tabIndex={-1} value={bubbleValue}>\n {emptyValue === undefined ? null : <option value={emptyValue === null ? '' : String(emptyValue)} />}\n {options.map(option => (\n <option key={String(option)} value={String(option)} />\n ))}\n </BubbleSelect>\n );\n }\n\n return null;\n};\n\nexport type {\n Select2Texts,\n Select2Child,\n Select2GroupProps,\n Select2OptionProps,\n Select2OptionValue,\n Select2Value,\n Select2Props,\n Select2TitleProps,\n Select2Children,\n};\n"],"names":["React","ListboxPrimitive.createListboxValueSetter","open","PopoverPrimitive","ListboxPrimitive.Root"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.cjs","sources":["../../../../src/components/Select2/components/Collection.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ScrollArea } from '
|
|
1
|
+
{"version":3,"file":"Collection.cjs","sources":["../../../../src/components/Select2/components/Collection.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ScrollArea } from '@/components/ScrollArea/ScrollArea';\n\nimport type { Select2GroupProps } from './Group';\nimport type { Select2OptionProps } from './Option';\n\nexport type Select2CollectionProps = {\n children: Array<React.ReactElement<Select2OptionProps> | React.ReactElement<Select2GroupProps>>;\n};\n\nexport const Collection = (props: Select2CollectionProps) => {\n const { children } = props;\n\n // max-h-[11.5rem] = is 5.5 options + spacing between them. Option height is 2rem, spacing 0.125. In total it's 11.5.\n return <ScrollArea className=\"flex max-h-[11.5rem] w-full flex-col gap-y-0.5 px-1.5\">{children}</ScrollArea>;\n};\n"],"names":["ScrollArea"],"mappings":";;;;AAWO,MAAM,aAAa,CAAC,UAAkC;AACzD,QAAM,EAAE,aAAa;AAGrB,SAAO,sBAAA,cAACA,WAAAA,YAAA,EAAW,WAAU,wDAAA,GAAyD,QAAS;AACnG;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collection.js","sources":["../../../../src/components/Select2/components/Collection.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ScrollArea } from '
|
|
1
|
+
{"version":3,"file":"Collection.js","sources":["../../../../src/components/Select2/components/Collection.tsx"],"sourcesContent":["import React from 'react';\n\nimport { ScrollArea } from '@/components/ScrollArea/ScrollArea';\n\nimport type { Select2GroupProps } from './Group';\nimport type { Select2OptionProps } from './Option';\n\nexport type Select2CollectionProps = {\n children: Array<React.ReactElement<Select2OptionProps> | React.ReactElement<Select2GroupProps>>;\n};\n\nexport const Collection = (props: Select2CollectionProps) => {\n const { children } = props;\n\n // max-h-[11.5rem] = is 5.5 options + spacing between them. Option height is 2rem, spacing 0.125. In total it's 11.5.\n return <ScrollArea className=\"flex max-h-[11.5rem] w-full flex-col gap-y-0.5 px-1.5\">{children}</ScrollArea>;\n};\n"],"names":["React"],"mappings":";;AAWO,MAAM,aAAa,CAAC,UAAkC;AACzD,QAAM,EAAE,aAAa;AAGrB,SAAOA,+BAAA,cAAC,YAAA,EAAW,WAAU,wDAAA,GAAyD,QAAS;AACnG;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.cjs","sources":["../../../../src/components/Select2/components/Context.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { CollectionRef } from '
|
|
1
|
+
{"version":3,"file":"Context.cjs","sources":["../../../../src/components/Select2/components/Context.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { CollectionRef } from '@/primitives/Collection/Collection';\nimport type { FontSize } from '@/types';\n\nimport type {\n Select2CreateHandler,\n Select2DeleteHandler,\n Select2EditHandler,\n Select2OptionValue,\n Select2Value,\n Select2CreateDialogRenderer,\n} from '../types';\n\nexport type Select2ContextProps = {\n createDialog?: Select2CreateDialogRenderer;\n createTriggerText?: string;\n disabled: boolean;\n highlighted: boolean;\n invalid: boolean;\n listboxRef: React.RefObject<CollectionRef | null>;\n multiple: boolean;\n onCreate?: Select2CreateHandler;\n onDelete?: Select2DeleteHandler;\n onEdit?: Select2EditHandler;\n open: boolean;\n readOnly: boolean;\n ref: React.RefObject<HTMLButtonElement | null>;\n searchQuery: string;\n searchRef?: React.RefObject<HTMLInputElement | null>;\n setOpen: (open: boolean) => void;\n setSearchQuery: (value: string) => void;\n setValidationError: (error: Error | undefined) => void;\n setValue: (value: Select2OptionValue) => void;\n shouldPauseHoverState: boolean;\n setShouldPauseHoverState: (pause: boolean) => void;\n tags?: boolean;\n validationError?: Error;\n value?: Select2Value;\n fontSize?: FontSize;\n};\n\nexport const Select2Context = React.createContext({} as Select2ContextProps);\nexport const useSelect2Context = () => React.useContext(Select2Context);\n"],"names":[],"mappings":";;;AA0CO,MAAM,iBAAiB,MAAM,cAAc,CAAA,CAAyB;AACpE,MAAM,oBAAoB,MAAM,MAAM,WAAW,cAAc;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.js","sources":["../../../../src/components/Select2/components/Context.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { CollectionRef } from '
|
|
1
|
+
{"version":3,"file":"Context.js","sources":["../../../../src/components/Select2/components/Context.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { CollectionRef } from '@/primitives/Collection/Collection';\nimport type { FontSize } from '@/types';\n\nimport type {\n Select2CreateHandler,\n Select2DeleteHandler,\n Select2EditHandler,\n Select2OptionValue,\n Select2Value,\n Select2CreateDialogRenderer,\n} from '../types';\n\nexport type Select2ContextProps = {\n createDialog?: Select2CreateDialogRenderer;\n createTriggerText?: string;\n disabled: boolean;\n highlighted: boolean;\n invalid: boolean;\n listboxRef: React.RefObject<CollectionRef | null>;\n multiple: boolean;\n onCreate?: Select2CreateHandler;\n onDelete?: Select2DeleteHandler;\n onEdit?: Select2EditHandler;\n open: boolean;\n readOnly: boolean;\n ref: React.RefObject<HTMLButtonElement | null>;\n searchQuery: string;\n searchRef?: React.RefObject<HTMLInputElement | null>;\n setOpen: (open: boolean) => void;\n setSearchQuery: (value: string) => void;\n setValidationError: (error: Error | undefined) => void;\n setValue: (value: Select2OptionValue) => void;\n shouldPauseHoverState: boolean;\n setShouldPauseHoverState: (pause: boolean) => void;\n tags?: boolean;\n validationError?: Error;\n value?: Select2Value;\n fontSize?: FontSize;\n};\n\nexport const Select2Context = React.createContext({} as Select2ContextProps);\nexport const useSelect2Context = () => React.useContext(Select2Context);\n"],"names":["React"],"mappings":";AA0CO,MAAM,iBAAiBA,eAAM,cAAc,CAAA,CAAyB;AACpE,MAAM,oBAAoB,MAAMA,eAAM,WAAW,cAAc;"}
|
|
@@ -4,12 +4,12 @@ const cn = require("clsx");
|
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const aria = require("../../../utils/aria.cjs");
|
|
6
6
|
const tailwind = require("../../../utils/tailwind.cjs");
|
|
7
|
-
const Icon = require("../../Icon/Icon.cjs");
|
|
8
|
-
const Button = require("../../LegacyComponents/Button/Button.cjs");
|
|
9
|
-
const Localization = require("../../Provider/Localization.cjs");
|
|
10
|
-
const Tag = require("../../Tag/Tag.cjs");
|
|
11
7
|
const utilities = require("../utilities.cjs");
|
|
12
8
|
const Context = require("./Context.cjs");
|
|
9
|
+
const Localization = require("../../Provider/Localization.cjs");
|
|
10
|
+
const Button = require("../../LegacyComponents/Button/Button.cjs");
|
|
11
|
+
const Icon = require("../../Icon/Icon.cjs");
|
|
12
|
+
const Tag = require("../../Tag/Tag.cjs");
|
|
13
13
|
const getNextColor = (options) => {
|
|
14
14
|
let occurrences = {};
|
|
15
15
|
tailwind.AVAILABLE_COLORS.filter((color) => color !== "transparent").forEach((color) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Create.cjs","sources":["../../../../src/components/Select2/components/Create.tsx"],"sourcesContent":["import cn from 'clsx';\nimport React from 'react';\n\nimport type {
|
|
1
|
+
{"version":3,"file":"Create.cjs","sources":["../../../../src/components/Select2/components/Create.tsx"],"sourcesContent":["import cn from 'clsx';\nimport React from 'react';\n\nimport type { DialogProps } from '@/components';\nimport { Icon, LegacyButton, Tag, useLocalization } from '@/components';\nimport type { Color } from '@/types';\nimport { isAriaSelectionKey } from '@/utils/aria';\nimport { AVAILABLE_COLORS } from '@/utils/tailwind';\n\nimport type { Select2CreateHandler } from '../types';\nimport { createOptionClassName } from '../utilities';\n\nimport { useSelect2Context } from './Context';\nimport type { Select2OptionProps } from './Option';\n\nexport type CreateProps = {\n onCreate: Select2CreateHandler;\n options: React.ReactElement<Select2OptionProps>[];\n};\n\nexport const getNextColor = (options: React.ReactElement<Select2OptionProps>[]): Color | undefined => {\n let occurrences = {} as Record<Color, number>;\n AVAILABLE_COLORS.filter(color => color !== 'transparent').forEach((color: Color) => {\n occurrences = { ...occurrences, [color]: 0 };\n });\n\n options.reduce((occurrences, option) => {\n if (option.props.color) {\n occurrences[option.props.color] = occurrences[option.props.color] ? occurrences[option.props.color] + 1 : 1;\n }\n return occurrences;\n }, occurrences);\n\n const colors = Object.keys(occurrences);\n\n if (colors.length) {\n return colors.sort((a, b) => occurrences[a as Color] - occurrences[b as Color])[0] as Color;\n }\n\n return undefined;\n};\n\nexport const Create = (props: CreateProps) => {\n const { onCreate: handleCreate, options } = props;\n const { multiple, searchQuery, setOpen, setSearchQuery, setValidationError, setValue, createDialog, createTriggerText } =\n useSelect2Context();\n const { texts } = useLocalization();\n\n // determine what the next color tag should be based on color occurences\n const nextColor = React.useMemo(() => getNextColor(options), [options]);\n\n const onCreateDialogClose = React.useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n if (!createDialog && !searchQuery) {\n return null;\n }\n\n const create = async (value?: string | unknown) => {\n try {\n const item = await handleCreate(value, nextColor);\n setValue(item.value);\n\n if (multiple) {\n setSearchQuery('');\n } else {\n setOpen(false);\n }\n } catch (error) {\n setValidationError(error as Error);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (isAriaSelectionKey(event)) {\n event.currentTarget.click();\n }\n };\n\n const className = cn(createOptionClassName(), {\n 'ml-1.5 !w-[calc(100%_-_theme(spacing.3))]': !createDialog,\n '!-mb-1.5 h-9 border-t border-gray-300 px-4 py-2.5 leading-normal': !!createDialog,\n });\n\n const creationOptions = createDialog\n ? {\n dialog: (props: Partial<DialogProps>) =>\n createDialog({ ...props, onClose: onCreateDialogClose }, searchQuery, create),\n }\n : {\n onClick: () => create(searchQuery),\n };\n\n const createText = createTriggerText || texts.select2.create;\n\n return (\n <LegacyButton\n className={className}\n {...creationOptions}\n onKeyDown={handleKeyDown}\n appearance={createDialog ? 'discrete' : 'default'}>\n <span className=\"flex items-center gap-1.5\">\n {createDialog ? (\n <>\n <Icon className=\"text-xs\" name=\"circle-plus\" /> {createText}\n </>\n ) : (\n <>\n {createText}\n <Tag color={nextColor} className=\"cursor-pointer\">\n {searchQuery}\n </Tag>\n </>\n )}\n </span>\n </LegacyButton>\n );\n};\n"],"names":["AVAILABLE_COLORS","occurrences","useSelect2Context","useLocalization","isAriaSelectionKey","createOptionClassName","props","LegacyButton","Icon","Tag"],"mappings":";;;;;;;;;;;;AAoBO,MAAM,eAAe,CAAC,YAAyE;AAClG,MAAI,cAAc,CAAA;AAClBA,4BAAiB,OAAO,CAAA,UAAS,UAAU,aAAa,EAAE,QAAQ,CAAC,UAAiB;AAChF,kBAAc,EAAE,GAAG,aAAa,CAAC,KAAK,GAAG,EAAA;AAAA,EAC7C,CAAC;AAED,UAAQ,OAAO,CAACC,cAAa,WAAW;AACpC,QAAI,OAAO,MAAM,OAAO;AACpBA,mBAAY,OAAO,MAAM,KAAK,IAAIA,aAAY,OAAO,MAAM,KAAK,IAAIA,aAAY,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IAC9G;AACA,WAAOA;AAAAA,EACX,GAAG,WAAW;AAEd,QAAM,SAAS,OAAO,KAAK,WAAW;AAEtC,MAAI,OAAO,QAAQ;AACf,WAAO,OAAO,KAAK,CAAC,GAAG,MAAM,YAAY,CAAU,IAAI,YAAY,CAAU,CAAC,EAAE,CAAC;AAAA,EACrF;AAEA,SAAO;AACX;AAEO,MAAM,SAAS,CAAC,UAAuB;AAC1C,QAAM,EAAE,UAAU,cAAc,QAAA,IAAY;AAC5C,QAAM,EAAE,UAAU,aAAa,SAAS,gBAAgB,oBAAoB,UAAU,cAAc,kBAAA,IAChGC,0BAAA;AACJ,QAAM,EAAE,MAAA,IAAUC,6BAAA;AAGlB,QAAM,YAAY,MAAM,QAAQ,MAAM,aAAa,OAAO,GAAG,CAAC,OAAO,CAAC;AAEtE,QAAM,sBAAsB,MAAM,YAAY,MAAM;AAChD,YAAQ,KAAK;AAAA,EACjB,GAAG,CAAC,OAAO,CAAC;AAEZ,MAAI,CAAC,gBAAgB,CAAC,aAAa;AAC/B,WAAO;AAAA,EACX;AAEA,QAAM,SAAS,OAAO,UAA6B;AAC/C,QAAI;AACA,YAAM,OAAO,MAAM,aAAa,OAAO,SAAS;AAChD,eAAS,KAAK,KAAK;AAEnB,UAAI,UAAU;AACV,uBAAe,EAAE;AAAA,MACrB,OAAO;AACH,gBAAQ,KAAK;AAAA,MACjB;AAAA,IACJ,SAAS,OAAO;AACZ,yBAAmB,KAAc;AAAA,IACrC;AAAA,EACJ;AAEA,QAAM,gBAAgB,CAAC,UAAkD;AACrE,QAAIC,KAAAA,mBAAmB,KAAK,GAAG;AAC3B,YAAM,cAAc,MAAA;AAAA,IACxB;AAAA,EACJ;AAEA,QAAM,YAAY,GAAGC,UAAAA,yBAAyB;AAAA,IAC1C,6CAA6C,CAAC;AAAA,IAC9C,oEAAoE,CAAC,CAAC;AAAA,EAAA,CACzE;AAED,QAAM,kBAAkB,eAClB;AAAA,IACI,QAAQ,CAACC,WACL,aAAa,EAAE,GAAGA,QAAO,SAAS,uBAAuB,aAAa,MAAM;AAAA,EAAA,IAEpF;AAAA,IACI,SAAS,MAAM,OAAO,WAAW;AAAA,EAAA;AAG3C,QAAM,aAAa,qBAAqB,MAAM,QAAQ;AAEtD,SACI,sBAAA;AAAA,IAACC,OAAAA;AAAAA,IAAA;AAAA,MACG;AAAA,MACC,GAAG;AAAA,MACJ,WAAW;AAAA,MACX,YAAY,eAAe,aAAa;AAAA,IAAA;AAAA,IACxC,sBAAA,cAAC,QAAA,EAAK,WAAU,+BACX,eACG,sBAAA,cAAA,MAAA,UAAA,MACI,sBAAA,cAACC,KAAAA,MAAA,EAAK,WAAU,WAAU,MAAK,cAAA,CAAc,GAAE,KAAE,UACrD,IAEA,sBAAA,cAAA,MAAA,UAAA,MACK,YACD,sBAAA,cAACC,IAAAA,KAAA,EAAI,OAAO,WAAW,WAAU,iBAAA,GAC5B,WACL,CACJ,CAER;AAAA,EAAA;AAGZ;;;"}
|
|
@@ -2,12 +2,12 @@ import cn from "clsx";
|
|
|
2
2
|
import React__default from "react";
|
|
3
3
|
import { isAriaSelectionKey } from "../../../utils/aria.js";
|
|
4
4
|
import { AVAILABLE_COLORS } from "../../../utils/tailwind.js";
|
|
5
|
-
import { Icon } from "../../Icon/Icon.js";
|
|
6
|
-
import { LegacyButton } from "../../LegacyComponents/Button/Button.js";
|
|
7
|
-
import { useLocalization } from "../../Provider/Localization.js";
|
|
8
|
-
import { Tag } from "../../Tag/Tag.js";
|
|
9
5
|
import { createOptionClassName } from "../utilities.js";
|
|
10
6
|
import { useSelect2Context } from "./Context.js";
|
|
7
|
+
import { useLocalization } from "../../Provider/Localization.js";
|
|
8
|
+
import { LegacyButton } from "../../LegacyComponents/Button/Button.js";
|
|
9
|
+
import { Icon } from "../../Icon/Icon.js";
|
|
10
|
+
import { Tag } from "../../Tag/Tag.js";
|
|
11
11
|
const getNextColor = (options) => {
|
|
12
12
|
let occurrences = {};
|
|
13
13
|
AVAILABLE_COLORS.filter((color) => color !== "transparent").forEach((color) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Create.js","sources":["../../../../src/components/Select2/components/Create.tsx"],"sourcesContent":["import cn from 'clsx';\nimport React from 'react';\n\nimport type {
|
|
1
|
+
{"version":3,"file":"Create.js","sources":["../../../../src/components/Select2/components/Create.tsx"],"sourcesContent":["import cn from 'clsx';\nimport React from 'react';\n\nimport type { DialogProps } from '@/components';\nimport { Icon, LegacyButton, Tag, useLocalization } from '@/components';\nimport type { Color } from '@/types';\nimport { isAriaSelectionKey } from '@/utils/aria';\nimport { AVAILABLE_COLORS } from '@/utils/tailwind';\n\nimport type { Select2CreateHandler } from '../types';\nimport { createOptionClassName } from '../utilities';\n\nimport { useSelect2Context } from './Context';\nimport type { Select2OptionProps } from './Option';\n\nexport type CreateProps = {\n onCreate: Select2CreateHandler;\n options: React.ReactElement<Select2OptionProps>[];\n};\n\nexport const getNextColor = (options: React.ReactElement<Select2OptionProps>[]): Color | undefined => {\n let occurrences = {} as Record<Color, number>;\n AVAILABLE_COLORS.filter(color => color !== 'transparent').forEach((color: Color) => {\n occurrences = { ...occurrences, [color]: 0 };\n });\n\n options.reduce((occurrences, option) => {\n if (option.props.color) {\n occurrences[option.props.color] = occurrences[option.props.color] ? occurrences[option.props.color] + 1 : 1;\n }\n return occurrences;\n }, occurrences);\n\n const colors = Object.keys(occurrences);\n\n if (colors.length) {\n return colors.sort((a, b) => occurrences[a as Color] - occurrences[b as Color])[0] as Color;\n }\n\n return undefined;\n};\n\nexport const Create = (props: CreateProps) => {\n const { onCreate: handleCreate, options } = props;\n const { multiple, searchQuery, setOpen, setSearchQuery, setValidationError, setValue, createDialog, createTriggerText } =\n useSelect2Context();\n const { texts } = useLocalization();\n\n // determine what the next color tag should be based on color occurences\n const nextColor = React.useMemo(() => getNextColor(options), [options]);\n\n const onCreateDialogClose = React.useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n\n if (!createDialog && !searchQuery) {\n return null;\n }\n\n const create = async (value?: string | unknown) => {\n try {\n const item = await handleCreate(value, nextColor);\n setValue(item.value);\n\n if (multiple) {\n setSearchQuery('');\n } else {\n setOpen(false);\n }\n } catch (error) {\n setValidationError(error as Error);\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (isAriaSelectionKey(event)) {\n event.currentTarget.click();\n }\n };\n\n const className = cn(createOptionClassName(), {\n 'ml-1.5 !w-[calc(100%_-_theme(spacing.3))]': !createDialog,\n '!-mb-1.5 h-9 border-t border-gray-300 px-4 py-2.5 leading-normal': !!createDialog,\n });\n\n const creationOptions = createDialog\n ? {\n dialog: (props: Partial<DialogProps>) =>\n createDialog({ ...props, onClose: onCreateDialogClose }, searchQuery, create),\n }\n : {\n onClick: () => create(searchQuery),\n };\n\n const createText = createTriggerText || texts.select2.create;\n\n return (\n <LegacyButton\n className={className}\n {...creationOptions}\n onKeyDown={handleKeyDown}\n appearance={createDialog ? 'discrete' : 'default'}>\n <span className=\"flex items-center gap-1.5\">\n {createDialog ? (\n <>\n <Icon className=\"text-xs\" name=\"circle-plus\" /> {createText}\n </>\n ) : (\n <>\n {createText}\n <Tag color={nextColor} className=\"cursor-pointer\">\n {searchQuery}\n </Tag>\n </>\n )}\n </span>\n </LegacyButton>\n );\n};\n"],"names":["occurrences","React","props"],"mappings":";;;;;;;;;;AAoBO,MAAM,eAAe,CAAC,YAAyE;AAClG,MAAI,cAAc,CAAA;AAClB,mBAAiB,OAAO,CAAA,UAAS,UAAU,aAAa,EAAE,QAAQ,CAAC,UAAiB;AAChF,kBAAc,EAAE,GAAG,aAAa,CAAC,KAAK,GAAG,EAAA;AAAA,EAC7C,CAAC;AAED,UAAQ,OAAO,CAACA,cAAa,WAAW;AACpC,QAAI,OAAO,MAAM,OAAO;AACpBA,mBAAY,OAAO,MAAM,KAAK,IAAIA,aAAY,OAAO,MAAM,KAAK,IAAIA,aAAY,OAAO,MAAM,KAAK,IAAI,IAAI;AAAA,IAC9G;AACA,WAAOA;AAAAA,EACX,GAAG,WAAW;AAEd,QAAM,SAAS,OAAO,KAAK,WAAW;AAEtC,MAAI,OAAO,QAAQ;AACf,WAAO,OAAO,KAAK,CAAC,GAAG,MAAM,YAAY,CAAU,IAAI,YAAY,CAAU,CAAC,EAAE,CAAC;AAAA,EACrF;AAEA,SAAO;AACX;AAEO,MAAM,SAAS,CAAC,UAAuB;AAC1C,QAAM,EAAE,UAAU,cAAc,QAAA,IAAY;AAC5C,QAAM,EAAE,UAAU,aAAa,SAAS,gBAAgB,oBAAoB,UAAU,cAAc,kBAAA,IAChG,kBAAA;AACJ,QAAM,EAAE,MAAA,IAAU,gBAAA;AAGlB,QAAM,YAAYC,eAAM,QAAQ,MAAM,aAAa,OAAO,GAAG,CAAC,OAAO,CAAC;AAEtE,QAAM,sBAAsBA,eAAM,YAAY,MAAM;AAChD,YAAQ,KAAK;AAAA,EACjB,GAAG,CAAC,OAAO,CAAC;AAEZ,MAAI,CAAC,gBAAgB,CAAC,aAAa;AAC/B,WAAO;AAAA,EACX;AAEA,QAAM,SAAS,OAAO,UAA6B;AAC/C,QAAI;AACA,YAAM,OAAO,MAAM,aAAa,OAAO,SAAS;AAChD,eAAS,KAAK,KAAK;AAEnB,UAAI,UAAU;AACV,uBAAe,EAAE;AAAA,MACrB,OAAO;AACH,gBAAQ,KAAK;AAAA,MACjB;AAAA,IACJ,SAAS,OAAO;AACZ,yBAAmB,KAAc;AAAA,IACrC;AAAA,EACJ;AAEA,QAAM,gBAAgB,CAAC,UAAkD;AACrE,QAAI,mBAAmB,KAAK,GAAG;AAC3B,YAAM,cAAc,MAAA;AAAA,IACxB;AAAA,EACJ;AAEA,QAAM,YAAY,GAAG,yBAAyB;AAAA,IAC1C,6CAA6C,CAAC;AAAA,IAC9C,oEAAoE,CAAC,CAAC;AAAA,EAAA,CACzE;AAED,QAAM,kBAAkB,eAClB;AAAA,IACI,QAAQ,CAACC,WACL,aAAa,EAAE,GAAGA,QAAO,SAAS,uBAAuB,aAAa,MAAM;AAAA,EAAA,IAEpF;AAAA,IACI,SAAS,MAAM,OAAO,WAAW;AAAA,EAAA;AAG3C,QAAM,aAAa,qBAAqB,MAAM,QAAQ;AAEtD,SACID,+BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACC,GAAG;AAAA,MACJ,WAAW;AAAA,MACX,YAAY,eAAe,aAAa;AAAA,IAAA;AAAA,IACxCA,+BAAA,cAAC,QAAA,EAAK,WAAU,+BACX,eACGA,+BAAA,cAAAA,eAAA,UAAA,MACIA,+BAAA,cAAC,MAAA,EAAK,WAAU,WAAU,MAAK,cAAA,CAAc,GAAE,KAAE,UACrD,IAEAA,+BAAA,cAAAA,eAAA,UAAA,MACK,YACDA,+BAAA,cAAC,KAAA,EAAI,OAAO,WAAW,WAAU,iBAAA,GAC5B,WACL,CACJ,CAER;AAAA,EAAA;AAGZ;"}
|
|
@@ -3,14 +3,14 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const cn = require("clsx");
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const tailwind = require("../../../utils/tailwind.cjs");
|
|
6
|
+
const Context = require("./Context.cjs");
|
|
7
|
+
const Localization = require("../../Provider/Localization.cjs");
|
|
8
|
+
const Popover = require("../../Popover/Popover.cjs");
|
|
6
9
|
const Field = require("../../Field/Field.cjs");
|
|
7
|
-
const Icon = require("../../Icon/Icon.cjs");
|
|
8
|
-
const Inline = require("../../Inline/Inline.cjs");
|
|
9
10
|
const Input = require("../../Input/Input.cjs");
|
|
11
|
+
const Inline = require("../../Inline/Inline.cjs");
|
|
10
12
|
const Button = require("../../LegacyComponents/Button/Button.cjs");
|
|
11
|
-
const
|
|
12
|
-
const Localization = require("../../Provider/Localization.cjs");
|
|
13
|
-
const Context = require("./Context.cjs");
|
|
13
|
+
const Icon = require("../../Icon/Icon.cjs");
|
|
14
14
|
const EditPopover = (props) => {
|
|
15
15
|
const { color: initialColor, text: initialName, value, ...popoverProps } = props;
|
|
16
16
|
const ref = React.useRef(null);
|