@danske/sapphire-react-lab 0.106.2 → 0.107.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/index.js +2557 -64
- package/build/cjs/index.js.map +1 -1
- package/build/esm/core/src/BreakpointProvider/useBreakpointContext.js +11 -0
- package/build/esm/core/src/BreakpointProvider/useBreakpointContext.js.map +1 -0
- package/build/esm/core/src/Flex/src/Flex.js +64 -0
- package/build/esm/core/src/Flex/src/Flex.js.map +1 -0
- package/build/esm/core/src/Grid/src/Grid.js +55 -0
- package/build/esm/core/src/Grid/src/Grid.js.map +1 -0
- package/build/esm/core/src/Icon/src/Icon.js +37 -0
- package/build/esm/core/src/Icon/src/Icon.js.map +1 -0
- package/build/esm/core/src/ListBox/i18n/da-DK.json.js +7 -0
- package/build/esm/core/src/ListBox/i18n/de-DE.json.js +7 -0
- package/build/esm/core/src/ListBox/i18n/en-US.json.js +7 -0
- package/build/esm/core/src/ListBox/i18n/fi-FI.json.js +7 -0
- package/build/esm/core/src/ListBox/i18n/index.js.map +1 -0
- package/build/esm/core/src/ListBox/i18n/nb-NO.json.js +7 -0
- package/build/esm/core/src/ListBox/i18n/pl-PL.json.js +7 -0
- package/build/esm/core/src/ListBox/i18n/sv-SE.json.js +7 -0
- package/build/esm/core/src/ListBox/src/ListBoxContext.js +8 -0
- package/build/esm/core/src/ListBox/src/ListBoxContext.js.map +1 -0
- package/build/esm/core/src/ListBox/src/ListBoxEmptyState.js +26 -0
- package/build/esm/core/src/ListBox/src/ListBoxEmptyState.js.map +1 -0
- package/build/esm/core/src/ListBox/src/ListBoxItemSkeleton.js +37 -0
- package/build/esm/core/src/ListBox/src/ListBoxItemSkeleton.js.map +1 -0
- package/build/esm/core/src/ListBox/src/ListBoxOption.js +105 -0
- package/build/esm/core/src/ListBox/src/ListBoxOption.js.map +1 -0
- package/build/esm/core/src/ListBox/src/ListBoxSection.js +86 -0
- package/build/esm/core/src/ListBox/src/ListBoxSection.js.map +1 -0
- package/build/esm/core/src/ListBox/src/StatelessListBox.js +162 -0
- package/build/esm/core/src/ListBox/src/StatelessListBox.js.map +1 -0
- package/build/esm/core/src/Pagination/src/usePaginationContext.js +8 -0
- package/build/esm/core/src/Pagination/src/usePaginationContext.js.map +1 -0
- package/build/esm/core/src/Popover/src/Popover.js +62 -0
- package/build/esm/core/src/Popover/src/Popover.js.map +1 -0
- package/build/esm/core/src/Radio/src/RadioBox.js +58 -0
- package/build/esm/core/src/Radio/src/RadioBox.js.map +1 -0
- package/build/esm/core/src/Separator/src/Separator.js +32 -0
- package/build/esm/core/src/Separator/src/Separator.js.map +1 -0
- package/build/esm/core/src/Skeleton/src/Skeleton.js +19 -0
- package/build/esm/core/src/Skeleton/src/Skeleton.js.map +1 -0
- package/build/esm/core/src/Skeleton/src/SkeletonCircle.js +39 -0
- package/build/esm/core/src/Skeleton/src/SkeletonCircle.js.map +1 -0
- package/build/esm/core/src/Skeleton/src/SkeletonText.js +59 -0
- package/build/esm/core/src/Skeleton/src/SkeletonText.js.map +1 -0
- package/build/esm/core/src/Skeleton/src/animation.js +4 -0
- package/build/esm/core/src/Skeleton/src/animation.js.map +1 -0
- package/build/esm/core/src/ThemeRoot/src/ThemeRoot.js +42 -0
- package/build/esm/core/src/ThemeRoot/src/ThemeRoot.js.map +1 -0
- package/build/esm/core/src/View/src/View.js +60 -0
- package/build/esm/core/src/View/src/View.js.map +1 -0
- package/build/esm/core/src/utils/SapphireStyleProps.js +48 -0
- package/build/esm/core/src/utils/SapphireStyleProps.js.map +1 -0
- package/build/esm/core/src/utils/useCollectionFocusProxy.js +53 -0
- package/build/esm/core/src/utils/useCollectionFocusProxy.js.map +1 -0
- package/build/esm/core/src/utils/usePreventTouchEnd.js +16 -0
- package/build/esm/core/src/utils/usePreventTouchEnd.js.map +1 -0
- package/build/esm/core/src/utils/useSapphireStyleProps.js +179 -0
- package/build/esm/core/src/utils/useSapphireStyleProps.js.map +1 -0
- package/build/esm/core/src/utils/useSapphireTextStyleProps.js +9 -0
- package/build/esm/core/src/utils/useSapphireTextStyleProps.js.map +1 -0
- package/build/esm/core/src/utils/useScrollCheck.js +38 -0
- package/build/esm/core/src/utils/useScrollCheck.js.map +1 -0
- package/build/esm/core/src/utils/useThemeCheck.js +14 -0
- package/build/esm/core/src/utils/useThemeCheck.js.map +1 -0
- package/build/esm/core/src/utils/virtualization/ListWithLoadingStateLayout.js +158 -0
- package/build/esm/core/src/utils/virtualization/ListWithLoadingStateLayout.js.map +1 -0
- package/build/esm/core/src/utils/virtualization/VariableWidthListLayout.js +69 -0
- package/build/esm/core/src/utils/virtualization/VariableWidthListLayout.js.map +1 -0
- package/build/esm/core/src/utils/virtualization/VirtualizerWithLoadingSkeleton.js +40 -0
- package/build/esm/core/src/utils/virtualization/VirtualizerWithLoadingSkeleton.js.map +1 -0
- package/build/esm/core/src/utils/virtualization/useListWithLoadingStateLayout.js +35 -0
- package/build/esm/core/src/utils/virtualization/useListWithLoadingStateLayout.js.map +1 -0
- package/build/esm/index.js +23 -20
- package/build/esm/index.js.map +1 -1
- package/build/esm/lab/src/Accordion/index.js.map +1 -0
- package/build/esm/lab/src/Accordion/src/Accordion.js.map +1 -0
- package/build/esm/lab/src/Accordion/src/AccordionContext.js.map +1 -0
- package/build/esm/lab/src/Accordion/src/AccordionHeading.js.map +1 -0
- package/build/esm/lab/src/Accordion/src/AccordionItem.js.map +1 -0
- package/build/esm/lab/src/Accordion/src/AccordionPanel.js.map +1 -0
- package/build/esm/lab/src/Accordion/src/utils.js.map +1 -0
- package/build/esm/lab/src/Alert/src/Alert.js.map +1 -0
- package/build/esm/lab/src/Amount/src/Amount.js.map +1 -0
- package/build/esm/lab/src/Amount/src/useGroupAmount.js.map +1 -0
- package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/da-DK.json.js +2 -2
- package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/de-DE.json.js +2 -2
- package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/en-US.json.js +2 -2
- package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/fi-FI.json.js +2 -2
- package/build/esm/lab/src/Autocomplete/i18n/index.js +20 -0
- package/build/esm/lab/src/Autocomplete/i18n/index.js.map +1 -0
- package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/nb-NO.json.js +2 -2
- package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/pl-PL.json.js +2 -2
- package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/sv-SE.json.js +2 -2
- package/build/esm/lab/src/Autocomplete/src/Autocomplete.js.map +1 -0
- package/build/esm/lab/src/Breadcrumbs/src/BreadcrumbItem.js.map +1 -0
- package/build/esm/lab/src/Breadcrumbs/src/BreadcrumbItemLink.js.map +1 -0
- package/build/esm/lab/src/Breadcrumbs/src/BreadcrumbItemStatic.js.map +1 -0
- package/build/esm/lab/src/Breadcrumbs/src/BreadcrumbOverflowMenu.js.map +1 -0
- package/build/esm/lab/src/Breadcrumbs/src/Breadcrumbs.js.map +1 -0
- package/build/esm/lab/src/Breadcrumbs/src/BreadcrumbsSeparator.js.map +1 -0
- package/build/esm/lab/src/Breadcrumbs/src/useBreadcrumbThreshold.js.map +1 -0
- package/build/esm/lab/src/DataGrid/index.js +9 -0
- package/build/esm/lab/src/DataGrid/index.js.map +1 -0
- package/build/esm/lab/src/DataGrid/src/DataGrid.js +463 -0
- package/build/esm/lab/src/DataGrid/src/DataGrid.js.map +1 -0
- package/build/esm/lab/src/DataGrid/src/DataGridCellContext.js +6 -0
- package/build/esm/lab/src/DataGrid/src/DataGridCellContext.js.map +1 -0
- package/build/esm/lab/src/DataGrid/src/EditableCellContent.js +125 -0
- package/build/esm/lab/src/DataGrid/src/EditableCellContent.js.map +1 -0
- package/build/esm/lab/src/DataGrid/src/createDataGridColumnHelper.js +15 -0
- package/build/esm/lab/src/DataGrid/src/createDataGridColumnHelper.js.map +1 -0
- package/build/esm/lab/src/DataGrid/src/useGridKeyboardNavigation.js +417 -0
- package/build/esm/lab/src/DataGrid/src/useGridKeyboardNavigation.js.map +1 -0
- package/build/esm/lab/src/DataGrid/src/useMeasureColumnWidths.js +55 -0
- package/build/esm/lab/src/DataGrid/src/useMeasureColumnWidths.js.map +1 -0
- package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/da-DK.json.js +2 -2
- package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/de-DE.json.js +2 -2
- package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/en-US.json.js +2 -2
- package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/fi-FI.json.js +2 -2
- package/build/esm/lab/src/FileDropzone/i18n/index.js.map +1 -0
- package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/nb-NO.json.js +2 -2
- package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/pl-PL.json.js +2 -2
- package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/sv-SE.json.js +2 -2
- package/build/esm/lab/src/FileDropzone/src/FileDropzone.js.map +1 -0
- package/build/esm/lab/src/FileDropzone/src/FileTrigger.js.map +1 -0
- package/build/esm/lab/src/FileDropzone/src/utils.js.map +1 -0
- package/build/esm/lab/src/Filtering/src/FilterDropdown.js.map +1 -0
- package/build/esm/{Filtering → lab/src/Filtering}/src/SearchableSelectFilter.js +2 -0
- package/build/esm/lab/src/Filtering/src/SearchableSelectFilter.js.map +1 -0
- package/build/esm/lab/src/Flag/src/Flag.js.map +1 -0
- package/build/esm/lab/src/LabeledValue/src/LabeledValue.js.map +1 -0
- package/build/esm/{NumberField → lab/src/NumberField}/i18n/da-DK.json.js +2 -2
- package/build/esm/{NumberField → lab/src/NumberField}/i18n/de-DE.json.js +2 -2
- package/build/esm/{NumberField → lab/src/NumberField}/i18n/en-US.json.js +2 -2
- package/build/esm/{NumberField → lab/src/NumberField}/i18n/fi-FI.json.js +2 -2
- package/build/esm/lab/src/NumberField/i18n/index.js.map +1 -0
- package/build/esm/{NumberField → lab/src/NumberField}/i18n/nb-NO.json.js +2 -2
- package/build/esm/{NumberField → lab/src/NumberField}/i18n/pl-PL.json.js +2 -2
- package/build/esm/{NumberField → lab/src/NumberField}/i18n/sv-SE.json.js +2 -2
- package/build/esm/lab/src/NumberField/src/NumberField.js.map +1 -0
- package/build/esm/lab/src/NumberField/src/StepperButton.js.map +1 -0
- package/build/esm/lab/src/NumberField/src/cursorHelpers.js.map +1 -0
- package/build/esm/lab/src/NumberField/src/formatHelpers.js.map +1 -0
- package/build/esm/lab/src/NumberField/src/keyboardHelpers.js.map +1 -0
- package/build/esm/lab/src/NumberField/src/useAutofillStyle.js.map +1 -0
- package/build/esm/lab/src/NumberField/src/useNumberFieldFormatting.js.map +1 -0
- package/build/esm/lab/src/NumberField/src/useSapphireNumberField.js.map +1 -0
- package/build/esm/lab/src/ProgressIndicator/src/ProgressIndicator.js.map +1 -0
- package/build/esm/lab/src/Sidebar/index.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/Body.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/ExpandableItem.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/Header.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/Item.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/List.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/Panel.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/ResponsiveSidebarContext.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/SecondarySidebarContext.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/Section.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/Sidebar.js.map +1 -0
- package/build/esm/lab/src/Sidebar/src/useSidebar.js.map +1 -0
- package/build/esm/lab/src/Slider/index.js.map +1 -0
- package/build/esm/lab/src/Slider/src/Slider.js.map +1 -0
- package/build/esm/lab/src/TagGroup/src/Tag.js.map +1 -0
- package/build/esm/lab/src/TagGroup/src/TagGroup.js.map +1 -0
- package/build/esm/lab/src/TagGroup/src/TagItem.js.map +1 -0
- package/build/esm/{TimeField → lab/src/TimeField}/i18n/da-DK.json.js +2 -2
- package/build/esm/lab/src/TimeField/i18n/da-DK.json.js.map +1 -0
- package/build/esm/{TimeField → lab/src/TimeField}/i18n/de-DE.json.js +2 -2
- package/build/esm/lab/src/TimeField/i18n/de-DE.json.js.map +1 -0
- package/build/esm/{TimeField → lab/src/TimeField}/i18n/en-US.json.js +2 -2
- package/build/esm/lab/src/TimeField/i18n/en-US.json.js.map +1 -0
- package/build/esm/{TimeField → lab/src/TimeField}/i18n/fi-FI.json.js +2 -2
- package/build/esm/lab/src/TimeField/i18n/fi-FI.json.js.map +1 -0
- package/build/esm/lab/src/TimeField/i18n/index.js.map +1 -0
- package/build/esm/{TimeField → lab/src/TimeField}/i18n/nb-NO.json.js +2 -2
- package/build/esm/lab/src/TimeField/i18n/nb-NO.json.js.map +1 -0
- package/build/esm/{TimeField → lab/src/TimeField}/i18n/pl-PL.json.js +2 -2
- package/build/esm/lab/src/TimeField/i18n/pl-PL.json.js.map +1 -0
- package/build/esm/{TimeField → lab/src/TimeField}/i18n/sv-SE.json.js +2 -2
- package/build/esm/lab/src/TimeField/i18n/sv-SE.json.js.map +1 -0
- package/build/esm/lab/src/TimeField/src/TimeField.js.map +1 -0
- package/build/esm/lab/src/TimeField/src/TimeFieldSegment.js.map +1 -0
- package/build/esm/lab/src/TruncateOverflow/src/TruncateOverflow.js +46 -0
- package/build/esm/lab/src/TruncateOverflow/src/TruncateOverflow.js.map +1 -0
- package/build/index.d.ts +553 -10
- package/package.json +8 -8
- package/build/esm/Accordion/index.js.map +0 -1
- package/build/esm/Accordion/src/Accordion.js.map +0 -1
- package/build/esm/Accordion/src/AccordionContext.js.map +0 -1
- package/build/esm/Accordion/src/AccordionHeading.js.map +0 -1
- package/build/esm/Accordion/src/AccordionItem.js.map +0 -1
- package/build/esm/Accordion/src/AccordionPanel.js.map +0 -1
- package/build/esm/Accordion/src/utils.js.map +0 -1
- package/build/esm/Alert/src/Alert.js.map +0 -1
- package/build/esm/Amount/src/Amount.js.map +0 -1
- package/build/esm/Amount/src/useGroupAmount.js.map +0 -1
- package/build/esm/Autocomplete/i18n/index.js.map +0 -1
- package/build/esm/Autocomplete/src/Autocomplete.js.map +0 -1
- package/build/esm/Breadcrumbs/src/BreadcrumbItem.js.map +0 -1
- package/build/esm/Breadcrumbs/src/BreadcrumbItemLink.js.map +0 -1
- package/build/esm/Breadcrumbs/src/BreadcrumbItemStatic.js.map +0 -1
- package/build/esm/Breadcrumbs/src/BreadcrumbOverflowMenu.js.map +0 -1
- package/build/esm/Breadcrumbs/src/Breadcrumbs.js.map +0 -1
- package/build/esm/Breadcrumbs/src/BreadcrumbsSeparator.js.map +0 -1
- package/build/esm/Breadcrumbs/src/useBreadcrumbThreshold.js.map +0 -1
- package/build/esm/FileDropzone/i18n/index.js.map +0 -1
- package/build/esm/FileDropzone/src/FileDropzone.js.map +0 -1
- package/build/esm/FileDropzone/src/FileTrigger.js.map +0 -1
- package/build/esm/FileDropzone/src/utils.js.map +0 -1
- package/build/esm/Filtering/src/FilterDropdown.js.map +0 -1
- package/build/esm/Filtering/src/SearchableSelectFilter.js.map +0 -1
- package/build/esm/Flag/src/Flag.js.map +0 -1
- package/build/esm/LabeledValue/src/LabeledValue.js.map +0 -1
- package/build/esm/NumberField/i18n/index.js.map +0 -1
- package/build/esm/NumberField/src/NumberField.js.map +0 -1
- package/build/esm/NumberField/src/StepperButton.js.map +0 -1
- package/build/esm/NumberField/src/cursorHelpers.js.map +0 -1
- package/build/esm/NumberField/src/formatHelpers.js.map +0 -1
- package/build/esm/NumberField/src/keyboardHelpers.js.map +0 -1
- package/build/esm/NumberField/src/useAutofillStyle.js.map +0 -1
- package/build/esm/NumberField/src/useNumberFieldFormatting.js.map +0 -1
- package/build/esm/NumberField/src/useSapphireNumberField.js.map +0 -1
- package/build/esm/ProgressIndicator/src/ProgressIndicator.js.map +0 -1
- package/build/esm/Sidebar/index.js.map +0 -1
- package/build/esm/Sidebar/src/Body.js.map +0 -1
- package/build/esm/Sidebar/src/ExpandableItem.js.map +0 -1
- package/build/esm/Sidebar/src/Header.js.map +0 -1
- package/build/esm/Sidebar/src/Item.js.map +0 -1
- package/build/esm/Sidebar/src/List.js.map +0 -1
- package/build/esm/Sidebar/src/Panel.js.map +0 -1
- package/build/esm/Sidebar/src/ResponsiveSidebarContext.js.map +0 -1
- package/build/esm/Sidebar/src/SecondarySidebarContext.js.map +0 -1
- package/build/esm/Sidebar/src/Section.js.map +0 -1
- package/build/esm/Sidebar/src/Sidebar.js.map +0 -1
- package/build/esm/Sidebar/src/useSidebar.js.map +0 -1
- package/build/esm/Slider/index.js.map +0 -1
- package/build/esm/Slider/src/Slider.js.map +0 -1
- package/build/esm/TagGroup/src/Tag.js.map +0 -1
- package/build/esm/TagGroup/src/TagGroup.js.map +0 -1
- package/build/esm/TagGroup/src/TagItem.js.map +0 -1
- package/build/esm/TimeField/i18n/index.js.map +0 -1
- package/build/esm/TimeField/src/TimeField.js.map +0 -1
- package/build/esm/TimeField/src/TimeFieldSegment.js.map +0 -1
- /package/build/esm/{TimeField → core/src/ListBox}/i18n/da-DK.json.js.map +0 -0
- /package/build/esm/{TimeField → core/src/ListBox}/i18n/de-DE.json.js.map +0 -0
- /package/build/esm/{TimeField → core/src/ListBox}/i18n/en-US.json.js.map +0 -0
- /package/build/esm/{TimeField → core/src/ListBox}/i18n/fi-FI.json.js.map +0 -0
- /package/build/esm/{TimeField → core/src/ListBox}/i18n/index.js +0 -0
- /package/build/esm/{TimeField → core/src/ListBox}/i18n/nb-NO.json.js.map +0 -0
- /package/build/esm/{TimeField → core/src/ListBox}/i18n/pl-PL.json.js.map +0 -0
- /package/build/esm/{TimeField → core/src/ListBox}/i18n/sv-SE.json.js.map +0 -0
- /package/build/esm/{Accordion → lab/src/Accordion}/index.js +0 -0
- /package/build/esm/{Accordion → lab/src/Accordion}/src/Accordion.js +0 -0
- /package/build/esm/{Accordion → lab/src/Accordion}/src/AccordionContext.js +0 -0
- /package/build/esm/{Accordion → lab/src/Accordion}/src/AccordionHeading.js +0 -0
- /package/build/esm/{Accordion → lab/src/Accordion}/src/AccordionItem.js +0 -0
- /package/build/esm/{Accordion → lab/src/Accordion}/src/AccordionPanel.js +0 -0
- /package/build/esm/{Accordion → lab/src/Accordion}/src/utils.js +0 -0
- /package/build/esm/{Alert → lab/src/Alert}/src/Alert.js +0 -0
- /package/build/esm/{Amount → lab/src/Amount}/src/Amount.js +0 -0
- /package/build/esm/{Amount → lab/src/Amount}/src/useGroupAmount.js +0 -0
- /package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/da-DK.json.js.map +0 -0
- /package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/de-DE.json.js.map +0 -0
- /package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/en-US.json.js.map +0 -0
- /package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/fi-FI.json.js.map +0 -0
- /package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/nb-NO.json.js.map +0 -0
- /package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/pl-PL.json.js.map +0 -0
- /package/build/esm/{Autocomplete → lab/src/Autocomplete}/i18n/sv-SE.json.js.map +0 -0
- /package/build/esm/{Autocomplete → lab/src/Autocomplete}/src/Autocomplete.js +0 -0
- /package/build/esm/{Breadcrumbs → lab/src/Breadcrumbs}/src/BreadcrumbItem.js +0 -0
- /package/build/esm/{Breadcrumbs → lab/src/Breadcrumbs}/src/BreadcrumbItemLink.js +0 -0
- /package/build/esm/{Breadcrumbs → lab/src/Breadcrumbs}/src/BreadcrumbItemStatic.js +0 -0
- /package/build/esm/{Breadcrumbs → lab/src/Breadcrumbs}/src/BreadcrumbOverflowMenu.js +0 -0
- /package/build/esm/{Breadcrumbs → lab/src/Breadcrumbs}/src/Breadcrumbs.js +0 -0
- /package/build/esm/{Breadcrumbs → lab/src/Breadcrumbs}/src/BreadcrumbsSeparator.js +0 -0
- /package/build/esm/{Breadcrumbs → lab/src/Breadcrumbs}/src/useBreadcrumbThreshold.js +0 -0
- /package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/da-DK.json.js.map +0 -0
- /package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/de-DE.json.js.map +0 -0
- /package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/en-US.json.js.map +0 -0
- /package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/fi-FI.json.js.map +0 -0
- /package/build/esm/{Autocomplete → lab/src/FileDropzone}/i18n/index.js +0 -0
- /package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/nb-NO.json.js.map +0 -0
- /package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/pl-PL.json.js.map +0 -0
- /package/build/esm/{FileDropzone → lab/src/FileDropzone}/i18n/sv-SE.json.js.map +0 -0
- /package/build/esm/{FileDropzone → lab/src/FileDropzone}/src/FileDropzone.js +0 -0
- /package/build/esm/{FileDropzone → lab/src/FileDropzone}/src/FileTrigger.js +0 -0
- /package/build/esm/{FileDropzone → lab/src/FileDropzone}/src/utils.js +0 -0
- /package/build/esm/{Filtering → lab/src/Filtering}/src/FilterDropdown.js +0 -0
- /package/build/esm/{Flag → lab/src/Flag}/src/Flag.js +0 -0
- /package/build/esm/{LabeledValue → lab/src/LabeledValue}/src/LabeledValue.js +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/i18n/da-DK.json.js.map +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/i18n/de-DE.json.js.map +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/i18n/en-US.json.js.map +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/i18n/fi-FI.json.js.map +0 -0
- /package/build/esm/{FileDropzone → lab/src/NumberField}/i18n/index.js +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/i18n/nb-NO.json.js.map +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/i18n/pl-PL.json.js.map +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/i18n/sv-SE.json.js.map +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/src/NumberField.js +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/src/StepperButton.js +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/src/cursorHelpers.js +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/src/formatHelpers.js +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/src/keyboardHelpers.js +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/src/useAutofillStyle.js +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/src/useNumberFieldFormatting.js +0 -0
- /package/build/esm/{NumberField → lab/src/NumberField}/src/useSapphireNumberField.js +0 -0
- /package/build/esm/{ProgressIndicator → lab/src/ProgressIndicator}/src/ProgressIndicator.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/index.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/Body.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/ExpandableItem.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/Header.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/Item.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/List.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/Panel.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/ResponsiveSidebarContext.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/SecondarySidebarContext.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/Section.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/Sidebar.js +0 -0
- /package/build/esm/{Sidebar → lab/src/Sidebar}/src/useSidebar.js +0 -0
- /package/build/esm/{Slider → lab/src/Slider}/index.js +0 -0
- /package/build/esm/{Slider → lab/src/Slider}/src/Slider.js +0 -0
- /package/build/esm/{TagGroup → lab/src/TagGroup}/src/Tag.js +0 -0
- /package/build/esm/{TagGroup → lab/src/TagGroup}/src/TagGroup.js +0 -0
- /package/build/esm/{TagGroup → lab/src/TagGroup}/src/TagItem.js +0 -0
- /package/build/esm/{NumberField → lab/src/TimeField}/i18n/index.js +0 -0
- /package/build/esm/{TimeField → lab/src/TimeField}/src/TimeField.js +0 -0
- /package/build/esm/{TimeField → lab/src/TimeField}/src/TimeFieldSegment.js +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BreakpointContext } from '@danske/sapphire-react-context';
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
|
|
4
|
+
function useBreakpointContext() {
|
|
5
|
+
return useContext(
|
|
6
|
+
BreakpointContext
|
|
7
|
+
);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { useBreakpointContext };
|
|
11
|
+
//# sourceMappingURL=useBreakpointContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBreakpointContext.js","sources":["../../../../../../core/src/BreakpointProvider/useBreakpointContext.ts"],"sourcesContent":["import {\n BreakpointContext,\n BreakpointContextValue,\n} from '@danske/sapphire-react-context';\nimport { Breakpoints } from '../utils/useBreakpointTokens';\nimport { useContext } from 'react';\n\nexport function useBreakpointContext(): BreakpointContextValue<Breakpoints> | null {\n return useContext(\n BreakpointContext\n ) as BreakpointContextValue<Breakpoints> | null;\n}\n"],"names":[],"mappings":";;;AAOO,SAAS,oBAAA,GAAmE;AACjF,EAAA,OAAO,UAAA;AAAA,IACL;AAAA,GACF;AACF;;;;"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { useSapphireStyleProps } from '../../utils/useSapphireStyleProps.js';
|
|
3
|
+
import '../../utils/useSapphireTextStyleProps.js';
|
|
4
|
+
import { commonStyleHandlers } from '../../utils/SapphireStyleProps.js';
|
|
5
|
+
import '../../ListBox/src/StatelessListBox.js';
|
|
6
|
+
import '../../Popover/src/Popover.js';
|
|
7
|
+
import { useThemeCheck } from '../../utils/useThemeCheck.js';
|
|
8
|
+
import 'react-aria/mergeProps';
|
|
9
|
+
import 'react-aria/useButton';
|
|
10
|
+
import { filterDOMProps } from 'react-aria/filterDOMProps';
|
|
11
|
+
|
|
12
|
+
const flexStylePropsHandler = {
|
|
13
|
+
...commonStyleHandlers,
|
|
14
|
+
flexDirection: "flexDirection",
|
|
15
|
+
flexWrap: "flexWrap",
|
|
16
|
+
flexFlow: "flexFlow",
|
|
17
|
+
justifyContent: { styleProp: "justifyContent", convertValue: flexAlignValue },
|
|
18
|
+
alignItems: { styleProp: "alignItems", convertValue: flexAlignValue },
|
|
19
|
+
alignContent: { styleProp: "alignContent", convertValue: flexAlignValue },
|
|
20
|
+
gap: "gap",
|
|
21
|
+
columnGap: "columnGap",
|
|
22
|
+
rowGap: "rowGap",
|
|
23
|
+
padding: "padding",
|
|
24
|
+
paddingLeft: "paddingLeft",
|
|
25
|
+
paddingRight: "paddingRight",
|
|
26
|
+
paddingTop: "paddingTop",
|
|
27
|
+
paddingBottom: "paddingBottom",
|
|
28
|
+
container: "container",
|
|
29
|
+
containerType: "containerType",
|
|
30
|
+
containerName: "containerName"
|
|
31
|
+
};
|
|
32
|
+
forwardRef(function Flex2(props, ref) {
|
|
33
|
+
useThemeCheck();
|
|
34
|
+
const { children, elementType, ...otherProps } = props;
|
|
35
|
+
const { styleProps, filteredProps } = useSapphireStyleProps(otherProps, flexStylePropsHandler);
|
|
36
|
+
const style = {
|
|
37
|
+
...styleProps.style,
|
|
38
|
+
display: "flex"
|
|
39
|
+
};
|
|
40
|
+
const ElementType2 = elementType || "div";
|
|
41
|
+
return /* @__PURE__ */ React.createElement(
|
|
42
|
+
ElementType2,
|
|
43
|
+
{
|
|
44
|
+
...filteredProps,
|
|
45
|
+
...filterDOMProps(props, { global: true }),
|
|
46
|
+
style,
|
|
47
|
+
ref,
|
|
48
|
+
className: styleProps.className
|
|
49
|
+
},
|
|
50
|
+
children
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
function flexAlignValue(value) {
|
|
54
|
+
if (value === "start") {
|
|
55
|
+
return "flex-start";
|
|
56
|
+
}
|
|
57
|
+
if (value === "end") {
|
|
58
|
+
return "flex-end";
|
|
59
|
+
}
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export { flexStylePropsHandler };
|
|
64
|
+
//# sourceMappingURL=Flex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Flex.js","sources":["../../../../../../../core/src/Flex/src/Flex.tsx"],"sourcesContent":["import { DOMAttributes, DOMProps } from '@react-types/shared';\nimport React, { ElementType, ForwardedRef, forwardRef, ReactNode } from 'react';\n\nimport {\n commonStyleHandlers,\n ResponsiveCssProp,\n SapphireCommonStyleProps,\n SapphireStyleProps,\n StyleHandlers,\n useSapphireStyleProps,\n useThemeCheck,\n} from '../../utils';\nimport { GlobalDomAttributes } from '../../utils/types';\nimport { filterDOMProps } from 'react-aria/filterDOMProps';\n\nexport interface FlexStyleProps extends SapphireCommonStyleProps {\n /**\n * The direction in which to layout children. See\n * [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction).\n * @default 'row'\n */\n flexDirection?: ResponsiveCssProp<'flexDirection'>;\n /**\n * Whether to wrap items onto multiple lines. See\n * [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap).\n * @default false\n */\n flexWrap?: ResponsiveCssProp<'flexWrap'>;\n /**\n * CSS shorthand property specifies the direction of a flex container, as well as its wrapping\n * behavior. see [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-flow)\n */\n flexFlow?: ResponsiveCssProp<'flexFlow'>;\n\n justifyContent?: ResponsiveCssProp<'justifyContent'>;\n alignItems?: ResponsiveCssProp<'alignItems'>;\n alignContent?: ResponsiveCssProp<'alignContent'>;\n\n /** The space to display between both rows and columns. See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/gap). */\n gap?: ResponsiveCssProp<'gap', 'size'>;\n /** The space to display between columns. See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/column-gap). */\n columnGap?: ResponsiveCssProp<'columnGap', 'size'>;\n /** The space to display between rows. See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/row-gap). */\n rowGap?: ResponsiveCssProp<'rowGap', 'size'>;\n\n padding?: ResponsiveCssProp<'padding', 'size'>;\n paddingLeft?: ResponsiveCssProp<'padding', 'size'>;\n paddingRight?: ResponsiveCssProp<'paddingRight', 'size'>;\n paddingTop?: ResponsiveCssProp<'paddingTop', 'size'>;\n paddingBottom?: ResponsiveCssProp<'paddingBottom', 'size'>;\n\n container?: ResponsiveCssProp<'container'>;\n containerType?: ResponsiveCssProp<'containerType'>;\n containerName?: ResponsiveCssProp<'containerName'>;\n}\nexport interface FlexProps\n extends DOMProps,\n GlobalDomAttributes,\n Omit<\n DOMAttributes,\n 'children' | 'style' | 'className' | 'dangerouslySetInnerHTML'\n >,\n SapphireStyleProps,\n FlexStyleProps {\n /** Children of the flex container. */\n children: ReactNode;\n /**\n * @default 'div'\n */\n elementType?: ElementType;\n}\n\nexport const flexStylePropsHandler: StyleHandlers<FlexStyleProps> = {\n ...commonStyleHandlers,\n flexDirection: 'flexDirection',\n flexWrap: 'flexWrap',\n flexFlow: 'flexFlow',\n justifyContent: { styleProp: 'justifyContent', convertValue: flexAlignValue },\n alignItems: { styleProp: 'alignItems', convertValue: flexAlignValue },\n alignContent: { styleProp: 'alignContent', convertValue: flexAlignValue },\n gap: 'gap',\n columnGap: 'columnGap',\n rowGap: 'rowGap',\n padding: 'padding',\n paddingLeft: 'paddingLeft',\n paddingRight: 'paddingRight',\n paddingTop: 'paddingTop',\n paddingBottom: 'paddingBottom',\n container: 'container',\n containerType: 'containerType',\n containerName: 'containerName',\n};\n\nexport const Flex = forwardRef(function Flex(\n props: FlexProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n useThemeCheck();\n const { children, elementType, ...otherProps } = props;\n const { styleProps, filteredProps } = useSapphireStyleProps<\n Omit<FlexProps, 'children'>,\n FlexStyleProps\n >(otherProps, flexStylePropsHandler);\n\n const style = {\n ...styleProps.style,\n display: 'flex',\n };\n\n const ElementType = elementType || 'div';\n\n return (\n <ElementType\n {...filteredProps}\n {...filterDOMProps(props, { global: true })}\n style={style}\n ref={ref}\n className={styleProps.className}\n >\n {children}\n </ElementType>\n );\n});\n\n/**\n * Normalize 'start' and 'end' alignment values to 'flex-start' and 'flex-end'\n * in flex containers for browser compatibility.\n */\nfunction flexAlignValue(value: string): string {\n if (value === 'start') {\n return 'flex-start';\n }\n\n if (value === 'end') {\n return 'flex-end';\n }\n\n return value;\n}\n"],"names":["Flex","ElementType"],"mappings":";;;;;;;;;;;AAwEO,MAAM,qBAAA,GAAuD;AAAA,EAClE,GAAG,mBAAA;AAAA,EACH,aAAA,EAAe,eAAA;AAAA,EACf,QAAA,EAAU,UAAA;AAAA,EACV,QAAA,EAAU,UAAA;AAAA,EACV,cAAA,EAAgB,EAAE,SAAA,EAAW,gBAAA,EAAkB,cAAc,cAAA,EAAe;AAAA,EAC5E,UAAA,EAAY,EAAE,SAAA,EAAW,YAAA,EAAc,cAAc,cAAA,EAAe;AAAA,EACpE,YAAA,EAAc,EAAE,SAAA,EAAW,cAAA,EAAgB,cAAc,cAAA,EAAe;AAAA,EACxE,GAAA,EAAK,KAAA;AAAA,EACL,SAAA,EAAW,WAAA;AAAA,EACX,MAAA,EAAQ,QAAA;AAAA,EACR,OAAA,EAAS,SAAA;AAAA,EACT,WAAA,EAAa,aAAA;AAAA,EACb,YAAA,EAAc,cAAA;AAAA,EACd,UAAA,EAAY,YAAA;AAAA,EACZ,aAAA,EAAe,eAAA;AAAA,EACf,SAAA,EAAW,WAAA;AAAA,EACX,aAAA,EAAe,eAAA;AAAA,EACf,aAAA,EAAe;AACjB;AAEoB,UAAA,CAAW,SAASA,KAAAA,CACtC,OACA,GAAA,EACA;AACA,EAAA,aAAA,EAAc;AACd,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAa,GAAG,YAAW,GAAI,KAAA;AACjD,EAAA,MAAM,EAAE,UAAA,EAAY,aAAA,EAAc,GAAI,qBAAA,CAGpC,YAAY,qBAAqB,CAAA;AAEnC,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,GAAG,UAAA,CAAW,KAAA;AAAA,IACd,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,MAAMC,eAAc,WAAA,IAAe,KAAA;AAEnC,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAACA,YAAAA;AAAA,IAAA;AAAA,MACE,GAAG,aAAA;AAAA,MACH,GAAG,cAAA,CAAe,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA,MAC1C,KAAA;AAAA,MACA,GAAA;AAAA,MACA,WAAW,UAAA,CAAW;AAAA,KAAA;AAAA,IAErB;AAAA,GACH;AAEJ,CAAC;AAMD,SAAS,eAAe,KAAA,EAAuB;AAC7C,EAAA,IAAI,UAAU,OAAA,EAAS;AACrB,IAAA,OAAO,YAAA;AAAA,EACT;AAEA,EAAA,IAAI,UAAU,KAAA,EAAO;AACnB,IAAA,OAAO,UAAA;AAAA,EACT;AAEA,EAAA,OAAO,KAAA;AACT;;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { useSapphireStyleProps } from '../../utils/useSapphireStyleProps.js';
|
|
3
|
+
import '../../utils/useSapphireTextStyleProps.js';
|
|
4
|
+
import { commonStyleHandlers } from '../../utils/SapphireStyleProps.js';
|
|
5
|
+
import '../../ListBox/src/StatelessListBox.js';
|
|
6
|
+
import '../../Popover/src/Popover.js';
|
|
7
|
+
import { useThemeCheck } from '../../utils/useThemeCheck.js';
|
|
8
|
+
import 'react-aria/mergeProps';
|
|
9
|
+
import 'react-aria/useButton';
|
|
10
|
+
import { filterDOMProps } from 'react-aria/filterDOMProps';
|
|
11
|
+
|
|
12
|
+
const gridStylePropsHandler = {
|
|
13
|
+
...commonStyleHandlers,
|
|
14
|
+
gridAutoFlow: "gridAutoFlow",
|
|
15
|
+
gridAutoColumns: "gridAutoColumns",
|
|
16
|
+
gridAutoRows: "gridAutoRows",
|
|
17
|
+
gridTemplateAreas: "gridTemplateAreas",
|
|
18
|
+
gridTemplateColumns: "gridTemplateColumns",
|
|
19
|
+
gridTemplateRows: "gridTemplateRows",
|
|
20
|
+
gap: "gap",
|
|
21
|
+
columnGap: "columnGap",
|
|
22
|
+
rowGap: "rowGap",
|
|
23
|
+
justifyItems: "justifyItems",
|
|
24
|
+
justifyContent: "justifyContent",
|
|
25
|
+
alignItems: "alignItems",
|
|
26
|
+
alignContent: "alignContent",
|
|
27
|
+
padding: "padding",
|
|
28
|
+
paddingLeft: "paddingLeft",
|
|
29
|
+
paddingRight: "paddingRight",
|
|
30
|
+
paddingTop: "paddingTop",
|
|
31
|
+
paddingBottom: "paddingBottom"
|
|
32
|
+
};
|
|
33
|
+
forwardRef(function Grid2(props, ref) {
|
|
34
|
+
useThemeCheck();
|
|
35
|
+
const { children, ...otherProps } = props;
|
|
36
|
+
const { styleProps, filteredProps } = useSapphireStyleProps(otherProps, gridStylePropsHandler);
|
|
37
|
+
const style = {
|
|
38
|
+
...styleProps.style,
|
|
39
|
+
display: "grid"
|
|
40
|
+
};
|
|
41
|
+
return /* @__PURE__ */ React.createElement(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
...filteredProps,
|
|
45
|
+
...filterDOMProps(props, { global: true }),
|
|
46
|
+
style,
|
|
47
|
+
ref,
|
|
48
|
+
className: styleProps.className
|
|
49
|
+
},
|
|
50
|
+
children
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
export { gridStylePropsHandler };
|
|
55
|
+
//# sourceMappingURL=Grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.js","sources":["../../../../../../../core/src/Grid/src/Grid.tsx"],"sourcesContent":["import React, { ForwardedRef, forwardRef, ReactNode } from 'react';\nimport { DOMAttributes, DOMProps } from '@react-types/shared';\n\nimport {\n commonStyleHandlers,\n ResponsiveCssProp,\n SapphireCommonStyleProps,\n SapphireStyleProps,\n StyleHandlers,\n useSapphireStyleProps,\n useThemeCheck,\n} from '../../utils';\nimport { GlobalDomAttributes } from '../../utils/types';\nimport { filterDOMProps } from 'react-aria/filterDOMProps';\n\nexport interface GridStyleProps extends SapphireCommonStyleProps {\n /* Controls how the auto-placement algorithm works. Specifies how auto-placed items get flowed into the grid.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow).\n */\n gridAutoFlow?: ResponsiveCssProp<'gridAutoFlow'>;\n\n /* Specifies the size of an implicitly-created grid column track or pattern of tracks.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-columns).\n */\n gridAutoColumns?: ResponsiveCssProp<'gridAutoColumns'>;\n\n /* Specifies the size of an implicitly-created grid row track or pattern of tracks.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-rows).\n */\n gridAutoRows?: ResponsiveCssProp<'gridAutoRows'>;\n\n /* Specifies named grid areas, establishing the cells in the grid and assigning them names.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-areas).\n */\n gridTemplateAreas?: ResponsiveCssProp<'gridTemplateAreas'>;\n\n /* Defines the line names and track sizing functions of the grid columns.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns).\n */\n gridTemplateColumns?: ResponsiveCssProp<'gridTemplateColumns'>;\n\n /* Defines the line names and track sizing functions of the grid rows.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows).\n */\n gridTemplateRows?: ResponsiveCssProp<'gridTemplateRows'>;\n\n /* The space between rows and columns. It is a shorthand for rowGap and columnGap.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/gap).\n */\n gap?: ResponsiveCssProp<'gap', 'size'>;\n\n /* The space to display between a grid's columns.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/column-gap).\n */\n columnGap?: ResponsiveCssProp<'columnGap', 'size'>;\n\n /* The space to display between a grid's rows.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/row-gap).\n */\n rowGap?: ResponsiveCssProp<'rowGap', 'size'>;\n\n /* The space to display between a grid's rows.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-items).\n */\n justifyItems?: ResponsiveCssProp<'justifyItems'>;\n\n /* The space to display between a grid's columns.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content).\n */\n justifyContent?: ResponsiveCssProp<'justifyContent'>;\n\n /* Sets the align-self value on all direct children as a group\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items).\n */\n alignItems?: ResponsiveCssProp<'alignItems'>;\n\n /* Sets the distribution of space between and around content items along the grid's block axis.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/align-content).\n */\n alignContent?: ResponsiveCssProp<'alignContent'>;\n padding?: ResponsiveCssProp<'padding', 'size'>;\n paddingLeft?: ResponsiveCssProp<'padding', 'size'>;\n paddingRight?: ResponsiveCssProp<'paddingRight', 'size'>;\n paddingTop?: ResponsiveCssProp<'paddingTop', 'size'>;\n paddingBottom?: ResponsiveCssProp<'paddingBottom', 'size'>;\n}\nexport interface GridProps\n extends DOMProps,\n Omit<\n DOMAttributes,\n 'children' | 'style' | 'className' | 'dangerouslySetInnerHTML'\n >,\n SapphireStyleProps,\n GridStyleProps,\n GlobalDomAttributes {\n /** Children of the grid container. */\n children: ReactNode;\n}\n\nexport const gridStylePropsHandler: StyleHandlers<GridStyleProps> = {\n ...commonStyleHandlers,\n gridAutoFlow: 'gridAutoFlow',\n gridAutoColumns: 'gridAutoColumns',\n gridAutoRows: 'gridAutoRows',\n gridTemplateAreas: 'gridTemplateAreas',\n gridTemplateColumns: 'gridTemplateColumns',\n gridTemplateRows: 'gridTemplateRows',\n gap: 'gap',\n columnGap: 'columnGap',\n rowGap: 'rowGap',\n justifyItems: 'justifyItems',\n justifyContent: 'justifyContent',\n alignItems: 'alignItems',\n alignContent: 'alignContent',\n padding: 'padding',\n paddingLeft: 'paddingLeft',\n paddingRight: 'paddingRight',\n paddingTop: 'paddingTop',\n paddingBottom: 'paddingBottom',\n};\n\nexport const Grid = forwardRef(function Grid(\n props: GridProps,\n ref: ForwardedRef<HTMLDivElement>\n) {\n useThemeCheck();\n\n const { children, ...otherProps } = props;\n const { styleProps, filteredProps } = useSapphireStyleProps<\n Omit<GridProps, 'children'>,\n GridStyleProps\n >(otherProps, gridStylePropsHandler);\n\n const style = {\n ...styleProps.style,\n display: 'grid',\n };\n\n return (\n <div\n {...filteredProps}\n {...filterDOMProps(props, { global: true })}\n style={style}\n ref={ref}\n className={styleProps.className}\n >\n {children}\n </div>\n );\n});\n"],"names":["Grid"],"mappings":";;;;;;;;;;;AAmGO,MAAM,qBAAA,GAAuD;AAAA,EAClE,GAAG,mBAAA;AAAA,EACH,YAAA,EAAc,cAAA;AAAA,EACd,eAAA,EAAiB,iBAAA;AAAA,EACjB,YAAA,EAAc,cAAA;AAAA,EACd,iBAAA,EAAmB,mBAAA;AAAA,EACnB,mBAAA,EAAqB,qBAAA;AAAA,EACrB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,GAAA,EAAK,KAAA;AAAA,EACL,SAAA,EAAW,WAAA;AAAA,EACX,MAAA,EAAQ,QAAA;AAAA,EACR,YAAA,EAAc,cAAA;AAAA,EACd,cAAA,EAAgB,gBAAA;AAAA,EAChB,UAAA,EAAY,YAAA;AAAA,EACZ,YAAA,EAAc,cAAA;AAAA,EACd,OAAA,EAAS,SAAA;AAAA,EACT,WAAA,EAAa,aAAA;AAAA,EACb,YAAA,EAAc,cAAA;AAAA,EACd,UAAA,EAAY,YAAA;AAAA,EACZ,aAAA,EAAe;AACjB;AAEoB,UAAA,CAAW,SAASA,KAAAA,CACtC,OACA,GAAA,EACA;AACA,EAAA,aAAA,EAAc;AAEd,EAAA,MAAM,EAAE,QAAA,EAAU,GAAG,UAAA,EAAW,GAAI,KAAA;AACpC,EAAA,MAAM,EAAE,UAAA,EAAY,aAAA,EAAc,GAAI,qBAAA,CAGpC,YAAY,qBAAqB,CAAA;AAEnC,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,GAAG,UAAA,CAAW,KAAA;AAAA,IACd,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,aAAA;AAAA,MACH,GAAG,cAAA,CAAe,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA,MAC1C,KAAA;AAAA,MACA,GAAA;AAAA,MACA,WAAW,UAAA,CAAW;AAAA,KAAA;AAAA,IAErB;AAAA,GACH;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import clsx from 'clsx';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { getWrappedElement } from '@react-spectrum/utils';
|
|
4
|
+
import iconStyles from '@danske/sapphire-css/components/icon/icon.module.css';
|
|
5
|
+
import { useSapphireStyleProps } from '../../utils/useSapphireStyleProps.js';
|
|
6
|
+
import '../../utils/useSapphireTextStyleProps.js';
|
|
7
|
+
import '../../ListBox/src/StatelessListBox.js';
|
|
8
|
+
import '../../Popover/src/Popover.js';
|
|
9
|
+
import { useThemeCheck } from '../../utils/useThemeCheck.js';
|
|
10
|
+
import 'react-aria/mergeProps';
|
|
11
|
+
import 'react-aria/useButton';
|
|
12
|
+
|
|
13
|
+
const Icon = React.forwardRef(function Icon2({
|
|
14
|
+
size = "md",
|
|
15
|
+
color = "inherit",
|
|
16
|
+
"aria-label": ariaLabel,
|
|
17
|
+
...props
|
|
18
|
+
}, ref) {
|
|
19
|
+
useThemeCheck();
|
|
20
|
+
const { styleProps } = useSapphireStyleProps(props);
|
|
21
|
+
const colorClass = color === "inherit" ? void 0 : iconStyles[`sapphire-icon--${color}`];
|
|
22
|
+
return React.cloneElement(getWrappedElement(props.children), {
|
|
23
|
+
ref,
|
|
24
|
+
role: "img",
|
|
25
|
+
...ariaLabel ? { "aria-label": ariaLabel } : { "aria-hidden": true },
|
|
26
|
+
className: clsx(
|
|
27
|
+
iconStyles["sapphire-icon"],
|
|
28
|
+
styleProps.className,
|
|
29
|
+
iconStyles[`sapphire-icon--${size}`],
|
|
30
|
+
colorClass
|
|
31
|
+
),
|
|
32
|
+
style: styleProps.style
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export { Icon };
|
|
37
|
+
//# sourceMappingURL=Icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.js","sources":["../../../../../../../core/src/Icon/src/Icon.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport React from 'react';\nimport { getWrappedElement } from '@react-spectrum/utils';\nimport styles from '@danske/sapphire-css/components/icon/icon.module.css';\n\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '../../utils';\nimport { GlobalDomAttributes } from '../../utils/types';\n\nexport type IconProps = GlobalDomAttributes &\n SapphireStyleProps & {\n 'aria-label'?: string;\n /**\n * The size of the icon.\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n /**\n * The semantic color of the icon\n * @default 'inherit'\n */\n color?:\n | 'inherit'\n | 'primary'\n | 'secondary'\n | 'positive'\n | 'negative'\n | 'warning'\n | 'informative';\n children: React.ReactNode;\n };\n\n/**\n * `Icon` should be used to render Sapphire icon or custom SVG with the correct size, semantic color, and\n * accessibility attributes.\n *\n * Provide an `aria-label` when the icon conveys meaning on its own. If the icon is decorative,\n * omit `aria-label` and it will be hidden from assistive technologies.\n */\nexport const Icon = React.forwardRef(function Icon(\n {\n size = 'md',\n color = 'inherit',\n 'aria-label': ariaLabel,\n ...props\n }: IconProps,\n ref: React.Ref<HTMLSpanElement>\n) {\n useThemeCheck();\n\n const { styleProps } = useSapphireStyleProps(props);\n const colorClass =\n color === 'inherit' ? undefined : styles[`sapphire-icon--${color}`];\n\n return React.cloneElement(getWrappedElement(props.children), {\n ref,\n role: 'img',\n ...(ariaLabel ? { 'aria-label': ariaLabel } : { 'aria-hidden': true }),\n className: clsx(\n styles['sapphire-icon'],\n styleProps.className,\n styles[`sapphire-icon--${size}`],\n colorClass\n ),\n style: styleProps.style,\n });\n});\n"],"names":["Icon","styles"],"mappings":";;;;;;;;;;;;AA0CO,MAAM,IAAA,GAAO,KAAA,CAAM,UAAA,CAAW,SAASA,KAAAA,CAC5C;AAAA,EACE,IAAA,GAAO,IAAA;AAAA,EACP,KAAA,GAAQ,SAAA;AAAA,EACR,YAAA,EAAc,SAAA;AAAA,EACd,GAAG;AACL,CAAA,EACA,GAAA,EACA;AACA,EAAA,aAAA,EAAc;AAEd,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,qBAAA,CAAsB,KAAK,CAAA;AAClD,EAAA,MAAM,aACJ,KAAA,KAAU,SAAA,GAAY,SAAYC,UAAA,CAAO,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAE,CAAA;AAEpE,EAAA,OAAO,KAAA,CAAM,YAAA,CAAa,iBAAA,CAAkB,KAAA,CAAM,QAAQ,CAAA,EAAG;AAAA,IAC3D,GAAA;AAAA,IACA,IAAA,EAAM,KAAA;AAAA,IACN,GAAI,YAAY,EAAE,YAAA,EAAc,WAAU,GAAI,EAAE,eAAe,IAAA,EAAK;AAAA,IACpE,SAAA,EAAW,IAAA;AAAA,MACTA,WAAO,eAAe,CAAA;AAAA,MACtB,UAAA,CAAW,SAAA;AAAA,MACXA,UAAA,CAAO,CAAA,eAAA,EAAkB,IAAI,CAAA,CAAE,CAAA;AAAA,MAC/B;AAAA,KACF;AAAA,IACA,OAAO,UAAA,CAAW;AAAA,GACnB,CAAA;AACH,CAAC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../../core/src/ListBox/i18n/index.ts"],"sourcesContent":["import da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nexport default {\n 'da-DK': da,\n 'en-US': en,\n 'de-DE': de,\n 'fi-FI': fi,\n 'nb-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n"],"names":[],"mappings":";;;;;;;;AAQA,mBAAe;AAAA,EACb,OAAA,EAAS,EAAA;AAAA,EACT,OAAA,EAAS,EAAA;AAAA,EACT,OAAA,EAAS,EAAA;AAAA,EACT,OAAA,EAAS,EAAA;AAAA,EACT,OAAA,EAAS,EAAA;AAAA,EACT,OAAA,EAAS,EAAA;AAAA,EACT,OAAA,EAAS;AACX,CAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListBoxContext.js","sources":["../../../../../../../core/src/ListBox/src/ListBoxContext.ts"],"sourcesContent":["import { ListState } from 'react-stately/useListState';\nimport React from 'react';\n\ninterface ListBoxContextValue {\n state: ListState<unknown>;\n shouldUseVirtualFocus: boolean;\n disableSelectedStyles: boolean;\n containerMaxWidth?: number;\n}\n\nexport const ListBoxContext = React.createContext<ListBoxContextValue | null>(\n null\n);\n"],"names":[],"mappings":";;AAUO,MAAM,iBAAiB,KAAA,CAAM,aAAA;AAAA,EAClC;AACF;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import styles from '@danske/sapphire-css/components/listbox/listbox.module.css';
|
|
4
|
+
|
|
5
|
+
const ListBoxEmptyState = ({
|
|
6
|
+
children
|
|
7
|
+
}) => /* @__PURE__ */ React.createElement(
|
|
8
|
+
"div",
|
|
9
|
+
{
|
|
10
|
+
className: clsx(
|
|
11
|
+
styles["sapphire-listbox__item"],
|
|
12
|
+
styles["sapphire-listbox__item--empty"]
|
|
13
|
+
)
|
|
14
|
+
},
|
|
15
|
+
/* @__PURE__ */ React.createElement("div", { className: clsx(styles["sapphire-listbox__content"]) }, /* @__PURE__ */ React.createElement(
|
|
16
|
+
"div",
|
|
17
|
+
{
|
|
18
|
+
role: "presentation",
|
|
19
|
+
className: styles["sapphire-listbox__primary-text"]
|
|
20
|
+
},
|
|
21
|
+
children
|
|
22
|
+
))
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
export { ListBoxEmptyState };
|
|
26
|
+
//# sourceMappingURL=ListBoxEmptyState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListBoxEmptyState.js","sources":["../../../../../../../core/src/ListBox/src/ListBoxEmptyState.tsx"],"sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/listbox/listbox.module.css';\n\ninterface ListBoxEmptyStateProps {\n children?: React.ReactNode;\n}\n\nexport const ListBoxEmptyState: React.FC<ListBoxEmptyStateProps> = ({\n children,\n}) => (\n <div\n className={clsx(\n styles['sapphire-listbox__item'],\n styles['sapphire-listbox__item--empty']\n )}\n >\n <div className={clsx(styles['sapphire-listbox__content'])}>\n <div\n role=\"presentation\"\n className={styles['sapphire-listbox__primary-text']}\n >\n {children}\n </div>\n </div>\n </div>\n);\n"],"names":[],"mappings":";;;;AAQO,MAAM,oBAAsD,CAAC;AAAA,EAClE;AACF,CAAA,qBACE,KAAA,CAAA,aAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,IAAA;AAAA,MACT,OAAO,wBAAwB,CAAA;AAAA,MAC/B,OAAO,+BAA+B;AAAA;AACxC,GAAA;AAAA,sCAEC,KAAA,EAAA,EAAI,SAAA,EAAW,KAAK,MAAA,CAAO,2BAA2B,CAAC,CAAA,EAAA,kBACtD,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,cAAA;AAAA,MACL,SAAA,EAAW,OAAO,gCAAgC;AAAA,KAAA;AAAA,IAEjD;AAAA,GAEL;AACF;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import iconStyles from '@danske/sapphire-css/components/icon/icon.module.css';
|
|
4
|
+
import styles from '@danske/sapphire-css/components/listbox/listbox.module.css';
|
|
5
|
+
import { Skeleton } from '../../Skeleton/src/Skeleton.js';
|
|
6
|
+
|
|
7
|
+
const ListBoxItemSkeleton = ({
|
|
8
|
+
index,
|
|
9
|
+
primaryText = true,
|
|
10
|
+
secondaryText = false,
|
|
11
|
+
icon = false,
|
|
12
|
+
iconSize = "lg"
|
|
13
|
+
}) => /* @__PURE__ */ React.createElement(
|
|
14
|
+
"div",
|
|
15
|
+
{
|
|
16
|
+
className: clsx(
|
|
17
|
+
styles["sapphire-listbox__item"],
|
|
18
|
+
styles["js-hover"],
|
|
19
|
+
styles["js-focus"]
|
|
20
|
+
)
|
|
21
|
+
},
|
|
22
|
+
/* @__PURE__ */ React.createElement("div", { className: styles["sapphire-listbox__content"] }, icon && /* @__PURE__ */ React.createElement("div", { className: styles["sapphire-listbox__icon"] }, /* @__PURE__ */ React.createElement(
|
|
23
|
+
"div",
|
|
24
|
+
{
|
|
25
|
+
className: clsx(iconStyles["sapphire-icon"], {
|
|
26
|
+
[iconStyles["sapphire-icon--sm"]]: iconSize === "sm",
|
|
27
|
+
[iconStyles["sapphire-icon--md"]]: iconSize === "md",
|
|
28
|
+
[iconStyles["sapphire-icon--lg"]]: iconSize === "lg",
|
|
29
|
+
[iconStyles["sapphire-icon--xl"]]: iconSize === "xl"
|
|
30
|
+
})
|
|
31
|
+
},
|
|
32
|
+
icon === true ? /* @__PURE__ */ React.createElement(Skeleton.Circle, { index }) : icon
|
|
33
|
+
)), /* @__PURE__ */ React.createElement("div", { className: styles["sapphire-listbox__text-container"] }, /* @__PURE__ */ React.createElement("div", { className: styles["sapphire-listbox__primary-text"] }, primaryText === true ? /* @__PURE__ */ React.createElement(Skeleton.Text, { index }) : primaryText), secondaryText && /* @__PURE__ */ React.createElement("div", { className: styles["sapphire-listbox__secondary-text"] }, secondaryText === true ? /* @__PURE__ */ React.createElement(Skeleton.Text, { index }) : secondaryText)))
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
export { ListBoxItemSkeleton };
|
|
37
|
+
//# sourceMappingURL=ListBoxItemSkeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListBoxItemSkeleton.js","sources":["../../../../../../../core/src/ListBox/src/ListBoxItemSkeleton.tsx"],"sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport iconStyles from '@danske/sapphire-css/components/icon/icon.module.css';\nimport styles from '@danske/sapphire-css/components/listbox/listbox.module.css';\nimport { Skeleton } from '../../Skeleton';\n\ninterface ListBoxItemSkeletonProps {\n index?: number;\n /**\n * Can be used for rendering custom skeleton (ReactNode) instead of primaryText\n * @default 'true'\n */\n primaryText?: boolean | React.ReactNode;\n secondaryText?: boolean | React.ReactNode;\n icon?: boolean | React.ReactNode;\n /**\n * The size of the skeleton icon.\n * @default 'lg'\n */\n iconSize?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport const ListBoxItemSkeleton: React.FC<ListBoxItemSkeletonProps> = ({\n index,\n primaryText = true,\n secondaryText = false,\n icon = false,\n iconSize = 'lg',\n}) => (\n <div\n className={clsx(\n styles['sapphire-listbox__item'],\n styles['js-hover'],\n styles['js-focus']\n )}\n >\n <div className={styles['sapphire-listbox__content']}>\n {icon && (\n <div className={styles['sapphire-listbox__icon']}>\n <div\n className={clsx(iconStyles['sapphire-icon'], {\n [iconStyles['sapphire-icon--sm']]: iconSize === 'sm',\n [iconStyles['sapphire-icon--md']]: iconSize === 'md',\n [iconStyles['sapphire-icon--lg']]: iconSize === 'lg',\n [iconStyles['sapphire-icon--xl']]: iconSize === 'xl',\n })}\n >\n {icon === true ? <Skeleton.Circle index={index} /> : icon}\n </div>\n </div>\n )}\n <div className={styles['sapphire-listbox__text-container']}>\n <div className={styles['sapphire-listbox__primary-text']}>\n {primaryText === true ? <Skeleton.Text index={index} /> : primaryText}\n </div>\n {secondaryText && (\n <div className={styles['sapphire-listbox__secondary-text']}>\n {secondaryText === true ? (\n <Skeleton.Text index={index} />\n ) : (\n secondaryText\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n);\n"],"names":[],"mappings":";;;;;;AAsBO,MAAM,sBAA0D,CAAC;AAAA,EACtE,KAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,aAAA,GAAgB,KAAA;AAAA,EAChB,IAAA,GAAO,KAAA;AAAA,EACP,QAAA,GAAW;AACb,CAAA,qBACE,KAAA,CAAA,aAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA,EAAW,IAAA;AAAA,MACT,OAAO,wBAAwB,CAAA;AAAA,MAC/B,OAAO,UAAU,CAAA;AAAA,MACjB,OAAO,UAAU;AAAA;AACnB,GAAA;AAAA,kBAEA,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,2BAA2B,CAAA,EAAA,EAC/C,IAAA,oBACC,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,wBAAwB,CAAA,EAAA,kBAC7C,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,IAAA,CAAK,UAAA,CAAW,eAAe,CAAA,EAAG;AAAA,QAC3C,CAAC,UAAA,CAAW,mBAAmB,CAAC,GAAG,QAAA,KAAa,IAAA;AAAA,QAChD,CAAC,UAAA,CAAW,mBAAmB,CAAC,GAAG,QAAA,KAAa,IAAA;AAAA,QAChD,CAAC,UAAA,CAAW,mBAAmB,CAAC,GAAG,QAAA,KAAa,IAAA;AAAA,QAChD,CAAC,UAAA,CAAW,mBAAmB,CAAC,GAAG,QAAA,KAAa;AAAA,OACjD;AAAA,KAAA;AAAA,IAEA,SAAS,IAAA,mBAAO,KAAA,CAAA,aAAA,CAAC,SAAS,MAAA,EAAT,EAAgB,OAAc,CAAA,GAAK;AAAA,GAEzD,CAAA,kBAEF,KAAA,CAAA,aAAA,CAAC,SAAI,SAAA,EAAW,MAAA,CAAO,kCAAkC,CAAA,EAAA,kBACvD,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,gCAAgC,CAAA,EAAA,EACpD,gBAAgB,IAAA,mBAAO,KAAA,CAAA,aAAA,CAAC,SAAS,IAAA,EAAT,EAAc,KAAA,EAAc,CAAA,GAAK,WAC5D,CAAA,EACC,aAAA,wCACE,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,kCAAkC,CAAA,EAAA,EACtD,kBAAkB,IAAA,mBACjB,KAAA,CAAA,aAAA,CAAC,SAAS,IAAA,EAAT,EAAc,OAAc,CAAA,GAE7B,aAEJ,CAEJ,CACF;AACF;;;;"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import { useHover } from 'react-aria/useHover';
|
|
4
|
+
import { isFocusVisible } from 'react-aria/private/interactions/useFocusVisible';
|
|
5
|
+
import { useFocusRing } from 'react-aria/useFocusRing';
|
|
6
|
+
import { useOption } from 'react-aria/useListBox';
|
|
7
|
+
import { mergeProps } from 'react-aria/mergeProps';
|
|
8
|
+
import styles from '@danske/sapphire-css/components/listbox/listbox.module.css';
|
|
9
|
+
import avatarStyles from '@danske/sapphire-css/components/avatar/avatar.module.css';
|
|
10
|
+
import { Checkmark } from '@danske/sapphire-icons/react';
|
|
11
|
+
import { Icon } from '../../Icon/src/Icon.js';
|
|
12
|
+
import '@danske/sapphire-react-context';
|
|
13
|
+
import 'react-aria/useId';
|
|
14
|
+
import '../../utils/useSapphireTextStyleProps.js';
|
|
15
|
+
import './StatelessListBox.js';
|
|
16
|
+
import '../../Popover/src/Popover.js';
|
|
17
|
+
import 'react-aria/useButton';
|
|
18
|
+
import { usePreventTouchEnd } from '../../utils/usePreventTouchEnd.js';
|
|
19
|
+
import { ListBoxContext } from './ListBoxContext.js';
|
|
20
|
+
import '@danske/sapphire-css/themes/default';
|
|
21
|
+
import '@danske/sapphire-css/themes/default-dark';
|
|
22
|
+
import '@danske/sapphire-css/themes/realkredit';
|
|
23
|
+
import { tokens } from '@danske/sapphire-css/themes';
|
|
24
|
+
import 'react-dom';
|
|
25
|
+
import 'react-aria/I18nProvider';
|
|
26
|
+
import '../../ThemeRoot/src/ThemeRoot.js';
|
|
27
|
+
import 'react-aria/PortalProvider';
|
|
28
|
+
|
|
29
|
+
const ListBoxOption = ({
|
|
30
|
+
item
|
|
31
|
+
}) => {
|
|
32
|
+
const ref = React.useRef(null);
|
|
33
|
+
const {
|
|
34
|
+
state,
|
|
35
|
+
shouldUseVirtualFocus,
|
|
36
|
+
disableSelectedStyles,
|
|
37
|
+
containerMaxWidth
|
|
38
|
+
} = useContext(ListBoxContext);
|
|
39
|
+
const {
|
|
40
|
+
optionProps,
|
|
41
|
+
isDisabled,
|
|
42
|
+
isFocused: isVirtuallyFocused,
|
|
43
|
+
isPressed
|
|
44
|
+
} = useOption({ key: item.key }, state, ref);
|
|
45
|
+
const { focusProps, isFocusVisible: isFocusRingVisible } = useFocusRing();
|
|
46
|
+
const { hoverProps, isHovered } = useHover({ isDisabled });
|
|
47
|
+
usePreventTouchEnd(ref);
|
|
48
|
+
const rightIcon = item.props.rightIcon || item.props.icon;
|
|
49
|
+
return /* @__PURE__ */ React.createElement(
|
|
50
|
+
"div",
|
|
51
|
+
{
|
|
52
|
+
...mergeProps(
|
|
53
|
+
optionProps,
|
|
54
|
+
hoverProps,
|
|
55
|
+
shouldUseVirtualFocus ? {} : focusProps
|
|
56
|
+
),
|
|
57
|
+
ref,
|
|
58
|
+
className: clsx(
|
|
59
|
+
styles["sapphire-listbox__item"],
|
|
60
|
+
styles["js-hover"],
|
|
61
|
+
styles["js-focus"],
|
|
62
|
+
{
|
|
63
|
+
[styles["is-disabled"]]: isDisabled,
|
|
64
|
+
[styles["is-focus"]]: shouldUseVirtualFocus ? isVirtuallyFocused && isFocusVisible() : isFocusRingVisible,
|
|
65
|
+
[styles["is-hover"]]: isHovered,
|
|
66
|
+
[styles["is-active"]]: isPressed
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
},
|
|
70
|
+
/* @__PURE__ */ React.createElement(
|
|
71
|
+
"div",
|
|
72
|
+
{
|
|
73
|
+
className: clsx(styles["sapphire-listbox__content"]),
|
|
74
|
+
style: containerMaxWidth !== void 0 ? {
|
|
75
|
+
maxWidth: `calc(${containerMaxWidth}px - 2 * ${tokens.size.iconSm})`
|
|
76
|
+
} : void 0
|
|
77
|
+
},
|
|
78
|
+
!disableSelectedStyles && /* @__PURE__ */ React.createElement(
|
|
79
|
+
"div",
|
|
80
|
+
{
|
|
81
|
+
className: clsx(styles["sapphire-listbox__checkmark"]),
|
|
82
|
+
style: {
|
|
83
|
+
visibility: state.selectionManager.selectedKeys.has(item.key) ? "visible" : "hidden"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
/* @__PURE__ */ React.createElement(Icon, { size: "sm", color: "informative" }, /* @__PURE__ */ React.createElement(Checkmark, null))
|
|
87
|
+
),
|
|
88
|
+
item.props.leftIcon && /* @__PURE__ */ React.createElement("div", { className: clsx(styles["sapphire-listbox__icon"]) }, /* @__PURE__ */ React.createElement(Icon, { size: "sm" }, item.props.leftIcon)),
|
|
89
|
+
/* @__PURE__ */ React.createElement("div", { className: clsx(styles["sapphire-listbox__text-container"]) }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles["sapphire-listbox__primary-text"]) }, item.rendered), item.props.secondaryText && /* @__PURE__ */ React.createElement("div", { className: clsx(styles["sapphire-listbox__secondary-text"]) }, item.props.secondaryText)),
|
|
90
|
+
rightIcon ? /* @__PURE__ */ React.createElement("div", { className: clsx(styles["sapphire-listbox__icon"]) }, /* @__PURE__ */ React.createElement(Icon, { size: "sm" }, rightIcon)) : item.props.avatar && /* @__PURE__ */ React.createElement("div", { className: clsx(styles["sapphire-listbox__icon"]) }, /* @__PURE__ */ React.createElement(
|
|
91
|
+
"div",
|
|
92
|
+
{
|
|
93
|
+
className: clsx(
|
|
94
|
+
avatarStyles["sapphire-avatar"],
|
|
95
|
+
avatarStyles["sapphire-avatar--sm"]
|
|
96
|
+
)
|
|
97
|
+
},
|
|
98
|
+
item.props.avatar
|
|
99
|
+
))
|
|
100
|
+
)
|
|
101
|
+
);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export { ListBoxOption };
|
|
105
|
+
//# sourceMappingURL=ListBoxOption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListBoxOption.js","sources":["../../../../../../../core/src/ListBox/src/ListBoxOption.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport clsx from 'clsx';\nimport { useHover } from 'react-aria/useHover';\nimport { isFocusVisible } from 'react-aria/private/interactions/useFocusVisible';\nimport { useFocusRing } from 'react-aria/useFocusRing';\nimport { useOption } from 'react-aria/useListBox';\nimport { mergeProps } from 'react-aria/mergeProps';\nimport { Node } from '@react-types/shared';\n\nimport styles from '@danske/sapphire-css/components/listbox/listbox.module.css';\nimport avatarStyles from '@danske/sapphire-css/components/avatar/avatar.module.css';\nimport { Checkmark } from '@danske/sapphire-icons/react';\n\nimport { Icon } from '../../Icon';\nimport { usePreventTouchEnd } from '../../utils';\nimport { ListBoxContext } from './ListBoxContext';\nimport { tokens } from '../../SapphireProvider';\n\ninterface OptionProps<T> {\n item: Node<T>;\n}\n\nexport const ListBoxOption = <T extends object>({\n item,\n}: OptionProps<T>): JSX.Element => {\n const ref = React.useRef<HTMLDivElement>(null);\n const {\n state,\n shouldUseVirtualFocus,\n disableSelectedStyles,\n containerMaxWidth,\n } = useContext(ListBoxContext)!;\n const {\n optionProps,\n isDisabled,\n isFocused: isVirtuallyFocused,\n isPressed,\n } = useOption({ key: item.key }, state, ref);\n\n const { focusProps, isFocusVisible: isFocusRingVisible } = useFocusRing();\n const { hoverProps, isHovered } = useHover({ isDisabled });\n\n usePreventTouchEnd(ref);\n\n const rightIcon = item.props.rightIcon || item.props.icon;\n\n return (\n <div\n {...mergeProps(\n optionProps,\n hoverProps,\n shouldUseVirtualFocus ? {} : focusProps\n )}\n ref={ref}\n className={clsx(\n styles['sapphire-listbox__item'],\n styles['js-hover'],\n styles['js-focus'],\n {\n [styles['is-disabled']]: isDisabled,\n [styles['is-focus']]: shouldUseVirtualFocus\n ? isVirtuallyFocused && isFocusVisible()\n : isFocusRingVisible,\n [styles['is-hover']]: isHovered,\n [styles['is-active']]: isPressed,\n }\n )}\n >\n <div\n className={clsx(styles['sapphire-listbox__content'])}\n style={\n containerMaxWidth !== undefined\n ? {\n maxWidth: `calc(${containerMaxWidth}px - 2 * ${tokens.size.iconSm})`,\n }\n : undefined\n }\n >\n {!disableSelectedStyles && (\n <div\n className={clsx(styles['sapphire-listbox__checkmark'])}\n style={{\n visibility: state.selectionManager.selectedKeys.has(item.key)\n ? 'visible'\n : 'hidden',\n }}\n >\n <Icon size=\"sm\" color=\"informative\">\n <Checkmark />\n </Icon>\n </div>\n )}\n {item.props.leftIcon && (\n <div className={clsx(styles['sapphire-listbox__icon'])}>\n <Icon size=\"sm\">{item.props.leftIcon}</Icon>\n </div>\n )}\n <div className={clsx(styles['sapphire-listbox__text-container'])}>\n <div className={clsx(styles['sapphire-listbox__primary-text'])}>\n {item.rendered}\n </div>\n {item.props.secondaryText && (\n <div className={clsx(styles['sapphire-listbox__secondary-text'])}>\n {item.props.secondaryText}\n </div>\n )}\n </div>\n {rightIcon ? (\n <div className={clsx(styles['sapphire-listbox__icon'])}>\n <Icon size=\"sm\">{rightIcon}</Icon>\n </div>\n ) : (\n item.props.avatar && (\n <div className={clsx(styles['sapphire-listbox__icon'])}>\n <div\n className={clsx(\n avatarStyles['sapphire-avatar'],\n avatarStyles['sapphire-avatar--sm']\n )}\n >\n {item.props.avatar}\n </div>\n </div>\n )\n )}\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,MAAM,gBAAgB,CAAmB;AAAA,EAC9C;AACF,CAAA,KAAmC;AACjC,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,MAAA,CAAuB,IAAI,CAAA;AAC7C,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,qBAAA;AAAA,IACA,qBAAA;AAAA,IACA;AAAA,GACF,GAAI,WAAW,cAAc,CAAA;AAC7B,EAAA,MAAM;AAAA,IACJ,WAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA,EAAW,kBAAA;AAAA,IACX;AAAA,GACF,GAAI,UAAU,EAAE,GAAA,EAAK,KAAK,GAAA,EAAI,EAAG,OAAO,GAAG,CAAA;AAE3C,EAAA,MAAM,EAAE,UAAA,EAAY,cAAA,EAAgB,kBAAA,KAAuB,YAAA,EAAa;AACxE,EAAA,MAAM,EAAE,UAAA,EAAY,SAAA,KAAc,QAAA,CAAS,EAAE,YAAY,CAAA;AAEzD,EAAA,kBAAA,CAAmB,GAAG,CAAA;AAEtB,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,CAAM,SAAA,IAAa,KAAK,KAAA,CAAM,IAAA;AAErD,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAA;AAAA,QACF,WAAA;AAAA,QACA,UAAA;AAAA,QACA,qBAAA,GAAwB,EAAC,GAAI;AAAA,OAC/B;AAAA,MACA,GAAA;AAAA,MACA,SAAA,EAAW,IAAA;AAAA,QACT,OAAO,wBAAwB,CAAA;AAAA,QAC/B,OAAO,UAAU,CAAA;AAAA,QACjB,OAAO,UAAU,CAAA;AAAA,QACjB;AAAA,UACE,CAAC,MAAA,CAAO,aAAa,CAAC,GAAG,UAAA;AAAA,UACzB,CAAC,OAAO,UAAU,CAAC,GAAG,qBAAA,GAClB,kBAAA,IAAsB,gBAAe,GACrC,kBAAA;AAAA,UACJ,CAAC,MAAA,CAAO,UAAU,CAAC,GAAG,SAAA;AAAA,UACtB,CAAC,MAAA,CAAO,WAAW,CAAC,GAAG;AAAA;AACzB;AACF,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,2BAA2B,CAAC,CAAA;AAAA,QACnD,KAAA,EACE,sBAAsB,MAAA,GAClB;AAAA,UACE,UAAU,CAAA,KAAA,EAAQ,iBAAiB,CAAA,SAAA,EAAY,MAAA,CAAO,KAAK,MAAM,CAAA,CAAA;AAAA,SACnE,GACA;AAAA,OAAA;AAAA,MAGL,CAAC,qBAAA,oBACA,KAAA,CAAA,aAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,6BAA6B,CAAC,CAAA;AAAA,UACrD,KAAA,EAAO;AAAA,YACL,UAAA,EAAY,MAAM,gBAAA,CAAiB,YAAA,CAAa,IAAI,IAAA,CAAK,GAAG,IACxD,SAAA,GACA;AAAA;AACN,SAAA;AAAA,wBAEA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAA,EAAK,IAAA,EAAK,OAAM,aAAA,EAAA,kBACpB,KAAA,CAAA,aAAA,CAAC,eAAU,CACb;AAAA,OACF;AAAA,MAED,KAAK,KAAA,CAAM,QAAA,wCACT,KAAA,EAAA,EAAI,SAAA,EAAW,KAAK,MAAA,CAAO,wBAAwB,CAAC,CAAA,EAAA,sCAClD,IAAA,EAAA,EAAK,IAAA,EAAK,QAAM,IAAA,CAAK,KAAA,CAAM,QAAS,CACvC,CAAA;AAAA,sBAEF,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,IAAA,CAAK,OAAO,kCAAkC,CAAC,CAAA,EAAA,kBAC7D,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,gCAAgC,CAAC,CAAA,EAAA,EAC1D,IAAA,CAAK,QACR,CAAA,EACC,IAAA,CAAK,KAAA,CAAM,aAAA,wCACT,KAAA,EAAA,EAAI,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,kCAAkC,CAAC,CAAA,EAAA,EAC5D,IAAA,CAAK,KAAA,CAAM,aACd,CAEJ,CAAA;AAAA,MACC,SAAA,mBACC,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,wBAAwB,CAAC,CAAA,EAAA,kBACnD,KAAA,CAAA,aAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAA,EAAM,SAAU,CAC7B,CAAA,GAEA,IAAA,CAAK,KAAA,CAAM,MAAA,oBACT,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,wBAAwB,CAAC,CAAA,EAAA,kBACnD,KAAA,CAAA,aAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,IAAA;AAAA,YACT,aAAa,iBAAiB,CAAA;AAAA,YAC9B,aAAa,qBAAqB;AAAA;AACpC,SAAA;AAAA,QAEC,KAAK,KAAA,CAAM;AAAA,OAEhB;AAAA;AAGN,GACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import React, { useRef } from 'react';
|
|
2
|
+
import { useListBoxSection } from 'react-aria/useListBox';
|
|
3
|
+
import styles from '@danske/sapphire-css/components/listbox/listbox.module.css';
|
|
4
|
+
import { useVirtualizerItem } from 'react-aria/private/virtualizer/useVirtualizerItem';
|
|
5
|
+
import { layoutInfoToStyle } from 'react-aria/private/virtualizer/VirtualizerItem';
|
|
6
|
+
import { useThemeCheck } from '../../utils/useThemeCheck.js';
|
|
7
|
+
import { Separator } from '../../Separator/src/Separator.js';
|
|
8
|
+
|
|
9
|
+
function ListBoxSection({
|
|
10
|
+
item,
|
|
11
|
+
layoutInfo,
|
|
12
|
+
virtualizer,
|
|
13
|
+
childrenViews,
|
|
14
|
+
children
|
|
15
|
+
}) {
|
|
16
|
+
useThemeCheck();
|
|
17
|
+
const { groupProps, headingProps } = useListBoxSection({
|
|
18
|
+
"aria-label": item["aria-label"],
|
|
19
|
+
heading: item.rendered
|
|
20
|
+
});
|
|
21
|
+
const headerLayoutInfo = childrenViews && childrenViews.find((c) => c.viewType === "header")?.layoutInfo;
|
|
22
|
+
const dividerLayoutInfo = childrenViews && childrenViews.find((c) => c.viewType === "divider")?.layoutInfo;
|
|
23
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, headerLayoutInfo && /* @__PURE__ */ React.createElement(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
role: "presentation",
|
|
27
|
+
style: layoutInfoToStyle(headerLayoutInfo, "ltr")
|
|
28
|
+
},
|
|
29
|
+
item.prevKey && /* @__PURE__ */ React.createElement(
|
|
30
|
+
Separator,
|
|
31
|
+
{
|
|
32
|
+
UNSAFE_className: styles["sapphire-listbox__separator"]
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
item.rendered && /* @__PURE__ */ React.createElement(
|
|
36
|
+
SectionHeader,
|
|
37
|
+
{
|
|
38
|
+
item,
|
|
39
|
+
headerLayoutInfo,
|
|
40
|
+
headingProps,
|
|
41
|
+
virtualizer
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
), layoutInfo && /* @__PURE__ */ React.createElement(
|
|
45
|
+
"div",
|
|
46
|
+
{
|
|
47
|
+
...groupProps,
|
|
48
|
+
key: layoutInfo.key,
|
|
49
|
+
style: layoutInfoToStyle(layoutInfo, "ltr"),
|
|
50
|
+
className: styles["sapphire-listbox__section"]
|
|
51
|
+
},
|
|
52
|
+
children
|
|
53
|
+
), dividerLayoutInfo && /* @__PURE__ */ React.createElement(
|
|
54
|
+
"div",
|
|
55
|
+
{
|
|
56
|
+
role: "presentation",
|
|
57
|
+
style: layoutInfoToStyle(dividerLayoutInfo, "ltr")
|
|
58
|
+
},
|
|
59
|
+
/* @__PURE__ */ React.createElement(Separator, { UNSAFE_className: styles["sapphire-listbox__separator"] })
|
|
60
|
+
));
|
|
61
|
+
}
|
|
62
|
+
const SectionHeader = ({
|
|
63
|
+
item,
|
|
64
|
+
headerLayoutInfo,
|
|
65
|
+
headingProps,
|
|
66
|
+
virtualizer
|
|
67
|
+
}) => {
|
|
68
|
+
const headerRef = useRef(null);
|
|
69
|
+
useVirtualizerItem({
|
|
70
|
+
layoutInfo: headerLayoutInfo,
|
|
71
|
+
virtualizer,
|
|
72
|
+
ref: headerRef
|
|
73
|
+
});
|
|
74
|
+
return /* @__PURE__ */ React.createElement(
|
|
75
|
+
"div",
|
|
76
|
+
{
|
|
77
|
+
...headingProps,
|
|
78
|
+
ref: headerRef,
|
|
79
|
+
className: styles["sapphire-listbox__section-header"]
|
|
80
|
+
},
|
|
81
|
+
item.rendered
|
|
82
|
+
);
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export { ListBoxSection };
|
|
86
|
+
//# sourceMappingURL=ListBoxSection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListBoxSection.js","sources":["../../../../../../../core/src/ListBox/src/ListBoxSection.tsx"],"sourcesContent":["import React, { DOMAttributes, ReactNode, useRef } from 'react';\nimport { FocusableElement, Node } from '@react-types/shared';\nimport { useListBoxSection } from 'react-aria/useListBox';\nimport { ReusableView } from 'react-stately/useVirtualizerState';\nimport styles from '@danske/sapphire-css/components/listbox/listbox.module.css';\nimport {\n useVirtualizerItem,\n VirtualizerItemOptions,\n} from 'react-aria/private/virtualizer/useVirtualizerItem';\nimport { layoutInfoToStyle } from 'react-aria/private/virtualizer/VirtualizerItem';\nimport { LayoutInfo } from 'react-stately/useVirtualizerState';\n\nimport { useThemeCheck } from '../../utils/useThemeCheck';\nimport { Separator } from '../../Separator';\n\ntype ListBoxSectionProps<T> = Omit<VirtualizerItemOptions, 'ref'> & {\n item: Node<T>;\n childrenViews?: ReusableView<Node<T>, ReactNode>[];\n children?: ReactNode;\n};\n\nexport function ListBoxSection<T extends object>({\n item,\n layoutInfo,\n virtualizer,\n childrenViews,\n children,\n}: ListBoxSectionProps<T>): JSX.Element {\n useThemeCheck();\n\n const { groupProps, headingProps } = useListBoxSection({\n 'aria-label': item['aria-label'],\n heading: item.rendered,\n });\n\n const headerLayoutInfo =\n childrenViews &&\n childrenViews.find((c) => c.viewType === 'header')?.layoutInfo;\n const dividerLayoutInfo =\n childrenViews &&\n childrenViews.find((c) => c.viewType === 'divider')?.layoutInfo;\n\n return (\n <>\n {headerLayoutInfo && (\n <div\n role=\"presentation\"\n style={layoutInfoToStyle(headerLayoutInfo, 'ltr')}\n >\n {item.prevKey && (\n <Separator\n UNSAFE_className={styles['sapphire-listbox__separator']}\n />\n )}\n {item.rendered && (\n <SectionHeader\n item={item}\n headerLayoutInfo={headerLayoutInfo!}\n headingProps={headingProps}\n virtualizer={virtualizer}\n />\n )}\n </div>\n )}\n {layoutInfo && (\n <div\n {...groupProps}\n key={layoutInfo.key}\n style={layoutInfoToStyle(layoutInfo, 'ltr')}\n className={styles['sapphire-listbox__section']}\n >\n {children}\n </div>\n )}\n {dividerLayoutInfo && (\n <div\n role=\"presentation\"\n style={layoutInfoToStyle(dividerLayoutInfo, 'ltr')}\n >\n <Separator UNSAFE_className={styles['sapphire-listbox__separator']} />\n </div>\n )}\n </>\n );\n}\n\nconst SectionHeader = <T,>({\n item,\n headerLayoutInfo,\n headingProps,\n virtualizer,\n}: {\n item: Node<T>;\n headerLayoutInfo: LayoutInfo;\n headingProps: DOMAttributes<FocusableElement>;\n virtualizer: VirtualizerItemOptions['virtualizer'];\n}) => {\n const headerRef = useRef<HTMLDivElement>(null);\n\n useVirtualizerItem({\n layoutInfo: headerLayoutInfo!,\n virtualizer,\n ref: headerRef,\n });\n\n return (\n <div\n {...headingProps}\n ref={headerRef}\n className={styles['sapphire-listbox__section-header']}\n >\n {item.rendered}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAqBO,SAAS,cAAA,CAAiC;AAAA,EAC/C,IAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAAwC;AACtC,EAAA,aAAA,EAAc;AAEd,EAAA,MAAM,EAAE,UAAA,EAAY,YAAA,EAAa,GAAI,iBAAA,CAAkB;AAAA,IACrD,YAAA,EAAc,KAAK,YAAY,CAAA;AAAA,IAC/B,SAAS,IAAA,CAAK;AAAA,GACf,CAAA;AAED,EAAA,MAAM,gBAAA,GACJ,iBACA,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,KAAa,QAAQ,CAAA,EAAG,UAAA;AACtD,EAAA,MAAM,iBAAA,GACJ,iBACA,aAAA,CAAc,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,KAAa,SAAS,CAAA,EAAG,UAAA;AAEvD,EAAA,iEAEK,gBAAA,oBACC,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,cAAA;AAAA,MACL,KAAA,EAAO,iBAAA,CAAkB,gBAAA,EAAkB,KAAK;AAAA,KAAA;AAAA,IAE/C,KAAK,OAAA,oBACJ,KAAA,CAAA,aAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,gBAAA,EAAkB,OAAO,6BAA6B;AAAA;AAAA,KACxD;AAAA,IAED,KAAK,QAAA,oBACJ,KAAA,CAAA,aAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,gBAAA;AAAA,QACA,YAAA;AAAA,QACA;AAAA;AAAA;AACF,KAIL,UAAA,oBACC,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAA;AAAA,MACJ,KAAK,UAAA,CAAW,GAAA;AAAA,MAChB,KAAA,EAAO,iBAAA,CAAkB,UAAA,EAAY,KAAK,CAAA;AAAA,MAC1C,SAAA,EAAW,OAAO,2BAA2B;AAAA,KAAA;AAAA,IAE5C;AAAA,KAGJ,iBAAA,oBACC,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,cAAA;AAAA,MACL,KAAA,EAAO,iBAAA,CAAkB,iBAAA,EAAmB,KAAK;AAAA,KAAA;AAAA,oBAEjD,KAAA,CAAA,aAAA,CAAC,SAAA,EAAA,EAAU,gBAAA,EAAkB,MAAA,CAAO,6BAA6B,CAAA,EAAG;AAAA,GAG1E,CAAA;AAEJ;AAEA,MAAM,gBAAgB,CAAK;AAAA,EACzB,IAAA;AAAA,EACA,gBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAKM;AACJ,EAAA,MAAM,SAAA,GAAY,OAAuB,IAAI,CAAA;AAE7C,EAAA,kBAAA,CAAmB;AAAA,IACjB,UAAA,EAAY,gBAAA;AAAA,IACZ,WAAA;AAAA,IACA,GAAA,EAAK;AAAA,GACN,CAAA;AAED,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,YAAA;AAAA,MACJ,GAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,OAAO,kCAAkC;AAAA,KAAA;AAAA,IAEnD,IAAA,CAAK;AAAA,GACR;AAEJ,CAAA;;;;"}
|