@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.
Files changed (214) hide show
  1. package/build/cjs/index.js +1527 -2226
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Accordion/index.js.map +1 -1
  4. package/build/esm/Accordion/src/Accordion.js +41 -73
  5. package/build/esm/Accordion/src/Accordion.js.map +1 -1
  6. package/build/esm/Accordion/src/AccordionContext.js +3 -1
  7. package/build/esm/Accordion/src/AccordionContext.js.map +1 -1
  8. package/build/esm/Accordion/src/AccordionHeading.js +22 -54
  9. package/build/esm/Accordion/src/AccordionHeading.js.map +1 -1
  10. package/build/esm/Accordion/src/AccordionItem.js +15 -42
  11. package/build/esm/Accordion/src/AccordionItem.js.map +1 -1
  12. package/build/esm/Accordion/src/AccordionPanel.js +27 -44
  13. package/build/esm/Accordion/src/AccordionPanel.js.map +1 -1
  14. package/build/esm/Accordion/src/utils.js.map +1 -1
  15. package/build/esm/Alert/src/Alert.js +26 -64
  16. package/build/esm/Alert/src/Alert.js.map +1 -1
  17. package/build/esm/Amount/src/Amount.js +40 -62
  18. package/build/esm/Amount/src/Amount.js.map +1 -1
  19. package/build/esm/Amount/src/useGroupAmount.js +4 -1
  20. package/build/esm/Amount/src/useGroupAmount.js.map +1 -1
  21. package/build/esm/Autocomplete/i18n/da-DK.json.js +6 -0
  22. package/build/esm/Autocomplete/i18n/da-DK.json.js.map +1 -0
  23. package/build/esm/Autocomplete/i18n/de-DE.json.js +6 -0
  24. package/build/esm/Autocomplete/i18n/de-DE.json.js.map +1 -0
  25. package/build/esm/Autocomplete/i18n/en-US.json.js +6 -0
  26. package/build/esm/Autocomplete/i18n/en-US.json.js.map +1 -0
  27. package/build/esm/Autocomplete/i18n/fi-FI.json.js +6 -0
  28. package/build/esm/Autocomplete/i18n/fi-FI.json.js.map +1 -0
  29. package/build/esm/Autocomplete/i18n/index.js +9 -9
  30. package/build/esm/Autocomplete/i18n/index.js.map +1 -1
  31. package/build/esm/Autocomplete/i18n/nb-NO.json.js +6 -0
  32. package/build/esm/Autocomplete/i18n/nb-NO.json.js.map +1 -0
  33. package/build/esm/Autocomplete/i18n/pl-PL.json.js +6 -0
  34. package/build/esm/Autocomplete/i18n/pl-PL.json.js.map +1 -0
  35. package/build/esm/Autocomplete/i18n/sv-SE.json.js +6 -0
  36. package/build/esm/Autocomplete/i18n/sv-SE.json.js.map +1 -0
  37. package/build/esm/Autocomplete/src/Autocomplete.js +49 -74
  38. package/build/esm/Autocomplete/src/Autocomplete.js.map +1 -1
  39. package/build/esm/Breadcrumbs/src/BreadcrumbItem.js +44 -51
  40. package/build/esm/Breadcrumbs/src/BreadcrumbItem.js.map +1 -1
  41. package/build/esm/Breadcrumbs/src/BreadcrumbItemLink.js +17 -45
  42. package/build/esm/Breadcrumbs/src/BreadcrumbItemLink.js.map +1 -1
  43. package/build/esm/Breadcrumbs/src/BreadcrumbItemStatic.js +24 -45
  44. package/build/esm/Breadcrumbs/src/BreadcrumbItemStatic.js.map +1 -1
  45. package/build/esm/Breadcrumbs/src/BreadcrumbOverflowMenu.js +18 -11
  46. package/build/esm/Breadcrumbs/src/BreadcrumbOverflowMenu.js.map +1 -1
  47. package/build/esm/Breadcrumbs/src/Breadcrumbs.js +42 -61
  48. package/build/esm/Breadcrumbs/src/Breadcrumbs.js.map +1 -1
  49. package/build/esm/Breadcrumbs/src/BreadcrumbsSeparator.js +8 -6
  50. package/build/esm/Breadcrumbs/src/BreadcrumbsSeparator.js.map +1 -1
  51. package/build/esm/Breadcrumbs/src/useBreadcrumbThreshold.js +5 -5
  52. package/build/esm/Breadcrumbs/src/useBreadcrumbThreshold.js.map +1 -1
  53. package/build/esm/FileDropzone/i18n/{da-DK.js → da-DK.json.js} +3 -3
  54. package/build/esm/FileDropzone/i18n/da-DK.json.js.map +1 -0
  55. package/build/esm/FileDropzone/i18n/{de-DE.js → de-DE.json.js} +3 -3
  56. package/build/esm/FileDropzone/i18n/de-DE.json.js.map +1 -0
  57. package/build/esm/FileDropzone/i18n/{en-US.js → en-US.json.js} +3 -3
  58. package/build/esm/FileDropzone/i18n/en-US.json.js.map +1 -0
  59. package/build/esm/FileDropzone/i18n/{fi-FI.js → fi-FI.json.js} +3 -3
  60. package/build/esm/FileDropzone/i18n/fi-FI.json.js.map +1 -0
  61. package/build/esm/FileDropzone/i18n/index.js +9 -9
  62. package/build/esm/FileDropzone/i18n/index.js.map +1 -1
  63. package/build/esm/FileDropzone/i18n/{nb-NO.js → nb-NO.json.js} +3 -3
  64. package/build/esm/FileDropzone/i18n/nb-NO.json.js.map +1 -0
  65. package/build/esm/FileDropzone/i18n/{pl-PL.js → pl-PL.json.js} +3 -3
  66. package/build/esm/FileDropzone/i18n/pl-PL.json.js.map +1 -0
  67. package/build/esm/FileDropzone/i18n/{sv-SE.js → sv-SE.json.js} +3 -3
  68. package/build/esm/FileDropzone/i18n/sv-SE.json.js.map +1 -0
  69. package/build/esm/FileDropzone/src/FileDropzone.js +59 -84
  70. package/build/esm/FileDropzone/src/FileDropzone.js.map +1 -1
  71. package/build/esm/FileDropzone/src/FileTrigger.js +26 -59
  72. package/build/esm/FileDropzone/src/FileTrigger.js.map +1 -1
  73. package/build/esm/FileDropzone/src/utils.js.map +1 -1
  74. package/build/esm/Filtering/src/FilterDropdown.js +88 -110
  75. package/build/esm/Filtering/src/FilterDropdown.js.map +1 -1
  76. package/build/esm/Filtering/src/SearchableSelectFilter.js +38 -58
  77. package/build/esm/Filtering/src/SearchableSelectFilter.js.map +1 -1
  78. package/build/esm/Flag/src/Flag.js +5 -37
  79. package/build/esm/Flag/src/Flag.js.map +1 -1
  80. package/build/esm/LabeledValue/src/LabeledValue.js +19 -53
  81. package/build/esm/LabeledValue/src/LabeledValue.js.map +1 -1
  82. package/build/esm/NumberField/i18n/da-DK.json.js +9 -0
  83. package/build/esm/NumberField/i18n/da-DK.json.js.map +1 -0
  84. package/build/esm/NumberField/i18n/de-DE.json.js +9 -0
  85. package/build/esm/NumberField/i18n/de-DE.json.js.map +1 -0
  86. package/build/esm/NumberField/i18n/en-US.json.js +9 -0
  87. package/build/esm/NumberField/i18n/en-US.json.js.map +1 -0
  88. package/build/esm/NumberField/i18n/fi-FI.json.js +9 -0
  89. package/build/esm/NumberField/i18n/fi-FI.json.js.map +1 -0
  90. package/build/esm/NumberField/i18n/index.js +9 -9
  91. package/build/esm/NumberField/i18n/index.js.map +1 -1
  92. package/build/esm/NumberField/i18n/nb-NO.json.js +9 -0
  93. package/build/esm/NumberField/i18n/nb-NO.json.js.map +1 -0
  94. package/build/esm/NumberField/i18n/pl-PL.json.js +9 -0
  95. package/build/esm/NumberField/i18n/pl-PL.json.js.map +1 -0
  96. package/build/esm/NumberField/i18n/sv-SE.json.js +9 -0
  97. package/build/esm/NumberField/i18n/sv-SE.json.js.map +1 -0
  98. package/build/esm/NumberField/src/NumberField.js +125 -108
  99. package/build/esm/NumberField/src/NumberField.js.map +1 -1
  100. package/build/esm/NumberField/src/StepperButton.js +28 -50
  101. package/build/esm/NumberField/src/StepperButton.js.map +1 -1
  102. package/build/esm/NumberField/src/cursorHelpers.js +13 -8
  103. package/build/esm/NumberField/src/cursorHelpers.js.map +1 -1
  104. package/build/esm/NumberField/src/formatHelpers.js +15 -18
  105. package/build/esm/NumberField/src/formatHelpers.js.map +1 -1
  106. package/build/esm/NumberField/src/keyboardHelpers.js +13 -8
  107. package/build/esm/NumberField/src/keyboardHelpers.js.map +1 -1
  108. package/build/esm/NumberField/src/useAutofillStyle.js.map +1 -1
  109. package/build/esm/NumberField/src/useNumberFieldFormatting.js +79 -45
  110. package/build/esm/NumberField/src/useNumberFieldFormatting.js.map +1 -1
  111. package/build/esm/NumberField/src/useSapphireNumberField.js +13 -39
  112. package/build/esm/NumberField/src/useSapphireNumberField.js.map +1 -1
  113. package/build/esm/ProgressIndicator/src/ProgressIndicator.js +21 -33
  114. package/build/esm/ProgressIndicator/src/ProgressIndicator.js.map +1 -1
  115. package/build/esm/Sidebar/index.js.map +1 -1
  116. package/build/esm/Sidebar/src/Body.js +18 -43
  117. package/build/esm/Sidebar/src/Body.js.map +1 -1
  118. package/build/esm/Sidebar/src/ExpandableItem.js +86 -95
  119. package/build/esm/Sidebar/src/ExpandableItem.js.map +1 -1
  120. package/build/esm/Sidebar/src/Header.js +13 -43
  121. package/build/esm/Sidebar/src/Header.js.map +1 -1
  122. package/build/esm/Sidebar/src/Item.js +16 -43
  123. package/build/esm/Sidebar/src/Item.js.map +1 -1
  124. package/build/esm/Sidebar/src/List.js +13 -42
  125. package/build/esm/Sidebar/src/List.js.map +1 -1
  126. package/build/esm/Sidebar/src/Panel.js +56 -69
  127. package/build/esm/Sidebar/src/Panel.js.map +1 -1
  128. package/build/esm/Sidebar/src/ResponsiveSidebarContext.js +16 -8
  129. package/build/esm/Sidebar/src/ResponsiveSidebarContext.js.map +1 -1
  130. package/build/esm/Sidebar/src/SecondarySidebarContext.js +14 -11
  131. package/build/esm/Sidebar/src/SecondarySidebarContext.js.map +1 -1
  132. package/build/esm/Sidebar/src/Section.js +36 -49
  133. package/build/esm/Sidebar/src/Section.js.map +1 -1
  134. package/build/esm/Sidebar/src/Sidebar.js +62 -91
  135. package/build/esm/Sidebar/src/Sidebar.js.map +1 -1
  136. package/build/esm/Sidebar/src/useSidebar.js.map +1 -1
  137. package/build/esm/Slider/index.js.map +1 -1
  138. package/build/esm/Slider/src/Slider.js +46 -71
  139. package/build/esm/Slider/src/Slider.js.map +1 -1
  140. package/build/esm/TagGroup/src/Tag.js +66 -82
  141. package/build/esm/TagGroup/src/Tag.js.map +1 -1
  142. package/build/esm/TagGroup/src/TagGroup.js +44 -65
  143. package/build/esm/TagGroup/src/TagGroup.js.map +1 -1
  144. package/build/esm/TagGroup/src/TagItem.js.map +1 -1
  145. package/build/esm/TimeField/i18n/da-DK.json.js +7 -0
  146. package/build/esm/TimeField/i18n/da-DK.json.js.map +1 -0
  147. package/build/esm/TimeField/i18n/de-DE.json.js +7 -0
  148. package/build/esm/TimeField/i18n/de-DE.json.js.map +1 -0
  149. package/build/esm/TimeField/i18n/en-US.json.js +7 -0
  150. package/build/esm/TimeField/i18n/en-US.json.js.map +1 -0
  151. package/build/esm/TimeField/i18n/fi-FI.json.js +7 -0
  152. package/build/esm/TimeField/i18n/fi-FI.json.js.map +1 -0
  153. package/build/esm/TimeField/i18n/index.js +7 -7
  154. package/build/esm/TimeField/i18n/index.js.map +1 -1
  155. package/build/esm/TimeField/i18n/nb-NO.json.js +7 -0
  156. package/build/esm/TimeField/i18n/nb-NO.json.js.map +1 -0
  157. package/build/esm/TimeField/i18n/pl-PL.json.js +7 -0
  158. package/build/esm/TimeField/i18n/pl-PL.json.js.map +1 -0
  159. package/build/esm/TimeField/i18n/{sv-SE.js → sv-SE.json.js} +1 -1
  160. package/build/esm/TimeField/i18n/sv-SE.json.js.map +1 -0
  161. package/build/esm/TimeField/src/TimeField.js +62 -80
  162. package/build/esm/TimeField/src/TimeField.js.map +1 -1
  163. package/build/esm/TimeField/src/TimeFieldSegment.js +24 -36
  164. package/build/esm/TimeField/src/TimeFieldSegment.js.map +1 -1
  165. package/build/index.d.ts +13 -12
  166. package/package.json +5 -5
  167. package/build/esm/Autocomplete/i18n/da-DK.js +0 -6
  168. package/build/esm/Autocomplete/i18n/da-DK.js.map +0 -1
  169. package/build/esm/Autocomplete/i18n/de-DE.js +0 -6
  170. package/build/esm/Autocomplete/i18n/de-DE.js.map +0 -1
  171. package/build/esm/Autocomplete/i18n/en-US.js +0 -6
  172. package/build/esm/Autocomplete/i18n/en-US.js.map +0 -1
  173. package/build/esm/Autocomplete/i18n/fi-FI.js +0 -6
  174. package/build/esm/Autocomplete/i18n/fi-FI.js.map +0 -1
  175. package/build/esm/Autocomplete/i18n/nb-NO.js +0 -6
  176. package/build/esm/Autocomplete/i18n/nb-NO.js.map +0 -1
  177. package/build/esm/Autocomplete/i18n/pl-PL.js +0 -6
  178. package/build/esm/Autocomplete/i18n/pl-PL.js.map +0 -1
  179. package/build/esm/Autocomplete/i18n/sv-SE.js +0 -6
  180. package/build/esm/Autocomplete/i18n/sv-SE.js.map +0 -1
  181. package/build/esm/FileDropzone/i18n/da-DK.js.map +0 -1
  182. package/build/esm/FileDropzone/i18n/de-DE.js.map +0 -1
  183. package/build/esm/FileDropzone/i18n/en-US.js.map +0 -1
  184. package/build/esm/FileDropzone/i18n/fi-FI.js.map +0 -1
  185. package/build/esm/FileDropzone/i18n/nb-NO.js.map +0 -1
  186. package/build/esm/FileDropzone/i18n/pl-PL.js.map +0 -1
  187. package/build/esm/FileDropzone/i18n/sv-SE.js.map +0 -1
  188. package/build/esm/NumberField/i18n/da-DK.js +0 -9
  189. package/build/esm/NumberField/i18n/da-DK.js.map +0 -1
  190. package/build/esm/NumberField/i18n/de-DE.js +0 -9
  191. package/build/esm/NumberField/i18n/de-DE.js.map +0 -1
  192. package/build/esm/NumberField/i18n/en-US.js +0 -9
  193. package/build/esm/NumberField/i18n/en-US.js.map +0 -1
  194. package/build/esm/NumberField/i18n/fi-FI.js +0 -9
  195. package/build/esm/NumberField/i18n/fi-FI.js.map +0 -1
  196. package/build/esm/NumberField/i18n/nb-NO.js +0 -9
  197. package/build/esm/NumberField/i18n/nb-NO.js.map +0 -1
  198. package/build/esm/NumberField/i18n/pl-PL.js +0 -9
  199. package/build/esm/NumberField/i18n/pl-PL.js.map +0 -1
  200. package/build/esm/NumberField/i18n/sv-SE.js +0 -9
  201. package/build/esm/NumberField/i18n/sv-SE.js.map +0 -1
  202. package/build/esm/TimeField/i18n/da-DK.js +0 -7
  203. package/build/esm/TimeField/i18n/da-DK.js.map +0 -1
  204. package/build/esm/TimeField/i18n/de-DE.js +0 -7
  205. package/build/esm/TimeField/i18n/de-DE.js.map +0 -1
  206. package/build/esm/TimeField/i18n/en-US.js +0 -7
  207. package/build/esm/TimeField/i18n/en-US.js.map +0 -1
  208. package/build/esm/TimeField/i18n/fi-FI.js +0 -7
  209. package/build/esm/TimeField/i18n/fi-FI.js.map +0 -1
  210. package/build/esm/TimeField/i18n/nb-NO.js +0 -7
  211. package/build/esm/TimeField/i18n/nb-NO.js.map +0 -1
  212. package/build/esm/TimeField/i18n/pl-PL.js +0 -7
  213. package/build/esm/TimeField/i18n/pl-PL.js.map +0 -1
  214. 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, useSapphireStyleProps, ThemeRoot } from '@danske/sapphire-react';
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
- 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
- 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(SecondarySidebarProvider, {
61
- openedId: openedSecondarySidebar,
62
- defaultOpenedId: defaultOpenedSecondarySidebar,
63
- onOpenedIdChange: onSecondarySidebarChange,
64
- themeVariant: secondarySidebarThemeVariant
65
- }, /* @__PURE__ */ React.createElement(WithThemeRoot, {
66
- themeVariant
67
- }, /* @__PURE__ */ React.createElement(SidebarContent, __spreadValues({}, props), children)));
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 = (_c) => {
70
- var _d = _c, {
71
- onBlurWithin,
72
- onFocusWithin,
73
- onFocusWithinChange,
74
- closeOnBlurWithin = true,
75
- header,
76
- panelHeader,
77
- children
78
- } = _d, props = __objRest(_d, [
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(mergeProps({
90
- onBlurWithin,
91
- onFocusWithin,
92
- onFocusWithinChange
93
- }, closeOnBlurWithin ? sidebarProps : {}));
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("div", __spreadProps(__spreadValues(__spreadValues(__spreadValues({}, styleProps), filterDOMProps(props, { global: true })), focusWithinProps), {
97
- className: clsx(styles["sapphire-sidebar"]),
98
- tabIndex: -1
99
- }), header, children), responsiveSidebarContext && /* @__PURE__ */ React.createElement(SidebarPanel, {
100
- header: panelHeader
101
- }, children));
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(ThemeRoot, {
107
- variant: themeVariant,
108
- noSurface: true,
109
- height: "100%",
110
- width: "min-content"
111
- }, children) : /* @__PURE__ */ React.createElement(React.Fragment, null, children);
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8Ga,MAAA,OAAA,GAAU,CAAC,EAQJ,KAAA;AARI,EACtB,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,YAAA;AAAA,IACA,sBAAA;AAAA,IACA,6BAAA;AAAA,IACA,wBAAA;AAAA,IACA,4BAAA;AAAA,IACA,QAAA;AAAA,GANsB,GAAA,EAAA,EAOnB,kBAPmB,EAOnB,EAAA;AAAA,IANH,cAAA;AAAA,IACA,wBAAA;AAAA,IACA,+BAAA;AAAA,IACA,0BAAA;AAAA,IACA,8BAAA;AAAA,IACA,UAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAA,aAAA,EAAA,CAAA;AAEA,EAAA,2CACG,wBAAD,EAAA;AAAA,IACE,QAAU,EAAA,sBAAA;AAAA,IACV,eAAiB,EAAA,6BAAA;AAAA,IACjB,gBAAkB,EAAA,wBAAA;AAAA,IAClB,YAAc,EAAA,4BAAA;AAAA,GAAA,sCAEb,aAAD,EAAA;AAAA,IAAe,YAAA;AAAA,GACb,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAD,EAAA,cAAA,CAAA,EAAA,EAAoB,KAAQ,CAAA,EAAA,QAAA,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA;AAMpC,MAAM,cAAA,GAAiB,CAAC,EASJ,KAAA;AATI,EACtB,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA;AAAA,IACA,iBAAoB,GAAA,IAAA;AAAA,IACpB,MAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,GAPsB,GAAA,EAAA,EAQnB,kBARmB,EAQnB,EAAA;AAAA,IAPH,cAAA;AAAA,IACA,eAAA;AAAA,IACA,qBAAA;AAAA,IACA,mBAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAM,MAAA,EAAE,eAAe,qBAAsB,CAAA,KAAA,CAAA,CAAA;AAC7C,EAAA,MAAM,EAAE,YAAiB,EAAA,GAAA,UAAA,EAAA,CAAA;AAEzB,EAAM,MAAA,EAAE,gBAAqB,EAAA,GAAA,cAAA,CAC3B,UACE,CAAA;AAAA,IACE,YAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA;AAAA,GAAA,EAEF,oBAAoB,YAAe,GAAA,EAAA,CAAA,CAAA,CAAA;AAIvC,EAAA,MAAM,wBAA2B,GAAA,2BAAA,EAAA,CAAA;AACjC,EAAA,MAAM,WAAc,GAAA,qBAAA,EAAA,CAAA;AAEpB,EAAA,uBAEK,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EAAA,CAAC,WACA,oBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA,aAAA,CAAA,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,EAAA,EACM,UACA,CAAA,EAAA,cAAA,CAAe,KAAO,EAAA,EAAE,MAAQ,EAAA,IAAA,EAAA,CAAA,CAAA,EAChC,gBAHN,CAAA,EAAA;AAAA,IAIE,SAAA,EAAW,KAAK,MAAO,CAAA,kBAAA,CAAA,CAAA;AAAA,IACvB,QAAU,EAAA,CAAA,CAAA;AAAA,GAAA,CAAA,EAET,MACA,EAAA,QAAA,CAAA,EAGJ,wBACC,oBAAA,KAAA,CAAA,aAAA,CAAC,YAAD,EAAA;AAAA,IAAc,MAAQ,EAAA,WAAA;AAAA,GAAc,EAAA,QAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAM5C,MAAM,gBAAgB,CAAC;AAAA,EACrB,QAAA;AAAA,EACA,YAAA;AAAA,CAKA,KAAA,YAAA,uCACG,SAAD,EAAA;AAAA,EACE,OAAS,EAAA,YAAA;AAAA,EACT,SAAS,EAAA,IAAA;AAAA,EACT,MAAO,EAAA,MAAA;AAAA,EACP,KAAM,EAAA,aAAA;AAAA,CAAA,EAEL,4BAGA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,EAAA,QAAA,CAAA;;;;"}
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,EAAM,MAAA,EAAE,UAAU,WAAgB,EAAA,GAAA,0BAAA,EAAA,CAAA;AAClC,EAAA,MAAM,iBAAoB,GAAA,2BAAA,EAAA,CAAA;AAC1B,EAAM,MAAA,EAAE,aAAa,YAAiB,EAAA,GAAA,iBAAA,GAClC,oBACA,EAAE,WAAA,EAAa,KAAO,EAAA,YAAA,EAAc,MAAM;AAAA,GAAA,EAAA,CAAA;AAE9C,EAAO,OAAA;AAAA,IACL,YAAc,EAAA,EAAE,YAAc,EAAA,MAAM,WAAY,CAAA,IAAA,CAAA,EAAA;AAAA,IAChD,SAAW,EAAA;AAAA,MACT,SAAS,MAAM;AACb,QAAa,YAAA,CAAA,KAAA,CAAA,CAAA;AACb,QAAA,IAAI,CAAC,WAAa,EAAA;AAIhB,UAAY,WAAA,CAAA,IAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA;AAAA,KAAA;AAAA,IAIlB,sBAAA,EAAwB,CAAC,EAAgB,MAAA;AAAA,MACvC,OAAS,EAAA,MAAM,WAAY,CAAA,QAAA,KAAa,KAAK,IAAO,GAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAAA,IAEtD,qBAAuB,EAAA;AAAA,MACrB,OAAA,EAAS,MAAM,WAAY,CAAA,IAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
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":";;;AAGM,MAAA,OAAA,GAAU,MAAO,CAAA,MAAA,CAAO,MAAQ,EAAA;AAAA,EACpC,MAAM,KAAM,CAAA,IAAA;AAAA,CAAA;;;;"}
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
- var __defProp = Object.defineProperty;
8
- var __defProps = Object.defineProperties;
9
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
10
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
- var __hasOwnProp = Object.prototype.hasOwnProperty;
12
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
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, __spreadProps(__spreadValues({}, styleProps), {
53
- labelPlacement
54
- }), /* @__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, __spreadProps(__spreadValues({}, props), {
55
- style: { height: "100%" }
56
- }), /* @__PURE__ */ React.createElement("div", {
57
- className: clsx(styles["sapphire-slider"]),
58
- role: "slider"
59
- }, /* @__PURE__ */ React.createElement(SliderTrack, {
60
- className: ({ isDisabled }) => clsx(styles["sapphire-slider__track"], {
61
- [styles["is-disabled"]]: isDisabled
62
- })
63
- }, ({ state }) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
64
- className: clsx(styles["sapphire-slider__track-remaining"])
65
- }), /* @__PURE__ */ React.createElement("div", {
66
- className: clsx(styles["sapphire-slider__track-fill"]),
67
- style: { width: state.getThumbPercent(0) * 100 + "%" }
68
- }), /* @__PURE__ */ React.createElement(SliderThumb, {
69
- name,
70
- className: (state2) => clsx(styles["sapphire-slider__thumb"], {
71
- [styles["is-focus"]]: state2.isFocusVisible
72
- }),
73
- style: ({ state: state2 }) => {
74
- const percent = Math.min(3 + state2.getThumbPercent(0) * 94, 100);
75
- return {
76
- left: `${percent}%`
77
- };
78
- }
79
- })))))), note && /* @__PURE__ */ React.createElement(Field.Footer, null, note)));
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Ca,MAAA,MAAA,GAAS,CAAC,EAMS,KAAA;AANT,EACrB,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,KAAA;AAAA,IACA,cAAiB,GAAA,OAAA;AAAA,IACjB,IAAA;AAAA,IACA,IAAA;AAAA,GAJqB,GAAA,EAAA,EAKlB,kBALkB,EAKlB,EAAA;AAAA,IAJH,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAA,aAAA,EAAA,CAAA;AACA,EAAM,MAAA,EAAE,eAAe,qBAAsB,CAAA,KAAA,CAAA,CAAA;AAE7C,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAW,UAAX,CAAA,EAAA;AAAA,IAAuB,cAAA;AAAA,GACrB,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAM,OAAP,EAAA,IAAA,EACG,yBACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAM,OAAP,IACE,kBAAA,KAAA,CAAA,aAAA,CAAC,OAAD,IAAQ,EAAA,KAAA,CAAA,CAAA,sCAIX,KAAM,CAAA,OAAA,EAAP,sBACG,KAAA,CAAA,aAAA,CAAAA,QAAA,EAAD,iCAAe,KAAf,CAAA,EAAA;AAAA,IAAsB,KAAA,EAAO,EAAE,MAAQ,EAAA,MAAA,EAAA;AAAA,GAAA,CAAA,sCACpC,KAAD,EAAA;AAAA,IAAK,SAAA,EAAW,KAAK,MAAO,CAAA,iBAAA,CAAA,CAAA;AAAA,IAAqB,IAAK,EAAA,QAAA;AAAA,GAAA,sCACnDC,WAAD,EAAA;AAAA,IACE,WAAW,CAAC,EAAE,UACZ,EAAA,KAAA,IAAA,CAAK,OAAO,wBAA2B,CAAA,EAAA;AAAA,MAAA,CACpC,OAAO,aAAiB,CAAA,GAAA,UAAA;AAAA,KAAA,CAAA;AAAA,GAAA,EAI5B,CAAC,EAAE,KACF,EAAA,qBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,KAAD,EAAA;AAAA,IACE,SAAA,EAAW,KACT,MAAO,CAAA,kCAAA,CAAA,CAAA;AAAA,GAAA,CAAA,sCAGV,KAAD,EAAA;AAAA,IACE,SAAA,EAAW,KAAK,MAAO,CAAA,6BAAA,CAAA,CAAA;AAAA,IACvB,OAAO,EAAE,KAAA,EAAO,KAAM,CAAA,eAAA,CAAgB,KAAK,GAAM,GAAA,GAAA,EAAA;AAAA,GAAA,CAAA,sCAElDC,WAAD,EAAA;AAAA,IACE,IAAA;AAAA,IACA,SAAW,EAAA,CAAC,MACV,KAAA,IAAA,CAAK,OAAO,wBAA2B,CAAA,EAAA;AAAA,MACpC,CAAA,MAAA,CAAO,cAAc,MAAM,CAAA,cAAA;AAAA,KAAA,CAAA;AAAA,IAGhC,KAAA,EAAO,CAAC,EAAE,KAAY,EAAA,MAAA,EAAA,KAAA;AAEpB,MAAA,MAAM,UAAU,IAAK,CAAA,GAAA,CACnB,IAAI,MAAM,CAAA,eAAA,CAAgB,KAAK,EAC/B,EAAA,GAAA,CAAA,CAAA;AAEF,MAAO,OAAA;AAAA,QACL,MAAM,CAAG,EAAA,OAAA,CAAA,CAAA,CAAA;AAAA,OAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAW1B,IAAQ,oBAAA,KAAA,CAAA,aAAA,CAAC,KAAM,CAAA,MAAA,EAAP,IAAe,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
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 { mergeRefs, mergeProps } from '@react-aria/utils';
6
+ import { mergeProps, mergeRefs } from '@react-aria/utils';
7
7
  import { useThemeCheck, TooltipIfNeeded, Icon } from '@danske/sapphire-react';
8
- import { Close, Error } from '@danske/sapphire-icons/react';
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 _a = useTag(props, state, ref), {
16
+ const {
48
17
  gridCellProps,
49
18
  isDisabled,
50
19
  isFocused,
51
20
  isPressed,
52
21
  removeButtonProps,
53
- rowProps: _b
54
- } = _a, _c = _b, { onKeyDown } = _c, rowProps = __objRest(_c, ["onKeyDown"]), otherProps = __objRest(_a, [
55
- "gridCellProps",
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
- title: item.rendered
66
- }, (tooltipRef, tooltipProps) => {
67
- const _a2 = tooltipProps || {}, { ref: tooltipTargetRef } = _a2, restTooltipProps = __objRest(_a2, ["ref"]);
68
- return /* @__PURE__ */ React.createElement(FocusRing, {
69
- focusRingClass: styles["is-focus"]
70
- }, /* @__PURE__ */ React.createElement("div", __spreadValues(__spreadProps(__spreadValues({
71
- ref: mergeRefs(ref, tooltipTargetRef)
72
- }, mergeProps({
73
- onKeyDown: (e) => {
74
- if (e.key !== " ") {
75
- onKeyDown == null ? void 0 : onKeyDown(e);
76
- } else {
77
- e.preventDefault();
78
- }
79
- }
80
- }, rowProps, hoverProps, restTooltipProps)), {
81
- className: clsx(styles["sapphire-tag"], styles["js-focus"], styles["js-hover"], {
82
- [styles["sapphire-tag--actionable"]]: hasAction,
83
- [styles["is-active"]]: hasAction && isPressed,
84
- [styles["is-hover"]]: hasAction && isHovered,
85
- [styles["is-disabled"]]: isDisabled
86
- })
87
- }), hasError ? { "aria-invalid": true } : {}), /* @__PURE__ */ React.createElement("div", __spreadProps(__spreadValues({}, gridCellProps), {
88
- className: styles["sapphire-tag__content"]
89
- }), hasError && !isDisabled && /* @__PURE__ */ React.createElement(IconError, null), /* @__PURE__ */ React.createElement("span", {
90
- ref: tooltipRef,
91
- className: styles["sapphire-tag__label"]
92
- }, item.rendered), !isDisabled && props.allowsRemoving && /* @__PURE__ */ React.createElement(RemoveButton, __spreadValues({}, removeButtonProps)))));
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("button", __spreadProps(__spreadValues({}, buttonProps), {
99
- className: clsx(styles["sapphire-tag__button"], styles["js-focus"])
100
- }), /* @__PURE__ */ React.createElement(Icon, {
101
- size: "sm"
102
- }, /* @__PURE__ */ React.createElement(Close, null)));
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 };