@uva-glass/component-library 3.30.1 → 3.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/dist/{Lexical.prod-UwAbgYpF.js → Lexical.prod-B84LhBo3.js} +1196 -1224
  2. package/dist/Lexical.prod-B84LhBo3.js.map +1 -0
  3. package/dist/{LexicalClipboard.prod-DHIGjydG.js → LexicalClipboard.prod-DLgWWXys.js} +4 -4
  4. package/dist/{LexicalClipboard.prod-DHIGjydG.js.map → LexicalClipboard.prod-DLgWWXys.js.map} +1 -1
  5. package/dist/{LexicalLink.prod-Bsa9J7L-.js → LexicalLink.prod-DoU9RL94.js} +3 -3
  6. package/dist/{LexicalLink.prod-Bsa9J7L-.js.map → LexicalLink.prod-DoU9RL94.js.map} +1 -1
  7. package/dist/{LexicalList.prod-jxGuZd4b.js → LexicalList.prod-Cw2TK1jY.js} +4 -4
  8. package/dist/{LexicalList.prod-jxGuZd4b.js.map → LexicalList.prod-Cw2TK1jY.js.map} +1 -1
  9. package/dist/{LexicalSelection.prod-xk5MiZnZ.js → LexicalSelection.prod-TB5pn9xc.js} +2 -2
  10. package/dist/{LexicalSelection.prod-xk5MiZnZ.js.map → LexicalSelection.prod-TB5pn9xc.js.map} +1 -1
  11. package/dist/{LexicalTable.prod-BSjs04iE.js → LexicalTable.prod-9xjyWB0C.js} +4 -4
  12. package/dist/{LexicalTable.prod-BSjs04iE.js.map → LexicalTable.prod-9xjyWB0C.js.map} +1 -1
  13. package/dist/{LexicalUtils.prod-cQutjKA3.js → LexicalUtils.prod-CD3xGFhm.js} +2 -2
  14. package/dist/{LexicalUtils.prod-cQutjKA3.js.map → LexicalUtils.prod-CD3xGFhm.js.map} +1 -1
  15. package/dist/Sortable.module--kgnzOjW.js +26 -0
  16. package/dist/Sortable.module--kgnzOjW.js.map +1 -0
  17. package/dist/SortableProvider-C2T7b-pm.js +153 -0
  18. package/dist/SortableProvider-C2T7b-pm.js.map +1 -0
  19. package/dist/{TablePlugin-NmJsn2fm.js → TablePlugin-Dmy98Epb.js} +86 -91
  20. package/dist/{TablePlugin-NmJsn2fm.js.map → TablePlugin-Dmy98Epb.js.map} +1 -1
  21. package/dist/assets/Backdrop.css +1 -1
  22. package/dist/assets/Button.css +1 -1
  23. package/dist/assets/ClipboardButton.css +1 -1
  24. package/dist/assets/ExpandableInfoPanel.css +1 -1
  25. package/dist/assets/FormInput.css +1 -1
  26. package/dist/assets/IconButton.css +1 -1
  27. package/dist/assets/Input.css +1 -1
  28. package/dist/assets/InputField.css +1 -1
  29. package/dist/assets/LinkContextMenu.css +1 -1
  30. package/dist/assets/Notification.css +1 -1
  31. package/dist/assets/OverlayCloseButton.css +1 -1
  32. package/dist/assets/OverlayStepBar.css +1 -1
  33. package/dist/assets/PageOverlay.css +1 -1
  34. package/dist/assets/Sortable.css +1 -1
  35. package/dist/assets/VarIndicator.css +1 -1
  36. package/dist/components/Accordion/Accordion.test.js +3 -3
  37. package/dist/components/AccordionCard/AccordionCard.test.js +3 -3
  38. package/dist/components/ActionList/ActionList.test.js +3 -3
  39. package/dist/components/AppStatusBar/AppStatusBar.test.js +2 -2
  40. package/dist/components/Attention/Attention.test.js +2 -2
  41. package/dist/components/Backdrop/Backdrop.test.js +2 -2
  42. package/dist/components/Buttons/Button.stories.js +1 -1
  43. package/dist/components/Buttons/Button.test.js +2 -2
  44. package/dist/components/Buttons/LinkButton.stories.js +1 -1
  45. package/dist/components/Buttons/LinkButton.test.js +2 -2
  46. package/dist/components/Buttons/MenuButton.stories.js +5 -5
  47. package/dist/components/Buttons/MenuButton.test.js +2 -2
  48. package/dist/components/Card/Card.test.js +2 -2
  49. package/dist/components/Checkbox/Checkbox.stories.js +1 -1
  50. package/dist/components/Checkbox/Checkbox.test.js +3 -3
  51. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +1 -1
  52. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +2 -2
  53. package/dist/components/CheckboxTree/CheckboxTree.js +58 -59
  54. package/dist/components/CheckboxTree/CheckboxTree.js.map +1 -1
  55. package/dist/components/CheckboxTree/CheckboxTree.stories.js +58 -59
  56. package/dist/components/CheckboxTree/CheckboxTree.stories.js.map +1 -1
  57. package/dist/components/Chip/Chip.stories.js +5 -5
  58. package/dist/components/ControlsButton/ControlsButton.stories.js +5 -5
  59. package/dist/components/Drawer/Drawer.stories.js +1 -1
  60. package/dist/components/FeedbackBar/FeedbackBar.test.js +2 -2
  61. package/dist/components/FormInput/FormInput.js +3 -3
  62. package/dist/components/FormInput/FormInput.stories.js +1 -1
  63. package/dist/components/HorizontalList/HorizontalList.js +7 -7
  64. package/dist/components/HorizontalList/HorizontalList.js.map +1 -1
  65. package/dist/components/IconButton/IconButton.stories.js +1 -1
  66. package/dist/components/InputField/InputField.stories.js +10 -10
  67. package/dist/components/Label/Label.test.js +2 -2
  68. package/dist/components/ModalDialog/ModalDialog.stories.js +8 -8
  69. package/dist/components/MultiSelect/MultiSelect.js +1 -1
  70. package/dist/components/MultiSelect/MultiSelect.stories.js +8 -8
  71. package/dist/components/MultiSelect/components/MultiSelectHeader.js +3 -3
  72. package/dist/components/MultiSelect/index.js +1 -1
  73. package/dist/components/MultiSelectBox/MultiSelectBox.js +66 -70
  74. package/dist/components/MultiSelectBox/MultiSelectBox.js.map +1 -1
  75. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +1 -1
  76. package/dist/components/MultiSelectBox/MultiSelectBox.test.js +2 -2
  77. package/dist/components/Notification/Notification.stories.js +6 -6
  78. package/dist/components/Notification/Notification.test.js +2 -2
  79. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +4 -4
  80. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js +19 -20
  81. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js.map +1 -1
  82. package/dist/components/PeriodSelector/PeriodSelector.js +33 -33
  83. package/dist/components/PeriodSelector/PeriodSelector.js.map +1 -1
  84. package/dist/components/PeriodSelector/PeriodSelector.stories.js +4 -4
  85. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +3 -3
  86. package/dist/components/RadioGroup/RadioGroup.stories.js +1 -1
  87. package/dist/components/RadioGroup/Radiogroup.test.js +2 -2
  88. package/dist/components/RadioTabSelector/RadioTabSelector.js +3 -3
  89. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +1 -1
  90. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +3 -3
  91. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +1 -1
  92. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +4 -4
  93. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +4 -4
  94. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +51 -61
  95. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js.map +1 -1
  96. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +79 -89
  97. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js.map +1 -1
  98. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
  99. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +3 -3
  100. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +4 -4
  101. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +3 -3
  102. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js +19 -19
  103. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js.map +1 -1
  104. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +5 -5
  105. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +17 -18
  106. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js.map +1 -1
  107. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +1 -1
  108. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +31 -32
  109. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js.map +1 -1
  110. package/dist/components/RteEditor/Plugins/index.js +1 -1
  111. package/dist/components/RteEditor/RteEditor.js +10 -10
  112. package/dist/components/RteEditor/helpers.js +4 -4
  113. package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
  114. package/dist/components/SelectListbox/components/SelectButton.js +31 -32
  115. package/dist/components/SelectListbox/components/SelectButton.js.map +1 -1
  116. package/dist/components/SelectListbox/components/SelectOption.js +29 -30
  117. package/dist/components/SelectListbox/components/SelectOption.js.map +1 -1
  118. package/dist/components/Sortable/Sortable.d.ts +6 -1
  119. package/dist/components/Sortable/Sortable.js +23 -13
  120. package/dist/components/Sortable/Sortable.js.map +1 -1
  121. package/dist/components/Sortable/Sortable.stories.js +13 -12
  122. package/dist/components/Sortable/Sortable.stories.js.map +1 -1
  123. package/dist/components/Sortable/SortableProvider.d.ts +2 -1
  124. package/dist/components/Sortable/SortableProvider.js +1 -1
  125. package/dist/components/Sortable/components/SortableContainer.d.ts +2 -1
  126. package/dist/components/Sortable/components/SortableContainer.js +2 -2
  127. package/dist/components/Sortable/components/SortableHandle.js +1 -1
  128. package/dist/components/Sortable/components/SortableItem.d.ts +3 -1
  129. package/dist/components/Sortable/components/SortableItem.js +48 -47
  130. package/dist/components/Sortable/components/SortableItem.js.map +1 -1
  131. package/dist/components/StatusBadge/StatusBadge.test.js +2 -2
  132. package/dist/components/TextArea/TextArea.stories.js +1 -1
  133. package/dist/components/TextArea/TextArea.test.js +3 -3
  134. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +1 -1
  135. package/dist/components/VarIndicator/VarIndicator.stories.js +1 -1
  136. package/dist/components/VarIndicator/VarIndicator.test.js +3 -3
  137. package/dist/components/hooks/usePositionedFloaters.js +39 -39
  138. package/dist/components/hooks/usePositionedFloaters.js.map +1 -1
  139. package/dist/components/index.js +1 -1
  140. package/dist/{helpers-DZIm3MiJ.js → helpers-CMG0anwr.js} +4 -4
  141. package/dist/{helpers-DZIm3MiJ.js.map → helpers-CMG0anwr.js.map} +1 -1
  142. package/dist/{index-DV47hRzi.js → index-Br0QepD6.js} +8 -10
  143. package/dist/{index-DV47hRzi.js.map → index-Br0QepD6.js.map} +1 -1
  144. package/dist/{index-Di9WPZUe.js → index-C2E9FY6V.js} +9149 -9854
  145. package/dist/index-C2E9FY6V.js.map +1 -0
  146. package/dist/{index-PaHiqSUg.js → index-Ds1dMTvJ.js} +29 -29
  147. package/dist/{index-PaHiqSUg.js.map → index-Ds1dMTvJ.js.map} +1 -1
  148. package/dist/{index-BVAvx58-.js → index-KJPw-7za.js} +2209 -2280
  149. package/dist/{index-BVAvx58-.js.map → index-KJPw-7za.js.map} +1 -1
  150. package/dist/{index-DllfJcv4.js → index-nrPtQ1dv.js} +2 -2
  151. package/dist/{index-DllfJcv4.js.map → index-nrPtQ1dv.js.map} +1 -1
  152. package/dist/index.js +1 -1
  153. package/dist/{react.esm-CFMwGdo5.js → react.esm-BKjCIfbB.js} +373 -374
  154. package/dist/{react.esm-CFMwGdo5.js.map → react.esm-BKjCIfbB.js.map} +1 -1
  155. package/dist/setupTests.js +6 -9
  156. package/dist/setupTests.js.map +1 -1
  157. package/dist/storybook__react.d.js +2056 -2072
  158. package/dist/storybook__react.d.js.map +1 -1
  159. package/package.json +14 -14
  160. package/dist/Lexical.prod-UwAbgYpF.js.map +0 -1
  161. package/dist/Sortable.module-CekPNg54.js +0 -23
  162. package/dist/Sortable.module-CekPNg54.js.map +0 -1
  163. package/dist/SortableProvider-CwX1lFMa.js +0 -152
  164. package/dist/SortableProvider-CwX1lFMa.js.map +0 -1
  165. package/dist/index-Di9WPZUe.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import { jsxs as g, jsx as u } from "react/jsx-runtime";
2
- import { useId as H, useState as b, useRef as S, useCallback as _, useEffect as I } from "react";
3
- import { c as h } from "../../clsx-OuTLNxxd.js";
1
+ import { jsxs as f, jsx as u } from "react/jsx-runtime";
2
+ import { useId as H, useState as m, useRef as O, useCallback as g, useEffect as w } from "react";
3
+ import { c as _ } from "../../clsx-OuTLNxxd.js";
4
4
  import { Icon as q } from "../Icon/Icon.js";
5
5
  import { Checkbox as G } from "../Checkbox/Checkbox.js";
6
6
  import { usePositionedFloaters as J } from "../hooks/usePositionedFloaters.js";
@@ -19,28 +19,28 @@ import '../../assets/MultiSelectBox.css';const r = {
19
19
  "multi-select-box-listbox-option--disabled": "_multi-select-box-listbox-option--disabled_134e4_117"
20
20
  }, ee = ({
21
21
  selectData: c,
22
- onChange: m,
23
- defaultSelectedItems: f,
22
+ onChange: d,
23
+ defaultSelectedItems: y,
24
24
  labelSuffix: E = "geselecteerd",
25
- disabled: P = !1,
26
- fullWidth: B = !1,
27
- darkBorder: C = !1,
28
- maxOptionHeight: L,
29
- optionPositionRight: O
25
+ disabled: A = !1,
26
+ fullWidth: P = !1,
27
+ darkBorder: B = !1,
28
+ maxOptionHeight: C,
29
+ optionPositionRight: L
30
30
  }) => {
31
- const v = H(), [n, k] = b(f || []), [N, w] = b((f == null ? void 0 : f.length) || 0), [s, a] = b(!1), [d, x] = b(-1), y = S(null), A = S(null), [F, K] = b(null), [R, $] = b(null), { style: D } = J(F, R, {
31
+ const h = H(), [n, v] = m(y || []), [S, k] = m(y?.length || 0), [s, a] = m(!1), [b, x] = m(-1), I = O(null), N = O(null), [F, K] = m(null), [R, $] = m(null), { style: D } = J(F, R, {
32
32
  mouseEvent: "click",
33
33
  offset: 4,
34
- maxFixedHeight: L,
35
- horizontalPosition: O ? "right" : "left",
34
+ maxFixedHeight: C,
35
+ horizontalPosition: L ? "right" : "left",
36
36
  mobileBreakpoint: "28rem",
37
- fullWidth: B
38
- }), p = _(
37
+ fullWidth: P
38
+ }), p = g(
39
39
  ({ target: e }) => {
40
- !e || !y.current || y.current.contains(e) || a(!1);
40
+ !e || !I.current || I.current.contains(e) || a(!1);
41
41
  },
42
42
  [a]
43
- ), M = _(
43
+ ), M = g(
44
44
  (e) => {
45
45
  switch (e.key) {
46
46
  case "Enter":
@@ -52,36 +52,34 @@ import '../../assets/MultiSelectBox.css';const r = {
52
52
  }
53
53
  },
54
54
  [s]
55
- ), T = _(
55
+ ), T = g(
56
56
  (e) => {
57
57
  if (s)
58
58
  switch (e.key) {
59
59
  case "ArrowDown":
60
60
  e.preventDefault(), x((t) => {
61
- var l;
62
- let o = t;
61
+ let l = t;
63
62
  do
64
- o = o < c.length - 1 ? o + 1 : 0;
65
- while ((l = c[o]) != null && l.disabled);
66
- return o;
63
+ l = l < c.length - 1 ? l + 1 : 0;
64
+ while (c[l]?.disabled);
65
+ return l;
67
66
  });
68
67
  break;
69
68
  case "ArrowUp":
70
69
  e.preventDefault(), x((t) => {
71
- var l;
72
- let o = t;
70
+ let l = t;
73
71
  do
74
- o = o <= 0 ? c.length - 1 : o - 1;
75
- while ((l = c[o]) != null && l.disabled);
76
- return o;
72
+ l = l <= 0 ? c.length - 1 : l - 1;
73
+ while (c[l]?.disabled);
74
+ return l;
77
75
  });
78
76
  break;
79
77
  case "Enter": {
80
78
  e.preventDefault();
81
- const t = c[d];
79
+ const t = c[b];
82
80
  if (!t || t.disabled) break;
83
- const l = n.some((i) => i.value === t.value) ? n.filter((i) => i.value !== t.value) : [...n, t];
84
- k(l), w(l.length), m(l);
81
+ const o = n.some((i) => i.value === t.value) ? n.filter((i) => i.value !== t.value) : [...n, t];
82
+ v(o), k(o.length), d(o);
85
83
  break;
86
84
  }
87
85
  case "Tab":
@@ -92,41 +90,39 @@ import '../../assets/MultiSelectBox.css';const r = {
92
90
  break;
93
91
  }
94
92
  },
95
- [d, s, c, n, m]
93
+ [b, s, c, n, d]
96
94
  ), j = (e, t) => {
97
95
  if (t.disabled || e.target.tagName === "INPUT") return;
98
- const l = n.some((i) => i.value === t.value) ? n.filter((i) => i.value !== t.value) : [...n, t];
99
- k(l), w(l.length), m(l);
100
- }, z = _(
96
+ const o = n.some((i) => i.value === t.value) ? n.filter((i) => i.value !== t.value) : [...n, t];
97
+ v(o), k(o.length), d(o);
98
+ }, z = g(
101
99
  (e) => {
102
- const { checked: t, value: o } = e.target;
103
- let l = [...n];
100
+ const { checked: t, value: l } = e.target;
101
+ let o = [...n];
104
102
  if (t) {
105
- const i = c.find((U) => U.value === o);
106
- i && l.push(i);
103
+ const i = c.find((U) => U.value === l);
104
+ i && o.push(i);
107
105
  } else
108
- l = l.filter((i) => i.value !== o);
109
- k(l), w(l.length), m(l);
106
+ o = o.filter((i) => i.value !== l);
107
+ v(o), k(o.length), d(o);
110
108
  },
111
- [c, n, m]
109
+ [c, n, d]
112
110
  );
113
- return I(() => {
111
+ return w(() => {
114
112
  s && x(0);
115
- }, [s]), I(() => {
116
- var t;
117
- const e = (t = A.current) == null ? void 0 : t.children[d];
118
- e == null || e.focus();
119
- }, [d]), I(() => {
113
+ }, [s]), w(() => {
114
+ N.current?.children[b]?.focus();
115
+ }, [b]), w(() => {
120
116
  if (s)
121
117
  return document.addEventListener("click", p, !0), document.addEventListener("scroll", p, !0), () => {
122
118
  document.removeEventListener("click", p, !0), document.removeEventListener("scroll", p, !0);
123
119
  };
124
- }, [p, s]), /* @__PURE__ */ g("div", { className: r["multi-select-box-wrapper"], ref: y, children: [
125
- /* @__PURE__ */ g(
120
+ }, [p, s]), /* @__PURE__ */ f("div", { className: r["multi-select-box-wrapper"], ref: I, children: [
121
+ /* @__PURE__ */ f(
126
122
  "button",
127
123
  {
128
- className: h(r["multi-select-box-trigger"], {
129
- [r["multi-select-box-trigger--darkBorder"]]: C
124
+ className: _(r["multi-select-box-trigger"], {
125
+ [r["multi-select-box-trigger--darkBorder"]]: B
130
126
  }),
131
127
  type: "button",
132
128
  onClick: () => {
@@ -135,20 +131,20 @@ import '../../assets/MultiSelectBox.css';const r = {
135
131
  onKeyDown: M,
136
132
  "aria-expanded": s,
137
133
  "aria-haspopup": "listbox",
138
- "aria-label": `${N} ${E}`,
139
- disabled: P,
140
- ...s && { "aria-controls": v },
134
+ "aria-label": `${S} ${E}`,
135
+ disabled: A,
136
+ ...s && { "aria-controls": h },
141
137
  ref: $,
142
138
  children: [
143
- /* @__PURE__ */ g("span", { className: r["multi-select-box-trigger-label"], children: [
144
- N,
139
+ /* @__PURE__ */ f("span", { className: r["multi-select-box-trigger-label"], children: [
140
+ S,
145
141
  " ",
146
142
  E
147
143
  ] }),
148
144
  /* @__PURE__ */ u(
149
145
  q,
150
146
  {
151
- className: h(r["multi-select-box-trigger-icon"], {
147
+ className: _(r["multi-select-box-trigger-icon"], {
152
148
  [r["multi-select-box-trigger-icon--open"]]: s
153
149
  }),
154
150
  name: "CheveronDown",
@@ -161,34 +157,34 @@ import '../../assets/MultiSelectBox.css';const r = {
161
157
  /* @__PURE__ */ u(
162
158
  "div",
163
159
  {
164
- id: v,
165
- className: h(r["multi-select-box-listbox--wrapper"]),
160
+ id: h,
161
+ className: _(r["multi-select-box-listbox--wrapper"]),
166
162
  style: { ...D.style, visibility: s ? "visible" : "hidden" },
167
163
  role: "listbox",
168
164
  ref: K,
169
- children: /* @__PURE__ */ u("ul", { className: r["multi-select-box-listbox"], ref: A, children: c.map(({ label: e, value: t, disabled: o }, l) => /* @__PURE__ */ u(
165
+ children: /* @__PURE__ */ u("ul", { className: r["multi-select-box-listbox"], ref: N, children: c.map(({ label: e, value: t, disabled: l }, o) => /* @__PURE__ */ u(
170
166
  "li",
171
167
  {
172
- className: h(r["multi-select-box-listbox-option"], {
173
- [r["multi-select-box-listbox-option--active"]]: l === d,
174
- [r["multi-select-box-listbox-option--disabled"]]: o
168
+ className: _(r["multi-select-box-listbox-option"], {
169
+ [r["multi-select-box-listbox-option--active"]]: o === b,
170
+ [r["multi-select-box-listbox-option--disabled"]]: l
175
171
  }),
176
172
  role: "option",
177
173
  onKeyDown: T,
178
- onClick: (i) => j(i, { label: e, value: t, disabled: o }),
179
- onMouseOver: () => x(l),
180
- onFocus: () => x(l),
174
+ onClick: (i) => j(i, { label: e, value: t, disabled: l }),
175
+ onMouseOver: () => x(o),
176
+ onFocus: () => x(o),
181
177
  tabIndex: 0,
182
178
  "aria-selected": n.some((i) => i.value === t),
183
- children: /* @__PURE__ */ g("label", { htmlFor: e, className: r["multi-select-box-listbox-option-content"], tabIndex: -1, children: [
179
+ children: /* @__PURE__ */ f("label", { htmlFor: e, className: r["multi-select-box-listbox-option-content"], tabIndex: -1, children: [
184
180
  /* @__PURE__ */ u(
185
181
  G,
186
182
  {
187
- id: `${e}-${v}`,
183
+ id: `${e}-${h}`,
188
184
  onChange: z,
189
185
  value: t,
190
186
  tabIndex: -1,
191
- disabled: o,
187
+ disabled: l,
192
188
  checked: n.some((i) => i.value === t)
193
189
  }
194
190
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelectBox.js","sources":["../../../src/components/MultiSelectBox/MultiSelectBox.tsx"],"sourcesContent":["import { useRef, useState, useId, useEffect, useCallback } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { KeyboardEvent, ChangeEvent, MouseEvent } from 'react';\n\nimport styles from './MultiSelectBox.module.css';\n\nimport { Icon } from 'components/Icon';\nimport { Checkbox } from 'components/Checkbox';\nimport { usePositionedFloaters } from 'components/hooks/usePositionedFloaters';\n\nexport type MultiSelectData = {\n label: string;\n value: string | number;\n disabled?: boolean;\n};\n\nexport interface MultiSelectBoxProps {\n /** Array of label, values pairs */\n selectData: MultiSelectData[];\n /** Retuns selected label, values */\n onChange: (values: MultiSelectData[]) => void;\n /** Array of label, value pairs that should be check by default */\n defaultSelectedItems?: MultiSelectData[];\n /** Suffix label in the selectbutton '[count] selected' */\n labelSuffix?: string;\n /** Disables the multiselect */\n disabled?: boolean;\n /** If true sets the option dropdown min-width to the width of the select button. */\n fullWidth?: boolean;\n /** Dark border. */\n darkBorder?: boolean;\n /** The max height of the options. */\n maxOptionHeight?: `${number}${'px' | 'rem'}`;\n /** `true` to align the right side of the options with the select box; otherwise, `false` to align on the left side. */\n optionPositionRight?: boolean;\n}\n\nexport const MultiSelectBox = ({\n selectData,\n onChange,\n defaultSelectedItems,\n labelSuffix = 'geselecteerd',\n disabled = false,\n fullWidth = false,\n darkBorder = false,\n maxOptionHeight,\n optionPositionRight,\n}: MultiSelectBoxProps) => {\n const multiselectboxId = useId();\n const [selectedItems, setSelectedItems] = useState<MultiSelectData[]>(defaultSelectedItems || []);\n const [selectedItemsCount, setSelectedItemsCount] = useState(defaultSelectedItems?.length || 0);\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const optionListRef = useRef<HTMLUListElement>(null);\n\n const [positionElement, setPositionElement] = useState<HTMLElement | null>(null);\n const [referenceElement, setReferenceElement] = useState<HTMLButtonElement | null>(null);\n const { style: positionStyle } = usePositionedFloaters(positionElement, referenceElement, {\n mouseEvent: 'click',\n position: 'bottomLeft',\n offset: 4,\n maxFixedHeight: maxOptionHeight,\n horizontalPosition: optionPositionRight ? 'right' : 'left',\n mobileBreakpoint: '28rem',\n fullWidth,\n });\n\n const onMouseEventOutside = useCallback(\n ({ target }: Event | MouseEvent) => {\n if (!target || !wrapperRef.current) return;\n\n if (!wrapperRef.current.contains(target as Node)) {\n setIsOpen(false);\n }\n },\n [setIsOpen]\n );\n\n const onTriggerKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>) => {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n setIsOpen(true);\n break;\n case 'Escape':\n if (isOpen) {\n event.stopPropagation();\n setIsOpen(false);\n }\n break;\n default:\n break;\n }\n },\n [isOpen]\n );\n\n const onOptionKeyDown = useCallback(\n (event: KeyboardEvent<HTMLLIElement>) => {\n if (!isOpen) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n setActiveIndex((prev) => {\n let nextIndex = prev;\n do {\n nextIndex = nextIndex < selectData.length - 1 ? nextIndex + 1 : 0;\n } while (selectData[nextIndex]?.disabled);\n return nextIndex;\n });\n break;\n case 'ArrowUp':\n event.preventDefault();\n setActiveIndex((prev) => {\n let nextIndex = prev;\n do {\n nextIndex = nextIndex <= 0 ? selectData.length - 1 : nextIndex - 1;\n } while (selectData[nextIndex]?.disabled);\n return nextIndex;\n });\n break;\n case 'Enter': {\n event.preventDefault();\n const selectedItem = selectData[activeIndex];\n if (!selectedItem || selectedItem.disabled) break;\n const isAlreadySelected = selectedItems.some((item) => item.value === selectedItem.value);\n const updatedSelectedItems = isAlreadySelected\n ? selectedItems.filter((item) => item.value !== selectedItem.value)\n : [...selectedItems, selectedItem];\n\n setSelectedItems(updatedSelectedItems);\n setSelectedItemsCount(updatedSelectedItems.length);\n onChange(updatedSelectedItems);\n break;\n }\n case 'Tab':\n event.preventDefault();\n setIsOpen(false);\n break;\n case 'Escape':\n event.stopPropagation();\n setIsOpen(false);\n break;\n default:\n break;\n }\n },\n [activeIndex, isOpen, selectData, selectedItems, onChange]\n );\n\n const onOptionClick = (event: MouseEvent<HTMLLIElement>, option: MultiSelectData) => {\n if (option.disabled) return;\n\n // Prevent toggle if click originated from the checkbox\n if ((event.target as HTMLElement).tagName === 'INPUT') return;\n\n const isAlreadySelected = selectedItems.some((item) => item.value === option.value);\n const updatedSelectedItems = isAlreadySelected\n ? selectedItems.filter((item) => item.value !== option.value)\n : [...selectedItems, option];\n\n setSelectedItems(updatedSelectedItems);\n setSelectedItemsCount(updatedSelectedItems.length);\n onChange(updatedSelectedItems);\n };\n\n const handleSelect = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { checked, value } = event.target;\n let updatedSelectedItems = [...selectedItems];\n\n if (checked) {\n const selectedItem = selectData.find((item) => item.value === value);\n if (selectedItem) {\n updatedSelectedItems.push(selectedItem);\n }\n } else {\n updatedSelectedItems = updatedSelectedItems.filter((item) => item.value !== value);\n }\n\n setSelectedItems(updatedSelectedItems);\n setSelectedItemsCount(updatedSelectedItems.length);\n onChange(updatedSelectedItems);\n },\n [selectData, selectedItems, onChange]\n );\n\n useEffect(() => {\n if (isOpen) {\n setActiveIndex(0);\n }\n }, [isOpen]);\n\n useEffect(() => {\n const activeOption = optionListRef.current?.children[activeIndex] as HTMLElement;\n activeOption?.focus();\n }, [activeIndex]);\n\n useEffect(() => {\n if (!isOpen) return;\n\n document.addEventListener('click', onMouseEventOutside, true);\n document.addEventListener('scroll', onMouseEventOutside, true);\n\n return () => {\n document.removeEventListener('click', onMouseEventOutside, true);\n document.removeEventListener('scroll', onMouseEventOutside, true);\n };\n }, [onMouseEventOutside, isOpen]);\n\n return (\n <div className={styles['multi-select-box-wrapper']} ref={wrapperRef}>\n <button\n className={clsx(styles['multi-select-box-trigger'], {\n [styles['multi-select-box-trigger--darkBorder']]: darkBorder,\n })}\n type=\"button\"\n onClick={() => {\n setIsOpen(!isOpen);\n }}\n onKeyDown={onTriggerKeyDown}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-label={`${selectedItemsCount} ${labelSuffix}`}\n disabled={disabled}\n {...(isOpen && { 'aria-controls': multiselectboxId })}\n ref={setReferenceElement}\n >\n <span className={styles['multi-select-box-trigger-label']}>\n {selectedItemsCount} {labelSuffix}\n </span>\n <Icon\n className={clsx(styles['multi-select-box-trigger-icon'], {\n [styles['multi-select-box-trigger-icon--open']]: isOpen,\n })}\n name=\"CheveronDown\"\n size={16}\n />\n </button>\n\n <div\n id={multiselectboxId}\n className={clsx(styles['multi-select-box-listbox--wrapper'])}\n style={{ ...positionStyle.style, visibility: isOpen ? 'visible' : 'hidden' }}\n role=\"listbox\"\n ref={setPositionElement}\n >\n <ul className={styles['multi-select-box-listbox']} ref={optionListRef}>\n {selectData.map(({ label, value, disabled }, index) => (\n <li\n className={clsx(styles['multi-select-box-listbox-option'], {\n [styles['multi-select-box-listbox-option--active']]: index === activeIndex,\n [styles['multi-select-box-listbox-option--disabled']]: disabled,\n })}\n key={value}\n role=\"option\"\n onKeyDown={onOptionKeyDown}\n onClick={(event) => onOptionClick(event, { label, value, disabled })}\n onMouseOver={() => setActiveIndex(index)}\n onFocus={() => setActiveIndex(index)}\n tabIndex={0}\n aria-selected={selectedItems.some((item) => item.value === value)}\n >\n <label htmlFor={label} className={styles['multi-select-box-listbox-option-content']} tabIndex={-1}>\n <Checkbox\n id={`${label}-${multiselectboxId}`}\n onChange={handleSelect}\n value={value}\n tabIndex={-1}\n disabled={disabled}\n checked={selectedItems.some((item) => item.value === value)}\n />\n <span>{label}</span>\n </label>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n"],"names":["MultiSelectBox","selectData","onChange","defaultSelectedItems","labelSuffix","disabled","fullWidth","darkBorder","maxOptionHeight","optionPositionRight","multiselectboxId","useId","selectedItems","setSelectedItems","useState","selectedItemsCount","setSelectedItemsCount","isOpen","setIsOpen","activeIndex","setActiveIndex","wrapperRef","useRef","optionListRef","positionElement","setPositionElement","referenceElement","setReferenceElement","positionStyle","usePositionedFloaters","onMouseEventOutside","useCallback","target","onTriggerKeyDown","event","onOptionKeyDown","prev","nextIndex","_a","selectedItem","updatedSelectedItems","item","onOptionClick","option","handleSelect","checked","value","useEffect","activeOption","styles","jsxs","clsx","jsx","Icon","label","index","Checkbox"],"mappings":"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"}
1
+ {"version":3,"file":"MultiSelectBox.js","sources":["../../../src/components/MultiSelectBox/MultiSelectBox.tsx"],"sourcesContent":["import { useRef, useState, useId, useEffect, useCallback } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { KeyboardEvent, ChangeEvent, MouseEvent } from 'react';\n\nimport styles from './MultiSelectBox.module.css';\n\nimport { Icon } from 'components/Icon';\nimport { Checkbox } from 'components/Checkbox';\nimport { usePositionedFloaters } from 'components/hooks/usePositionedFloaters';\n\nexport type MultiSelectData = {\n label: string;\n value: string | number;\n disabled?: boolean;\n};\n\nexport interface MultiSelectBoxProps {\n /** Array of label, values pairs */\n selectData: MultiSelectData[];\n /** Retuns selected label, values */\n onChange: (values: MultiSelectData[]) => void;\n /** Array of label, value pairs that should be check by default */\n defaultSelectedItems?: MultiSelectData[];\n /** Suffix label in the selectbutton '[count] selected' */\n labelSuffix?: string;\n /** Disables the multiselect */\n disabled?: boolean;\n /** If true sets the option dropdown min-width to the width of the select button. */\n fullWidth?: boolean;\n /** Dark border. */\n darkBorder?: boolean;\n /** The max height of the options. */\n maxOptionHeight?: `${number}${'px' | 'rem'}`;\n /** `true` to align the right side of the options with the select box; otherwise, `false` to align on the left side. */\n optionPositionRight?: boolean;\n}\n\nexport const MultiSelectBox = ({\n selectData,\n onChange,\n defaultSelectedItems,\n labelSuffix = 'geselecteerd',\n disabled = false,\n fullWidth = false,\n darkBorder = false,\n maxOptionHeight,\n optionPositionRight,\n}: MultiSelectBoxProps) => {\n const multiselectboxId = useId();\n const [selectedItems, setSelectedItems] = useState<MultiSelectData[]>(defaultSelectedItems || []);\n const [selectedItemsCount, setSelectedItemsCount] = useState(defaultSelectedItems?.length || 0);\n const [isOpen, setIsOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const optionListRef = useRef<HTMLUListElement>(null);\n\n const [positionElement, setPositionElement] = useState<HTMLElement | null>(null);\n const [referenceElement, setReferenceElement] = useState<HTMLButtonElement | null>(null);\n const { style: positionStyle } = usePositionedFloaters(positionElement, referenceElement, {\n mouseEvent: 'click',\n position: 'bottomLeft',\n offset: 4,\n maxFixedHeight: maxOptionHeight,\n horizontalPosition: optionPositionRight ? 'right' : 'left',\n mobileBreakpoint: '28rem',\n fullWidth,\n });\n\n const onMouseEventOutside = useCallback(\n ({ target }: Event | MouseEvent) => {\n if (!target || !wrapperRef.current) return;\n\n if (!wrapperRef.current.contains(target as Node)) {\n setIsOpen(false);\n }\n },\n [setIsOpen]\n );\n\n const onTriggerKeyDown = useCallback(\n (event: KeyboardEvent<HTMLButtonElement>) => {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n setIsOpen(true);\n break;\n case 'Escape':\n if (isOpen) {\n event.stopPropagation();\n setIsOpen(false);\n }\n break;\n default:\n break;\n }\n },\n [isOpen]\n );\n\n const onOptionKeyDown = useCallback(\n (event: KeyboardEvent<HTMLLIElement>) => {\n if (!isOpen) return;\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n setActiveIndex((prev) => {\n let nextIndex = prev;\n do {\n nextIndex = nextIndex < selectData.length - 1 ? nextIndex + 1 : 0;\n } while (selectData[nextIndex]?.disabled);\n return nextIndex;\n });\n break;\n case 'ArrowUp':\n event.preventDefault();\n setActiveIndex((prev) => {\n let nextIndex = prev;\n do {\n nextIndex = nextIndex <= 0 ? selectData.length - 1 : nextIndex - 1;\n } while (selectData[nextIndex]?.disabled);\n return nextIndex;\n });\n break;\n case 'Enter': {\n event.preventDefault();\n const selectedItem = selectData[activeIndex];\n if (!selectedItem || selectedItem.disabled) break;\n const isAlreadySelected = selectedItems.some((item) => item.value === selectedItem.value);\n const updatedSelectedItems = isAlreadySelected\n ? selectedItems.filter((item) => item.value !== selectedItem.value)\n : [...selectedItems, selectedItem];\n\n setSelectedItems(updatedSelectedItems);\n setSelectedItemsCount(updatedSelectedItems.length);\n onChange(updatedSelectedItems);\n break;\n }\n case 'Tab':\n event.preventDefault();\n setIsOpen(false);\n break;\n case 'Escape':\n event.stopPropagation();\n setIsOpen(false);\n break;\n default:\n break;\n }\n },\n [activeIndex, isOpen, selectData, selectedItems, onChange]\n );\n\n const onOptionClick = (event: MouseEvent<HTMLLIElement>, option: MultiSelectData) => {\n if (option.disabled) return;\n\n // Prevent toggle if click originated from the checkbox\n if ((event.target as HTMLElement).tagName === 'INPUT') return;\n\n const isAlreadySelected = selectedItems.some((item) => item.value === option.value);\n const updatedSelectedItems = isAlreadySelected\n ? selectedItems.filter((item) => item.value !== option.value)\n : [...selectedItems, option];\n\n setSelectedItems(updatedSelectedItems);\n setSelectedItemsCount(updatedSelectedItems.length);\n onChange(updatedSelectedItems);\n };\n\n const handleSelect = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const { checked, value } = event.target;\n let updatedSelectedItems = [...selectedItems];\n\n if (checked) {\n const selectedItem = selectData.find((item) => item.value === value);\n if (selectedItem) {\n updatedSelectedItems.push(selectedItem);\n }\n } else {\n updatedSelectedItems = updatedSelectedItems.filter((item) => item.value !== value);\n }\n\n setSelectedItems(updatedSelectedItems);\n setSelectedItemsCount(updatedSelectedItems.length);\n onChange(updatedSelectedItems);\n },\n [selectData, selectedItems, onChange]\n );\n\n useEffect(() => {\n if (isOpen) {\n setActiveIndex(0);\n }\n }, [isOpen]);\n\n useEffect(() => {\n const activeOption = optionListRef.current?.children[activeIndex] as HTMLElement;\n activeOption?.focus();\n }, [activeIndex]);\n\n useEffect(() => {\n if (!isOpen) return;\n\n document.addEventListener('click', onMouseEventOutside, true);\n document.addEventListener('scroll', onMouseEventOutside, true);\n\n return () => {\n document.removeEventListener('click', onMouseEventOutside, true);\n document.removeEventListener('scroll', onMouseEventOutside, true);\n };\n }, [onMouseEventOutside, isOpen]);\n\n return (\n <div className={styles['multi-select-box-wrapper']} ref={wrapperRef}>\n <button\n className={clsx(styles['multi-select-box-trigger'], {\n [styles['multi-select-box-trigger--darkBorder']]: darkBorder,\n })}\n type=\"button\"\n onClick={() => {\n setIsOpen(!isOpen);\n }}\n onKeyDown={onTriggerKeyDown}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-label={`${selectedItemsCount} ${labelSuffix}`}\n disabled={disabled}\n {...(isOpen && { 'aria-controls': multiselectboxId })}\n ref={setReferenceElement}\n >\n <span className={styles['multi-select-box-trigger-label']}>\n {selectedItemsCount} {labelSuffix}\n </span>\n <Icon\n className={clsx(styles['multi-select-box-trigger-icon'], {\n [styles['multi-select-box-trigger-icon--open']]: isOpen,\n })}\n name=\"CheveronDown\"\n size={16}\n />\n </button>\n\n <div\n id={multiselectboxId}\n className={clsx(styles['multi-select-box-listbox--wrapper'])}\n style={{ ...positionStyle.style, visibility: isOpen ? 'visible' : 'hidden' }}\n role=\"listbox\"\n ref={setPositionElement}\n >\n <ul className={styles['multi-select-box-listbox']} ref={optionListRef}>\n {selectData.map(({ label, value, disabled }, index) => (\n <li\n className={clsx(styles['multi-select-box-listbox-option'], {\n [styles['multi-select-box-listbox-option--active']]: index === activeIndex,\n [styles['multi-select-box-listbox-option--disabled']]: disabled,\n })}\n key={value}\n role=\"option\"\n onKeyDown={onOptionKeyDown}\n onClick={(event) => onOptionClick(event, { label, value, disabled })}\n onMouseOver={() => setActiveIndex(index)}\n onFocus={() => setActiveIndex(index)}\n tabIndex={0}\n aria-selected={selectedItems.some((item) => item.value === value)}\n >\n <label htmlFor={label} className={styles['multi-select-box-listbox-option-content']} tabIndex={-1}>\n <Checkbox\n id={`${label}-${multiselectboxId}`}\n onChange={handleSelect}\n value={value}\n tabIndex={-1}\n disabled={disabled}\n checked={selectedItems.some((item) => item.value === value)}\n />\n <span>{label}</span>\n </label>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n"],"names":["MultiSelectBox","selectData","onChange","defaultSelectedItems","labelSuffix","disabled","fullWidth","darkBorder","maxOptionHeight","optionPositionRight","multiselectboxId","useId","selectedItems","setSelectedItems","useState","selectedItemsCount","setSelectedItemsCount","isOpen","setIsOpen","activeIndex","setActiveIndex","wrapperRef","useRef","optionListRef","positionElement","setPositionElement","referenceElement","setReferenceElement","positionStyle","usePositionedFloaters","onMouseEventOutside","useCallback","target","onTriggerKeyDown","event","onOptionKeyDown","prev","nextIndex","selectedItem","updatedSelectedItems","item","onOptionClick","option","handleSelect","checked","value","useEffect","styles","jsxs","clsx","jsx","Icon","label","index","Checkbox"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as l } from "react/jsx-runtime";
2
- import { W as n } from "../../index-Di9WPZUe.js";
2
+ import { l as n } from "../../index-C2E9FY6V.js";
3
3
  import { MultiSelectBox as e } from "./MultiSelectBox.js";
4
4
  const c = "<MultiSelectBox selectData={[{label, value}]} onChange={fn} labelSuffix={string} />", f = {
5
5
  title: "Organisms/MultiSelectBox",
@@ -1,6 +1,6 @@
1
1
  import { jsx as o, jsxs as d, Fragment as r } from "react/jsx-runtime";
2
- import "../../index-DV47hRzi.js";
3
- import { r as n, s as t, f as a } from "../../react.esm-CFMwGdo5.js";
2
+ import "../../index-Br0QepD6.js";
3
+ import { r as n, s as t, f as a } from "../../react.esm-BKjCIfbB.js";
4
4
  import { MultiSelectBox as l } from "./MultiSelectBox.js";
5
5
  const i = jest.fn(), c = [
6
6
  { label: "Option 1", value: "1" },
@@ -1,7 +1,7 @@
1
1
  import { jsx as i } from "react/jsx-runtime";
2
- import { W as a } from "../../index-Di9WPZUe.js";
2
+ import { l as a } from "../../index-C2E9FY6V.js";
3
3
  import { Notification as t } from "./Notification.js";
4
- const r = `<Notification title={title} subtitle={subtitle} action={action}
4
+ const l = `<Notification title={title} subtitle={subtitle} action={action}
5
5
  level={level} variant={variant} onClose={() => {}} />`, m = {
6
6
  title: "Molecules/Notification",
7
7
  component: t,
@@ -17,14 +17,14 @@ const r = `<Notification title={title} subtitle={subtitle} action={action}
17
17
  },
18
18
  parameters: {
19
19
  inspectComponent: t,
20
- codeString: r
20
+ codeString: l
21
21
  }
22
22
  }, e = (n) => /* @__PURE__ */ i(t, { ...n }), o = {
23
23
  level: "information",
24
24
  title: "Titel van de melding",
25
25
  onClose: a()
26
- }, l = e.bind({});
27
- l.args = {
26
+ }, r = e.bind({});
27
+ r.args = {
28
28
  ...o,
29
29
  variant: "default",
30
30
  subtitle: "Subtekst ter verduidelijking van de melding.",
@@ -37,7 +37,7 @@ s.args = {
37
37
  };
38
38
  export {
39
39
  s as AsBar,
40
- l as NotificationExample,
40
+ r as NotificationExample,
41
41
  m as default
42
42
  };
43
43
  //# sourceMappingURL=Notification.stories.js.map
@@ -1,6 +1,6 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import "../../index-DV47hRzi.js";
3
- import { r as i, s as t } from "../../react.esm-CFMwGdo5.js";
2
+ import "../../index-Br0QepD6.js";
3
+ import { r as i, s as t } from "../../react.esm-BKjCIfbB.js";
4
4
  import { Notification as n } from "./Notification.js";
5
5
  describe("Notification", () => {
6
6
  it("renders title and subtitle", () => {
@@ -1,7 +1,7 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { W as a } from "../../index-Di9WPZUe.js";
2
+ import { l as t } from "../../index-C2E9FY6V.js";
3
3
  import { OverlayCloseButton as o } from "./OverlayCloseButton.js";
4
- import { Container as l } from "../../storyComponents/Container/Container.js";
4
+ import { Container as a } from "../../storyComponents/Container/Container.js";
5
5
  const r = "<OverlayCloseButton aria-label={aria-label} onClick={onClickFunction} />", c = {
6
6
  title: "Atoms/OverlayCloseButton",
7
7
  component: o,
@@ -17,11 +17,11 @@ const r = "<OverlayCloseButton aria-label={aria-label} onClick={onClickFunction}
17
17
  inspectComponent: o,
18
18
  codeString: r
19
19
  }
20
- }, n = (t) => /* @__PURE__ */ e(l, { size: "small", padded: !1, children: /* @__PURE__ */ e(o, { ...t }) }), s = n.bind({});
20
+ }, n = (l) => /* @__PURE__ */ e(a, { size: "small", padded: !1, children: /* @__PURE__ */ e(o, { ...l }) }), s = n.bind({});
21
21
  s.args = {
22
22
  paddedModal: !1,
23
23
  "aria-label": "Close",
24
- onClick: a()
24
+ onClick: t()
25
25
  };
26
26
  export {
27
27
  s as OverlayCloseButtonExample,
@@ -1,7 +1,7 @@
1
- import { jsx as l } from "react/jsx-runtime";
2
- import { useState as p } from "react";
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import { useState as l } from "react";
3
3
  import { OverlayStepBar as t } from "./OverlayStepBar.js";
4
- const c = "<OverlayStepBar stepLabels={[string]} activeStep={number} disabledCountPrefix={[numbers]} onStepClick={(step) => void}/>", u = {
4
+ const p = "<OverlayStepBar stepLabels={[string]} activeStep={number} disabledCountPrefix={[numbers]} onStepClick={(step) => void}/>", b = {
5
5
  title: "Molecules/OverlayStepBar",
6
6
  component: t,
7
7
  argTypes: {
@@ -16,38 +16,37 @@ const c = "<OverlayStepBar stepLabels={[string]} activeStep={number} disabledCou
16
16
  },
17
17
  parameters: {
18
18
  inspectComponent: t,
19
- codeString: c
19
+ codeString: p
20
20
  }
21
- }, o = (e) => {
22
- const [s, n] = p(e.activeStep || 1);
23
- return /* @__PURE__ */ l(
21
+ }, a = (e) => {
22
+ const [s, o] = l(e.activeStep || 1);
23
+ return /* @__PURE__ */ n(
24
24
  t,
25
25
  {
26
26
  ...e,
27
27
  activeStep: s,
28
- onStepClick: (i) => {
29
- var r;
30
- n(i), (r = e.onStepClick) == null || r.call(e, i);
28
+ onStepClick: (r) => {
29
+ o(r), e.onStepClick?.(r);
31
30
  }
32
31
  }
33
32
  );
34
- }, a = {
33
+ }, i = {
35
34
  stepLabels: ["Basic Details", "Lecturers", "Period Planning", "Assessment", "Miscellaneous", "Overview"]
36
- }, S = o.bind({});
37
- S.args = {
38
- ...a,
35
+ }, c = a.bind({});
36
+ c.args = {
37
+ ...i,
39
38
  activeStep: 2
40
39
  };
41
- const d = o.bind({});
42
- d.args = {
43
- ...a,
40
+ const S = a.bind({});
41
+ S.args = {
42
+ ...i,
44
43
  // eslint-disable-next-line @typescript-eslint/no-magic-numbers
45
44
  disabledCountPrefix: [1, 6],
46
45
  activeStep: 2
47
46
  };
48
47
  export {
49
- S as OverlayStepBarExample,
50
- d as OverlayStepBarHidePrifix,
51
- u as default
48
+ c as OverlayStepBarExample,
49
+ S as OverlayStepBarHidePrifix,
50
+ b as default
52
51
  };
53
52
  //# sourceMappingURL=OverlayStepBar.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayStepBar.stories.js","sources":["../../../src/components/OverlayStepBar/OverlayStepBar.stories.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport type { Meta, StoryFn } from '@storybook/react';\nimport type { OverlayStepBarProps } from './OverlayStepBar';\n\nimport { OverlayStepBar } from './OverlayStepBar';\n\nconst codeString =\n '<OverlayStepBar stepLabels={[string]} activeStep={number} disabledCountPrefix={[numbers]} onStepClick={(step) => void}/>';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n title: 'Molecules/OverlayStepBar',\n component: OverlayStepBar,\n argTypes: {\n activeStep: { control: 'number' },\n stepLabels: { control: 'object' },\n disabledCountPrefix: {\n table: {\n disable: true,\n },\n },\n onStepClick: { action: 'stepClicked' },\n },\n parameters: {\n inspectComponent: OverlayStepBar,\n codeString: codeString,\n },\n} as Meta<OverlayStepBarProps>;\n\nconst Template: StoryFn<OverlayStepBarProps> = (args) => {\n const [activeStep, setActiveStep] = useState(args.activeStep || 1);\n\n return (\n <OverlayStepBar\n {...args}\n activeStep={activeStep}\n onStepClick={(step) => {\n setActiveStep(step);\n args.onStepClick?.(step);\n }}\n />\n );\n};\n\nconst defaultArgs: Partial<OverlayStepBarProps> = {\n stepLabels: ['Basic Details', 'Lecturers', 'Period Planning', 'Assessment', 'Miscellaneous', 'Overview'],\n};\n\nexport const OverlayStepBarExample = Template.bind({});\nOverlayStepBarExample.args = {\n ...defaultArgs,\n activeStep: 2,\n};\n\nexport const OverlayStepBarHidePrifix = Template.bind({});\nOverlayStepBarHidePrifix.args = {\n ...defaultArgs,\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n disabledCountPrefix: [1, 6],\n activeStep: 2,\n};\n"],"names":["codeString","OverlayStepBar_stories","OverlayStepBar","Template","args","activeStep","setActiveStep","useState","jsx","step","_a","defaultArgs","OverlayStepBarExample","OverlayStepBarHidePrifix"],"mappings":";;;AAOA,MAAMA,IACJ,4HAGFC,IAAe;AAAA,EACb,OAAO;AAAA,EACP,WAAWC;AAAA,EACX,UAAU;AAAA,IACR,YAAY,EAAE,SAAS,SAAA;AAAA,IACvB,YAAY,EAAE,SAAS,SAAA;AAAA,IACvB,qBAAqB;AAAA,MACnB,OAAO;AAAA,QACL,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,aAAa,EAAE,QAAQ,cAAA;AAAA,EAAc;AAAA,EAEvC,YAAY;AAAA,IACV,kBAAkBA;AAAA,IAClB,YAAAF;AAAA,EAAA;AAEJ,GAEMG,IAAyC,CAACC,MAAS;AACvD,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAASH,EAAK,cAAc,CAAC;AAEjE,SACE,gBAAAI;AAAA,IAACN;AAAA,IAAA;AAAA,MACE,GAAGE;AAAA,MACJ,YAAAC;AAAA,MACA,aAAa,CAACI,MAAS;;AACrB,QAAAH,EAAcG,CAAI,IAClBC,IAAAN,EAAK,gBAAL,QAAAM,EAAA,KAAAN,GAAmBK;AAAA,MAAI;AAAA,IACzB;AAAA,EAAA;AAGN,GAEME,IAA4C;AAAA,EAChD,YAAY,CAAC,iBAAiB,aAAa,mBAAmB,cAAc,iBAAiB,UAAU;AACzG,GAEaC,IAAwBT,EAAS,KAAK,CAAA,CAAE;AACrDS,EAAsB,OAAO;AAAA,EAC3B,GAAGD;AAAA,EACH,YAAY;AACd;AAEO,MAAME,IAA2BV,EAAS,KAAK,CAAA,CAAE;AACxDU,EAAyB,OAAO;AAAA,EAC9B,GAAGF;AAAA;AAAA,EAEH,qBAAqB,CAAC,GAAG,CAAC;AAAA,EAC1B,YAAY;AACd;"}
1
+ {"version":3,"file":"OverlayStepBar.stories.js","sources":["../../../src/components/OverlayStepBar/OverlayStepBar.stories.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport type { Meta, StoryFn } from '@storybook/react';\nimport type { OverlayStepBarProps } from './OverlayStepBar';\n\nimport { OverlayStepBar } from './OverlayStepBar';\n\nconst codeString =\n '<OverlayStepBar stepLabels={[string]} activeStep={number} disabledCountPrefix={[numbers]} onStepClick={(step) => void}/>';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n title: 'Molecules/OverlayStepBar',\n component: OverlayStepBar,\n argTypes: {\n activeStep: { control: 'number' },\n stepLabels: { control: 'object' },\n disabledCountPrefix: {\n table: {\n disable: true,\n },\n },\n onStepClick: { action: 'stepClicked' },\n },\n parameters: {\n inspectComponent: OverlayStepBar,\n codeString: codeString,\n },\n} as Meta<OverlayStepBarProps>;\n\nconst Template: StoryFn<OverlayStepBarProps> = (args) => {\n const [activeStep, setActiveStep] = useState(args.activeStep || 1);\n\n return (\n <OverlayStepBar\n {...args}\n activeStep={activeStep}\n onStepClick={(step) => {\n setActiveStep(step);\n args.onStepClick?.(step);\n }}\n />\n );\n};\n\nconst defaultArgs: Partial<OverlayStepBarProps> = {\n stepLabels: ['Basic Details', 'Lecturers', 'Period Planning', 'Assessment', 'Miscellaneous', 'Overview'],\n};\n\nexport const OverlayStepBarExample = Template.bind({});\nOverlayStepBarExample.args = {\n ...defaultArgs,\n activeStep: 2,\n};\n\nexport const OverlayStepBarHidePrifix = Template.bind({});\nOverlayStepBarHidePrifix.args = {\n ...defaultArgs,\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers\n disabledCountPrefix: [1, 6],\n activeStep: 2,\n};\n"],"names":["codeString","OverlayStepBar_stories","OverlayStepBar","Template","args","activeStep","setActiveStep","useState","jsx","step","defaultArgs","OverlayStepBarExample","OverlayStepBarHidePrifix"],"mappings":";;;AAOA,MAAMA,IACJ,4HAGFC,IAAe;AAAA,EACb,OAAO;AAAA,EACP,WAAWC;AAAA,EACX,UAAU;AAAA,IACR,YAAY,EAAE,SAAS,SAAA;AAAA,IACvB,YAAY,EAAE,SAAS,SAAA;AAAA,IACvB,qBAAqB;AAAA,MACnB,OAAO;AAAA,QACL,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,aAAa,EAAE,QAAQ,cAAA;AAAA,EAAc;AAAA,EAEvC,YAAY;AAAA,IACV,kBAAkBA;AAAA,IAClB,YAAAF;AAAA,EAAA;AAEJ,GAEMG,IAAyC,CAACC,MAAS;AACvD,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAASH,EAAK,cAAc,CAAC;AAEjE,SACE,gBAAAI;AAAA,IAACN;AAAA,IAAA;AAAA,MACE,GAAGE;AAAA,MACJ,YAAAC;AAAA,MACA,aAAa,CAACI,MAAS;AACrB,QAAAH,EAAcG,CAAI,GAClBL,EAAK,cAAcK,CAAI;AAAA,MAAA;AAAA,IACzB;AAAA,EAAA;AAGN,GAEMC,IAA4C;AAAA,EAChD,YAAY,CAAC,iBAAiB,aAAa,mBAAmB,cAAc,iBAAiB,UAAU;AACzG,GAEaC,IAAwBR,EAAS,KAAK,CAAA,CAAE;AACrDQ,EAAsB,OAAO;AAAA,EAC3B,GAAGD;AAAA,EACH,YAAY;AACd;AAEO,MAAME,IAA2BT,EAAS,KAAK,CAAA,CAAE;AACxDS,EAAyB,OAAO;AAAA,EAC9B,GAAGF;AAAA;AAAA,EAEH,qBAAqB,CAAC,GAAG,CAAC;AAAA,EAC1B,YAAY;AACd;"}
@@ -1,4 +1,4 @@
1
- import { jsxs as h, jsx as s } from "react/jsx-runtime";
1
+ import { jsxs as f, jsx as l } from "react/jsx-runtime";
2
2
  import { c as x } from "../../clsx-OuTLNxxd.js";
3
3
  import { useRef as v, useState as M, useEffect as $ } from "react";
4
4
  import "../Buttons/Button.js";
@@ -17,76 +17,76 @@ import "../Input/Input.js";
17
17
  import "../InputField/InputField.js";
18
18
  import { Label as B } from "../Label/Label.js";
19
19
  import "react-router";
20
- import "../../TablePlugin-NmJsn2fm.js";
20
+ import "../../TablePlugin-Dmy98Epb.js";
21
21
  import "../RteEditor/Providers/LanguageProvider.js";
22
22
  import "../RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js";
23
23
  import "../RteEditor/hooks/components/Flyout.js";
24
- import "../../index-DllfJcv4.js";
24
+ import "../../index-nrPtQ1dv.js";
25
25
  import "../SelectListbox/SelectListbox.js";
26
26
  import "../SelectListbox/SelectProvider.js";
27
27
  import "../Sortable/components/SortableItem.js";
28
- import "../../SortableProvider-CwX1lFMa.js";
29
- import '../../assets/PeriodSelector.css';const l = {
28
+ import "../../SortableProvider-C2T7b-pm.js";
29
+ import '../../assets/PeriodSelector.css';const s = {
30
30
  "period-selector__container": "_period-selector__container_d1p0j_1",
31
31
  "period-selector__container--label-left": "_period-selector__container--label-left_d1p0j_6",
32
32
  "period-selector__container--label-top": "_period-selector__container--label-top_d1p0j_12",
33
33
  "period-selector__selector-container": "_period-selector__selector-container_d1p0j_18",
34
34
  "period-selector__selector-row": "_period-selector__selector-row_d1p0j_24"
35
- }, S = 0, f = 1, E = 2, _ = 3, D = 7, I = (n) => {
36
- const c = [];
37
- for (let t = 0; t < n.length; t += _)
38
- c.push(n.slice(t, t + _));
39
- return c;
40
- }, lr = ({
41
- maxPeriods: n = D,
42
- defaultValues: c,
35
+ }, h = 0, S = 1, E = 2, _ = 3, D = 7, I = (i) => {
36
+ const n = [];
37
+ for (let t = 0; t < i.length; t += _)
38
+ n.push(i.slice(t, t + _));
39
+ return n;
40
+ }, se = ({
41
+ maxPeriods: i = D,
42
+ defaultValues: n,
43
43
  label: t,
44
44
  labelPosition: b = "top",
45
45
  required: m = !1,
46
46
  notValidatedText: p = "",
47
47
  onChange: g
48
48
  }) => {
49
- const R = Array.from({ length: n }, (r, e) => e + 1), a = I(R), j = a.map((r, e) => r.map((o) => ({
50
- label: `${e + 1}${r.length === 1 ? "" : `.${(o - 1) % _ + 1}`}`,
49
+ const R = Array.from({ length: i }, (e, r) => r + 1), a = I(R), j = a.map((e, r) => e.map((o) => ({
50
+ label: `${r + 1}${e.length === 1 ? "" : `.${(o - 1) % _ + 1}`}`,
51
51
  value: o.toString()
52
- }))), i = v(
52
+ }))), c = v(
53
53
  a.map(
54
- (r) => r.reduce((e, o) => (c != null && c.includes(o) && e.push(o), e), [])
54
+ (e) => e.reduce((r, o) => (n?.includes(o) && r.push(o), r), [])
55
55
  )
56
- ), [P, d] = M([]), u = (r) => r[S].length !== 0 || r[f].length !== 0 ? [E] : r[E].length !== 0 ? [S, f] : [], k = (r, e) => {
57
- i.current[e] = r.map((o) => Number(o)), d(u(i.current)), g([...i.current.flat()].sort());
56
+ ), [P, d] = M([]), u = (e) => e[h].length !== 0 || e[S].length !== 0 ? [E] : e[E].length !== 0 ? [h, S] : [], k = (e, r) => {
57
+ c.current[r] = e.map((o) => Number(o)), d(u(c.current)), g([...c.current.flat()].sort());
58
58
  };
59
59
  return $(() => {
60
- d(u(i.current));
61
- }, []), /* @__PURE__ */ h(
60
+ d(u(c.current));
61
+ }, []), /* @__PURE__ */ f(
62
62
  "div",
63
63
  {
64
64
  className: x(
65
- l["period-selector__container"],
66
- l[`period-selector__container--label-${b}`]
65
+ s["period-selector__container"],
66
+ s[`period-selector__container--label-${b}`]
67
67
  ),
68
68
  children: [
69
- t && /* @__PURE__ */ s(B, { htmlFor: "", required: m, children: t }),
70
- /* @__PURE__ */ h("div", { className: l["period-selector__selector-container"], children: [
71
- /* @__PURE__ */ s("div", { className: l["period-selector__selector-row"], children: j.map((r, e) => /* @__PURE__ */ s(
69
+ t && /* @__PURE__ */ l(B, { htmlFor: "", required: m, children: t }),
70
+ /* @__PURE__ */ f("div", { className: s["period-selector__selector-container"], children: [
71
+ /* @__PURE__ */ l("div", { className: s["period-selector__selector-row"], children: j.map((e, r) => /* @__PURE__ */ l(
72
72
  N,
73
73
  {
74
- checkboxes: r,
75
- defaultValues: i.current[e].map((o) => o.toString()),
76
- disableGroup: P.includes(e),
74
+ checkboxes: e,
75
+ defaultValues: c.current[r].map((o) => o.toString()),
76
+ disableGroup: P.includes(r),
77
77
  required: m,
78
- onSetValues: (o) => k(o, e),
78
+ onSetValues: (o) => k(o, r),
79
79
  notValidated: p !== ""
80
80
  },
81
- `group_${e}`
81
+ `group_${r}`
82
82
  )) }),
83
- p !== "" && /* @__PURE__ */ s(w, { level: "error", feedback: p })
83
+ p !== "" && /* @__PURE__ */ l(w, { level: "error", feedback: p })
84
84
  ] })
85
85
  ]
86
86
  }
87
87
  );
88
88
  };
89
89
  export {
90
- lr as PeriodSelector
90
+ se as PeriodSelector
91
91
  };
92
92
  //# sourceMappingURL=PeriodSelector.js.map