@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,193 +1,172 @@
1
1
  "use client";
2
- import { filterPassingProps as e, getRootProps as t } from "../../utils/react.js";
3
- import { cls as n } from "../../utils/index.js";
4
- import r from "../button/button.js";
5
- import i from "../tab-item/tab-item.js";
6
- import a from "../tab-list/tab-list.js";
7
- import o from "../tab-panel/tab-panel.js";
8
- import { forwardRef as s, useEffect as c, useId as l, useRef as u, useState as d } from "react";
9
- import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
10
- //#region src/components/tabs/tabs.tsx
11
- function h(s, h) {
12
- let g = l(), _ = h || u(h), [v, y] = d(() => ""), [b, x] = d(() => !1), [S, C] = d(() => !1), [w, T] = d(() => !1), [E, D] = d(() => null), [O, k] = d(() => void 0);
13
- function A() {
14
- try {
15
- return typeof s.tabs == "string" ? JSON.parse(s.tabs) : s.tabs;
16
- } catch (e) {
17
- console.error(e);
18
- }
19
- return [];
20
- }
21
- function j(e) {
22
- let t = e.scrollWidth > e.clientWidth;
23
- C(t && e.scrollLeft > 1), T(t && e.scrollLeft < e.scrollWidth - e.clientWidth);
24
- }
25
- function M(e) {
26
- let t = Number(s.arrowScrollDistance) || 100;
27
- e && (t *= -1), E?.scrollBy({
28
- top: 0,
29
- left: t,
30
- behavior: "smooth"
31
- });
32
- }
33
- function N() {
34
- if (_.current) {
35
- let e = _.current.querySelector(".db-tab-list");
36
- if (e) {
37
- let t = e.querySelector("[role=\"tablist\"]");
38
- if (t && (t.setAttribute("aria-orientation", s.orientation || "horizontal"), s.behavior === "arrows" && (D(t), j(t), t.addEventListener("scroll", () => {
39
- j(t);
40
- }), !O))) {
41
- let e = new ResizeObserver(() => {
42
- j(t);
43
- });
44
- e.observe(t), k(e);
45
- }
46
- }
47
- }
48
- }
49
- function P(e) {
50
- if (_.current) {
51
- let t = Array.from(_.current.getElementsByClassName("db-tab-item")), n = Array.from(_.current.querySelectorAll(":is(:scope > .db-tab-panel, :scope > db-tab-panel > .db-tab-panel)"));
52
- for (let r of t) {
53
- let i = t.indexOf(r), a = r.querySelector("label"), o = r.querySelector("input");
54
- if (o && a) {
55
- if (!o.id) {
56
- let e = `${v}-tab-${i}`;
57
- a.setAttribute("for", e), o.id = e, o.setAttribute("name", v), n.length > i && o.setAttribute("aria-controls", `${v}-tab-panel-${i}`);
58
- }
59
- if (e) {
60
- let e = !s.initialSelectedMode || s.initialSelectedMode === "auto", t = s.initialSelectedIndex == null && i === 0 || Number(s.initialSelectedIndex) === i;
61
- e && t && o.click();
62
- }
63
- }
64
- }
65
- for (let e of n) {
66
- if (e.id) continue;
67
- let t = n.indexOf(e);
68
- e.id = `${v}-tab-panel-${t}`, e.setAttribute("aria-labelledby", `${v}-tab-${t}`);
69
- }
70
- }
71
- }
72
- function F(e) {
73
- if (e.stopPropagation(), e.target) {
74
- let t = e.target.parentElement;
75
- if (t && t.parentElement && t.parentElement?.nodeName === "LI") {
76
- let n = t.parentElement;
77
- if (n) {
78
- let t = n.parentElement;
79
- if (t) {
80
- let r = Array.from(t.children).indexOf(n);
81
- s.onIndexChange && s.onIndexChange(r), s.onTabSelect && s.onTabSelect(e);
82
- }
83
- }
84
- }
85
- }
86
- }
87
- return c(() => {
88
- y(`tabs-${s.name || g}`), x(!0);
89
- }, []), c(() => {
90
- if (_.current && b) {
91
- N(), P(!0);
92
- let e = _.current.querySelector(".db-tab-list");
93
- e && new MutationObserver((e) => {
94
- e.forEach((e) => {
95
- (e.removedNodes.length || e.addedNodes.length) && (N(), P());
96
- });
97
- }).observe(e, {
98
- childList: !0,
99
- subtree: !0
100
- }), x(!1);
101
- }
102
- }, [_.current, b]), c(() => () => {
103
- O?.disconnect(), k(void 0);
104
- }, []), /* @__PURE__ */ m("div", {
105
- ref: _,
106
- ...e(s, [
107
- "data-icon-variant",
108
- "data-icon-variant-before",
109
- "data-icon-variant-after",
110
- "data-icon-weight",
111
- "data-icon-weight-before",
112
- "data-icon-weight-after",
113
- "data-interactive",
114
- "data-force-mobile",
115
- "data-color",
116
- "data-container-color",
117
- "data-bg-color",
118
- "data-on-bg-color",
119
- "data-color-scheme",
120
- "data-font-size",
121
- "data-headline-size",
122
- "data-divider",
123
- "data-focus",
124
- "data-font",
125
- "data-density",
126
- "onTabSelect",
127
- "onIndexChange"
128
- ]),
129
- id: s.id ?? s.propOverrides?.id,
130
- ...t(s, [
131
- "data-icon-variant",
132
- "data-icon-variant-before",
133
- "data-icon-variant-after",
134
- "data-icon-weight",
135
- "data-icon-weight-before",
136
- "data-icon-weight-after",
137
- "data-interactive",
138
- "data-force-mobile",
139
- "data-color",
140
- "data-container-color",
141
- "data-bg-color",
142
- "data-on-bg-color",
143
- "data-color-scheme",
144
- "data-font-size",
145
- "data-headline-size",
146
- "data-divider",
147
- "data-focus",
148
- "data-font",
149
- "data-density"
150
- ]),
151
- className: n("db-tabs", s.className),
152
- "data-orientation": s.orientation,
153
- "data-scroll-behavior": s.behavior,
154
- "data-alignment": s.alignment ?? "start",
155
- "data-width": s.width ?? "auto",
156
- onInput: (e) => F(e),
157
- onChange: (e) => F(e),
158
- children: [
159
- S ? /* @__PURE__ */ p(r, {
160
- className: "tabs-scroll-left",
161
- variant: "ghost",
162
- icon: "chevron_left",
163
- type: "button",
164
- noText: !0,
165
- onClick: (e) => M(!0),
166
- children: "Scroll left"
167
- }) : null,
168
- s.tabs ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p(a, { children: A()?.map((e, t) => /* @__PURE__ */ p(i, {
169
- active: e.active,
170
- label: e.label,
171
- iconTrailing: e.iconTrailing,
172
- icon: e.icon,
173
- noText: e.noText
174
- }, s.name + "tab-item" + t)) }), A()?.map((e, t) => /* @__PURE__ */ p(o, {
175
- content: e.content,
176
- children: e.children
177
- }, s.name + "tab-panel" + t))] }) : null,
178
- w ? /* @__PURE__ */ p(r, {
179
- className: "tabs-scroll-right",
180
- variant: "ghost",
181
- icon: "chevron_right",
182
- type: "button",
183
- noText: !0,
184
- onClick: (e) => M(),
185
- children: "Scroll right"
186
- }) : null,
187
- s.children
188
- ]
189
- });
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 } from "../../utils/index.js";
6
+ import DBButton from "../button/button.js";
7
+ import DBTabItem from "../tab-item/tab-item.js";
8
+ import DBTabList from "../tab-list/tab-list.js";
9
+ import DBTabPanel from "../tab-panel/tab-panel.js";
10
+ import { useId } from "react";
11
+ function DBTabsFn(props, component) {
12
+ const uuid = useId();
13
+ const _ref = component || useRef(component);
14
+ const [_name, set_name] = useState(() => "");
15
+ const [initialized, setInitialized] = useState(() => false);
16
+ const [showScrollLeft, setShowScrollLeft] = useState(() => false);
17
+ const [showScrollRight, setShowScrollRight] = useState(() => false);
18
+ const [scrollContainer, setScrollContainer] = useState(() => null);
19
+ const [_resizeObserver, set_resizeObserver] = useState(() => undefined);
20
+ function convertTabs() {
21
+ try {
22
+ if (typeof props.tabs === "string") {
23
+ return JSON.parse(props.tabs);
24
+ }
25
+ return props.tabs;
26
+ }
27
+ catch (error) {
28
+ console.error(error);
29
+ }
30
+ return [];
31
+ }
32
+ function evaluateScrollButtons(tList) {
33
+ const needsScroll = tList.scrollWidth > tList.clientWidth;
34
+ setShowScrollLeft(needsScroll && tList.scrollLeft > 1);
35
+ setShowScrollRight(needsScroll && tList.scrollLeft < tList.scrollWidth - tList.clientWidth);
36
+ }
37
+ function scroll(left) {
38
+ let step = Number(props.arrowScrollDistance) || 100;
39
+ if (left) {
40
+ step *= -1;
41
+ }
42
+ scrollContainer?.scrollBy({
43
+ top: 0,
44
+ left: step,
45
+ behavior: "smooth",
46
+ });
47
+ }
48
+ function initTabList() {
49
+ if (_ref.current) {
50
+ const tabList = _ref.current.querySelector(".db-tab-list");
51
+ if (tabList) {
52
+ const container = tabList.querySelector('[role="tablist"]');
53
+ if (container) {
54
+ container.setAttribute("aria-orientation", props.orientation || "horizontal");
55
+ if (props.behavior === "arrows") {
56
+ setScrollContainer(container);
57
+ evaluateScrollButtons(container);
58
+ container.addEventListener("scroll", () => {
59
+ evaluateScrollButtons(container);
60
+ });
61
+ // Use ResizeObserver to re-evaluate scroll buttons because it provides more accurate, container-specific resize detection than global window resize events.
62
+ if (!_resizeObserver) {
63
+ const observer = new ResizeObserver(() => {
64
+ evaluateScrollButtons(container);
65
+ });
66
+ observer.observe(container);
67
+ set_resizeObserver(observer);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
74
+ function initTabs(init) {
75
+ if (_ref.current) {
76
+ const tabItems = Array.from(_ref.current.getElementsByClassName("db-tab-item"));
77
+ const tabPanels = Array.from(_ref.current.querySelectorAll(":is(:scope > .db-tab-panel, :scope > db-tab-panel > .db-tab-panel)"));
78
+ for (const tabItem of tabItems) {
79
+ const index = tabItems.indexOf(tabItem);
80
+ const label = tabItem.querySelector("label");
81
+ const input = tabItem.querySelector("input");
82
+ if (input && label) {
83
+ if (!input.id) {
84
+ const tabId = `${_name}-tab-${index}`;
85
+ label.setAttribute("for", tabId);
86
+ input.id = tabId;
87
+ input.setAttribute("name", _name);
88
+ if (tabPanels.length > index) {
89
+ input.setAttribute("aria-controls", `${_name}-tab-panel-${index}`);
90
+ }
91
+ }
92
+ if (init) {
93
+ // Auto select
94
+ const autoSelect = !props.initialSelectedMode ||
95
+ props.initialSelectedMode === "auto";
96
+ const shouldAutoSelect = (props.initialSelectedIndex == null && index === 0) ||
97
+ Number(props.initialSelectedIndex) === index;
98
+ if (autoSelect && shouldAutoSelect) {
99
+ input.click();
100
+ }
101
+ }
102
+ }
103
+ }
104
+ for (const panel of tabPanels) {
105
+ if (panel.id)
106
+ continue;
107
+ const index = tabPanels.indexOf(panel);
108
+ panel.id = `${_name}-tab-panel-${index}`;
109
+ panel.setAttribute("aria-labelledby", `${_name}-tab-${index}`);
110
+ }
111
+ }
112
+ }
113
+ function handleChange(event) {
114
+ event.stopPropagation();
115
+ if (event.target) {
116
+ const target = event.target;
117
+ const parent = target.parentElement;
118
+ if (parent &&
119
+ parent.parentElement &&
120
+ parent.parentElement?.nodeName === "LI") {
121
+ const tabItem = parent.parentElement;
122
+ if (tabItem) {
123
+ const list = tabItem.parentElement;
124
+ if (list) {
125
+ const tabIndex = Array.from(list.children).indexOf(tabItem);
126
+ if (props.onIndexChange) {
127
+ props.onIndexChange(tabIndex);
128
+ }
129
+ if (props.onTabSelect) {
130
+ props.onTabSelect(event);
131
+ }
132
+ }
133
+ }
134
+ }
135
+ }
136
+ }
137
+ useEffect(() => {
138
+ set_name(`tabs-${props.name || uuid}`);
139
+ setInitialized(true);
140
+ }, []);
141
+ useEffect(() => {
142
+ if (_ref.current && initialized) {
143
+ initTabList();
144
+ initTabs(true);
145
+ const tabList = _ref.current.querySelector(".db-tab-list");
146
+ if (tabList) {
147
+ const observer = new MutationObserver((mutations) => {
148
+ mutations.forEach((mutation) => {
149
+ if (mutation.removedNodes.length || mutation.addedNodes.length) {
150
+ initTabList();
151
+ initTabs();
152
+ }
153
+ });
154
+ });
155
+ observer.observe(tabList, {
156
+ childList: true,
157
+ subtree: true,
158
+ });
159
+ }
160
+ setInitialized(false);
161
+ }
162
+ }, [_ref.current, initialized]);
163
+ useEffect(() => {
164
+ return () => {
165
+ _resizeObserver?.disconnect();
166
+ set_resizeObserver(undefined);
167
+ };
168
+ }, []);
169
+ return (_jsxs("div", { 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", "onTabSelect", "onIndexChange"]), id: props.id ?? props.propOverrides?.id, ...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-tabs", props.className), "data-orientation": props.orientation, "data-scroll-behavior": props.behavior, "data-alignment": props.alignment ?? "start", "data-width": props.width ?? "auto", onInput: (event) => handleChange(event), onChange: (event) => handleChange(event), children: [showScrollLeft ? (_jsx(DBButton, { className: "tabs-scroll-left", variant: "ghost", icon: "chevron_left", type: "button", noText: true, onClick: (event) => scroll(true), children: "Scroll left" })) : null, props.tabs ? (_jsxs(_Fragment, { children: [_jsx(DBTabList, { children: convertTabs()?.map((tab, index) => (_jsx(DBTabItem, { active: tab.active, label: tab.label, iconTrailing: tab.iconTrailing, icon: tab.icon, noText: tab.noText }, props.name + "tab-item" + index))) }), convertTabs()?.map((tab, index) => (_jsx(DBTabPanel, { content: tab.content, children: tab.children }, props.name + "tab-panel" + index)))] })) : null, showScrollRight ? (_jsx(DBButton, { className: "tabs-scroll-right", variant: "ghost", icon: "chevron_right", type: "button", noText: true, onClick: (event) => scroll(), children: "Scroll right" })) : null, props.children] }));
190
170
  }
191
- var g = s(h);
192
- //#endregion
193
- export { g as default };
171
+ const DBTabs = forwardRef(DBTabsFn);
172
+ export default DBTabs;
@@ -1 +1 @@
1
- export { default as DBTag } from './tag';
1
+ export { default as DBTag } from './tag.js';
@@ -0,0 +1 @@
1
+ export { default as DBTag } from './tag.js';
@@ -1,4 +1,4 @@
1
- import type { ClickEvent, ContentSlotProps, EmphasisProps, GlobalProps, GlobalState, IconProps, NoTextProps, OverflowProps, SemanticProps, ShowIconProps } from '../../shared/model';
1
+ import type { ClickEvent, ContentSlotProps, EmphasisProps, GlobalProps, GlobalState, IconProps, NoTextProps, OverflowProps, SemanticProps, ShowIconProps } from '../../shared/model.js';
2
2
  export declare const TagBehaviorList: readonly ["static", "removable"];
3
3
  export type TagBehaviorType = (typeof TagBehaviorList)[number];
4
4
  export type DBTagEventsProps = {
@@ -1,4 +1 @@
1
- //#region src/components/tag/model.ts
2
- var e = ["static", "removable"];
3
- //#endregion
4
- export { e as TagBehaviorList };
1
+ export const TagBehaviorList = ['static', 'removable'];
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBTag: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, "content" | keyof import("../../shared/model").GlobalProps | "semantic" | "emphasis" | "icon" | "showIcon" | "noText" | keyof import("./model").DBTagDefaultProps | "overflow" | keyof import("./model").DBTagEventsProps> & import("./model").DBTagDefaultProps & import("../../shared/model").GlobalProps & import("../../shared/model").IconProps & import("../../shared/model").SemanticProps & import("../../shared/model").OverflowProps & import("../../shared/model").EmphasisProps & import("../../shared/model").ShowIconProps & import("../../shared/model").ContentSlotProps & import("./model").DBTagEventsProps & import("../../shared/model").NoTextProps & React.RefAttributes<any>>;
2
+ declare const DBTag: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, "content" | keyof import("../../shared/model.js").GlobalProps | "semantic" | "emphasis" | "icon" | "showIcon" | "noText" | keyof import("./model.js").DBTagDefaultProps | "overflow" | keyof import("./model.js").DBTagEventsProps> & import("./model.js").DBTagDefaultProps & import("../../shared/model.js").GlobalProps & import("../../shared/model.js").IconProps & import("../../shared/model.js").SemanticProps & import("../../shared/model.js").OverflowProps & import("../../shared/model.js").EmphasisProps & import("../../shared/model.js").ShowIconProps & import("../../shared/model.js").ContentSlotProps & import("./model.js").DBTagEventsProps & import("../../shared/model.js").NoTextProps & React.RefAttributes<any>>;
3
3
  export default DBTag;
@@ -1,93 +1,28 @@
1
1
  "use client";
2
- import { filterPassingProps as e, getRootProps as t } from "../../utils/react.js";
3
- import { cls as n, getBooleanAsString as r } from "../../utils/index.js";
4
- import { DEFAULT_REMOVE as i } from "../../shared/constants.js";
5
- import a from "../tooltip/tooltip.js";
6
- import { forwardRef as o, useRef as s } from "react";
7
- import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
8
- //#region src/components/tag/tag.tsx
9
- function d(o, d) {
10
- let f = d || s(d);
11
- function p(e) {
12
- e && (e.stopPropagation(), o.onRemove && o.onRemove(e));
13
- }
14
- function m() {
15
- return o.removeButton ? o.removeButton : i;
16
- }
17
- return /* @__PURE__ */ u("div", {
18
- ref: f,
19
- ...e(o, [
20
- "data-icon-variant",
21
- "data-icon-variant-before",
22
- "data-icon-variant-after",
23
- "data-icon-weight",
24
- "data-icon-weight-before",
25
- "data-icon-weight-after",
26
- "data-interactive",
27
- "data-force-mobile",
28
- "data-color",
29
- "data-container-color",
30
- "data-bg-color",
31
- "data-on-bg-color",
32
- "data-color-scheme",
33
- "data-font-size",
34
- "data-headline-size",
35
- "data-divider",
36
- "data-focus",
37
- "data-font",
38
- "data-density",
39
- "onRemove"
40
- ]),
41
- id: o.id ?? o.propOverrides?.id,
42
- ...t(o, [
43
- "data-icon-variant",
44
- "data-icon-variant-before",
45
- "data-icon-variant-after",
46
- "data-icon-weight",
47
- "data-icon-weight-before",
48
- "data-icon-weight-after",
49
- "data-interactive",
50
- "data-force-mobile",
51
- "data-color",
52
- "data-container-color",
53
- "data-bg-color",
54
- "data-on-bg-color",
55
- "data-color-scheme",
56
- "data-font-size",
57
- "data-headline-size",
58
- "data-divider",
59
- "data-focus",
60
- "data-font",
61
- "data-density"
62
- ]),
63
- className: n("db-tag", o.className),
64
- "data-semantic": o.semantic,
65
- "data-emphasis": o.emphasis,
66
- "data-icon": o.icon,
67
- "data-show-check-state": r(o.showCheckState ?? !0, "showCheckState"),
68
- "data-show-icon": r(o.showIcon, "showIcon"),
69
- "data-no-text": r(o.noText, "noText"),
70
- "data-overflow": r(o.overflow, "overflow"),
71
- children: [
72
- /* @__PURE__ */ l(c, { children: o.content }),
73
- o.text ? /* @__PURE__ */ l(c, { children: o.text }) : null,
74
- o.children,
75
- o.behavior === "removable" ? /* @__PURE__ */ l("button", {
76
- className: "db-button db-tab-remove-button",
77
- "data-icon": "cross",
78
- "data-size": "small",
79
- "data-no-text": "true",
80
- "data-variant": "ghost",
81
- type: "button",
82
- onClick: (e) => p(e),
83
- children: /* @__PURE__ */ l(a, {
84
- variant: "label",
85
- children: m()
86
- })
87
- }) : null
88
- ]
89
- });
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { filterPassingProps, getRootProps } from "../../utils/react.js";
4
+ import { useRef, forwardRef } from "react";
5
+ import { DEFAULT_REMOVE } from "../../shared/constants.js";
6
+ import { cls, getBooleanAsString } from "../../utils/index.js";
7
+ import DBTooltip from "../tooltip/tooltip.js";
8
+ function DBTagFn(props, component) {
9
+ const _ref = component || useRef(component);
10
+ function handleRemove(event) {
11
+ if (!event)
12
+ return;
13
+ event.stopPropagation();
14
+ if (props.onRemove) {
15
+ props.onRemove(event);
16
+ }
17
+ }
18
+ function getRemoveButtonText() {
19
+ if (props.removeButton) {
20
+ return props.removeButton;
21
+ }
22
+ // TODO: We should think this through again, if we would really like to have default and especially english, instead of german labels in here
23
+ return DEFAULT_REMOVE;
24
+ }
25
+ return (_jsxs("div", { 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", "onRemove"]), id: props.id ?? props.propOverrides?.id, ...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-tag", props.className), "data-semantic": props.semantic, "data-emphasis": props.emphasis, "data-icon": props.icon, "data-show-check-state": getBooleanAsString(props.showCheckState ?? true, "showCheckState"), "data-show-icon": getBooleanAsString(props.showIcon, "showIcon"), "data-no-text": getBooleanAsString(props.noText, "noText"), "data-overflow": getBooleanAsString(props.overflow, "overflow"), children: [_jsx(_Fragment, { children: props.content }), props.text ? _jsx(_Fragment, { children: props.text }) : null, props.children, props.behavior === "removable" ? (_jsx("button", { className: "db-button db-tab-remove-button", "data-icon": "cross", "data-size": "small", "data-no-text": "true", "data-variant": "ghost", type: "button", onClick: (event) => handleRemove(event), children: _jsx(DBTooltip, { variant: "label", children: getRemoveButtonText() }) })) : null] }));
90
26
  }
91
- var f = o(d);
92
- //#endregion
93
- export { f as default };
27
+ const DBTag = forwardRef(DBTagFn);
28
+ export default DBTag;
@@ -1 +1 @@
1
- export { default as DBTextarea } from './textarea';
1
+ export { default as DBTextarea } from './textarea.js';
@@ -0,0 +1 @@
1
+ export { default as DBTextarea } from './textarea.js';
@@ -1,4 +1,4 @@
1
- import type { ChangeEventProps, ChangeEventState, FocusEventProps, FocusEventState, FormMessageProps, FormProps, FormState, FormTextProps, FromValidState, GlobalProps, GlobalState, InputEventProps, InputEventState } from '../../shared/model';
1
+ import type { ChangeEventProps, ChangeEventState, FocusEventProps, FocusEventState, FormMessageProps, FormProps, FormState, FormTextProps, FromValidState, GlobalProps, GlobalState, InputEventProps, InputEventState } from '../../shared/model.js';
2
2
  export declare const TextareaResizeList: readonly ["none", "both", "horizontal", "vertical"];
3
3
  export type TextareaResizeType = (typeof TextareaResizeList)[number];
4
4
  export declare const TextareaWrapList: readonly ["hard", "soft", "off"];
@@ -1,13 +1,2 @@
1
- //#region src/components/textarea/model.ts
2
- var e = [
3
- "none",
4
- "both",
5
- "horizontal",
6
- "vertical"
7
- ], t = [
8
- "hard",
9
- "soft",
10
- "off"
11
- ];
12
- //#endregion
13
- export { e as TextareaResizeList, t as TextareaWrapList };
1
+ export const TextareaResizeList = ['none', 'both', 'horizontal', 'vertical'];
2
+ export const TextareaWrapList = ['hard', 'soft', 'off'];
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBTextarea: React.ForwardRefExoticComponent<Omit<React.TextareaHTMLAttributes<any>, keyof import("../../shared/model").GlobalProps | "value" | keyof import("../../shared/model").CustomFormProps | keyof import("../../shared/model").BaseFormProps | keyof import("../../shared/model").RequiredProps | "showLabel" | keyof import("../../shared/model").FormMessageProps | keyof import("../../shared/model").FormTextProps | keyof import("./model").DBTextareaDefaultProps | keyof import("../../shared/model").ChangeEventProps<HTMLTextAreaElement> | keyof import("../../shared/model").InputEventProps<HTMLTextAreaElement> | keyof import("../../shared/model").FocusEventProps<HTMLTextAreaElement>> & import("./model").DBTextareaDefaultProps & import("../../shared/model").ChangeEventProps<HTMLTextAreaElement> & import("../../shared/model").InputEventProps<HTMLTextAreaElement> & import("../../shared/model").FocusEventProps<HTMLTextAreaElement> & import("../../shared/model").CustomFormProps & import("../../shared/model").BaseFormProps & import("../../shared/model").RequiredProps & import("../../shared/model").ShowLabelProps & import("../../shared/model").ValueProps & import("../../shared/model").GlobalProps & import("../../shared/model").FormTextProps & import("../../shared/model").FormMessageProps & React.RefAttributes<any>>;
2
+ declare const DBTextarea: React.ForwardRefExoticComponent<Omit<React.TextareaHTMLAttributes<any>, keyof import("../../shared/model.js").GlobalProps | "value" | keyof import("../../shared/model.js").CustomFormProps | keyof import("../../shared/model.js").BaseFormProps | keyof import("../../shared/model.js").RequiredProps | "showLabel" | keyof import("../../shared/model.js").FormMessageProps | keyof import("../../shared/model.js").FormTextProps | keyof import("./model.js").DBTextareaDefaultProps | keyof import("../../shared/model.js").ChangeEventProps<HTMLTextAreaElement> | keyof import("../../shared/model.js").InputEventProps<HTMLTextAreaElement> | keyof import("../../shared/model.js").FocusEventProps<HTMLTextAreaElement>> & import("./model.js").DBTextareaDefaultProps & import("../../shared/model.js").ChangeEventProps<HTMLTextAreaElement> & import("../../shared/model.js").InputEventProps<HTMLTextAreaElement> & import("../../shared/model.js").FocusEventProps<HTMLTextAreaElement> & import("../../shared/model.js").CustomFormProps & import("../../shared/model.js").BaseFormProps & import("../../shared/model.js").RequiredProps & import("../../shared/model.js").ShowLabelProps & import("../../shared/model.js").ValueProps & import("../../shared/model.js").GlobalProps & import("../../shared/model.js").FormTextProps & import("../../shared/model.js").FormMessageProps & React.RefAttributes<any>>;
3
3
  export default DBTextarea;