@uva-glass/component-library 3.0.7 → 3.0.8

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 (101) hide show
  1. package/dist/Lexical.prod-D0woeN3R.js +4770 -0
  2. package/dist/Lexical.prod-D0woeN3R.js.map +1 -0
  3. package/dist/LexicalClipboard.prod-D9CvlqSO.js +258 -0
  4. package/dist/LexicalClipboard.prod-D9CvlqSO.js.map +1 -0
  5. package/dist/LexicalComposerContext.prod--Rm7-Z9o.js +26 -0
  6. package/dist/LexicalComposerContext.prod--Rm7-Z9o.js.map +1 -0
  7. package/dist/{LexicalLink.prod-JpC4y56U.js → LexicalLink.prod-__08uNAw.js} +51 -51
  8. package/dist/LexicalLink.prod-__08uNAw.js.map +1 -0
  9. package/dist/{LexicalList.prod-w0kSq9sB.js → LexicalList.prod-BgI8r9BS.js} +44 -44
  10. package/dist/LexicalList.prod-BgI8r9BS.js.map +1 -0
  11. package/dist/LexicalSelection.prod-B-SXpOS9.js +86 -0
  12. package/dist/LexicalSelection.prod-B-SXpOS9.js.map +1 -0
  13. package/dist/LexicalTable.prod-DJWDvnB3.js +1494 -0
  14. package/dist/LexicalTable.prod-DJWDvnB3.js.map +1 -0
  15. package/dist/LexicalUtils.prod-BYrJ1Iih.js +112 -0
  16. package/dist/LexicalUtils.prod-BYrJ1Iih.js.map +1 -0
  17. package/dist/{TablePlugin-Co5vgBHF.js → TablePlugin-BHY7_5Z8.js} +44 -44
  18. package/dist/{TablePlugin-Co5vgBHF.js.map → TablePlugin-BHY7_5Z8.js.map} +1 -1
  19. package/dist/components/Accordion/Accordion.test.js +3 -3
  20. package/dist/components/AccordionCard/AccordionCard.test.js +3 -3
  21. package/dist/components/ActionList/ActionList.test.d.ts +0 -0
  22. package/dist/components/ActionList/ActionList.test.js +60 -0
  23. package/dist/components/ActionList/ActionList.test.js.map +1 -0
  24. package/dist/components/AppStatusBar/AppStatusBar.test.d.ts +0 -0
  25. package/dist/components/AppStatusBar/AppStatusBar.test.js +10 -0
  26. package/dist/components/AppStatusBar/AppStatusBar.test.js.map +1 -0
  27. package/dist/components/Attention/Attention.test.d.ts +0 -0
  28. package/dist/components/Attention/Attention.test.js +10 -0
  29. package/dist/components/Attention/Attention.test.js.map +1 -0
  30. package/dist/components/Backdrop/Backdrop.test.d.ts +0 -0
  31. package/dist/components/Backdrop/Backdrop.test.js +10 -0
  32. package/dist/components/Backdrop/Backdrop.test.js.map +1 -0
  33. package/dist/components/Buttons/Button.test.d.ts +0 -0
  34. package/dist/components/Buttons/Button.test.js +35 -0
  35. package/dist/components/Buttons/Button.test.js.map +1 -0
  36. package/dist/components/Buttons/LinkButton.test.d.ts +0 -0
  37. package/dist/components/Buttons/LinkButton.test.js +67 -0
  38. package/dist/components/Buttons/LinkButton.test.js.map +1 -0
  39. package/dist/components/Buttons/MenuButton.test.d.ts +0 -0
  40. package/dist/components/Buttons/MenuButton.test.js +66 -0
  41. package/dist/components/Buttons/MenuButton.test.js.map +1 -0
  42. package/dist/components/CheckboxTree/CheckboxTree.js +1 -1
  43. package/dist/components/FormInput/FormInput.js +1 -1
  44. package/dist/components/InputField/InputField.stories.js +1 -1
  45. package/dist/components/Label/Label.test.js +2 -2
  46. package/dist/components/MultiSelect/MultiSelect.js +1 -1
  47. package/dist/components/MultiSelect/MultiSelect.stories.js +1 -1
  48. package/dist/components/MultiSelect/components/MultiSelectHeader.js +1 -1
  49. package/dist/components/MultiSelect/index.js +1 -1
  50. package/dist/components/OverlayStepBar/OverlayStepBar.js +1 -1
  51. package/dist/components/PeriodSelector/PeriodSelector.js +1 -1
  52. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +1 -1
  53. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +1 -1
  54. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +6 -6
  55. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +10 -10
  56. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +2 -2
  57. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +1 -1
  58. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +66 -66
  59. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
  60. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +26 -26
  61. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +14 -14
  62. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +1 -1
  63. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js +1 -1
  64. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +4 -4
  65. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +26 -26
  66. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +1 -1
  67. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +9 -9
  68. package/dist/components/RteEditor/Plugins/index.js +1 -1
  69. package/dist/components/RteEditor/RteEditor.js +350 -350
  70. package/dist/components/RteEditor/RteEditor.js.map +1 -1
  71. package/dist/components/RteEditor/helpers.js +5 -5
  72. package/dist/components/index.js +1 -1
  73. package/dist/helpers-Cgw7V6LR.js +168 -0
  74. package/dist/helpers-Cgw7V6LR.js.map +1 -0
  75. package/dist/{index-DuZiPGs-.js → index-BqHyOZsF.js} +2 -1
  76. package/dist/{index-DuZiPGs-.js.map → index-BqHyOZsF.js.map} +1 -1
  77. package/dist/index-CcK2jjMp.js.map +1 -1
  78. package/dist/{index-sIsmp53X.js → index-OJvb7CGo.js} +2 -2
  79. package/dist/{index-sIsmp53X.js.map → index-OJvb7CGo.js.map} +1 -1
  80. package/dist/index.js +1 -1
  81. package/dist/{react.esm-f8cBAyS5.js → react.esm-BZoQ2TxA.js} +2 -2
  82. package/dist/{react.esm-f8cBAyS5.js.map → react.esm-BZoQ2TxA.js.map} +1 -1
  83. package/dist/setupTests.js +1555 -7
  84. package/dist/setupTests.js.map +1 -1
  85. package/package.json +25 -25
  86. package/dist/Lexical.prod-DTADK2yJ.js +0 -4263
  87. package/dist/Lexical.prod-DTADK2yJ.js.map +0 -1
  88. package/dist/LexicalClipboard.prod-Dx5Fm6e5.js +0 -258
  89. package/dist/LexicalClipboard.prod-Dx5Fm6e5.js.map +0 -1
  90. package/dist/LexicalComposerContext.prod-BCXERl09.js +0 -26
  91. package/dist/LexicalComposerContext.prod-BCXERl09.js.map +0 -1
  92. package/dist/LexicalLink.prod-JpC4y56U.js.map +0 -1
  93. package/dist/LexicalList.prod-w0kSq9sB.js.map +0 -1
  94. package/dist/LexicalSelection.prod-DQLHaigk.js +0 -78
  95. package/dist/LexicalSelection.prod-DQLHaigk.js.map +0 -1
  96. package/dist/LexicalTable.prod-DjfZc87j.js +0 -1465
  97. package/dist/LexicalTable.prod-DjfZc87j.js.map +0 -1
  98. package/dist/LexicalUtils.prod-BBwue2Aj.js +0 -122
  99. package/dist/LexicalUtils.prod-BBwue2Aj.js.map +0 -1
  100. package/dist/helpers-DgTW1vIO.js +0 -168
  101. package/dist/helpers-DgTW1vIO.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  import { jsxs as m, jsx as t, Fragment as Z } from "react/jsx-runtime";
2
- import { u as ee } from "./LexicalComposerContext.prod-BCXERl09.js";
2
+ import { u as ee } from "./LexicalComposerContext.prod--Rm7-Z9o.js";
3
3
  import { c as $ } from "./clsx-OuTLNxxd.js";
4
- import { T as te, g as re } from "./LexicalTable.prod-DjfZc87j.js";
5
- import { a8 as oe, g as le, q as U, a as z, a2 as ne } from "./Lexical.prod-DTADK2yJ.js";
4
+ import { T as te, m as re } from "./LexicalTable.prod-DJWDvnB3.js";
5
+ import { ac as oe, e as le, h as U, G as V, a3 as ne } from "./Lexical.prod-D0woeN3R.js";
6
6
  import { forwardRef as A, useState as C, useRef as T, useId as D, useImperativeHandle as B, useEffect as g } from "react";
7
- import { Button as R } from "./components/Buttons/Button.js";
7
+ import { Button as L } from "./components/Buttons/Button.js";
8
8
  import "./components/Buttons/LinkButton.js";
9
9
  import "@react-aria/button";
10
10
  import "./components/Checkbox/Checkbox.js";
@@ -13,23 +13,23 @@ import "@react-aria/dialog";
13
13
  import "@react-aria/focus";
14
14
  import "@react-aria/overlays";
15
15
  import "./components/OverlayCloseButton/OverlayCloseButton.js";
16
- import { FormField as O } from "./components/FormField/FormField.js";
16
+ import { FormField as P } from "./components/FormField/FormField.js";
17
17
  import "./components/GridRow/GridRow.js";
18
18
  import "./components/IconButton/IconButton.js";
19
19
  import "./components/Input/Input.js";
20
- import { InputField as P } from "./components/InputField/InputField.js";
20
+ import { InputField as M } from "./components/InputField/InputField.js";
21
21
  import "react-router";
22
- import { s as L, M as ie } from "./MultiSelectItem-D9PxdX43.js";
22
+ import { s as R, M as ie } from "./MultiSelectItem-D9PxdX43.js";
23
23
  import "./components/RteEditor/Providers/LanguageProvider.js";
24
- import { e as ae, v as se } from "./helpers-DgTW1vIO.js";
24
+ import { e as ae, v as se } from "./helpers-Cgw7V6LR.js";
25
25
  import { Icon as K } from "./components/Icon/Icon.js";
26
- import { FeedbackBox as V } from "./components/FeedbackBox/FeedbackBox.js";
26
+ import { FeedbackBox as z } from "./components/FeedbackBox/FeedbackBox.js";
27
27
  import { useTranslation as H } from "./components/RteEditor/hooks/useTranslation.js";
28
28
  import "./components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js";
29
29
  import "./components/RteEditor/hooks/components/Flyout.js";
30
30
  import { deleteTable as ce, deleteColumn as me, insertColumn as ue, deleteRow as de, insertRow as fe, createTable as pe } from "./components/RteEditor/Plugins/TablePlugin/helpers.js";
31
31
  import { useFlyout as be } from "./components/RteEditor/hooks/useFlyout.js";
32
- import { s as q } from "./RteEditor.module-oFMKEW6f.js";
32
+ import { s as I } from "./RteEditor.module-oFMKEW6f.js";
33
33
  import "./index-B3c5pcHk.js";
34
34
  import "./components/SelectListbox/SelectListbox.js";
35
35
  import "./components/SelectListbox/SelectProvider.js";
@@ -37,9 +37,9 @@ import "./components/Sortable/components/SortableItem.js";
37
37
  import "./SortableProvider-Ck_XnBVq.js";
38
38
  import { setScrollableContainers as _e, removeScrollableContainers as he } from "./components/RteEditor/helpers.js";
39
39
  import './assets/TablePlugin.css';function ke({ label: b, clearTrigger: d, onClear: a }) {
40
- return /* @__PURE__ */ m("header", { className: L["multi-select__header"], children: [
40
+ return /* @__PURE__ */ m("header", { className: R["multi-select__header"], children: [
41
41
  /* @__PURE__ */ t(E, { htmlFor: "multi-select-list", children: b }),
42
- d && /* @__PURE__ */ t(R, { variant: "blank", onClick: a, children: d })
42
+ d && /* @__PURE__ */ t(L, { variant: "blank", onClick: a, children: d })
43
43
  ] });
44
44
  }
45
45
  const j = ({ scrollable: b = !0, noBorder: d, header: a, children: l }) => /* @__PURE__ */ m(Z, { children: [
@@ -47,14 +47,14 @@ const j = ({ scrollable: b = !0, noBorder: d, header: a, children: l }) => /* @_
47
47
  /* @__PURE__ */ t(
48
48
  "div",
49
49
  {
50
- className: $(L["multi-select"], {
51
- [L["multi-select--no-border"]]: d
50
+ className: $(R["multi-select"], {
51
+ [R["multi-select--no-border"]]: d
52
52
  }),
53
53
  children: /* @__PURE__ */ t(
54
54
  "ul",
55
55
  {
56
- className: $(L["multi-select__list"], {
57
- [L["multi-select__list--scrollable"]]: b
56
+ className: $(R["multi-select__list"], {
57
+ [R["multi-select__list--scrollable"]]: b
58
58
  }),
59
59
  id: "multi-select-list",
60
60
  children: l
@@ -79,11 +79,11 @@ const ve = "_linkform_x5q7m_1", we = "_linkform__footer_x5q7m_12", N = {
79
79
  u(i.target.value);
80
80
  }, c = (i) => {
81
81
  _(i.target.value);
82
- }, S = (i) => se(i) === !1 || i.trim() === "" ? (k(n.errortext.urlNotValid), !1) : (k(null), !0), W = (i) => i.trim() === "" ? (p(n.errortext.linkTextNotValid), !1) : (p(null), !0), Y = () => {
83
- !S(f) || w && !W(s) || (d(f, s), M());
84
- }, G = () => {
85
- b(), M();
86
- }, M = () => {
82
+ }, S = (i) => se(i) === !1 || i.trim() === "" ? (k(n.errortext.urlNotValid), !1) : (k(null), !0), G = (i) => i.trim() === "" ? (p(n.errortext.linkTextNotValid), !1) : (p(null), !0), W = () => {
83
+ !S(f) || w && !G(s) || (d(f, s), O());
84
+ }, Y = () => {
85
+ b(), O();
86
+ }, O = () => {
87
87
  u(""), h(!1), k(null), p(null);
88
88
  }, J = (i, X) => {
89
89
  u(i), !X && !i && h(!0);
@@ -91,15 +91,15 @@ const ve = "_linkform_x5q7m_1", we = "_linkform__footer_x5q7m_12", N = {
91
91
  o.current && o.current.focus();
92
92
  };
93
93
  return B(l, () => ({
94
- clearForm: M,
94
+ clearForm: O,
95
95
  focusFirstField: Q,
96
96
  setDefaults: J
97
97
  })), /* @__PURE__ */ m("div", { className: N.linkform, children: [
98
- /* @__PURE__ */ m(O, { className: N["linkform__input-field"], children: [
98
+ /* @__PURE__ */ m(P, { className: N["linkform__input-field"], children: [
99
99
  /* @__PURE__ */ t(E, { htmlFor: y, children: n.links.linkLabel }),
100
100
  /* @__PURE__ */ m("div", { className: N["linkform__input-url-wrapper"], children: [
101
101
  /* @__PURE__ */ t(
102
- P,
102
+ M,
103
103
  {
104
104
  id: y,
105
105
  placeholder: n.links.linkPlaceholder,
@@ -112,12 +112,12 @@ const ve = "_linkform_x5q7m_1", we = "_linkform__footer_x5q7m_12", N = {
112
112
  ),
113
113
  f && /* @__PURE__ */ t("button", { type: "button", onClick: r, className: N["linkform__open-url-button"], children: /* @__PURE__ */ t(K, { name: "ArrowTopRightOnSquare", size: 20 }) })
114
114
  ] }),
115
- F && /* @__PURE__ */ t(V, { level: "error", feedback: F })
115
+ F && /* @__PURE__ */ t(z, { level: "error", feedback: F })
116
116
  ] }),
117
- w && /* @__PURE__ */ m(O, { className: N["linkform__input-field"], children: [
117
+ w && /* @__PURE__ */ m(P, { className: N["linkform__input-field"], children: [
118
118
  /* @__PURE__ */ t(E, { htmlFor: e, children: n.links.linkText }),
119
119
  /* @__PURE__ */ t(
120
- P,
120
+ M,
121
121
  {
122
122
  id: e,
123
123
  value: s,
@@ -126,15 +126,15 @@ const ve = "_linkform_x5q7m_1", we = "_linkform__footer_x5q7m_12", N = {
126
126
  "aria-label": n.aria.labels.linkTextfield
127
127
  }
128
128
  ),
129
- v && /* @__PURE__ */ t(V, { level: "error", feedback: v })
129
+ v && /* @__PURE__ */ t(z, { level: "error", feedback: v })
130
130
  ] }),
131
131
  /* @__PURE__ */ m("div", { className: N.linkform__footer, children: [
132
- /* @__PURE__ */ t(R, { variant: "secondary", onClick: G, "aria-label": n.common.cancel, type: "button", children: n.common.cancel }),
133
- /* @__PURE__ */ t(R, { variant: "primary", onClick: Y, "aria-label": n.aria.labels.linkOkButton, type: "button", children: n.links.addLink })
132
+ /* @__PURE__ */ t(L, { variant: "secondary", onClick: Y, "aria-label": n.common.cancel, type: "button", children: n.common.cancel }),
133
+ /* @__PURE__ */ t(L, { variant: "primary", onClick: W, "aria-label": n.aria.labels.linkOkButton, type: "button", children: n.links.addLink })
134
134
  ] })
135
135
  ] });
136
136
  }
137
- ), Fe = "_tableform_t5fpq_1", Ce = "_tableform__footer_t5fpq_12", I = {
137
+ ), Fe = "_tableform_t5fpq_1", Ce = "_tableform__footer_t5fpq_12", q = {
138
138
  tableform: Fe,
139
139
  "tableform__input-field": "_tableform__input-field_t5fpq_5",
140
140
  tableform__footer: Ce
@@ -162,11 +162,11 @@ const ve = "_linkform_x5q7m_1", we = "_linkform__footer_x5q7m_12", N = {
162
162
  return _e(o), window.addEventListener("scroll", o), window.addEventListener("resize", o), () => {
163
163
  window.removeEventListener("scroll", o), window.removeEventListener("resize", o), he(o);
164
164
  };
165
- }, []), /* @__PURE__ */ m("div", { className: I.tableform, children: [
166
- /* @__PURE__ */ m(O, { className: I["tableform__input-field"], children: [
165
+ }, []), /* @__PURE__ */ m("div", { className: q.tableform, children: [
166
+ /* @__PURE__ */ m(P, { className: q["tableform__input-field"], children: [
167
167
  /* @__PURE__ */ t(E, { htmlFor: w, children: l.table.nrofRows }),
168
168
  /* @__PURE__ */ t(
169
- P,
169
+ M,
170
170
  {
171
171
  id: w,
172
172
  placeholder: l.table.nrofRowsPlaceholder,
@@ -177,10 +177,10 @@ const ve = "_linkform_x5q7m_1", we = "_linkform__footer_x5q7m_12", N = {
177
177
  }
178
178
  )
179
179
  ] }),
180
- /* @__PURE__ */ m(O, { className: I["tableform__input-field"], children: [
180
+ /* @__PURE__ */ m(P, { className: q["tableform__input-field"], children: [
181
181
  /* @__PURE__ */ t(E, { htmlFor: h, children: l.table.nrofColumns }),
182
182
  /* @__PURE__ */ t(
183
- P,
183
+ M,
184
184
  {
185
185
  id: h,
186
186
  placeholder: l.table.nrofColumnsPlaceholder,
@@ -190,10 +190,10 @@ const ve = "_linkform_x5q7m_1", we = "_linkform__footer_x5q7m_12", N = {
190
190
  }
191
191
  )
192
192
  ] }),
193
- /* @__PURE__ */ m("div", { className: I.tableform__footer, children: [
194
- /* @__PURE__ */ t(R, { variant: "secondary", onClick: v, "aria-label": l.common.cancel, children: l.common.cancel }),
193
+ /* @__PURE__ */ m("div", { className: q.tableform__footer, children: [
194
+ /* @__PURE__ */ t(L, { variant: "secondary", onClick: v, "aria-label": l.common.cancel, children: l.common.cancel }),
195
195
  /* @__PURE__ */ t(
196
- R,
196
+ L,
197
197
  {
198
198
  variant: "primary",
199
199
  onClick: k,
@@ -214,14 +214,14 @@ const ve = "_linkform_x5q7m_1", we = "_linkform__footer_x5q7m_12", N = {
214
214
  }, p = (e, r) => {
215
215
  l.update(() => {
216
216
  const x = U(), c = pe(e, r);
217
- z(x) ? x.insertNodes([c]) : ne().append(c);
217
+ V(x) ? x.insertNodes([c]) : ne().append(c);
218
218
  const S = c.getFirstDescendant();
219
219
  S && S.select();
220
220
  }), v();
221
221
  }, o = (e) => {
222
222
  l.update(() => {
223
223
  const r = U();
224
- if (z(r)) {
224
+ if (V(r)) {
225
225
  const x = r.anchor.getNode(), c = te(x);
226
226
  if (re(c))
227
227
  switch (e) {
@@ -278,13 +278,13 @@ const ve = "_linkform_x5q7m_1", we = "_linkform__footer_x5q7m_12", N = {
278
278
  };
279
279
  }, []), B(d, () => ({
280
280
  mutateTable: o
281
- })), /* @__PURE__ */ t("div", { className: q["editor__toolbar-button-group"], children: /* @__PURE__ */ m("div", { className: q["editor__toolbar-button-flyoutwrapper"], children: [
281
+ })), /* @__PURE__ */ t("div", { className: I["editor__toolbar-button-group"], children: /* @__PURE__ */ m("div", { className: I["editor__toolbar-button-flyoutwrapper"], children: [
282
282
  /* @__PURE__ */ t(
283
283
  "button",
284
284
  {
285
285
  onClick: k,
286
286
  title: a.table.tableTooltip,
287
- className: $(q["editor__toolbar-button"], b && q["editor__toolbar-button--active"]),
287
+ className: $(I["editor__toolbar-button"], b && I["editor__toolbar-button--active"]),
288
288
  "aria-label": a.aria.labels.table,
289
289
  "aria-keyshortcuts": a.aria.keyshortcuts.table,
290
290
  ref: w,
@@ -302,4 +302,4 @@ export {
302
302
  ke as a,
303
303
  ye as b
304
304
  };
305
- //# sourceMappingURL=TablePlugin-Co5vgBHF.js.map
305
+ //# sourceMappingURL=TablePlugin-BHY7_5Z8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TablePlugin-Co5vgBHF.js","sources":["../src/components/MultiSelect/components/MultiSelectHeader.tsx","../src/components/MultiSelect/MultiSelect.tsx","../src/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.tsx","../src/components/RteEditor/Plugins/TablePlugin/AddTableFrom.tsx","../src/components/RteEditor/Plugins/TablePlugin/TablePlugin.tsx"],"sourcesContent":["import styles from 'components/MultiSelect/MultiSelect.module.css';\nimport { Label } from 'components/Label';\nimport { Button } from 'components';\n\nexport interface MultiSelectHeaderProps {\n label: string;\n clearTrigger?: string;\n onClear?: () => void;\n}\n\nexport function MultiSelectHeader({ label, clearTrigger, onClear }: MultiSelectHeaderProps) {\n return (\n <header className={styles['multi-select__header']}>\n <Label htmlFor=\"multi-select-list\">{label}</Label>\n {clearTrigger && (\n <Button variant={'blank'} onClick={onClear}>\n {clearTrigger}\n </Button>\n )}\n </header>\n );\n}\n","import clsx from 'clsx';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './MultiSelect.module.css';\n\nimport { MultiSelectItem } from 'components/MultiSelect/components/MultiSelectItem';\nimport { MultiSelectHeader } from 'components/MultiSelect/components/MultiSelectHeader';\n\nexport interface MultiSelectProps {\n /** `true` if the container should scroll on overflow; otherwise, `false` to resize the container to its contents. The default is `true`. */\n scrollable?: boolean;\n /** `true` to disable the border around the container; otherwise, `false`. The default is `false`. */\n noBorder?: boolean;\n /** The header contents. */\n header?: ReactNode;\n}\n\n/** Represents a component to list a number of checkboxes. */\nexport const MultiSelect = ({ scrollable = true, noBorder, header, children }: PropsWithChildren<MultiSelectProps>) => (\n <>\n {header}\n <div\n className={clsx(styles['multi-select'], {\n [styles['multi-select--no-border']]: noBorder,\n })}\n >\n <ul\n className={clsx(styles['multi-select__list'], {\n [styles['multi-select__list--scrollable']]: scrollable,\n })}\n id=\"multi-select-list\"\n >\n {children}\n </ul>\n </div>\n </>\n);\n\nMultiSelect.MultiSelectHeader = MultiSelectHeader;\nMultiSelect.MultiSelectItem = MultiSelectItem;\n","import { useState, forwardRef, useImperativeHandle, useRef, useId } from 'react';\n\nimport type { ChangeEvent, JSX } from 'react';\nimport type { LinkType } from 'components/RteEditor/Plugins/LinkPlugin';\n\nimport styles from './AddLinkForm.module.css';\n\nimport { ensureHttps, validateUrlWithProtocol } from 'components/RteEditor/Plugins/LinkPlugin/helpers';\nimport { Button, FeedbackBox, FormField, Icon, InputField, Label } from 'components';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\ninterface AddLinkFormProps {\n onCloseHandler: () => void;\n onSaveHandler: (url: string, linktext: string) => void;\n isLink: LinkType;\n}\n\nexport interface addLinkFormMethods {\n clearForm: () => void;\n focusFirstField: () => void;\n setDefaults: (url: string, linktext: string) => void;\n}\n\nexport const AddLinkForm = forwardRef(\n (\n { onCloseHandler, onSaveHandler, isLink = { active: false, url: '', linktext: '' } }: AddLinkFormProps,\n ref\n ): JSX.Element => {\n const t = useTranslation();\n const [url, setUrl] = useState<string>(isLink.url || '');\n const [linkText, setLinkText] = useState<string>(isLink.linktext || '');\n const [showLinktextField, setShowLinktextField] = useState<boolean>(false);\n const [urlError, setUrlError] = useState<string | null>(null);\n const [linkTextError, setLinkTextError] = useState<string | null>(null);\n const firstField = useRef<HTMLInputElement>(null);\n const linkId = `link_${useId()}`;\n const textId = `text_${useId()}`;\n\n const handleOpenUrl = () => {\n window.open(ensureHttps(url), '_blank');\n };\n\n const handleUrl = (event: ChangeEvent<HTMLInputElement>) => {\n setUrl(event.target.value);\n };\n\n const handleLinkText = (event: ChangeEvent<HTMLInputElement>) => {\n setLinkText(event.target.value);\n };\n\n const validateUrl = (url: string): boolean => {\n if (validateUrlWithProtocol(url) === false || url.trim() === '') {\n setUrlError(t.errortext.urlNotValid);\n return false;\n }\n setUrlError(null);\n return true;\n };\n\n const validateLinkText = (linkText: string): boolean => {\n if (linkText.trim() === '') {\n setLinkTextError(t.errortext.linkTextNotValid);\n return false;\n }\n setLinkTextError(null);\n return true;\n };\n\n const handleSave = () => {\n if (!validateUrl(url) || (showLinktextField && !validateLinkText(linkText))) {\n return;\n }\n\n onSaveHandler(url, linkText);\n resetForm();\n };\n\n const handleClose = () => {\n onCloseHandler();\n resetForm();\n };\n\n const resetForm = () => {\n setUrl('');\n setShowLinktextField(false);\n setUrlError(null);\n setLinkTextError(null);\n };\n\n const setDefaults = (url: string, linktext: string) => {\n setUrl(url);\n if (!linktext && !url) {\n setShowLinktextField(true);\n }\n };\n\n const focusFirstField = () => {\n if (firstField.current) {\n firstField.current.focus();\n }\n };\n\n useImperativeHandle(ref, () => ({\n clearForm: resetForm,\n focusFirstField,\n setDefaults,\n }));\n\n return (\n <div className={styles['linkform']}>\n <FormField className={styles['linkform__input-field']}>\n <Label htmlFor={linkId}>{t.links.linkLabel}</Label>\n <div className={styles['linkform__input-url-wrapper']}>\n <InputField\n id={linkId}\n placeholder={t.links.linkPlaceholder}\n value={url}\n onChange={(event) => handleUrl(event)}\n onFocus={() => setUrlError(null)}\n ref={firstField}\n aria-label={t.aria.labels.linkField}\n />\n {url && (\n <button type=\"button\" onClick={handleOpenUrl} className={styles['linkform__open-url-button']}>\n <Icon name=\"ArrowTopRightOnSquare\" size={20} />\n </button>\n )}\n </div>\n {urlError && <FeedbackBox level=\"error\" feedback={urlError} />}\n </FormField>\n {showLinktextField && (\n <FormField className={styles['linkform__input-field']}>\n <Label htmlFor={textId}>{t.links.linkText}</Label>\n <InputField\n id={textId}\n value={linkText}\n onChange={(event) => handleLinkText(event)}\n onFocus={() => setLinkTextError(null)}\n aria-label={t.aria.labels.linkTextfield}\n />\n {linkTextError && <FeedbackBox level=\"error\" feedback={linkTextError} />}\n </FormField>\n )}\n <div className={styles['linkform__footer']}>\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel} type=\"button\">\n {t.common.cancel}\n </Button>\n <Button variant={'primary'} onClick={handleSave} aria-label={t.aria.labels.linkOkButton} type=\"button\">\n {t.links.addLink}\n </Button>\n </div>\n </div>\n );\n }\n);\n","import { useState, forwardRef, useImperativeHandle, useRef, useId, useEffect } from 'react';\n\nimport type { ChangeEvent } from 'react';\n\nimport styles from './AddTableFrom.module.css';\n\nimport { Button, FormField, InputField, Label } from 'components';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\nimport { removeScrollableContainers, setScrollableContainers } from 'components/RteEditor/helpers';\n\ninterface AddTableFormProps {\n onCloseHandler: () => void;\n onSaveHandler: (nrfOfRows: number, nrOfColumns: number) => void;\n}\n\nexport interface addTableForm {\n clearForm: () => void;\n focusFirstField: () => void;\n}\n\nexport const AddTableForm = forwardRef(({ onCloseHandler, onSaveHandler }: AddTableFormProps, ref) => {\n const t = useTranslation();\n const [rowCount, setRowCount] = useState<number>();\n const [columnCount, setColumnCount] = useState<number>();\n const firstField = useRef<HTMLInputElement>(null);\n const rowId = `row_${useId()}`;\n const columnId = `column_${useId()}`;\n\n const handleDimentionChange = (event: ChangeEvent<HTMLInputElement>, type: string) => {\n const value = event.target.value;\n type === 'row' ? setRowCount(parseInt(value)) : setColumnCount(parseInt(value));\n };\n\n const handleSave = () => {\n if (rowCount !== undefined && columnCount !== undefined) {\n onSaveHandler(rowCount, columnCount);\n resetForm();\n }\n };\n\n const handleClose = () => {\n onCloseHandler();\n resetForm();\n };\n\n const resetForm = () => {\n setRowCount(undefined);\n setColumnCount(undefined);\n };\n\n useImperativeHandle(ref, () => ({\n clearForm: resetForm,\n focusFirstField: () => firstField.current?.focus(),\n }));\n\n useEffect(() => {\n const handleResizeScroll = () => {\n handleClose();\n };\n\n setScrollableContainers(handleResizeScroll);\n\n window.addEventListener('scroll', handleResizeScroll);\n window.addEventListener('resize', handleResizeScroll);\n\n return () => {\n window.removeEventListener('scroll', handleResizeScroll);\n window.removeEventListener('resize', handleResizeScroll);\n removeScrollableContainers(handleResizeScroll);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className={styles['tableform']}>\n <FormField className={styles['tableform__input-field']}>\n <Label htmlFor={rowId}>{t.table.nrofRows}</Label>\n <InputField\n id={rowId}\n placeholder={t.table.nrofRowsPlaceholder}\n value={rowCount ? rowCount : ''}\n onChange={(event) => handleDimentionChange(event, 'row')}\n aria-label={t.aria.labels.tableRowfield}\n ref={firstField}\n />\n </FormField>\n <FormField className={styles['tableform__input-field']}>\n <Label htmlFor={columnId}>{t.table.nrofColumns}</Label>\n <InputField\n id={columnId}\n placeholder={t.table.nrofColumnsPlaceholder}\n value={columnCount ? columnCount : ''}\n onChange={(event) => handleDimentionChange(event, 'column')}\n aria-label={t.aria.labels.tableColumnfield}\n />\n </FormField>\n <div className={styles['tableform__footer']}>\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel}>\n {t.common.cancel}\n </Button>\n <Button\n variant={'primary'}\n onClick={handleSave}\n disabled={!rowCount || !columnCount}\n aria-label={t.aria.labels.tableOkButton}\n >\n {t.common.add}\n </Button>\n </div>\n </div>\n );\n});\n","import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport clsx from 'clsx';\nimport { $getTableCellNodeFromLexicalNode, $isTableCellNode } from '@lexical/table';\nimport { $getSelection, $isRangeSelection, $getRoot, KEY_DOWN_COMMAND, COMMAND_PRIORITY_EDITOR } from 'lexical';\nimport { useRef, useEffect, useImperativeHandle, forwardRef } from 'react';\n\nimport type { JSX } from 'react';\nimport type { TextNode } from 'lexical';\nimport type { addTableForm } from './AddTableFrom';\nimport type { Actions } from './TableCellContextMenu';\n\nimport { AddTableForm } from './AddTableFrom';\nimport { createTable, deleteColumn, deleteRow, deleteTable, insertColumn, insertRow } from './helpers';\n\nimport { useFlyout } from 'components/RteEditor/hooks/useFlyout';\nimport { Icon } from 'components';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\nconst PREVENT_OPEN_DELAY = 200;\n\ninterface TablePluginProps {\n isActive: boolean;\n}\n\nexport interface TableMutation {\n mutateTable: (type: Actions) => void;\n}\n\nexport const TablePlugin = forwardRef(({ isActive }: TablePluginProps, ref): JSX.Element => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const { flyout, showFlyout, hideFlyout, isVisible } = useFlyout();\n const addTableForm = useRef<addTableForm>(undefined);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const preventOpen = useRef(false);\n const isVisibleRef = useRef(isVisible);\n\n const openFlyout = () => {\n const rect = buttonRef.current?.getBoundingClientRect();\n if (!preventOpen.current && rect) {\n showFlyout({ position: { top: rect.bottom, left: rect.left }, ...flyoutOptions });\n }\n };\n\n const closeFlyout = () => {\n hideFlyout();\n };\n\n const insertTable = (nrOfRows: number, nrOfColumns: number) => {\n editor.update(() => {\n const selection = $getSelection();\n const tableNode = createTable(nrOfRows, nrOfColumns);\n if ($isRangeSelection(selection)) {\n selection.insertNodes([tableNode]);\n } else {\n $getRoot().append(tableNode);\n }\n const firstDescendant = tableNode.getFirstDescendant();\n if (firstDescendant) {\n (firstDescendant as TextNode).select();\n }\n });\n\n closeFlyout();\n };\n\n const mutateTable = (action: Actions) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const currentNode = $getTableCellNodeFromLexicalNode(anchorNode);\n\n if ($isTableCellNode(currentNode)) {\n switch (action) {\n case 'insertRowAbove':\n case 'insertRowBelow':\n insertRow(currentNode, action);\n break;\n case 'deleteRow':\n deleteRow(currentNode);\n break;\n case 'insertColumnLeft':\n case 'insertColumnRight':\n insertColumn(currentNode, action);\n break;\n case 'deleteColumn':\n deleteColumn(currentNode);\n break;\n case 'deleteTable':\n deleteTable(currentNode);\n break;\n }\n }\n }\n });\n };\n\n const flyoutOptions = {\n children: (\n <AddTableForm\n onCloseHandler={closeFlyout}\n onSaveHandler={(rows, columns) => insertTable(rows, columns)}\n ref={addTableForm}\n />\n ),\n };\n\n useEffect(() => {\n if (!isVisible) {\n addTableForm.current?.clearForm();\n setTimeout(() => (preventOpen.current = false), PREVENT_OPEN_DELAY);\n } else {\n preventOpen.current = true;\n addTableForm.current?.focusFirstField();\n }\n }, [addTableForm, isVisible]);\n\n useEffect(() => {\n const removeKeyboardShortcut = editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit9') {\n event.preventDefault();\n openFlyout();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_EDITOR\n );\n\n return () => {\n removeKeyboardShortcut();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n useEffect(() => {\n isVisibleRef.current = isVisible;\n }, [isVisible]);\n\n useEffect(() => {\n const removeKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isVisibleRef.current) {\n event.preventDefault();\n event.stopPropagation();\n closeFlyout();\n }\n };\n\n document.addEventListener('keydown', removeKeydown, { capture: true });\n\n return () => {\n document.removeEventListener('keydown', removeKeydown);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useImperativeHandle(ref, () => ({\n mutateTable,\n }));\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n <div className={styles['editor__toolbar-button-flyoutwrapper']}>\n <button\n onClick={openFlyout}\n title={t.table.tableTooltip}\n className={clsx(styles['editor__toolbar-button'], isActive && styles[`editor__toolbar-button--active`])}\n aria-label={t.aria.labels.table}\n aria-keyshortcuts={t.aria.keyshortcuts.table}\n ref={buttonRef}\n type=\"button\"\n >\n <Icon name=\"Table\" size={24} />\n </button>\n {flyout}\n </div>\n </div>\n );\n});\n"],"names":["MultiSelectHeader","label","clearTrigger","onClear","jsxs","styles","jsx","Label","Button","MultiSelect","scrollable","noBorder","header","children","Fragment","clsx","MultiSelectItem","AddLinkForm","forwardRef","onCloseHandler","onSaveHandler","isLink","ref","t","useTranslation","url","setUrl","useState","linkText","setLinkText","showLinktextField","setShowLinktextField","urlError","setUrlError","linkTextError","setLinkTextError","firstField","useRef","linkId","useId","textId","handleOpenUrl","ensureHttps","handleUrl","event","handleLinkText","validateUrl","validateUrlWithProtocol","validateLinkText","handleSave","resetForm","handleClose","setDefaults","linktext","focusFirstField","useImperativeHandle","FormField","InputField","Icon","FeedbackBox","AddTableForm","rowCount","setRowCount","columnCount","setColumnCount","rowId","columnId","handleDimentionChange","type","value","_a","useEffect","handleResizeScroll","setScrollableContainers","removeScrollableContainers","PREVENT_OPEN_DELAY","TablePlugin","isActive","editor","useLexicalComposerContext","flyout","showFlyout","hideFlyout","isVisible","useFlyout","addTableForm","buttonRef","preventOpen","isVisibleRef","openFlyout","rect","flyoutOptions","closeFlyout","insertTable","nrOfRows","nrOfColumns","selection","$getSelection","tableNode","createTable","$isRangeSelection","$getRoot","firstDescendant","mutateTable","action","anchorNode","currentNode","$getTableCellNodeFromLexicalNode","$isTableCellNode","insertRow","deleteRow","insertColumn","deleteColumn","deleteTable","rows","columns","_b","removeKeyboardShortcut","KEY_DOWN_COMMAND","COMMAND_PRIORITY_EDITOR","removeKeydown"],"mappings":"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"}
1
+ {"version":3,"file":"TablePlugin-BHY7_5Z8.js","sources":["../src/components/MultiSelect/components/MultiSelectHeader.tsx","../src/components/MultiSelect/MultiSelect.tsx","../src/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.tsx","../src/components/RteEditor/Plugins/TablePlugin/AddTableFrom.tsx","../src/components/RteEditor/Plugins/TablePlugin/TablePlugin.tsx"],"sourcesContent":["import styles from 'components/MultiSelect/MultiSelect.module.css';\nimport { Label } from 'components/Label';\nimport { Button } from 'components';\n\nexport interface MultiSelectHeaderProps {\n label: string;\n clearTrigger?: string;\n onClear?: () => void;\n}\n\nexport function MultiSelectHeader({ label, clearTrigger, onClear }: MultiSelectHeaderProps) {\n return (\n <header className={styles['multi-select__header']}>\n <Label htmlFor=\"multi-select-list\">{label}</Label>\n {clearTrigger && (\n <Button variant={'blank'} onClick={onClear}>\n {clearTrigger}\n </Button>\n )}\n </header>\n );\n}\n","import clsx from 'clsx';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './MultiSelect.module.css';\n\nimport { MultiSelectItem } from 'components/MultiSelect/components/MultiSelectItem';\nimport { MultiSelectHeader } from 'components/MultiSelect/components/MultiSelectHeader';\n\nexport interface MultiSelectProps {\n /** `true` if the container should scroll on overflow; otherwise, `false` to resize the container to its contents. The default is `true`. */\n scrollable?: boolean;\n /** `true` to disable the border around the container; otherwise, `false`. The default is `false`. */\n noBorder?: boolean;\n /** The header contents. */\n header?: ReactNode;\n}\n\n/** Represents a component to list a number of checkboxes. */\nexport const MultiSelect = ({ scrollable = true, noBorder, header, children }: PropsWithChildren<MultiSelectProps>) => (\n <>\n {header}\n <div\n className={clsx(styles['multi-select'], {\n [styles['multi-select--no-border']]: noBorder,\n })}\n >\n <ul\n className={clsx(styles['multi-select__list'], {\n [styles['multi-select__list--scrollable']]: scrollable,\n })}\n id=\"multi-select-list\"\n >\n {children}\n </ul>\n </div>\n </>\n);\n\nMultiSelect.MultiSelectHeader = MultiSelectHeader;\nMultiSelect.MultiSelectItem = MultiSelectItem;\n","import { useState, forwardRef, useImperativeHandle, useRef, useId } from 'react';\n\nimport type { ChangeEvent, JSX } from 'react';\nimport type { LinkType } from 'components/RteEditor/Plugins/LinkPlugin';\n\nimport styles from './AddLinkForm.module.css';\n\nimport { ensureHttps, validateUrlWithProtocol } from 'components/RteEditor/Plugins/LinkPlugin/helpers';\nimport { Button, FeedbackBox, FormField, Icon, InputField, Label } from 'components';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\ninterface AddLinkFormProps {\n onCloseHandler: () => void;\n onSaveHandler: (url: string, linktext: string) => void;\n isLink: LinkType;\n}\n\nexport interface addLinkFormMethods {\n clearForm: () => void;\n focusFirstField: () => void;\n setDefaults: (url: string, linktext: string) => void;\n}\n\nexport const AddLinkForm = forwardRef(\n (\n { onCloseHandler, onSaveHandler, isLink = { active: false, url: '', linktext: '' } }: AddLinkFormProps,\n ref\n ): JSX.Element => {\n const t = useTranslation();\n const [url, setUrl] = useState<string>(isLink.url || '');\n const [linkText, setLinkText] = useState<string>(isLink.linktext || '');\n const [showLinktextField, setShowLinktextField] = useState<boolean>(false);\n const [urlError, setUrlError] = useState<string | null>(null);\n const [linkTextError, setLinkTextError] = useState<string | null>(null);\n const firstField = useRef<HTMLInputElement>(null);\n const linkId = `link_${useId()}`;\n const textId = `text_${useId()}`;\n\n const handleOpenUrl = () => {\n window.open(ensureHttps(url), '_blank');\n };\n\n const handleUrl = (event: ChangeEvent<HTMLInputElement>) => {\n setUrl(event.target.value);\n };\n\n const handleLinkText = (event: ChangeEvent<HTMLInputElement>) => {\n setLinkText(event.target.value);\n };\n\n const validateUrl = (url: string): boolean => {\n if (validateUrlWithProtocol(url) === false || url.trim() === '') {\n setUrlError(t.errortext.urlNotValid);\n return false;\n }\n setUrlError(null);\n return true;\n };\n\n const validateLinkText = (linkText: string): boolean => {\n if (linkText.trim() === '') {\n setLinkTextError(t.errortext.linkTextNotValid);\n return false;\n }\n setLinkTextError(null);\n return true;\n };\n\n const handleSave = () => {\n if (!validateUrl(url) || (showLinktextField && !validateLinkText(linkText))) {\n return;\n }\n\n onSaveHandler(url, linkText);\n resetForm();\n };\n\n const handleClose = () => {\n onCloseHandler();\n resetForm();\n };\n\n const resetForm = () => {\n setUrl('');\n setShowLinktextField(false);\n setUrlError(null);\n setLinkTextError(null);\n };\n\n const setDefaults = (url: string, linktext: string) => {\n setUrl(url);\n if (!linktext && !url) {\n setShowLinktextField(true);\n }\n };\n\n const focusFirstField = () => {\n if (firstField.current) {\n firstField.current.focus();\n }\n };\n\n useImperativeHandle(ref, () => ({\n clearForm: resetForm,\n focusFirstField,\n setDefaults,\n }));\n\n return (\n <div className={styles['linkform']}>\n <FormField className={styles['linkform__input-field']}>\n <Label htmlFor={linkId}>{t.links.linkLabel}</Label>\n <div className={styles['linkform__input-url-wrapper']}>\n <InputField\n id={linkId}\n placeholder={t.links.linkPlaceholder}\n value={url}\n onChange={(event) => handleUrl(event)}\n onFocus={() => setUrlError(null)}\n ref={firstField}\n aria-label={t.aria.labels.linkField}\n />\n {url && (\n <button type=\"button\" onClick={handleOpenUrl} className={styles['linkform__open-url-button']}>\n <Icon name=\"ArrowTopRightOnSquare\" size={20} />\n </button>\n )}\n </div>\n {urlError && <FeedbackBox level=\"error\" feedback={urlError} />}\n </FormField>\n {showLinktextField && (\n <FormField className={styles['linkform__input-field']}>\n <Label htmlFor={textId}>{t.links.linkText}</Label>\n <InputField\n id={textId}\n value={linkText}\n onChange={(event) => handleLinkText(event)}\n onFocus={() => setLinkTextError(null)}\n aria-label={t.aria.labels.linkTextfield}\n />\n {linkTextError && <FeedbackBox level=\"error\" feedback={linkTextError} />}\n </FormField>\n )}\n <div className={styles['linkform__footer']}>\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel} type=\"button\">\n {t.common.cancel}\n </Button>\n <Button variant={'primary'} onClick={handleSave} aria-label={t.aria.labels.linkOkButton} type=\"button\">\n {t.links.addLink}\n </Button>\n </div>\n </div>\n );\n }\n);\n","import { useState, forwardRef, useImperativeHandle, useRef, useId, useEffect } from 'react';\n\nimport type { ChangeEvent } from 'react';\n\nimport styles from './AddTableFrom.module.css';\n\nimport { Button, FormField, InputField, Label } from 'components';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\nimport { removeScrollableContainers, setScrollableContainers } from 'components/RteEditor/helpers';\n\ninterface AddTableFormProps {\n onCloseHandler: () => void;\n onSaveHandler: (nrfOfRows: number, nrOfColumns: number) => void;\n}\n\nexport interface addTableForm {\n clearForm: () => void;\n focusFirstField: () => void;\n}\n\nexport const AddTableForm = forwardRef(({ onCloseHandler, onSaveHandler }: AddTableFormProps, ref) => {\n const t = useTranslation();\n const [rowCount, setRowCount] = useState<number>();\n const [columnCount, setColumnCount] = useState<number>();\n const firstField = useRef<HTMLInputElement>(null);\n const rowId = `row_${useId()}`;\n const columnId = `column_${useId()}`;\n\n const handleDimentionChange = (event: ChangeEvent<HTMLInputElement>, type: string) => {\n const value = event.target.value;\n type === 'row' ? setRowCount(parseInt(value)) : setColumnCount(parseInt(value));\n };\n\n const handleSave = () => {\n if (rowCount !== undefined && columnCount !== undefined) {\n onSaveHandler(rowCount, columnCount);\n resetForm();\n }\n };\n\n const handleClose = () => {\n onCloseHandler();\n resetForm();\n };\n\n const resetForm = () => {\n setRowCount(undefined);\n setColumnCount(undefined);\n };\n\n useImperativeHandle(ref, () => ({\n clearForm: resetForm,\n focusFirstField: () => firstField.current?.focus(),\n }));\n\n useEffect(() => {\n const handleResizeScroll = () => {\n handleClose();\n };\n\n setScrollableContainers(handleResizeScroll);\n\n window.addEventListener('scroll', handleResizeScroll);\n window.addEventListener('resize', handleResizeScroll);\n\n return () => {\n window.removeEventListener('scroll', handleResizeScroll);\n window.removeEventListener('resize', handleResizeScroll);\n removeScrollableContainers(handleResizeScroll);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className={styles['tableform']}>\n <FormField className={styles['tableform__input-field']}>\n <Label htmlFor={rowId}>{t.table.nrofRows}</Label>\n <InputField\n id={rowId}\n placeholder={t.table.nrofRowsPlaceholder}\n value={rowCount ? rowCount : ''}\n onChange={(event) => handleDimentionChange(event, 'row')}\n aria-label={t.aria.labels.tableRowfield}\n ref={firstField}\n />\n </FormField>\n <FormField className={styles['tableform__input-field']}>\n <Label htmlFor={columnId}>{t.table.nrofColumns}</Label>\n <InputField\n id={columnId}\n placeholder={t.table.nrofColumnsPlaceholder}\n value={columnCount ? columnCount : ''}\n onChange={(event) => handleDimentionChange(event, 'column')}\n aria-label={t.aria.labels.tableColumnfield}\n />\n </FormField>\n <div className={styles['tableform__footer']}>\n <Button variant={'secondary'} onClick={handleClose} aria-label={t.common.cancel}>\n {t.common.cancel}\n </Button>\n <Button\n variant={'primary'}\n onClick={handleSave}\n disabled={!rowCount || !columnCount}\n aria-label={t.aria.labels.tableOkButton}\n >\n {t.common.add}\n </Button>\n </div>\n </div>\n );\n});\n","import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport clsx from 'clsx';\nimport { $getTableCellNodeFromLexicalNode, $isTableCellNode } from '@lexical/table';\nimport { $getSelection, $isRangeSelection, $getRoot, KEY_DOWN_COMMAND, COMMAND_PRIORITY_EDITOR } from 'lexical';\nimport { useRef, useEffect, useImperativeHandle, forwardRef } from 'react';\n\nimport type { JSX } from 'react';\nimport type { TextNode } from 'lexical';\nimport type { addTableForm } from './AddTableFrom';\nimport type { Actions } from './TableCellContextMenu';\n\nimport { AddTableForm } from './AddTableFrom';\nimport { createTable, deleteColumn, deleteRow, deleteTable, insertColumn, insertRow } from './helpers';\n\nimport { useFlyout } from 'components/RteEditor/hooks/useFlyout';\nimport { Icon } from 'components';\nimport styles from 'components/RteEditor/RteEditor.module.css';\nimport { useTranslation } from 'components/RteEditor/hooks/useTranslation';\n\nconst PREVENT_OPEN_DELAY = 200;\n\ninterface TablePluginProps {\n isActive: boolean;\n}\n\nexport interface TableMutation {\n mutateTable: (type: Actions) => void;\n}\n\nexport const TablePlugin = forwardRef(({ isActive }: TablePluginProps, ref): JSX.Element => {\n const t = useTranslation();\n const [editor] = useLexicalComposerContext();\n const { flyout, showFlyout, hideFlyout, isVisible } = useFlyout();\n const addTableForm = useRef<addTableForm>(undefined);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const preventOpen = useRef(false);\n const isVisibleRef = useRef(isVisible);\n\n const openFlyout = () => {\n const rect = buttonRef.current?.getBoundingClientRect();\n if (!preventOpen.current && rect) {\n showFlyout({ position: { top: rect.bottom, left: rect.left }, ...flyoutOptions });\n }\n };\n\n const closeFlyout = () => {\n hideFlyout();\n };\n\n const insertTable = (nrOfRows: number, nrOfColumns: number) => {\n editor.update(() => {\n const selection = $getSelection();\n const tableNode = createTable(nrOfRows, nrOfColumns);\n if ($isRangeSelection(selection)) {\n selection.insertNodes([tableNode]);\n } else {\n $getRoot().append(tableNode);\n }\n const firstDescendant = tableNode.getFirstDescendant();\n if (firstDescendant) {\n (firstDescendant as TextNode).select();\n }\n });\n\n closeFlyout();\n };\n\n const mutateTable = (action: Actions) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const currentNode = $getTableCellNodeFromLexicalNode(anchorNode);\n\n if ($isTableCellNode(currentNode)) {\n switch (action) {\n case 'insertRowAbove':\n case 'insertRowBelow':\n insertRow(currentNode, action);\n break;\n case 'deleteRow':\n deleteRow(currentNode);\n break;\n case 'insertColumnLeft':\n case 'insertColumnRight':\n insertColumn(currentNode, action);\n break;\n case 'deleteColumn':\n deleteColumn(currentNode);\n break;\n case 'deleteTable':\n deleteTable(currentNode);\n break;\n }\n }\n }\n });\n };\n\n const flyoutOptions = {\n children: (\n <AddTableForm\n onCloseHandler={closeFlyout}\n onSaveHandler={(rows, columns) => insertTable(rows, columns)}\n ref={addTableForm}\n />\n ),\n };\n\n useEffect(() => {\n if (!isVisible) {\n addTableForm.current?.clearForm();\n setTimeout(() => (preventOpen.current = false), PREVENT_OPEN_DELAY);\n } else {\n preventOpen.current = true;\n addTableForm.current?.focusFirstField();\n }\n }, [addTableForm, isVisible]);\n\n useEffect(() => {\n const removeKeyboardShortcut = editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.ctrlKey && event.shiftKey && event.code === 'Digit9') {\n event.preventDefault();\n openFlyout();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_EDITOR\n );\n\n return () => {\n removeKeyboardShortcut();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor]);\n\n useEffect(() => {\n isVisibleRef.current = isVisible;\n }, [isVisible]);\n\n useEffect(() => {\n const removeKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isVisibleRef.current) {\n event.preventDefault();\n event.stopPropagation();\n closeFlyout();\n }\n };\n\n document.addEventListener('keydown', removeKeydown, { capture: true });\n\n return () => {\n document.removeEventListener('keydown', removeKeydown);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useImperativeHandle(ref, () => ({\n mutateTable,\n }));\n\n return (\n <div className={styles['editor__toolbar-button-group']}>\n <div className={styles['editor__toolbar-button-flyoutwrapper']}>\n <button\n onClick={openFlyout}\n title={t.table.tableTooltip}\n className={clsx(styles['editor__toolbar-button'], isActive && styles[`editor__toolbar-button--active`])}\n aria-label={t.aria.labels.table}\n aria-keyshortcuts={t.aria.keyshortcuts.table}\n ref={buttonRef}\n type=\"button\"\n >\n <Icon name=\"Table\" size={24} />\n </button>\n {flyout}\n </div>\n </div>\n );\n});\n"],"names":["MultiSelectHeader","label","clearTrigger","onClear","jsxs","styles","jsx","Label","Button","MultiSelect","scrollable","noBorder","header","children","Fragment","clsx","MultiSelectItem","AddLinkForm","forwardRef","onCloseHandler","onSaveHandler","isLink","ref","t","useTranslation","url","setUrl","useState","linkText","setLinkText","showLinktextField","setShowLinktextField","urlError","setUrlError","linkTextError","setLinkTextError","firstField","useRef","linkId","useId","textId","handleOpenUrl","ensureHttps","handleUrl","event","handleLinkText","validateUrl","validateUrlWithProtocol","validateLinkText","handleSave","resetForm","handleClose","setDefaults","linktext","focusFirstField","useImperativeHandle","FormField","InputField","Icon","FeedbackBox","AddTableForm","rowCount","setRowCount","columnCount","setColumnCount","rowId","columnId","handleDimentionChange","type","value","_a","useEffect","handleResizeScroll","setScrollableContainers","removeScrollableContainers","PREVENT_OPEN_DELAY","TablePlugin","isActive","editor","useLexicalComposerContext","flyout","showFlyout","hideFlyout","isVisible","useFlyout","addTableForm","buttonRef","preventOpen","isVisibleRef","openFlyout","rect","flyoutOptions","closeFlyout","insertTable","nrOfRows","nrOfColumns","selection","$getSelection","tableNode","createTable","$isRangeSelection","$getRoot","firstDescendant","mutateTable","action","anchorNode","currentNode","$getTableCellNodeFromLexicalNode","$isTableCellNode","insertRow","deleteRow","insertColumn","deleteColumn","deleteTable","rows","columns","_b","removeKeyboardShortcut","KEY_DOWN_COMMAND","COMMAND_PRIORITY_EDITOR","removeKeydown"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
- import "../../index-DuZiPGs-.js";
3
- import { r as n, s as a } from "../../react.esm-f8cBAyS5.js";
4
- import { u as e } from "../../index-sIsmp53X.js";
2
+ import "../../index-BqHyOZsF.js";
3
+ import { r as n, s as a } from "../../react.esm-BZoQ2TxA.js";
4
+ import { u as e } from "../../index-OJvb7CGo.js";
5
5
  import { Accordion as i } from "./Accordion.js";
6
6
  describe("Accordion", () => {
7
7
  it("should render", () => {
@@ -1,7 +1,7 @@
1
1
  import { jsx as n } from "react/jsx-runtime";
2
- import "../../index-DuZiPGs-.js";
3
- import { r as c, s as e, f as s, w as d } from "../../react.esm-f8cBAyS5.js";
4
- import { u as r } from "../../index-sIsmp53X.js";
2
+ import "../../index-BqHyOZsF.js";
3
+ import { r as c, s as e, f as s, w as d } from "../../react.esm-BZoQ2TxA.js";
4
+ import { u as r } from "../../index-OJvb7CGo.js";
5
5
  import { AccordionCard as a } from "./AccordionCard.js";
6
6
  describe("AccordionCard", () => {
7
7
  it("should render", () => {
@@ -0,0 +1,60 @@
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import "../../index-BqHyOZsF.js";
3
+ import { r as n, s as t, w as a } from "../../react.esm-BZoQ2TxA.js";
4
+ import { u as l } from "../../index-OJvb7CGo.js";
5
+ import { ActionList as o } from "./ActionList.js";
6
+ const T = jest.fn(), c = [
7
+ /* @__PURE__ */ i("button", { type: "button", onClick: T, children: "Test Action 1" }, "1"),
8
+ /* @__PURE__ */ i("button", { type: "button", children: "Test Action 2" }, "2"),
9
+ /* @__PURE__ */ i("button", { type: "button", children: "Test Action 3" }, "3")
10
+ ];
11
+ describe("ActionList", () => {
12
+ it("should render (variant primary)", () => {
13
+ n(
14
+ /* @__PURE__ */ i(o, { label: "Test ActionList", variant: "primary", iconName: "EllipsisVertical", children: c.map((e) => e) })
15
+ ), expect(t.getByText("Test ActionList")).toBeInTheDocument(), expect(t.getByText("Test ActionList")).toHaveClass("button--primary"), expect(t.getByText("Test Action 1")).toBeInTheDocument(), expect(t.getByText("Test Action 2")).toBeInTheDocument(), expect(t.getByText("Test Action 3")).toBeInTheDocument();
16
+ }), it("should render variant secondary", () => {
17
+ n(
18
+ /* @__PURE__ */ i(o, { label: "Test ActionList", variant: "secondary", iconName: "EllipsisVertical", children: c.map((e) => e) })
19
+ ), expect(t.getByText("Test ActionList")).toBeInTheDocument(), expect(t.getByText("Test ActionList")).toHaveClass("button--secondary");
20
+ }), it("should render variant destructive-primary", () => {
21
+ n(
22
+ /* @__PURE__ */ i(o, { label: "Test ActionList", variant: "destructive-primary", iconName: "EllipsisVertical", children: c.map((e) => e) })
23
+ ), expect(t.getByText("Test ActionList")).toBeInTheDocument(), expect(t.getByText("Test ActionList")).toHaveClass("button--destructive-primary");
24
+ }), it("should render variant destructive-secondary", () => {
25
+ n(
26
+ /* @__PURE__ */ i(o, { label: "Test ActionList", variant: "destructive-secondary", iconName: "EllipsisVertical", children: c.map((e) => e) })
27
+ ), expect(t.getByText("Test ActionList")).toBeInTheDocument(), expect(t.getByText("Test ActionList")).toHaveClass("button--destructive-secondary");
28
+ }), it("should render variant blank", () => {
29
+ n(
30
+ /* @__PURE__ */ i(o, { label: "Test ActionList", variant: "blank", iconName: "EllipsisVertical", children: c.map((e) => e) })
31
+ ), expect(t.getByText("Test ActionList")).toBeInTheDocument(), expect(t.getByText("Test ActionList")).toHaveClass("button--blank");
32
+ }), it("should render variant blank-icon", () => {
33
+ n(
34
+ /* @__PURE__ */ i(o, { label: "Test ActionList", variant: "blank-icon", iconName: "EllipsisVertical", children: c.map((e) => e) })
35
+ ), expect(t.getByText("Test ActionList")).toBeInTheDocument(), expect(t.getByText("Test ActionList")).toHaveClass("button--blank-icon");
36
+ }), it("should toggle content visibility on click", async () => {
37
+ n(
38
+ /* @__PURE__ */ i(o, { label: "Test ActionList", variant: "blank-icon", iconName: "EllipsisVertical", children: c.map((r) => r) })
39
+ );
40
+ const e = t.getByText("Test ActionList"), s = t.getByRole("menu");
41
+ expect(e).toBeInTheDocument(), expect(s).toBeInTheDocument(), await l.click(e), await a(() => {
42
+ expect(s).toHaveClass("action-list--open");
43
+ }), await l.click(e), await a(() => {
44
+ expect(s).not.toHaveClass("action-list--open");
45
+ });
46
+ }), it("should fire action on click on action button", async () => {
47
+ n(
48
+ /* @__PURE__ */ i(o, { label: "Test ActionList", variant: "blank-icon", iconName: "EllipsisVertical", children: c.map((p) => p) })
49
+ );
50
+ const e = t.getByText("Test ActionList"), s = t.getByRole("menu");
51
+ expect(e).toBeInTheDocument(), expect(s).toBeInTheDocument(), await l.click(e), await a(() => {
52
+ expect(s).toHaveClass("action-list--open");
53
+ });
54
+ const r = t.getByText("Test Action 1");
55
+ await l.click(r), expect(T).toHaveBeenCalledTimes(1), await a(() => {
56
+ expect(s).not.toHaveClass("action-list--open");
57
+ });
58
+ });
59
+ });
60
+ //# sourceMappingURL=ActionList.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionList.test.js","sources":["../../../src/components/ActionList/ActionList.test.tsx"],"sourcesContent":["import '@testing-library/jest-dom';\r\nimport { render, screen, waitFor } from '@testing-library/react';\r\nimport userEvent from '@testing-library/user-event';\r\n\r\nimport { ActionList } from './ActionList';\r\n\r\nconst onClickSpy = jest.fn();\r\n\r\nconst BUTTON_LIST = [\r\n <button key=\"1\" type=\"button\" onClick={onClickSpy}>\r\n Test Action 1\r\n </button>,\r\n <button key=\"2\" type=\"button\">\r\n Test Action 2\r\n </button>,\r\n <button key=\"3\" type=\"button\">\r\n Test Action 3\r\n </button>,\r\n];\r\n\r\ndescribe('ActionList', () => {\r\n it('should render (variant primary)', () => {\r\n render(\r\n <ActionList label=\"Test ActionList\" variant=\"primary\" iconName=\"EllipsisVertical\">\r\n {BUTTON_LIST.map((button) => button)}\r\n </ActionList>\r\n );\r\n expect(screen.getByText('Test ActionList')).toBeInTheDocument();\r\n expect(screen.getByText('Test ActionList')).toHaveClass('button--primary');\r\n expect(screen.getByText('Test Action 1')).toBeInTheDocument();\r\n expect(screen.getByText('Test Action 2')).toBeInTheDocument();\r\n expect(screen.getByText('Test Action 3')).toBeInTheDocument();\r\n });\r\n\r\n it('should render variant secondary', () => {\r\n render(\r\n <ActionList label=\"Test ActionList\" variant=\"secondary\" iconName=\"EllipsisVertical\">\r\n {BUTTON_LIST.map((button) => button)}\r\n </ActionList>\r\n );\r\n expect(screen.getByText('Test ActionList')).toBeInTheDocument();\r\n expect(screen.getByText('Test ActionList')).toHaveClass('button--secondary');\r\n });\r\n\r\n it('should render variant destructive-primary', () => {\r\n render(\r\n <ActionList label=\"Test ActionList\" variant=\"destructive-primary\" iconName=\"EllipsisVertical\">\r\n {BUTTON_LIST.map((button) => button)}\r\n </ActionList>\r\n );\r\n expect(screen.getByText('Test ActionList')).toBeInTheDocument();\r\n expect(screen.getByText('Test ActionList')).toHaveClass('button--destructive-primary');\r\n });\r\n\r\n it('should render variant destructive-secondary', () => {\r\n render(\r\n <ActionList label=\"Test ActionList\" variant=\"destructive-secondary\" iconName=\"EllipsisVertical\">\r\n {BUTTON_LIST.map((button) => button)}\r\n </ActionList>\r\n );\r\n expect(screen.getByText('Test ActionList')).toBeInTheDocument();\r\n expect(screen.getByText('Test ActionList')).toHaveClass('button--destructive-secondary');\r\n });\r\n\r\n it('should render variant blank', () => {\r\n render(\r\n <ActionList label=\"Test ActionList\" variant=\"blank\" iconName=\"EllipsisVertical\">\r\n {BUTTON_LIST.map((button) => button)}\r\n </ActionList>\r\n );\r\n expect(screen.getByText('Test ActionList')).toBeInTheDocument();\r\n expect(screen.getByText('Test ActionList')).toHaveClass('button--blank');\r\n });\r\n\r\n it('should render variant blank-icon', () => {\r\n render(\r\n <ActionList label=\"Test ActionList\" variant=\"blank-icon\" iconName=\"EllipsisVertical\">\r\n {BUTTON_LIST.map((button) => button)}\r\n </ActionList>\r\n );\r\n expect(screen.getByText('Test ActionList')).toBeInTheDocument();\r\n expect(screen.getByText('Test ActionList')).toHaveClass('button--blank-icon');\r\n });\r\n\r\n it('should toggle content visibility on click', async () => {\r\n render(\r\n <ActionList label=\"Test ActionList\" variant=\"blank-icon\" iconName=\"EllipsisVertical\">\r\n {BUTTON_LIST.map((button) => button)}\r\n </ActionList>\r\n );\r\n const triggerElement = screen.getByText('Test ActionList');\r\n const actionListElement = screen.getByRole('menu');\r\n expect(triggerElement).toBeInTheDocument();\r\n expect(actionListElement).toBeInTheDocument();\r\n await userEvent.click(triggerElement);\r\n await waitFor(() => {\r\n expect(actionListElement).toHaveClass('action-list--open');\r\n });\r\n await userEvent.click(triggerElement);\r\n await waitFor(() => {\r\n expect(actionListElement).not.toHaveClass('action-list--open');\r\n });\r\n });\r\n\r\n it('should fire action on click on action button', async () => {\r\n render(\r\n <ActionList label=\"Test ActionList\" variant=\"blank-icon\" iconName=\"EllipsisVertical\">\r\n {BUTTON_LIST.map((button) => button)}\r\n </ActionList>\r\n );\r\n const triggerElement = screen.getByText('Test ActionList');\r\n const actionListElement = screen.getByRole('menu');\r\n expect(triggerElement).toBeInTheDocument();\r\n expect(actionListElement).toBeInTheDocument();\r\n await userEvent.click(triggerElement);\r\n await waitFor(() => {\r\n expect(actionListElement).toHaveClass('action-list--open');\r\n });\r\n const actionButton = screen.getByText('Test Action 1');\r\n await userEvent.click(actionButton);\r\n expect(onClickSpy).toHaveBeenCalledTimes(1);\r\n await waitFor(() => {\r\n expect(actionListElement).not.toHaveClass('action-list--open');\r\n });\r\n });\r\n});\r\n"],"names":["onClickSpy","BUTTON_LIST","jsx","render","ActionList","button","screen","triggerElement","actionListElement","userEvent","waitFor","actionButton"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import "../../index-BqHyOZsF.js";
3
+ import { r, s as t } from "../../react.esm-BZoQ2TxA.js";
4
+ import { AppStatusBar as s } from "./AppStatusBar.js";
5
+ describe("AppStatusBar", () => {
6
+ it("should render", () => {
7
+ r(/* @__PURE__ */ e(s, { message: "AppStatusBar message", severity: "info" })), expect(t.getByText("AppStatusBar message")).toBeInTheDocument();
8
+ });
9
+ });
10
+ //# sourceMappingURL=AppStatusBar.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppStatusBar.test.js","sources":["../../../src/components/AppStatusBar/AppStatusBar.test.tsx"],"sourcesContent":["import '@testing-library/jest-dom';\r\nimport { render, screen } from '@testing-library/react';\r\n\r\nimport { AppStatusBar } from './AppStatusBar';\r\n\r\ndescribe('AppStatusBar', () => {\r\n it('should render', () => {\r\n render(<AppStatusBar message=\"AppStatusBar message\" severity=\"info\" />);\r\n expect(screen.getByText('AppStatusBar message')).toBeInTheDocument();\r\n });\r\n});\r\n"],"names":["render","AppStatusBar","screen"],"mappings":";;;;AAKA,SAAS,gBAAgB,MAAM;AAC7B,KAAG,iBAAiB,MAAM;AACxB,IAAAA,oBAAQC,GAAa,EAAA,SAAQ,wBAAuB,UAAS,QAAO,CAAE,GACtE,OAAOC,EAAO,UAAU,sBAAsB,CAAC,EAAE,kBAAkB;AAAA,EAAA,CACpE;AACH,CAAC;"}
File without changes
@@ -0,0 +1,10 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import "../../index-BqHyOZsF.js";
3
+ import { r as t, s as r } from "../../react.esm-BZoQ2TxA.js";
4
+ import { Attention as n } from "./Attention.js";
5
+ describe("Attention", () => {
6
+ it("should render (variant primary)", () => {
7
+ t(/* @__PURE__ */ e(n, { children: "Attention message" })), expect(r.getByText("Attention message")).toBeInTheDocument();
8
+ });
9
+ });
10
+ //# sourceMappingURL=Attention.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Attention.test.js","sources":["../../../src/components/Attention/Attention.test.tsx"],"sourcesContent":["import '@testing-library/jest-dom';\r\nimport { render, screen } from '@testing-library/react';\r\n\r\nimport { Attention } from './Attention';\r\n\r\ndescribe('Attention', () => {\r\n it('should render (variant primary)', () => {\r\n render(<Attention>Attention message</Attention>);\r\n expect(screen.getByText('Attention message')).toBeInTheDocument();\r\n });\r\n});\r\n"],"names":["render","jsx","Attention","screen"],"mappings":";;;;AAKA,SAAS,aAAa,MAAM;AAC1B,KAAG,mCAAmC,MAAM;AACnC,IAAAA,EAAA,gBAAAC,EAACC,GAAU,EAAA,UAAA,oBAAiB,CAAA,CAAY,GAC/C,OAAOC,EAAO,UAAU,mBAAmB,CAAC,EAAE,kBAAkB;AAAA,EAAA,CACjE;AACH,CAAC;"}
File without changes
@@ -0,0 +1,10 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import "../../index-BqHyOZsF.js";
3
+ import { r as e, s as o } from "../../react.esm-BZoQ2TxA.js";
4
+ import { Backdrop as t } from "./Backdrop.js";
5
+ describe("Backdrop", () => {
6
+ it("should render", () => {
7
+ e(/* @__PURE__ */ r(t, { children: "Backdrop overlay" })), expect(o.getByText("Backdrop overlay")).toBeInTheDocument();
8
+ });
9
+ });
10
+ //# sourceMappingURL=Backdrop.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Backdrop.test.js","sources":["../../../src/components/Backdrop/Backdrop.test.tsx"],"sourcesContent":["import '@testing-library/jest-dom';\r\nimport { render, screen } from '@testing-library/react';\r\n\r\nimport { Backdrop } from './Backdrop';\r\n\r\ndescribe('Backdrop', () => {\r\n it('should render', () => {\r\n render(<Backdrop>Backdrop overlay</Backdrop>);\r\n expect(screen.getByText('Backdrop overlay')).toBeInTheDocument();\r\n });\r\n});\r\n"],"names":["render","jsx","Backdrop","screen"],"mappings":";;;;AAKA,SAAS,YAAY,MAAM;AACzB,KAAG,iBAAiB,MAAM;AACjB,IAAAA,EAAA,gBAAAC,EAACC,GAAS,EAAA,UAAA,mBAAgB,CAAA,CAAW,GAC5C,OAAOC,EAAO,UAAU,kBAAkB,CAAC,EAAE,kBAAkB;AAAA,EAAA,CAChE;AACH,CAAC;"}
File without changes
@@ -0,0 +1,35 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import "../../index-BqHyOZsF.js";
3
+ import { r as n, s as t, f as c } from "../../react.esm-BZoQ2TxA.js";
4
+ import { Button as o } from "./Button.js";
5
+ const s = jest.fn();
6
+ describe("Button", () => {
7
+ it("should render primary", () => {
8
+ n(/* @__PURE__ */ e(o, { variant: "primary", children: "Test Button" })), expect(t.getByText("Test Button")).toBeInTheDocument();
9
+ }), it("should render secondary", () => {
10
+ n(/* @__PURE__ */ e(o, { variant: "secondary", children: "Test Button" })), expect(t.getByText("Test Button")).toBeInTheDocument(), expect(t.getByText("Test Button")).toHaveClass("button--secondary");
11
+ }), it("should render destructive-primary", () => {
12
+ n(/* @__PURE__ */ e(o, { variant: "destructive-primary", children: "Test Button" })), expect(t.getByText("Test Button")).toBeInTheDocument(), expect(t.getByText("Test Button")).toHaveClass("button--destructive-primary");
13
+ }), it("should render destructive-secondary", () => {
14
+ n(/* @__PURE__ */ e(o, { variant: "destructive-secondary", children: "Test Button" })), expect(t.getByText("Test Button")).toBeInTheDocument(), expect(t.getByText("Test Button")).toHaveClass("button--destructive-secondary");
15
+ }), it("should render blank", () => {
16
+ n(/* @__PURE__ */ e(o, { variant: "blank", children: "Test Button" })), expect(t.getByText("Test Button")).toBeInTheDocument(), expect(t.getByText("Test Button")).toHaveClass("button--blank");
17
+ }), it("should render as column", () => {
18
+ n(
19
+ /* @__PURE__ */ e(o, { variant: "primary", displayColumn: !0, children: "Test Button" })
20
+ ), expect(t.getByText("Test Button")).toBeInTheDocument(), expect(t.getByText("Test Button")).toHaveClass("button--wide-column");
21
+ }), it("should render disabled", () => {
22
+ n(
23
+ /* @__PURE__ */ e(o, { variant: "primary", disabled: !0, children: "Test Button" })
24
+ );
25
+ const r = t.getByText("Test Button");
26
+ expect(r).toBeInTheDocument(), expect(r).toHaveAttribute("disabled"), c.click(r), expect(s).toHaveBeenCalledTimes(0);
27
+ }), it("should call onClick when clicked", () => {
28
+ n(
29
+ /* @__PURE__ */ e(o, { variant: "primary", onClick: s, children: "Test Button" })
30
+ );
31
+ const r = t.getByText("Test Button");
32
+ expect(r).toBeInTheDocument(), c.click(r), expect(s).toHaveBeenCalledTimes(1);
33
+ });
34
+ });
35
+ //# sourceMappingURL=Button.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.test.js","sources":["../../../src/components/Buttons/Button.test.tsx"],"sourcesContent":["import '@testing-library/jest-dom';\r\nimport { fireEvent, render, screen } from '@testing-library/react';\r\n\r\nimport { Button } from './Button';\r\n\r\nconst onClickSpy = jest.fn();\r\n\r\ndescribe('Button', () => {\r\n it('should render primary', () => {\r\n render(<Button variant=\"primary\">Test Button</Button>);\r\n expect(screen.getByText('Test Button')).toBeInTheDocument();\r\n });\r\n\r\n it('should render secondary', () => {\r\n render(<Button variant=\"secondary\">Test Button</Button>);\r\n expect(screen.getByText('Test Button')).toBeInTheDocument();\r\n expect(screen.getByText('Test Button')).toHaveClass('button--secondary');\r\n });\r\n\r\n it('should render destructive-primary', () => {\r\n render(<Button variant=\"destructive-primary\">Test Button</Button>);\r\n expect(screen.getByText('Test Button')).toBeInTheDocument();\r\n expect(screen.getByText('Test Button')).toHaveClass('button--destructive-primary');\r\n });\r\n\r\n it('should render destructive-secondary', () => {\r\n render(<Button variant=\"destructive-secondary\">Test Button</Button>);\r\n expect(screen.getByText('Test Button')).toBeInTheDocument();\r\n expect(screen.getByText('Test Button')).toHaveClass('button--destructive-secondary');\r\n });\r\n\r\n it('should render blank', () => {\r\n render(<Button variant=\"blank\">Test Button</Button>);\r\n expect(screen.getByText('Test Button')).toBeInTheDocument();\r\n expect(screen.getByText('Test Button')).toHaveClass('button--blank');\r\n });\r\n\r\n it('should render as column', () => {\r\n render(\r\n <Button variant=\"primary\" displayColumn>\r\n Test Button\r\n </Button>\r\n );\r\n expect(screen.getByText('Test Button')).toBeInTheDocument();\r\n expect(screen.getByText('Test Button')).toHaveClass('button--wide-column');\r\n });\r\n\r\n it('should render disabled', () => {\r\n render(\r\n <Button variant=\"primary\" disabled>\r\n Test Button\r\n </Button>\r\n );\r\n const button = screen.getByText('Test Button');\r\n expect(button).toBeInTheDocument();\r\n expect(button).toHaveAttribute('disabled');\r\n fireEvent.click(button);\r\n expect(onClickSpy).toHaveBeenCalledTimes(0);\r\n });\r\n\r\n it('should call onClick when clicked', () => {\r\n render(\r\n <Button variant=\"primary\" onClick={onClickSpy}>\r\n Test Button\r\n </Button>\r\n );\r\n const button = screen.getByText('Test Button');\r\n expect(button).toBeInTheDocument();\r\n fireEvent.click(button);\r\n expect(onClickSpy).toHaveBeenCalledTimes(1);\r\n });\r\n});\r\n"],"names":["onClickSpy","render","jsx","Button","screen","button","fireEvent"],"mappings":";;;;AAKA,MAAMA,IAAa,KAAK,GAAG;AAE3B,SAAS,UAAU,MAAM;AACvB,KAAG,yBAAyB,MAAM;AAChC,IAAAC,EAAQ,gBAAAC,EAAAC,GAAA,EAAO,SAAQ,WAAU,yBAAW,CAAS,GACrD,OAAOC,EAAO,UAAU,aAAa,CAAC,EAAE,kBAAkB;AAAA,EAAA,CAC3D,GAED,GAAG,2BAA2B,MAAM;AAClC,IAAAH,EAAQ,gBAAAC,EAAAC,GAAA,EAAO,SAAQ,aAAY,yBAAW,CAAS,GACvD,OAAOC,EAAO,UAAU,aAAa,CAAC,EAAE,kBAAkB,GAC1D,OAAOA,EAAO,UAAU,aAAa,CAAC,EAAE,YAAY,mBAAmB;AAAA,EAAA,CACxE,GAED,GAAG,qCAAqC,MAAM;AAC5C,IAAAH,EAAQ,gBAAAC,EAAAC,GAAA,EAAO,SAAQ,uBAAsB,yBAAW,CAAS,GACjE,OAAOC,EAAO,UAAU,aAAa,CAAC,EAAE,kBAAkB,GAC1D,OAAOA,EAAO,UAAU,aAAa,CAAC,EAAE,YAAY,6BAA6B;AAAA,EAAA,CAClF,GAED,GAAG,uCAAuC,MAAM;AAC9C,IAAAH,EAAQ,gBAAAC,EAAAC,GAAA,EAAO,SAAQ,yBAAwB,yBAAW,CAAS,GACnE,OAAOC,EAAO,UAAU,aAAa,CAAC,EAAE,kBAAkB,GAC1D,OAAOA,EAAO,UAAU,aAAa,CAAC,EAAE,YAAY,+BAA+B;AAAA,EAAA,CACpF,GAED,GAAG,uBAAuB,MAAM;AAC9B,IAAAH,EAAQ,gBAAAC,EAAAC,GAAA,EAAO,SAAQ,SAAQ,yBAAW,CAAS,GACnD,OAAOC,EAAO,UAAU,aAAa,CAAC,EAAE,kBAAkB,GAC1D,OAAOA,EAAO,UAAU,aAAa,CAAC,EAAE,YAAY,eAAe;AAAA,EAAA,CACpE,GAED,GAAG,2BAA2B,MAAM;AAClC,IAAAH;AAAA,wBACGE,GAAO,EAAA,SAAQ,WAAU,eAAa,IAAC,UAExC,cAAA,CAAA;AAAA,IACF,GACA,OAAOC,EAAO,UAAU,aAAa,CAAC,EAAE,kBAAkB,GAC1D,OAAOA,EAAO,UAAU,aAAa,CAAC,EAAE,YAAY,qBAAqB;AAAA,EAAA,CAC1E,GAED,GAAG,0BAA0B,MAAM;AACjC,IAAAH;AAAA,wBACGE,GAAO,EAAA,SAAQ,WAAU,UAAQ,IAAC,UAEnC,cAAA,CAAA;AAAA,IACF;AACM,UAAAE,IAASD,EAAO,UAAU,aAAa;AACtC,WAAAC,CAAM,EAAE,kBAAkB,GAC1B,OAAAA,CAAM,EAAE,gBAAgB,UAAU,GACzCC,EAAU,MAAMD,CAAM,GACf,OAAAL,CAAU,EAAE,sBAAsB,CAAC;AAAA,EAAA,CAC3C,GAED,GAAG,oCAAoC,MAAM;AAC3C,IAAAC;AAAA,wBACGE,GAAO,EAAA,SAAQ,WAAU,SAASH,GAAY,UAE/C,cAAA,CAAA;AAAA,IACF;AACM,UAAAK,IAASD,EAAO,UAAU,aAAa;AACtC,WAAAC,CAAM,EAAE,kBAAkB,GACjCC,EAAU,MAAMD,CAAM,GACf,OAAAL,CAAU,EAAE,sBAAsB,CAAC;AAAA,EAAA,CAC3C;AACH,CAAC;"}
File without changes