@danske/sapphire-react-lab 0.105.2 → 0.106.1
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 +1527 -2226
- package/build/cjs/index.js.map +1 -1
- package/build/esm/Accordion/index.js.map +1 -1
- package/build/esm/Accordion/src/Accordion.js +41 -73
- package/build/esm/Accordion/src/Accordion.js.map +1 -1
- package/build/esm/Accordion/src/AccordionContext.js +3 -1
- package/build/esm/Accordion/src/AccordionContext.js.map +1 -1
- package/build/esm/Accordion/src/AccordionHeading.js +22 -54
- package/build/esm/Accordion/src/AccordionHeading.js.map +1 -1
- package/build/esm/Accordion/src/AccordionItem.js +15 -42
- package/build/esm/Accordion/src/AccordionItem.js.map +1 -1
- package/build/esm/Accordion/src/AccordionPanel.js +27 -44
- package/build/esm/Accordion/src/AccordionPanel.js.map +1 -1
- package/build/esm/Accordion/src/utils.js.map +1 -1
- package/build/esm/Alert/src/Alert.js +26 -64
- package/build/esm/Alert/src/Alert.js.map +1 -1
- package/build/esm/Amount/src/Amount.js +40 -62
- package/build/esm/Amount/src/Amount.js.map +1 -1
- package/build/esm/Amount/src/useGroupAmount.js +4 -1
- package/build/esm/Amount/src/useGroupAmount.js.map +1 -1
- package/build/esm/Autocomplete/i18n/da-DK.json.js +6 -0
- package/build/esm/Autocomplete/i18n/da-DK.json.js.map +1 -0
- package/build/esm/Autocomplete/i18n/de-DE.json.js +6 -0
- package/build/esm/Autocomplete/i18n/de-DE.json.js.map +1 -0
- package/build/esm/Autocomplete/i18n/en-US.json.js +6 -0
- package/build/esm/Autocomplete/i18n/en-US.json.js.map +1 -0
- package/build/esm/Autocomplete/i18n/fi-FI.json.js +6 -0
- package/build/esm/Autocomplete/i18n/fi-FI.json.js.map +1 -0
- package/build/esm/Autocomplete/i18n/index.js +9 -9
- package/build/esm/Autocomplete/i18n/index.js.map +1 -1
- package/build/esm/Autocomplete/i18n/nb-NO.json.js +6 -0
- package/build/esm/Autocomplete/i18n/nb-NO.json.js.map +1 -0
- package/build/esm/Autocomplete/i18n/pl-PL.json.js +6 -0
- package/build/esm/Autocomplete/i18n/pl-PL.json.js.map +1 -0
- package/build/esm/Autocomplete/i18n/sv-SE.json.js +6 -0
- package/build/esm/Autocomplete/i18n/sv-SE.json.js.map +1 -0
- package/build/esm/Autocomplete/src/Autocomplete.js +49 -74
- package/build/esm/Autocomplete/src/Autocomplete.js.map +1 -1
- package/build/esm/Breadcrumbs/src/BreadcrumbItem.js +44 -51
- package/build/esm/Breadcrumbs/src/BreadcrumbItem.js.map +1 -1
- package/build/esm/Breadcrumbs/src/BreadcrumbItemLink.js +17 -45
- package/build/esm/Breadcrumbs/src/BreadcrumbItemLink.js.map +1 -1
- package/build/esm/Breadcrumbs/src/BreadcrumbItemStatic.js +24 -45
- package/build/esm/Breadcrumbs/src/BreadcrumbItemStatic.js.map +1 -1
- package/build/esm/Breadcrumbs/src/BreadcrumbOverflowMenu.js +18 -11
- package/build/esm/Breadcrumbs/src/BreadcrumbOverflowMenu.js.map +1 -1
- package/build/esm/Breadcrumbs/src/Breadcrumbs.js +42 -61
- package/build/esm/Breadcrumbs/src/Breadcrumbs.js.map +1 -1
- package/build/esm/Breadcrumbs/src/BreadcrumbsSeparator.js +8 -6
- package/build/esm/Breadcrumbs/src/BreadcrumbsSeparator.js.map +1 -1
- package/build/esm/Breadcrumbs/src/useBreadcrumbThreshold.js +5 -5
- package/build/esm/Breadcrumbs/src/useBreadcrumbThreshold.js.map +1 -1
- package/build/esm/FileDropzone/i18n/{da-DK.js → da-DK.json.js} +3 -3
- package/build/esm/FileDropzone/i18n/da-DK.json.js.map +1 -0
- package/build/esm/FileDropzone/i18n/{de-DE.js → de-DE.json.js} +3 -3
- package/build/esm/FileDropzone/i18n/de-DE.json.js.map +1 -0
- package/build/esm/FileDropzone/i18n/{en-US.js → en-US.json.js} +3 -3
- package/build/esm/FileDropzone/i18n/en-US.json.js.map +1 -0
- package/build/esm/FileDropzone/i18n/{fi-FI.js → fi-FI.json.js} +3 -3
- package/build/esm/FileDropzone/i18n/fi-FI.json.js.map +1 -0
- package/build/esm/FileDropzone/i18n/index.js +9 -9
- package/build/esm/FileDropzone/i18n/index.js.map +1 -1
- package/build/esm/FileDropzone/i18n/{nb-NO.js → nb-NO.json.js} +3 -3
- package/build/esm/FileDropzone/i18n/nb-NO.json.js.map +1 -0
- package/build/esm/FileDropzone/i18n/{pl-PL.js → pl-PL.json.js} +3 -3
- package/build/esm/FileDropzone/i18n/pl-PL.json.js.map +1 -0
- package/build/esm/FileDropzone/i18n/{sv-SE.js → sv-SE.json.js} +3 -3
- package/build/esm/FileDropzone/i18n/sv-SE.json.js.map +1 -0
- package/build/esm/FileDropzone/src/FileDropzone.js +59 -84
- package/build/esm/FileDropzone/src/FileDropzone.js.map +1 -1
- package/build/esm/FileDropzone/src/FileTrigger.js +26 -59
- package/build/esm/FileDropzone/src/FileTrigger.js.map +1 -1
- package/build/esm/FileDropzone/src/utils.js.map +1 -1
- package/build/esm/Filtering/src/FilterDropdown.js +88 -110
- package/build/esm/Filtering/src/FilterDropdown.js.map +1 -1
- package/build/esm/Filtering/src/SearchableSelectFilter.js +38 -58
- package/build/esm/Filtering/src/SearchableSelectFilter.js.map +1 -1
- package/build/esm/Flag/src/Flag.js +5 -37
- package/build/esm/Flag/src/Flag.js.map +1 -1
- package/build/esm/LabeledValue/src/LabeledValue.js +19 -53
- package/build/esm/LabeledValue/src/LabeledValue.js.map +1 -1
- package/build/esm/NumberField/i18n/da-DK.json.js +9 -0
- package/build/esm/NumberField/i18n/da-DK.json.js.map +1 -0
- package/build/esm/NumberField/i18n/de-DE.json.js +9 -0
- package/build/esm/NumberField/i18n/de-DE.json.js.map +1 -0
- package/build/esm/NumberField/i18n/en-US.json.js +9 -0
- package/build/esm/NumberField/i18n/en-US.json.js.map +1 -0
- package/build/esm/NumberField/i18n/fi-FI.json.js +9 -0
- package/build/esm/NumberField/i18n/fi-FI.json.js.map +1 -0
- package/build/esm/NumberField/i18n/index.js +9 -9
- package/build/esm/NumberField/i18n/index.js.map +1 -1
- package/build/esm/NumberField/i18n/nb-NO.json.js +9 -0
- package/build/esm/NumberField/i18n/nb-NO.json.js.map +1 -0
- package/build/esm/NumberField/i18n/pl-PL.json.js +9 -0
- package/build/esm/NumberField/i18n/pl-PL.json.js.map +1 -0
- package/build/esm/NumberField/i18n/sv-SE.json.js +9 -0
- package/build/esm/NumberField/i18n/sv-SE.json.js.map +1 -0
- package/build/esm/NumberField/src/NumberField.js +125 -108
- package/build/esm/NumberField/src/NumberField.js.map +1 -1
- package/build/esm/NumberField/src/StepperButton.js +28 -50
- package/build/esm/NumberField/src/StepperButton.js.map +1 -1
- package/build/esm/NumberField/src/cursorHelpers.js +13 -8
- package/build/esm/NumberField/src/cursorHelpers.js.map +1 -1
- package/build/esm/NumberField/src/formatHelpers.js +15 -18
- package/build/esm/NumberField/src/formatHelpers.js.map +1 -1
- package/build/esm/NumberField/src/keyboardHelpers.js +13 -8
- package/build/esm/NumberField/src/keyboardHelpers.js.map +1 -1
- package/build/esm/NumberField/src/useAutofillStyle.js.map +1 -1
- package/build/esm/NumberField/src/useNumberFieldFormatting.js +79 -45
- package/build/esm/NumberField/src/useNumberFieldFormatting.js.map +1 -1
- package/build/esm/NumberField/src/useSapphireNumberField.js +13 -39
- package/build/esm/NumberField/src/useSapphireNumberField.js.map +1 -1
- package/build/esm/ProgressIndicator/src/ProgressIndicator.js +21 -33
- package/build/esm/ProgressIndicator/src/ProgressIndicator.js.map +1 -1
- package/build/esm/Sidebar/index.js.map +1 -1
- package/build/esm/Sidebar/src/Body.js +18 -43
- package/build/esm/Sidebar/src/Body.js.map +1 -1
- package/build/esm/Sidebar/src/ExpandableItem.js +86 -95
- package/build/esm/Sidebar/src/ExpandableItem.js.map +1 -1
- package/build/esm/Sidebar/src/Header.js +13 -43
- package/build/esm/Sidebar/src/Header.js.map +1 -1
- package/build/esm/Sidebar/src/Item.js +16 -43
- package/build/esm/Sidebar/src/Item.js.map +1 -1
- package/build/esm/Sidebar/src/List.js +13 -42
- package/build/esm/Sidebar/src/List.js.map +1 -1
- package/build/esm/Sidebar/src/Panel.js +56 -69
- package/build/esm/Sidebar/src/Panel.js.map +1 -1
- package/build/esm/Sidebar/src/ResponsiveSidebarContext.js +16 -8
- package/build/esm/Sidebar/src/ResponsiveSidebarContext.js.map +1 -1
- package/build/esm/Sidebar/src/SecondarySidebarContext.js +14 -11
- package/build/esm/Sidebar/src/SecondarySidebarContext.js.map +1 -1
- package/build/esm/Sidebar/src/Section.js +36 -49
- package/build/esm/Sidebar/src/Section.js.map +1 -1
- package/build/esm/Sidebar/src/Sidebar.js +62 -91
- package/build/esm/Sidebar/src/Sidebar.js.map +1 -1
- package/build/esm/Sidebar/src/useSidebar.js.map +1 -1
- package/build/esm/Slider/index.js.map +1 -1
- package/build/esm/Slider/src/Slider.js +46 -71
- package/build/esm/Slider/src/Slider.js.map +1 -1
- package/build/esm/TagGroup/src/Tag.js +66 -82
- package/build/esm/TagGroup/src/Tag.js.map +1 -1
- package/build/esm/TagGroup/src/TagGroup.js +44 -65
- package/build/esm/TagGroup/src/TagGroup.js.map +1 -1
- package/build/esm/TagGroup/src/TagItem.js.map +1 -1
- package/build/esm/TimeField/i18n/da-DK.json.js +7 -0
- package/build/esm/TimeField/i18n/da-DK.json.js.map +1 -0
- package/build/esm/TimeField/i18n/de-DE.json.js +7 -0
- package/build/esm/TimeField/i18n/de-DE.json.js.map +1 -0
- package/build/esm/TimeField/i18n/en-US.json.js +7 -0
- package/build/esm/TimeField/i18n/en-US.json.js.map +1 -0
- package/build/esm/TimeField/i18n/fi-FI.json.js +7 -0
- package/build/esm/TimeField/i18n/fi-FI.json.js.map +1 -0
- package/build/esm/TimeField/i18n/index.js +7 -7
- package/build/esm/TimeField/i18n/index.js.map +1 -1
- package/build/esm/TimeField/i18n/nb-NO.json.js +7 -0
- package/build/esm/TimeField/i18n/nb-NO.json.js.map +1 -0
- package/build/esm/TimeField/i18n/pl-PL.json.js +7 -0
- package/build/esm/TimeField/i18n/pl-PL.json.js.map +1 -0
- package/build/esm/TimeField/i18n/{sv-SE.js → sv-SE.json.js} +1 -1
- package/build/esm/TimeField/i18n/sv-SE.json.js.map +1 -0
- package/build/esm/TimeField/src/TimeField.js +62 -80
- package/build/esm/TimeField/src/TimeField.js.map +1 -1
- package/build/esm/TimeField/src/TimeFieldSegment.js +24 -36
- package/build/esm/TimeField/src/TimeFieldSegment.js.map +1 -1
- package/build/index.d.ts +13 -12
- package/package.json +5 -5
- package/build/esm/Autocomplete/i18n/da-DK.js +0 -6
- package/build/esm/Autocomplete/i18n/da-DK.js.map +0 -1
- package/build/esm/Autocomplete/i18n/de-DE.js +0 -6
- package/build/esm/Autocomplete/i18n/de-DE.js.map +0 -1
- package/build/esm/Autocomplete/i18n/en-US.js +0 -6
- package/build/esm/Autocomplete/i18n/en-US.js.map +0 -1
- package/build/esm/Autocomplete/i18n/fi-FI.js +0 -6
- package/build/esm/Autocomplete/i18n/fi-FI.js.map +0 -1
- package/build/esm/Autocomplete/i18n/nb-NO.js +0 -6
- package/build/esm/Autocomplete/i18n/nb-NO.js.map +0 -1
- package/build/esm/Autocomplete/i18n/pl-PL.js +0 -6
- package/build/esm/Autocomplete/i18n/pl-PL.js.map +0 -1
- package/build/esm/Autocomplete/i18n/sv-SE.js +0 -6
- package/build/esm/Autocomplete/i18n/sv-SE.js.map +0 -1
- package/build/esm/FileDropzone/i18n/da-DK.js.map +0 -1
- package/build/esm/FileDropzone/i18n/de-DE.js.map +0 -1
- package/build/esm/FileDropzone/i18n/en-US.js.map +0 -1
- package/build/esm/FileDropzone/i18n/fi-FI.js.map +0 -1
- package/build/esm/FileDropzone/i18n/nb-NO.js.map +0 -1
- package/build/esm/FileDropzone/i18n/pl-PL.js.map +0 -1
- package/build/esm/FileDropzone/i18n/sv-SE.js.map +0 -1
- package/build/esm/NumberField/i18n/da-DK.js +0 -9
- package/build/esm/NumberField/i18n/da-DK.js.map +0 -1
- package/build/esm/NumberField/i18n/de-DE.js +0 -9
- package/build/esm/NumberField/i18n/de-DE.js.map +0 -1
- package/build/esm/NumberField/i18n/en-US.js +0 -9
- package/build/esm/NumberField/i18n/en-US.js.map +0 -1
- package/build/esm/NumberField/i18n/fi-FI.js +0 -9
- package/build/esm/NumberField/i18n/fi-FI.js.map +0 -1
- package/build/esm/NumberField/i18n/nb-NO.js +0 -9
- package/build/esm/NumberField/i18n/nb-NO.js.map +0 -1
- package/build/esm/NumberField/i18n/pl-PL.js +0 -9
- package/build/esm/NumberField/i18n/pl-PL.js.map +0 -1
- package/build/esm/NumberField/i18n/sv-SE.js +0 -9
- package/build/esm/NumberField/i18n/sv-SE.js.map +0 -1
- package/build/esm/TimeField/i18n/da-DK.js +0 -7
- package/build/esm/TimeField/i18n/da-DK.js.map +0 -1
- package/build/esm/TimeField/i18n/de-DE.js +0 -7
- package/build/esm/TimeField/i18n/de-DE.js.map +0 -1
- package/build/esm/TimeField/i18n/en-US.js +0 -7
- package/build/esm/TimeField/i18n/en-US.js.map +0 -1
- package/build/esm/TimeField/i18n/fi-FI.js +0 -7
- package/build/esm/TimeField/i18n/fi-FI.js.map +0 -1
- package/build/esm/TimeField/i18n/nb-NO.js +0 -7
- package/build/esm/TimeField/i18n/nb-NO.js.map +0 -1
- package/build/esm/TimeField/i18n/pl-PL.js +0 -7
- package/build/esm/TimeField/i18n/pl-PL.js.map +0 -1
- package/build/esm/TimeField/i18n/sv-SE.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import clsx from 'clsx';
|
|
2
2
|
import styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';
|
|
3
|
-
import { useThemeCheck,
|
|
3
|
+
import { useThemeCheck, ThemeRoot, useSapphireStyleProps } from '@danske/sapphire-react';
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { mergeProps, filterDOMProps } from '@react-aria/utils';
|
|
6
6
|
import { useFocusWithin } from '@react-aria/interactions';
|
|
@@ -9,106 +9,77 @@ import { useSidebar } from './useSidebar.js';
|
|
|
9
9
|
import { SecondarySidebarProvider } from './SecondarySidebarContext.js';
|
|
10
10
|
import { useResponsiveSidebarContext, useIsSidebarCollapsed } from './ResponsiveSidebarContext.js';
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (__hasOwnProp.call(b, prop))
|
|
22
|
-
__defNormalProp(a, prop, b[prop]);
|
|
23
|
-
if (__getOwnPropSymbols)
|
|
24
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
25
|
-
if (__propIsEnum.call(b, prop))
|
|
26
|
-
__defNormalProp(a, prop, b[prop]);
|
|
27
|
-
}
|
|
28
|
-
return a;
|
|
29
|
-
};
|
|
30
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
31
|
-
var __objRest = (source, exclude) => {
|
|
32
|
-
var target = {};
|
|
33
|
-
for (var prop in source)
|
|
34
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
35
|
-
target[prop] = source[prop];
|
|
36
|
-
if (source != null && __getOwnPropSymbols)
|
|
37
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
38
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
39
|
-
target[prop] = source[prop];
|
|
40
|
-
}
|
|
41
|
-
return target;
|
|
42
|
-
};
|
|
43
|
-
const Sidebar = (_a) => {
|
|
44
|
-
var _b = _a, {
|
|
45
|
-
themeVariant,
|
|
46
|
-
openedSecondarySidebar,
|
|
47
|
-
defaultOpenedSecondarySidebar,
|
|
48
|
-
onSecondarySidebarChange,
|
|
49
|
-
secondarySidebarThemeVariant,
|
|
50
|
-
children
|
|
51
|
-
} = _b, props = __objRest(_b, [
|
|
52
|
-
"themeVariant",
|
|
53
|
-
"openedSecondarySidebar",
|
|
54
|
-
"defaultOpenedSecondarySidebar",
|
|
55
|
-
"onSecondarySidebarChange",
|
|
56
|
-
"secondarySidebarThemeVariant",
|
|
57
|
-
"children"
|
|
58
|
-
]);
|
|
12
|
+
const Sidebar = ({
|
|
13
|
+
themeVariant,
|
|
14
|
+
openedSecondarySidebar,
|
|
15
|
+
defaultOpenedSecondarySidebar,
|
|
16
|
+
onSecondarySidebarChange,
|
|
17
|
+
secondarySidebarThemeVariant,
|
|
18
|
+
children,
|
|
19
|
+
...props
|
|
20
|
+
}) => {
|
|
59
21
|
useThemeCheck();
|
|
60
|
-
return /* @__PURE__ */ React.createElement(
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
22
|
+
return /* @__PURE__ */ React.createElement(
|
|
23
|
+
SecondarySidebarProvider,
|
|
24
|
+
{
|
|
25
|
+
openedId: openedSecondarySidebar,
|
|
26
|
+
defaultOpenedId: defaultOpenedSecondarySidebar,
|
|
27
|
+
onOpenedIdChange: onSecondarySidebarChange,
|
|
28
|
+
themeVariant: secondarySidebarThemeVariant
|
|
29
|
+
},
|
|
30
|
+
/* @__PURE__ */ React.createElement(WithThemeRoot, { themeVariant }, /* @__PURE__ */ React.createElement(SidebarContent, { ...props }, children))
|
|
31
|
+
);
|
|
68
32
|
};
|
|
69
|
-
const SidebarContent = (
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
"onBlurWithin",
|
|
80
|
-
"onFocusWithin",
|
|
81
|
-
"onFocusWithinChange",
|
|
82
|
-
"closeOnBlurWithin",
|
|
83
|
-
"header",
|
|
84
|
-
"panelHeader",
|
|
85
|
-
"children"
|
|
86
|
-
]);
|
|
33
|
+
const SidebarContent = ({
|
|
34
|
+
onBlurWithin,
|
|
35
|
+
onFocusWithin,
|
|
36
|
+
onFocusWithinChange,
|
|
37
|
+
closeOnBlurWithin = true,
|
|
38
|
+
header,
|
|
39
|
+
panelHeader,
|
|
40
|
+
children,
|
|
41
|
+
...props
|
|
42
|
+
}) => {
|
|
87
43
|
const { styleProps } = useSapphireStyleProps(props);
|
|
88
44
|
const { sidebarProps } = useSidebar();
|
|
89
|
-
const { focusWithinProps } = useFocusWithin(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
45
|
+
const { focusWithinProps } = useFocusWithin(
|
|
46
|
+
mergeProps(
|
|
47
|
+
{
|
|
48
|
+
onBlurWithin,
|
|
49
|
+
onFocusWithin,
|
|
50
|
+
onFocusWithinChange
|
|
51
|
+
},
|
|
52
|
+
closeOnBlurWithin ? sidebarProps : {}
|
|
53
|
+
)
|
|
54
|
+
);
|
|
94
55
|
const responsiveSidebarContext = useResponsiveSidebarContext();
|
|
95
56
|
const isCollapsed = useIsSidebarCollapsed();
|
|
96
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, !isCollapsed && /* @__PURE__ */ React.createElement(
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
57
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, !isCollapsed && /* @__PURE__ */ React.createElement(
|
|
58
|
+
"div",
|
|
59
|
+
{
|
|
60
|
+
...styleProps,
|
|
61
|
+
...filterDOMProps(props, { global: true }),
|
|
62
|
+
...focusWithinProps,
|
|
63
|
+
className: clsx(styles["sapphire-sidebar"]),
|
|
64
|
+
tabIndex: -1
|
|
65
|
+
},
|
|
66
|
+
header,
|
|
67
|
+
children
|
|
68
|
+
), responsiveSidebarContext && /* @__PURE__ */ React.createElement(SidebarPanel, { header: panelHeader }, children));
|
|
102
69
|
};
|
|
103
70
|
const WithThemeRoot = ({
|
|
104
71
|
children,
|
|
105
72
|
themeVariant
|
|
106
|
-
}) => themeVariant ? /* @__PURE__ */ React.createElement(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
73
|
+
}) => themeVariant ? /* @__PURE__ */ React.createElement(
|
|
74
|
+
ThemeRoot,
|
|
75
|
+
{
|
|
76
|
+
variant: themeVariant,
|
|
77
|
+
noSurface: true,
|
|
78
|
+
height: "100%",
|
|
79
|
+
width: "min-content"
|
|
80
|
+
},
|
|
81
|
+
children
|
|
82
|
+
) : /* @__PURE__ */ React.createElement(React.Fragment, null, children);
|
|
112
83
|
|
|
113
84
|
export { Sidebar };
|
|
114
85
|
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.js","sources":["../../../../src/Sidebar/src/Sidebar.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport {\n useThemeCheck,\n useSapphireStyleProps,\n SapphireStyleProps,\n ThemeRoot,\n ThemeVariant,\n} from '@danske/sapphire-react';\nimport React from 'react';\nimport { DOMProps } from '@react-types/shared';\nimport { filterDOMProps, mergeProps } from '@react-aria/utils';\nimport { FocusWithinProps, useFocusWithin } from '@react-aria/interactions';\nimport { SidebarPanel } from './Panel';\nimport { useSidebar } from './useSidebar';\nimport { SecondarySidebarProvider } from './SecondarySidebarContext';\nimport {\n useIsSidebarCollapsed,\n useResponsiveSidebarContext,\n} from './ResponsiveSidebarContext';\n\nexport type SidebarProps = DOMProps &\n SapphireStyleProps & {\n /**\n * Shorthand to wrap the sidebar in a ThemeRoot with a different theme variant\n */\n themeVariant?: ThemeVariant;\n\n /**\n * The theme variant for the overflow sidebar\n */\n secondarySidebarThemeVariant?: ThemeVariant;\n\n /**\n * Callback for when the sidebar's elements lose focus.\n * Useful to know when to close the overflow sidebar.\n */\n onBlurWithin?: FocusWithinProps['onBlurWithin'];\n\n /**\n * Callback for when one of the sidebar's elements first gains focus.\n */\n onFocusWithin?: FocusWithinProps['onFocusWithin'];\n\n /**\n * Callback for when one of the sidebar's elements loses or gains focus\n */\n onFocusWithinChange?: FocusWithinProps['onFocusWithinChange'];\n\n /**\n * Whether the overflow sidebar should close when all sidebar's elements\n * lost focus\n * @default true\n */\n closeOnBlurWithin?: boolean;\n\n /**\n * The header of the sidebar\n */\n header: ReactNode;\n\n /**\n * The header of the sidebar for small screens, when the sidebar is\n * rendered as a panel\n */\n panelHeader?: ReactNode;\n\n /**\n * The id of the opened secondary sidebar (controlled)\n */\n openedSecondarySidebar?: string | null;\n\n /**\n * The id of the secondary sidebar opened by default (uncontrolled)\n */\n defaultOpenedSecondarySidebar?: string | null;\n\n /**\n * Callback for when the secondary sidebar opens or closes\n */\n onSecondarySidebarChange?: (id: string | null) => void;\n\n children?: ReactNode;\n };\n\n/**\n * Sidebar component for the site's main navigation.\n * Takes the height of the container.\n *\n * The default recommended way to use it is in the example below. But each part\n * can be replaced with a custom implementation.\n *\n * **Example:**\n * ```tsx\n * <Sidebar\n * header={\n * <Sidebar.Header>\n * header\n * </Sidebar.Header>\n * }\n * >\n * <Sidebar.Body>\n * <Sidebar.List>\n * ...\n * </Sidebar.List>\n * </Sidebar.Body>\n * </Sidebar>\n * ```\n */\nexport const Sidebar = ({\n themeVariant,\n openedSecondarySidebar,\n defaultOpenedSecondarySidebar,\n onSecondarySidebarChange,\n secondarySidebarThemeVariant,\n children,\n ...props\n}: SidebarProps) => {\n useThemeCheck();\n\n return (\n <SecondarySidebarProvider\n openedId={openedSecondarySidebar}\n defaultOpenedId={defaultOpenedSecondarySidebar}\n onOpenedIdChange={onSecondarySidebarChange}\n themeVariant={secondarySidebarThemeVariant}\n >\n <WithThemeRoot themeVariant={themeVariant}>\n <SidebarContent {...props}>{children}</SidebarContent>\n </WithThemeRoot>\n </SecondarySidebarProvider>\n );\n};\n\nconst SidebarContent = ({\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange,\n closeOnBlurWithin = true,\n header,\n panelHeader,\n children,\n ...props\n}: SidebarProps) => {\n const { styleProps } = useSapphireStyleProps(props);\n const { sidebarProps } = useSidebar();\n\n const { focusWithinProps } = useFocusWithin(\n mergeProps(\n {\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange,\n },\n closeOnBlurWithin ? sidebarProps : {}\n )\n );\n\n const responsiveSidebarContext = useResponsiveSidebarContext();\n const isCollapsed = useIsSidebarCollapsed();\n\n return (\n <>\n {!isCollapsed && (\n <div\n {...styleProps}\n {...filterDOMProps(props, { global: true })}\n {...focusWithinProps}\n className={clsx(styles['sapphire-sidebar'])}\n tabIndex={-1 /* sidebar must be focusable but not tabbable */}\n >\n {header}\n {children}\n </div>\n )}\n {responsiveSidebarContext && (\n <SidebarPanel header={panelHeader}>{children}</SidebarPanel>\n )}\n </>\n );\n};\n\nconst WithThemeRoot = ({\n children,\n themeVariant,\n}: {\n themeVariant?: ThemeVariant;\n children: ReactNode;\n}) =>\n themeVariant ? (\n <ThemeRoot\n variant={themeVariant}\n noSurface\n height=\"100%\"\n width=\"min-content\"\n >\n {children}\n </ThemeRoot>\n ) : (\n <>{children}</>\n );\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sources":["../../../../src/Sidebar/src/Sidebar.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport {\n useThemeCheck,\n useSapphireStyleProps,\n SapphireStyleProps,\n ThemeRoot,\n ThemeVariant,\n} from '@danske/sapphire-react';\nimport React from 'react';\nimport { DOMProps } from '@react-types/shared';\nimport { filterDOMProps, mergeProps } from '@react-aria/utils';\nimport { FocusWithinProps, useFocusWithin } from '@react-aria/interactions';\nimport { SidebarPanel } from './Panel';\nimport { useSidebar } from './useSidebar';\nimport { SecondarySidebarProvider } from './SecondarySidebarContext';\nimport {\n useIsSidebarCollapsed,\n useResponsiveSidebarContext,\n} from './ResponsiveSidebarContext';\n\nexport type SidebarProps = DOMProps &\n SapphireStyleProps & {\n /**\n * Shorthand to wrap the sidebar in a ThemeRoot with a different theme variant\n */\n themeVariant?: ThemeVariant;\n\n /**\n * The theme variant for the overflow sidebar\n */\n secondarySidebarThemeVariant?: ThemeVariant;\n\n /**\n * Callback for when the sidebar's elements lose focus.\n * Useful to know when to close the overflow sidebar.\n */\n onBlurWithin?: FocusWithinProps['onBlurWithin'];\n\n /**\n * Callback for when one of the sidebar's elements first gains focus.\n */\n onFocusWithin?: FocusWithinProps['onFocusWithin'];\n\n /**\n * Callback for when one of the sidebar's elements loses or gains focus\n */\n onFocusWithinChange?: FocusWithinProps['onFocusWithinChange'];\n\n /**\n * Whether the overflow sidebar should close when all sidebar's elements\n * lost focus\n * @default true\n */\n closeOnBlurWithin?: boolean;\n\n /**\n * The header of the sidebar\n */\n header: ReactNode;\n\n /**\n * The header of the sidebar for small screens, when the sidebar is\n * rendered as a panel\n */\n panelHeader?: ReactNode;\n\n /**\n * The id of the opened secondary sidebar (controlled)\n */\n openedSecondarySidebar?: string | null;\n\n /**\n * The id of the secondary sidebar opened by default (uncontrolled)\n */\n defaultOpenedSecondarySidebar?: string | null;\n\n /**\n * Callback for when the secondary sidebar opens or closes\n */\n onSecondarySidebarChange?: (id: string | null) => void;\n\n children?: ReactNode;\n };\n\n/**\n * Sidebar component for the site's main navigation.\n * Takes the height of the container.\n *\n * The default recommended way to use it is in the example below. But each part\n * can be replaced with a custom implementation.\n *\n * **Example:**\n * ```tsx\n * <Sidebar\n * header={\n * <Sidebar.Header>\n * header\n * </Sidebar.Header>\n * }\n * >\n * <Sidebar.Body>\n * <Sidebar.List>\n * ...\n * </Sidebar.List>\n * </Sidebar.Body>\n * </Sidebar>\n * ```\n */\nexport const Sidebar = ({\n themeVariant,\n openedSecondarySidebar,\n defaultOpenedSecondarySidebar,\n onSecondarySidebarChange,\n secondarySidebarThemeVariant,\n children,\n ...props\n}: SidebarProps) => {\n useThemeCheck();\n\n return (\n <SecondarySidebarProvider\n openedId={openedSecondarySidebar}\n defaultOpenedId={defaultOpenedSecondarySidebar}\n onOpenedIdChange={onSecondarySidebarChange}\n themeVariant={secondarySidebarThemeVariant}\n >\n <WithThemeRoot themeVariant={themeVariant}>\n <SidebarContent {...props}>{children}</SidebarContent>\n </WithThemeRoot>\n </SecondarySidebarProvider>\n );\n};\n\nconst SidebarContent = ({\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange,\n closeOnBlurWithin = true,\n header,\n panelHeader,\n children,\n ...props\n}: SidebarProps) => {\n const { styleProps } = useSapphireStyleProps(props);\n const { sidebarProps } = useSidebar();\n\n const { focusWithinProps } = useFocusWithin(\n mergeProps(\n {\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange,\n },\n closeOnBlurWithin ? sidebarProps : {}\n )\n );\n\n const responsiveSidebarContext = useResponsiveSidebarContext();\n const isCollapsed = useIsSidebarCollapsed();\n\n return (\n <>\n {!isCollapsed && (\n <div\n {...styleProps}\n {...filterDOMProps(props, { global: true })}\n {...focusWithinProps}\n className={clsx(styles['sapphire-sidebar'])}\n tabIndex={-1 /* sidebar must be focusable but not tabbable */}\n >\n {header}\n {children}\n </div>\n )}\n {responsiveSidebarContext && (\n <SidebarPanel header={panelHeader}>{children}</SidebarPanel>\n )}\n </>\n );\n};\n\nconst WithThemeRoot = ({\n children,\n themeVariant,\n}: {\n themeVariant?: ThemeVariant;\n children: ReactNode;\n}) =>\n themeVariant ? (\n <ThemeRoot\n variant={themeVariant}\n noSurface\n height=\"100%\"\n width=\"min-content\"\n >\n {children}\n </ThemeRoot>\n ) : (\n <>{children}</>\n );\n"],"names":[],"mappings":";;;;;;;;;;;AA8GO,MAAM,UAAU,CAAC;AAAA,EACtB,YAAA;AAAA,EACA,sBAAA;AAAA,EACA,6BAAA;AAAA,EACA,wBAAA;AAAA,EACA,4BAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAoB;AAClB,EAAA,aAAA,EAAc;AAEd,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,wBAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,sBAAA;AAAA,MACV,eAAA,EAAiB,6BAAA;AAAA,MACjB,gBAAA,EAAkB,wBAAA;AAAA,MAClB,YAAA,EAAc;AAAA,KAAA;AAAA,oBAEd,KAAA,CAAA,aAAA,CAAC,iBAAc,YAAA,EAAA,kBACb,KAAA,CAAA,aAAA,CAAC,kBAAgB,GAAG,KAAA,EAAA,EAAQ,QAAS,CACvC;AAAA,GACF;AAEJ;AAEA,MAAM,iBAAiB,CAAC;AAAA,EACtB,YAAA;AAAA,EACA,aAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA,GAAoB,IAAA;AAAA,EACpB,MAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAoB;AAClB,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,qBAAA,CAAsB,KAAK,CAAA;AAClD,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,UAAA,EAAW;AAEpC,EAAA,MAAM,EAAE,kBAAiB,GAAI,cAAA;AAAA,IAC3B,UAAA;AAAA,MACE;AAAA,QACE,YAAA;AAAA,QACA,aAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,iBAAA,GAAoB,eAAe;AAAC;AACtC,GACF;AAEA,EAAA,MAAM,2BAA2B,2BAAA,EAA4B;AAC7D,EAAA,MAAM,cAAc,qBAAA,EAAsB;AAE1C,EAAA,uBACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EACG,CAAC,WAAA,oBACA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAA;AAAA,MACH,GAAG,cAAA,CAAe,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA,MACzC,GAAG,gBAAA;AAAA,MACJ,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,kBAAkB,CAAC,CAAA;AAAA,MAC1C,QAAA,EAAU;AAAA,KAAA;AAAA,IAET,MAAA;AAAA,IACA;AAAA,KAGJ,wBAAA,oBACC,KAAA,CAAA,aAAA,CAAC,gBAAa,MAAA,EAAQ,WAAA,EAAA,EAAc,QAAS,CAEjD,CAAA;AAEJ,CAAA;AAEA,MAAM,gBAAgB,CAAC;AAAA,EACrB,QAAA;AAAA,EACA;AACF,CAAA,KAIE,YAAA,mBACE,KAAA,CAAA,aAAA;AAAA,EAAC,SAAA;AAAA,EAAA;AAAA,IACC,OAAA,EAAS,YAAA;AAAA,IACT,SAAA,EAAS,IAAA;AAAA,IACT,MAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAM;AAAA,GAAA;AAAA,EAEL;AACH,CAAA,6DAEG,QAAS,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSidebar.js","sources":["../../../../src/Sidebar/src/useSidebar.ts"],"sourcesContent":["import { useResponsiveSidebarContext } from './ResponsiveSidebarContext';\nimport { useSecondarySidebarContext } from './SecondarySidebarContext';\n\n/**\n * Returns props to be spread on different components that make the Sidebar.\n */\nexport const useSidebar = () => {\n const { openedId, setOpenedId } = useSecondarySidebarContext();\n const responsiveContext = useResponsiveSidebarContext();\n const { isPanelOpen, setPanelOpen } = responsiveContext\n ? responsiveContext\n : { isPanelOpen: false, setPanelOpen: () => {} };\n\n return {\n sidebarProps: { onBlurWithin: () => setOpenedId(null) },\n itemProps: {\n onPress: () => {\n setPanelOpen(false);\n if (!isPanelOpen) {\n /* If panel is open, let the secondary sidebar get closed\n * when the closing transition is done. See `panelProps`\n */\n setOpenedId(null);\n }\n },\n },\n getExpandableItemProps: (id: string) => ({\n onPress: () => setOpenedId(openedId === id ? null : id),\n }),\n secondarySidebarProps: {\n onClose: () => setOpenedId(null),\n },\n };\n};\n"],"names":[],"mappings":";;;AAMO,MAAM,aAAa,MAAM;AAC9B,
|
|
1
|
+
{"version":3,"file":"useSidebar.js","sources":["../../../../src/Sidebar/src/useSidebar.ts"],"sourcesContent":["import { useResponsiveSidebarContext } from './ResponsiveSidebarContext';\nimport { useSecondarySidebarContext } from './SecondarySidebarContext';\n\n/**\n * Returns props to be spread on different components that make the Sidebar.\n */\nexport const useSidebar = () => {\n const { openedId, setOpenedId } = useSecondarySidebarContext();\n const responsiveContext = useResponsiveSidebarContext();\n const { isPanelOpen, setPanelOpen } = responsiveContext\n ? responsiveContext\n : { isPanelOpen: false, setPanelOpen: () => {} };\n\n return {\n sidebarProps: { onBlurWithin: () => setOpenedId(null) },\n itemProps: {\n onPress: () => {\n setPanelOpen(false);\n if (!isPanelOpen) {\n /* If panel is open, let the secondary sidebar get closed\n * when the closing transition is done. See `panelProps`\n */\n setOpenedId(null);\n }\n },\n },\n getExpandableItemProps: (id: string) => ({\n onPress: () => setOpenedId(openedId === id ? null : id),\n }),\n secondarySidebarProps: {\n onClose: () => setOpenedId(null),\n },\n };\n};\n"],"names":[],"mappings":";;;AAMO,MAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,EAAE,QAAA,EAAU,WAAA,EAAY,GAAI,0BAAA,EAA2B;AAC7D,EAAA,MAAM,oBAAoB,2BAAA,EAA4B;AACtD,EAAA,MAAM,EAAE,WAAA,EAAa,YAAA,EAAa,GAAI,iBAAA,GAClC,oBACA,EAAE,WAAA,EAAa,KAAA,EAAO,YAAA,EAAc,MAAM;AAAA,EAAC,CAAA,EAAE;AAEjD,EAAA,OAAO;AAAA,IACL,cAAc,EAAE,YAAA,EAAc,MAAM,WAAA,CAAY,IAAI,CAAA,EAAE;AAAA,IACtD,SAAA,EAAW;AAAA,MACT,SAAS,MAAM;AACb,QAAA,YAAA,CAAa,KAAK,CAAA;AAClB,QAAA,IAAI,CAAC,WAAA,EAAa;AAIhB,UAAA,WAAA,CAAY,IAAI,CAAA;AAAA,QAClB;AAAA,MACF;AAAA,KACF;AAAA,IACA,sBAAA,EAAwB,CAAC,EAAA,MAAgB;AAAA,MACvC,SAAS,MAAM,WAAA,CAAY,QAAA,KAAa,EAAA,GAAK,OAAO,EAAE;AAAA,KACxD,CAAA;AAAA,IACA,qBAAA,EAAuB;AAAA,MACrB,OAAA,EAAS,MAAM,WAAA,CAAY,IAAI;AAAA;AACjC,GACF;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/Slider/index.ts"],"sourcesContent":["import { Field } from '@danske/sapphire-react';\nimport { Slider } from './src/Slider';\n\nconst _Slider = Object.assign(Slider, {\n Note: Field.Note,\n});\n\nexport { _Slider as Slider };\nexport { type SliderProps } from './src/Slider';\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/Slider/index.ts"],"sourcesContent":["import { Field } from '@danske/sapphire-react';\nimport { Slider } from './src/Slider';\n\nconst _Slider = Object.assign(Slider, {\n Note: Field.Note,\n});\n\nexport { _Slider as Slider };\nexport { type SliderProps } from './src/Slider';\n"],"names":[],"mappings":";;;AAGA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ;AAAA,EACpC,MAAM,KAAA,CAAM;AACd,CAAC;;;;"}
|
|
@@ -4,79 +4,54 @@ import { useThemeCheck, useSapphireStyleProps, Field, Label } from '@danske/sapp
|
|
|
4
4
|
import { Slider as Slider$1, SliderTrack, SliderThumb } from 'react-aria-components';
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var __spreadValues = (a, b) => {
|
|
15
|
-
for (var prop in b || (b = {}))
|
|
16
|
-
if (__hasOwnProp.call(b, prop))
|
|
17
|
-
__defNormalProp(a, prop, b[prop]);
|
|
18
|
-
if (__getOwnPropSymbols)
|
|
19
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
20
|
-
if (__propIsEnum.call(b, prop))
|
|
21
|
-
__defNormalProp(a, prop, b[prop]);
|
|
22
|
-
}
|
|
23
|
-
return a;
|
|
24
|
-
};
|
|
25
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
26
|
-
var __objRest = (source, exclude) => {
|
|
27
|
-
var target = {};
|
|
28
|
-
for (var prop in source)
|
|
29
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
30
|
-
target[prop] = source[prop];
|
|
31
|
-
if (source != null && __getOwnPropSymbols)
|
|
32
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
33
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
34
|
-
target[prop] = source[prop];
|
|
35
|
-
}
|
|
36
|
-
return target;
|
|
37
|
-
};
|
|
38
|
-
const Slider = (_a) => {
|
|
39
|
-
var _b = _a, {
|
|
40
|
-
label,
|
|
41
|
-
labelPlacement = "above",
|
|
42
|
-
note,
|
|
43
|
-
name
|
|
44
|
-
} = _b, props = __objRest(_b, [
|
|
45
|
-
"label",
|
|
46
|
-
"labelPlacement",
|
|
47
|
-
"note",
|
|
48
|
-
"name"
|
|
49
|
-
]);
|
|
7
|
+
const Slider = ({
|
|
8
|
+
label,
|
|
9
|
+
labelPlacement = "above",
|
|
10
|
+
note,
|
|
11
|
+
name,
|
|
12
|
+
...props
|
|
13
|
+
}) => {
|
|
50
14
|
useThemeCheck();
|
|
51
15
|
const { styleProps } = useSapphireStyleProps(props);
|
|
52
|
-
return /* @__PURE__ */ React.createElement(Field,
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
16
|
+
return /* @__PURE__ */ React.createElement(Field, { ...styleProps, labelPlacement }, /* @__PURE__ */ React.createElement(Field.Context, null, label && /* @__PURE__ */ React.createElement(Field.Label, null, /* @__PURE__ */ React.createElement(Label, null, label)), /* @__PURE__ */ React.createElement(Field.Control, null, /* @__PURE__ */ React.createElement(Slider$1, { ...props, style: { height: "100%" } }, /* @__PURE__ */ React.createElement("div", { className: clsx(styles["sapphire-slider"]), role: "slider" }, /* @__PURE__ */ React.createElement(
|
|
17
|
+
SliderTrack,
|
|
18
|
+
{
|
|
19
|
+
className: ({ isDisabled }) => clsx(styles["sapphire-slider__track"], {
|
|
20
|
+
[styles["is-disabled"]]: isDisabled
|
|
21
|
+
})
|
|
22
|
+
},
|
|
23
|
+
({ state }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
className: clsx(
|
|
27
|
+
styles["sapphire-slider__track-remaining"]
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
), /* @__PURE__ */ React.createElement(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
className: clsx(styles["sapphire-slider__track-fill"]),
|
|
34
|
+
style: { width: state.getThumbPercent(0) * 100 + "%" }
|
|
35
|
+
}
|
|
36
|
+
), /* @__PURE__ */ React.createElement(
|
|
37
|
+
SliderThumb,
|
|
38
|
+
{
|
|
39
|
+
name,
|
|
40
|
+
className: (state2) => clsx(styles["sapphire-slider__thumb"], {
|
|
41
|
+
[styles["is-focus"]]: state2.isFocusVisible
|
|
42
|
+
}),
|
|
43
|
+
style: ({ state: state2 }) => {
|
|
44
|
+
const percent = Math.min(
|
|
45
|
+
3 + state2.getThumbPercent(0) * 94,
|
|
46
|
+
100
|
|
47
|
+
);
|
|
48
|
+
return {
|
|
49
|
+
left: `${percent}%`
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
))
|
|
54
|
+
)))), note && /* @__PURE__ */ React.createElement(Field.Footer, null, note)));
|
|
80
55
|
};
|
|
81
56
|
|
|
82
57
|
export { Slider };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Slider.js","sources":["../../../../src/Slider/src/Slider.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/slider/slider.module.css';\nimport {\n useThemeCheck,\n useSapphireStyleProps,\n Label,\n SapphireStyleProps,\n Field,\n FieldProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport {\n Slider as RACSlider,\n SliderProps as RACSliderProps,\n SliderThumb as RACSliderThumb,\n SliderThumbProps as RACSliderThumbProps,\n SliderTrack as RACSliderTrack,\n} from 'react-aria-components';\nimport React from 'react';\n\nexport type SliderProps = {\n label?: ReactNode;\n /**\n * A note to show below the slider.\n * Use {@Link Slider.Note} to render the note.\n */\n note?: ReactNode;\n} & SapphireStyleProps &\n GlobalDomAttributes &\n Pick<FieldProps, 'labelPlacement'> &\n Pick<\n RACSliderProps<number>, // We're only supporting sliders with one end\n | 'isDisabled'\n | 'minValue'\n | 'maxValue'\n | 'step'\n | 'value'\n | 'defaultValue'\n | 'aria-label'\n | 'onChange'\n | 'onChangeEnd'\n > &\n Pick<RACSliderThumbProps, 'name'>;\n\nexport const Slider = ({\n label,\n labelPlacement = 'above',\n note,\n name,\n ...props\n}: SliderProps): JSX.Element => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n\n return (\n <Field {...styleProps} labelPlacement={labelPlacement}>\n <Field.Context>\n {label && (\n <Field.Label>\n <Label>{label}</Label>\n </Field.Label>\n )}\n\n <Field.Control>\n <RACSlider {...props} style={{ height: '100%' }}>\n <div className={clsx(styles['sapphire-slider'])} role=\"slider\">\n <RACSliderTrack\n className={({ isDisabled }) =>\n clsx(styles['sapphire-slider__track'], {\n [styles['is-disabled']]: isDisabled,\n })\n }\n >\n {({ state }) => (\n <>\n <div\n className={clsx(\n styles['sapphire-slider__track-remaining']\n )}\n />\n <div\n className={clsx(styles['sapphire-slider__track-fill'])}\n style={{ width: state.getThumbPercent(0) * 100 + '%' }}\n />\n <RACSliderThumb\n name={name}\n className={(state) =>\n clsx(styles['sapphire-slider__thumb'], {\n [styles['is-focus']]: state.isFocusVisible,\n })\n }\n style={({ state }) => {\n // Pad the thumb position, so it doesn't go over the track\n const percent = Math.min(\n 3 + state.getThumbPercent(0) * 94,\n 100\n );\n return {\n left: `${percent}%`,\n };\n }}\n />\n </>\n )}\n </RACSliderTrack>\n </div>\n </RACSlider>\n </Field.Control>\n\n {note && <Field.Footer>{note}</Field.Footer>}\n </Field.Context>\n </Field>\n );\n};\n"],"names":["RACSlider","RACSliderTrack","RACSliderThumb"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Slider.js","sources":["../../../../src/Slider/src/Slider.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/slider/slider.module.css';\nimport {\n useThemeCheck,\n useSapphireStyleProps,\n Label,\n SapphireStyleProps,\n Field,\n FieldProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport {\n Slider as RACSlider,\n SliderProps as RACSliderProps,\n SliderThumb as RACSliderThumb,\n SliderThumbProps as RACSliderThumbProps,\n SliderTrack as RACSliderTrack,\n} from 'react-aria-components';\nimport React from 'react';\n\nexport type SliderProps = {\n label?: ReactNode;\n /**\n * A note to show below the slider.\n * Use {@Link Slider.Note} to render the note.\n */\n note?: ReactNode;\n} & SapphireStyleProps &\n GlobalDomAttributes &\n Pick<FieldProps, 'labelPlacement'> &\n Pick<\n RACSliderProps<number>, // We're only supporting sliders with one end\n | 'isDisabled'\n | 'minValue'\n | 'maxValue'\n | 'step'\n | 'value'\n | 'defaultValue'\n | 'aria-label'\n | 'onChange'\n | 'onChangeEnd'\n > &\n Pick<RACSliderThumbProps, 'name'>;\n\nexport const Slider = ({\n label,\n labelPlacement = 'above',\n note,\n name,\n ...props\n}: SliderProps): JSX.Element => {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n\n return (\n <Field {...styleProps} labelPlacement={labelPlacement}>\n <Field.Context>\n {label && (\n <Field.Label>\n <Label>{label}</Label>\n </Field.Label>\n )}\n\n <Field.Control>\n <RACSlider {...props} style={{ height: '100%' }}>\n <div className={clsx(styles['sapphire-slider'])} role=\"slider\">\n <RACSliderTrack\n className={({ isDisabled }) =>\n clsx(styles['sapphire-slider__track'], {\n [styles['is-disabled']]: isDisabled,\n })\n }\n >\n {({ state }) => (\n <>\n <div\n className={clsx(\n styles['sapphire-slider__track-remaining']\n )}\n />\n <div\n className={clsx(styles['sapphire-slider__track-fill'])}\n style={{ width: state.getThumbPercent(0) * 100 + '%' }}\n />\n <RACSliderThumb\n name={name}\n className={(state) =>\n clsx(styles['sapphire-slider__thumb'], {\n [styles['is-focus']]: state.isFocusVisible,\n })\n }\n style={({ state }) => {\n // Pad the thumb position, so it doesn't go over the track\n const percent = Math.min(\n 3 + state.getThumbPercent(0) * 94,\n 100\n );\n return {\n left: `${percent}%`,\n };\n }}\n />\n </>\n )}\n </RACSliderTrack>\n </div>\n </RACSlider>\n </Field.Control>\n\n {note && <Field.Footer>{note}</Field.Footer>}\n </Field.Context>\n </Field>\n );\n};\n"],"names":["RACSlider","RACSliderTrack","RACSliderThumb","state"],"mappings":";;;;;;AA6CO,MAAM,SAAS,CAAC;AAAA,EACrB,KAAA;AAAA,EACA,cAAA,GAAiB,OAAA;AAAA,EACjB,IAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAgC;AAC9B,EAAA,aAAA,EAAc;AACd,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,qBAAA,CAAsB,KAAK,CAAA;AAElD,EAAA,2CACG,KAAA,EAAA,EAAO,GAAG,YAAY,cAAA,EAAA,kBACrB,KAAA,CAAA,aAAA,CAAC,MAAM,OAAA,EAAN,IAAA,EACE,KAAA,oBACC,KAAA,CAAA,aAAA,CAAC,MAAM,KAAA,EAAN,IAAA,sCACE,KAAA,EAAA,IAAA,EAAO,KAAM,CAChB,CAAA,kBAGF,KAAA,CAAA,aAAA,CAAC,KAAA,CAAM,OAAA,EAAN,sBACC,KAAA,CAAA,aAAA,CAACA,QAAA,EAAA,EAAW,GAAG,KAAA,EAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,sBACrC,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,WAAW,IAAA,CAAK,MAAA,CAAO,iBAAiB,CAAC,CAAA,EAAG,MAAK,QAAA,EAAA,kBACpD,KAAA,CAAA,aAAA;AAAA,IAACC,WAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,CAAC,EAAE,UAAA,OACZ,IAAA,CAAK,MAAA,CAAO,wBAAwB,CAAA,EAAG;AAAA,QACrC,CAAC,MAAA,CAAO,aAAa,CAAC,GAAG;AAAA,OAC1B;AAAA,KAAA;AAAA,IAGF,CAAC,EAAE,KAAA,EAAM,qBACR,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA;AAAA,UACT,OAAO,kCAAkC;AAAA;AAC3C;AAAA,KACF,kBACA,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,6BAA6B,CAAC,CAAA;AAAA,QACrD,KAAA,EAAO,EAAE,KAAA,EAAO,KAAA,CAAM,gBAAgB,CAAC,CAAA,GAAI,MAAM,GAAA;AAAI;AAAA,KACvD,kBACA,KAAA,CAAA,aAAA;AAAA,MAACC,WAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,WAAW,CAACC,MAAAA,KACV,IAAA,CAAK,MAAA,CAAO,wBAAwB,CAAA,EAAG;AAAA,UACrC,CAAC,MAAA,CAAO,UAAU,CAAC,GAAGA,MAAAA,CAAM;AAAA,SAC7B,CAAA;AAAA,QAEH,KAAA,EAAO,CAAC,EAAE,KAAA,EAAAA,QAAM,KAAM;AAEpB,UAAA,MAAM,UAAU,IAAA,CAAK,GAAA;AAAA,YACnB,CAAA,GAAIA,MAAAA,CAAM,eAAA,CAAgB,CAAC,CAAA,GAAI,EAAA;AAAA,YAC/B;AAAA,WACF;AACA,UAAA,OAAO;AAAA,YACL,IAAA,EAAM,GAAG,OAAO,CAAA,CAAA;AAAA,WAClB;AAAA,QACF;AAAA;AAAA,KAEJ;AAAA,GAGN,CACF,CACF,CAAA,EAEC,IAAA,oBAAQ,KAAA,CAAA,aAAA,CAAC,KAAA,CAAM,MAAA,EAAN,IAAA,EAAc,IAAK,CAC/B,CACF,CAAA;AAEJ;;;;"}
|
|
@@ -3,110 +3,94 @@ import clsx from 'clsx';
|
|
|
3
3
|
import { useButton } from '@react-aria/button';
|
|
4
4
|
import { useHover } from '@react-aria/interactions';
|
|
5
5
|
import { useTag } from '@react-aria/tag';
|
|
6
|
-
import {
|
|
6
|
+
import { mergeProps, mergeRefs } from '@react-aria/utils';
|
|
7
7
|
import { useThemeCheck, TooltipIfNeeded, Icon } from '@danske/sapphire-react';
|
|
8
|
-
import {
|
|
8
|
+
import { Error, Close } from '@danske/sapphire-icons/react';
|
|
9
9
|
import styles from '@danske/sapphire-css/components/tag/tag.module.css';
|
|
10
10
|
import { FocusRing } from '@react-aria/focus';
|
|
11
11
|
|
|
12
|
-
var __defProp = Object.defineProperty;
|
|
13
|
-
var __defProps = Object.defineProperties;
|
|
14
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
15
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
16
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
17
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
18
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
19
|
-
var __spreadValues = (a, b) => {
|
|
20
|
-
for (var prop in b || (b = {}))
|
|
21
|
-
if (__hasOwnProp.call(b, prop))
|
|
22
|
-
__defNormalProp(a, prop, b[prop]);
|
|
23
|
-
if (__getOwnPropSymbols)
|
|
24
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
25
|
-
if (__propIsEnum.call(b, prop))
|
|
26
|
-
__defNormalProp(a, prop, b[prop]);
|
|
27
|
-
}
|
|
28
|
-
return a;
|
|
29
|
-
};
|
|
30
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
31
|
-
var __objRest = (source, exclude) => {
|
|
32
|
-
var target = {};
|
|
33
|
-
for (var prop in source)
|
|
34
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
35
|
-
target[prop] = source[prop];
|
|
36
|
-
if (source != null && __getOwnPropSymbols)
|
|
37
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
38
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
39
|
-
target[prop] = source[prop];
|
|
40
|
-
}
|
|
41
|
-
return target;
|
|
42
|
-
};
|
|
43
12
|
function Tag(props) {
|
|
44
13
|
useThemeCheck();
|
|
45
14
|
const { hasError = false, item, state } = props;
|
|
46
15
|
const ref = useRef(null);
|
|
47
|
-
const
|
|
16
|
+
const {
|
|
48
17
|
gridCellProps,
|
|
49
18
|
isDisabled,
|
|
50
19
|
isFocused,
|
|
51
20
|
isPressed,
|
|
52
21
|
removeButtonProps,
|
|
53
|
-
rowProps:
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
"isDisabled",
|
|
57
|
-
"isFocused",
|
|
58
|
-
"isPressed",
|
|
59
|
-
"removeButtonProps",
|
|
60
|
-
"rowProps"
|
|
61
|
-
]);
|
|
22
|
+
rowProps: { onKeyDown, ...rowProps },
|
|
23
|
+
...otherProps
|
|
24
|
+
} = useTag(props, state, ref);
|
|
62
25
|
const { hoverProps, isHovered } = useHover({ isDisabled });
|
|
63
26
|
const hasAction = otherProps.hasAction;
|
|
64
|
-
return /* @__PURE__ */ React.createElement(TooltipIfNeeded, {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
27
|
+
return /* @__PURE__ */ React.createElement(TooltipIfNeeded, { title: item.rendered }, (tooltipRef, tooltipProps) => {
|
|
28
|
+
const { ref: tooltipTargetRef, ...restTooltipProps } = tooltipProps || {};
|
|
29
|
+
return /* @__PURE__ */ React.createElement(FocusRing, { focusRingClass: styles["is-focus"] }, /* @__PURE__ */ React.createElement(
|
|
30
|
+
"div",
|
|
31
|
+
{
|
|
32
|
+
ref: mergeRefs(ref, tooltipTargetRef),
|
|
33
|
+
...mergeProps(
|
|
34
|
+
{
|
|
35
|
+
onKeyDown: (e) => {
|
|
36
|
+
if (e.key !== " ") {
|
|
37
|
+
onKeyDown?.(e);
|
|
38
|
+
} else {
|
|
39
|
+
e.preventDefault();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
rowProps,
|
|
44
|
+
hoverProps,
|
|
45
|
+
restTooltipProps
|
|
46
|
+
),
|
|
47
|
+
className: clsx(
|
|
48
|
+
styles["sapphire-tag"],
|
|
49
|
+
styles["js-focus"],
|
|
50
|
+
styles["js-hover"],
|
|
51
|
+
{
|
|
52
|
+
[styles["sapphire-tag--actionable"]]: hasAction,
|
|
53
|
+
[styles["is-active"]]: hasAction && isPressed,
|
|
54
|
+
[styles["is-hover"]]: hasAction && isHovered,
|
|
55
|
+
[styles["is-disabled"]]: isDisabled
|
|
56
|
+
}
|
|
57
|
+
),
|
|
58
|
+
...hasError ? { "aria-invalid": true } : {}
|
|
59
|
+
},
|
|
60
|
+
/* @__PURE__ */ React.createElement(
|
|
61
|
+
"div",
|
|
62
|
+
{
|
|
63
|
+
...gridCellProps,
|
|
64
|
+
className: styles["sapphire-tag__content"]
|
|
65
|
+
},
|
|
66
|
+
hasError && !isDisabled && /* @__PURE__ */ React.createElement(IconError, null),
|
|
67
|
+
/* @__PURE__ */ React.createElement(
|
|
68
|
+
"span",
|
|
69
|
+
{
|
|
70
|
+
ref: tooltipRef,
|
|
71
|
+
className: styles["sapphire-tag__label"]
|
|
72
|
+
},
|
|
73
|
+
item.rendered
|
|
74
|
+
),
|
|
75
|
+
!isDisabled && props.allowsRemoving && /* @__PURE__ */ React.createElement(RemoveButton, { ...removeButtonProps })
|
|
76
|
+
)
|
|
77
|
+
));
|
|
93
78
|
});
|
|
94
79
|
}
|
|
95
80
|
function RemoveButton(removeButtonProps) {
|
|
96
81
|
const buttonRef = useRef(null);
|
|
97
82
|
const { buttonProps } = useButton(removeButtonProps, buttonRef);
|
|
98
|
-
return /* @__PURE__ */ React.createElement(
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
83
|
+
return /* @__PURE__ */ React.createElement(
|
|
84
|
+
"button",
|
|
85
|
+
{
|
|
86
|
+
...buttonProps,
|
|
87
|
+
className: clsx(styles["sapphire-tag__button"], styles["js-focus"])
|
|
88
|
+
},
|
|
89
|
+
/* @__PURE__ */ React.createElement(Icon, { size: "sm" }, /* @__PURE__ */ React.createElement(Close, null))
|
|
90
|
+
);
|
|
103
91
|
}
|
|
104
92
|
const IconError = () => {
|
|
105
|
-
return /* @__PURE__ */ React.createElement("span", {
|
|
106
|
-
className: clsx(styles["sapphire-tag__error-icon"])
|
|
107
|
-
}, /* @__PURE__ */ React.createElement(Icon, {
|
|
108
|
-
size: "sm"
|
|
109
|
-
}, /* @__PURE__ */ React.createElement(Error, null)));
|
|
93
|
+
return /* @__PURE__ */ React.createElement("span", { className: clsx(styles["sapphire-tag__error-icon"]) }, /* @__PURE__ */ React.createElement(Icon, { size: "sm" }, /* @__PURE__ */ React.createElement(Error, null)));
|
|
110
94
|
};
|
|
111
95
|
|
|
112
96
|
export { Tag };
|