@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
|
@@ -5,25 +5,6 @@ import { useThemeCheck, useSapphireStyleProps } from '@danske/sapphire-react';
|
|
|
5
5
|
import { useProgressBar } from '@react-aria/progress';
|
|
6
6
|
import { filterDOMProps } from '@react-aria/utils';
|
|
7
7
|
|
|
8
|
-
var __defProp = Object.defineProperty;
|
|
9
|
-
var __defProps = Object.defineProperties;
|
|
10
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
11
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
12
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
13
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
14
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
15
|
-
var __spreadValues = (a, b) => {
|
|
16
|
-
for (var prop in b || (b = {}))
|
|
17
|
-
if (__hasOwnProp.call(b, prop))
|
|
18
|
-
__defNormalProp(a, prop, b[prop]);
|
|
19
|
-
if (__getOwnPropSymbols)
|
|
20
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
21
|
-
if (__propIsEnum.call(b, prop))
|
|
22
|
-
__defNormalProp(a, prop, b[prop]);
|
|
23
|
-
}
|
|
24
|
-
return a;
|
|
25
|
-
};
|
|
26
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
27
8
|
const ProgressIndicator = (props) => {
|
|
28
9
|
const {
|
|
29
10
|
maxValue = 100,
|
|
@@ -33,25 +14,32 @@ const ProgressIndicator = (props) => {
|
|
|
33
14
|
} = props;
|
|
34
15
|
useThemeCheck();
|
|
35
16
|
const { styleProps } = useSapphireStyleProps(props);
|
|
36
|
-
const { progressBarProps } = useProgressBar(
|
|
17
|
+
const { progressBarProps } = useProgressBar({
|
|
18
|
+
...props,
|
|
37
19
|
minValue: 0,
|
|
38
20
|
valueLabel: ariaValueText
|
|
39
|
-
})
|
|
21
|
+
});
|
|
40
22
|
const minValue = 0;
|
|
41
23
|
const value = Math.min(Math.max(realValue, minValue), maxValue);
|
|
42
24
|
const widthPercentage = value / maxValue * 100;
|
|
43
|
-
return /* @__PURE__ */ React.createElement(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
25
|
+
return /* @__PURE__ */ React.createElement(
|
|
26
|
+
"div",
|
|
27
|
+
{
|
|
28
|
+
...filterDOMProps(props, { global: true }),
|
|
29
|
+
className: clsx(styles["sapphire-progress"])
|
|
30
|
+
},
|
|
31
|
+
/* @__PURE__ */ React.createElement(
|
|
32
|
+
"div",
|
|
33
|
+
{
|
|
34
|
+
...progressBarProps,
|
|
35
|
+
className: styles["sapphire-progress--indicator"],
|
|
36
|
+
style: { ...styleProps, width: `${widthPercentage}%` },
|
|
37
|
+
"aria-label": "aria-label" in props ? props["aria-label"] : void 0,
|
|
38
|
+
"aria-labelledby": "aria-labelledby" in props ? props["aria-labelledby"] : void 0
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
segments > 1 && /* @__PURE__ */ React.createElement("div", { className: styles["sapphire-progress--segments"] }, Array.from({ length: segments }, (_, index) => /* @__PURE__ */ React.createElement("span", { key: index })))
|
|
42
|
+
);
|
|
55
43
|
};
|
|
56
44
|
|
|
57
45
|
export { ProgressIndicator };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressIndicator.js","sources":["../../../../src/ProgressIndicator/src/ProgressIndicator.tsx"],"sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/progressIndicator/progressIndicator.module.css';\nimport {\n SapphireStyleProps,\n useThemeCheck,\n useSapphireStyleProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { useProgressBar } from '@react-aria/progress';\nimport { filterDOMProps } from '@react-aria/utils';\n\nexport type ProgressIndicatorProps = {\n /**\n * The maximum value for the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuemax\n *\n * @default 100\n */\n maxValue?: number;\n\n /**\n * The current value of the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuenow\n */\n value: number;\n\n /**\n * Defines how many segments the progress bar will have.\n *\n * @default 1\n */\n segments?: number;\n\n /**\n * Human-readable text alternative for the current value of the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuetext\n */\n 'aria-valuetext'?: string;\n} & SapphireStyleProps &\n GlobalDomAttributes &\n ({ 'aria-labelledby': string } | { 'aria-label': string });\n\nexport const ProgressIndicator = (\n props: ProgressIndicatorProps\n): JSX.Element => {\n const {\n maxValue = 100,\n value: realValue,\n segments = 1,\n 'aria-valuetext': ariaValueText,\n } = props;\n\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const { progressBarProps } = useProgressBar({\n ...props,\n minValue: 0,\n valueLabel: ariaValueText,\n });\n\n const minValue = 0;\n\n const value = Math.min(Math.max(realValue, minValue), maxValue);\n const widthPercentage = (value / maxValue) * 100;\n\n return (\n <div\n {...filterDOMProps(props, { global: true })}\n className={clsx(styles['sapphire-progress'])}\n >\n <div\n {...progressBarProps}\n className={styles['sapphire-progress--indicator']}\n style={{ ...styleProps, width: `${widthPercentage}%` }}\n aria-label={'aria-label' in props ? props['aria-label'] : undefined}\n aria-labelledby={\n 'aria-labelledby' in props ? props['aria-labelledby'] : undefined\n }\n />\n {segments > 1 && (\n <div className={styles['sapphire-progress--segments']}>\n {Array.from({ length: segments }, (_, index) => (\n <span key={index}></span>\n ))}\n </div>\n )}\n </div>\n );\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProgressIndicator.js","sources":["../../../../src/ProgressIndicator/src/ProgressIndicator.tsx"],"sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/progressIndicator/progressIndicator.module.css';\nimport {\n SapphireStyleProps,\n useThemeCheck,\n useSapphireStyleProps,\n GlobalDomAttributes,\n} from '@danske/sapphire-react';\nimport { useProgressBar } from '@react-aria/progress';\nimport { filterDOMProps } from '@react-aria/utils';\n\nexport type ProgressIndicatorProps = {\n /**\n * The maximum value for the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuemax\n *\n * @default 100\n */\n maxValue?: number;\n\n /**\n * The current value of the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuenow\n */\n value: number;\n\n /**\n * Defines how many segments the progress bar will have.\n *\n * @default 1\n */\n segments?: number;\n\n /**\n * Human-readable text alternative for the current value of the progress bar. Will be used as:\n * https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-valuetext\n */\n 'aria-valuetext'?: string;\n} & SapphireStyleProps &\n GlobalDomAttributes &\n ({ 'aria-labelledby': string } | { 'aria-label': string });\n\nexport const ProgressIndicator = (\n props: ProgressIndicatorProps\n): JSX.Element => {\n const {\n maxValue = 100,\n value: realValue,\n segments = 1,\n 'aria-valuetext': ariaValueText,\n } = props;\n\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n const { progressBarProps } = useProgressBar({\n ...props,\n minValue: 0,\n valueLabel: ariaValueText,\n });\n\n const minValue = 0;\n\n const value = Math.min(Math.max(realValue, minValue), maxValue);\n const widthPercentage = (value / maxValue) * 100;\n\n return (\n <div\n {...filterDOMProps(props, { global: true })}\n className={clsx(styles['sapphire-progress'])}\n >\n <div\n {...progressBarProps}\n className={styles['sapphire-progress--indicator']}\n style={{ ...styleProps, width: `${widthPercentage}%` }}\n aria-label={'aria-label' in props ? props['aria-label'] : undefined}\n aria-labelledby={\n 'aria-labelledby' in props ? props['aria-labelledby'] : undefined\n }\n />\n {segments > 1 && (\n <div className={styles['sapphire-progress--segments']}>\n {Array.from({ length: segments }, (_, index) => (\n <span key={index}></span>\n ))}\n </div>\n )}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;AA2CO,MAAM,iBAAA,GAAoB,CAC/B,KAAA,KACgB;AAChB,EAAA,MAAM;AAAA,IACJ,QAAA,GAAW,GAAA;AAAA,IACX,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,GAAW,CAAA;AAAA,IACX,gBAAA,EAAkB;AAAA,GACpB,GAAI,KAAA;AAEJ,EAAA,aAAA,EAAc;AACd,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,qBAAA,CAAsB,KAAK,CAAA;AAClD,EAAA,MAAM,EAAE,gBAAA,EAAiB,GAAI,cAAA,CAAe;AAAA,IAC1C,GAAG,KAAA;AAAA,IACH,QAAA,EAAU,CAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACb,CAAA;AAED,EAAA,MAAM,QAAA,GAAW,CAAA;AAEjB,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,SAAA,EAAW,QAAQ,GAAG,QAAQ,CAAA;AAC9D,EAAA,MAAM,eAAA,GAAmB,QAAQ,QAAA,GAAY,GAAA;AAE7C,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,cAAA,CAAe,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA,MAC1C,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,mBAAmB,CAAC;AAAA,KAAA;AAAA,oBAE3C,KAAA,CAAA,aAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACE,GAAG,gBAAA;AAAA,QACJ,SAAA,EAAW,OAAO,8BAA8B,CAAA;AAAA,QAChD,OAAO,EAAE,GAAG,YAAY,KAAA,EAAO,CAAA,EAAG,eAAe,CAAA,CAAA,CAAA,EAAI;AAAA,QACrD,YAAA,EAAY,YAAA,IAAgB,KAAA,GAAQ,KAAA,CAAM,YAAY,CAAA,GAAI,MAAA;AAAA,QAC1D,iBAAA,EACE,iBAAA,IAAqB,KAAA,GAAQ,KAAA,CAAM,iBAAiB,CAAA,GAAI;AAAA;AAAA,KAE5D;AAAA,IACC,QAAA,GAAW,qBACV,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,WAAW,MAAA,CAAO,6BAA6B,CAAA,EAAA,EACjD,KAAA,CAAM,IAAA,CAAK,EAAE,QAAQ,QAAA,EAAS,EAAG,CAAC,CAAA,EAAG,KAAA,yCACnC,MAAA,EAAA,EAAK,GAAA,EAAK,KAAA,EAAO,CACnB,CACH;AAAA,GAEJ;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/Sidebar/index.ts"],"sourcesContent":["import { Sidebar } from './src/Sidebar';\nimport { SidebarHeader } from './src/Header';\nimport { SidebarItem } from './src/Item';\nimport { SidebarExpandableItem } from './src/ExpandableItem';\nimport { SidebarSection } from './src/Section';\nimport { SidebarBody } from './src/Body';\nimport { SidebarList } from './src/List';\nimport { ResponsiveSidebarProvider } from './src/ResponsiveSidebarContext';\nimport { SidebarPanelTrigger } from './src/Panel';\n\nconst _Sidebar = Object.assign(Sidebar, {\n ResponsiveProvider: ResponsiveSidebarProvider,\n Header: SidebarHeader,\n Body: SidebarBody,\n List: SidebarList,\n Item: SidebarItem,\n ExpandableItem: SidebarExpandableItem,\n Section: SidebarSection,\n PanelTrigger: SidebarPanelTrigger,\n});\n\nexport { _Sidebar as Sidebar };\nexport { type SidebarProps } from './src/Sidebar';\nexport { type SidebarItemProps } from './src/Item';\nexport { type SidebarExpandableItemProps } from './src/ExpandableItem';\nexport { type SidebarSectionProps } from './src/Section';\nexport { type SidebarBodyProps } from './src/Body';\nexport { type SidebarListProps } from './src/List';\nexport { type SidebarHeaderProps } from './src/Header';\n"],"names":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/Sidebar/index.ts"],"sourcesContent":["import { Sidebar } from './src/Sidebar';\nimport { SidebarHeader } from './src/Header';\nimport { SidebarItem } from './src/Item';\nimport { SidebarExpandableItem } from './src/ExpandableItem';\nimport { SidebarSection } from './src/Section';\nimport { SidebarBody } from './src/Body';\nimport { SidebarList } from './src/List';\nimport { ResponsiveSidebarProvider } from './src/ResponsiveSidebarContext';\nimport { SidebarPanelTrigger } from './src/Panel';\n\nconst _Sidebar = Object.assign(Sidebar, {\n ResponsiveProvider: ResponsiveSidebarProvider,\n Header: SidebarHeader,\n Body: SidebarBody,\n List: SidebarList,\n Item: SidebarItem,\n ExpandableItem: SidebarExpandableItem,\n Section: SidebarSection,\n PanelTrigger: SidebarPanelTrigger,\n});\n\nexport { _Sidebar as Sidebar };\nexport { type SidebarProps } from './src/Sidebar';\nexport { type SidebarItemProps } from './src/Item';\nexport { type SidebarExpandableItemProps } from './src/ExpandableItem';\nexport { type SidebarSectionProps } from './src/Section';\nexport { type SidebarBodyProps } from './src/Body';\nexport { type SidebarListProps } from './src/List';\nexport { type SidebarHeaderProps } from './src/Header';\n"],"names":[],"mappings":";;;;;;;;;;AAUA,MAAM,QAAA,GAAW,MAAA,CAAO,MAAA,CAAO,OAAA,EAAS;AAAA,EACtC,kBAAA,EAAoB,yBAAA;AAAA,EACpB,MAAA,EAAQ,aAAA;AAAA,EACR,IAAA,EAAM,WAAA;AAAA,EACN,IAAA,EAAM,WAAA;AAAA,EACN,IAAA,EAAM,WAAA;AAAA,EACN,cAAA,EAAgB,qBAAA;AAAA,EAChB,OAAA,EAAS,cAAA;AAAA,EACT,YAAA,EAAc;AAChB,CAAC;;;;"}
|
|
@@ -4,52 +4,27 @@ import { filterDOMProps } from '@react-aria/utils';
|
|
|
4
4
|
import styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';
|
|
5
5
|
import { useScrollCheck } from '@danske/sapphire-react';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var __spreadValues = (a, b) => {
|
|
13
|
-
for (var prop in b || (b = {}))
|
|
14
|
-
if (__hasOwnProp.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
if (__getOwnPropSymbols)
|
|
17
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
18
|
-
if (__propIsEnum.call(b, prop))
|
|
19
|
-
__defNormalProp(a, prop, b[prop]);
|
|
20
|
-
}
|
|
21
|
-
return a;
|
|
22
|
-
};
|
|
23
|
-
var __objRest = (source, exclude) => {
|
|
24
|
-
var target = {};
|
|
25
|
-
for (var prop in source)
|
|
26
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
27
|
-
target[prop] = source[prop];
|
|
28
|
-
if (source != null && __getOwnPropSymbols)
|
|
29
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
30
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
31
|
-
target[prop] = source[prop];
|
|
32
|
-
}
|
|
33
|
-
return target;
|
|
34
|
-
};
|
|
35
|
-
const SidebarBody = (_a) => {
|
|
36
|
-
var _b = _a, {
|
|
37
|
-
elementType = "nav",
|
|
38
|
-
children
|
|
39
|
-
} = _b, props = __objRest(_b, [
|
|
40
|
-
"elementType",
|
|
41
|
-
"children"
|
|
42
|
-
]);
|
|
7
|
+
const SidebarBody = ({
|
|
8
|
+
elementType = "nav",
|
|
9
|
+
children,
|
|
10
|
+
...props
|
|
11
|
+
}) => {
|
|
43
12
|
const RootNode = elementType;
|
|
44
13
|
const sidebarBody = useRef(null);
|
|
45
14
|
const { isScrolled, scrollCheckProps } = useScrollCheck(sidebarBody);
|
|
46
|
-
return /* @__PURE__ */ React.createElement(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
15
|
+
return /* @__PURE__ */ React.createElement(
|
|
16
|
+
RootNode,
|
|
17
|
+
{
|
|
18
|
+
ref: sidebarBody,
|
|
19
|
+
tabIndex: -1,
|
|
20
|
+
className: clsx(styles["sapphire-sidebar__body"], {
|
|
21
|
+
[styles["sapphire-sidebar__body--scrolled"]]: isScrolled
|
|
22
|
+
}),
|
|
23
|
+
...filterDOMProps(props, { global: true }),
|
|
24
|
+
...scrollCheckProps
|
|
25
|
+
},
|
|
26
|
+
children
|
|
27
|
+
);
|
|
53
28
|
};
|
|
54
29
|
|
|
55
30
|
export { SidebarBody };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Body.js","sources":["../../../../src/Sidebar/src/Body.tsx"],"sourcesContent":["import React, { ReactNode, useRef } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport { useScrollCheck } from '@danske/sapphire-react';\n\nexport interface SidebarBodyProps extends DOMProps {\n /**\n * Wrapping element type.\n * @default 'nav'\n */\n elementType?: string;\n children?: ReactNode;\n}\n\nexport const SidebarBody = ({\n elementType = 'nav',\n children,\n ...props\n}: SidebarBodyProps): React.JSX.Element => {\n const RootNode = elementType as any;\n const sidebarBody = useRef<HTMLElement>(null);\n const { isScrolled, scrollCheckProps } = useScrollCheck(sidebarBody);\n\n return (\n <RootNode\n ref={sidebarBody}\n tabIndex={\n -1 /* Some browsers will make this focusable because it overflows */\n }\n className={clsx(styles['sapphire-sidebar__body'], {\n [styles['sapphire-sidebar__body--scrolled']]: isScrolled,\n })}\n {...filterDOMProps(props, { global: true })}\n {...scrollCheckProps}\n >\n {children}\n </RootNode>\n );\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Body.js","sources":["../../../../src/Sidebar/src/Body.tsx"],"sourcesContent":["import React, { ReactNode, useRef } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport { useScrollCheck } from '@danske/sapphire-react';\n\nexport interface SidebarBodyProps extends DOMProps {\n /**\n * Wrapping element type.\n * @default 'nav'\n */\n elementType?: string;\n children?: ReactNode;\n}\n\nexport const SidebarBody = ({\n elementType = 'nav',\n children,\n ...props\n}: SidebarBodyProps): React.JSX.Element => {\n const RootNode = elementType as any;\n const sidebarBody = useRef<HTMLElement>(null);\n const { isScrolled, scrollCheckProps } = useScrollCheck(sidebarBody);\n\n return (\n <RootNode\n ref={sidebarBody}\n tabIndex={\n -1 /* Some browsers will make this focusable because it overflows */\n }\n className={clsx(styles['sapphire-sidebar__body'], {\n [styles['sapphire-sidebar__body--scrolled']]: isScrolled,\n })}\n {...filterDOMProps(props, { global: true })}\n {...scrollCheckProps}\n >\n {children}\n </RootNode>\n );\n};\n"],"names":[],"mappings":";;;;;;AAgBO,MAAM,cAAc,CAAC;AAAA,EAC1B,WAAA,GAAc,KAAA;AAAA,EACd,QAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA2C;AACzC,EAAA,MAAM,QAAA,GAAW,WAAA;AACjB,EAAA,MAAM,WAAA,GAAc,OAAoB,IAAI,CAAA;AAC5C,EAAA,MAAM,EAAE,UAAA,EAAY,gBAAA,EAAiB,GAAI,eAAe,WAAW,CAAA;AAEnE,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,WAAA;AAAA,MACL,QAAA,EACE,EAAA;AAAA,MAEF,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,wBAAwB,CAAA,EAAG;AAAA,QAChD,CAAC,MAAA,CAAO,kCAAkC,CAAC,GAAG;AAAA,OAC/C,CAAA;AAAA,MACA,GAAG,cAAA,CAAe,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA,MACzC,GAAG;AAAA,KAAA;AAAA,IAEH;AAAA,GACH;AAEJ;;;;"}
|
|
@@ -11,78 +11,56 @@ import { useSidebar } from './useSidebar.js';
|
|
|
11
11
|
import { useSecondarySidebarContext } from './SecondarySidebarContext.js';
|
|
12
12
|
import { useIsSidebarCollapsed } from './ResponsiveSidebarContext.js';
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
17
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
18
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
19
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
20
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
21
|
-
var __spreadValues = (a, b) => {
|
|
22
|
-
for (var prop in b || (b = {}))
|
|
23
|
-
if (__hasOwnProp.call(b, prop))
|
|
24
|
-
__defNormalProp(a, prop, b[prop]);
|
|
25
|
-
if (__getOwnPropSymbols)
|
|
26
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
27
|
-
if (__propIsEnum.call(b, prop))
|
|
28
|
-
__defNormalProp(a, prop, b[prop]);
|
|
29
|
-
}
|
|
30
|
-
return a;
|
|
31
|
-
};
|
|
32
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
33
|
-
var __objRest = (source, exclude) => {
|
|
34
|
-
var target = {};
|
|
35
|
-
for (var prop in source)
|
|
36
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
37
|
-
target[prop] = source[prop];
|
|
38
|
-
if (source != null && __getOwnPropSymbols)
|
|
39
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
40
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
41
|
-
target[prop] = source[prop];
|
|
42
|
-
}
|
|
43
|
-
return target;
|
|
44
|
-
};
|
|
45
|
-
const SidebarExpandableItem = React.forwardRef(function SidebarExpandableItem2(_a, ref) {
|
|
46
|
-
var _b = _a, {
|
|
14
|
+
const SidebarExpandableItem = React.forwardRef(
|
|
15
|
+
function SidebarExpandableItem2({
|
|
47
16
|
id,
|
|
48
17
|
isActive,
|
|
49
18
|
body,
|
|
50
19
|
header,
|
|
51
|
-
children
|
|
52
|
-
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
20
|
+
children,
|
|
21
|
+
...props
|
|
22
|
+
}, ref) {
|
|
23
|
+
const { openedId, setContent, themeVariant } = useSecondarySidebarContext();
|
|
24
|
+
const isCollapsed = useIsSidebarCollapsed();
|
|
25
|
+
const { getExpandableItemProps, secondarySidebarProps } = useSidebar();
|
|
26
|
+
const itemId = useId(id);
|
|
27
|
+
const isOpen = openedId === itemId;
|
|
28
|
+
useLayoutEffect(() => {
|
|
29
|
+
if (isOpen) {
|
|
30
|
+
setContent({ header, body });
|
|
31
|
+
}
|
|
32
|
+
}, [isOpen]);
|
|
33
|
+
return /* @__PURE__ */ React.createElement("li", { className: clsx(styles["sapphire-sidebar__nav-item"]) }, /* @__PURE__ */ React.createElement(
|
|
34
|
+
Button,
|
|
35
|
+
{
|
|
36
|
+
variant: "tertiary",
|
|
37
|
+
"aria-current": isActive || void 0,
|
|
38
|
+
ref,
|
|
39
|
+
...mergeProps(
|
|
40
|
+
getExpandableItemProps(itemId),
|
|
41
|
+
props
|
|
42
|
+
),
|
|
43
|
+
UNSAFE_className: clsx(
|
|
44
|
+
buttonStyles["sapphire-button--stretch-left-align"],
|
|
45
|
+
{
|
|
46
|
+
[buttonStyles["sapphire-button--selected"]]: isActive && !isOpen,
|
|
47
|
+
[buttonStyles["is-active"]]: isOpen
|
|
48
|
+
}
|
|
49
|
+
)
|
|
50
|
+
},
|
|
51
|
+
children
|
|
52
|
+
), /* @__PURE__ */ React.createElement(
|
|
53
|
+
SecondarySidebar,
|
|
54
|
+
{
|
|
55
|
+
isOpen: isOpen && !isCollapsed,
|
|
56
|
+
header,
|
|
57
|
+
themeVariant,
|
|
58
|
+
...secondarySidebarProps
|
|
59
|
+
},
|
|
60
|
+
body
|
|
61
|
+
));
|
|
62
|
+
}
|
|
63
|
+
);
|
|
86
64
|
const SecondarySidebar = ({
|
|
87
65
|
isOpen,
|
|
88
66
|
onClose,
|
|
@@ -95,38 +73,51 @@ const SecondarySidebar = ({
|
|
|
95
73
|
useEffect(() => {
|
|
96
74
|
const handleKeyDown = (e) => {
|
|
97
75
|
if (e.key === "Escape") {
|
|
98
|
-
onClose
|
|
76
|
+
onClose?.();
|
|
99
77
|
}
|
|
100
78
|
};
|
|
101
79
|
document.addEventListener("keydown", handleKeyDown);
|
|
102
80
|
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
103
81
|
}, [onClose]);
|
|
104
|
-
return /* @__PURE__ */ React.createElement(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
82
|
+
return /* @__PURE__ */ React.createElement(
|
|
83
|
+
Transition,
|
|
84
|
+
{
|
|
85
|
+
in: isOpen,
|
|
86
|
+
mountOnEnter: true,
|
|
87
|
+
nodeRef: ref,
|
|
88
|
+
unmountOnExit: true,
|
|
89
|
+
onExited: onCloseTransitionDone,
|
|
90
|
+
timeout: 200
|
|
91
|
+
},
|
|
92
|
+
(transitionState) => /* @__PURE__ */ React.createElement(
|
|
93
|
+
"div",
|
|
94
|
+
{
|
|
95
|
+
ref,
|
|
96
|
+
className: clsx(styles["sapphire-sidebar__secondary-container"], {
|
|
97
|
+
[styles["sapphire-sidebar--slide-in"]]: true,
|
|
98
|
+
[styles["sapphire-sidebar--slide-out"]]: transitionState === "exiting"
|
|
99
|
+
})
|
|
100
|
+
},
|
|
101
|
+
/* @__PURE__ */ React.createElement(FocusScope, { restoreFocus: true, autoFocus: true }, /* @__PURE__ */ React.createElement(
|
|
102
|
+
_Sidebar,
|
|
103
|
+
{
|
|
104
|
+
themeVariant,
|
|
105
|
+
closeOnBlurWithin: false,
|
|
106
|
+
header: /* @__PURE__ */ React.createElement(
|
|
107
|
+
_Sidebar.Header,
|
|
108
|
+
{
|
|
109
|
+
closeButtonProps: {
|
|
110
|
+
onPress: () => onClose?.()
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
header
|
|
114
|
+
),
|
|
115
|
+
panelHeader: null
|
|
116
|
+
},
|
|
117
|
+
children
|
|
118
|
+
))
|
|
119
|
+
)
|
|
120
|
+
);
|
|
130
121
|
};
|
|
131
122
|
|
|
132
123
|
export { SidebarExpandableItem };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpandableItem.js","sources":["../../../../src/Sidebar/src/ExpandableItem.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useLayoutEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport buttonStyles from '@danske/sapphire-css/components/button/button.module.css';\nimport { Button, ButtonProps, ThemeVariant } from '@danske/sapphire-react';\nimport { FocusScope } from '@react-aria/focus';\nimport { FocusableRef } from '@react-types/shared';\nimport { Transition } from 'react-transition-group';\nimport { Sidebar } from '..';\nimport { mergeProps, useId } from '@react-aria/utils';\nimport { useSidebar } from './useSidebar';\nimport { useSecondarySidebarContext } from './SecondarySidebarContext';\nimport { useIsSidebarCollapsed } from './ResponsiveSidebarContext';\n\nexport type SidebarExpandableItemProps = Omit<\n ButtonProps<'button'>,\n 'variant' | 'size' | 'elementType'\n> & {\n /**\n * If the link is currently active\n */\n isActive?: boolean;\n\n /**\n * The id of the group.\n * Used in `onSecondarySidebarChange` or when the sidebar is controlled\n */\n id?: string;\n\n /**\n * Heading used for secondary sidebar\n */\n header: ReactNode;\n\n /**\n * Subitems (secondary sidebar)\n */\n body: ReactNode;\n children?: ReactNode;\n};\n\nexport const SidebarExpandableItem = React.forwardRef(\n function SidebarExpandableItem(\n {\n id,\n isActive,\n body,\n header,\n children,\n ...props\n }: SidebarExpandableItemProps,\n ref: FocusableRef<HTMLAnchorElement>\n ): React.JSX.Element {\n const { openedId, setContent, themeVariant } = useSecondarySidebarContext();\n const isCollapsed = useIsSidebarCollapsed();\n const { getExpandableItemProps, secondarySidebarProps } = useSidebar();\n const itemId = useId(id);\n const isOpen = openedId === itemId;\n\n useLayoutEffect(() => {\n if (isOpen) {\n setContent({ header, body });\n }\n }, [isOpen]);\n\n return (\n <li className={clsx(styles['sapphire-sidebar__nav-item'])}>\n <Button\n variant=\"tertiary\"\n aria-current={isActive || undefined}\n ref={ref}\n {...mergeProps(\n getExpandableItemProps(itemId),\n props as ButtonProps<'button'>\n )}\n UNSAFE_className={clsx(\n buttonStyles['sapphire-button--stretch-left-align'],\n {\n [buttonStyles['sapphire-button--selected']]: isActive && !isOpen,\n [buttonStyles['is-active']]: isOpen,\n }\n )}\n >\n {children}\n </Button>\n <SecondarySidebar\n isOpen={isOpen && !isCollapsed}\n header={header}\n themeVariant={themeVariant}\n {...secondarySidebarProps}\n >\n {body}\n </SecondarySidebar>\n </li>\n );\n }\n);\n\nconst SecondarySidebar = ({\n isOpen,\n onClose,\n onCloseTransitionDone,\n themeVariant,\n header,\n children,\n}: {\n isOpen: boolean;\n onClose?: () => void;\n onCloseTransitionDone?: () => void;\n themeVariant?: ThemeVariant;\n header: ReactNode;\n children: ReactNode;\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [onClose]);\n\n return (\n <Transition\n in={isOpen}\n mountOnEnter\n nodeRef={ref}\n unmountOnExit\n onExited={onCloseTransitionDone}\n timeout={200}\n >\n {(transitionState) => (\n <div\n ref={ref}\n className={clsx(styles['sapphire-sidebar__secondary-container'], {\n [styles['sapphire-sidebar--slide-in']]: true,\n [styles['sapphire-sidebar--slide-out']]:\n transitionState === 'exiting',\n })}\n >\n <FocusScope restoreFocus autoFocus>\n <Sidebar\n themeVariant={themeVariant}\n closeOnBlurWithin={\n false /* no focus management on nested sidebars */\n }\n header={\n <Sidebar.Header\n closeButtonProps={{\n onPress: () => onClose?.(),\n }}\n >\n {header}\n </Sidebar.Header>\n }\n panelHeader={null}\n >\n {children}\n </Sidebar>\n </FocusScope>\n </div>\n )}\n </Transition>\n );\n};\n"],"names":["Sidebar"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExpandableItem.js","sources":["../../../../src/Sidebar/src/ExpandableItem.tsx"],"sourcesContent":["import React, { ReactNode, useEffect, useLayoutEffect, useRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport buttonStyles from '@danske/sapphire-css/components/button/button.module.css';\nimport { Button, ButtonProps, ThemeVariant } from '@danske/sapphire-react';\nimport { FocusScope } from '@react-aria/focus';\nimport { FocusableRef } from '@react-types/shared';\nimport { Transition } from 'react-transition-group';\nimport { Sidebar } from '..';\nimport { mergeProps, useId } from '@react-aria/utils';\nimport { useSidebar } from './useSidebar';\nimport { useSecondarySidebarContext } from './SecondarySidebarContext';\nimport { useIsSidebarCollapsed } from './ResponsiveSidebarContext';\n\nexport type SidebarExpandableItemProps = Omit<\n ButtonProps<'button'>,\n 'variant' | 'size' | 'elementType'\n> & {\n /**\n * If the link is currently active\n */\n isActive?: boolean;\n\n /**\n * The id of the group.\n * Used in `onSecondarySidebarChange` or when the sidebar is controlled\n */\n id?: string;\n\n /**\n * Heading used for secondary sidebar\n */\n header: ReactNode;\n\n /**\n * Subitems (secondary sidebar)\n */\n body: ReactNode;\n children?: ReactNode;\n};\n\nexport const SidebarExpandableItem = React.forwardRef(\n function SidebarExpandableItem(\n {\n id,\n isActive,\n body,\n header,\n children,\n ...props\n }: SidebarExpandableItemProps,\n ref: FocusableRef<HTMLAnchorElement>\n ): React.JSX.Element {\n const { openedId, setContent, themeVariant } = useSecondarySidebarContext();\n const isCollapsed = useIsSidebarCollapsed();\n const { getExpandableItemProps, secondarySidebarProps } = useSidebar();\n const itemId = useId(id);\n const isOpen = openedId === itemId;\n\n useLayoutEffect(() => {\n if (isOpen) {\n setContent({ header, body });\n }\n }, [isOpen]);\n\n return (\n <li className={clsx(styles['sapphire-sidebar__nav-item'])}>\n <Button\n variant=\"tertiary\"\n aria-current={isActive || undefined}\n ref={ref}\n {...mergeProps(\n getExpandableItemProps(itemId),\n props as ButtonProps<'button'>\n )}\n UNSAFE_className={clsx(\n buttonStyles['sapphire-button--stretch-left-align'],\n {\n [buttonStyles['sapphire-button--selected']]: isActive && !isOpen,\n [buttonStyles['is-active']]: isOpen,\n }\n )}\n >\n {children}\n </Button>\n <SecondarySidebar\n isOpen={isOpen && !isCollapsed}\n header={header}\n themeVariant={themeVariant}\n {...secondarySidebarProps}\n >\n {body}\n </SecondarySidebar>\n </li>\n );\n }\n);\n\nconst SecondarySidebar = ({\n isOpen,\n onClose,\n onCloseTransitionDone,\n themeVariant,\n header,\n children,\n}: {\n isOpen: boolean;\n onClose?: () => void;\n onCloseTransitionDone?: () => void;\n themeVariant?: ThemeVariant;\n header: ReactNode;\n children: ReactNode;\n}) => {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [onClose]);\n\n return (\n <Transition\n in={isOpen}\n mountOnEnter\n nodeRef={ref}\n unmountOnExit\n onExited={onCloseTransitionDone}\n timeout={200}\n >\n {(transitionState) => (\n <div\n ref={ref}\n className={clsx(styles['sapphire-sidebar__secondary-container'], {\n [styles['sapphire-sidebar--slide-in']]: true,\n [styles['sapphire-sidebar--slide-out']]:\n transitionState === 'exiting',\n })}\n >\n <FocusScope restoreFocus autoFocus>\n <Sidebar\n themeVariant={themeVariant}\n closeOnBlurWithin={\n false /* no focus management on nested sidebars */\n }\n header={\n <Sidebar.Header\n closeButtonProps={{\n onPress: () => onClose?.(),\n }}\n >\n {header}\n </Sidebar.Header>\n }\n panelHeader={null}\n >\n {children}\n </Sidebar>\n </FocusScope>\n </div>\n )}\n </Transition>\n );\n};\n"],"names":["SidebarExpandableItem","Sidebar"],"mappings":"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"}
|
|
@@ -5,50 +5,20 @@ import styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';
|
|
|
5
5
|
import { IconButton } from '@danske/sapphire-react';
|
|
6
6
|
import { CloseLarge } from '@danske/sapphire-icons/react';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (__getOwnPropSymbols)
|
|
20
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
21
|
-
if (__propIsEnum.call(b, prop))
|
|
22
|
-
__defNormalProp(a, prop, b[prop]);
|
|
23
|
-
}
|
|
24
|
-
return a;
|
|
25
|
-
};
|
|
26
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
27
|
-
var __objRest = (source, exclude) => {
|
|
28
|
-
var target = {};
|
|
29
|
-
for (var prop in source)
|
|
30
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
31
|
-
target[prop] = source[prop];
|
|
32
|
-
if (source != null && __getOwnPropSymbols)
|
|
33
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
34
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
35
|
-
target[prop] = source[prop];
|
|
36
|
-
}
|
|
37
|
-
return target;
|
|
38
|
-
};
|
|
39
|
-
const SidebarHeader = (_a) => {
|
|
40
|
-
var _b = _a, {
|
|
8
|
+
const SidebarHeader = ({
|
|
9
|
+
children,
|
|
10
|
+
closeButtonProps,
|
|
11
|
+
...props
|
|
12
|
+
}) => {
|
|
13
|
+
return /* @__PURE__ */ React.createElement(
|
|
14
|
+
"div",
|
|
15
|
+
{
|
|
16
|
+
...filterDOMProps(props),
|
|
17
|
+
className: clsx(styles["sapphire-sidebar__header"])
|
|
18
|
+
},
|
|
41
19
|
children,
|
|
42
|
-
closeButtonProps
|
|
43
|
-
|
|
44
|
-
"children",
|
|
45
|
-
"closeButtonProps"
|
|
46
|
-
]);
|
|
47
|
-
return /* @__PURE__ */ React.createElement("div", __spreadProps(__spreadValues({}, filterDOMProps(props)), {
|
|
48
|
-
className: clsx(styles["sapphire-sidebar__header"])
|
|
49
|
-
}), children, closeButtonProps && /* @__PURE__ */ React.createElement(IconButton, __spreadProps(__spreadValues({}, closeButtonProps), {
|
|
50
|
-
"aria-label": "Close"
|
|
51
|
-
}), /* @__PURE__ */ React.createElement(CloseLarge, null)));
|
|
20
|
+
closeButtonProps && /* @__PURE__ */ React.createElement(IconButton, { ...closeButtonProps, "aria-label": "Close" }, /* @__PURE__ */ React.createElement(CloseLarge, null))
|
|
21
|
+
);
|
|
52
22
|
};
|
|
53
23
|
|
|
54
24
|
export { SidebarHeader };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["../../../../src/Sidebar/src/Header.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport { IconButton, IconButtonProps } from '@danske/sapphire-react';\nimport { CloseLarge } from '@danske/sapphire-icons/react';\n\nexport interface SidebarHeaderProps extends DOMProps {\n children: ReactNode;\n /**\n * Props for the close button\n * If none provided, close button won't show\n */\n closeButtonProps?: Omit<\n IconButtonProps<'button'>,\n 'children' | 'aria-label' | 'aria-hidden'\n >;\n}\n\nexport const SidebarHeader = ({\n children,\n closeButtonProps,\n ...props\n}: SidebarHeaderProps): React.JSX.Element => {\n return (\n <div\n {...filterDOMProps(props)}\n className={clsx(styles['sapphire-sidebar__header'])}\n >\n {children}\n {closeButtonProps && (\n <IconButton {...closeButtonProps} aria-label=\"Close\">\n <CloseLarge />\n </IconButton>\n )}\n </div>\n );\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../../../src/Sidebar/src/Header.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport { filterDOMProps } from '@react-aria/utils';\nimport { DOMProps } from '@react-types/shared';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport { IconButton, IconButtonProps } from '@danske/sapphire-react';\nimport { CloseLarge } from '@danske/sapphire-icons/react';\n\nexport interface SidebarHeaderProps extends DOMProps {\n children: ReactNode;\n /**\n * Props for the close button\n * If none provided, close button won't show\n */\n closeButtonProps?: Omit<\n IconButtonProps<'button'>,\n 'children' | 'aria-label' | 'aria-hidden'\n >;\n}\n\nexport const SidebarHeader = ({\n children,\n closeButtonProps,\n ...props\n}: SidebarHeaderProps): React.JSX.Element => {\n return (\n <div\n {...filterDOMProps(props)}\n className={clsx(styles['sapphire-sidebar__header'])}\n >\n {children}\n {closeButtonProps && (\n <IconButton {...closeButtonProps} aria-label=\"Close\">\n <CloseLarge />\n </IconButton>\n )}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAoBO,MAAM,gBAAgB,CAAC;AAAA,EAC5B,QAAA;AAAA,EACA,gBAAA;AAAA,EACA,GAAG;AACL,CAAA,KAA6C;AAC3C,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,eAAe,KAAK,CAAA;AAAA,MACxB,SAAA,EAAW,IAAA,CAAK,MAAA,CAAO,0BAA0B,CAAC;AAAA,KAAA;AAAA,IAEjD,QAAA;AAAA,IACA,gBAAA,wCACE,UAAA,EAAA,EAAY,GAAG,kBAAkB,YAAA,EAAW,OAAA,EAAA,kBAC3C,KAAA,CAAA,aAAA,CAAC,UAAA,EAAA,IAAW,CACd;AAAA,GAEJ;AAEJ;;;;"}
|
|
@@ -6,50 +6,23 @@ import { Button } from '@danske/sapphire-react';
|
|
|
6
6
|
import { mergeProps } from '@react-aria/utils';
|
|
7
7
|
import { useSidebar } from './useSidebar.js';
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
var __defProps = Object.defineProperties;
|
|
11
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
12
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
13
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
15
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
16
|
-
var __spreadValues = (a, b) => {
|
|
17
|
-
for (var prop in b || (b = {}))
|
|
18
|
-
if (__hasOwnProp.call(b, prop))
|
|
19
|
-
__defNormalProp(a, prop, b[prop]);
|
|
20
|
-
if (__getOwnPropSymbols)
|
|
21
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
22
|
-
if (__propIsEnum.call(b, prop))
|
|
23
|
-
__defNormalProp(a, prop, b[prop]);
|
|
24
|
-
}
|
|
25
|
-
return a;
|
|
26
|
-
};
|
|
27
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
28
|
-
var __objRest = (source, exclude) => {
|
|
29
|
-
var target = {};
|
|
30
|
-
for (var prop in source)
|
|
31
|
-
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
32
|
-
target[prop] = source[prop];
|
|
33
|
-
if (source != null && __getOwnPropSymbols)
|
|
34
|
-
for (var prop of __getOwnPropSymbols(source)) {
|
|
35
|
-
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
36
|
-
target[prop] = source[prop];
|
|
37
|
-
}
|
|
38
|
-
return target;
|
|
39
|
-
};
|
|
40
|
-
const SidebarItem = React.forwardRef(function SidebarItem2(_a, ref) {
|
|
41
|
-
var _b = _a, { isActive, children } = _b, props = __objRest(_b, ["isActive", "children"]);
|
|
9
|
+
const SidebarItem = React.forwardRef(function SidebarItem2({ isActive, children, ...props }, ref) {
|
|
42
10
|
const { itemProps } = useSidebar();
|
|
43
|
-
return /* @__PURE__ */ React.createElement("li", {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
11
|
+
return /* @__PURE__ */ React.createElement("li", { className: clsx(styles["sapphire-sidebar__nav-item"]) }, /* @__PURE__ */ React.createElement(
|
|
12
|
+
Button,
|
|
13
|
+
{
|
|
14
|
+
ref,
|
|
15
|
+
variant: "tertiary",
|
|
16
|
+
elementType: "a",
|
|
17
|
+
"aria-current": isActive ? "page" : void 0,
|
|
18
|
+
...mergeProps(props, itemProps),
|
|
19
|
+
UNSAFE_className: clsx(
|
|
20
|
+
buttonStyles["sapphire-button--stretch-left-align"],
|
|
21
|
+
{ [buttonStyles["sapphire-button--selected"]]: isActive }
|
|
22
|
+
)
|
|
23
|
+
},
|
|
24
|
+
children
|
|
25
|
+
));
|
|
53
26
|
});
|
|
54
27
|
|
|
55
28
|
export { SidebarItem };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.js","sources":["../../../../src/Sidebar/src/Item.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport buttonStyles from '@danske/sapphire-css/components/button/button.module.css';\nimport { Button, ButtonProps } from '@danske/sapphire-react';\nimport { FocusableRef } from '@react-types/shared';\nimport { mergeProps } from '@react-aria/utils';\nimport { useSidebar } from './useSidebar';\n\nexport type SidebarItemProps = Omit<\n ButtonProps<'a'>,\n 'variant' | 'size' | 'elementType'\n> & {\n /**\n * If the link is currently active\n */\n isActive?: boolean;\n children?: ReactNode;\n};\n\nexport const SidebarItem = React.forwardRef(function SidebarItem(\n { isActive, children, ...props }: SidebarItemProps,\n ref: FocusableRef<HTMLAnchorElement>\n): React.JSX.Element {\n const { itemProps } = useSidebar();\n\n return (\n <li className={clsx(styles['sapphire-sidebar__nav-item'])}>\n <Button\n ref={ref}\n variant=\"tertiary\"\n elementType=\"a\"\n aria-current={isActive ? 'page' : undefined}\n {...mergeProps(props as ButtonProps<'a'>, itemProps)}\n UNSAFE_className={clsx(\n buttonStyles['sapphire-button--stretch-left-align'],\n { [buttonStyles['sapphire-button--selected']]: isActive }\n )}\n >\n {children}\n </Button>\n </li>\n );\n});\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Item.js","sources":["../../../../src/Sidebar/src/Item.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/sidebar/sidebar.module.css';\nimport buttonStyles from '@danske/sapphire-css/components/button/button.module.css';\nimport { Button, ButtonProps } from '@danske/sapphire-react';\nimport { FocusableRef } from '@react-types/shared';\nimport { mergeProps } from '@react-aria/utils';\nimport { useSidebar } from './useSidebar';\n\nexport type SidebarItemProps = Omit<\n ButtonProps<'a'>,\n 'variant' | 'size' | 'elementType'\n> & {\n /**\n * If the link is currently active\n */\n isActive?: boolean;\n children?: ReactNode;\n};\n\nexport const SidebarItem = React.forwardRef(function SidebarItem(\n { isActive, children, ...props }: SidebarItemProps,\n ref: FocusableRef<HTMLAnchorElement>\n): React.JSX.Element {\n const { itemProps } = useSidebar();\n\n return (\n <li className={clsx(styles['sapphire-sidebar__nav-item'])}>\n <Button\n ref={ref}\n variant=\"tertiary\"\n elementType=\"a\"\n aria-current={isActive ? 'page' : undefined}\n {...mergeProps(props as ButtonProps<'a'>, itemProps)}\n UNSAFE_className={clsx(\n buttonStyles['sapphire-button--stretch-left-align'],\n { [buttonStyles['sapphire-button--selected']]: isActive }\n )}\n >\n {children}\n </Button>\n </li>\n );\n});\n"],"names":["SidebarItem"],"mappings":";;;;;;;;AAoBO,MAAM,WAAA,GAAc,KAAA,CAAM,UAAA,CAAW,SAASA,YAAAA,CACnD,EAAE,QAAA,EAAU,QAAA,EAAU,GAAG,KAAA,EAAM,EAC/B,GAAA,EACmB;AACnB,EAAA,MAAM,EAAE,SAAA,EAAU,GAAI,UAAA,EAAW;AAEjC,EAAA,2CACG,IAAA,EAAA,EAAG,SAAA,EAAW,KAAK,MAAA,CAAO,4BAA4B,CAAC,CAAA,EAAA,kBACtD,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,OAAA,EAAQ,UAAA;AAAA,MACR,WAAA,EAAY,GAAA;AAAA,MACZ,cAAA,EAAc,WAAW,MAAA,GAAS,MAAA;AAAA,MACjC,GAAG,UAAA,CAAW,KAAA,EAA2B,SAAS,CAAA;AAAA,MACnD,gBAAA,EAAkB,IAAA;AAAA,QAChB,aAAa,qCAAqC,CAAA;AAAA,QAClD,EAAE,CAAC,YAAA,CAAa,2BAA2B,CAAC,GAAG,QAAA;AAAS;AAC1D,KAAA;AAAA,IAEC;AAAA,GAEL,CAAA;AAEJ,CAAC;;;;"}
|