@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,76 +1,44 @@
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 { forwardRef as i, useEffect as a, useRef as o, useState as s } from "react";
5
- import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
6
- //#region src/components/page/page.tsx
7
- function d(i, d) {
8
- let f = d || o(d), [p, m] = s(() => !1), h = o(!1);
9
- return h.current ||= (typeof window < "u" && document && (i.documentOverflow === "hidden" || i.variant === "fixed" && i.documentOverflow !== "auto") && document.documentElement.classList.add("db-page-document"), !0), a(() => {
10
- m(!i.fadeIn), document && i.fadeIn ? document.fonts.ready.then(() => {
11
- m(!0);
12
- }) : m(!0);
13
- }, []), a(() => () => {
14
- typeof window < "u" && document.documentElement.classList.contains("db-page-document") && document.documentElement.classList.remove("db-page-document");
15
- }, []), /* @__PURE__ */ u("div", {
16
- ref: f,
17
- ...e(i, [
18
- "data-icon-variant",
19
- "data-icon-variant-before",
20
- "data-icon-variant-after",
21
- "data-icon-weight",
22
- "data-icon-weight-before",
23
- "data-icon-weight-after",
24
- "data-interactive",
25
- "data-force-mobile",
26
- "data-color",
27
- "data-container-color",
28
- "data-bg-color",
29
- "data-on-bg-color",
30
- "data-color-scheme",
31
- "data-font-size",
32
- "data-headline-size",
33
- "data-divider",
34
- "data-focus",
35
- "data-font",
36
- "data-density"
37
- ]),
38
- id: i.id ?? i.propOverrides?.id,
39
- ...t(i, [
40
- "data-icon-variant",
41
- "data-icon-variant-before",
42
- "data-icon-variant-after",
43
- "data-icon-weight",
44
- "data-icon-weight-before",
45
- "data-icon-weight-after",
46
- "data-interactive",
47
- "data-force-mobile",
48
- "data-color",
49
- "data-container-color",
50
- "data-bg-color",
51
- "data-on-bg-color",
52
- "data-color-scheme",
53
- "data-font-size",
54
- "data-headline-size",
55
- "data-divider",
56
- "data-focus",
57
- "data-font",
58
- "data-density"
59
- ]),
60
- className: n("db-page", i.className),
61
- "data-variant": i.variant,
62
- "data-fade-in": r(i.fadeIn, "fadeIn"),
63
- "data-fonts-loaded": r(p, "fontsLoaded"),
64
- children: [
65
- /* @__PURE__ */ l(c, { children: i.header }),
66
- /* @__PURE__ */ l("main", {
67
- className: n("db-main", i.mainClass),
68
- children: i.children
69
- }),
70
- /* @__PURE__ */ l(c, { children: i.footer })
71
- ]
72
- });
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 { useState, useRef, useEffect, forwardRef } from "react";
5
+ import { cls, getBooleanAsString } from "../../utils/index.js";
6
+ function DBPageFn(props, component) {
7
+ const _ref = component || useRef(component);
8
+ const [fontsLoaded, setFontsLoaded] = useState(() => false);
9
+ const hasInitialized = useRef(false);
10
+ if (!hasInitialized.current) {
11
+ if (typeof window !== "undefined" &&
12
+ document &&
13
+ (props.documentOverflow === "hidden" ||
14
+ (props.variant === "fixed" && props.documentOverflow !== "auto"))) {
15
+ // We need to set this to `html` element that the flex-box solution works
16
+ // See https://stackoverflow.com/a/43710216 - Approach 1 - flexbox
17
+ document.documentElement.classList.add("db-page-document");
18
+ }
19
+ hasInitialized.current = true;
20
+ }
21
+ useEffect(() => {
22
+ setFontsLoaded(!props.fadeIn);
23
+ if (document && props.fadeIn) {
24
+ document.fonts.ready.then(() => {
25
+ setFontsLoaded(true);
26
+ });
27
+ }
28
+ else {
29
+ setFontsLoaded(true);
30
+ }
31
+ }, []);
32
+ useEffect(() => {
33
+ return () => {
34
+ if (typeof window !== "undefined" &&
35
+ document.documentElement.classList.contains("db-page-document")) {
36
+ // remove document styles set by this
37
+ document.documentElement.classList.remove("db-page-document");
38
+ }
39
+ };
40
+ }, []);
41
+ 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"]), 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-page", props.className), "data-variant": props.variant, "data-fade-in": getBooleanAsString(props.fadeIn, "fadeIn"), "data-fonts-loaded": getBooleanAsString(fontsLoaded, "fontsLoaded"), children: [_jsx(_Fragment, { children: props.header }), _jsx("main", { className: cls("db-main", props.mainClass), children: props.children }), _jsx(_Fragment, { children: props.footer })] }));
73
42
  }
74
- var f = i(d);
75
- //#endregion
76
- export { f as default };
43
+ const DBPage = forwardRef(DBPageFn);
44
+ export default DBPage;
@@ -1 +1 @@
1
- export { default as DBPopover } from './popover';
1
+ export { default as DBPopover } from './popover.js';
@@ -0,0 +1 @@
1
+ export { default as DBPopover } from './popover.js';
@@ -1,4 +1,4 @@
1
- import type { GapProps, GlobalProps, GlobalState, InitializedState, PlacementProps, PopoverProps, PopoverState, SpacingProps } from '../../shared/model';
1
+ import type { GapProps, GlobalProps, GlobalState, InitializedState, PlacementProps, PopoverProps, PopoverState, SpacingProps } from '../../shared/model.js';
2
2
  export type DBPopoverDefaultProps = {
3
3
  /**
4
4
  * Use open to disable the default hover/focus behavior to use it on click or other trigger.
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBPopover: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, keyof import("../..").GlobalProps | "placement" | "spacing" | keyof import("../..").PopoverProps | keyof import("./model").DBPopoverDefaultProps | "gap"> & import("./model").DBPopoverDefaultProps & import("../..").GlobalProps & import("../..").SpacingProps & import("../..").PlacementProps & import("../..").GapProps & import("../..").PopoverProps & React.RefAttributes<any>>;
2
+ declare const DBPopover: React.ForwardRefExoticComponent<Omit<React.HTMLAttributes<any>, keyof import("../../index.js").GlobalProps | "placement" | "spacing" | keyof import("../../index.js").PopoverProps | keyof import("./model.js").DBPopoverDefaultProps | "gap"> & import("./model.js").DBPopoverDefaultProps & import("../../index.js").GlobalProps & import("../../index.js").SpacingProps & import("../../index.js").PlacementProps & import("../../index.js").GapProps & import("../../index.js").PopoverProps & React.RefAttributes<any>>;
3
3
  export default DBPopover;
@@ -1,128 +1,121 @@
1
1
  "use client";
2
- import { filterPassingProps as e, getRootProps as t } from "../../utils/react.js";
3
- import { cls as n, delay as r, getBooleanAsString as i } from "../../utils/index.js";
4
- import { DocumentScrollListener as a } from "../../utils/document-scroll-listener.js";
5
- import { handleFixedPopover as o } from "../../utils/floating-components.js";
6
- import { forwardRef as s, useEffect as c, useRef as l, useState as u } from "react";
7
- import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
8
- //#region src/components/popover/popover.tsx
9
- function m(s, m) {
10
- let h = m || l(m), [g, _] = u(() => !1), [v, y] = u(() => !1), [b, x] = u(() => void 0), [S, C] = u(() => void 0);
11
- function w(e) {
12
- if (!e || e.key === "Escape") for (let e of Array.from(h.current.children)) e.blur();
13
- }
14
- function T() {
15
- if (!h.current) return;
16
- let e = h.current.querySelector("article");
17
- e && r(() => {
18
- o(e, h.current, s.placement ?? "bottom");
19
- }, 1);
20
- }
21
- function E(e) {
22
- e?.target?.contains && e?.target?.contains(h.current) && T();
23
- }
24
- function D() {
25
- y(!0), x(new a().addCallback((e) => E(e))), T();
26
- let e = k();
27
- e && S?.observe(e);
28
- }
29
- function O(e) {
30
- let t = e?.target;
31
- if (!t?.parentNode || t.parentNode.querySelector(":focus") !== t && t.parentNode.querySelector(":focus-within") !== t && t.parentNode.querySelector(":hover") !== t) {
32
- y(!1), b && new a().removeCallback(b);
33
- let e = k();
34
- e && S?.unobserve(e);
35
- }
36
- }
37
- function k() {
38
- if (h.current) {
39
- let e = Array.from(h.current.children);
40
- if (e.length >= 2) {
41
- let t = e[0];
42
- return t.tagName.includes("-") ? t.children?.length > 0 ? t.children[0] : null : t;
43
- }
44
- }
45
- return null;
46
- }
47
- return c(() => {
48
- _(!0);
49
- }, []), c(() => {
50
- if (h.current && g) {
51
- _(!1);
52
- let e = k();
53
- e && (e.ariaHasPopup = "true"), T(), h.current.addEventListener("keydown", (e) => w(e)), ["mouseenter", "focusin"].forEach((e) => {
54
- h.current.addEventListener(e, () => D());
55
- }), ["mouseleave", "focusout"].forEach((e) => {
56
- h.current.addEventListener(e, () => O());
57
- }), typeof window < "u" && "IntersectionObserver" in window && C(new IntersectionObserver((e) => {
58
- let t = e.find(({ target: e }) => e === k());
59
- t && !t.isIntersecting && w(!1);
60
- }));
61
- }
62
- }, [h.current, g]), c(() => {
63
- if (h.current) {
64
- let e = k();
65
- e && (e.ariaExpanded = (!!v).toString());
66
- }
67
- }, [h.current, v]), /* @__PURE__ */ p("div", {
68
- ref: h,
69
- ...e(s, [
70
- "data-icon-variant",
71
- "data-icon-variant-before",
72
- "data-icon-variant-after",
73
- "data-icon-weight",
74
- "data-icon-weight-before",
75
- "data-icon-weight-after",
76
- "data-interactive",
77
- "data-force-mobile",
78
- "data-color",
79
- "data-container-color",
80
- "data-bg-color",
81
- "data-on-bg-color",
82
- "data-color-scheme",
83
- "data-font-size",
84
- "data-headline-size",
85
- "data-divider",
86
- "data-focus",
87
- "data-font",
88
- "data-density"
89
- ]),
90
- id: s.id ?? s.propOverrides?.id,
91
- ...t(s, [
92
- "data-icon-variant",
93
- "data-icon-variant-before",
94
- "data-icon-variant-after",
95
- "data-icon-weight",
96
- "data-icon-weight-before",
97
- "data-icon-weight-after",
98
- "data-interactive",
99
- "data-force-mobile",
100
- "data-color",
101
- "data-container-color",
102
- "data-bg-color",
103
- "data-on-bg-color",
104
- "data-color-scheme",
105
- "data-font-size",
106
- "data-headline-size",
107
- "data-divider",
108
- "data-focus",
109
- "data-font",
110
- "data-density"
111
- ]),
112
- className: n("db-popover", s.className),
113
- children: [/* @__PURE__ */ f(d, { children: s.trigger }), /* @__PURE__ */ f("article", {
114
- className: "db-popover-content",
115
- "data-spacing": s.spacing,
116
- "data-gap": i(s.gap, "gap"),
117
- "data-animation": i(s.animation ?? !0, "animation"),
118
- "data-open": i(s.open, "open"),
119
- "data-delay": s.delay,
120
- "data-width": s.width,
121
- "data-placement": s.placement,
122
- children: s.children
123
- })]
124
- });
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 { useState, useRef, useEffect, forwardRef } from "react";
5
+ import { cls, getBooleanAsString, delay as utilsDelay } from "../../utils/index.js";
6
+ import { DocumentScrollListener } from "../../utils/document-scroll-listener.js";
7
+ import { handleFixedPopover } from "../../utils/floating-components.js";
8
+ function DBPopoverFn(props, component) {
9
+ const _ref = component || useRef(component);
10
+ const [initialized, setInitialized] = useState(() => false);
11
+ const [isExpanded, setIsExpanded] = useState(() => false);
12
+ const [_documentScrollListenerCallbackId, set_documentScrollListenerCallbackId,] = useState(() => undefined);
13
+ const [_observer, set_observer] = useState(() => undefined);
14
+ function handleEscape(event) {
15
+ if (!event || event.key === "Escape") {
16
+ // TODO: Recursive for any child
17
+ for (const child of Array.from(_ref.current.children)) {
18
+ child.blur();
19
+ }
20
+ }
21
+ }
22
+ function handleAutoPlacement() {
23
+ if (!_ref.current)
24
+ return;
25
+ const article = _ref.current.querySelector("article");
26
+ if (article) {
27
+ // This is a workaround for angular
28
+ void utilsDelay(() => {
29
+ handleFixedPopover(article, _ref.current, props.placement ?? "bottom");
30
+ }, 1);
31
+ }
32
+ }
33
+ function handleDocumentScroll(event) {
34
+ if (event?.target?.contains && event?.target?.contains(_ref.current)) {
35
+ handleAutoPlacement();
36
+ }
37
+ }
38
+ function handleEnter() {
39
+ setIsExpanded(true);
40
+ set_documentScrollListenerCallbackId(new DocumentScrollListener().addCallback((event) => handleDocumentScroll(event)));
41
+ handleAutoPlacement();
42
+ const child = getTrigger();
43
+ if (child) {
44
+ _observer?.observe(child);
45
+ }
46
+ }
47
+ function handleLeave(event) {
48
+ const element = event?.target;
49
+ const parent = element?.parentNode;
50
+ if (!parent ||
51
+ (element.parentNode.querySelector(":focus") !== element &&
52
+ element.parentNode.querySelector(":focus-within") !== element &&
53
+ element.parentNode.querySelector(":hover") !== element)) {
54
+ setIsExpanded(false);
55
+ if (_documentScrollListenerCallbackId) {
56
+ new DocumentScrollListener().removeCallback(_documentScrollListenerCallbackId);
57
+ }
58
+ const child = getTrigger();
59
+ if (child) {
60
+ _observer?.unobserve(child);
61
+ }
62
+ }
63
+ }
64
+ function getTrigger() {
65
+ if (_ref.current) {
66
+ const children = Array.from(_ref.current.children);
67
+ if (children.length >= 2) {
68
+ const firstChild = children[0];
69
+ if (firstChild.tagName.includes("-")) {
70
+ // this is a workaround for custom angular components
71
+ return firstChild.children?.length > 0
72
+ ? firstChild.children[0]
73
+ : null;
74
+ }
75
+ else {
76
+ return firstChild;
77
+ }
78
+ }
79
+ }
80
+ return null;
81
+ }
82
+ useEffect(() => {
83
+ setInitialized(true);
84
+ }, []);
85
+ useEffect(() => {
86
+ if (_ref.current && initialized) {
87
+ setInitialized(false);
88
+ const child = getTrigger();
89
+ if (child) {
90
+ child.ariaHasPopup = "true";
91
+ }
92
+ handleAutoPlacement();
93
+ _ref.current.addEventListener("keydown", (event) => handleEscape(event));
94
+ ["mouseenter", "focusin"].forEach((event) => {
95
+ _ref.current.addEventListener(event, () => handleEnter());
96
+ });
97
+ ["mouseleave", "focusout"].forEach((event) => {
98
+ _ref.current.addEventListener(event, () => handleLeave());
99
+ });
100
+ if (typeof window !== "undefined" && "IntersectionObserver" in window) {
101
+ set_observer(new IntersectionObserver((payload) => {
102
+ const entry = payload.find(({ target }) => target === getTrigger());
103
+ if (entry && !entry.isIntersecting) {
104
+ handleEscape(false);
105
+ }
106
+ }));
107
+ }
108
+ }
109
+ }, [_ref.current, initialized]);
110
+ useEffect(() => {
111
+ if (_ref.current) {
112
+ const child = getTrigger();
113
+ if (child) {
114
+ child.ariaExpanded = Boolean(isExpanded).toString();
115
+ }
116
+ }
117
+ }, [_ref.current, isExpanded]);
118
+ 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"]), 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-popover", props.className), children: [_jsx(_Fragment, { children: props.trigger }), _jsx("article", { className: "db-popover-content", "data-spacing": props.spacing, "data-gap": getBooleanAsString(props.gap, "gap"), "data-animation": getBooleanAsString(props.animation ?? true, "animation"), "data-open": getBooleanAsString(props.open, "open"), "data-delay": props.delay, "data-width": props.width, "data-placement": props.placement, children: props.children })] }));
125
119
  }
126
- var h = s(m);
127
- //#endregion
128
- export { h as default };
120
+ const DBPopover = forwardRef(DBPopoverFn);
121
+ export default DBPopover;
@@ -1 +1 @@
1
- export { default as DBRadio } from './radio';
1
+ export { default as DBRadio } from './radio.js';
@@ -0,0 +1 @@
1
+ export { default as DBRadio } from './radio.js';
@@ -1,4 +1,4 @@
1
- import type { ChangeEventProps, ChangeEventState, FocusEventProps, FocusEventState, FormCheckProps, FormProps, FormState, GlobalProps, GlobalState, InitializedState, InputEventProps, InputEventState, SizeProps } from '../../shared/model';
1
+ import type { ChangeEventProps, ChangeEventState, FocusEventProps, FocusEventState, FormCheckProps, FormProps, FormState, GlobalProps, GlobalState, InitializedState, InputEventProps, InputEventState, SizeProps } from '../../shared/model.js';
2
2
  export type DBRadioDefaultProps = {};
3
3
  export type DBRadioProps = DBRadioDefaultProps & GlobalProps & InputEventProps<HTMLInputElement> & ChangeEventProps<HTMLInputElement> & FocusEventProps<HTMLInputElement> & FormProps & FormCheckProps & SizeProps;
4
4
  export type DBRadioDefaultState = {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,3 @@
1
1
  import * as React from "react";
2
- declare const DBRadio: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<any>, keyof import("../../shared/model").GlobalProps | "value" | "size" | keyof import("../../shared/model").ChangeEventProps<HTMLInputElement> | keyof import("../../shared/model").FocusEventProps<HTMLInputElement> | keyof import("../../shared/model").CustomFormProps | keyof import("../../shared/model").BaseFormProps | keyof import("../../shared/model").RequiredProps | "showLabel" | "checked" | keyof import("../../shared/model").InputEventProps<HTMLInputElement>> & import("../../shared/model").GlobalProps & import("../../shared/model").InputEventProps<HTMLInputElement> & import("../../shared/model").ChangeEventProps<HTMLInputElement> & import("../../shared/model").FocusEventProps<HTMLInputElement> & import("../../shared/model").CustomFormProps & import("../../shared/model").BaseFormProps & import("../../shared/model").RequiredProps & import("../../shared/model").ShowLabelProps & import("../../shared/model").ValueProps & import("../../shared/model").FormCheckProps & import("../../shared/model").SizeProps & React.RefAttributes<any>>;
2
+ declare const DBRadio: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<any>, keyof import("../../shared/model.js").GlobalProps | "value" | "size" | keyof import("../../shared/model.js").ChangeEventProps<HTMLInputElement> | keyof import("../../shared/model.js").FocusEventProps<HTMLInputElement> | keyof import("../../shared/model.js").CustomFormProps | keyof import("../../shared/model.js").BaseFormProps | keyof import("../../shared/model.js").RequiredProps | "showLabel" | "checked" | keyof import("../../shared/model.js").InputEventProps<HTMLInputElement>> & import("../../shared/model.js").GlobalProps & import("../../shared/model.js").InputEventProps<HTMLInputElement> & import("../../shared/model.js").ChangeEventProps<HTMLInputElement> & import("../../shared/model.js").FocusEventProps<HTMLInputElement> & 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").FormCheckProps & import("../../shared/model.js").SizeProps & React.RefAttributes<any>>;
3
3
  export default DBRadio;