@digdir/designsystemet-react 1.0.0-next.15 → 1.0.0-next.16
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/cjs/components/Accordion/index.js +2 -2
- package/dist/cjs/components/Breadcrumbs/BreadcrumbsItem.js +11 -0
- package/dist/cjs/components/Breadcrumbs/BreadcrumbsLink.js +12 -0
- package/dist/cjs/components/Breadcrumbs/BreadcrumbsList.js +23 -0
- package/dist/cjs/components/Breadcrumbs/BreadcrumbsNav.js +11 -0
- package/dist/cjs/components/Breadcrumbs/BreadcrumbsRoot.js +11 -0
- package/dist/cjs/components/Breadcrumbs/index.js +43 -0
- package/dist/cjs/components/Divider/Divider.js +3 -4
- package/dist/cjs/components/DropdownMenu/DropdownMenuContent.js +2 -2
- package/dist/cjs/components/Modal/ModalDialog.js +1 -2
- package/dist/cjs/components/Modal/ModalHeader.js +2 -2
- package/dist/cjs/components/Modal/index.js +1 -0
- package/dist/cjs/components/Popover/PopoverContent.js +3 -4
- package/dist/cjs/components/Tabs/TabList.js +1 -1
- package/dist/cjs/components/ToggleGroup/ToggleGroupRoot.js +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js +3 -4
- package/dist/cjs/components/form/Checkbox/{Group/Group.js → CheckboxGroup.js} +3 -2
- package/dist/cjs/components/form/Checkbox/index.js +3 -3
- package/dist/cjs/components/form/Checkbox/useCheckbox.js +2 -2
- package/dist/cjs/components/form/Combobox/Combobox.js +2 -2
- package/dist/cjs/components/form/Combobox/Option/Description.js +1 -2
- package/dist/cjs/components/form/Combobox/internal/ComboboxChips.js +1 -2
- package/dist/cjs/components/form/Combobox/internal/ComboboxClearButton.js +1 -2
- package/dist/cjs/components/form/Combobox/internal/ComboboxError.js +1 -2
- package/dist/cjs/components/form/Combobox/internal/ComboboxInput.js +5 -6
- package/dist/cjs/components/form/Combobox/internal/ComboboxLabel.js +1 -2
- package/dist/cjs/components/form/Combobox/internal/ComboboxNative.js +1 -2
- package/dist/cjs/components/form/Combobox/useCombobox.js +5 -0
- package/dist/cjs/components/form/Combobox/useFloatingCombobox.js +4 -4
- package/dist/cjs/components/form/NativeSelect/NativeSelect.js +2 -2
- package/dist/cjs/components/form/NativeSelect/useNativeSelect.js +19 -1
- package/dist/cjs/components/form/Radio/{Group/Group.js → RadioGroup.js} +3 -3
- package/dist/cjs/components/form/Radio/index.js +3 -3
- package/dist/cjs/components/form/Radio/useRadio.js +2 -2
- package/dist/cjs/components/form/Switch/useSwitch.js +2 -2
- package/dist/cjs/index.js +50 -36
- package/dist/cjs/node_modules/@floating-ui/core/dist/floating-ui.core.js +23 -9
- package/dist/cjs/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +39 -24
- package/dist/cjs/node_modules/@floating-ui/react/dist/floating-ui.react.js +848 -729
- package/dist/cjs/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js +1 -1
- package/dist/cjs/node_modules/@floating-ui/react/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +68 -0
- package/dist/cjs/node_modules/@floating-ui/react/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +11 -0
- package/dist/cjs/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +97 -45
- package/dist/cjs/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +17 -6
- package/dist/cjs/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +14 -5
- package/dist/cjs/node_modules/@radix-ui/react-compose-refs/dist/index.js +10 -14
- package/dist/cjs/node_modules/@radix-ui/react-slot/dist/index.js +88 -69
- package/dist/cjs/node_modules/@tanstack/virtual-core/dist/esm/index.js +134 -62
- package/dist/cjs/node_modules/@tanstack/virtual-core/dist/esm/utils.js +3 -5
- package/dist/cjs/utilities/AnimateHeight/AnimateHeight.js +4 -1
- package/dist/cjs/utilities/RovingFocus/RovingFocusItem.js +34 -6
- package/dist/cjs/utilities/RovingFocus/RovingFocusRoot.js +3 -1
- package/dist/cjs/utilities/RovingFocus/useRovingFocus.js +2 -1
- package/dist/esm/components/Accordion/index.js +2 -2
- package/dist/esm/components/Box/Box.js +2 -2
- package/dist/esm/components/Breadcrumbs/BreadcrumbsItem.js +9 -0
- package/dist/esm/components/Breadcrumbs/BreadcrumbsLink.js +10 -0
- package/dist/esm/components/Breadcrumbs/BreadcrumbsList.js +21 -0
- package/dist/esm/components/Breadcrumbs/BreadcrumbsNav.js +9 -0
- package/dist/esm/components/Breadcrumbs/BreadcrumbsRoot.js +9 -0
- package/dist/esm/components/Breadcrumbs/index.js +36 -0
- package/dist/esm/components/Button/Button.js +2 -2
- package/dist/esm/components/Card/Card.js +2 -2
- package/dist/esm/components/Card/CardContent.js +2 -2
- package/dist/esm/components/Card/CardFooter.js +2 -2
- package/dist/esm/components/Card/CardHeader.js +2 -2
- package/dist/esm/components/Card/CardMedia.js +2 -2
- package/dist/esm/components/Divider/Divider.js +3 -4
- package/dist/esm/components/DropdownMenu/DropdownMenuContent.js +2 -2
- package/dist/esm/components/DropdownMenu/DropdownMenuTrigger.js +2 -2
- package/dist/esm/components/ErrorSummary/ErrorSummaryRoot.js +2 -2
- package/dist/esm/components/Link/Link.js +2 -2
- package/dist/esm/components/List/ListItem.js +2 -2
- package/dist/esm/components/List/ListRoot.js +2 -2
- package/dist/esm/components/List/Lists.js +3 -3
- package/dist/esm/components/Modal/ModaContent.js +2 -2
- package/dist/esm/components/Modal/ModalDialog.js +5 -6
- package/dist/esm/components/Modal/ModalFooter.js +2 -2
- package/dist/esm/components/Modal/ModalHeader.js +4 -4
- package/dist/esm/components/Modal/ModalTrigger.js +2 -2
- package/dist/esm/components/Modal/index.js +1 -1
- package/dist/esm/components/Pagination/PaginationContent.js +2 -2
- package/dist/esm/components/Pagination/PaginationItem.js +2 -2
- package/dist/esm/components/Pagination/PaginationRoot.js +2 -2
- package/dist/esm/components/Popover/PopoverContent.js +2 -3
- package/dist/esm/components/Popover/PopoverTrigger.js +2 -2
- package/dist/esm/components/Tabs/TabList.js +1 -1
- package/dist/esm/components/ToggleGroup/ToggleGroupRoot.js +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +2 -3
- package/dist/esm/components/Typography/ErrorMessage/ErrorMessage.js +2 -2
- package/dist/esm/components/Typography/Heading/Heading.js +2 -2
- package/dist/esm/components/Typography/Ingress/Ingress.js +2 -2
- package/dist/esm/components/Typography/Label/Label.js +2 -2
- package/dist/esm/components/Typography/Paragraph/Paragraph.js +2 -2
- package/dist/esm/components/form/Checkbox/{Group/Group.js → CheckboxGroup.js} +3 -2
- package/dist/esm/components/form/Checkbox/index.js +1 -1
- package/dist/esm/components/form/Checkbox/useCheckbox.js +1 -1
- package/dist/esm/components/form/Combobox/Combobox.js +2 -2
- package/dist/esm/components/form/Combobox/Custom.js +2 -2
- package/dist/esm/components/form/Combobox/Option/Description.js +1 -2
- package/dist/esm/components/form/Combobox/internal/ComboboxChips.js +1 -2
- package/dist/esm/components/form/Combobox/internal/ComboboxClearButton.js +1 -2
- package/dist/esm/components/form/Combobox/internal/ComboboxError.js +1 -2
- package/dist/esm/components/form/Combobox/internal/ComboboxInput.js +5 -6
- package/dist/esm/components/form/Combobox/internal/ComboboxLabel.js +1 -2
- package/dist/esm/components/form/Combobox/internal/ComboboxNative.js +1 -2
- package/dist/esm/components/form/Combobox/useCombobox.js +5 -0
- package/dist/esm/components/form/Combobox/useFloatingCombobox.js +2 -2
- package/dist/esm/components/form/NativeSelect/NativeSelect.js +2 -2
- package/dist/esm/components/form/NativeSelect/useNativeSelect.js +19 -1
- package/dist/esm/components/form/Radio/{Group/Group.js → RadioGroup.js} +3 -3
- package/dist/esm/components/form/Radio/index.js +1 -1
- package/dist/esm/components/form/Radio/useRadio.js +1 -1
- package/dist/esm/components/form/Switch/useSwitch.js +1 -1
- package/dist/esm/index.js +9 -2
- package/dist/esm/node_modules/@floating-ui/core/dist/floating-ui.core.js +24 -10
- package/dist/esm/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +41 -26
- package/dist/esm/node_modules/@floating-ui/react/dist/floating-ui.react.js +830 -712
- package/dist/esm/node_modules/@floating-ui/react/dist/floating-ui.react.utils.js +1 -1
- package/dist/esm/node_modules/@floating-ui/react/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +57 -0
- package/dist/esm/node_modules/@floating-ui/react/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +9 -0
- package/dist/esm/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +96 -45
- package/dist/esm/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +17 -7
- package/dist/esm/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +14 -5
- package/dist/esm/node_modules/@radix-ui/react-compose-refs/dist/index.js +10 -14
- package/dist/esm/node_modules/@radix-ui/react-slot/dist/index.js +71 -71
- package/dist/esm/node_modules/@tanstack/virtual-core/dist/esm/index.js +134 -62
- package/dist/esm/node_modules/@tanstack/virtual-core/dist/esm/utils.js +3 -5
- package/dist/esm/utilities/AnimateHeight/AnimateHeight.js +4 -1
- package/dist/esm/utilities/RovingFocus/RovingFocusItem.js +36 -8
- package/dist/esm/utilities/RovingFocus/RovingFocusRoot.js +5 -3
- package/dist/esm/utilities/RovingFocus/useRovingFocus.js +2 -1
- package/dist/types/components/Accordion/AccordionHeading.d.ts +1 -1
- package/dist/types/components/Accordion/AccordionHeading.d.ts.map +1 -1
- package/dist/types/components/Accordion/AccordionItem.d.ts +2 -2
- package/dist/types/components/Accordion/AccordionItem.d.ts.map +1 -1
- package/dist/types/components/Accordion/AccordionRoot.d.ts +2 -2
- package/dist/types/components/Accordion/AccordionRoot.d.ts.map +1 -1
- package/dist/types/components/Accordion/index.d.ts +2 -2
- package/dist/types/components/Accordion/index.d.ts.map +1 -1
- package/dist/types/components/Alert/Alert.d.ts +3 -3
- package/dist/types/components/Alert/Alert.d.ts.map +1 -1
- package/dist/types/components/Badge/Badge.d.ts +93 -0
- package/dist/types/components/Badge/Badge.d.ts.map +1 -0
- package/dist/types/components/Badge/index.d.ts +3 -0
- package/dist/types/components/Badge/index.d.ts.map +1 -0
- package/dist/types/components/Box/Box.d.ts +5 -5
- package/dist/types/components/Box/Box.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsItem.d.ts +4 -0
- package/dist/types/components/Breadcrumbs/BreadcrumbsItem.d.ts.map +1 -0
- package/dist/types/components/Breadcrumbs/BreadcrumbsLink.d.ts +10 -0
- package/dist/types/components/Breadcrumbs/BreadcrumbsLink.d.ts.map +1 -0
- package/dist/types/components/Breadcrumbs/BreadcrumbsList.d.ts +4 -0
- package/dist/types/components/Breadcrumbs/BreadcrumbsList.d.ts.map +1 -0
- package/dist/types/components/Breadcrumbs/BreadcrumbsNav.d.ts +14 -0
- package/dist/types/components/Breadcrumbs/BreadcrumbsNav.d.ts.map +1 -0
- package/dist/types/components/Breadcrumbs/BreadcrumbsRoot.d.ts +16 -0
- package/dist/types/components/Breadcrumbs/BreadcrumbsRoot.d.ts.map +1 -0
- package/dist/types/components/Breadcrumbs/index.d.ts +44 -0
- package/dist/types/components/Breadcrumbs/index.d.ts.map +1 -0
- package/dist/types/components/Button/Button.d.ts +6 -6
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/Card/Card.d.ts +3 -3
- package/dist/types/components/Card/Card.d.ts.map +1 -1
- package/dist/types/components/Card/CardContent.d.ts +1 -1
- package/dist/types/components/Card/CardContent.d.ts.map +1 -1
- package/dist/types/components/Card/CardFooter.d.ts +1 -1
- package/dist/types/components/Card/CardFooter.d.ts.map +1 -1
- package/dist/types/components/Card/CardHeader.d.ts +1 -1
- package/dist/types/components/Card/CardHeader.d.ts.map +1 -1
- package/dist/types/components/Card/CardMedia.d.ts +1 -1
- package/dist/types/components/Card/CardMedia.d.ts.map +1 -1
- package/dist/types/components/Card/index.d.ts.map +1 -1
- package/dist/types/components/Chip/Group/Group.d.ts +1 -1
- package/dist/types/components/Chip/Removable/Removable.d.ts +1 -1
- package/dist/types/components/Chip/Toggle/Toggle.d.ts +3 -3
- package/dist/types/components/Chip/Toggle/Toggle.d.ts.map +1 -1
- package/dist/types/components/Divider/Divider.d.ts +1 -1
- package/dist/types/components/Divider/Divider.d.ts.map +1 -1
- package/dist/types/components/DropdownMenu/DropdownMenuContent.d.ts.map +1 -1
- package/dist/types/components/DropdownMenu/DropdownMenuGroup.d.ts.map +1 -1
- package/dist/types/components/DropdownMenu/DropdownMenuTrigger.d.ts +7 -7
- package/dist/types/components/DropdownMenu/index.d.ts.map +1 -1
- package/dist/types/components/ErrorSummary/ErrorSummaryRoot.d.ts +1 -1
- package/dist/types/components/ErrorSummary/index.d.ts.map +1 -1
- package/dist/types/components/Link/Link.d.ts +4 -4
- package/dist/types/components/Link/Link.d.ts.map +1 -1
- package/dist/types/components/List/ListHeading.d.ts +4 -4
- package/dist/types/components/List/ListItem.d.ts +1 -1
- package/dist/types/components/List/ListItem.d.ts.map +1 -1
- package/dist/types/components/List/ListRoot.d.ts +2 -2
- package/dist/types/components/List/ListRoot.d.ts.map +1 -1
- package/dist/types/components/List/Lists.d.ts +2 -2
- package/dist/types/components/List/Lists.d.ts.map +1 -1
- package/dist/types/components/Modal/ModaContent.d.ts +1 -1
- package/dist/types/components/Modal/ModaContent.d.ts.map +1 -1
- package/dist/types/components/Modal/ModalDialog.d.ts +4 -4
- package/dist/types/components/Modal/ModalDialog.d.ts.map +1 -1
- package/dist/types/components/Modal/ModalFooter.d.ts +1 -1
- package/dist/types/components/Modal/ModalFooter.d.ts.map +1 -1
- package/dist/types/components/Modal/ModalHeader.d.ts +19 -3
- package/dist/types/components/Modal/ModalHeader.d.ts.map +1 -1
- package/dist/types/components/Modal/ModalTrigger.d.ts +7 -7
- package/dist/types/components/Modal/index.d.ts +1 -1
- package/dist/types/components/Modal/index.d.ts.map +1 -1
- package/dist/types/components/Modal/useModalState.d.ts.map +1 -1
- package/dist/types/components/Pagination/Pagination.d.ts +4 -4
- package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/Pagination/PaginationButton.d.ts +1 -1
- package/dist/types/components/Pagination/PaginationButton.d.ts.map +1 -1
- package/dist/types/components/Pagination/PaginationContent.d.ts +1 -1
- package/dist/types/components/Pagination/PaginationContent.d.ts.map +1 -1
- package/dist/types/components/Pagination/PaginationItem.d.ts +1 -1
- package/dist/types/components/Pagination/PaginationItem.d.ts.map +1 -1
- package/dist/types/components/Pagination/PaginationNextPrev.d.ts +2 -2
- package/dist/types/components/Pagination/PaginationRoot.d.ts +3 -3
- package/dist/types/components/Pagination/PaginationRoot.d.ts.map +1 -1
- package/dist/types/components/Pagination/index.d.ts.map +1 -1
- package/dist/types/components/Popover/PopoverContent.d.ts.map +1 -1
- package/dist/types/components/Popover/PopoverRoot.d.ts +10 -10
- package/dist/types/components/Popover/PopoverRoot.d.ts.map +1 -1
- package/dist/types/components/Popover/PopoverTrigger.d.ts +7 -7
- package/dist/types/components/Popover/index.d.ts.map +1 -1
- package/dist/types/components/SkipLink/SkipLink.d.ts.map +1 -1
- package/dist/types/components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/types/components/Table/Table.d.ts +4 -4
- package/dist/types/components/Table/Table.d.ts.map +1 -1
- package/dist/types/components/Table/TableHeaderCell.d.ts +3 -3
- package/dist/types/components/Table/TableHeaderCell.d.ts.map +1 -1
- package/dist/types/components/Table/index.d.ts.map +1 -1
- package/dist/types/components/Tabs/TabList.d.ts.map +1 -1
- package/dist/types/components/Tabs/TabsRoot.d.ts +4 -4
- package/dist/types/components/Tabs/TabsRoot.d.ts.map +1 -1
- package/dist/types/components/Tag/Tag.d.ts +1 -1
- package/dist/types/components/Tag/Tag.d.ts.map +1 -1
- package/dist/types/components/ToggleGroup/ToggleGroupItem/ToggleGroupItem.d.ts +1 -1
- package/dist/types/components/ToggleGroup/ToggleGroupItem/ToggleGroupItem.d.ts.map +1 -1
- package/dist/types/components/ToggleGroup/ToggleGroupRoot.d.ts +5 -5
- package/dist/types/components/ToggleGroup/ToggleGroupRoot.d.ts.map +1 -1
- package/dist/types/components/ToggleGroup/index.d.ts.map +1 -1
- package/dist/types/components/Tooltip/Tooltip.d.ts +4 -4
- package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/components/Typography/ErrorMessage/ErrorMessage.d.ts +4 -4
- package/dist/types/components/Typography/ErrorMessage/ErrorMessage.d.ts.map +1 -1
- package/dist/types/components/Typography/Heading/Heading.d.ts +4 -4
- package/dist/types/components/Typography/Heading/Heading.d.ts.map +1 -1
- package/dist/types/components/Typography/Ingress/Ingress.d.ts +3 -3
- package/dist/types/components/Typography/Ingress/Ingress.d.ts.map +1 -1
- package/dist/types/components/Typography/Label/Label.d.ts +4 -4
- package/dist/types/components/Typography/Label/Label.d.ts.map +1 -1
- package/dist/types/components/Typography/Paragraph/Paragraph.d.ts +4 -4
- package/dist/types/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
- package/dist/types/components/form/CharacterCounter.d.ts.map +1 -1
- package/dist/types/components/form/Checkbox/Checkbox.d.ts +1 -1
- package/dist/types/components/form/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/types/components/form/Checkbox/{Group/Group.d.ts → CheckboxGroup.d.ts} +5 -5
- package/dist/types/components/form/Checkbox/CheckboxGroup.d.ts.map +1 -0
- package/dist/types/components/form/Checkbox/index.d.ts +2 -2
- package/dist/types/components/form/Checkbox/index.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/Combobox.d.ts +42 -42
- package/dist/types/components/form/Combobox/Combobox.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/ComboboxIdContext.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/Empty.d.ts +1 -1
- package/dist/types/components/form/Combobox/Empty.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/Option/Option.d.ts +2 -2
- package/dist/types/components/form/Combobox/Option/Option.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/Option/useComboboxOption.d.ts +1 -1
- package/dist/types/components/form/Combobox/index.d.ts +3 -0
- package/dist/types/components/form/Combobox/index.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/useCombobox.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/useFloatingCombobox.d.ts +9 -9
- package/dist/types/components/form/Fieldset/Fieldset.d.ts +3 -3
- package/dist/types/components/form/Fieldset/Fieldset.d.ts.map +1 -1
- package/dist/types/components/form/Fieldset/useFieldset.d.ts +2 -2
- package/dist/types/components/form/NativeSelect/NativeSelect.d.ts +6 -6
- package/dist/types/components/form/NativeSelect/NativeSelect.d.ts.map +1 -1
- package/dist/types/components/form/NativeSelect/useNativeSelect.d.ts +1 -1
- package/dist/types/components/form/NativeSelect/useNativeSelect.d.ts.map +1 -1
- package/dist/types/components/form/Radio/{Group/Group.d.ts → RadioGroup.d.ts} +7 -7
- package/dist/types/components/form/Radio/RadioGroup.d.ts.map +1 -0
- package/dist/types/components/form/Radio/index.d.ts +2 -2
- package/dist/types/components/form/Radio/index.d.ts.map +1 -1
- package/dist/types/components/form/Radio/useRadio.d.ts.map +1 -1
- package/dist/types/components/form/Search/Search.d.ts +7 -7
- package/dist/types/components/form/Search/Search.d.ts.map +1 -1
- package/dist/types/components/form/Switch/Switch.d.ts +2 -2
- package/dist/types/components/form/Switch/Switch.d.ts.map +1 -1
- package/dist/types/components/form/Textarea/Textarea.d.ts +7 -7
- package/dist/types/components/form/Textarea/Textarea.d.ts.map +1 -1
- package/dist/types/components/form/Textfield/Textfield.d.ts +7 -7
- package/dist/types/components/form/Textfield/Textfield.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/utilities/AnimateHeight/AnimateHeight.d.ts.map +1 -1
- package/dist/types/utilities/RovingFocus/RovingFocusItem.d.ts +2 -2
- package/dist/types/utilities/RovingFocus/RovingFocusItem.d.ts.map +1 -1
- package/dist/types/utilities/RovingFocus/RovingFocusRoot.d.ts +10 -2
- package/dist/types/utilities/RovingFocus/RovingFocusRoot.d.ts.map +1 -1
- package/dist/types/utilities/RovingFocus/useRovingFocus.d.ts +11 -10
- package/dist/types/utilities/RovingFocus/useRovingFocus.d.ts.map +1 -1
- package/package.json +18 -8
- package/dist/cjs/node_modules/@babel/runtime/helpers/esm/extends.js +0 -19
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/extends.js +0 -17
- package/dist/types/components/form/Checkbox/Group/Group.d.ts.map +0 -1
- package/dist/types/components/form/Checkbox/Group/index.d.ts +0 -2
- package/dist/types/components/form/Checkbox/Group/index.d.ts.map +0 -1
- package/dist/types/components/form/Radio/Group/Group.d.ts.map +0 -1
- package/dist/types/components/form/Radio/Group/index.d.ts +0 -2
- package/dist/types/components/form/Radio/Group/index.d.ts.map +0 -1
|
@@ -118,9 +118,11 @@ class Virtualizer {
|
|
|
118
118
|
this.measurementsCache = [];
|
|
119
119
|
this.itemSizeCache = /* @__PURE__ */ new Map();
|
|
120
120
|
this.pendingMeasuredCacheIndexes = [];
|
|
121
|
+
this.scrollRect = null;
|
|
122
|
+
this.scrollOffset = null;
|
|
121
123
|
this.scrollDirection = null;
|
|
122
124
|
this.scrollAdjustments = 0;
|
|
123
|
-
this.
|
|
125
|
+
this.elementsCache = /* @__PURE__ */ new Map();
|
|
124
126
|
this.observer = /* @__PURE__ */ (() => {
|
|
125
127
|
let _ro = null;
|
|
126
128
|
const get = () => {
|
|
@@ -154,8 +156,7 @@ class Virtualizer {
|
|
|
154
156
|
this.range = null;
|
|
155
157
|
this.setOptions = (opts2) => {
|
|
156
158
|
Object.entries(opts2).forEach(([key, value]) => {
|
|
157
|
-
if (typeof value === "undefined")
|
|
158
|
-
delete opts2[key];
|
|
159
|
+
if (typeof value === "undefined") delete opts2[key];
|
|
159
160
|
});
|
|
160
161
|
this.options = {
|
|
161
162
|
debug: false,
|
|
@@ -178,6 +179,7 @@ class Virtualizer {
|
|
|
178
179
|
initialMeasurementsCache: [],
|
|
179
180
|
lanes: 1,
|
|
180
181
|
isScrollingResetDelay: 150,
|
|
182
|
+
enabled: true,
|
|
181
183
|
...opts2
|
|
182
184
|
};
|
|
183
185
|
};
|
|
@@ -196,26 +198,31 @@ class Virtualizer {
|
|
|
196
198
|
this.unsubs.filter(Boolean).forEach((d) => d());
|
|
197
199
|
this.unsubs = [];
|
|
198
200
|
this.scrollElement = null;
|
|
201
|
+
this.targetWindow = null;
|
|
202
|
+
this.observer.disconnect();
|
|
203
|
+
this.elementsCache.clear();
|
|
199
204
|
};
|
|
200
205
|
this._didMount = () => {
|
|
201
|
-
this.measureElementCache.forEach(this.observer.observe);
|
|
202
206
|
return () => {
|
|
203
|
-
this.observer.disconnect();
|
|
204
207
|
this.cleanup();
|
|
205
208
|
};
|
|
206
209
|
};
|
|
207
210
|
this._willUpdate = () => {
|
|
208
211
|
var _a;
|
|
209
|
-
const scrollElement = this.options.getScrollElement();
|
|
212
|
+
const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;
|
|
210
213
|
if (this.scrollElement !== scrollElement) {
|
|
211
214
|
this.cleanup();
|
|
215
|
+
if (!scrollElement) {
|
|
216
|
+
this.notify(false, false);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
212
219
|
this.scrollElement = scrollElement;
|
|
213
220
|
if (this.scrollElement && "ownerDocument" in this.scrollElement) {
|
|
214
221
|
this.targetWindow = this.scrollElement.ownerDocument.defaultView;
|
|
215
222
|
} else {
|
|
216
223
|
this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;
|
|
217
224
|
}
|
|
218
|
-
this._scrollToOffset(this.
|
|
225
|
+
this._scrollToOffset(this.getScrollOffset(), {
|
|
219
226
|
adjustments: void 0,
|
|
220
227
|
behavior: void 0
|
|
221
228
|
});
|
|
@@ -228,7 +235,7 @@ class Virtualizer {
|
|
|
228
235
|
this.unsubs.push(
|
|
229
236
|
this.options.observeElementOffset(this, (offset, isScrolling) => {
|
|
230
237
|
this.scrollAdjustments = 0;
|
|
231
|
-
this.scrollDirection = isScrolling ? this.
|
|
238
|
+
this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? "forward" : "backward" : null;
|
|
232
239
|
this.scrollOffset = offset;
|
|
233
240
|
const prevIsScrolling = this.isScrolling;
|
|
234
241
|
this.isScrolling = isScrolling;
|
|
@@ -238,28 +245,21 @@ class Virtualizer {
|
|
|
238
245
|
}
|
|
239
246
|
};
|
|
240
247
|
this.getSize = () => {
|
|
248
|
+
if (!this.options.enabled) {
|
|
249
|
+
this.scrollRect = null;
|
|
250
|
+
return 0;
|
|
251
|
+
}
|
|
252
|
+
this.scrollRect = this.scrollRect ?? this.options.initialRect;
|
|
241
253
|
return this.scrollRect[this.options.horizontal ? "width" : "height"];
|
|
242
254
|
};
|
|
243
|
-
this.
|
|
244
|
-
()
|
|
245
|
-
this.
|
|
246
|
-
|
|
247
|
-
this.options.scrollMargin,
|
|
248
|
-
this.options.getItemKey
|
|
249
|
-
],
|
|
250
|
-
(count, paddingStart, scrollMargin, getItemKey) => {
|
|
251
|
-
this.pendingMeasuredCacheIndexes = [];
|
|
252
|
-
return {
|
|
253
|
-
count,
|
|
254
|
-
paddingStart,
|
|
255
|
-
scrollMargin,
|
|
256
|
-
getItemKey
|
|
257
|
-
};
|
|
258
|
-
},
|
|
259
|
-
{
|
|
260
|
-
key: false
|
|
255
|
+
this.getScrollOffset = () => {
|
|
256
|
+
if (!this.options.enabled) {
|
|
257
|
+
this.scrollOffset = null;
|
|
258
|
+
return 0;
|
|
261
259
|
}
|
|
262
|
-
|
|
260
|
+
this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === "function" ? this.options.initialOffset() : this.options.initialOffset);
|
|
261
|
+
return this.scrollOffset;
|
|
262
|
+
};
|
|
263
263
|
this.getFurthestMeasurement = (measurements, index) => {
|
|
264
264
|
const furthestMeasurementsFound = /* @__PURE__ */ new Map();
|
|
265
265
|
const furthestMeasurements = /* @__PURE__ */ new Map();
|
|
@@ -287,13 +287,74 @@ class Virtualizer {
|
|
|
287
287
|
return a.end - b.end;
|
|
288
288
|
})[0] : void 0;
|
|
289
289
|
};
|
|
290
|
+
this.getMeasurementOptions = utils.memo(
|
|
291
|
+
() => [
|
|
292
|
+
this.options.count,
|
|
293
|
+
this.options.paddingStart,
|
|
294
|
+
this.options.scrollMargin,
|
|
295
|
+
this.options.getItemKey,
|
|
296
|
+
this.options.enabled
|
|
297
|
+
],
|
|
298
|
+
(count, paddingStart, scrollMargin, getItemKey, enabled) => {
|
|
299
|
+
this.pendingMeasuredCacheIndexes = [];
|
|
300
|
+
return {
|
|
301
|
+
count,
|
|
302
|
+
paddingStart,
|
|
303
|
+
scrollMargin,
|
|
304
|
+
getItemKey,
|
|
305
|
+
enabled
|
|
306
|
+
};
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
key: false
|
|
310
|
+
}
|
|
311
|
+
);
|
|
290
312
|
this.getMeasurements = utils.memo(
|
|
291
313
|
() => [this.getMeasurementOptions(), this.itemSizeCache],
|
|
292
|
-
({ count, paddingStart, scrollMargin, getItemKey }, itemSizeCache) => {
|
|
314
|
+
({ count, paddingStart, scrollMargin, getItemKey, enabled }, itemSizeCache) => {
|
|
315
|
+
var _a;
|
|
316
|
+
if (!enabled) {
|
|
317
|
+
this.measurementsCache = [];
|
|
318
|
+
this.itemSizeCache.clear();
|
|
319
|
+
return [];
|
|
320
|
+
}
|
|
321
|
+
if (this.measurementsCache.length === 0) {
|
|
322
|
+
this.measurementsCache = this.options.initialMeasurementsCache;
|
|
323
|
+
this.measurementsCache.forEach((item) => {
|
|
324
|
+
this.itemSizeCache.set(item.key, item.size);
|
|
325
|
+
});
|
|
326
|
+
}
|
|
293
327
|
const min = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
|
|
294
328
|
this.pendingMeasuredCacheIndexes = [];
|
|
295
329
|
const measurements = this.measurementsCache.slice(0, min);
|
|
296
330
|
for (let i = min; i < count; i++) {
|
|
331
|
+
let measureElement2 = (_a = this.measurementsCache[i]) == null ? void 0 : _a.measureElement;
|
|
332
|
+
if (!measureElement2) {
|
|
333
|
+
measureElement2 = (node) => {
|
|
334
|
+
const key2 = getItemKey(i);
|
|
335
|
+
const prevNode = this.elementsCache.get(key2);
|
|
336
|
+
if (!node) {
|
|
337
|
+
if (prevNode) {
|
|
338
|
+
this.observer.unobserve(prevNode);
|
|
339
|
+
this.elementsCache.delete(key2);
|
|
340
|
+
}
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
if (prevNode !== node) {
|
|
344
|
+
if (prevNode) {
|
|
345
|
+
this.observer.unobserve(prevNode);
|
|
346
|
+
}
|
|
347
|
+
this.observer.observe(node);
|
|
348
|
+
this.elementsCache.set(key2, node);
|
|
349
|
+
}
|
|
350
|
+
if (node.isConnected) {
|
|
351
|
+
this.resizeItem(
|
|
352
|
+
i,
|
|
353
|
+
this.options.measureElement(node, void 0, this)
|
|
354
|
+
);
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
}
|
|
297
358
|
const key = getItemKey(i);
|
|
298
359
|
const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);
|
|
299
360
|
const start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;
|
|
@@ -307,7 +368,8 @@ class Virtualizer {
|
|
|
307
368
|
size,
|
|
308
369
|
end,
|
|
309
370
|
key,
|
|
310
|
-
lane
|
|
371
|
+
lane,
|
|
372
|
+
measureElement: measureElement2
|
|
311
373
|
};
|
|
312
374
|
}
|
|
313
375
|
this.measurementsCache = measurements;
|
|
@@ -319,7 +381,7 @@ class Virtualizer {
|
|
|
319
381
|
}
|
|
320
382
|
);
|
|
321
383
|
this.calculateRange = utils.memo(
|
|
322
|
-
() => [this.getMeasurements(), this.getSize(), this.
|
|
384
|
+
() => [this.getMeasurements(), this.getSize(), this.getScrollOffset()],
|
|
323
385
|
(measurements, outerSize, scrollOffset) => {
|
|
324
386
|
return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({
|
|
325
387
|
measurements,
|
|
@@ -364,36 +426,40 @@ class Virtualizer {
|
|
|
364
426
|
return parseInt(indexStr, 10);
|
|
365
427
|
};
|
|
366
428
|
this._measureElement = (node, entry) => {
|
|
367
|
-
const
|
|
429
|
+
const i = this.indexFromElement(node);
|
|
430
|
+
const item = this.getMeasurements()[i];
|
|
368
431
|
if (!item || !node.isConnected) {
|
|
369
|
-
this.
|
|
432
|
+
this.elementsCache.forEach((cached, key) => {
|
|
370
433
|
if (cached === node) {
|
|
371
434
|
this.observer.unobserve(node);
|
|
372
|
-
this.
|
|
435
|
+
this.elementsCache.delete(key);
|
|
373
436
|
}
|
|
374
437
|
});
|
|
375
438
|
return;
|
|
376
439
|
}
|
|
377
|
-
const prevNode = this.
|
|
440
|
+
const prevNode = this.elementsCache.get(item.key);
|
|
378
441
|
if (prevNode !== node) {
|
|
379
442
|
if (prevNode) {
|
|
380
443
|
this.observer.unobserve(prevNode);
|
|
381
444
|
}
|
|
382
445
|
this.observer.observe(node);
|
|
383
|
-
this.
|
|
446
|
+
this.elementsCache.set(item.key, node);
|
|
384
447
|
}
|
|
385
|
-
|
|
386
|
-
this.resizeItem(item, measuredItemSize);
|
|
448
|
+
this.resizeItem(i, this.options.measureElement(node, entry, this));
|
|
387
449
|
};
|
|
388
|
-
this.resizeItem = (
|
|
450
|
+
this.resizeItem = (index, size) => {
|
|
451
|
+
const item = this.getMeasurements()[index];
|
|
452
|
+
if (!item) {
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
389
455
|
const itemSize = this.itemSizeCache.get(item.key) ?? item.size;
|
|
390
456
|
const delta = size - itemSize;
|
|
391
457
|
if (delta !== 0) {
|
|
392
|
-
if (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.
|
|
458
|
+
if (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments) {
|
|
393
459
|
if (process.env.NODE_ENV !== "production" && this.options.debug) {
|
|
394
460
|
console.info("correction", delta);
|
|
395
461
|
}
|
|
396
|
-
this._scrollToOffset(this.
|
|
462
|
+
this._scrollToOffset(this.getScrollOffset(), {
|
|
397
463
|
adjustments: this.scrollAdjustments += delta,
|
|
398
464
|
behavior: void 0
|
|
399
465
|
});
|
|
@@ -427,6 +493,9 @@ class Virtualizer {
|
|
|
427
493
|
);
|
|
428
494
|
this.getVirtualItemForOffset = (offset) => {
|
|
429
495
|
const measurements = this.getMeasurements();
|
|
496
|
+
if (measurements.length === 0) {
|
|
497
|
+
return void 0;
|
|
498
|
+
}
|
|
430
499
|
return utils.notUndefined(
|
|
431
500
|
measurements[findNearestBinarySearch(
|
|
432
501
|
0,
|
|
@@ -438,10 +507,11 @@ class Virtualizer {
|
|
|
438
507
|
};
|
|
439
508
|
this.getOffsetForAlignment = (toOffset, align) => {
|
|
440
509
|
const size = this.getSize();
|
|
510
|
+
const scrollOffset = this.getScrollOffset();
|
|
441
511
|
if (align === "auto") {
|
|
442
|
-
if (toOffset <=
|
|
512
|
+
if (toOffset <= scrollOffset) {
|
|
443
513
|
align = "start";
|
|
444
|
-
} else if (toOffset >=
|
|
514
|
+
} else if (toOffset >= scrollOffset + size) {
|
|
445
515
|
align = "end";
|
|
446
516
|
} else {
|
|
447
517
|
align = "start";
|
|
@@ -456,25 +526,30 @@ class Virtualizer {
|
|
|
456
526
|
}
|
|
457
527
|
const scrollSizeProp = this.options.horizontal ? "scrollWidth" : "scrollHeight";
|
|
458
528
|
const scrollSize = this.scrollElement ? "document" in this.scrollElement ? this.scrollElement.document.documentElement[scrollSizeProp] : this.scrollElement[scrollSizeProp] : 0;
|
|
459
|
-
const maxOffset = scrollSize -
|
|
529
|
+
const maxOffset = scrollSize - size;
|
|
460
530
|
return Math.max(Math.min(maxOffset, toOffset), 0);
|
|
461
531
|
};
|
|
462
532
|
this.getOffsetForIndex = (index, align = "auto") => {
|
|
463
533
|
index = Math.max(0, Math.min(index, this.options.count - 1));
|
|
464
|
-
const
|
|
534
|
+
const item = this.getMeasurements()[index];
|
|
535
|
+
if (!item) {
|
|
536
|
+
return void 0;
|
|
537
|
+
}
|
|
538
|
+
const size = this.getSize();
|
|
539
|
+
const scrollOffset = this.getScrollOffset();
|
|
465
540
|
if (align === "auto") {
|
|
466
|
-
if (
|
|
541
|
+
if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {
|
|
467
542
|
align = "end";
|
|
468
|
-
} else if (
|
|
543
|
+
} else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {
|
|
469
544
|
align = "start";
|
|
470
545
|
} else {
|
|
471
|
-
return [
|
|
546
|
+
return [scrollOffset, align];
|
|
472
547
|
}
|
|
473
548
|
}
|
|
474
|
-
const toOffset = align === "end" ?
|
|
549
|
+
const toOffset = align === "end" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;
|
|
475
550
|
return [this.getOffsetForAlignment(toOffset, align), align];
|
|
476
551
|
};
|
|
477
|
-
this.isDynamicMode = () => this.
|
|
552
|
+
this.isDynamicMode = () => this.elementsCache.size > 0;
|
|
478
553
|
this.cancelScrollToIndex = () => {
|
|
479
554
|
if (this.scrollToIndexTimeoutId !== null && this.targetWindow) {
|
|
480
555
|
this.targetWindow.clearTimeout(this.scrollToIndexTimeoutId);
|
|
@@ -501,17 +576,21 @@ class Virtualizer {
|
|
|
501
576
|
"The `smooth` scroll behavior is not fully supported with dynamic size."
|
|
502
577
|
);
|
|
503
578
|
}
|
|
504
|
-
const
|
|
505
|
-
|
|
579
|
+
const offsetAndAlign = this.getOffsetForIndex(index, initialAlign);
|
|
580
|
+
if (!offsetAndAlign) return;
|
|
581
|
+
const [offset, align] = offsetAndAlign;
|
|
582
|
+
this._scrollToOffset(offset, { adjustments: void 0, behavior });
|
|
506
583
|
if (behavior !== "smooth" && this.isDynamicMode() && this.targetWindow) {
|
|
507
584
|
this.scrollToIndexTimeoutId = this.targetWindow.setTimeout(() => {
|
|
508
585
|
this.scrollToIndexTimeoutId = null;
|
|
509
|
-
const elementInDOM = this.
|
|
586
|
+
const elementInDOM = this.elementsCache.has(
|
|
510
587
|
this.options.getItemKey(index)
|
|
511
588
|
);
|
|
512
589
|
if (elementInDOM) {
|
|
513
|
-
const [
|
|
514
|
-
|
|
590
|
+
const [latestOffset] = utils.notUndefined(
|
|
591
|
+
this.getOffsetForIndex(index, align)
|
|
592
|
+
);
|
|
593
|
+
if (!utils.approxEqual(latestOffset, this.getScrollOffset())) {
|
|
515
594
|
this.scrollToIndex(index, { align, behavior });
|
|
516
595
|
}
|
|
517
596
|
} else {
|
|
@@ -527,7 +606,7 @@ class Virtualizer {
|
|
|
527
606
|
"The `smooth` scroll behavior is not fully supported with dynamic size."
|
|
528
607
|
);
|
|
529
608
|
}
|
|
530
|
-
this._scrollToOffset(this.
|
|
609
|
+
this._scrollToOffset(this.getScrollOffset() + delta, {
|
|
531
610
|
adjustments: void 0,
|
|
532
611
|
behavior
|
|
533
612
|
});
|
|
@@ -557,13 +636,6 @@ class Virtualizer {
|
|
|
557
636
|
(_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, false);
|
|
558
637
|
};
|
|
559
638
|
this.setOptions(opts);
|
|
560
|
-
this.scrollRect = this.options.initialRect;
|
|
561
|
-
this.scrollOffset = typeof this.options.initialOffset === "function" ? this.options.initialOffset() : this.options.initialOffset;
|
|
562
|
-
this.measurementsCache = this.options.initialMeasurementsCache;
|
|
563
|
-
this.measurementsCache.forEach((item) => {
|
|
564
|
-
this.itemSizeCache.set(item.key, item.size);
|
|
565
|
-
});
|
|
566
|
-
this.notify(false, false);
|
|
567
639
|
}
|
|
568
640
|
}
|
|
569
641
|
const findNearestBinarySearch = (low, high, getCurrentValue, value) => {
|
|
@@ -7,8 +7,7 @@ function memo(getDeps, fn, opts) {
|
|
|
7
7
|
return () => {
|
|
8
8
|
var _a, _b, _c, _d;
|
|
9
9
|
let depTime;
|
|
10
|
-
if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts)))
|
|
11
|
-
depTime = Date.now();
|
|
10
|
+
if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();
|
|
12
11
|
const newDeps = getDeps();
|
|
13
12
|
const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);
|
|
14
13
|
if (!depsChanged) {
|
|
@@ -16,8 +15,7 @@ function memo(getDeps, fn, opts) {
|
|
|
16
15
|
}
|
|
17
16
|
deps = newDeps;
|
|
18
17
|
let resultTime;
|
|
19
|
-
if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts)))
|
|
20
|
-
resultTime = Date.now();
|
|
18
|
+
if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();
|
|
21
19
|
result = fn(...newDeps);
|
|
22
20
|
if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {
|
|
23
21
|
const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;
|
|
@@ -48,7 +46,7 @@ function memo(getDeps, fn, opts) {
|
|
|
48
46
|
}
|
|
49
47
|
function notUndefined(value, msg) {
|
|
50
48
|
if (value === void 0) {
|
|
51
|
-
throw new Error(`Unexpected undefined${
|
|
49
|
+
throw new Error(`Unexpected undefined${""}`);
|
|
52
50
|
} else {
|
|
53
51
|
return value;
|
|
54
52
|
}
|
|
@@ -12,7 +12,10 @@ const transitionDurationInMilliseconds = 250;
|
|
|
12
12
|
* AnimateHeight is a component that animates its height when the `open` prop changes.
|
|
13
13
|
*/
|
|
14
14
|
const AnimateHeight = ({ children, className, open = false, style, ...rest }) => {
|
|
15
|
-
|
|
15
|
+
/* We don't know the initial height we want to start with.
|
|
16
|
+
It depends on if it should start open or not, therefore we set height to `undefined`,
|
|
17
|
+
so we don't get any layoutshift on first render */
|
|
18
|
+
const [height, setHeight] = React.useState(undefined);
|
|
16
19
|
const prevOpen = usePrevious.usePrevious(open);
|
|
17
20
|
const openOrClosed = open ? 'open' : 'closed';
|
|
18
21
|
const [state, setState] = React.useState(openOrClosed);
|
|
@@ -20,19 +20,47 @@ function getPrevFocusableValue(items, value) {
|
|
|
20
20
|
const RovingFocusItem = React.forwardRef(({ value, asChild, ...rest }, ref) => {
|
|
21
21
|
const Component = asChild ? index.Slot : 'div';
|
|
22
22
|
const focusValue = value ?? (typeof rest.children == 'string' ? rest.children : '');
|
|
23
|
-
const { getOrderedItems, getRovingProps } = useRovingFocus.useRovingFocus(focusValue);
|
|
23
|
+
const { getOrderedItems, getRovingProps, orientation } = useRovingFocus.useRovingFocus(focusValue);
|
|
24
24
|
const rovingProps = getRovingProps({
|
|
25
25
|
onKeyDown: (e) => {
|
|
26
26
|
rest?.onKeyDown?.(e);
|
|
27
27
|
const items = getOrderedItems();
|
|
28
28
|
let nextItem;
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
switch (orientation) {
|
|
30
|
+
case 'horizontal':
|
|
31
|
+
if (e.key === 'ArrowRight') {
|
|
32
|
+
nextItem = getNextFocusableValue(items, focusValue);
|
|
33
|
+
}
|
|
34
|
+
if (e.key === 'ArrowLeft') {
|
|
35
|
+
nextItem = getPrevFocusableValue(items, focusValue);
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
case 'vertical':
|
|
39
|
+
if (e.key === 'ArrowDown') {
|
|
40
|
+
nextItem = getNextFocusableValue(items, focusValue);
|
|
41
|
+
}
|
|
42
|
+
if (e.key === 'ArrowUp') {
|
|
43
|
+
nextItem = getPrevFocusableValue(items, focusValue);
|
|
44
|
+
}
|
|
45
|
+
break;
|
|
46
|
+
case 'ambiguous':
|
|
47
|
+
if (['ArrowRight', 'ArrowDown'].includes(e.key)) {
|
|
48
|
+
nextItem = getNextFocusableValue(items, focusValue);
|
|
49
|
+
}
|
|
50
|
+
if (['ArrowLeft', 'ArrowUp'].includes(e.key)) {
|
|
51
|
+
nextItem = getPrevFocusableValue(items, focusValue);
|
|
52
|
+
}
|
|
31
53
|
}
|
|
32
|
-
if (e.key === '
|
|
33
|
-
nextItem =
|
|
54
|
+
if (e.key === 'Home') {
|
|
55
|
+
nextItem = items[0];
|
|
56
|
+
}
|
|
57
|
+
if (e.key === 'End') {
|
|
58
|
+
nextItem = items[items.length - 1];
|
|
59
|
+
}
|
|
60
|
+
if (nextItem) {
|
|
61
|
+
e.preventDefault();
|
|
62
|
+
nextItem.element.focus();
|
|
34
63
|
}
|
|
35
|
-
nextItem?.element.focus();
|
|
36
64
|
},
|
|
37
65
|
});
|
|
38
66
|
const mergedRefs = floatingUi_react.useMergeRefs([ref, rovingProps.ref]);
|
|
@@ -16,8 +16,9 @@ const RovingFocusContext = React.createContext({
|
|
|
16
16
|
/* intentionally empty */
|
|
17
17
|
},
|
|
18
18
|
focusableValue: null,
|
|
19
|
+
orientation: 'horizontal',
|
|
19
20
|
});
|
|
20
|
-
const RovingFocusRoot = React.forwardRef(({ activeValue, asChild, onBlur, onFocus, ...rest }, ref) => {
|
|
21
|
+
const RovingFocusRoot = React.forwardRef(({ activeValue, asChild, orientation = 'horizontal', onBlur, onFocus, ...rest }, ref) => {
|
|
21
22
|
const Component = asChild ? index.Slot : 'div';
|
|
22
23
|
const [focusableValue, setFocusableValue] = React.useState(null);
|
|
23
24
|
const [isShiftTabbing, setIsShiftTabbing] = React.useState(false);
|
|
@@ -43,6 +44,7 @@ const RovingFocusRoot = React.forwardRef(({ activeValue, asChild, onBlur, onFocu
|
|
|
43
44
|
onShiftTab: () => {
|
|
44
45
|
setIsShiftTabbing(true);
|
|
45
46
|
},
|
|
47
|
+
orientation,
|
|
46
48
|
}, children: jsxRuntime.jsx(Component, { ...rest, tabIndex: isShiftTabbing ? -1 : 0, onBlur: (e) => {
|
|
47
49
|
onBlur?.(e);
|
|
48
50
|
setIsShiftTabbing(false);
|
|
@@ -8,10 +8,11 @@ var RovingFocusRoot = require('./RovingFocusRoot.js');
|
|
|
8
8
|
// Inspired by: https://github.com/radix-ui/primitives/tree/main/packages/react/roving-focus/src
|
|
9
9
|
/** Handles props for `RovingFocus` in context with `RovingFocusRoot` */
|
|
10
10
|
const useRovingFocus = (value) => {
|
|
11
|
-
const { elements, getOrderedItems, setFocusableValue, focusableValue, onShiftTab, } = React.useContext(RovingFocusRoot.RovingFocusContext);
|
|
11
|
+
const { elements, getOrderedItems, setFocusableValue, focusableValue, onShiftTab, orientation, } = React.useContext(RovingFocusRoot.RovingFocusContext);
|
|
12
12
|
return {
|
|
13
13
|
getOrderedItems,
|
|
14
14
|
isFocusable: focusableValue === value,
|
|
15
|
+
orientation,
|
|
15
16
|
getRovingProps: (props) => ({
|
|
16
17
|
...props,
|
|
17
18
|
ref: (element) => {
|
|
@@ -10,8 +10,8 @@ import { AccordionRoot } from './AccordionRoot.js';
|
|
|
10
10
|
* <Accordion.Root>
|
|
11
11
|
* <Accordion.Item>
|
|
12
12
|
* <Accordion.Heading>Heading 1</Accordion.Heading>
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* <Accordion.Content>Content 1</Accordion.Content>
|
|
14
|
+
* </Accordion.Item>
|
|
15
15
|
* <Accordion.Item>
|
|
16
16
|
*/
|
|
17
17
|
const Accordion = {};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { Slot
|
|
3
|
+
import { Slot } from '../../node_modules/@radix-ui/react-slot/dist/index.js';
|
|
4
4
|
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
5
5
|
import { forwardRef } from 'react';
|
|
6
6
|
|
|
7
7
|
const Box = forwardRef(({ shadow, borderColor, borderRadius, background = 'default', children, asChild = false, className, ...rest }, ref) => {
|
|
8
|
-
const Component = asChild ?
|
|
8
|
+
const Component = asChild ? Slot : 'div';
|
|
9
9
|
return (jsx(Component, { ref: ref, className: clsx(shadow && `ds-box--${shadow}-shadow`, borderColor && `ds-box--${borderColor}-border-color`, borderRadius && `ds-box--${borderRadius}-border-radius`, `ds-box--${background}-background`, className), ...rest, children: children }));
|
|
10
10
|
});
|
|
11
11
|
Box.displayName = 'Box';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
|
|
6
|
+
const BreadcrumbsItem = forwardRef(({ className, ...rest }, ref) => (jsx("li", { ref: ref, className: clsx('ds-breadcrumbs__item', className), ...rest })));
|
|
7
|
+
BreadcrumbsItem.displayName = 'BreadcrumbsItem';
|
|
8
|
+
|
|
9
|
+
export { BreadcrumbsItem };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import { Link } from '../Link/Link.js';
|
|
6
|
+
|
|
7
|
+
const BreadcrumbsLink = forwardRef(({ className, ...rest }, ref) => (jsx(Link, { className: clsx(`ds-breadcrumbs__link`, className), ref: ref, ...rest })));
|
|
8
|
+
BreadcrumbsLink.displayName = 'BreadcrumbsLink';
|
|
9
|
+
|
|
10
|
+
export { BreadcrumbsLink };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useMergeRefs } from '../../node_modules/@floating-ui/react/dist/floating-ui.react.js';
|
|
4
|
+
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
5
|
+
import { forwardRef, useRef, useEffect } from 'react';
|
|
6
|
+
|
|
7
|
+
const BreadcrumbsList = forwardRef(({ className, ...rest }, ref) => {
|
|
8
|
+
const innerRef = useRef(null);
|
|
9
|
+
const mergedRefs = useMergeRefs([innerRef, ref]);
|
|
10
|
+
// Set aria-current on last link
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const links = innerRef.current?.querySelectorAll('a') || [];
|
|
13
|
+
const lastLink = links[links?.length - 1];
|
|
14
|
+
lastLink?.setAttribute('aria-current', 'page');
|
|
15
|
+
return () => lastLink?.removeAttribute('aria-current'); // Remove on re-render as React can re-use DOM elements
|
|
16
|
+
});
|
|
17
|
+
return (jsx("ol", { className: clsx('ds-breadcrumbs__list', className), ref: mergedRefs, ...rest }));
|
|
18
|
+
});
|
|
19
|
+
BreadcrumbsList.displayName = 'BreadcrumbsList';
|
|
20
|
+
|
|
21
|
+
export { BreadcrumbsList };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
|
|
6
|
+
const BreadcrumbsNav = forwardRef(({ 'aria-label': ariaLabel = 'Du er her:', className, ...rest }, ref) => (jsx("nav", { "aria-label": ariaLabel, ref: ref, className: clsx('ds-breadcrumbs__nav', className), ...rest })));
|
|
7
|
+
BreadcrumbsNav.displayName = 'BreadcrumbsNav';
|
|
8
|
+
|
|
9
|
+
export { BreadcrumbsNav };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
|
|
6
|
+
const BreadcrumbsRoot = forwardRef(({ className, size = 'md', ...rest }, ref) => (jsx("div", { ref: ref, className: clsx('ds-breadcrumbs', `ds-breadcrumbs--${size}`, className), ...rest })));
|
|
7
|
+
BreadcrumbsRoot.displayName = 'BreadcrumbsRoot';
|
|
8
|
+
|
|
9
|
+
export { BreadcrumbsRoot };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { BreadcrumbsItem } from './BreadcrumbsItem.js';
|
|
3
|
+
import { BreadcrumbsLink } from './BreadcrumbsLink.js';
|
|
4
|
+
import { BreadcrumbsList } from './BreadcrumbsList.js';
|
|
5
|
+
import { BreadcrumbsNav } from './BreadcrumbsNav.js';
|
|
6
|
+
import { BreadcrumbsRoot } from './BreadcrumbsRoot.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Breadcrumbs are used to visualize the current page path.
|
|
10
|
+
* @example
|
|
11
|
+
* <Breadcrumbs.Root>
|
|
12
|
+
* <Breadcrumbs.Link aria-label="Go back to level 2">Level 2</Breadcrumbs.Link>
|
|
13
|
+
* <Breadcrumbs.Nav aria-label="You are here:">
|
|
14
|
+
* <Breadcrumbs.List>
|
|
15
|
+
* <Breadcrumbs.Item><Breadcrumbs.Link>Level 1</Breadcrumbs.Link></Breadcrumbs.Item>
|
|
16
|
+
* <Breadcrumbs.Item><Breadcrumbs.Link>Level 2</Breadcrumbs.Link></Breadcrumbs.Item>
|
|
17
|
+
* <Breadcrumbs.Item><Breadcrumbs.Link>Level 3</Breadcrumbs.Link></Breadcrumbs.Item>
|
|
18
|
+
* <Breadcrumbs.Item><Breadcrumbs.Link>Level 4</Breadcrumbs.Link></Breadcrumbs.Item>
|
|
19
|
+
* </Breadcrumbs.List>
|
|
20
|
+
* </Breadcrumbs.Nav>
|
|
21
|
+
* <Breadcrumbs.Root>
|
|
22
|
+
*/
|
|
23
|
+
const Breadcrumbs = {
|
|
24
|
+
Root: BreadcrumbsRoot,
|
|
25
|
+
Nav: BreadcrumbsNav,
|
|
26
|
+
List: BreadcrumbsList,
|
|
27
|
+
Item: BreadcrumbsItem,
|
|
28
|
+
Link: BreadcrumbsLink,
|
|
29
|
+
};
|
|
30
|
+
Breadcrumbs.Root.displayName = 'Breadcrumbs.Root';
|
|
31
|
+
Breadcrumbs.Nav.displayName = 'Breadcrumbs.Nav';
|
|
32
|
+
Breadcrumbs.List.displayName = 'Breadcrumbs.List';
|
|
33
|
+
Breadcrumbs.Item.displayName = 'Breadcrumbs.Item';
|
|
34
|
+
Breadcrumbs.Link.displayName = 'Breadcrumbs.Link';
|
|
35
|
+
|
|
36
|
+
export { Breadcrumbs, BreadcrumbsItem, BreadcrumbsLink, BreadcrumbsList, BreadcrumbsNav, BreadcrumbsRoot };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { Slot
|
|
3
|
+
import { Slot } from '../../node_modules/@radix-ui/react-slot/dist/index.js';
|
|
4
4
|
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
5
5
|
import { forwardRef } from 'react';
|
|
6
6
|
import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
|
|
@@ -11,7 +11,7 @@ import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
|
|
|
11
11
|
* <Button>Click me</Button>
|
|
12
12
|
*/
|
|
13
13
|
const Button = forwardRef(({ children, variant = 'primary', color = 'accent', fullWidth = false, icon = false, type = 'button', size = 'md', asChild, className, ...rest }, ref) => {
|
|
14
|
-
const Component = asChild ?
|
|
14
|
+
const Component = asChild ? Slot : 'button';
|
|
15
15
|
return (jsx(Paragraph, { variant: 'short', size: size, asChild: true, children: jsx(Component, { ref: ref, type: type, className: clsx('ds-btn', `ds-focus`, `ds-btn--${size}`, `ds-btn--${variant}`, `ds-btn--${color}`, fullWidth && 'ds-btn--full-width', icon && 'ds-btn--icon-only', className), ...rest, children: children }) }));
|
|
16
16
|
});
|
|
17
17
|
Button.displayName = 'Button';
|