@db-ux/react-core-components 4.11.1 → 4.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/components/accordion/accordion.d.ts +1 -1
  3. package/dist/components/accordion/accordion.js +83 -102
  4. package/dist/components/accordion/index.d.ts +1 -1
  5. package/dist/components/accordion/index.js +1 -0
  6. package/dist/components/accordion/model.d.ts +2 -2
  7. package/dist/components/accordion/model.js +2 -4
  8. package/dist/components/accordion-item/accordion-item.d.ts +2 -2
  9. package/dist/components/accordion-item/accordion-item.js +56 -89
  10. package/dist/components/accordion-item/index.d.ts +1 -1
  11. package/dist/components/accordion-item/index.js +1 -0
  12. package/dist/components/accordion-item/model.d.ts +1 -1
  13. package/dist/components/accordion-item/model.js +1 -0
  14. package/dist/components/badge/badge.d.ts +1 -1
  15. package/dist/components/badge/badge.js +28 -72
  16. package/dist/components/badge/index.d.ts +1 -1
  17. package/dist/components/badge/index.js +1 -0
  18. package/dist/components/badge/model.d.ts +1 -1
  19. package/dist/components/badge/model.js +1 -12
  20. package/dist/components/brand/brand.d.ts +1 -1
  21. package/dist/components/brand/brand.js +10 -60
  22. package/dist/components/brand/index.d.ts +1 -1
  23. package/dist/components/brand/index.js +1 -0
  24. package/dist/components/brand/model.d.ts +1 -1
  25. package/dist/components/brand/model.js +1 -0
  26. package/dist/components/button/button.d.ts +1 -1
  27. package/dist/components/button/button.js +19 -75
  28. package/dist/components/button/index.d.ts +1 -1
  29. package/dist/components/button/index.js +1 -0
  30. package/dist/components/button/model.d.ts +1 -1
  31. package/dist/components/button/model.js +2 -13
  32. package/dist/components/card/card.d.ts +1 -1
  33. package/dist/components/card/card.js +14 -65
  34. package/dist/components/card/index.d.ts +1 -1
  35. package/dist/components/card/index.js +1 -0
  36. package/dist/components/card/model.d.ts +1 -1
  37. package/dist/components/card/model.js +2 -8
  38. package/dist/components/checkbox/checkbox.d.ts +1 -1
  39. package/dist/components/checkbox/checkbox.js +143 -163
  40. package/dist/components/checkbox/index.d.ts +1 -1
  41. package/dist/components/checkbox/index.js +1 -0
  42. package/dist/components/checkbox/model.d.ts +1 -1
  43. package/dist/components/checkbox/model.js +1 -0
  44. package/dist/components/custom-button/custom-button.d.ts +1 -1
  45. package/dist/components/custom-button/custom-button.js +10 -65
  46. package/dist/components/custom-button/index.d.ts +1 -1
  47. package/dist/components/custom-button/index.js +1 -0
  48. package/dist/components/custom-button/model.d.ts +2 -2
  49. package/dist/components/custom-button/model.js +1 -0
  50. package/dist/components/custom-select/custom-select.d.ts +1 -1
  51. package/dist/components/custom-select/custom-select.js +688 -509
  52. package/dist/components/custom-select/index.d.ts +1 -1
  53. package/dist/components/custom-select/index.js +1 -0
  54. package/dist/components/custom-select/model.d.ts +4 -4
  55. package/dist/components/custom-select/model.js +1 -8
  56. package/dist/components/custom-select-dropdown/custom-select-dropdown.d.ts +1 -1
  57. package/dist/components/custom-select-dropdown/custom-select-dropdown.js +10 -62
  58. package/dist/components/custom-select-dropdown/index.d.ts +1 -1
  59. package/dist/components/custom-select-dropdown/index.js +1 -0
  60. package/dist/components/custom-select-dropdown/model.d.ts +1 -1
  61. package/dist/components/custom-select-dropdown/model.js +1 -8
  62. package/dist/components/custom-select-form-field/custom-select-form-field.d.ts +1 -1
  63. package/dist/components/custom-select-form-field/custom-select-form-field.js +9 -57
  64. package/dist/components/custom-select-form-field/index.d.ts +1 -1
  65. package/dist/components/custom-select-form-field/index.js +1 -0
  66. package/dist/components/custom-select-form-field/model.d.ts +1 -1
  67. package/dist/components/custom-select-form-field/model.js +1 -0
  68. package/dist/components/custom-select-list/custom-select-list.d.ts +1 -1
  69. package/dist/components/custom-select-list/custom-select-list.js +9 -60
  70. package/dist/components/custom-select-list/index.d.ts +1 -1
  71. package/dist/components/custom-select-list/index.js +1 -0
  72. package/dist/components/custom-select-list/model.d.ts +1 -1
  73. package/dist/components/custom-select-list/model.js +1 -0
  74. package/dist/components/custom-select-list-item/custom-select-list-item.d.ts +2 -2
  75. package/dist/components/custom-select-list-item/custom-select-list-item.js +28 -89
  76. package/dist/components/custom-select-list-item/index.d.ts +1 -1
  77. package/dist/components/custom-select-list-item/index.js +1 -0
  78. package/dist/components/custom-select-list-item/model.d.ts +1 -1
  79. package/dist/components/custom-select-list-item/model.js +1 -4
  80. package/dist/components/divider/divider.d.ts +1 -1
  81. package/dist/components/divider/divider.js +9 -60
  82. package/dist/components/divider/index.d.ts +1 -1
  83. package/dist/components/divider/index.js +1 -0
  84. package/dist/components/divider/model.d.ts +1 -1
  85. package/dist/components/divider/model.js +2 -4
  86. package/dist/components/drawer/drawer.d.ts +2 -2
  87. package/dist/components/drawer/drawer.js +109 -118
  88. package/dist/components/drawer/index.d.ts +1 -1
  89. package/dist/components/drawer/index.js +1 -0
  90. package/dist/components/drawer/model.d.ts +4 -1
  91. package/dist/components/drawer/model.js +4 -14
  92. package/dist/components/header/header.d.ts +1 -1
  93. package/dist/components/header/header.js +43 -143
  94. package/dist/components/header/index.d.ts +1 -1
  95. package/dist/components/header/index.js +1 -0
  96. package/dist/components/header/model.d.ts +1 -1
  97. package/dist/components/header/model.js +1 -0
  98. package/dist/components/icon/icon.d.ts +1 -1
  99. package/dist/components/icon/icon.js +9 -61
  100. package/dist/components/icon/index.d.ts +1 -1
  101. package/dist/components/icon/index.js +1 -0
  102. package/dist/components/icon/model.d.ts +1 -1
  103. package/dist/components/icon/model.js +1 -11
  104. package/dist/components/infotext/index.d.ts +1 -1
  105. package/dist/components/infotext/index.js +1 -0
  106. package/dist/components/infotext/infotext.d.ts +1 -1
  107. package/dist/components/infotext/infotext.js +9 -62
  108. package/dist/components/infotext/model.d.ts +1 -1
  109. package/dist/components/infotext/model.js +1 -0
  110. package/dist/components/input/index.d.ts +1 -1
  111. package/dist/components/input/index.js +1 -0
  112. package/dist/components/input/input.d.ts +1 -1
  113. package/dist/components/input/input.js +154 -198
  114. package/dist/components/input/model.d.ts +1 -1
  115. package/dist/components/input/model.js +5 -21
  116. package/dist/components/link/index.d.ts +1 -1
  117. package/dist/components/link/index.js +1 -0
  118. package/dist/components/link/link.d.ts +1 -1
  119. package/dist/components/link/link.js +9 -70
  120. package/dist/components/link/model.d.ts +1 -1
  121. package/dist/components/link/model.js +3 -8
  122. package/dist/components/navigation/index.d.ts +1 -1
  123. package/dist/components/navigation/index.js +1 -0
  124. package/dist/components/navigation/model.d.ts +1 -1
  125. package/dist/components/navigation/model.js +1 -0
  126. package/dist/components/navigation/navigation.d.ts +1 -1
  127. package/dist/components/navigation/navigation.js +9 -57
  128. package/dist/components/navigation-item/index.d.ts +1 -1
  129. package/dist/components/navigation-item/index.js +1 -0
  130. package/dist/components/navigation-item/model.d.ts +2 -2
  131. package/dist/components/navigation-item/model.js +1 -0
  132. package/dist/components/navigation-item/navigation-item.d.ts +1 -1
  133. package/dist/components/navigation-item/navigation-item.js +71 -117
  134. package/dist/components/notification/index.d.ts +1 -1
  135. package/dist/components/notification/index.js +1 -0
  136. package/dist/components/notification/model.d.ts +1 -1
  137. package/dist/components/notification/model.js +3 -12
  138. package/dist/components/notification/notification.d.ts +2 -2
  139. package/dist/components/notification/notification.js +23 -100
  140. package/dist/components/page/index.d.ts +1 -1
  141. package/dist/components/page/index.js +1 -0
  142. package/dist/components/page/model.d.ts +1 -1
  143. package/dist/components/page/model.js +2 -4
  144. package/dist/components/page/page.d.ts +1 -1
  145. package/dist/components/page/page.js +42 -74
  146. package/dist/components/popover/index.d.ts +1 -1
  147. package/dist/components/popover/index.js +1 -0
  148. package/dist/components/popover/model.d.ts +1 -1
  149. package/dist/components/popover/model.js +1 -0
  150. package/dist/components/popover/popover.d.ts +1 -1
  151. package/dist/components/popover/popover.js +119 -126
  152. package/dist/components/radio/index.d.ts +1 -1
  153. package/dist/components/radio/index.js +1 -0
  154. package/dist/components/radio/model.d.ts +1 -1
  155. package/dist/components/radio/model.js +1 -0
  156. package/dist/components/radio/radio.d.ts +1 -1
  157. package/dist/components/radio/radio.js +86 -124
  158. package/dist/components/section/index.d.ts +1 -1
  159. package/dist/components/section/index.js +1 -0
  160. package/dist/components/section/model.d.ts +1 -1
  161. package/dist/components/section/model.js +1 -0
  162. package/dist/components/section/section.d.ts +1 -1
  163. package/dist/components/section/section.js +9 -59
  164. package/dist/components/select/index.d.ts +1 -1
  165. package/dist/components/select/index.js +1 -0
  166. package/dist/components/select/model.d.ts +1 -1
  167. package/dist/components/select/model.js +1 -0
  168. package/dist/components/select/select.d.ts +1 -1
  169. package/dist/components/select/select.js +172 -188
  170. package/dist/components/stack/index.d.ts +1 -1
  171. package/dist/components/stack/index.js +1 -0
  172. package/dist/components/stack/model.d.ts +1 -1
  173. package/dist/components/stack/model.js +4 -14
  174. package/dist/components/stack/stack.d.ts +1 -1
  175. package/dist/components/stack/stack.js +9 -63
  176. package/dist/components/switch/index.d.ts +1 -1
  177. package/dist/components/switch/index.js +1 -0
  178. package/dist/components/switch/model.d.ts +1 -1
  179. package/dist/components/switch/model.js +1 -0
  180. package/dist/components/switch/switch.d.ts +1 -1
  181. package/dist/components/switch/switch.js +135 -182
  182. package/dist/components/tab-item/index.d.ts +1 -1
  183. package/dist/components/tab-item/index.js +1 -0
  184. package/dist/components/tab-item/model.d.ts +1 -1
  185. package/dist/components/tab-item/model.js +1 -0
  186. package/dist/components/tab-item/tab-item.d.ts +1 -1
  187. package/dist/components/tab-item/tab-item.js +72 -105
  188. package/dist/components/tab-list/index.d.ts +1 -1
  189. package/dist/components/tab-list/index.js +1 -0
  190. package/dist/components/tab-list/model.d.ts +1 -1
  191. package/dist/components/tab-list/model.js +1 -0
  192. package/dist/components/tab-list/tab-list.d.ts +1 -1
  193. package/dist/components/tab-list/tab-list.js +9 -60
  194. package/dist/components/tab-panel/index.d.ts +1 -1
  195. package/dist/components/tab-panel/index.js +1 -0
  196. package/dist/components/tab-panel/model.d.ts +1 -1
  197. package/dist/components/tab-panel/model.js +1 -0
  198. package/dist/components/tab-panel/tab-panel.d.ts +1 -1
  199. package/dist/components/tab-panel/tab-panel.js +10 -59
  200. package/dist/components/table/examples/data.d.ts +1 -1
  201. package/dist/components/table/examples/data.js +258 -0
  202. package/dist/components/table/index.d.ts +1 -1
  203. package/dist/components/table/index.js +1 -0
  204. package/dist/components/table/model.d.ts +2 -2
  205. package/dist/components/table/model.js +6 -28
  206. package/dist/components/table/table.d.ts +1 -1
  207. package/dist/components/table/table.js +77 -111
  208. package/dist/components/table-body/index.d.ts +1 -1
  209. package/dist/components/table-body/index.js +1 -0
  210. package/dist/components/table-body/model.d.ts +2 -2
  211. package/dist/components/table-body/model.js +1 -0
  212. package/dist/components/table-body/table-body.d.ts +1 -1
  213. package/dist/components/table-body/table-body.js +12 -64
  214. package/dist/components/table-caption/index.d.ts +1 -1
  215. package/dist/components/table-caption/index.js +1 -0
  216. package/dist/components/table-caption/model.d.ts +1 -1
  217. package/dist/components/table-caption/model.js +1 -0
  218. package/dist/components/table-caption/table-caption.d.ts +1 -1
  219. package/dist/components/table-caption/table-caption.js +9 -57
  220. package/dist/components/table-data-cell/index.d.ts +1 -1
  221. package/dist/components/table-data-cell/index.js +1 -0
  222. package/dist/components/table-data-cell/model.d.ts +1 -1
  223. package/dist/components/table-data-cell/model.js +1 -0
  224. package/dist/components/table-data-cell/table-data-cell.d.ts +1 -1
  225. package/dist/components/table-data-cell/table-data-cell.js +9 -62
  226. package/dist/components/table-footer/index.d.ts +1 -1
  227. package/dist/components/table-footer/index.js +1 -0
  228. package/dist/components/table-footer/model.d.ts +2 -2
  229. package/dist/components/table-footer/model.js +1 -0
  230. package/dist/components/table-footer/table-footer.d.ts +1 -1
  231. package/dist/components/table-footer/table-footer.js +12 -64
  232. package/dist/components/table-head/index.d.ts +1 -1
  233. package/dist/components/table-head/index.js +1 -0
  234. package/dist/components/table-head/model.d.ts +2 -2
  235. package/dist/components/table-head/model.js +1 -0
  236. package/dist/components/table-head/table-head.d.ts +1 -1
  237. package/dist/components/table-head/table-head.js +18 -71
  238. package/dist/components/table-header-cell/index.d.ts +1 -1
  239. package/dist/components/table-header-cell/index.js +1 -0
  240. package/dist/components/table-header-cell/model.d.ts +1 -1
  241. package/dist/components/table-header-cell/model.js +1 -9
  242. package/dist/components/table-header-cell/table-header-cell.d.ts +1 -1
  243. package/dist/components/table-header-cell/table-header-cell.js +9 -65
  244. package/dist/components/table-row/index.d.ts +1 -1
  245. package/dist/components/table-row/index.js +1 -0
  246. package/dist/components/table-row/model.d.ts +4 -4
  247. package/dist/components/table-row/model.js +1 -8
  248. package/dist/components/table-row/table-row.d.ts +1 -1
  249. package/dist/components/table-row/table-row.js +20 -127
  250. package/dist/components/tabs/index.d.ts +1 -1
  251. package/dist/components/tabs/index.js +1 -0
  252. package/dist/components/tabs/model.d.ts +3 -3
  253. package/dist/components/tabs/model.js +2 -4
  254. package/dist/components/tabs/tabs.d.ts +1 -1
  255. package/dist/components/tabs/tabs.js +170 -191
  256. package/dist/components/tag/index.d.ts +1 -1
  257. package/dist/components/tag/index.js +1 -0
  258. package/dist/components/tag/model.d.ts +1 -1
  259. package/dist/components/tag/model.js +1 -4
  260. package/dist/components/tag/tag.d.ts +1 -1
  261. package/dist/components/tag/tag.js +26 -91
  262. package/dist/components/textarea/index.d.ts +1 -1
  263. package/dist/components/textarea/index.js +1 -0
  264. package/dist/components/textarea/model.d.ts +1 -1
  265. package/dist/components/textarea/model.js +2 -13
  266. package/dist/components/textarea/textarea.d.ts +1 -1
  267. package/dist/components/textarea/textarea.js +139 -165
  268. package/dist/components/tooltip/index.d.ts +1 -1
  269. package/dist/components/tooltip/index.js +1 -0
  270. package/dist/components/tooltip/model.d.ts +1 -1
  271. package/dist/components/tooltip/model.js +1 -4
  272. package/dist/components/tooltip/tooltip.d.ts +1 -1
  273. package/dist/components/tooltip/tooltip.js +197 -160
  274. package/dist/index.d.ts +97 -97
  275. package/dist/index.js +97 -75
  276. package/dist/shared/constants.js +100 -32
  277. package/dist/shared/examples/index.js +4 -0
  278. package/dist/shared/figma.js +1 -0
  279. package/dist/shared/model.js +22 -77
  280. package/dist/shared/showcase/show-code-link.js +51 -0
  281. package/dist/utils/document-click-listener.js +29 -26
  282. package/dist/utils/document-scroll-listener.js +38 -30
  283. package/dist/utils/floating-components.js +404 -107
  284. package/dist/utils/form-components.js +71 -34
  285. package/dist/utils/index.d.ts +1 -1
  286. package/dist/utils/index.js +170 -49
  287. package/dist/utils/navigation.js +134 -68
  288. package/dist/utils/react.js +21 -10
  289. package/package.json +6 -9
@@ -1,184 +1,137 @@
1
1
  "use client";
2
- import { filterPassingProps as e, getRootProps as t } from "../../utils/react.js";
3
- import { cls as n, delay as r, getBoolean as i, getBooleanAsString as a, getHideProp as o, hasVoiceOver as s, stringPropVisible as c } from "../../utils/index.js";
4
- import { DEFAULT_INVALID_MESSAGE_ID_SUFFIX as l, DEFAULT_MESSAGE_ID_SUFFIX as u, DEFAULT_VALID_MESSAGE_ID_SUFFIX as d } from "../../shared/constants.js";
5
- import { addCheckedResetEventListener as f } from "../../utils/form-components.js";
6
- import p from "../infotext/infotext.js";
7
- import { forwardRef as m, useEffect as h, useId as g, useRef as _, useState as v } from "react";
8
- import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
9
- //#region src/components/switch/switch.tsx
10
- function S(m, S) {
11
- let C = g(), w = S || _(S), [T, E] = v(() => void 0), [D, O] = v(() => void 0), [k, A] = v(() => void 0), [j, M] = v(() => void 0), [N, P] = v(() => void 0), [F, I] = v(() => void 0), [L, R] = v(() => ""), [z, B] = v(() => void 0);
12
- function V() {
13
- return !!(m.validMessage ?? m.validation === "valid");
14
- }
15
- function H() {
16
- if (!w.current?.validity?.valid || m.validation === "invalid") {
17
- I(j), P(m.invalidMessage || w.current?.validationMessage || "TODO: Add an invalidMessage"), s() && (R(N || "TODO: Add an invalidMessage"), r(() => {
18
- R("");
19
- }, 1e3));
20
- return;
21
- }
22
- if (V() && w.current?.validity?.valid && m.required) {
23
- I(k), s() && (R(m.validMessage ?? "TODO: Add a validMessage"), r(() => {
24
- R("");
25
- }, 1e3));
26
- return;
27
- }
28
- if (c(m.message, m.showMessage)) {
29
- I(D);
30
- return;
31
- }
32
- I(void 0);
33
- }
34
- function U(e, t) {
35
- m.onChange && m.onChange(e), H();
36
- }
37
- function W(e) {
38
- m.onBlur && m.onBlur(e);
39
- }
40
- function G(e) {
41
- m.onFocus && m.onFocus(e);
42
- }
43
- function K(e) {
44
- e.key === "Enter" && (e.preventDefault(), m.disabled || w.current?.click());
45
- }
46
- function q() {
47
- let e = m.id ?? m.propOverrides?.id ?? `switch-${C}`;
48
- E(e), O(`${e}${u}`), A(`${e}${d}`), M(`${e}${l}`);
49
- }
50
- return h(() => {
51
- q(), H(), P(m.invalidMessage || "TODO: Add an invalidMessage");
52
- }, []), h(() => {
53
- (m.id ?? m.propOverrides?.id) && q();
54
- }, [m.id, m.propOverrides?.id]), h(() => {
55
- H();
56
- }, [
57
- m.validation,
58
- m.required,
59
- m.message,
60
- m.showMessage,
61
- m.validMessage,
62
- m.invalidMessage,
63
- m.checked
64
- ]), h(() => {
65
- P(m.invalidMessage || w.current?.validationMessage || "TODO: Add an invalidMessage");
66
- }, [w.current, m.invalidMessage]), h(() => {
67
- if (w.current) {
68
- let e = m.defaultChecked, t = z;
69
- t || (t = new AbortController(), B(t)), f(w.current, {
70
- checked: m.checked,
71
- defaultChecked: e
72
- }, (e) => {
73
- U(e, !0);
74
- }, t.signal);
75
- }
76
- }, [w.current]), h(() => () => {
77
- z?.abort();
78
- }, []), /* @__PURE__ */ x("div", {
79
- "data-visual-aid": a(m.visualAid, "visualAid"),
80
- "data-size": m.size,
81
- "data-hide-label": o(m.showLabel),
82
- "data-variant": m.variant,
83
- "data-hide-asterisk": o(m.showRequiredAsterisk),
84
- "data-custom-validity": m.validation,
85
- ...t(m, [
86
- "data-icon-variant",
87
- "data-icon-variant-before",
88
- "data-icon-variant-after",
89
- "data-icon-weight",
90
- "data-icon-weight-before",
91
- "data-icon-weight-after",
92
- "data-interactive",
93
- "data-force-mobile",
94
- "data-color",
95
- "data-container-color",
96
- "data-bg-color",
97
- "data-on-bg-color",
98
- "data-color-scheme",
99
- "data-font-size",
100
- "data-headline-size",
101
- "data-divider",
102
- "data-focus",
103
- "data-font",
104
- "data-density"
105
- ]),
106
- className: n("db-switch", m.className),
107
- children: [
108
- /* @__PURE__ */ x("label", {
109
- htmlFor: T,
110
- children: [
111
- /* @__PURE__ */ b("input", {
112
- type: "checkbox",
113
- role: "switch",
114
- id: T,
115
- ref: w,
116
- ...e(m, [
117
- "data-icon-variant",
118
- "data-icon-variant-before",
119
- "data-icon-variant-after",
120
- "data-icon-weight",
121
- "data-icon-weight-before",
122
- "data-icon-weight-after",
123
- "data-interactive",
124
- "data-force-mobile",
125
- "data-color",
126
- "data-container-color",
127
- "data-bg-color",
128
- "data-on-bg-color",
129
- "data-color-scheme",
130
- "data-font-size",
131
- "data-headline-size",
132
- "data-divider",
133
- "data-focus",
134
- "data-font",
135
- "data-density"
136
- ]),
137
- checked: i(m.checked, "checked"),
138
- value: m.value,
139
- disabled: i(m.disabled, "disabled"),
140
- "aria-invalid": m.validation === "invalid" ? "true" : void 0,
141
- "aria-describedby": F,
142
- name: m.name,
143
- required: i(m.required, "required"),
144
- "data-aid-icon": m.iconLeading ?? m.icon,
145
- "data-aid-icon-trailing": m.iconTrailing,
146
- onChange: (e) => U(e),
147
- onBlur: (e) => W(e),
148
- onFocus: (e) => G(e),
149
- onKeyDown: (e) => K(e)
150
- }),
151
- m.label ? /* @__PURE__ */ b(y, { children: m.label }) : null,
152
- m.children
153
- ]
154
- }),
155
- c(m.message, m.showMessage) ? /* @__PURE__ */ b(p, {
156
- size: "small",
157
- semantic: "adaptive",
158
- id: D,
159
- icon: m.messageIcon,
160
- children: m.message
161
- }) : null,
162
- V() ? /* @__PURE__ */ b(p, {
163
- size: "small",
164
- semantic: "successful",
165
- id: k,
166
- children: m.validMessage ?? "TODO: Add a validMessage"
167
- }) : null,
168
- /* @__PURE__ */ b(p, {
169
- size: "small",
170
- semantic: "critical",
171
- id: j,
172
- children: N
173
- }),
174
- /* @__PURE__ */ b("span", {
175
- "data-visually-hidden": "true",
176
- role: "status",
177
- children: L
178
- })
179
- ]
180
- });
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { filterPassingProps, getRootProps } from "../../utils/react.js";
4
+ import { useState, useRef, useEffect, forwardRef } from "react";
5
+ import { DEFAULT_INVALID_MESSAGE, DEFAULT_INVALID_MESSAGE_ID_SUFFIX, DEFAULT_MESSAGE_ID_SUFFIX, DEFAULT_VALID_MESSAGE, DEFAULT_VALID_MESSAGE_ID_SUFFIX, } from "../../shared/constants.js";
6
+ import { cls, delay, getBoolean, getBooleanAsString, getHideProp, hasVoiceOver, stringPropVisible, } from "../../utils/index.js";
7
+ import { addCheckedResetEventListener, } from "../../utils/form-components.js";
8
+ import DBInfotext from "../infotext/infotext.js";
9
+ import { useId } from "react";
10
+ function DBSwitchFn(props, component) {
11
+ const uuid = useId();
12
+ const _ref = component || useRef(component);
13
+ const [_id, set_id] = useState(() => undefined);
14
+ const [_messageId, set_messageId] = useState(() => undefined);
15
+ const [_validMessageId, set_validMessageId] = useState(() => undefined);
16
+ const [_invalidMessageId, set_invalidMessageId] = useState(() => undefined);
17
+ const [_invalidMessage, set_invalidMessage] = useState(() => undefined);
18
+ const [_descByIds, set_descByIds] = useState(() => undefined);
19
+ const [_voiceOverFallback, set_voiceOverFallback] = useState(() => "");
20
+ const [abortController, setAbortController] = useState(() => undefined);
21
+ function hasValidState() {
22
+ return !!(props.validMessage ?? props.validation === "valid");
23
+ }
24
+ function handleValidation() {
25
+ if (!_ref.current?.validity?.valid || props.validation === "invalid") {
26
+ set_descByIds(_invalidMessageId);
27
+ set_invalidMessage(props.invalidMessage ||
28
+ _ref.current?.validationMessage ||
29
+ DEFAULT_INVALID_MESSAGE);
30
+ if (hasVoiceOver()) {
31
+ set_voiceOverFallback(_invalidMessage || DEFAULT_INVALID_MESSAGE);
32
+ void delay(() => {
33
+ set_voiceOverFallback("");
34
+ }, 1000);
35
+ }
36
+ return;
37
+ }
38
+ if (hasValidState() && _ref.current?.validity?.valid && props.required) {
39
+ set_descByIds(_validMessageId);
40
+ if (hasVoiceOver()) {
41
+ set_voiceOverFallback(props.validMessage ?? DEFAULT_VALID_MESSAGE);
42
+ void delay(() => {
43
+ set_voiceOverFallback("");
44
+ }, 1000);
45
+ }
46
+ return;
47
+ }
48
+ if (stringPropVisible(props.message, props.showMessage)) {
49
+ set_descByIds(_messageId);
50
+ return;
51
+ }
52
+ set_descByIds(undefined);
53
+ }
54
+ function handleChange(event, reset) {
55
+ if (props.onChange) {
56
+ props.onChange(event);
57
+ }
58
+ handleValidation();
59
+ }
60
+ function handleBlur(event) {
61
+ if (props.onBlur) {
62
+ props.onBlur(event);
63
+ }
64
+ }
65
+ function handleFocus(event) {
66
+ if (props.onFocus) {
67
+ props.onFocus(event);
68
+ }
69
+ }
70
+ function handleKeyDown(event) {
71
+ // Support ENTER key for toggling the switch (a11y requirement)
72
+ if (event.key === "Enter") {
73
+ event.preventDefault();
74
+ // Toggle the switch by clicking it programmatically
75
+ if (!props.disabled) {
76
+ _ref.current?.click();
77
+ }
78
+ }
79
+ }
80
+ function resetIds() {
81
+ const mId = props.id ?? props.propOverrides?.id ?? `switch-${uuid}`;
82
+ set_id(mId);
83
+ set_messageId(`${mId}${DEFAULT_MESSAGE_ID_SUFFIX}`);
84
+ set_validMessageId(`${mId}${DEFAULT_VALID_MESSAGE_ID_SUFFIX}`);
85
+ set_invalidMessageId(`${mId}${DEFAULT_INVALID_MESSAGE_ID_SUFFIX}`);
86
+ }
87
+ useEffect(() => {
88
+ resetIds();
89
+ handleValidation();
90
+ set_invalidMessage(props.invalidMessage || DEFAULT_INVALID_MESSAGE);
91
+ }, []);
92
+ useEffect(() => {
93
+ if (props.id ?? props.propOverrides?.id) {
94
+ resetIds();
95
+ }
96
+ }, [props.id, props.propOverrides?.id]);
97
+ useEffect(() => {
98
+ handleValidation();
99
+ }, [
100
+ props.validation,
101
+ props.required,
102
+ props.message,
103
+ props.showMessage,
104
+ props.validMessage,
105
+ props.invalidMessage,
106
+ props.checked,
107
+ ]);
108
+ useEffect(() => {
109
+ set_invalidMessage(props.invalidMessage ||
110
+ _ref.current?.validationMessage ||
111
+ DEFAULT_INVALID_MESSAGE);
112
+ }, [_ref.current, props.invalidMessage]);
113
+ useEffect(() => {
114
+ if (_ref.current) {
115
+ const defaultChecked = props.defaultChecked;
116
+ let controller = abortController;
117
+ if (!controller) {
118
+ controller = new AbortController();
119
+ setAbortController(controller);
120
+ }
121
+ addCheckedResetEventListener(_ref.current, {
122
+ checked: props.checked,
123
+ defaultChecked,
124
+ }, (event) => {
125
+ handleChange(event, true);
126
+ }, controller.signal);
127
+ }
128
+ }, [_ref.current]);
129
+ useEffect(() => {
130
+ return () => {
131
+ abortController?.abort();
132
+ };
133
+ }, []);
134
+ return (_jsxs("div", { "data-visual-aid": getBooleanAsString(props.visualAid, "visualAid"), "data-size": props.size, "data-hide-label": getHideProp(props.showLabel), "data-variant": props.variant, "data-hide-asterisk": getHideProp(props.showRequiredAsterisk), "data-custom-validity": props.validation, ...getRootProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font", "data-density"]), className: cls("db-switch", props.className), children: [_jsxs("label", { htmlFor: _id, children: [_jsx("input", { type: "checkbox", role: "switch", id: _id, ref: _ref, ...filterPassingProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font", "data-density"]), checked: getBoolean(props.checked, "checked"), value: props.value, disabled: getBoolean(props.disabled, "disabled"), "aria-invalid": props.validation === "invalid" ? "true" : undefined, "aria-describedby": _descByIds, name: props.name, required: getBoolean(props.required, "required"), "data-aid-icon": props.iconLeading ?? props.icon, "data-aid-icon-trailing": props.iconTrailing, onChange: (event) => handleChange(event), onBlur: (event) => handleBlur(event), onFocus: (event) => handleFocus(event), onKeyDown: (event) => handleKeyDown(event) }), props.label ? _jsx(_Fragment, { children: props.label }) : null, props.children] }), stringPropVisible(props.message, props.showMessage) ? (_jsx(DBInfotext, { size: "small", semantic: "adaptive", id: _messageId, icon: props.messageIcon, children: props.message })) : null, hasValidState() ? (_jsx(DBInfotext, { size: "small", semantic: "successful", id: _validMessageId, children: props.validMessage ?? DEFAULT_VALID_MESSAGE })) : null, _jsx(DBInfotext, { size: "small", semantic: "critical", id: _invalidMessageId, children: _invalidMessage }), _jsx("span", { "data-visually-hidden": "true", role: "status", children: _voiceOverFallback })] }));
181
135
  }
182
- var C = m(S);
183
- //#endregion
184
- export { C as default };
136
+ const DBSwitch = forwardRef(DBSwitchFn);
137
+ export default DBSwitch;
@@ -1 +1 @@
1
- export { default as DBTabItem } from './tab-item';
1
+ export { default as DBTabItem } from './tab-item.js';
@@ -0,0 +1 @@
1
+ export { default as DBTabItem } from './tab-item.js';
@@ -1,4 +1,4 @@
1
- import type { ActiveProps, ChangeEventProps, ChangeEventState, GlobalProps, GlobalState, IconLeadingProps, IconProps, IconTrailingProps, InitializedState, NameProps, NameState, ShowIconLeadingProps, ShowIconProps, ShowIconTrailingProps } from '../../shared/model';
1
+ import type { ActiveProps, ChangeEventProps, ChangeEventState, GlobalProps, GlobalState, IconLeadingProps, IconProps, IconTrailingProps, InitializedState, NameProps, NameState, ShowIconLeadingProps, ShowIconProps, ShowIconTrailingProps } from '../../shared/model.js';
2
2
  export type DBTabItemDefaultProps = {
3
3
  /**
4
4
  * To control the component
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBTabItem: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<any>, keyof import("../..").GlobalProps | "name" | "icon" | "showIcon" | "showIconLeading" | "showIconTrailing" | "iconLeading" | "iconTrailing" | keyof import("../..").ChangeEventProps<HTMLInputElement> | "active" | keyof import("./model").DBTabItemDefaultProps> & import("../..").GlobalProps & import("./model").DBTabItemDefaultProps & import("../..").IconProps & import("../..").IconTrailingProps & import("../..").IconLeadingProps & import("../..").ShowIconLeadingProps & import("../..").ShowIconTrailingProps & import("../..").ActiveProps & import("../..").ChangeEventProps<HTMLInputElement> & import("../..").ShowIconProps & import("../..").NameProps & React.RefAttributes<any>>;
2
+ declare const DBTabItem: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<any>, keyof import("../../index.js").GlobalProps | "name" | "icon" | "showIcon" | "showIconLeading" | "showIconTrailing" | "iconLeading" | "iconTrailing" | keyof import("../../index.js").ChangeEventProps<HTMLInputElement> | "active" | keyof import("./model.js").DBTabItemDefaultProps> & import("../../index.js").GlobalProps & import("./model.js").DBTabItemDefaultProps & import("../../index.js").IconProps & import("../../index.js").IconTrailingProps & import("../../index.js").IconLeadingProps & import("../../index.js").ShowIconLeadingProps & import("../../index.js").ShowIconTrailingProps & import("../../index.js").ActiveProps & import("../../index.js").ChangeEventProps<HTMLInputElement> & import("../../index.js").ShowIconProps & import("../../index.js").NameProps & React.RefAttributes<any>>;
3
3
  export default DBTabItem;
@@ -1,107 +1,74 @@
1
1
  "use client";
2
- import { filterPassingProps as e, getRootProps as t } from "../../utils/react.js";
3
- import { cls as n, getBoolean as r, getBooleanAsString as i } from "../../utils/index.js";
4
- import { forwardRef as a, useEffect as o, useRef as s, useState as c } from "react";
5
- import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
6
- //#region src/components/tab-item/tab-item.tsx
7
- function f(a, f) {
8
- let p = f || s(f), [m, h] = c(() => !1), [g, _] = c(() => void 0), [v, y] = c(() => !1), [b, x] = c(() => !1), [S, C] = c(() => void 0);
9
- function w(e) {
10
- e.stopPropagation(), h(e.target === p.current);
11
- }
12
- function T() {
13
- if (p.current) {
14
- let e = p.current.setAttribute;
15
- p.current.setAttribute = (t, n) => {
16
- e.call(p.current, t, n), t === "name" && _(n);
17
- };
18
- }
19
- }
20
- function E(e) {
21
- a.onChange && a.onChange(e);
22
- }
23
- return o(() => {
24
- C(() => w), y(!0);
25
- }, []), o(() => {
26
- p.current && v && S && (T(), y(!1), b || (p.current.closest("[role=tablist]")?.addEventListener("change", S), x(!0)), (a.active || p.current.checked) && (h(!0), p.current.click()));
27
- }, [
28
- p.current,
29
- v,
30
- S
31
- ]), o(() => {
32
- a.name && _(a.name);
33
- }, [a.name]), o(() => () => {
34
- b && p.current && S && (p.current.closest("[role=tablist]")?.removeEventListener("change", S), x(!1));
35
- }, []), /* @__PURE__ */ u("li", {
36
- role: "none",
37
- ...t(a, [
38
- "data-icon-variant",
39
- "data-icon-variant-before",
40
- "data-icon-variant-after",
41
- "data-icon-weight",
42
- "data-icon-weight-before",
43
- "data-icon-weight-after",
44
- "data-interactive",
45
- "data-force-mobile",
46
- "data-color",
47
- "data-container-color",
48
- "data-bg-color",
49
- "data-on-bg-color",
50
- "data-color-scheme",
51
- "data-font-size",
52
- "data-headline-size",
53
- "data-divider",
54
- "data-focus",
55
- "data-font",
56
- "data-density"
57
- ]),
58
- className: n("db-tab-item", a.className),
59
- children: /* @__PURE__ */ d("label", {
60
- htmlFor: a.id ?? a.propOverrides?.id,
61
- "data-icon": a.iconLeading ?? a.icon,
62
- "data-icon-trailing": a.iconTrailing,
63
- "data-show-icon": i(a.showIconLeading, "showIconLeading") || i(a.showIcon, "showIcon"),
64
- "data-show-icon-trailing": i(a.showIconTrailing, "showIconTrailing"),
65
- "data-no-text": i(a.noText, "noText"),
66
- children: [
67
- /* @__PURE__ */ u("input", {
68
- type: "radio",
69
- role: "tab",
70
- disabled: r(a.disabled, "disabled"),
71
- "aria-selected": m,
72
- checked: r(a.checked, "checked"),
73
- ref: p,
74
- ...e(a, [
75
- "data-icon-variant",
76
- "data-icon-variant-before",
77
- "data-icon-variant-after",
78
- "data-icon-weight",
79
- "data-icon-weight-before",
80
- "data-icon-weight-after",
81
- "data-interactive",
82
- "data-force-mobile",
83
- "data-color",
84
- "data-container-color",
85
- "data-bg-color",
86
- "data-on-bg-color",
87
- "data-color-scheme",
88
- "data-font-size",
89
- "data-headline-size",
90
- "data-divider",
91
- "data-focus",
92
- "data-font",
93
- "data-density"
94
- ]),
95
- name: g,
96
- id: a.id ?? a.propOverrides?.id,
97
- onInput: (e) => E(e)
98
- }),
99
- a.label ? /* @__PURE__ */ u(l, { children: a.label }) : null,
100
- a.children
101
- ]
102
- })
103
- });
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { filterPassingProps, getRootProps } from "../../utils/react.js";
4
+ import { useState, useRef, useEffect, forwardRef } from "react";
5
+ import { cls, getBoolean, getBooleanAsString } from "../../utils/index.js";
6
+ function DBTabItemFn(props, component) {
7
+ const _ref = component || useRef(component);
8
+ const [_selected, set_selected] = useState(() => false);
9
+ const [_name, set_name] = useState(() => undefined);
10
+ const [initialized, setInitialized] = useState(() => false);
11
+ const [_listenerAdded, set_listenerAdded] = useState(() => false);
12
+ const [boundSetSelectedOnChange, setBoundSetSelectedOnChange] = useState(() => undefined);
13
+ function setSelectedOnChange(event) {
14
+ event.stopPropagation();
15
+ set_selected(event.target === _ref.current);
16
+ }
17
+ function handleNameAttribute() {
18
+ if (_ref.current) {
19
+ const setAttribute = _ref.current.setAttribute;
20
+ _ref.current.setAttribute = (attribute, value) => {
21
+ setAttribute.call(_ref.current, attribute, value);
22
+ if (attribute === "name") {
23
+ set_name(value);
24
+ }
25
+ };
26
+ }
27
+ }
28
+ function handleChange(event) {
29
+ if (props.onChange) {
30
+ props.onChange(event);
31
+ }
32
+ }
33
+ useEffect(() => {
34
+ setBoundSetSelectedOnChange(() => setSelectedOnChange);
35
+ setInitialized(true);
36
+ }, []);
37
+ useEffect(() => {
38
+ if (_ref.current && initialized && boundSetSelectedOnChange) {
39
+ handleNameAttribute();
40
+ setInitialized(false);
41
+ // deselect this tab when another tab in tablist is selected
42
+ if (!_listenerAdded) {
43
+ _ref.current
44
+ .closest("[role=tablist]")
45
+ ?.addEventListener("change", boundSetSelectedOnChange);
46
+ set_listenerAdded(true);
47
+ }
48
+ // Initialize selected state from either active prop (set by parent) or checked attribute
49
+ if (props.active || _ref.current.checked) {
50
+ set_selected(true);
51
+ _ref.current.click();
52
+ }
53
+ }
54
+ }, [_ref.current, initialized, boundSetSelectedOnChange]);
55
+ useEffect(() => {
56
+ if (props.name) {
57
+ set_name(props.name);
58
+ }
59
+ }, [props.name]);
60
+ useEffect(() => {
61
+ return () => {
62
+ if (_listenerAdded && _ref.current && boundSetSelectedOnChange) {
63
+ _ref.current
64
+ .closest("[role=tablist]")
65
+ ?.removeEventListener("change", boundSetSelectedOnChange);
66
+ set_listenerAdded(false);
67
+ }
68
+ };
69
+ }, []);
70
+ return (_jsx("li", { role: "none", ...getRootProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font", "data-density"]), className: cls("db-tab-item", props.className), children: _jsxs("label", { htmlFor: props.id ?? props.propOverrides?.id, "data-icon": props.iconLeading ?? props.icon, "data-icon-trailing": props.iconTrailing, "data-show-icon": getBooleanAsString(props.showIconLeading, "showIconLeading") ||
71
+ getBooleanAsString(props.showIcon, "showIcon"), "data-show-icon-trailing": getBooleanAsString(props.showIconTrailing, "showIconTrailing"), "data-no-text": getBooleanAsString(props.noText, "noText"), children: [_jsx("input", { type: "radio", role: "tab", disabled: getBoolean(props.disabled, "disabled"), "aria-selected": _selected, checked: getBoolean(props.checked, "checked"), ref: _ref, ...filterPassingProps(props, ["data-icon-variant", "data-icon-variant-before", "data-icon-variant-after", "data-icon-weight", "data-icon-weight-before", "data-icon-weight-after", "data-interactive", "data-force-mobile", "data-color", "data-container-color", "data-bg-color", "data-on-bg-color", "data-color-scheme", "data-font-size", "data-headline-size", "data-divider", "data-focus", "data-font", "data-density"]), name: _name, id: props.id ?? props.propOverrides?.id, onInput: (event) => handleChange(event) }), props.label ? _jsx(_Fragment, { children: props.label }) : null, props.children] }) }));
104
72
  }
105
- var p = a(f);
106
- //#endregion
107
- export { p as default };
73
+ const DBTabItem = forwardRef(DBTabItemFn);
74
+ export default DBTabItem;
@@ -1 +1 @@
1
- export { default as DBTabList } from './tab-list';
1
+ export { default as DBTabList } from './tab-list.js';
@@ -0,0 +1 @@
1
+ export { default as DBTabList } from './tab-list.js';
@@ -1,4 +1,4 @@
1
- import type { GlobalProps } from '../../shared/model';
1
+ import type { GlobalProps } from '../../shared/model.js';
2
2
  export type DBTabListDefaultProps = {};
3
3
  export type DBTabListProps = DBTabListDefaultProps & GlobalProps;
4
4
  export type DBTabListDefaultState = {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBTabList: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, keyof import("../..").GlobalProps> & import("../..").GlobalProps & React.RefAttributes<any>>;
2
+ declare const DBTabList: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, keyof import("../../index.js").GlobalProps> & import("../../index.js").GlobalProps & React.RefAttributes<any>>;
3
3
  export default DBTabList;