@digdir/designsystemet-react 1.0.0-next.17 → 1.0.0-next.33
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/Accordion.js +15 -0
- package/dist/cjs/components/Accordion/AccordionContent.js +2 -11
- package/dist/cjs/components/Accordion/AccordionHeading.js +5 -17
- package/dist/cjs/components/Accordion/AccordionItem.js +61 -16
- package/dist/cjs/components/Accordion/index.js +4 -7
- package/dist/cjs/components/Alert/Alert.js +3 -18
- package/dist/cjs/components/Avatar/Avatar.js +36 -0
- package/dist/cjs/components/Badge/Badge.js +6 -1
- package/dist/cjs/components/Button/Button.js +6 -3
- package/dist/cjs/components/Card/Card.js +1 -1
- package/dist/cjs/components/Divider/Divider.js +5 -4
- package/dist/cjs/components/DropdownMenu/DropdownMenuContent.js +3 -22
- package/dist/cjs/components/DropdownMenu/DropdownMenuGroup.js +1 -1
- package/dist/cjs/components/DropdownMenu/DropdownMenuItem.js +1 -1
- package/dist/cjs/components/ErrorSummary/ErrorSummaryHeading.js +11 -7
- package/dist/cjs/components/ErrorSummary/ErrorSummaryItem.js +4 -4
- package/dist/cjs/components/ErrorSummary/ErrorSummaryList.js +7 -5
- package/dist/cjs/components/ErrorSummary/ErrorSummaryRoot.js +4 -4
- package/dist/cjs/components/ErrorSummary/index.js +2 -2
- package/dist/cjs/components/HelpText/HelpText.js +6 -4
- package/dist/cjs/components/Link/Link.js +2 -2
- package/dist/cjs/components/List/ListItem.js +2 -4
- package/dist/cjs/components/List/Lists.js +10 -13
- package/dist/cjs/components/List/index.js +7 -14
- package/dist/cjs/components/Modal/ModalHeader.js +1 -1
- package/dist/cjs/components/Pagination/Pagination.js +3 -17
- package/dist/cjs/components/Pagination/PaginationButton.js +2 -3
- package/dist/cjs/components/Pagination/PaginationEllipsis.js +1 -2
- package/dist/cjs/components/Pagination/PaginationItem.js +1 -2
- package/dist/cjs/components/Pagination/{PaginationContent.js → PaginationList.js} +4 -5
- package/dist/cjs/components/Pagination/PaginationNextPrev.js +4 -6
- package/dist/cjs/components/Pagination/PaginationRoot.js +2 -3
- package/dist/cjs/components/Pagination/index.js +4 -4
- package/dist/cjs/components/Popover/Popover.js +94 -0
- package/dist/cjs/components/Popover/PopoverContext.js +16 -0
- package/dist/cjs/components/Popover/PopoverTrigger.js +4 -13
- package/dist/cjs/components/Popover/index.js +6 -9
- package/dist/cjs/components/Table/Table.js +2 -22
- package/dist/cjs/components/Table/TableBody.js +2 -22
- package/dist/cjs/components/Table/TableCell.js +2 -23
- package/dist/cjs/components/Table/TableHead.js +2 -23
- package/dist/cjs/components/Table/TableHeaderCell.js +2 -29
- package/dist/cjs/components/Table/TableRow.js +2 -23
- package/dist/cjs/components/Tag/Tag.js +2 -3
- package/dist/cjs/components/ToggleGroup/ToggleGroupItem/ToggleGroupItem.js +3 -5
- package/dist/cjs/components/Tooltip/Tooltip.js +6 -25
- package/dist/cjs/components/Typography/Heading/Heading.js +2 -2
- package/dist/cjs/components/form/Combobox/Combobox.js +2 -3
- package/dist/cjs/components/form/Combobox/internal/ComboboxInput.js +1 -2
- package/dist/cjs/components/form/Combobox/useFloatingCombobox.js +1 -1
- package/dist/cjs/components/form/Select/Select.js +20 -0
- package/dist/cjs/components/form/Select/SelectOptgroup.js +13 -0
- package/dist/cjs/components/form/Select/SelectOption.js +13 -0
- package/dist/cjs/components/form/Select/index.js +16 -0
- package/dist/cjs/components/form/Select/useSelect.js +49 -0
- package/dist/cjs/components/{Skeleton → loaders/Skeleton}/Circle/Circle.js +2 -2
- package/dist/cjs/components/{Skeleton → loaders/Skeleton}/Rectangle/Rectangle.js +2 -2
- package/dist/cjs/components/{Skeleton → loaders/Skeleton}/Text/Text.js +2 -2
- package/dist/cjs/components/loaders/Spinner/Spinner.js +16 -0
- package/dist/cjs/index.js +56 -60
- package/dist/cjs/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +7 -23
- package/dist/cjs/node_modules/@floating-ui/dom/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +164 -0
- package/dist/cjs/node_modules/@floating-ui/dom/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +22 -0
- package/dist/cjs/node_modules/@floating-ui/react/dist/floating-ui.react.js +85 -56
- package/dist/cjs/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +1 -1
- package/dist/cjs/node_modules/@floating-ui/react-dom/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +677 -0
- package/dist/cjs/node_modules/@tanstack/virtual-core/dist/esm/index.js +57 -65
- package/dist/cjs/node_modules/@u-elements/u-details/dist/u-details.js +117 -0
- package/dist/cjs/utilities/hooks/useSynchronizedAnimation/useSynchronizedAnimation.js +4 -2
- package/dist/esm/components/Accordion/Accordion.js +13 -0
- package/dist/esm/components/Accordion/AccordionContent.js +3 -12
- package/dist/esm/components/Accordion/AccordionHeading.js +7 -19
- package/dist/esm/components/Accordion/AccordionItem.js +63 -17
- package/dist/esm/components/Accordion/index.js +5 -7
- package/dist/esm/components/Alert/Alert.js +4 -19
- package/dist/esm/components/Avatar/Avatar.js +34 -0
- package/dist/esm/components/Badge/Badge.js +6 -1
- package/dist/esm/components/Button/Button.js +8 -5
- package/dist/esm/components/Card/Card.js +1 -1
- package/dist/esm/components/Divider/Divider.js +5 -4
- package/dist/esm/components/DropdownMenu/DropdownMenuContent.js +4 -5
- package/dist/esm/components/DropdownMenu/DropdownMenuGroup.js +1 -1
- package/dist/esm/components/DropdownMenu/DropdownMenuItem.js +1 -1
- package/dist/esm/components/ErrorSummary/ErrorSummaryHeading.js +12 -8
- package/dist/esm/components/ErrorSummary/ErrorSummaryItem.js +4 -4
- package/dist/esm/components/ErrorSummary/ErrorSummaryList.js +7 -5
- package/dist/esm/components/ErrorSummary/ErrorSummaryRoot.js +4 -4
- package/dist/esm/components/ErrorSummary/index.js +1 -1
- package/dist/esm/components/HelpText/HelpText.js +8 -6
- package/dist/esm/components/Link/Link.js +2 -2
- package/dist/esm/components/List/ListItem.js +2 -4
- package/dist/esm/components/List/Lists.js +10 -13
- package/dist/esm/components/List/index.js +7 -12
- package/dist/esm/components/Modal/ModalHeader.js +1 -1
- package/dist/esm/components/Pagination/Pagination.js +3 -17
- package/dist/esm/components/Pagination/PaginationButton.js +2 -3
- package/dist/esm/components/Pagination/PaginationEllipsis.js +1 -2
- package/dist/esm/components/Pagination/PaginationItem.js +1 -2
- package/dist/esm/components/Pagination/{PaginationContent.js → PaginationList.js} +4 -5
- package/dist/esm/components/Pagination/PaginationNextPrev.js +4 -6
- package/dist/esm/components/Pagination/PaginationRoot.js +2 -3
- package/dist/esm/components/Pagination/index.js +4 -4
- package/dist/esm/components/Popover/Popover.js +92 -0
- package/dist/esm/components/Popover/PopoverContext.js +13 -0
- package/dist/esm/components/Popover/PopoverTrigger.js +5 -14
- package/dist/esm/components/Popover/index.js +6 -8
- package/dist/esm/components/Table/Table.js +3 -4
- package/dist/esm/components/Table/TableBody.js +3 -4
- package/dist/esm/components/Table/TableCell.js +3 -5
- package/dist/esm/components/Table/TableHead.js +3 -5
- package/dist/esm/components/Table/TableHeaderCell.js +4 -12
- package/dist/esm/components/Table/TableRow.js +3 -5
- package/dist/esm/components/Tag/Tag.js +2 -3
- package/dist/esm/components/ToggleGroup/ToggleGroupItem/ToggleGroupItem.js +3 -5
- package/dist/esm/components/Tooltip/Tooltip.js +9 -10
- package/dist/esm/components/Typography/Heading/Heading.js +2 -2
- package/dist/esm/components/form/Combobox/Combobox.js +2 -3
- package/dist/esm/components/form/Combobox/internal/ComboboxInput.js +1 -2
- package/dist/esm/components/form/Combobox/useFloatingCombobox.js +1 -1
- package/dist/esm/components/form/Select/Select.js +18 -0
- package/dist/esm/components/form/Select/SelectOptgroup.js +11 -0
- package/dist/esm/components/form/Select/SelectOption.js +11 -0
- package/dist/esm/components/form/Select/index.js +12 -0
- package/dist/esm/components/form/Select/useSelect.js +47 -0
- package/dist/esm/components/{Skeleton → loaders/Skeleton}/Circle/Circle.js +2 -2
- package/dist/esm/components/{Skeleton → loaders/Skeleton}/Rectangle/Rectangle.js +2 -2
- package/dist/esm/components/{Skeleton → loaders/Skeleton}/Text/Text.js +2 -2
- package/dist/esm/components/loaders/Spinner/Spinner.js +14 -0
- package/dist/esm/index.js +13 -15
- package/dist/esm/node_modules/@floating-ui/core/dist/floating-ui.core.js +1 -1
- package/dist/esm/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +7 -21
- package/dist/esm/node_modules/@floating-ui/dom/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +143 -0
- package/dist/esm/node_modules/@floating-ui/dom/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +16 -0
- package/dist/esm/node_modules/@floating-ui/react/dist/floating-ui.react.js +85 -56
- package/dist/esm/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +2 -2
- package/dist/esm/node_modules/@floating-ui/react-dom/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +667 -0
- package/dist/esm/node_modules/@tanstack/virtual-core/dist/esm/index.js +57 -65
- package/dist/esm/node_modules/@u-elements/u-details/dist/u-details.js +114 -0
- package/dist/esm/utilities/hooks/useSynchronizedAnimation/useSynchronizedAnimation.js +4 -2
- package/dist/types/components/Accordion/{AccordionRoot.d.ts → Accordion.d.ts} +5 -5
- package/dist/types/components/Accordion/Accordion.d.ts.map +1 -0
- package/dist/types/components/Accordion/AccordionContent.d.ts +1 -1
- package/dist/types/components/Accordion/AccordionContent.d.ts.map +1 -1
- package/dist/types/components/Accordion/AccordionHeading.d.ts +6 -20
- package/dist/types/components/Accordion/AccordionHeading.d.ts.map +1 -1
- package/dist/types/components/Accordion/AccordionItem.d.ts +12 -26
- package/dist/types/components/Accordion/AccordionItem.d.ts.map +1 -1
- package/dist/types/components/Accordion/index.d.ts +9 -11
- package/dist/types/components/Accordion/index.d.ts.map +1 -1
- package/dist/types/components/Alert/Alert.d.ts +7 -23
- package/dist/types/components/Alert/Alert.d.ts.map +1 -1
- package/dist/types/components/Avatar/Avatar.d.ts +78 -0
- package/dist/types/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/types/components/Avatar/index.d.ts +3 -0
- package/dist/types/components/Avatar/index.d.ts.map +1 -0
- package/dist/types/components/Badge/Badge.d.ts +2 -2
- package/dist/types/components/Badge/Badge.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsItem.d.ts +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsItem.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsLink.d.ts +3 -3
- package/dist/types/components/Breadcrumbs/BreadcrumbsLink.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsList.d.ts +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsList.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsNav.d.ts +6 -4
- package/dist/types/components/Breadcrumbs/BreadcrumbsNav.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/BreadcrumbsRoot.d.ts +2 -2
- package/dist/types/components/Breadcrumbs/BreadcrumbsRoot.d.ts.map +1 -1
- package/dist/types/components/Breadcrumbs/index.d.ts +9 -9
- package/dist/types/components/Button/Button.d.ts +10 -12
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/Card/Card.d.ts +2 -2
- package/dist/types/components/Card/Card.d.ts.map +1 -1
- package/dist/types/components/Card/CardContent.d.ts +2 -2
- package/dist/types/components/Card/CardContent.d.ts.map +1 -1
- package/dist/types/components/Card/CardFooter.d.ts +2 -2
- package/dist/types/components/Card/CardFooter.d.ts.map +1 -1
- package/dist/types/components/Card/CardHeader.d.ts +2 -2
- package/dist/types/components/Card/CardHeader.d.ts.map +1 -1
- package/dist/types/components/Card/CardMedia.d.ts +2 -2
- package/dist/types/components/Card/CardMedia.d.ts.map +1 -1
- package/dist/types/components/Chip/Group/Group.d.ts +3 -3
- package/dist/types/components/Chip/Group/Group.d.ts.map +1 -1
- package/dist/types/components/Chip/Removable/Removable.d.ts +2 -2
- package/dist/types/components/Chip/Removable/Removable.d.ts.map +1 -1
- package/dist/types/components/Chip/Toggle/Toggle.d.ts +2 -2
- package/dist/types/components/Chip/Toggle/Toggle.d.ts.map +1 -1
- package/dist/types/components/Divider/Divider.d.ts +3 -15
- package/dist/types/components/Divider/Divider.d.ts.map +1 -1
- package/dist/types/components/DropdownMenu/DropdownMenuContent.d.ts +5 -5
- package/dist/types/components/DropdownMenu/DropdownMenuContent.d.ts.map +1 -1
- package/dist/types/components/DropdownMenu/DropdownMenuGroup.d.ts +5 -5
- package/dist/types/components/DropdownMenu/DropdownMenuGroup.d.ts.map +1 -1
- package/dist/types/components/DropdownMenu/DropdownMenuItem.d.ts +2 -2
- package/dist/types/components/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/types/components/DropdownMenu/DropdownMenuRoot.d.ts +3 -3
- package/dist/types/components/DropdownMenu/DropdownMenuRoot.d.ts.map +1 -1
- package/dist/types/components/DropdownMenu/DropdownMenuTrigger.d.ts +3 -3
- package/dist/types/components/DropdownMenu/DropdownMenuTrigger.d.ts.map +1 -1
- package/dist/types/components/ErrorSummary/ErrorSummaryHeading.d.ts +8 -6
- package/dist/types/components/ErrorSummary/ErrorSummaryHeading.d.ts.map +1 -1
- package/dist/types/components/ErrorSummary/ErrorSummaryItem.d.ts +2 -5
- package/dist/types/components/ErrorSummary/ErrorSummaryItem.d.ts.map +1 -1
- package/dist/types/components/ErrorSummary/ErrorSummaryList.d.ts +6 -7
- package/dist/types/components/ErrorSummary/ErrorSummaryList.d.ts.map +1 -1
- package/dist/types/components/ErrorSummary/ErrorSummaryRoot.d.ts +7 -6
- package/dist/types/components/ErrorSummary/ErrorSummaryRoot.d.ts.map +1 -1
- package/dist/types/components/ErrorSummary/index.d.ts +1 -1
- package/dist/types/components/ErrorSummary/index.d.ts.map +1 -1
- package/dist/types/components/HelpText/HelpText.d.ts +19 -8
- package/dist/types/components/HelpText/HelpText.d.ts.map +1 -1
- package/dist/types/components/Link/Link.d.ts +2 -2
- package/dist/types/components/Link/Link.d.ts.map +1 -1
- package/dist/types/components/List/ListItem.d.ts +2 -2
- package/dist/types/components/List/ListItem.d.ts.map +1 -1
- package/dist/types/components/List/Lists.d.ts +11 -21
- package/dist/types/components/List/Lists.d.ts.map +1 -1
- package/dist/types/components/List/index.d.ts +15 -14
- package/dist/types/components/List/index.d.ts.map +1 -1
- package/dist/types/components/Modal/ModaContent.d.ts +2 -2
- package/dist/types/components/Modal/ModaContent.d.ts.map +1 -1
- package/dist/types/components/Modal/ModalDialog.d.ts +2 -2
- package/dist/types/components/Modal/ModalDialog.d.ts.map +1 -1
- package/dist/types/components/Modal/ModalFooter.d.ts +2 -2
- package/dist/types/components/Modal/ModalFooter.d.ts.map +1 -1
- package/dist/types/components/Modal/ModalHeader.d.ts +2 -2
- package/dist/types/components/Modal/ModalHeader.d.ts.map +1 -1
- package/dist/types/components/Modal/ModalRoot.d.ts +4 -3
- package/dist/types/components/Modal/ModalRoot.d.ts.map +1 -1
- package/dist/types/components/Modal/ModalTrigger.d.ts +3 -3
- package/dist/types/components/Modal/ModalTrigger.d.ts.map +1 -1
- package/dist/types/components/Pagination/Pagination.d.ts +4 -5
- package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/Pagination/PaginationButton.d.ts +3 -3
- package/dist/types/components/Pagination/PaginationButton.d.ts.map +1 -1
- package/dist/types/components/Pagination/PaginationEllipsis.d.ts +1 -2
- package/dist/types/components/Pagination/PaginationEllipsis.d.ts.map +1 -1
- package/dist/types/components/Pagination/PaginationItem.d.ts +2 -3
- package/dist/types/components/Pagination/PaginationItem.d.ts.map +1 -1
- package/dist/types/components/Pagination/{PaginationContent.d.ts → PaginationList.d.ts} +4 -4
- package/dist/types/components/Pagination/PaginationList.d.ts.map +1 -0
- package/dist/types/components/Pagination/PaginationNextPrev.d.ts +4 -5
- package/dist/types/components/Pagination/PaginationNextPrev.d.ts.map +1 -1
- package/dist/types/components/Pagination/PaginationRoot.d.ts +14 -4
- package/dist/types/components/Pagination/PaginationRoot.d.ts.map +1 -1
- package/dist/types/components/Pagination/index.d.ts +9 -10
- package/dist/types/components/Pagination/index.d.ts.map +1 -1
- package/dist/types/components/Pagination/usePagination.d.ts +1 -1
- package/dist/types/components/Popover/Popover.d.ts +83 -0
- package/dist/types/components/Popover/Popover.d.ts.map +1 -0
- package/dist/types/components/Popover/PopoverContext.d.ts +13 -0
- package/dist/types/components/Popover/PopoverContext.d.ts.map +1 -0
- package/dist/types/components/Popover/PopoverTrigger.d.ts +3 -3
- package/dist/types/components/Popover/PopoverTrigger.d.ts.map +1 -1
- package/dist/types/components/Popover/index.d.ts +8 -10
- package/dist/types/components/Popover/index.d.ts.map +1 -1
- package/dist/types/components/Table/Table.d.ts +3 -3
- package/dist/types/components/Table/Table.d.ts.map +1 -1
- package/dist/types/components/Table/TableBody.d.ts +2 -2
- package/dist/types/components/Table/TableBody.d.ts.map +1 -1
- package/dist/types/components/Table/TableCell.d.ts +2 -2
- package/dist/types/components/Table/TableCell.d.ts.map +1 -1
- package/dist/types/components/Table/TableHead.d.ts +2 -2
- package/dist/types/components/Table/TableHead.d.ts.map +1 -1
- package/dist/types/components/Table/TableHeaderCell.d.ts +5 -25
- package/dist/types/components/Table/TableHeaderCell.d.ts.map +1 -1
- package/dist/types/components/Table/TableRow.d.ts +2 -2
- package/dist/types/components/Table/TableRow.d.ts.map +1 -1
- package/dist/types/components/Tabs/Tab.d.ts +2 -2
- package/dist/types/components/Tabs/Tab.d.ts.map +1 -1
- package/dist/types/components/Tabs/TabContent.d.ts +2 -2
- package/dist/types/components/Tabs/TabContent.d.ts.map +1 -1
- package/dist/types/components/Tabs/TabList.d.ts +1 -1
- package/dist/types/components/Tabs/TabList.d.ts.map +1 -1
- package/dist/types/components/Tabs/TabsRoot.d.ts +3 -3
- package/dist/types/components/Tabs/TabsRoot.d.ts.map +1 -1
- package/dist/types/components/Tag/Tag.d.ts +2 -2
- package/dist/types/components/Tag/Tag.d.ts.map +1 -1
- package/dist/types/components/ToggleGroup/ToggleGroupItem/ToggleGroupItem.d.ts +3 -3
- package/dist/types/components/ToggleGroup/ToggleGroupItem/ToggleGroupItem.d.ts.map +1 -1
- package/dist/types/components/ToggleGroup/ToggleGroupRoot.d.ts +3 -3
- package/dist/types/components/ToggleGroup/ToggleGroupRoot.d.ts.map +1 -1
- package/dist/types/components/Tooltip/Tooltip.d.ts +6 -7
- package/dist/types/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/types/components/Typography/ErrorMessage/ErrorMessage.d.ts +2 -2
- 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 +2 -2
- package/dist/types/components/Typography/Ingress/Ingress.d.ts.map +1 -1
- package/dist/types/components/Typography/Label/Label.d.ts +2 -2
- package/dist/types/components/Typography/Label/Label.d.ts.map +1 -1
- package/dist/types/components/Typography/Paragraph/Paragraph.d.ts +2 -2
- package/dist/types/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
- package/dist/types/components/form/Checkbox/Checkbox.d.ts +2 -2
- package/dist/types/components/form/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/types/components/form/Checkbox/CheckboxGroup.d.ts +3 -3
- package/dist/types/components/form/Checkbox/CheckboxGroup.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/Combobox.d.ts +4 -4
- package/dist/types/components/form/Combobox/Combobox.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/ComboboxContext.d.ts +5 -4
- package/dist/types/components/form/Combobox/ComboboxContext.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/ComboboxIdContext.d.ts +4 -4
- package/dist/types/components/form/Combobox/ComboboxIdContext.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/Custom.d.ts +2 -2
- package/dist/types/components/form/Combobox/Custom.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/Empty.d.ts +2 -2
- package/dist/types/components/form/Combobox/Empty.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/Option/Description.d.ts +2 -2
- package/dist/types/components/form/Combobox/Option/Description.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/Option/Option.d.ts +3 -3
- 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/internal/ComboboxClearButton.d.ts +2 -1
- package/dist/types/components/form/Combobox/internal/ComboboxClearButton.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/internal/ComboboxInput.d.ts +3 -2
- package/dist/types/components/form/Combobox/internal/ComboboxInput.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/useCombobox.d.ts +3 -3
- package/dist/types/components/form/Combobox/useComboboxKeyboard.d.ts +2 -1
- package/dist/types/components/form/Combobox/useComboboxKeyboard.d.ts.map +1 -1
- package/dist/types/components/form/Combobox/useFloatingCombobox.d.ts +13 -12
- package/dist/types/components/form/Combobox/useFloatingCombobox.d.ts.map +1 -1
- package/dist/types/components/form/Fieldset/Fieldset.d.ts +2 -2
- package/dist/types/components/form/Fieldset/Fieldset.d.ts.map +1 -1
- package/dist/types/components/form/Fieldset/FieldsetContext.d.ts +1 -1
- package/dist/types/components/form/Fieldset/FieldsetContext.d.ts.map +1 -1
- package/dist/types/components/form/Fieldset/useFieldset.d.ts +1 -1
- package/dist/types/components/form/Radio/Radio.d.ts +2 -2
- package/dist/types/components/form/Radio/Radio.d.ts.map +1 -1
- package/dist/types/components/form/Radio/RadioGroup.d.ts +3 -3
- package/dist/types/components/form/Radio/RadioGroup.d.ts.map +1 -1
- package/dist/types/components/form/Search/Search.d.ts +2 -2
- package/dist/types/components/form/Search/Search.d.ts.map +1 -1
- package/dist/types/components/form/{NativeSelect/NativeSelect.d.ts → Select/Select.d.ts} +5 -5
- package/dist/types/components/form/Select/Select.d.ts.map +1 -0
- package/dist/types/components/form/Select/SelectOptgroup.d.ts +16 -0
- package/dist/types/components/form/Select/SelectOptgroup.d.ts.map +1 -0
- package/dist/types/components/form/Select/SelectOption.d.ts +16 -0
- package/dist/types/components/form/Select/SelectOption.d.ts.map +1 -0
- package/dist/types/components/form/Select/index.d.ts +13 -0
- package/dist/types/components/form/Select/index.d.ts.map +1 -0
- package/dist/types/components/form/Select/useSelect.d.ts +10 -0
- package/dist/types/components/form/Select/useSelect.d.ts.map +1 -0
- 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 +2 -2
- package/dist/types/components/form/Textarea/Textarea.d.ts.map +1 -1
- package/dist/types/components/form/Textfield/Textfield.d.ts +2 -2
- package/dist/types/components/form/Textfield/Textfield.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +4 -4
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/components/loaders/Skeleton/Circle/Circle.d.ts.map +1 -0
- package/dist/types/components/loaders/Skeleton/Rectangle/Rectangle.d.ts.map +1 -0
- package/dist/types/components/loaders/Skeleton/Text/Text.d.ts.map +1 -0
- package/dist/types/components/loaders/Skeleton/index.d.ts.map +1 -0
- package/dist/types/components/{Spinner → loaders/Spinner}/Spinner.d.ts +3 -3
- package/dist/types/components/loaders/Spinner/Spinner.d.ts.map +1 -0
- package/dist/types/components/loaders/Spinner/index.d.ts.map +1 -0
- package/dist/types/utilities/AnimateHeight/AnimateHeight.d.ts +2 -2
- 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 +3 -3
- package/dist/types/utilities/RovingFocus/RovingFocusRoot.d.ts.map +1 -1
- package/dist/types/utilities/RovingFocus/useRovingFocus.d.ts +163 -162
- package/dist/types/utilities/RovingFocus/useRovingFocus.d.ts.map +1 -1
- package/dist/types/utilities/hooks/useSynchronizedAnimation/useSynchronizedAnimation.d.ts +1 -1
- package/dist/types/utilities/hooks/useSynchronizedAnimation/useSynchronizedAnimation.d.ts.map +1 -1
- package/package.json +9 -4
- package/dist/cjs/components/Accordion/AccordionRoot.js +0 -16
- package/dist/cjs/components/Box/Box.js +0 -15
- package/dist/cjs/components/List/ListHeading.js +0 -28
- package/dist/cjs/components/List/ListRoot.js +0 -21
- package/dist/cjs/components/Popover/PopoverContent.js +0 -105
- package/dist/cjs/components/Popover/PopoverRoot.js +0 -68
- package/dist/cjs/components/Spinner/Spinner.js +0 -24
- package/dist/cjs/components/form/NativeSelect/NativeSelect.js +0 -21
- package/dist/cjs/components/form/NativeSelect/useNativeSelect.js +0 -55
- package/dist/cjs/utilities/AnimateHeight/AnimateHeight.js +0 -46
- package/dist/cjs/utilities/hooks/useMediaQuery/useMediaQuery.js +0 -49
- package/dist/cjs/utilities/hooks/usePrevious.js +0 -14
- package/dist/esm/components/Accordion/AccordionRoot.js +0 -14
- package/dist/esm/components/Box/Box.js +0 -13
- package/dist/esm/components/List/ListHeading.js +0 -26
- package/dist/esm/components/List/ListRoot.js +0 -18
- package/dist/esm/components/Popover/PopoverContent.js +0 -85
- package/dist/esm/components/Popover/PopoverRoot.js +0 -47
- package/dist/esm/components/Spinner/Spinner.js +0 -22
- package/dist/esm/components/form/NativeSelect/NativeSelect.js +0 -19
- package/dist/esm/components/form/NativeSelect/useNativeSelect.js +0 -53
- package/dist/esm/utilities/AnimateHeight/AnimateHeight.js +0 -44
- package/dist/esm/utilities/hooks/useMediaQuery/useMediaQuery.js +0 -47
- package/dist/esm/utilities/hooks/usePrevious.js +0 -12
- package/dist/types/components/Accordion/AccordionRoot.d.ts.map +0 -1
- package/dist/types/components/Box/Box.d.ts +0 -56
- package/dist/types/components/Box/Box.d.ts.map +0 -1
- package/dist/types/components/Box/index.d.ts +0 -3
- package/dist/types/components/Box/index.d.ts.map +0 -1
- package/dist/types/components/List/ListHeading.d.ts +0 -9
- package/dist/types/components/List/ListHeading.d.ts.map +0 -1
- package/dist/types/components/List/ListRoot.d.ts +0 -34
- package/dist/types/components/List/ListRoot.d.ts.map +0 -1
- package/dist/types/components/Pagination/PaginationContent.d.ts.map +0 -1
- package/dist/types/components/Popover/PopoverContent.d.ts +0 -8
- package/dist/types/components/Popover/PopoverContent.d.ts.map +0 -1
- package/dist/types/components/Popover/PopoverRoot.d.ts +0 -54
- package/dist/types/components/Popover/PopoverRoot.d.ts.map +0 -1
- package/dist/types/components/Skeleton/Circle/Circle.d.ts.map +0 -1
- package/dist/types/components/Skeleton/Rectangle/Rectangle.d.ts.map +0 -1
- package/dist/types/components/Skeleton/Text/Text.d.ts.map +0 -1
- package/dist/types/components/Skeleton/index.d.ts.map +0 -1
- package/dist/types/components/Spinner/Spinner.d.ts.map +0 -1
- package/dist/types/components/Spinner/index.d.ts.map +0 -1
- package/dist/types/components/form/NativeSelect/NativeSelect.d.ts.map +0 -1
- package/dist/types/components/form/NativeSelect/index.d.ts +0 -3
- package/dist/types/components/form/NativeSelect/index.d.ts.map +0 -1
- package/dist/types/components/form/NativeSelect/useNativeSelect.d.ts +0 -10
- package/dist/types/components/form/NativeSelect/useNativeSelect.d.ts.map +0 -1
- /package/dist/cjs/components/{Skeleton → loaders/Skeleton}/index.js +0 -0
- /package/dist/esm/components/{Skeleton → loaders/Skeleton}/index.js +0 -0
- /package/dist/types/components/{Skeleton → loaders/Skeleton}/Circle/Circle.d.ts +0 -0
- /package/dist/types/components/{Skeleton → loaders/Skeleton}/Rectangle/Rectangle.d.ts +0 -0
- /package/dist/types/components/{Skeleton → loaders/Skeleton}/Text/Text.d.ts +0 -0
- /package/dist/types/components/{Skeleton → loaders/Skeleton}/index.d.ts +0 -0
- /package/dist/types/components/{Spinner → loaders/Spinner}/index.d.ts +0 -0
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
-
var React = require('react');
|
|
6
|
-
|
|
7
|
-
function _interopNamespaceDefault(e) {
|
|
8
|
-
var n = Object.create(null);
|
|
9
|
-
if (e) {
|
|
10
|
-
Object.keys(e).forEach(function (k) {
|
|
11
|
-
if (k !== 'default') {
|
|
12
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
13
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
14
|
-
enumerable: true,
|
|
15
|
-
get: function () { return e[k]; }
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
n.default = e;
|
|
21
|
-
return Object.freeze(n);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
25
|
-
|
|
26
|
-
const PopoverRoot = ({ children, placement = 'top', open, variant = 'default', portal, size = 'md', onOpenChange, onClose, }) => {
|
|
27
|
-
const triggerRef = React.useRef(null);
|
|
28
|
-
const [internalOpen, setInternalOpen] = React.useState(open ?? false);
|
|
29
|
-
const randomPopoverId = React.useId();
|
|
30
|
-
const [popoverId, setPopoverId] = React.useState(randomPopoverId);
|
|
31
|
-
const randomTriggerId = React.useId();
|
|
32
|
-
const [triggerId, setTriggerId] = React.useState(randomTriggerId);
|
|
33
|
-
const isControlled = typeof open === 'boolean';
|
|
34
|
-
React__namespace.useEffect(() => {
|
|
35
|
-
setInternalOpen(open ?? false);
|
|
36
|
-
}, [open]);
|
|
37
|
-
const anchorEl = triggerRef.current;
|
|
38
|
-
return (jsxRuntime.jsx(PopoverContext.Provider, { value: {
|
|
39
|
-
triggerRef,
|
|
40
|
-
anchorEl,
|
|
41
|
-
portal,
|
|
42
|
-
internalOpen,
|
|
43
|
-
isControlled,
|
|
44
|
-
setInternalOpen,
|
|
45
|
-
size,
|
|
46
|
-
variant,
|
|
47
|
-
placement,
|
|
48
|
-
onOpenChange,
|
|
49
|
-
onClose,
|
|
50
|
-
popoverId,
|
|
51
|
-
setPopoverId,
|
|
52
|
-
triggerId,
|
|
53
|
-
setTriggerId,
|
|
54
|
-
}, children: children }));
|
|
55
|
-
};
|
|
56
|
-
const PopoverContext = React__namespace.createContext({
|
|
57
|
-
size: 'sm',
|
|
58
|
-
variant: 'default',
|
|
59
|
-
anchorEl: null,
|
|
60
|
-
placement: 'top',
|
|
61
|
-
triggerRef: { current: null },
|
|
62
|
-
internalOpen: false,
|
|
63
|
-
setInternalOpen: () => { },
|
|
64
|
-
});
|
|
65
|
-
PopoverRoot.displayName = 'PopoverRoot';
|
|
66
|
-
|
|
67
|
-
exports.PopoverContext = PopoverContext;
|
|
68
|
-
exports.PopoverRoot = PopoverRoot;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
-
var lite = require('../../node_modules/clsx/dist/lite.js');
|
|
6
|
-
var useSynchronizedAnimation = require('../../utilities/hooks/useSynchronizedAnimation/useSynchronizedAnimation.js');
|
|
7
|
-
|
|
8
|
-
const sizeMap = {
|
|
9
|
-
'2xs': 13,
|
|
10
|
-
xs: 20,
|
|
11
|
-
sm: 27,
|
|
12
|
-
md: 40,
|
|
13
|
-
lg: 56,
|
|
14
|
-
xl: 79,
|
|
15
|
-
};
|
|
16
|
-
/** Spinner component used for indicating busy or indeterminate loading */
|
|
17
|
-
const Spinner = ({ title, color = 'neutral', size = 'md', className, style, ...rest }) => {
|
|
18
|
-
const svgRef = useSynchronizedAnimation.useSynchronizedAnimation('ds-spinner-rotate-animation');
|
|
19
|
-
const strokeRef = useSynchronizedAnimation.useSynchronizedAnimation('ds-spinner-stroke-animation');
|
|
20
|
-
return (jsxRuntime.jsxs("svg", { className: lite.clsx('ds-spinner', `ds-spinner--${color}`, className), style: { width: sizeMap[size], height: sizeMap[size], ...style }, viewBox: '0 0 50 50', ref: svgRef, ...rest, children: [jsxRuntime.jsx("title", { children: title }), jsxRuntime.jsx("circle", { className: lite.clsx('ds-spinner__background'), cx: '25', cy: '25', r: '20', fill: 'none', strokeWidth: '5' }), jsxRuntime.jsx("circle", { className: lite.clsx(`ds-spinner__circle`), cx: '25', cy: '25', r: '20', fill: 'none', strokeWidth: '5', ref: strokeRef })] }));
|
|
21
|
-
};
|
|
22
|
-
Spinner.displayName = 'Spinner';
|
|
23
|
-
|
|
24
|
-
exports.Spinner = Spinner;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
-
var akselIcons = require('@navikt/aksel-icons');
|
|
6
|
-
var lite = require('../../../node_modules/clsx/dist/lite.js');
|
|
7
|
-
var React = require('react');
|
|
8
|
-
var useNativeSelect = require('./useNativeSelect.js');
|
|
9
|
-
var Label = require('../../Typography/Label/Label.js');
|
|
10
|
-
var omit = require('../../../utilities/omit/omit.js');
|
|
11
|
-
var ErrorMessage = require('../../Typography/ErrorMessage/ErrorMessage.js');
|
|
12
|
-
var Paragraph = require('../../Typography/Paragraph/Paragraph.js');
|
|
13
|
-
|
|
14
|
-
const NativeSelect = React.forwardRef((props, ref) => {
|
|
15
|
-
const { children, disabled = false, label, description, hideLabel = false, error, className, htmlSize = 0, ...rest } = props;
|
|
16
|
-
const { selectProps, descriptionId, errorId, readOnly, size = 'md', } = useNativeSelect.useNativeSelect(props);
|
|
17
|
-
return (jsxRuntime.jsx(Paragraph.Paragraph, { asChild: true, size: size, children: jsxRuntime.jsxs("div", { className: lite.clsx('ds-native-select--container', readOnly && 'ds-native-select--readonly', error && 'ds-native-select--error'), children: [label && (jsxRuntime.jsxs(Label.Label, { weight: 'medium', size: size, htmlFor: selectProps.id, className: lite.clsx('ds-native-select__label', hideLabel && 'ds-sr-only'), children: [readOnly && (jsxRuntime.jsx(akselIcons.PadlockLockedFillIcon, { "aria-hidden": true, className: 'ds-native-select__readonly__icon' })), label] })), description && (jsxRuntime.jsx(Paragraph.Paragraph, { asChild: true, size: size, children: jsxRuntime.jsx("div", { id: descriptionId, className: lite.clsx(`ds-native-select__description`, hideLabel && `ds-sr-only`), children: description }) })), jsxRuntime.jsx("div", { className: 'ds-native-select__wrapper', children: jsxRuntime.jsx("select", { disabled: disabled, ref: ref, size: htmlSize, className: lite.clsx('ds-native-select', `ds-native-select--${size}`, `ds-focus`, props.multiple && 'ds-native-select--multiple', className), ...omit.omit(['size', 'error', 'errorId'], rest), ...omit.omit(['readOnly', 'disabled'], selectProps), children: children }) }), error && (jsxRuntime.jsx("div", { id: errorId, className: 'ds-native-select__error-message', "aria-live": 'polite', "aria-relevant": 'additions removals', children: jsxRuntime.jsx(ErrorMessage.ErrorMessage, { size: size, children: error }) }))] }) }));
|
|
18
|
-
});
|
|
19
|
-
NativeSelect.displayName = 'NativeSelect';
|
|
20
|
-
|
|
21
|
-
exports.NativeSelect = NativeSelect;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var FieldsetContext = require('../Fieldset/FieldsetContext.js');
|
|
6
|
-
var useFormField = require('../useFormField.js');
|
|
7
|
-
|
|
8
|
-
/** Handles props for `NativeSelect` in context with `Fieldset` */
|
|
9
|
-
const useNativeSelect = (props) => {
|
|
10
|
-
const fieldset = React.useContext(FieldsetContext.FieldsetContext);
|
|
11
|
-
const { inputProps: selectProps, readOnly = false, size = fieldset?.size ?? 'md', ...rest } = useFormField.useFormField(props, 'select');
|
|
12
|
-
return {
|
|
13
|
-
...rest,
|
|
14
|
-
readOnly,
|
|
15
|
-
size,
|
|
16
|
-
selectProps: {
|
|
17
|
-
...selectProps,
|
|
18
|
-
readOnly,
|
|
19
|
-
onClick: (e) => {
|
|
20
|
-
if (readOnly) {
|
|
21
|
-
e.preventDefault();
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
props?.onClick?.(e);
|
|
25
|
-
},
|
|
26
|
-
onKeyDown: (e) => {
|
|
27
|
-
if (readOnly) {
|
|
28
|
-
if (e.key === 'Tab')
|
|
29
|
-
return;
|
|
30
|
-
e.preventDefault();
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
props?.onKeyDown?.(e);
|
|
34
|
-
},
|
|
35
|
-
onMouseDown: (e) => {
|
|
36
|
-
if (readOnly) {
|
|
37
|
-
e.preventDefault();
|
|
38
|
-
if (e.target instanceof HTMLElement)
|
|
39
|
-
e.target.focus();
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
props?.onMouseDown?.(e);
|
|
43
|
-
},
|
|
44
|
-
onChange: (e) => {
|
|
45
|
-
if (readOnly) {
|
|
46
|
-
e.preventDefault();
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
props?.onChange?.(e);
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
exports.useNativeSelect = useNativeSelect;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
-
var lite = require('../../node_modules/clsx/dist/lite.js');
|
|
6
|
-
var React = require('react');
|
|
7
|
-
var usePrevious = require('../hooks/usePrevious.js');
|
|
8
|
-
var useMediaQuery = require('../hooks/useMediaQuery/useMediaQuery.js');
|
|
9
|
-
|
|
10
|
-
const transitionDurationInMilliseconds = 250;
|
|
11
|
-
/**
|
|
12
|
-
* AnimateHeight is a component that animates its height when the `open` prop changes.
|
|
13
|
-
*/
|
|
14
|
-
const AnimateHeight = ({ children, className, open = false, style, ...rest }) => {
|
|
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);
|
|
19
|
-
const prevOpen = usePrevious.usePrevious(open);
|
|
20
|
-
const openOrClosed = open ? 'open' : 'closed';
|
|
21
|
-
const [state, setState] = React.useState(openOrClosed);
|
|
22
|
-
const timeoutRef = React.useRef(null);
|
|
23
|
-
const shouldAnimate = !useMediaQuery.useMediaQuery('(prefers-reduced-motion)');
|
|
24
|
-
const contentRef = React.useCallback((node) => {
|
|
25
|
-
if (node) {
|
|
26
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
27
|
-
setHeight(open ? node.getBoundingClientRect().height : 0);
|
|
28
|
-
});
|
|
29
|
-
resizeObserver.observe(node);
|
|
30
|
-
}
|
|
31
|
-
if (prevOpen !== undefined && prevOpen !== open) {
|
|
32
|
-
// Opening or closing
|
|
33
|
-
setState(shouldAnimate ? 'openingOrClosing' : openOrClosed);
|
|
34
|
-
timeoutRef.current && clearTimeout(timeoutRef.current); // Reset timeout if already active (i.e. if the user closes the component before it finishes opening)
|
|
35
|
-
timeoutRef.current = setTimeout(() => {
|
|
36
|
-
setState(openOrClosed);
|
|
37
|
-
}, transitionDurationInMilliseconds);
|
|
38
|
-
}
|
|
39
|
-
}, [open, openOrClosed, prevOpen, shouldAnimate]);
|
|
40
|
-
const transition = state === 'openingOrClosing'
|
|
41
|
-
? `height ${transitionDurationInMilliseconds}ms ease-in-out`
|
|
42
|
-
: undefined;
|
|
43
|
-
return (jsxRuntime.jsx("div", { ...rest, className: lite.clsx('ds-animate-height', `ds-animate-height--${state}`, className), style: { height, transition, ...style }, children: jsxRuntime.jsx("div", { ref: contentRef, className: 'ds-animate-height__content', children: children }) }));
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
exports.AnimateHeight = AnimateHeight;
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var useIsomorphicLayoutEffect = require('../useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js');
|
|
6
|
-
|
|
7
|
-
// from https://usehooks-ts.com/react-hook/use-media-query
|
|
8
|
-
const IS_SERVER = typeof window === 'undefined';
|
|
9
|
-
function useMediaQuery(query, { defaultValue = false, initializeWithValue = true, } = {}) {
|
|
10
|
-
const getMatches = (query) => {
|
|
11
|
-
if (IS_SERVER) {
|
|
12
|
-
return defaultValue;
|
|
13
|
-
}
|
|
14
|
-
return window.matchMedia(query).matches;
|
|
15
|
-
};
|
|
16
|
-
const [matches, setMatches] = React.useState(() => {
|
|
17
|
-
if (initializeWithValue) {
|
|
18
|
-
return getMatches(query);
|
|
19
|
-
}
|
|
20
|
-
return defaultValue;
|
|
21
|
-
});
|
|
22
|
-
// Handles the change event of the media query.
|
|
23
|
-
function handleChange() {
|
|
24
|
-
setMatches(getMatches(query));
|
|
25
|
-
}
|
|
26
|
-
useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(() => {
|
|
27
|
-
const matchMedia = window.matchMedia(query);
|
|
28
|
-
// Triggered at the first client-side load and if query changes
|
|
29
|
-
handleChange();
|
|
30
|
-
// Use deprecated `addListener` and `removeListener` to support Safari < 14 (#135)
|
|
31
|
-
if (matchMedia.addListener) {
|
|
32
|
-
matchMedia.addListener(handleChange);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
matchMedia.addEventListener('change', handleChange);
|
|
36
|
-
}
|
|
37
|
-
return () => {
|
|
38
|
-
if (matchMedia.removeListener) {
|
|
39
|
-
matchMedia.removeListener(handleChange);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
matchMedia.removeEventListener('change', handleChange);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
}, [query]);
|
|
46
|
-
return matches;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
exports.useMediaQuery = useMediaQuery;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
var React = require('react');
|
|
5
|
-
|
|
6
|
-
function usePrevious(value) {
|
|
7
|
-
const ref = React.useRef();
|
|
8
|
-
React.useEffect(() => {
|
|
9
|
-
ref.current = value;
|
|
10
|
-
}, [value]);
|
|
11
|
-
return ref.current;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
exports.usePrevious = usePrevious;
|
|
@@ -1,14 +0,0 @@
|
|
|
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
|
-
/**
|
|
7
|
-
* Accordion root component, contains `Accordion.Item` components.
|
|
8
|
-
*/
|
|
9
|
-
const AccordionRoot = forwardRef(({ border = false, color = 'neutral', className, ...rest }, ref) => {
|
|
10
|
-
return (jsx("div", { className: clsx('ds-accordion', border && 'ds-accordion--border', color && `ds-accordion--${color}`, className), ref: ref, ...rest }));
|
|
11
|
-
});
|
|
12
|
-
AccordionRoot.displayName = 'AccordionRoot';
|
|
13
|
-
|
|
14
|
-
export { AccordionRoot };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { Slot } from '../../node_modules/@radix-ui/react-slot/dist/index.js';
|
|
4
|
-
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
5
|
-
import { forwardRef } from 'react';
|
|
6
|
-
|
|
7
|
-
const Box = forwardRef(({ shadow, borderColor, borderRadius, background = 'default', children, asChild = false, className, ...rest }, ref) => {
|
|
8
|
-
const Component = asChild ? Slot : 'div';
|
|
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
|
-
});
|
|
11
|
-
Box.displayName = 'Box';
|
|
12
|
-
|
|
13
|
-
export { Box };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { forwardRef, useContext, useId, useMemo, useEffect } from 'react';
|
|
4
|
-
import { ListContext } from './ListRoot.js';
|
|
5
|
-
import { Heading } from '../Typography/Heading/Heading.js';
|
|
6
|
-
|
|
7
|
-
const HEADING_SIZE_MAP = {
|
|
8
|
-
sm: '2xs',
|
|
9
|
-
md: 'xs',
|
|
10
|
-
lg: 'sm',
|
|
11
|
-
};
|
|
12
|
-
const ListHeading = forwardRef(({ level = 2, id, ...rest }, ref) => {
|
|
13
|
-
const { size, headingId, setHeadingId } = useContext(ListContext);
|
|
14
|
-
const randomId = useId();
|
|
15
|
-
const headingId_ = id ?? randomId;
|
|
16
|
-
const headingSize = useMemo(() => HEADING_SIZE_MAP[size], [size]);
|
|
17
|
-
useEffect(() => {
|
|
18
|
-
if (headingId !== headingId_) {
|
|
19
|
-
setHeadingId(headingId_);
|
|
20
|
-
}
|
|
21
|
-
}, [headingId, id, setHeadingId, headingId_]);
|
|
22
|
-
return (jsx(Heading, { ref: ref, size: headingSize, id: headingId, level: level, spacing: true, ...rest }));
|
|
23
|
-
});
|
|
24
|
-
ListHeading.displayName = 'ListHeading';
|
|
25
|
-
|
|
26
|
-
export { ListHeading };
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { Slot } from '../../node_modules/@radix-ui/react-slot/dist/index.js';
|
|
4
|
-
import { createContext, forwardRef, useState } from 'react';
|
|
5
|
-
|
|
6
|
-
const ListContext = createContext({
|
|
7
|
-
size: 'md',
|
|
8
|
-
headingId: 'heading',
|
|
9
|
-
setHeadingId: () => { },
|
|
10
|
-
});
|
|
11
|
-
const ListRoot = forwardRef(({ size = 'md', asChild, ...rest }, ref) => {
|
|
12
|
-
const [headingId, setHeadingId] = useState();
|
|
13
|
-
const Component = asChild ? Slot : 'div';
|
|
14
|
-
return (jsx(ListContext.Provider, { value: { size, headingId, setHeadingId }, children: jsx(Component, { ref: ref, ...rest }) }));
|
|
15
|
-
});
|
|
16
|
-
ListRoot.displayName = 'ListRoot';
|
|
17
|
-
|
|
18
|
-
export { ListContext, ListRoot };
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
3
|
-
import { useFloating, useInteractions, useFocus, useClick, useDismiss, useRole, useMergeRefs, FloatingPortal } from '../../node_modules/@floating-ui/react/dist/floating-ui.react.js';
|
|
4
|
-
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
5
|
-
import * as React from 'react';
|
|
6
|
-
import { forwardRef, useContext, useRef, useEffect, useMemo } from 'react';
|
|
7
|
-
import { PopoverContext } from './PopoverRoot.js';
|
|
8
|
-
import { autoUpdate } from '../../node_modules/@floating-ui/dom/dist/floating-ui.dom.js';
|
|
9
|
-
import { offset, flip, shift, arrow } from '../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js';
|
|
10
|
-
import { useIsomorphicLayoutEffect } from '../../utilities/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js';
|
|
11
|
-
import { Paragraph } from '../Typography/Paragraph/Paragraph.js';
|
|
12
|
-
|
|
13
|
-
const ARROW_HEIGHT = 7;
|
|
14
|
-
const ARROW_GAP = 4;
|
|
15
|
-
const ARROW_PLACEMENT = {
|
|
16
|
-
top: 'bottom',
|
|
17
|
-
right: 'left',
|
|
18
|
-
bottom: 'top',
|
|
19
|
-
left: 'right',
|
|
20
|
-
};
|
|
21
|
-
const PopoverContent = forwardRef(({ className, children, style, id, ...rest }, ref) => {
|
|
22
|
-
const { portal, internalOpen, size, isControlled, variant, placement, setInternalOpen, onClose, onOpenChange, anchorEl, popoverId, setPopoverId, triggerId, } = useContext(PopoverContext);
|
|
23
|
-
const Container = portal ? FloatingPortal : React.Fragment;
|
|
24
|
-
const floatingEl = useRef(null);
|
|
25
|
-
const arrowRef = useRef(null);
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
id && setPopoverId?.(id);
|
|
28
|
-
}, [id, setPopoverId]);
|
|
29
|
-
const { context, update, refs, floatingStyles, placement: flPlacement, middlewareData: { arrow: { x: arrowX, y: arrowY } = {}, }, } = useFloating({
|
|
30
|
-
placement,
|
|
31
|
-
open: internalOpen,
|
|
32
|
-
onOpenChange: (localOpen) => {
|
|
33
|
-
onOpenChange?.(localOpen);
|
|
34
|
-
if (!localOpen)
|
|
35
|
-
onClose?.();
|
|
36
|
-
if (!isControlled)
|
|
37
|
-
setInternalOpen(localOpen);
|
|
38
|
-
},
|
|
39
|
-
whileElementsMounted: autoUpdate,
|
|
40
|
-
elements: {
|
|
41
|
-
reference: anchorEl ?? undefined,
|
|
42
|
-
floating: floatingEl.current,
|
|
43
|
-
},
|
|
44
|
-
middleware: [
|
|
45
|
-
offset(ARROW_HEIGHT + ARROW_GAP),
|
|
46
|
-
flip({
|
|
47
|
-
fallbackAxisSideDirection: 'start',
|
|
48
|
-
}),
|
|
49
|
-
shift(),
|
|
50
|
-
arrow({
|
|
51
|
-
element: arrowRef,
|
|
52
|
-
}),
|
|
53
|
-
],
|
|
54
|
-
});
|
|
55
|
-
const { getFloatingProps } = useInteractions([
|
|
56
|
-
useFocus(context),
|
|
57
|
-
useClick(context),
|
|
58
|
-
useDismiss(context),
|
|
59
|
-
useRole(context),
|
|
60
|
-
]);
|
|
61
|
-
const floatingRef = useMergeRefs([refs.setFloating, ref]);
|
|
62
|
-
useIsomorphicLayoutEffect(() => {
|
|
63
|
-
refs.setReference(anchorEl);
|
|
64
|
-
if (!refs.reference.current || !refs.floating.current || !internalOpen)
|
|
65
|
-
return;
|
|
66
|
-
const cleanup = autoUpdate(refs.reference.current, refs.floating.current, update);
|
|
67
|
-
return () => cleanup();
|
|
68
|
-
}, [refs.floating, refs.reference, update, anchorEl, refs, internalOpen]);
|
|
69
|
-
const arrowPlacement = useMemo(() => {
|
|
70
|
-
return ARROW_PLACEMENT[flPlacement.split('-')[0]];
|
|
71
|
-
}, [flPlacement]);
|
|
72
|
-
return (jsx(Fragment, { children: internalOpen && (jsx(Container, { children: jsx(Paragraph, { asChild: true, size: size, children: jsxs("div", { ref: floatingEl, className: clsx('ds-popover', `ds-popover--${variant}`, `ds-popover--${size}`, className), "data-placement": flPlacement, ...getFloatingProps({
|
|
73
|
-
ref: floatingRef,
|
|
74
|
-
tabIndex: undefined,
|
|
75
|
-
}), style: { ...floatingStyles, ...style }, id: popoverId, "aria-labelledby": triggerId, ...rest, children: [children, jsx("div", { ref: arrowRef, className: clsx('ds-popover__arrow', `ds-popover__arrow--${arrowPlacement}`), style: {
|
|
76
|
-
height: ARROW_HEIGHT,
|
|
77
|
-
width: ARROW_HEIGHT,
|
|
78
|
-
...(arrowX != null ? { left: arrowX } : {}),
|
|
79
|
-
...(arrowY != null ? { top: arrowY } : {}),
|
|
80
|
-
...(arrowPlacement ? { [arrowPlacement]: -4.5 } : {}),
|
|
81
|
-
} })] }) }) })) }));
|
|
82
|
-
});
|
|
83
|
-
PopoverContent.displayName = 'Popover.Content';
|
|
84
|
-
|
|
85
|
-
export { PopoverContent };
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import { useRef, useState, useId } from 'react';
|
|
5
|
-
|
|
6
|
-
const PopoverRoot = ({ children, placement = 'top', open, variant = 'default', portal, size = 'md', onOpenChange, onClose, }) => {
|
|
7
|
-
const triggerRef = useRef(null);
|
|
8
|
-
const [internalOpen, setInternalOpen] = useState(open ?? false);
|
|
9
|
-
const randomPopoverId = useId();
|
|
10
|
-
const [popoverId, setPopoverId] = useState(randomPopoverId);
|
|
11
|
-
const randomTriggerId = useId();
|
|
12
|
-
const [triggerId, setTriggerId] = useState(randomTriggerId);
|
|
13
|
-
const isControlled = typeof open === 'boolean';
|
|
14
|
-
React.useEffect(() => {
|
|
15
|
-
setInternalOpen(open ?? false);
|
|
16
|
-
}, [open]);
|
|
17
|
-
const anchorEl = triggerRef.current;
|
|
18
|
-
return (jsx(PopoverContext.Provider, { value: {
|
|
19
|
-
triggerRef,
|
|
20
|
-
anchorEl,
|
|
21
|
-
portal,
|
|
22
|
-
internalOpen,
|
|
23
|
-
isControlled,
|
|
24
|
-
setInternalOpen,
|
|
25
|
-
size,
|
|
26
|
-
variant,
|
|
27
|
-
placement,
|
|
28
|
-
onOpenChange,
|
|
29
|
-
onClose,
|
|
30
|
-
popoverId,
|
|
31
|
-
setPopoverId,
|
|
32
|
-
triggerId,
|
|
33
|
-
setTriggerId,
|
|
34
|
-
}, children: children }));
|
|
35
|
-
};
|
|
36
|
-
const PopoverContext = React.createContext({
|
|
37
|
-
size: 'sm',
|
|
38
|
-
variant: 'default',
|
|
39
|
-
anchorEl: null,
|
|
40
|
-
placement: 'top',
|
|
41
|
-
triggerRef: { current: null },
|
|
42
|
-
internalOpen: false,
|
|
43
|
-
setInternalOpen: () => { },
|
|
44
|
-
});
|
|
45
|
-
PopoverRoot.displayName = 'PopoverRoot';
|
|
46
|
-
|
|
47
|
-
export { PopoverContext, PopoverRoot };
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
4
|
-
import { useSynchronizedAnimation } from '../../utilities/hooks/useSynchronizedAnimation/useSynchronizedAnimation.js';
|
|
5
|
-
|
|
6
|
-
const sizeMap = {
|
|
7
|
-
'2xs': 13,
|
|
8
|
-
xs: 20,
|
|
9
|
-
sm: 27,
|
|
10
|
-
md: 40,
|
|
11
|
-
lg: 56,
|
|
12
|
-
xl: 79,
|
|
13
|
-
};
|
|
14
|
-
/** Spinner component used for indicating busy or indeterminate loading */
|
|
15
|
-
const Spinner = ({ title, color = 'neutral', size = 'md', className, style, ...rest }) => {
|
|
16
|
-
const svgRef = useSynchronizedAnimation('ds-spinner-rotate-animation');
|
|
17
|
-
const strokeRef = useSynchronizedAnimation('ds-spinner-stroke-animation');
|
|
18
|
-
return (jsxs("svg", { className: clsx('ds-spinner', `ds-spinner--${color}`, className), style: { width: sizeMap[size], height: sizeMap[size], ...style }, viewBox: '0 0 50 50', ref: svgRef, ...rest, children: [jsx("title", { children: title }), jsx("circle", { className: clsx('ds-spinner__background'), cx: '25', cy: '25', r: '20', fill: 'none', strokeWidth: '5' }), jsx("circle", { className: clsx(`ds-spinner__circle`), cx: '25', cy: '25', r: '20', fill: 'none', strokeWidth: '5', ref: strokeRef })] }));
|
|
19
|
-
};
|
|
20
|
-
Spinner.displayName = 'Spinner';
|
|
21
|
-
|
|
22
|
-
export { Spinner };
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
-
import { PadlockLockedFillIcon } from '@navikt/aksel-icons';
|
|
4
|
-
import { clsx } from '../../../node_modules/clsx/dist/lite.js';
|
|
5
|
-
import { forwardRef } from 'react';
|
|
6
|
-
import { useNativeSelect } from './useNativeSelect.js';
|
|
7
|
-
import { Label } from '../../Typography/Label/Label.js';
|
|
8
|
-
import { omit } from '../../../utilities/omit/omit.js';
|
|
9
|
-
import { ErrorMessage } from '../../Typography/ErrorMessage/ErrorMessage.js';
|
|
10
|
-
import { Paragraph } from '../../Typography/Paragraph/Paragraph.js';
|
|
11
|
-
|
|
12
|
-
const NativeSelect = forwardRef((props, ref) => {
|
|
13
|
-
const { children, disabled = false, label, description, hideLabel = false, error, className, htmlSize = 0, ...rest } = props;
|
|
14
|
-
const { selectProps, descriptionId, errorId, readOnly, size = 'md', } = useNativeSelect(props);
|
|
15
|
-
return (jsx(Paragraph, { asChild: true, size: size, children: jsxs("div", { className: clsx('ds-native-select--container', readOnly && 'ds-native-select--readonly', error && 'ds-native-select--error'), children: [label && (jsxs(Label, { weight: 'medium', size: size, htmlFor: selectProps.id, className: clsx('ds-native-select__label', hideLabel && 'ds-sr-only'), children: [readOnly && (jsx(PadlockLockedFillIcon, { "aria-hidden": true, className: 'ds-native-select__readonly__icon' })), label] })), description && (jsx(Paragraph, { asChild: true, size: size, children: jsx("div", { id: descriptionId, className: clsx(`ds-native-select__description`, hideLabel && `ds-sr-only`), children: description }) })), jsx("div", { className: 'ds-native-select__wrapper', children: jsx("select", { disabled: disabled, ref: ref, size: htmlSize, className: clsx('ds-native-select', `ds-native-select--${size}`, `ds-focus`, props.multiple && 'ds-native-select--multiple', className), ...omit(['size', 'error', 'errorId'], rest), ...omit(['readOnly', 'disabled'], selectProps), children: children }) }), error && (jsx("div", { id: errorId, className: 'ds-native-select__error-message', "aria-live": 'polite', "aria-relevant": 'additions removals', children: jsx(ErrorMessage, { size: size, children: error }) }))] }) }));
|
|
16
|
-
});
|
|
17
|
-
NativeSelect.displayName = 'NativeSelect';
|
|
18
|
-
|
|
19
|
-
export { NativeSelect };
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { useContext } from 'react';
|
|
3
|
-
import { FieldsetContext } from '../Fieldset/FieldsetContext.js';
|
|
4
|
-
import { useFormField } from '../useFormField.js';
|
|
5
|
-
|
|
6
|
-
/** Handles props for `NativeSelect` in context with `Fieldset` */
|
|
7
|
-
const useNativeSelect = (props) => {
|
|
8
|
-
const fieldset = useContext(FieldsetContext);
|
|
9
|
-
const { inputProps: selectProps, readOnly = false, size = fieldset?.size ?? 'md', ...rest } = useFormField(props, 'select');
|
|
10
|
-
return {
|
|
11
|
-
...rest,
|
|
12
|
-
readOnly,
|
|
13
|
-
size,
|
|
14
|
-
selectProps: {
|
|
15
|
-
...selectProps,
|
|
16
|
-
readOnly,
|
|
17
|
-
onClick: (e) => {
|
|
18
|
-
if (readOnly) {
|
|
19
|
-
e.preventDefault();
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
props?.onClick?.(e);
|
|
23
|
-
},
|
|
24
|
-
onKeyDown: (e) => {
|
|
25
|
-
if (readOnly) {
|
|
26
|
-
if (e.key === 'Tab')
|
|
27
|
-
return;
|
|
28
|
-
e.preventDefault();
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
props?.onKeyDown?.(e);
|
|
32
|
-
},
|
|
33
|
-
onMouseDown: (e) => {
|
|
34
|
-
if (readOnly) {
|
|
35
|
-
e.preventDefault();
|
|
36
|
-
if (e.target instanceof HTMLElement)
|
|
37
|
-
e.target.focus();
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
props?.onMouseDown?.(e);
|
|
41
|
-
},
|
|
42
|
-
onChange: (e) => {
|
|
43
|
-
if (readOnly) {
|
|
44
|
-
e.preventDefault();
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
props?.onChange?.(e);
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
};
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export { useNativeSelect };
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { clsx } from '../../node_modules/clsx/dist/lite.js';
|
|
4
|
-
import { useState, useRef, useCallback } from 'react';
|
|
5
|
-
import { usePrevious } from '../hooks/usePrevious.js';
|
|
6
|
-
import { useMediaQuery } from '../hooks/useMediaQuery/useMediaQuery.js';
|
|
7
|
-
|
|
8
|
-
const transitionDurationInMilliseconds = 250;
|
|
9
|
-
/**
|
|
10
|
-
* AnimateHeight is a component that animates its height when the `open` prop changes.
|
|
11
|
-
*/
|
|
12
|
-
const AnimateHeight = ({ children, className, open = false, style, ...rest }) => {
|
|
13
|
-
/* We don't know the initial height we want to start with.
|
|
14
|
-
It depends on if it should start open or not, therefore we set height to `undefined`,
|
|
15
|
-
so we don't get any layoutshift on first render */
|
|
16
|
-
const [height, setHeight] = useState(undefined);
|
|
17
|
-
const prevOpen = usePrevious(open);
|
|
18
|
-
const openOrClosed = open ? 'open' : 'closed';
|
|
19
|
-
const [state, setState] = useState(openOrClosed);
|
|
20
|
-
const timeoutRef = useRef(null);
|
|
21
|
-
const shouldAnimate = !useMediaQuery('(prefers-reduced-motion)');
|
|
22
|
-
const contentRef = useCallback((node) => {
|
|
23
|
-
if (node) {
|
|
24
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
25
|
-
setHeight(open ? node.getBoundingClientRect().height : 0);
|
|
26
|
-
});
|
|
27
|
-
resizeObserver.observe(node);
|
|
28
|
-
}
|
|
29
|
-
if (prevOpen !== undefined && prevOpen !== open) {
|
|
30
|
-
// Opening or closing
|
|
31
|
-
setState(shouldAnimate ? 'openingOrClosing' : openOrClosed);
|
|
32
|
-
timeoutRef.current && clearTimeout(timeoutRef.current); // Reset timeout if already active (i.e. if the user closes the component before it finishes opening)
|
|
33
|
-
timeoutRef.current = setTimeout(() => {
|
|
34
|
-
setState(openOrClosed);
|
|
35
|
-
}, transitionDurationInMilliseconds);
|
|
36
|
-
}
|
|
37
|
-
}, [open, openOrClosed, prevOpen, shouldAnimate]);
|
|
38
|
-
const transition = state === 'openingOrClosing'
|
|
39
|
-
? `height ${transitionDurationInMilliseconds}ms ease-in-out`
|
|
40
|
-
: undefined;
|
|
41
|
-
return (jsx("div", { ...rest, className: clsx('ds-animate-height', `ds-animate-height--${state}`, className), style: { height, transition, ...style }, children: jsx("div", { ref: contentRef, className: 'ds-animate-height__content', children: children }) }));
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export { AnimateHeight };
|