@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":"Link.cjs","sources":["../../../../src/components/List/components/Link.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Icon } from '
|
|
1
|
+
{"version":3,"file":"Link.cjs","sources":["../../../../src/components/List/components/Link.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Icon } from '@/components';\n\nimport type { ComposableListItemProps } from './Item';\nimport { Item } from './Item';\n\nexport type ListLinkProps = ComposableListItemProps<'a'> & {\n href: string;\n};\n\nexport const Link = React.forwardRef<HTMLAnchorElement, ListLinkProps>(function Link(props, ref) {\n const isExternal = props.href.startsWith('http');\n const control = <Icon name={isExternal ? 'link-external' : 'chevron-right'} />;\n\n if (isExternal) {\n return <Item {...props} as=\"a\" target=\"_blank\" rel=\"noopener noreferrer\" control={control} ref={ref} />;\n }\n\n return <Item {...props} as=\"a\" control={control} ref={ref} />;\n});\n"],"names":["Link","Icon","Item"],"mappings":";;;;;AAWO,MAAM,OAAO,MAAM,WAA6C,SAASA,MAAK,OAAO,KAAK;AAC7F,QAAM,aAAa,MAAM,KAAK,WAAW,MAAM;AAC/C,QAAM,UAAU,sBAAA,cAACC,KAAAA,MAAA,EAAK,MAAM,aAAa,kBAAkB,iBAAiB;AAE5E,MAAI,YAAY;AACZ,WAAO,sBAAA,cAACC,KAAAA,MAAA,EAAM,GAAG,OAAO,IAAG,KAAI,QAAO,UAAS,KAAI,uBAAsB,SAAkB,IAAA,CAAU;AAAA,EACzG;AAEA,6CAAQA,KAAAA,MAAA,EAAM,GAAG,OAAO,IAAG,KAAI,SAAkB,KAAU;AAC/D,CAAC;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React__default from "react";
|
|
2
|
-
import { Icon } from "../../Icon/Icon.js";
|
|
3
2
|
import { Item } from "./Item.js";
|
|
3
|
+
import { Icon } from "../../Icon/Icon.js";
|
|
4
4
|
const Link = React__default.forwardRef(function Link2(props, ref) {
|
|
5
5
|
const isExternal = props.href.startsWith("http");
|
|
6
6
|
const control = /* @__PURE__ */ React__default.createElement(Icon, { name: isExternal ? "link-external" : "chevron-right" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.js","sources":["../../../../src/components/List/components/Link.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Icon } from '
|
|
1
|
+
{"version":3,"file":"Link.js","sources":["../../../../src/components/List/components/Link.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Icon } from '@/components';\n\nimport type { ComposableListItemProps } from './Item';\nimport { Item } from './Item';\n\nexport type ListLinkProps = ComposableListItemProps<'a'> & {\n href: string;\n};\n\nexport const Link = React.forwardRef<HTMLAnchorElement, ListLinkProps>(function Link(props, ref) {\n const isExternal = props.href.startsWith('http');\n const control = <Icon name={isExternal ? 'link-external' : 'chevron-right'} />;\n\n if (isExternal) {\n return <Item {...props} as=\"a\" target=\"_blank\" rel=\"noopener noreferrer\" control={control} ref={ref} />;\n }\n\n return <Item {...props} as=\"a\" control={control} ref={ref} />;\n});\n"],"names":["React","Link"],"mappings":";;;AAWO,MAAM,OAAOA,eAAM,WAA6C,SAASC,MAAK,OAAO,KAAK;AAC7F,QAAM,aAAa,MAAM,KAAK,WAAW,MAAM;AAC/C,QAAM,UAAUD,+BAAA,cAAC,MAAA,EAAK,MAAM,aAAa,kBAAkB,iBAAiB;AAE5E,MAAI,YAAY;AACZ,WAAOA,+BAAA,cAAC,MAAA,EAAM,GAAG,OAAO,IAAG,KAAI,QAAO,UAAS,KAAI,uBAAsB,SAAkB,IAAA,CAAU;AAAA,EACzG;AAEA,sDAAQ,MAAA,EAAM,GAAG,OAAO,IAAG,KAAI,SAAkB,KAAU;AAC/D,CAAC;"}
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const cn = require("clsx");
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const useControlled = require("../../../hooks/useControlled.cjs");
|
|
6
|
-
const Checkbox$1 = require("../../Checkbox/Checkbox.cjs");
|
|
7
|
-
const Switch$1 = require("../../Switch/Switch.cjs");
|
|
8
6
|
const Item = require("./Item.cjs");
|
|
7
|
+
const Switch$1 = require("../../Switch/Switch.cjs");
|
|
8
|
+
const Checkbox$1 = require("../../Checkbox/Checkbox.cjs");
|
|
9
9
|
const ToggleItem = React.forwardRef(function Toggle(props, ref) {
|
|
10
10
|
const { controlRef, onToggle, ...attributes } = props;
|
|
11
11
|
function handleClick(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toggle.cjs","sources":["../../../../src/components/List/components/Toggle.tsx"],"sourcesContent":["import cn from 'clsx';\nimport React from 'react';\n\nimport
|
|
1
|
+
{"version":3,"file":"Toggle.cjs","sources":["../../../../src/components/List/components/Toggle.tsx"],"sourcesContent":["import cn from 'clsx';\nimport React from 'react';\n\nimport type { ControlledCheckboxProps, ControlledSwitchProps } from '@/components';\nimport { Checkbox as TacoCheckbox, Switch as TacoSwitch } from '@/components';\nimport { useControlled } from '@/hooks/useControlled';\n\nimport type { ComposableListItemProps } from './Item';\nimport { Item } from './Item';\n\ntype ToggleProps = ComposableListItemProps<'div'> & {\n control: React.JSX.Element;\n controlRef: React.RefObject<HTMLInputElement | null> | React.RefObject<HTMLButtonElement | null>;\n onToggle: () => void;\n};\n\nconst ToggleItem = React.forwardRef<HTMLDivElement, ToggleProps>(function Toggle(props, ref) {\n const { controlRef, onToggle, ...attributes } = props;\n\n function handleClick(event: React.MouseEvent<HTMLDivElement>) {\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n\n if (event.isDefaultPrevented()) {\n return;\n }\n\n // If event target is not a control and not an element inside the control, then trigger click of the control\n if (event.target !== controlRef.current && !controlRef.current?.contains(event.target as HTMLElement)) {\n onToggle();\n return;\n }\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (typeof props.onKeyDown === 'function') {\n props.onKeyDown(event);\n }\n\n if (event.isDefaultPrevented()) {\n return;\n }\n\n // If event target is not a control and not an element inside the control, then send appropriate \"activate\" keyboard shortcuts to the control as a click\n if (\n (event.key === 'Enter' || event.key === ' ') &&\n event.target !== controlRef.current &&\n !controlRef.current?.contains(event.target as HTMLElement)\n ) {\n onToggle();\n return;\n }\n }\n\n const className = cn('group/toggle', props.className);\n return <Item {...attributes} className={className} onClick={handleClick} onKeyDown={handleKeyDown} ref={ref} />;\n});\n\nexport type ListSwitchProps = ComposableListItemProps<'div'> & Omit<ControlledSwitchProps, 'title'>;\n\nexport const Switch = React.forwardRef<HTMLDivElement, ListSwitchProps>(function Switch(props, ref) {\n const { checked: externalChecked, onChange, ...attributes } = props;\n const [checked, setChecked] = useControlled<boolean>({\n value: externalChecked,\n onChange,\n });\n\n const switchRef = React.useRef<HTMLInputElement>(null);\n\n const toggle = React.useCallback(() => {\n setChecked(previousChecked => !previousChecked);\n }, [setChecked]);\n\n const control = (\n <TacoSwitch\n checked={checked}\n className=\"group-hover/toggle:[&[aria-checked=false]]:bg-gray-700 group-hover/toggle:[&[aria-checked=true]]:bg-blue-700\"\n disabled={props.disabled}\n onChange={toggle}\n ref={switchRef}\n tabIndex={-1}\n />\n );\n\n return <ToggleItem {...attributes} control={control} controlRef={switchRef} ref={ref} onToggle={toggle} />;\n});\n\nexport type ListCheckboxProps = ComposableListItemProps<'div'> & ControlledCheckboxProps;\n\nexport const Checkbox = React.forwardRef<HTMLDivElement, ListCheckboxProps>(function Switch(props, ref) {\n const { checked: externalChecked, onChange, ...attributes } = props;\n const [checked, setChecked] = useControlled<boolean>({\n value: externalChecked,\n onChange,\n });\n\n const checkboxRef = React.useRef<HTMLInputElement>(null);\n\n const toggle = React.useCallback(() => {\n setChecked(previousChecked => !previousChecked);\n }, [setChecked]);\n\n const control = (\n <TacoCheckbox\n checked={checked}\n className=\"group-hover/toggle:[&[aria-checked=false]]:border-gray-700 group-hover/toggle:[&[aria-checked=true]]:border-blue-700 group-hover/checkbox:[&[aria-checked=true]]:bg-blue-700\"\n disabled={props.disabled}\n onChange={toggle}\n ref={checkboxRef}\n tabIndex={-1}\n />\n );\n\n return <ToggleItem {...attributes} control={control} controlRef={checkboxRef} ref={ref} onToggle={toggle} />;\n});\n"],"names":["Item","Switch","useControlled","TacoSwitch","TacoCheckbox"],"mappings":";;;;;;;;AAgBA,MAAM,aAAa,MAAM,WAAwC,SAAS,OAAO,OAAO,KAAK;AACzF,QAAM,EAAE,YAAY,UAAU,GAAG,eAAe;AAEhD,WAAS,YAAY,OAAyC;AAC1D,QAAI,OAAO,MAAM,YAAY,YAAY;AACrC,YAAM,QAAQ,KAAK;AAAA,IACvB;AAEA,QAAI,MAAM,sBAAsB;AAC5B;AAAA,IACJ;AAGA,QAAI,MAAM,WAAW,WAAW,WAAW,CAAC,WAAW,SAAS,SAAS,MAAM,MAAqB,GAAG;AACnG,eAAA;AACA;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,cAAc,OAA4C;AAC/D,QAAI,OAAO,MAAM,cAAc,YAAY;AACvC,YAAM,UAAU,KAAK;AAAA,IACzB;AAEA,QAAI,MAAM,sBAAsB;AAC5B;AAAA,IACJ;AAGA,SACK,MAAM,QAAQ,WAAW,MAAM,QAAQ,QACxC,MAAM,WAAW,WAAW,WAC5B,CAAC,WAAW,SAAS,SAAS,MAAM,MAAqB,GAC3D;AACE,eAAA;AACA;AAAA,IACJ;AAAA,EACJ;AAEA,QAAM,YAAY,GAAG,gBAAgB,MAAM,SAAS;AACpD,SAAO,sBAAA,cAACA,KAAAA,QAAM,GAAG,YAAY,WAAsB,SAAS,aAAa,WAAW,eAAe,IAAA,CAAU;AACjH,CAAC;AAIM,MAAM,SAAS,MAAM,WAA4C,SAASC,QAAO,OAAO,KAAK;AAChG,QAAM,EAAE,SAAS,iBAAiB,UAAU,GAAG,eAAe;AAC9D,QAAM,CAAC,SAAS,UAAU,IAAIC,4BAAuB;AAAA,IACjD,OAAO;AAAA,IACP;AAAA,EAAA,CACH;AAED,QAAM,YAAY,MAAM,OAAyB,IAAI;AAErD,QAAM,SAAS,MAAM,YAAY,MAAM;AACnC,eAAW,CAAA,oBAAmB,CAAC,eAAe;AAAA,EAClD,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,UACF,sBAAA;AAAA,IAACC,SAAAA;AAAAA,IAAA;AAAA,MACG;AAAA,MACA,WAAU;AAAA,MACV,UAAU,MAAM;AAAA,MAChB,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IAAA;AAAA,EAAA;AAIlB,SAAO,sBAAA,cAAC,cAAY,GAAG,YAAY,SAAkB,YAAY,WAAW,KAAU,UAAU,OAAA,CAAQ;AAC5G,CAAC;AAIM,MAAM,WAAW,MAAM,WAA8C,SAASF,QAAO,OAAO,KAAK;AACpG,QAAM,EAAE,SAAS,iBAAiB,UAAU,GAAG,eAAe;AAC9D,QAAM,CAAC,SAAS,UAAU,IAAIC,4BAAuB;AAAA,IACjD,OAAO;AAAA,IACP;AAAA,EAAA,CACH;AAED,QAAM,cAAc,MAAM,OAAyB,IAAI;AAEvD,QAAM,SAAS,MAAM,YAAY,MAAM;AACnC,eAAW,CAAA,oBAAmB,CAAC,eAAe;AAAA,EAClD,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,UACF,sBAAA;AAAA,IAACE,WAAAA;AAAAA,IAAA;AAAA,MACG;AAAA,MACA,WAAU;AAAA,MACV,UAAU,MAAM;AAAA,MAChB,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IAAA;AAAA,EAAA;AAIlB,SAAO,sBAAA,cAAC,cAAY,GAAG,YAAY,SAAkB,YAAY,aAAa,KAAU,UAAU,OAAA,CAAQ;AAC9G,CAAC;;;"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { ControlledCheckboxProps } from '
|
|
3
|
-
import { ControlledSwitchProps } from '../../Switch/Switch';
|
|
2
|
+
import { ControlledCheckboxProps, ControlledSwitchProps } from '../..';
|
|
4
3
|
import { ComposableListItemProps } from './Item';
|
|
5
4
|
export type ListSwitchProps = ComposableListItemProps<'div'> & Omit<ControlledSwitchProps, 'title'>;
|
|
6
5
|
export declare const Switch: React.ForwardRefExoticComponent<ComposableListItemProps<"div"> & Omit<ControlledSwitchProps, "title"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import cn from "clsx";
|
|
2
2
|
import React__default from "react";
|
|
3
3
|
import { useControlled } from "../../../hooks/useControlled.js";
|
|
4
|
-
import { Checkbox as Checkbox$1 } from "../../Checkbox/Checkbox.js";
|
|
5
|
-
import { Switch as Switch$1 } from "../../Switch/Switch.js";
|
|
6
4
|
import { Item } from "./Item.js";
|
|
5
|
+
import { Switch as Switch$1 } from "../../Switch/Switch.js";
|
|
6
|
+
import { Checkbox as Checkbox$1 } from "../../Checkbox/Checkbox.js";
|
|
7
7
|
const ToggleItem = React__default.forwardRef(function Toggle(props, ref) {
|
|
8
8
|
const { controlRef, onToggle, ...attributes } = props;
|
|
9
9
|
function handleClick(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toggle.js","sources":["../../../../src/components/List/components/Toggle.tsx"],"sourcesContent":["import cn from 'clsx';\nimport React from 'react';\n\nimport
|
|
1
|
+
{"version":3,"file":"Toggle.js","sources":["../../../../src/components/List/components/Toggle.tsx"],"sourcesContent":["import cn from 'clsx';\nimport React from 'react';\n\nimport type { ControlledCheckboxProps, ControlledSwitchProps } from '@/components';\nimport { Checkbox as TacoCheckbox, Switch as TacoSwitch } from '@/components';\nimport { useControlled } from '@/hooks/useControlled';\n\nimport type { ComposableListItemProps } from './Item';\nimport { Item } from './Item';\n\ntype ToggleProps = ComposableListItemProps<'div'> & {\n control: React.JSX.Element;\n controlRef: React.RefObject<HTMLInputElement | null> | React.RefObject<HTMLButtonElement | null>;\n onToggle: () => void;\n};\n\nconst ToggleItem = React.forwardRef<HTMLDivElement, ToggleProps>(function Toggle(props, ref) {\n const { controlRef, onToggle, ...attributes } = props;\n\n function handleClick(event: React.MouseEvent<HTMLDivElement>) {\n if (typeof props.onClick === 'function') {\n props.onClick(event);\n }\n\n if (event.isDefaultPrevented()) {\n return;\n }\n\n // If event target is not a control and not an element inside the control, then trigger click of the control\n if (event.target !== controlRef.current && !controlRef.current?.contains(event.target as HTMLElement)) {\n onToggle();\n return;\n }\n }\n\n function handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (typeof props.onKeyDown === 'function') {\n props.onKeyDown(event);\n }\n\n if (event.isDefaultPrevented()) {\n return;\n }\n\n // If event target is not a control and not an element inside the control, then send appropriate \"activate\" keyboard shortcuts to the control as a click\n if (\n (event.key === 'Enter' || event.key === ' ') &&\n event.target !== controlRef.current &&\n !controlRef.current?.contains(event.target as HTMLElement)\n ) {\n onToggle();\n return;\n }\n }\n\n const className = cn('group/toggle', props.className);\n return <Item {...attributes} className={className} onClick={handleClick} onKeyDown={handleKeyDown} ref={ref} />;\n});\n\nexport type ListSwitchProps = ComposableListItemProps<'div'> & Omit<ControlledSwitchProps, 'title'>;\n\nexport const Switch = React.forwardRef<HTMLDivElement, ListSwitchProps>(function Switch(props, ref) {\n const { checked: externalChecked, onChange, ...attributes } = props;\n const [checked, setChecked] = useControlled<boolean>({\n value: externalChecked,\n onChange,\n });\n\n const switchRef = React.useRef<HTMLInputElement>(null);\n\n const toggle = React.useCallback(() => {\n setChecked(previousChecked => !previousChecked);\n }, [setChecked]);\n\n const control = (\n <TacoSwitch\n checked={checked}\n className=\"group-hover/toggle:[&[aria-checked=false]]:bg-gray-700 group-hover/toggle:[&[aria-checked=true]]:bg-blue-700\"\n disabled={props.disabled}\n onChange={toggle}\n ref={switchRef}\n tabIndex={-1}\n />\n );\n\n return <ToggleItem {...attributes} control={control} controlRef={switchRef} ref={ref} onToggle={toggle} />;\n});\n\nexport type ListCheckboxProps = ComposableListItemProps<'div'> & ControlledCheckboxProps;\n\nexport const Checkbox = React.forwardRef<HTMLDivElement, ListCheckboxProps>(function Switch(props, ref) {\n const { checked: externalChecked, onChange, ...attributes } = props;\n const [checked, setChecked] = useControlled<boolean>({\n value: externalChecked,\n onChange,\n });\n\n const checkboxRef = React.useRef<HTMLInputElement>(null);\n\n const toggle = React.useCallback(() => {\n setChecked(previousChecked => !previousChecked);\n }, [setChecked]);\n\n const control = (\n <TacoCheckbox\n checked={checked}\n className=\"group-hover/toggle:[&[aria-checked=false]]:border-gray-700 group-hover/toggle:[&[aria-checked=true]]:border-blue-700 group-hover/checkbox:[&[aria-checked=true]]:bg-blue-700\"\n disabled={props.disabled}\n onChange={toggle}\n ref={checkboxRef}\n tabIndex={-1}\n />\n );\n\n return <ToggleItem {...attributes} control={control} controlRef={checkboxRef} ref={ref} onToggle={toggle} />;\n});\n"],"names":["React","Switch","TacoSwitch","TacoCheckbox"],"mappings":";;;;;;AAgBA,MAAM,aAAaA,eAAM,WAAwC,SAAS,OAAO,OAAO,KAAK;AACzF,QAAM,EAAE,YAAY,UAAU,GAAG,eAAe;AAEhD,WAAS,YAAY,OAAyC;AAC1D,QAAI,OAAO,MAAM,YAAY,YAAY;AACrC,YAAM,QAAQ,KAAK;AAAA,IACvB;AAEA,QAAI,MAAM,sBAAsB;AAC5B;AAAA,IACJ;AAGA,QAAI,MAAM,WAAW,WAAW,WAAW,CAAC,WAAW,SAAS,SAAS,MAAM,MAAqB,GAAG;AACnG,eAAA;AACA;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,cAAc,OAA4C;AAC/D,QAAI,OAAO,MAAM,cAAc,YAAY;AACvC,YAAM,UAAU,KAAK;AAAA,IACzB;AAEA,QAAI,MAAM,sBAAsB;AAC5B;AAAA,IACJ;AAGA,SACK,MAAM,QAAQ,WAAW,MAAM,QAAQ,QACxC,MAAM,WAAW,WAAW,WAC5B,CAAC,WAAW,SAAS,SAAS,MAAM,MAAqB,GAC3D;AACE,eAAA;AACA;AAAA,IACJ;AAAA,EACJ;AAEA,QAAM,YAAY,GAAG,gBAAgB,MAAM,SAAS;AACpD,SAAOA,+BAAA,cAAC,QAAM,GAAG,YAAY,WAAsB,SAAS,aAAa,WAAW,eAAe,IAAA,CAAU;AACjH,CAAC;AAIM,MAAM,SAASA,eAAM,WAA4C,SAASC,QAAO,OAAO,KAAK;AAChG,QAAM,EAAE,SAAS,iBAAiB,UAAU,GAAG,eAAe;AAC9D,QAAM,CAAC,SAAS,UAAU,IAAI,cAAuB;AAAA,IACjD,OAAO;AAAA,IACP;AAAA,EAAA,CACH;AAED,QAAM,YAAYD,eAAM,OAAyB,IAAI;AAErD,QAAM,SAASA,eAAM,YAAY,MAAM;AACnC,eAAW,CAAA,oBAAmB,CAAC,eAAe;AAAA,EAClD,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,UACFA,+BAAA;AAAA,IAACE;AAAAA,IAAA;AAAA,MACG;AAAA,MACA,WAAU;AAAA,MACV,UAAU,MAAM;AAAA,MAChB,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IAAA;AAAA,EAAA;AAIlB,SAAOF,+BAAA,cAAC,cAAY,GAAG,YAAY,SAAkB,YAAY,WAAW,KAAU,UAAU,OAAA,CAAQ;AAC5G,CAAC;AAIM,MAAM,WAAWA,eAAM,WAA8C,SAASC,QAAO,OAAO,KAAK;AACpG,QAAM,EAAE,SAAS,iBAAiB,UAAU,GAAG,eAAe;AAC9D,QAAM,CAAC,SAAS,UAAU,IAAI,cAAuB;AAAA,IACjD,OAAO;AAAA,IACP;AAAA,EAAA,CACH;AAED,QAAM,cAAcD,eAAM,OAAyB,IAAI;AAEvD,QAAM,SAASA,eAAM,YAAY,MAAM;AACnC,eAAW,CAAA,oBAAmB,CAAC,eAAe;AAAA,EAClD,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,UACFA,+BAAA;AAAA,IAACG;AAAAA,IAAA;AAAA,MACG;AAAA,MACA,WAAU;AAAA,MACV,UAAU,MAAM;AAAA,MAChB,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,IAAA;AAAA,EAAA;AAIlB,SAAOH,+BAAA,cAAC,cAAY,GAAG,YAAY,SAAkB,YAAY,aAAa,KAAU,UAAU,OAAA,CAAQ;AAC9G,CAAC;"}
|
|
@@ -45,7 +45,7 @@ export type ListboxProps = Pick<React.InputHTMLAttributes<HTMLInputElement>, 'on
|
|
|
45
45
|
*/
|
|
46
46
|
value?: ListboxValue;
|
|
47
47
|
};
|
|
48
|
-
export declare const Listbox: React.ForwardRefExoticComponent<Pick<React.InputHTMLAttributes<HTMLInputElement>, "onFocus" | "onChange"> & Omit<React.InputHTMLAttributes<HTMLElement>, "
|
|
48
|
+
export declare const Listbox: React.ForwardRefExoticComponent<Pick<React.InputHTMLAttributes<HTMLInputElement>, "onFocus" | "onChange"> & Omit<React.InputHTMLAttributes<HTMLElement>, "defaultValue" | "onChange" | "value"> & {
|
|
49
49
|
/** Data indicating the options in listbox */
|
|
50
50
|
data?: ListboxItem[];
|
|
51
51
|
/**
|
|
@@ -71,7 +71,7 @@ export declare const Listbox: React.ForwardRefExoticComponent<Pick<React.InputHT
|
|
|
71
71
|
*/
|
|
72
72
|
value?: ListboxValue;
|
|
73
73
|
} & React.RefAttributes<HTMLInputElement>>;
|
|
74
|
-
export declare const MultiListbox: React.ForwardRefExoticComponent<Pick<React.InputHTMLAttributes<HTMLInputElement>, "onFocus" | "onChange"> & Omit<React.InputHTMLAttributes<HTMLElement>, "
|
|
74
|
+
export declare const MultiListbox: React.ForwardRefExoticComponent<Pick<React.InputHTMLAttributes<HTMLInputElement>, "onFocus" | "onChange"> & Omit<React.InputHTMLAttributes<HTMLElement>, "defaultValue" | "onChange" | "value"> & {
|
|
75
75
|
/** Data indicating the options in listbox */
|
|
76
76
|
data?: ListboxItem[];
|
|
77
77
|
/**
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const cn = require("clsx");
|
|
4
4
|
const React = require("react");
|
|
5
|
+
const util = require("../Input/util.cjs");
|
|
5
6
|
const useMergedRef = require("../../hooks/useMergedRef.cjs");
|
|
6
7
|
const useListKeyboardNavigation = require("../../utils/hooks/useListKeyboardNavigation.cjs");
|
|
7
8
|
const useListScrollTo = require("../../utils/hooks/useListScrollTo.cjs");
|
|
8
|
-
|
|
9
|
-
const util = require("../Input/util.cjs");
|
|
9
|
+
;/* empty css */
|
|
10
10
|
const Localization = require("../Provider/Localization.cjs");
|
|
11
11
|
const Spinner = require("../Spinner/Spinner.cjs");
|
|
12
|
-
|
|
12
|
+
const Checkbox = require("../Checkbox/Checkbox.cjs");
|
|
13
13
|
function _interopNamespaceDefault(e) {
|
|
14
14
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
15
15
|
if (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollableList.cjs","sources":["../../../src/components/Listbox/ScrollableList.tsx"],"sourcesContent":["import cn from 'clsx';\nimport * as React from 'react';\n\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { getNextIndexFromKey } from '../../utils/hooks/useListKeyboardNavigation';\nimport { useListScrollTo } from '../../utils/hooks/useListScrollTo';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport { getInputClasses } from '../Input/util';\nimport { useLocalization } from '../Provider/Localization';\nimport { Spinner } from '../Spinner/Spinner';\n\nimport './ScrollableList.css';\n\nexport type ScrollableListItemValue = string | number | boolean | null;\n\nexport type ScrollableListItem = {\n /**\n * Set whether the item is disabled.\n * This will both change the style and make the item unselectable\n */\n disabled?: boolean;\n /** Specifies whether the item has child items -- intended for internal use only */\n hasChildren?: boolean;\n /** Place an icon before the item's text */\n icon?: React.ReactElement<{ className?: string }>;\n /** The index path to the item -- intended for internal use only */\n path?: string;\n /** Text describing the item */\n text: string | React.JSX.Element;\n /** Value of the item */\n value: ScrollableListItemValue;\n /** Child items to show hierarchical data */\n children?: ScrollableListItem[];\n};\n\n/** @internal */\nexport type ScrollableListProps = Omit<\n React.HTMLAttributes<HTMLUListElement>,\n 'defaultValue' | 'id' | 'onChange' | 'onClick' | 'onKeyDown'\n> & {\n /** Data indicating the options in scrollable list */\n data: ScrollableListItem[];\n /** Sets the list to be disabled */\n disabled?: boolean;\n /** Draws attention to the scrollable list by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Set an id for the scrollable list */\n id: string;\n /** Whether the input is in an invalid state */\n invalid?: boolean;\n /**\n * Shows a loading indicator with a text next to it.\n * Read more about how to provide the text in `Provider` component.\n */\n loading?: boolean;\n /**\n * Handler called when current active/selected option changes in a scrollable list.\n * @param index indicates the index of the current active option\n */\n onChange: (index: number) => void;\n /** Handler called when option is clicked */\n onClick?: (event: React.MouseEvent<HTMLLIElement>, index: number) => void;\n /**\n * Set whether the selected item should be scrolled into view when listbox is focused.\n * Default value is `false`\n */\n scrollOnFocus?: boolean;\n /** Handler called when a key is pressed */\n onKeyDown?: (event: React.KeyboardEvent<HTMLUListElement>, index: number | undefined) => void;\n /** Sets the list to read only mode */\n readOnly?: boolean;\n /**\n * Value of the scrollable list representing the selected item.\n * It needs to be an existing value from the provided data.\n */\n value: number | undefined;\n /**\n * Allows to select multiple items from the list\n */\n multiselect?: boolean;\n /**\n * Contains the currently selected values when multiselect mode is ON.\n */\n selectedIndexes?: number[];\n /**\n * True when all available (not disabled) options are selected\n */\n allOptionsSelected?: boolean;\n};\n\n/** @internal */\nexport type ScrollableListPropsWithRef = ScrollableListProps & React.RefAttributes<HTMLUListElement>;\n\nexport const getId = (id: string, value: ScrollableListItemValue): string => `${id}_${value}`;\n\nconst getNextEnabledItem = (\n event: React.KeyboardEvent<HTMLElement>,\n data: ScrollableListItem[],\n index: number | undefined\n): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, data.length, index);\n\n if (nextIndex) {\n if (nextIndex === index) {\n return index;\n }\n if (data[nextIndex] && data[nextIndex].disabled) {\n return getNextEnabledItem(event, data, nextIndex);\n }\n }\n\n return nextIndex;\n};\n\nexport const ScrollableList = React.forwardRef(function ScrollableList(\n props: ScrollableListProps,\n ref: React.Ref<HTMLUListElement>\n) {\n const {\n data,\n disabled,\n highlighted: _1,\n id,\n invalid: _2,\n loading,\n onChange: setCurrentIndex,\n onClick,\n onFocus,\n onKeyDown,\n readOnly,\n scrollOnFocus = false,\n value: currentIndex,\n multiselect,\n selectedIndexes = [],\n allOptionsSelected = false,\n ...otherProps\n } = props;\n const listRef = useMergedRef<HTMLUListElement>(ref);\n const itemRefs = React.useMemo(() => data.map(() => React.createRef<HTMLLIElement>()), [data]);\n const { texts } = useLocalization();\n const { scrollTo } = useListScrollTo(listRef, itemRefs);\n\n React.useEffect(() => {\n if (currentIndex && itemRefs[currentIndex]?.current) {\n itemRefs[currentIndex].current?.scrollIntoView({\n block: 'center',\n });\n }\n }, []);\n\n React.useEffect(() => {\n scrollTo(currentIndex);\n }, [currentIndex]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>): void => {\n const nextIndex = getNextEnabledItem(event, data, currentIndex);\n\n if (nextIndex !== undefined && nextIndex !== currentIndex) {\n event.preventDefault();\n scrollTo(nextIndex);\n setCurrentIndex(nextIndex);\n }\n\n if (onKeyDown) {\n event.persist();\n const index = nextIndex === undefined ? currentIndex : nextIndex;\n onKeyDown(event, index);\n }\n\n // Stops the keyboard event from propagating so that keyboard event on other components outside the scrollable\n // list are not executed.\n event.stopPropagation();\n };\n\n const handleClick = (index: number) => (event: React.MouseEvent<HTMLLIElement>) => {\n setCurrentIndex(index);\n\n if (onClick) {\n event.persist();\n onClick(event, index);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLUListElement>): void => {\n if (scrollOnFocus) {\n scrollTo(currentIndex);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const getOptionCheckedState = (optionValue: string, index: number): boolean => {\n if (optionValue === '#ALL-OPTIONS#') {\n return allOptionsSelected;\n }\n\n if (!optionValue || !selectedIndexes) {\n return false;\n }\n\n return selectedIndexes.some(i => i === index);\n };\n\n const options = data.map((option, index) => {\n const depth = option.path ? option.path.split('.').length - 1 : 0;\n\n return {\n 'aria-selected': multiselect ? getOptionCheckedState(String(option.value), index) : currentIndex === index,\n 'data-focused': currentIndex === index,\n children: option.text,\n className: cn(\n 'flex w-full flex-[0_0_2rem] cursor-pointer items-center bg-white px-3 focus:border-blue-500 focus:bg-blue-500 focus:text-white',\n {\n 'sticky top-0 font-bold': depth === 0 && !!option.hasChildren,\n }\n ),\n disabled: option.disabled,\n icon: option.icon,\n id: getId(id, option.value),\n key: getId(id, option.value),\n onClick: !disabled && !readOnly ? handleClick(index) : undefined,\n ref: itemRefs[index],\n role: 'option',\n style:\n depth > 0\n ? {\n paddingLeft: `${depth + 1}rem`,\n }\n : undefined,\n };\n });\n\n const list: React.HTMLAttributes<HTMLUListElement> &\n React.RefAttributes<HTMLUListElement> & { disabled?: boolean; readOnly?: boolean } = {\n ...otherProps,\n className: cn(\n 'm-0 inline-flex h-auto list-none flex-col overflow-y-auto !p-0',\n getInputClasses(props),\n {\n 'yt-list--multiselect': multiselect,\n 'pointer-events-none': disabled,\n 'cursor-not-allowed': disabled || readOnly,\n },\n otherProps.className\n ),\n disabled,\n id,\n onFocus: !disabled && !readOnly ? handleFocus : undefined,\n onKeyDown: !disabled && !readOnly ? handleKeyDown : undefined,\n readOnly,\n ref: listRef,\n role: options.length <= 0 || loading ? 'presentation' : 'listbox',\n tabIndex: otherProps.tabIndex || 0,\n };\n\n return (\n <ul {...list} data-taco=\"scrollable-list\">\n {loading ? (\n <li className=\"yt-list__empty\">\n <span>\n <Spinner delay={0} />\n </span>\n <span>{texts.listbox.loading}</span>\n </li>\n ) : options.length ? (\n options.map(({ children, icon, ...optionProps }) => (\n <li {...optionProps}>\n {icon}\n <span data-taco=\"list-option\" className=\"flex-grow truncate text-left\">\n {children}\n </span>\n {multiselect && (\n <Checkbox\n // In multiselect variant, this checkbox only acts as visual representation of item being selected,\n // so need to be taken out of screen reader scope.\n aria-hidden\n tabIndex={-1}\n checked={optionProps['aria-selected']}\n onChange={() => null}\n className=\"pointer-events-none ml-2 self-center p-px\"\n />\n )}\n </li>\n ))\n ) : (\n <li className=\"yt-list__empty\">\n <span>{texts.listbox.empty}</span>\n </li>\n )}\n </ul>\n );\n});\n"],"names":["getNextIndexFromKey","React","ScrollableList","useMergedRef","useLocalization","useListScrollTo","getInputClasses","Spinner","Checkbox"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScrollableList.cjs","sources":["../../../src/components/Listbox/ScrollableList.tsx"],"sourcesContent":["import cn from 'clsx';\nimport * as React from 'react';\n\nimport { Checkbox, Spinner, useLocalization } from '@/components';\nimport { getInputClasses } from '@/components/Input/util';\nimport { useMergedRef } from '@/hooks/useMergedRef';\nimport { getNextIndexFromKey } from '@/utils/hooks/useListKeyboardNavigation';\nimport { useListScrollTo } from '@/utils/hooks/useListScrollTo';\n\nimport './ScrollableList.css';\n\nexport type ScrollableListItemValue = string | number | boolean | null;\n\nexport type ScrollableListItem = {\n /**\n * Set whether the item is disabled.\n * This will both change the style and make the item unselectable\n */\n disabled?: boolean;\n /** Specifies whether the item has child items -- intended for internal use only */\n hasChildren?: boolean;\n /** Place an icon before the item's text */\n icon?: React.ReactElement<{ className?: string }>;\n /** The index path to the item -- intended for internal use only */\n path?: string;\n /** Text describing the item */\n text: string | React.JSX.Element;\n /** Value of the item */\n value: ScrollableListItemValue;\n /** Child items to show hierarchical data */\n children?: ScrollableListItem[];\n};\n\n/** @internal */\nexport type ScrollableListProps = Omit<\n React.HTMLAttributes<HTMLUListElement>,\n 'defaultValue' | 'id' | 'onChange' | 'onClick' | 'onKeyDown'\n> & {\n /** Data indicating the options in scrollable list */\n data: ScrollableListItem[];\n /** Sets the list to be disabled */\n disabled?: boolean;\n /** Draws attention to the scrollable list by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Set an id for the scrollable list */\n id: string;\n /** Whether the input is in an invalid state */\n invalid?: boolean;\n /**\n * Shows a loading indicator with a text next to it.\n * Read more about how to provide the text in `Provider` component.\n */\n loading?: boolean;\n /**\n * Handler called when current active/selected option changes in a scrollable list.\n * @param index indicates the index of the current active option\n */\n onChange: (index: number) => void;\n /** Handler called when option is clicked */\n onClick?: (event: React.MouseEvent<HTMLLIElement>, index: number) => void;\n /**\n * Set whether the selected item should be scrolled into view when listbox is focused.\n * Default value is `false`\n */\n scrollOnFocus?: boolean;\n /** Handler called when a key is pressed */\n onKeyDown?: (event: React.KeyboardEvent<HTMLUListElement>, index: number | undefined) => void;\n /** Sets the list to read only mode */\n readOnly?: boolean;\n /**\n * Value of the scrollable list representing the selected item.\n * It needs to be an existing value from the provided data.\n */\n value: number | undefined;\n /**\n * Allows to select multiple items from the list\n */\n multiselect?: boolean;\n /**\n * Contains the currently selected values when multiselect mode is ON.\n */\n selectedIndexes?: number[];\n /**\n * True when all available (not disabled) options are selected\n */\n allOptionsSelected?: boolean;\n};\n\n/** @internal */\nexport type ScrollableListPropsWithRef = ScrollableListProps & React.RefAttributes<HTMLUListElement>;\n\nexport const getId = (id: string, value: ScrollableListItemValue): string => `${id}_${value}`;\n\nconst getNextEnabledItem = (\n event: React.KeyboardEvent<HTMLElement>,\n data: ScrollableListItem[],\n index: number | undefined\n): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, data.length, index);\n\n if (nextIndex) {\n if (nextIndex === index) {\n return index;\n }\n if (data[nextIndex] && data[nextIndex].disabled) {\n return getNextEnabledItem(event, data, nextIndex);\n }\n }\n\n return nextIndex;\n};\n\nexport const ScrollableList = React.forwardRef(function ScrollableList(\n props: ScrollableListProps,\n ref: React.Ref<HTMLUListElement>\n) {\n const {\n data,\n disabled,\n highlighted: _1,\n id,\n invalid: _2,\n loading,\n onChange: setCurrentIndex,\n onClick,\n onFocus,\n onKeyDown,\n readOnly,\n scrollOnFocus = false,\n value: currentIndex,\n multiselect,\n selectedIndexes = [],\n allOptionsSelected = false,\n ...otherProps\n } = props;\n const listRef = useMergedRef<HTMLUListElement>(ref);\n const itemRefs = React.useMemo(() => data.map(() => React.createRef<HTMLLIElement>()), [data]);\n const { texts } = useLocalization();\n const { scrollTo } = useListScrollTo(listRef, itemRefs);\n\n React.useEffect(() => {\n if (currentIndex && itemRefs[currentIndex]?.current) {\n itemRefs[currentIndex].current?.scrollIntoView({\n block: 'center',\n });\n }\n }, []);\n\n React.useEffect(() => {\n scrollTo(currentIndex);\n }, [currentIndex]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>): void => {\n const nextIndex = getNextEnabledItem(event, data, currentIndex);\n\n if (nextIndex !== undefined && nextIndex !== currentIndex) {\n event.preventDefault();\n scrollTo(nextIndex);\n setCurrentIndex(nextIndex);\n }\n\n if (onKeyDown) {\n event.persist();\n const index = nextIndex === undefined ? currentIndex : nextIndex;\n onKeyDown(event, index);\n }\n\n // Stops the keyboard event from propagating so that keyboard event on other components outside the scrollable\n // list are not executed.\n event.stopPropagation();\n };\n\n const handleClick = (index: number) => (event: React.MouseEvent<HTMLLIElement>) => {\n setCurrentIndex(index);\n\n if (onClick) {\n event.persist();\n onClick(event, index);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLUListElement>): void => {\n if (scrollOnFocus) {\n scrollTo(currentIndex);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const getOptionCheckedState = (optionValue: string, index: number): boolean => {\n if (optionValue === '#ALL-OPTIONS#') {\n return allOptionsSelected;\n }\n\n if (!optionValue || !selectedIndexes) {\n return false;\n }\n\n return selectedIndexes.some(i => i === index);\n };\n\n const options = data.map((option, index) => {\n const depth = option.path ? option.path.split('.').length - 1 : 0;\n\n return {\n 'aria-selected': multiselect ? getOptionCheckedState(String(option.value), index) : currentIndex === index,\n 'data-focused': currentIndex === index,\n children: option.text,\n className: cn(\n 'flex w-full flex-[0_0_2rem] cursor-pointer items-center bg-white px-3 focus:border-blue-500 focus:bg-blue-500 focus:text-white',\n {\n 'sticky top-0 font-bold': depth === 0 && !!option.hasChildren,\n }\n ),\n disabled: option.disabled,\n icon: option.icon,\n id: getId(id, option.value),\n key: getId(id, option.value),\n onClick: !disabled && !readOnly ? handleClick(index) : undefined,\n ref: itemRefs[index],\n role: 'option',\n style:\n depth > 0\n ? {\n paddingLeft: `${depth + 1}rem`,\n }\n : undefined,\n };\n });\n\n const list: React.HTMLAttributes<HTMLUListElement> &\n React.RefAttributes<HTMLUListElement> & { disabled?: boolean; readOnly?: boolean } = {\n ...otherProps,\n className: cn(\n 'm-0 inline-flex h-auto list-none flex-col overflow-y-auto !p-0',\n getInputClasses(props),\n {\n 'yt-list--multiselect': multiselect,\n 'pointer-events-none': disabled,\n 'cursor-not-allowed': disabled || readOnly,\n },\n otherProps.className\n ),\n disabled,\n id,\n onFocus: !disabled && !readOnly ? handleFocus : undefined,\n onKeyDown: !disabled && !readOnly ? handleKeyDown : undefined,\n readOnly,\n ref: listRef,\n role: options.length <= 0 || loading ? 'presentation' : 'listbox',\n tabIndex: otherProps.tabIndex || 0,\n };\n\n return (\n <ul {...list} data-taco=\"scrollable-list\">\n {loading ? (\n <li className=\"yt-list__empty\">\n <span>\n <Spinner delay={0} />\n </span>\n <span>{texts.listbox.loading}</span>\n </li>\n ) : options.length ? (\n options.map(({ children, icon, ...optionProps }) => (\n <li {...optionProps}>\n {icon}\n <span data-taco=\"list-option\" className=\"flex-grow truncate text-left\">\n {children}\n </span>\n {multiselect && (\n <Checkbox\n // In multiselect variant, this checkbox only acts as visual representation of item being selected,\n // so need to be taken out of screen reader scope.\n aria-hidden\n tabIndex={-1}\n checked={optionProps['aria-selected']}\n onChange={() => null}\n className=\"pointer-events-none ml-2 self-center p-px\"\n />\n )}\n </li>\n ))\n ) : (\n <li className=\"yt-list__empty\">\n <span>{texts.listbox.empty}</span>\n </li>\n )}\n </ul>\n );\n});\n"],"names":["getNextIndexFromKey","React","ScrollableList","useMergedRef","useLocalization","useListScrollTo","getInputClasses","Spinner","Checkbox"],"mappings":"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"}
|
|
@@ -75,7 +75,7 @@ export type ScrollableListProps = Omit<React.HTMLAttributes<HTMLUListElement>, '
|
|
|
75
75
|
/** @internal */
|
|
76
76
|
export type ScrollableListPropsWithRef = ScrollableListProps & React.RefAttributes<HTMLUListElement>;
|
|
77
77
|
export declare const getId: (id: string, value: ScrollableListItemValue) => string;
|
|
78
|
-
export declare const ScrollableList: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLUListElement>, "
|
|
78
|
+
export declare const ScrollableList: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<HTMLUListElement>, "defaultValue" | "id" | "onChange" | "onKeyDown" | "onClick"> & {
|
|
79
79
|
/** Data indicating the options in scrollable list */
|
|
80
80
|
data: ScrollableListItem[];
|
|
81
81
|
/** Sets the list to be disabled */
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import cn from "clsx";
|
|
2
2
|
import * as React from "react";
|
|
3
|
+
import { getInputClasses } from "../Input/util.js";
|
|
3
4
|
import { useMergedRef } from "../../hooks/useMergedRef.js";
|
|
4
5
|
import { getNextIndexFromKey } from "../../utils/hooks/useListKeyboardNavigation.js";
|
|
5
6
|
import { useListScrollTo } from "../../utils/hooks/useListScrollTo.js";
|
|
6
|
-
|
|
7
|
-
import { getInputClasses } from "../Input/util.js";
|
|
7
|
+
/* empty css */
|
|
8
8
|
import { useLocalization } from "../Provider/Localization.js";
|
|
9
9
|
import { Spinner } from "../Spinner/Spinner.js";
|
|
10
|
-
|
|
10
|
+
import { Checkbox } from "../Checkbox/Checkbox.js";
|
|
11
11
|
const getId = (id, value) => `${id}_${value}`;
|
|
12
12
|
const getNextEnabledItem = (event, data, index) => {
|
|
13
13
|
const nextIndex = getNextIndexFromKey(event.key, data.length, index);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScrollableList.js","sources":["../../../src/components/Listbox/ScrollableList.tsx"],"sourcesContent":["import cn from 'clsx';\nimport * as React from 'react';\n\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { getNextIndexFromKey } from '../../utils/hooks/useListKeyboardNavigation';\nimport { useListScrollTo } from '../../utils/hooks/useListScrollTo';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport { getInputClasses } from '../Input/util';\nimport { useLocalization } from '../Provider/Localization';\nimport { Spinner } from '../Spinner/Spinner';\n\nimport './ScrollableList.css';\n\nexport type ScrollableListItemValue = string | number | boolean | null;\n\nexport type ScrollableListItem = {\n /**\n * Set whether the item is disabled.\n * This will both change the style and make the item unselectable\n */\n disabled?: boolean;\n /** Specifies whether the item has child items -- intended for internal use only */\n hasChildren?: boolean;\n /** Place an icon before the item's text */\n icon?: React.ReactElement<{ className?: string }>;\n /** The index path to the item -- intended for internal use only */\n path?: string;\n /** Text describing the item */\n text: string | React.JSX.Element;\n /** Value of the item */\n value: ScrollableListItemValue;\n /** Child items to show hierarchical data */\n children?: ScrollableListItem[];\n};\n\n/** @internal */\nexport type ScrollableListProps = Omit<\n React.HTMLAttributes<HTMLUListElement>,\n 'defaultValue' | 'id' | 'onChange' | 'onClick' | 'onKeyDown'\n> & {\n /** Data indicating the options in scrollable list */\n data: ScrollableListItem[];\n /** Sets the list to be disabled */\n disabled?: boolean;\n /** Draws attention to the scrollable list by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Set an id for the scrollable list */\n id: string;\n /** Whether the input is in an invalid state */\n invalid?: boolean;\n /**\n * Shows a loading indicator with a text next to it.\n * Read more about how to provide the text in `Provider` component.\n */\n loading?: boolean;\n /**\n * Handler called when current active/selected option changes in a scrollable list.\n * @param index indicates the index of the current active option\n */\n onChange: (index: number) => void;\n /** Handler called when option is clicked */\n onClick?: (event: React.MouseEvent<HTMLLIElement>, index: number) => void;\n /**\n * Set whether the selected item should be scrolled into view when listbox is focused.\n * Default value is `false`\n */\n scrollOnFocus?: boolean;\n /** Handler called when a key is pressed */\n onKeyDown?: (event: React.KeyboardEvent<HTMLUListElement>, index: number | undefined) => void;\n /** Sets the list to read only mode */\n readOnly?: boolean;\n /**\n * Value of the scrollable list representing the selected item.\n * It needs to be an existing value from the provided data.\n */\n value: number | undefined;\n /**\n * Allows to select multiple items from the list\n */\n multiselect?: boolean;\n /**\n * Contains the currently selected values when multiselect mode is ON.\n */\n selectedIndexes?: number[];\n /**\n * True when all available (not disabled) options are selected\n */\n allOptionsSelected?: boolean;\n};\n\n/** @internal */\nexport type ScrollableListPropsWithRef = ScrollableListProps & React.RefAttributes<HTMLUListElement>;\n\nexport const getId = (id: string, value: ScrollableListItemValue): string => `${id}_${value}`;\n\nconst getNextEnabledItem = (\n event: React.KeyboardEvent<HTMLElement>,\n data: ScrollableListItem[],\n index: number | undefined\n): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, data.length, index);\n\n if (nextIndex) {\n if (nextIndex === index) {\n return index;\n }\n if (data[nextIndex] && data[nextIndex].disabled) {\n return getNextEnabledItem(event, data, nextIndex);\n }\n }\n\n return nextIndex;\n};\n\nexport const ScrollableList = React.forwardRef(function ScrollableList(\n props: ScrollableListProps,\n ref: React.Ref<HTMLUListElement>\n) {\n const {\n data,\n disabled,\n highlighted: _1,\n id,\n invalid: _2,\n loading,\n onChange: setCurrentIndex,\n onClick,\n onFocus,\n onKeyDown,\n readOnly,\n scrollOnFocus = false,\n value: currentIndex,\n multiselect,\n selectedIndexes = [],\n allOptionsSelected = false,\n ...otherProps\n } = props;\n const listRef = useMergedRef<HTMLUListElement>(ref);\n const itemRefs = React.useMemo(() => data.map(() => React.createRef<HTMLLIElement>()), [data]);\n const { texts } = useLocalization();\n const { scrollTo } = useListScrollTo(listRef, itemRefs);\n\n React.useEffect(() => {\n if (currentIndex && itemRefs[currentIndex]?.current) {\n itemRefs[currentIndex].current?.scrollIntoView({\n block: 'center',\n });\n }\n }, []);\n\n React.useEffect(() => {\n scrollTo(currentIndex);\n }, [currentIndex]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>): void => {\n const nextIndex = getNextEnabledItem(event, data, currentIndex);\n\n if (nextIndex !== undefined && nextIndex !== currentIndex) {\n event.preventDefault();\n scrollTo(nextIndex);\n setCurrentIndex(nextIndex);\n }\n\n if (onKeyDown) {\n event.persist();\n const index = nextIndex === undefined ? currentIndex : nextIndex;\n onKeyDown(event, index);\n }\n\n // Stops the keyboard event from propagating so that keyboard event on other components outside the scrollable\n // list are not executed.\n event.stopPropagation();\n };\n\n const handleClick = (index: number) => (event: React.MouseEvent<HTMLLIElement>) => {\n setCurrentIndex(index);\n\n if (onClick) {\n event.persist();\n onClick(event, index);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLUListElement>): void => {\n if (scrollOnFocus) {\n scrollTo(currentIndex);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const getOptionCheckedState = (optionValue: string, index: number): boolean => {\n if (optionValue === '#ALL-OPTIONS#') {\n return allOptionsSelected;\n }\n\n if (!optionValue || !selectedIndexes) {\n return false;\n }\n\n return selectedIndexes.some(i => i === index);\n };\n\n const options = data.map((option, index) => {\n const depth = option.path ? option.path.split('.').length - 1 : 0;\n\n return {\n 'aria-selected': multiselect ? getOptionCheckedState(String(option.value), index) : currentIndex === index,\n 'data-focused': currentIndex === index,\n children: option.text,\n className: cn(\n 'flex w-full flex-[0_0_2rem] cursor-pointer items-center bg-white px-3 focus:border-blue-500 focus:bg-blue-500 focus:text-white',\n {\n 'sticky top-0 font-bold': depth === 0 && !!option.hasChildren,\n }\n ),\n disabled: option.disabled,\n icon: option.icon,\n id: getId(id, option.value),\n key: getId(id, option.value),\n onClick: !disabled && !readOnly ? handleClick(index) : undefined,\n ref: itemRefs[index],\n role: 'option',\n style:\n depth > 0\n ? {\n paddingLeft: `${depth + 1}rem`,\n }\n : undefined,\n };\n });\n\n const list: React.HTMLAttributes<HTMLUListElement> &\n React.RefAttributes<HTMLUListElement> & { disabled?: boolean; readOnly?: boolean } = {\n ...otherProps,\n className: cn(\n 'm-0 inline-flex h-auto list-none flex-col overflow-y-auto !p-0',\n getInputClasses(props),\n {\n 'yt-list--multiselect': multiselect,\n 'pointer-events-none': disabled,\n 'cursor-not-allowed': disabled || readOnly,\n },\n otherProps.className\n ),\n disabled,\n id,\n onFocus: !disabled && !readOnly ? handleFocus : undefined,\n onKeyDown: !disabled && !readOnly ? handleKeyDown : undefined,\n readOnly,\n ref: listRef,\n role: options.length <= 0 || loading ? 'presentation' : 'listbox',\n tabIndex: otherProps.tabIndex || 0,\n };\n\n return (\n <ul {...list} data-taco=\"scrollable-list\">\n {loading ? (\n <li className=\"yt-list__empty\">\n <span>\n <Spinner delay={0} />\n </span>\n <span>{texts.listbox.loading}</span>\n </li>\n ) : options.length ? (\n options.map(({ children, icon, ...optionProps }) => (\n <li {...optionProps}>\n {icon}\n <span data-taco=\"list-option\" className=\"flex-grow truncate text-left\">\n {children}\n </span>\n {multiselect && (\n <Checkbox\n // In multiselect variant, this checkbox only acts as visual representation of item being selected,\n // so need to be taken out of screen reader scope.\n aria-hidden\n tabIndex={-1}\n checked={optionProps['aria-selected']}\n onChange={() => null}\n className=\"pointer-events-none ml-2 self-center p-px\"\n />\n )}\n </li>\n ))\n ) : (\n <li className=\"yt-list__empty\">\n <span>{texts.listbox.empty}</span>\n </li>\n )}\n </ul>\n );\n});\n"],"names":["ScrollableList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScrollableList.js","sources":["../../../src/components/Listbox/ScrollableList.tsx"],"sourcesContent":["import cn from 'clsx';\nimport * as React from 'react';\n\nimport { Checkbox, Spinner, useLocalization } from '@/components';\nimport { getInputClasses } from '@/components/Input/util';\nimport { useMergedRef } from '@/hooks/useMergedRef';\nimport { getNextIndexFromKey } from '@/utils/hooks/useListKeyboardNavigation';\nimport { useListScrollTo } from '@/utils/hooks/useListScrollTo';\n\nimport './ScrollableList.css';\n\nexport type ScrollableListItemValue = string | number | boolean | null;\n\nexport type ScrollableListItem = {\n /**\n * Set whether the item is disabled.\n * This will both change the style and make the item unselectable\n */\n disabled?: boolean;\n /** Specifies whether the item has child items -- intended for internal use only */\n hasChildren?: boolean;\n /** Place an icon before the item's text */\n icon?: React.ReactElement<{ className?: string }>;\n /** The index path to the item -- intended for internal use only */\n path?: string;\n /** Text describing the item */\n text: string | React.JSX.Element;\n /** Value of the item */\n value: ScrollableListItemValue;\n /** Child items to show hierarchical data */\n children?: ScrollableListItem[];\n};\n\n/** @internal */\nexport type ScrollableListProps = Omit<\n React.HTMLAttributes<HTMLUListElement>,\n 'defaultValue' | 'id' | 'onChange' | 'onClick' | 'onKeyDown'\n> & {\n /** Data indicating the options in scrollable list */\n data: ScrollableListItem[];\n /** Sets the list to be disabled */\n disabled?: boolean;\n /** Draws attention to the scrollable list by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Set an id for the scrollable list */\n id: string;\n /** Whether the input is in an invalid state */\n invalid?: boolean;\n /**\n * Shows a loading indicator with a text next to it.\n * Read more about how to provide the text in `Provider` component.\n */\n loading?: boolean;\n /**\n * Handler called when current active/selected option changes in a scrollable list.\n * @param index indicates the index of the current active option\n */\n onChange: (index: number) => void;\n /** Handler called when option is clicked */\n onClick?: (event: React.MouseEvent<HTMLLIElement>, index: number) => void;\n /**\n * Set whether the selected item should be scrolled into view when listbox is focused.\n * Default value is `false`\n */\n scrollOnFocus?: boolean;\n /** Handler called when a key is pressed */\n onKeyDown?: (event: React.KeyboardEvent<HTMLUListElement>, index: number | undefined) => void;\n /** Sets the list to read only mode */\n readOnly?: boolean;\n /**\n * Value of the scrollable list representing the selected item.\n * It needs to be an existing value from the provided data.\n */\n value: number | undefined;\n /**\n * Allows to select multiple items from the list\n */\n multiselect?: boolean;\n /**\n * Contains the currently selected values when multiselect mode is ON.\n */\n selectedIndexes?: number[];\n /**\n * True when all available (not disabled) options are selected\n */\n allOptionsSelected?: boolean;\n};\n\n/** @internal */\nexport type ScrollableListPropsWithRef = ScrollableListProps & React.RefAttributes<HTMLUListElement>;\n\nexport const getId = (id: string, value: ScrollableListItemValue): string => `${id}_${value}`;\n\nconst getNextEnabledItem = (\n event: React.KeyboardEvent<HTMLElement>,\n data: ScrollableListItem[],\n index: number | undefined\n): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, data.length, index);\n\n if (nextIndex) {\n if (nextIndex === index) {\n return index;\n }\n if (data[nextIndex] && data[nextIndex].disabled) {\n return getNextEnabledItem(event, data, nextIndex);\n }\n }\n\n return nextIndex;\n};\n\nexport const ScrollableList = React.forwardRef(function ScrollableList(\n props: ScrollableListProps,\n ref: React.Ref<HTMLUListElement>\n) {\n const {\n data,\n disabled,\n highlighted: _1,\n id,\n invalid: _2,\n loading,\n onChange: setCurrentIndex,\n onClick,\n onFocus,\n onKeyDown,\n readOnly,\n scrollOnFocus = false,\n value: currentIndex,\n multiselect,\n selectedIndexes = [],\n allOptionsSelected = false,\n ...otherProps\n } = props;\n const listRef = useMergedRef<HTMLUListElement>(ref);\n const itemRefs = React.useMemo(() => data.map(() => React.createRef<HTMLLIElement>()), [data]);\n const { texts } = useLocalization();\n const { scrollTo } = useListScrollTo(listRef, itemRefs);\n\n React.useEffect(() => {\n if (currentIndex && itemRefs[currentIndex]?.current) {\n itemRefs[currentIndex].current?.scrollIntoView({\n block: 'center',\n });\n }\n }, []);\n\n React.useEffect(() => {\n scrollTo(currentIndex);\n }, [currentIndex]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>): void => {\n const nextIndex = getNextEnabledItem(event, data, currentIndex);\n\n if (nextIndex !== undefined && nextIndex !== currentIndex) {\n event.preventDefault();\n scrollTo(nextIndex);\n setCurrentIndex(nextIndex);\n }\n\n if (onKeyDown) {\n event.persist();\n const index = nextIndex === undefined ? currentIndex : nextIndex;\n onKeyDown(event, index);\n }\n\n // Stops the keyboard event from propagating so that keyboard event on other components outside the scrollable\n // list are not executed.\n event.stopPropagation();\n };\n\n const handleClick = (index: number) => (event: React.MouseEvent<HTMLLIElement>) => {\n setCurrentIndex(index);\n\n if (onClick) {\n event.persist();\n onClick(event, index);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLUListElement>): void => {\n if (scrollOnFocus) {\n scrollTo(currentIndex);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const getOptionCheckedState = (optionValue: string, index: number): boolean => {\n if (optionValue === '#ALL-OPTIONS#') {\n return allOptionsSelected;\n }\n\n if (!optionValue || !selectedIndexes) {\n return false;\n }\n\n return selectedIndexes.some(i => i === index);\n };\n\n const options = data.map((option, index) => {\n const depth = option.path ? option.path.split('.').length - 1 : 0;\n\n return {\n 'aria-selected': multiselect ? getOptionCheckedState(String(option.value), index) : currentIndex === index,\n 'data-focused': currentIndex === index,\n children: option.text,\n className: cn(\n 'flex w-full flex-[0_0_2rem] cursor-pointer items-center bg-white px-3 focus:border-blue-500 focus:bg-blue-500 focus:text-white',\n {\n 'sticky top-0 font-bold': depth === 0 && !!option.hasChildren,\n }\n ),\n disabled: option.disabled,\n icon: option.icon,\n id: getId(id, option.value),\n key: getId(id, option.value),\n onClick: !disabled && !readOnly ? handleClick(index) : undefined,\n ref: itemRefs[index],\n role: 'option',\n style:\n depth > 0\n ? {\n paddingLeft: `${depth + 1}rem`,\n }\n : undefined,\n };\n });\n\n const list: React.HTMLAttributes<HTMLUListElement> &\n React.RefAttributes<HTMLUListElement> & { disabled?: boolean; readOnly?: boolean } = {\n ...otherProps,\n className: cn(\n 'm-0 inline-flex h-auto list-none flex-col overflow-y-auto !p-0',\n getInputClasses(props),\n {\n 'yt-list--multiselect': multiselect,\n 'pointer-events-none': disabled,\n 'cursor-not-allowed': disabled || readOnly,\n },\n otherProps.className\n ),\n disabled,\n id,\n onFocus: !disabled && !readOnly ? handleFocus : undefined,\n onKeyDown: !disabled && !readOnly ? handleKeyDown : undefined,\n readOnly,\n ref: listRef,\n role: options.length <= 0 || loading ? 'presentation' : 'listbox',\n tabIndex: otherProps.tabIndex || 0,\n };\n\n return (\n <ul {...list} data-taco=\"scrollable-list\">\n {loading ? (\n <li className=\"yt-list__empty\">\n <span>\n <Spinner delay={0} />\n </span>\n <span>{texts.listbox.loading}</span>\n </li>\n ) : options.length ? (\n options.map(({ children, icon, ...optionProps }) => (\n <li {...optionProps}>\n {icon}\n <span data-taco=\"list-option\" className=\"flex-grow truncate text-left\">\n {children}\n </span>\n {multiselect && (\n <Checkbox\n // In multiselect variant, this checkbox only acts as visual representation of item being selected,\n // so need to be taken out of screen reader scope.\n aria-hidden\n tabIndex={-1}\n checked={optionProps['aria-selected']}\n onChange={() => null}\n className=\"pointer-events-none ml-2 self-center p-px\"\n />\n )}\n </li>\n ))\n ) : (\n <li className=\"yt-list__empty\">\n <span>{texts.listbox.empty}</span>\n </li>\n )}\n </ul>\n );\n});\n"],"names":["ScrollableList"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useListbox.cjs","sources":["../../../src/components/Listbox/useListbox.tsx"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport * as React from 'react';\n\nimport { useMergedRef } from '
|
|
1
|
+
{"version":3,"file":"useListbox.cjs","sources":["../../../src/components/Listbox/useListbox.tsx"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport * as React from 'react';\n\nimport { useMergedRef } from '@/hooks/useMergedRef';\n\nimport type { ListboxProps } from './Listbox';\nimport type { ScrollableListProps } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\nimport { setInputValueByRef, getIndexFromValue, findByValue, getActiveDescendant, useFlattenedData, sanitizeItem } from './util';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue,\n id: nativeId,\n invalid,\n name,\n onChange,\n onFocus,\n onKeyDown,\n value = emptyValue,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const data = useFlattenedData(emptyValue === undefined ? externalData : [{ text: '', value: emptyValue }, ...externalData]);\n const id = React.useMemo(() => nativeId || nanoid(), [nativeId]);\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const currentIndex = value === undefined ? undefined : getIndexFromValue(data, value);\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n setInputValueByRef(inputRef.current, option.value);\n }\n }\n };\n\n const handleListboxChange = (index: number): void => {\n setInputValueByIndex(index);\n };\n\n React.useEffect(() => {\n if (data.length && currentIndex === undefined) {\n if (defaultValue === undefined) {\n setInputValueByIndex(0);\n } else {\n const defaultValueIndex = getIndexFromValue(data, defaultValue);\n\n if (defaultValueIndex !== undefined) {\n setInputValueByIndex(defaultValueIndex);\n }\n }\n }\n }, [data]);\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\n const charKey = event.key;\n\n // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)\n // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed\n if (charKey.length === 1 && /(\\w)/g.test(charKey)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setInputValueByIndex(nextIndex);\n }\n return;\n }\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (currentIndex === undefined && data.length) {\n setInputValueByIndex(0);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n if (onChange) {\n const item = findByValue(data, event.target.value);\n (event as any).detail = sanitizeItem(item);\n\n const indexes = item?.path?.split('.') ?? [];\n\n if (indexes.length > 1) {\n // we don't want to map the current item\n indexes.pop();\n // we need to rebuild the path as we map\n let lastPath: string;\n\n (event as any).detail.parents = indexes.map(i => {\n lastPath = lastPath ? [lastPath, i].join('.') : i;\n return sanitizeItem(data.find(i => i.path === lastPath));\n });\n }\n\n onChange(event);\n }\n };\n\n const list: ScrollableListProps = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n data,\n disabled,\n id,\n invalid,\n onChange: handleListboxChange,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: true,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["useFlattenedData","React","nanoid","useMergedRef","getIndexFromValue","useTypeahead","setInputValueByRef","findByValue","sanitizeItem","i","getActiveDescendant"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useListbox.js","sources":["../../../src/components/Listbox/useListbox.tsx"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport * as React from 'react';\n\nimport { useMergedRef } from '
|
|
1
|
+
{"version":3,"file":"useListbox.js","sources":["../../../src/components/Listbox/useListbox.tsx"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport * as React from 'react';\n\nimport { useMergedRef } from '@/hooks/useMergedRef';\n\nimport type { ListboxProps } from './Listbox';\nimport type { ScrollableListProps } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\nimport { setInputValueByRef, getIndexFromValue, findByValue, getActiveDescendant, useFlattenedData, sanitizeItem } from './util';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue,\n id: nativeId,\n invalid,\n name,\n onChange,\n onFocus,\n onKeyDown,\n value = emptyValue,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const data = useFlattenedData(emptyValue === undefined ? externalData : [{ text: '', value: emptyValue }, ...externalData]);\n const id = React.useMemo(() => nativeId || nanoid(), [nativeId]);\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const currentIndex = value === undefined ? undefined : getIndexFromValue(data, value);\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n setInputValueByRef(inputRef.current, option.value);\n }\n }\n };\n\n const handleListboxChange = (index: number): void => {\n setInputValueByIndex(index);\n };\n\n React.useEffect(() => {\n if (data.length && currentIndex === undefined) {\n if (defaultValue === undefined) {\n setInputValueByIndex(0);\n } else {\n const defaultValueIndex = getIndexFromValue(data, defaultValue);\n\n if (defaultValueIndex !== undefined) {\n setInputValueByIndex(defaultValueIndex);\n }\n }\n }\n }, [data]);\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\n const charKey = event.key;\n\n // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)\n // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed\n if (charKey.length === 1 && /(\\w)/g.test(charKey)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setInputValueByIndex(nextIndex);\n }\n return;\n }\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (currentIndex === undefined && data.length) {\n setInputValueByIndex(0);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n if (onChange) {\n const item = findByValue(data, event.target.value);\n (event as any).detail = sanitizeItem(item);\n\n const indexes = item?.path?.split('.') ?? [];\n\n if (indexes.length > 1) {\n // we don't want to map the current item\n indexes.pop();\n // we need to rebuild the path as we map\n let lastPath: string;\n\n (event as any).detail.parents = indexes.map(i => {\n lastPath = lastPath ? [lastPath, i].join('.') : i;\n return sanitizeItem(data.find(i => i.path === lastPath));\n });\n }\n\n onChange(event);\n }\n };\n\n const list: ScrollableListProps = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n data,\n disabled,\n id,\n invalid,\n onChange: handleListboxChange,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: true,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["i"],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const nanoid = require("nanoid");
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const useMergedRef = require("../../hooks/useMergedRef.cjs");
|
|
6
|
-
const Localization = require("../Provider/Localization.cjs");
|
|
7
6
|
const useTypeahead = require("./useTypeahead.cjs");
|
|
8
7
|
const util = require("./util.cjs");
|
|
8
|
+
const Localization = require("../Provider/Localization.cjs");
|
|
9
9
|
function _interopNamespaceDefault(e) {
|
|
10
10
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
11
11
|
if (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMultiListbox.cjs","sources":["../../../src/components/Listbox/useMultiListbox.tsx"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport * as React from 'react';\n\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { useLocalization } from '../Provider/Localization';\n\nimport type { ListboxProps } from './Listbox';\nimport type { ScrollableListProps, ScrollableListItem, ScrollableListItemValue } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\nimport { setInputValueByRef, getIndexFromValue, getSelectedIndexesFromValue, findByValue, getActiveDescendant } from './util';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useMultiListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue: _,\n id: nativeId,\n name,\n onClick,\n onChange,\n onFocus,\n onKeyDown,\n value,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const { texts } = useLocalization();\n const id = React.useMemo(() => nativeId || nanoid(), [nativeId]);\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const data = React.useMemo(() => {\n return [{ text: texts.listbox.allOption, value: '#ALL-OPTIONS#' }, ...externalData];\n }, [externalData]);\n const [currentIndex, setCurrentIndex] = React.useState(getIndexFromValue(data, value) || 0);\n const [allOptionsSelected, setAllOptionsSelected] = React.useState(false);\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n const [selectedIndexes, setSelectedIndexes] = React.useState(getSelectedIndexesFromValue(data, value));\n\n React.useEffect(() => {\n if (defaultValue && !value) {\n setInputValueByRef(inputRef.current, defaultValue.toString());\n }\n }, []);\n\n React.useEffect(() => {\n const selectableItemsCount = data.filter(item => !item.disabled).length - 1;\n\n if (selectableItemsCount === selectedIndexes.length) {\n setAllOptionsSelected(true);\n } else {\n setAllOptionsSelected(false);\n }\n }, [selectedIndexes, data]);\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n let newInputValue: ScrollableListItemValue = '';\n const currentInputValue = inputRef.current?.value;\n const currentValuesArray = currentInputValue?.split(',') || [];\n const optionAlreadySelected = currentValuesArray.some(val => val === String(option.value));\n\n // Handling the select_all option\n if (option.value === '#ALL-OPTIONS#') {\n if (allOptionsSelected) {\n newInputValue = '';\n } else {\n newInputValue = data\n .filter((option, index) => index !== 0 && !option.disabled)\n .map(option => option.value)\n .join(',');\n }\n } else if (optionAlreadySelected) {\n newInputValue = currentValuesArray.filter(val => val !== String(option.value)).join(',');\n } else {\n newInputValue = currentInputValue ? `${currentInputValue},${option.value}` : option.value;\n }\n\n setInputValueByRef(inputRef.current, newInputValue);\n }\n }\n };\n\n const handleListboxClick = (event: React.MouseEvent<HTMLLIElement>, index: number): void => {\n event.preventDefault();\n\n if (data[index] && !data[index].disabled) {\n setCurrentIndex(index);\n setInputValueByIndex(index);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>, index?: number): void => {\n const charKey = event.key;\n\n // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)\n // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed\n if (charKey.length === 1 && /(\\w)/g.test(charKey)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setCurrentIndex(nextIndex);\n }\n return;\n }\n\n switch (event.key) {\n case ' ': {\n event.preventDefault();\n setInputValueByIndex(index);\n break;\n }\n\n case 'Enter': {\n setInputValueByIndex(index);\n break;\n }\n\n default:\n }\n setCurrentIndex(index === undefined ? 0 : index);\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n setSelectedIndexes(getSelectedIndexesFromValue(data, event.target.value));\n\n if (onChange) {\n const detail: ScrollableListItem[] = [];\n const valuesArray = event.target.value.split(',');\n\n valuesArray.forEach(val => {\n const item = findByValue(data, val);\n if (item) {\n detail.push(item);\n }\n });\n (event as any).detail = detail;\n\n onChange(event);\n }\n };\n\n const list = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n 'aria-multiselectable': true,\n data,\n disabled,\n id,\n onChange: () => null,\n onClick: handleListboxClick,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: false,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n selectedIndexes,\n multiselect: true,\n allOptionsSelected,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["useLocalization","React","nanoid","useMergedRef","getIndexFromValue","useTypeahead","getSelectedIndexesFromValue","setInputValueByRef","option","index","findByValue","getActiveDescendant"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useMultiListbox.cjs","sources":["../../../src/components/Listbox/useMultiListbox.tsx"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport * as React from 'react';\n\nimport { useLocalization } from '@/components';\nimport { useMergedRef } from '@/hooks/useMergedRef';\n\nimport type { ListboxProps } from './Listbox';\nimport type { ScrollableListProps, ScrollableListItem, ScrollableListItemValue } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\nimport { setInputValueByRef, getIndexFromValue, getSelectedIndexesFromValue, findByValue, getActiveDescendant } from './util';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useMultiListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue: _,\n id: nativeId,\n name,\n onClick,\n onChange,\n onFocus,\n onKeyDown,\n value,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const { texts } = useLocalization();\n const id = React.useMemo(() => nativeId || nanoid(), [nativeId]);\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const data = React.useMemo(() => {\n return [{ text: texts.listbox.allOption, value: '#ALL-OPTIONS#' }, ...externalData];\n }, [externalData]);\n const [currentIndex, setCurrentIndex] = React.useState(getIndexFromValue(data, value) || 0);\n const [allOptionsSelected, setAllOptionsSelected] = React.useState(false);\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n const [selectedIndexes, setSelectedIndexes] = React.useState(getSelectedIndexesFromValue(data, value));\n\n React.useEffect(() => {\n if (defaultValue && !value) {\n setInputValueByRef(inputRef.current, defaultValue.toString());\n }\n }, []);\n\n React.useEffect(() => {\n const selectableItemsCount = data.filter(item => !item.disabled).length - 1;\n\n if (selectableItemsCount === selectedIndexes.length) {\n setAllOptionsSelected(true);\n } else {\n setAllOptionsSelected(false);\n }\n }, [selectedIndexes, data]);\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n let newInputValue: ScrollableListItemValue = '';\n const currentInputValue = inputRef.current?.value;\n const currentValuesArray = currentInputValue?.split(',') || [];\n const optionAlreadySelected = currentValuesArray.some(val => val === String(option.value));\n\n // Handling the select_all option\n if (option.value === '#ALL-OPTIONS#') {\n if (allOptionsSelected) {\n newInputValue = '';\n } else {\n newInputValue = data\n .filter((option, index) => index !== 0 && !option.disabled)\n .map(option => option.value)\n .join(',');\n }\n } else if (optionAlreadySelected) {\n newInputValue = currentValuesArray.filter(val => val !== String(option.value)).join(',');\n } else {\n newInputValue = currentInputValue ? `${currentInputValue},${option.value}` : option.value;\n }\n\n setInputValueByRef(inputRef.current, newInputValue);\n }\n }\n };\n\n const handleListboxClick = (event: React.MouseEvent<HTMLLIElement>, index: number): void => {\n event.preventDefault();\n\n if (data[index] && !data[index].disabled) {\n setCurrentIndex(index);\n setInputValueByIndex(index);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>, index?: number): void => {\n const charKey = event.key;\n\n // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)\n // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed\n if (charKey.length === 1 && /(\\w)/g.test(charKey)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setCurrentIndex(nextIndex);\n }\n return;\n }\n\n switch (event.key) {\n case ' ': {\n event.preventDefault();\n setInputValueByIndex(index);\n break;\n }\n\n case 'Enter': {\n setInputValueByIndex(index);\n break;\n }\n\n default:\n }\n setCurrentIndex(index === undefined ? 0 : index);\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n setSelectedIndexes(getSelectedIndexesFromValue(data, event.target.value));\n\n if (onChange) {\n const detail: ScrollableListItem[] = [];\n const valuesArray = event.target.value.split(',');\n\n valuesArray.forEach(val => {\n const item = findByValue(data, val);\n if (item) {\n detail.push(item);\n }\n });\n (event as any).detail = detail;\n\n onChange(event);\n }\n };\n\n const list = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n 'aria-multiselectable': true,\n data,\n disabled,\n id,\n onChange: () => null,\n onClick: handleListboxClick,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: false,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n selectedIndexes,\n multiselect: true,\n allOptionsSelected,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["useLocalization","React","nanoid","useMergedRef","getIndexFromValue","useTypeahead","getSelectedIndexesFromValue","setInputValueByRef","option","index","findByValue","getActiveDescendant"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { nanoid } from "nanoid";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { useMergedRef } from "../../hooks/useMergedRef.js";
|
|
4
|
-
import { useLocalization } from "../Provider/Localization.js";
|
|
5
4
|
import { useTypeahead } from "./useTypeahead.js";
|
|
6
5
|
import { getIndexFromValue, getSelectedIndexesFromValue, setInputValueByRef, getActiveDescendant, findByValue } from "./util.js";
|
|
6
|
+
import { useLocalization } from "../Provider/Localization.js";
|
|
7
7
|
const useMultiListbox = ({
|
|
8
8
|
data: externalData = [],
|
|
9
9
|
defaultValue,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMultiListbox.js","sources":["../../../src/components/Listbox/useMultiListbox.tsx"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport * as React from 'react';\n\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { useLocalization } from '../Provider/Localization';\n\nimport type { ListboxProps } from './Listbox';\nimport type { ScrollableListProps, ScrollableListItem, ScrollableListItemValue } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\nimport { setInputValueByRef, getIndexFromValue, getSelectedIndexesFromValue, findByValue, getActiveDescendant } from './util';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useMultiListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue: _,\n id: nativeId,\n name,\n onClick,\n onChange,\n onFocus,\n onKeyDown,\n value,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const { texts } = useLocalization();\n const id = React.useMemo(() => nativeId || nanoid(), [nativeId]);\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const data = React.useMemo(() => {\n return [{ text: texts.listbox.allOption, value: '#ALL-OPTIONS#' }, ...externalData];\n }, [externalData]);\n const [currentIndex, setCurrentIndex] = React.useState(getIndexFromValue(data, value) || 0);\n const [allOptionsSelected, setAllOptionsSelected] = React.useState(false);\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n const [selectedIndexes, setSelectedIndexes] = React.useState(getSelectedIndexesFromValue(data, value));\n\n React.useEffect(() => {\n if (defaultValue && !value) {\n setInputValueByRef(inputRef.current, defaultValue.toString());\n }\n }, []);\n\n React.useEffect(() => {\n const selectableItemsCount = data.filter(item => !item.disabled).length - 1;\n\n if (selectableItemsCount === selectedIndexes.length) {\n setAllOptionsSelected(true);\n } else {\n setAllOptionsSelected(false);\n }\n }, [selectedIndexes, data]);\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n let newInputValue: ScrollableListItemValue = '';\n const currentInputValue = inputRef.current?.value;\n const currentValuesArray = currentInputValue?.split(',') || [];\n const optionAlreadySelected = currentValuesArray.some(val => val === String(option.value));\n\n // Handling the select_all option\n if (option.value === '#ALL-OPTIONS#') {\n if (allOptionsSelected) {\n newInputValue = '';\n } else {\n newInputValue = data\n .filter((option, index) => index !== 0 && !option.disabled)\n .map(option => option.value)\n .join(',');\n }\n } else if (optionAlreadySelected) {\n newInputValue = currentValuesArray.filter(val => val !== String(option.value)).join(',');\n } else {\n newInputValue = currentInputValue ? `${currentInputValue},${option.value}` : option.value;\n }\n\n setInputValueByRef(inputRef.current, newInputValue);\n }\n }\n };\n\n const handleListboxClick = (event: React.MouseEvent<HTMLLIElement>, index: number): void => {\n event.preventDefault();\n\n if (data[index] && !data[index].disabled) {\n setCurrentIndex(index);\n setInputValueByIndex(index);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>, index?: number): void => {\n const charKey = event.key;\n\n // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)\n // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed\n if (charKey.length === 1 && /(\\w)/g.test(charKey)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setCurrentIndex(nextIndex);\n }\n return;\n }\n\n switch (event.key) {\n case ' ': {\n event.preventDefault();\n setInputValueByIndex(index);\n break;\n }\n\n case 'Enter': {\n setInputValueByIndex(index);\n break;\n }\n\n default:\n }\n setCurrentIndex(index === undefined ? 0 : index);\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n setSelectedIndexes(getSelectedIndexesFromValue(data, event.target.value));\n\n if (onChange) {\n const detail: ScrollableListItem[] = [];\n const valuesArray = event.target.value.split(',');\n\n valuesArray.forEach(val => {\n const item = findByValue(data, val);\n if (item) {\n detail.push(item);\n }\n });\n (event as any).detail = detail;\n\n onChange(event);\n }\n };\n\n const list = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n 'aria-multiselectable': true,\n data,\n disabled,\n id,\n onChange: () => null,\n onClick: handleListboxClick,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: false,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n selectedIndexes,\n multiselect: true,\n allOptionsSelected,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["option","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useMultiListbox.js","sources":["../../../src/components/Listbox/useMultiListbox.tsx"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport * as React from 'react';\n\nimport { useLocalization } from '@/components';\nimport { useMergedRef } from '@/hooks/useMergedRef';\n\nimport type { ListboxProps } from './Listbox';\nimport type { ScrollableListProps, ScrollableListItem, ScrollableListItemValue } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\nimport { setInputValueByRef, getIndexFromValue, getSelectedIndexesFromValue, findByValue, getActiveDescendant } from './util';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useMultiListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue: _,\n id: nativeId,\n name,\n onClick,\n onChange,\n onFocus,\n onKeyDown,\n value,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const { texts } = useLocalization();\n const id = React.useMemo(() => nativeId || nanoid(), [nativeId]);\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const data = React.useMemo(() => {\n return [{ text: texts.listbox.allOption, value: '#ALL-OPTIONS#' }, ...externalData];\n }, [externalData]);\n const [currentIndex, setCurrentIndex] = React.useState(getIndexFromValue(data, value) || 0);\n const [allOptionsSelected, setAllOptionsSelected] = React.useState(false);\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n const [selectedIndexes, setSelectedIndexes] = React.useState(getSelectedIndexesFromValue(data, value));\n\n React.useEffect(() => {\n if (defaultValue && !value) {\n setInputValueByRef(inputRef.current, defaultValue.toString());\n }\n }, []);\n\n React.useEffect(() => {\n const selectableItemsCount = data.filter(item => !item.disabled).length - 1;\n\n if (selectableItemsCount === selectedIndexes.length) {\n setAllOptionsSelected(true);\n } else {\n setAllOptionsSelected(false);\n }\n }, [selectedIndexes, data]);\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n let newInputValue: ScrollableListItemValue = '';\n const currentInputValue = inputRef.current?.value;\n const currentValuesArray = currentInputValue?.split(',') || [];\n const optionAlreadySelected = currentValuesArray.some(val => val === String(option.value));\n\n // Handling the select_all option\n if (option.value === '#ALL-OPTIONS#') {\n if (allOptionsSelected) {\n newInputValue = '';\n } else {\n newInputValue = data\n .filter((option, index) => index !== 0 && !option.disabled)\n .map(option => option.value)\n .join(',');\n }\n } else if (optionAlreadySelected) {\n newInputValue = currentValuesArray.filter(val => val !== String(option.value)).join(',');\n } else {\n newInputValue = currentInputValue ? `${currentInputValue},${option.value}` : option.value;\n }\n\n setInputValueByRef(inputRef.current, newInputValue);\n }\n }\n };\n\n const handleListboxClick = (event: React.MouseEvent<HTMLLIElement>, index: number): void => {\n event.preventDefault();\n\n if (data[index] && !data[index].disabled) {\n setCurrentIndex(index);\n setInputValueByIndex(index);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>, index?: number): void => {\n const charKey = event.key;\n\n // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)\n // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed\n if (charKey.length === 1 && /(\\w)/g.test(charKey)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setCurrentIndex(nextIndex);\n }\n return;\n }\n\n switch (event.key) {\n case ' ': {\n event.preventDefault();\n setInputValueByIndex(index);\n break;\n }\n\n case 'Enter': {\n setInputValueByIndex(index);\n break;\n }\n\n default:\n }\n setCurrentIndex(index === undefined ? 0 : index);\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n setSelectedIndexes(getSelectedIndexesFromValue(data, event.target.value));\n\n if (onChange) {\n const detail: ScrollableListItem[] = [];\n const valuesArray = event.target.value.split(',');\n\n valuesArray.forEach(val => {\n const item = findByValue(data, val);\n if (item) {\n detail.push(item);\n }\n });\n (event as any).detail = detail;\n\n onChange(event);\n }\n };\n\n const list = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n 'aria-multiselectable': true,\n data,\n disabled,\n id,\n onChange: () => null,\n onClick: handleListboxClick,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: false,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n selectedIndexes,\n multiselect: true,\n allOptionsSelected,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["option","index"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTypeahead.cjs","sources":["../../../src/components/Listbox/useTypeahead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTimer } from '
|
|
1
|
+
{"version":3,"file":"useTypeahead.cjs","sources":["../../../src/components/Listbox/useTypeahead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTimer } from '@/utils/hooks/useTimer';\n\nimport type { ScrollableListItem } from './ScrollableList';\nimport { findNextIndexByValue } from './util';\n\ntype useTypeahead = {\n getNextIndex: (key: string) => number;\n};\n\ntype useTypeaheadProps = {\n data: ScrollableListItem[];\n currentIndex: number | undefined;\n};\n\nexport const useTypeahead = ({ data, currentIndex }: useTypeaheadProps): useTypeahead => {\n const typeaheadQuery = React.useRef<string | undefined>(undefined);\n const typeaheadQueryTimer = useTimer(1000, () => {\n typeaheadQuery.current = undefined;\n });\n\n const getNextIndex = (charKey: string): number => {\n const query = (typeaheadQuery.current ? typeaheadQuery.current + charKey : charKey).toLowerCase();\n const nextIndex = findNextIndexByValue(data, query, currentIndex);\n\n typeaheadQueryTimer.start();\n typeaheadQuery.current = query;\n\n return nextIndex;\n };\n\n return { getNextIndex };\n};\n"],"names":["React","useTimer","findNextIndexByValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAgBO,MAAM,eAAe,CAAC,EAAE,MAAM,mBAAoD;AACrF,QAAM,iBAAiBA,iBAAM,OAA2B,MAAS;AACjE,QAAM,sBAAsBC,kBAAS,KAAM,MAAM;AAC7C,mBAAe,UAAU;AAAA,EAC7B,CAAC;AAED,QAAM,eAAe,CAAC,YAA4B;AAC9C,UAAM,SAAS,eAAe,UAAU,eAAe,UAAU,UAAU,SAAS,YAAA;AACpF,UAAM,YAAYC,KAAAA,qBAAqB,MAAM,OAAO,YAAY;AAEhE,wBAAoB,MAAA;AACpB,mBAAe,UAAU;AAEzB,WAAO;AAAA,EACX;AAEA,SAAO,EAAE,aAAA;AACb;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTypeahead.js","sources":["../../../src/components/Listbox/useTypeahead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTimer } from '
|
|
1
|
+
{"version":3,"file":"useTypeahead.js","sources":["../../../src/components/Listbox/useTypeahead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTimer } from '@/utils/hooks/useTimer';\n\nimport type { ScrollableListItem } from './ScrollableList';\nimport { findNextIndexByValue } from './util';\n\ntype useTypeahead = {\n getNextIndex: (key: string) => number;\n};\n\ntype useTypeaheadProps = {\n data: ScrollableListItem[];\n currentIndex: number | undefined;\n};\n\nexport const useTypeahead = ({ data, currentIndex }: useTypeaheadProps): useTypeahead => {\n const typeaheadQuery = React.useRef<string | undefined>(undefined);\n const typeaheadQueryTimer = useTimer(1000, () => {\n typeaheadQuery.current = undefined;\n });\n\n const getNextIndex = (charKey: string): number => {\n const query = (typeaheadQuery.current ? typeaheadQuery.current + charKey : charKey).toLowerCase();\n const nextIndex = findNextIndexByValue(data, query, currentIndex);\n\n typeaheadQueryTimer.start();\n typeaheadQuery.current = query;\n\n return nextIndex;\n };\n\n return { getNextIndex };\n};\n"],"names":[],"mappings":";;;AAgBO,MAAM,eAAe,CAAC,EAAE,MAAM,mBAAoD;AACrF,QAAM,iBAAiB,MAAM,OAA2B,MAAS;AACjE,QAAM,sBAAsB,SAAS,KAAM,MAAM;AAC7C,mBAAe,UAAU;AAAA,EAC7B,CAAC;AAED,QAAM,eAAe,CAAC,YAA4B;AAC9C,UAAM,SAAS,eAAe,UAAU,eAAe,UAAU,UAAU,SAAS,YAAA;AACpF,UAAM,YAAY,qBAAqB,MAAM,OAAO,YAAY;AAEhE,wBAAoB,MAAA;AACpB,mBAAe,UAAU;AAEzB,WAAO;AAAA,EACX;AAEA,SAAO,EAAE,aAAA;AACb;"}
|