@frontify/fondue-components 27.0.0 → 28.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/dist/fondue-components.js +55 -53
  2. package/dist/fondue-components.js.map +1 -1
  3. package/dist/fondue-components10.js +1 -1
  4. package/dist/fondue-components100.js +17 -6
  5. package/dist/fondue-components100.js.map +1 -1
  6. package/dist/fondue-components101.js +150 -11
  7. package/dist/fondue-components101.js.map +1 -1
  8. package/dist/fondue-components102.js +44 -70
  9. package/dist/fondue-components102.js.map +1 -1
  10. package/dist/fondue-components103.js +14 -15
  11. package/dist/fondue-components103.js.map +1 -1
  12. package/dist/fondue-components104.js +15 -7
  13. package/dist/fondue-components104.js.map +1 -1
  14. package/dist/fondue-components105.js +107 -85
  15. package/dist/fondue-components105.js.map +1 -1
  16. package/dist/fondue-components106.js +11 -79
  17. package/dist/fondue-components106.js.map +1 -1
  18. package/dist/fondue-components107.js +17 -31
  19. package/dist/fondue-components107.js.map +1 -1
  20. package/dist/fondue-components108.js +11 -19
  21. package/dist/fondue-components108.js.map +1 -1
  22. package/dist/fondue-components109.js +16 -39
  23. package/dist/fondue-components109.js.map +1 -1
  24. package/dist/fondue-components11.js +3 -3
  25. package/dist/fondue-components110.js +9 -0
  26. package/dist/fondue-components110.js.map +1 -0
  27. package/dist/fondue-components111.js +15 -0
  28. package/dist/fondue-components111.js.map +1 -0
  29. package/dist/fondue-components112.js +74 -0
  30. package/dist/fondue-components112.js.map +1 -0
  31. package/dist/fondue-components113.js +18 -0
  32. package/dist/fondue-components113.js.map +1 -0
  33. package/dist/fondue-components114.js +10 -0
  34. package/dist/fondue-components114.js.map +1 -0
  35. package/dist/fondue-components115.js +92 -0
  36. package/dist/fondue-components115.js.map +1 -0
  37. package/dist/fondue-components116.js +84 -0
  38. package/dist/fondue-components116.js.map +1 -0
  39. package/dist/fondue-components117.js +34 -0
  40. package/dist/fondue-components117.js.map +1 -0
  41. package/dist/fondue-components118.js +32 -0
  42. package/dist/fondue-components118.js.map +1 -0
  43. package/dist/fondue-components12.js +7 -37
  44. package/dist/fondue-components12.js.map +1 -1
  45. package/dist/fondue-components120.js +44 -0
  46. package/dist/fondue-components120.js.map +1 -0
  47. package/dist/fondue-components121.js +22 -0
  48. package/dist/fondue-components121.js.map +1 -0
  49. package/dist/fondue-components122.js +24 -0
  50. package/dist/fondue-components122.js.map +1 -0
  51. package/dist/fondue-components123.js +43 -0
  52. package/dist/fondue-components123.js.map +1 -0
  53. package/dist/fondue-components124.js +71 -0
  54. package/dist/fondue-components124.js.map +1 -0
  55. package/dist/fondue-components125.js +34 -0
  56. package/dist/fondue-components125.js.map +1 -0
  57. package/dist/fondue-components126.js +12 -0
  58. package/dist/fondue-components126.js.map +1 -0
  59. package/dist/fondue-components127.js +156 -0
  60. package/dist/fondue-components127.js.map +1 -0
  61. package/dist/fondue-components128.js +111 -0
  62. package/dist/fondue-components128.js.map +1 -0
  63. package/dist/fondue-components129.js +19 -0
  64. package/dist/fondue-components129.js.map +1 -0
  65. package/dist/fondue-components13.js +36 -121
  66. package/dist/fondue-components13.js.map +1 -1
  67. package/dist/fondue-components130.js +19 -0
  68. package/dist/fondue-components130.js.map +1 -0
  69. package/dist/fondue-components131.js +32 -0
  70. package/dist/fondue-components131.js.map +1 -0
  71. package/dist/fondue-components132.js +16 -0
  72. package/dist/fondue-components132.js.map +1 -0
  73. package/dist/fondue-components133.js +10 -0
  74. package/dist/fondue-components133.js.map +1 -0
  75. package/dist/fondue-components14.js +121 -36
  76. package/dist/fondue-components14.js.map +1 -1
  77. package/dist/fondue-components15.js +30 -39
  78. package/dist/fondue-components15.js.map +1 -1
  79. package/dist/fondue-components16.js +44 -41
  80. package/dist/fondue-components16.js.map +1 -1
  81. package/dist/fondue-components17.js +42 -57
  82. package/dist/fondue-components17.js.map +1 -1
  83. package/dist/fondue-components18.js +55 -41
  84. package/dist/fondue-components18.js.map +1 -1
  85. package/dist/fondue-components19.js +39 -16
  86. package/dist/fondue-components19.js.map +1 -1
  87. package/dist/fondue-components20.js +17 -43
  88. package/dist/fondue-components20.js.map +1 -1
  89. package/dist/fondue-components21.js +42 -69
  90. package/dist/fondue-components21.js.map +1 -1
  91. package/dist/fondue-components22.js +72 -16
  92. package/dist/fondue-components22.js.map +1 -1
  93. package/dist/fondue-components23.js +18 -76
  94. package/dist/fondue-components23.js.map +1 -1
  95. package/dist/fondue-components24.js +75 -34
  96. package/dist/fondue-components24.js.map +1 -1
  97. package/dist/fondue-components25.js +34 -53
  98. package/dist/fondue-components25.js.map +1 -1
  99. package/dist/fondue-components26.js +55 -23
  100. package/dist/fondue-components26.js.map +1 -1
  101. package/dist/fondue-components27.js +23 -55
  102. package/dist/fondue-components27.js.map +1 -1
  103. package/dist/fondue-components28.js +52 -97
  104. package/dist/fondue-components28.js.map +1 -1
  105. package/dist/fondue-components29.js +98 -31
  106. package/dist/fondue-components29.js.map +1 -1
  107. package/dist/fondue-components3.js +1 -1
  108. package/dist/fondue-components30.js +31 -194
  109. package/dist/fondue-components30.js.map +1 -1
  110. package/dist/fondue-components31.js +184 -134
  111. package/dist/fondue-components31.js.map +1 -1
  112. package/dist/fondue-components32.js +143 -130
  113. package/dist/fondue-components32.js.map +1 -1
  114. package/dist/fondue-components33.js +131 -30
  115. package/dist/fondue-components33.js.map +1 -1
  116. package/dist/fondue-components34.js +29 -78
  117. package/dist/fondue-components34.js.map +1 -1
  118. package/dist/fondue-components35.js +67 -110
  119. package/dist/fondue-components35.js.map +1 -1
  120. package/dist/fondue-components36.js +121 -34
  121. package/dist/fondue-components36.js.map +1 -1
  122. package/dist/fondue-components37.js +36 -56
  123. package/dist/fondue-components37.js.map +1 -1
  124. package/dist/fondue-components38.js +56 -20
  125. package/dist/fondue-components38.js.map +1 -1
  126. package/dist/fondue-components39.js +20 -23
  127. package/dist/fondue-components39.js.map +1 -1
  128. package/dist/fondue-components4.js +3 -3
  129. package/dist/fondue-components40.js +25 -7
  130. package/dist/fondue-components40.js.map +1 -1
  131. package/dist/fondue-components41.js +7 -8
  132. package/dist/fondue-components41.js.map +1 -1
  133. package/dist/fondue-components42.js +9 -41
  134. package/dist/fondue-components42.js.map +1 -1
  135. package/dist/fondue-components43.js +41 -5
  136. package/dist/fondue-components43.js.map +1 -1
  137. package/dist/fondue-components44.js +1 -1
  138. package/dist/fondue-components45.js +3 -11
  139. package/dist/fondue-components45.js.map +1 -1
  140. package/dist/fondue-components46.js +13 -32
  141. package/dist/fondue-components46.js.map +1 -1
  142. package/dist/fondue-components47.js +32 -54
  143. package/dist/fondue-components47.js.map +1 -1
  144. package/dist/fondue-components48.js +48 -125
  145. package/dist/fondue-components48.js.map +1 -1
  146. package/dist/fondue-components49.js +130 -20
  147. package/dist/fondue-components49.js.map +1 -1
  148. package/dist/fondue-components5.js +2 -2
  149. package/dist/fondue-components50.js +21 -53
  150. package/dist/fondue-components50.js.map +1 -1
  151. package/dist/fondue-components51.js +53 -8
  152. package/dist/fondue-components51.js.map +1 -1
  153. package/dist/fondue-components52.js +8 -13
  154. package/dist/fondue-components52.js.map +1 -1
  155. package/dist/fondue-components53.js +13 -17
  156. package/dist/fondue-components53.js.map +1 -1
  157. package/dist/fondue-components54.js +16 -4
  158. package/dist/fondue-components54.js.map +1 -1
  159. package/dist/fondue-components55.js +5 -18
  160. package/dist/fondue-components55.js.map +1 -1
  161. package/dist/fondue-components56.js +18 -19
  162. package/dist/fondue-components56.js.map +1 -1
  163. package/dist/fondue-components57.js +18 -4
  164. package/dist/fondue-components57.js.map +1 -1
  165. package/dist/fondue-components58.js +43 -12
  166. package/dist/fondue-components58.js.map +1 -1
  167. package/dist/fondue-components59.js +24 -4
  168. package/dist/fondue-components59.js.map +1 -1
  169. package/dist/fondue-components6.js +1 -1
  170. package/dist/fondue-components60.js +22 -17
  171. package/dist/fondue-components60.js.map +1 -1
  172. package/dist/fondue-components61.js +4 -10
  173. package/dist/fondue-components61.js.map +1 -1
  174. package/dist/fondue-components62.js +11 -35
  175. package/dist/fondue-components62.js.map +1 -1
  176. package/dist/fondue-components63.js +4 -6
  177. package/dist/fondue-components63.js.map +1 -1
  178. package/dist/fondue-components64.js +17 -4
  179. package/dist/fondue-components64.js.map +1 -1
  180. package/dist/fondue-components65.js +10 -12
  181. package/dist/fondue-components65.js.map +1 -1
  182. package/dist/fondue-components66.js +35 -7
  183. package/dist/fondue-components66.js.map +1 -1
  184. package/dist/fondue-components67.js +6 -12
  185. package/dist/fondue-components67.js.map +1 -1
  186. package/dist/fondue-components68.js +1 -1
  187. package/dist/fondue-components69.js +12 -24
  188. package/dist/fondue-components69.js.map +1 -1
  189. package/dist/fondue-components7.js +1 -1
  190. package/dist/fondue-components70.js +8 -16
  191. package/dist/fondue-components70.js.map +1 -1
  192. package/dist/fondue-components71.js +13 -20
  193. package/dist/fondue-components71.js.map +1 -1
  194. package/dist/fondue-components72.js +5 -20
  195. package/dist/fondue-components72.js.map +1 -1
  196. package/dist/fondue-components73.js +24 -19
  197. package/dist/fondue-components73.js.map +1 -1
  198. package/dist/fondue-components74.js +17 -20
  199. package/dist/fondue-components74.js.map +1 -1
  200. package/dist/fondue-components75.js +20 -19
  201. package/dist/fondue-components75.js.map +1 -1
  202. package/dist/fondue-components76.js +20 -8
  203. package/dist/fondue-components76.js.map +1 -1
  204. package/dist/fondue-components77.js +20 -11
  205. package/dist/fondue-components77.js.map +1 -1
  206. package/dist/fondue-components78.js +20 -11
  207. package/dist/fondue-components78.js.map +1 -1
  208. package/dist/fondue-components79.js +19 -7
  209. package/dist/fondue-components79.js.map +1 -1
  210. package/dist/fondue-components8.js +5 -5
  211. package/dist/fondue-components80.js +8 -13
  212. package/dist/fondue-components80.js.map +1 -1
  213. package/dist/fondue-components81.js +10 -22
  214. package/dist/fondue-components81.js.map +1 -1
  215. package/dist/fondue-components82.js +11 -34
  216. package/dist/fondue-components82.js.map +1 -1
  217. package/dist/fondue-components83.js +6 -10
  218. package/dist/fondue-components83.js.map +1 -1
  219. package/dist/fondue-components84.js +12 -67
  220. package/dist/fondue-components84.js.map +1 -1
  221. package/dist/fondue-components85.js +22 -14
  222. package/dist/fondue-components85.js.map +1 -1
  223. package/dist/fondue-components86.js +34 -25
  224. package/dist/fondue-components86.js.map +1 -1
  225. package/dist/fondue-components87.js +8 -16
  226. package/dist/fondue-components87.js.map +1 -1
  227. package/dist/fondue-components88.js +67 -24
  228. package/dist/fondue-components88.js.map +1 -1
  229. package/dist/fondue-components89.js +14 -8
  230. package/dist/fondue-components89.js.map +1 -1
  231. package/dist/fondue-components9.js +5 -5
  232. package/dist/fondue-components90.js +24 -25
  233. package/dist/fondue-components90.js.map +1 -1
  234. package/dist/fondue-components91.js +18 -6
  235. package/dist/fondue-components91.js.map +1 -1
  236. package/dist/fondue-components92.js +24 -4
  237. package/dist/fondue-components92.js.map +1 -1
  238. package/dist/fondue-components93.js +8 -4
  239. package/dist/fondue-components93.js.map +1 -1
  240. package/dist/fondue-components94.js +30 -16
  241. package/dist/fondue-components94.js.map +1 -1
  242. package/dist/fondue-components95.js +6 -216
  243. package/dist/fondue-components95.js.map +1 -1
  244. package/dist/fondue-components96.js +4 -18
  245. package/dist/fondue-components96.js.map +1 -1
  246. package/dist/fondue-components97.js +4 -16
  247. package/dist/fondue-components97.js.map +1 -1
  248. package/dist/fondue-components98.js +188 -122
  249. package/dist/fondue-components98.js.map +1 -1
  250. package/dist/fondue-components99.js +18 -44
  251. package/dist/fondue-components99.js.map +1 -1
  252. package/dist/index.d.ts +101 -24
  253. package/dist/style.css +1 -1
  254. package/package.json +7 -5
@@ -8,32 +8,33 @@ import { ColorPicker as c } from "./fondue-components8.js";
8
8
  import { Dialog as g } from "./fondue-components9.js";
9
9
  import { Divider as S } from "./fondue-components10.js";
10
10
  import { Dropdown as B } from "./fondue-components11.js";
11
- import { Flex as L } from "./fondue-components12.js";
12
- import { Flyout as k } from "./fondue-components13.js";
13
- import { Grid as v } from "./fondue-components14.js";
14
- import { Heading as F } from "./fondue-components15.js";
15
- import { Label as w } from "./fondue-components16.js";
16
- import { Link as R } from "./fondue-components17.js";
17
- import { LoadingBar as G } from "./fondue-components18.js";
18
- import { LoadingCircle as I } from "./fondue-components19.js";
19
- import { Notice as j } from "./fondue-components20.js";
20
- import { RadioList as z } from "./fondue-components21.js";
21
- import { RouterProvider as J } from "./fondue-components22.js";
22
- import { ScrollArea as M } from "./fondue-components23.js";
23
- import { Section as Q } from "./fondue-components24.js";
24
- import { SegmentedControl as V } from "./fondue-components25.js";
25
- import { Select as X } from "./fondue-components26.js";
26
- import { Slider as Z } from "./fondue-components27.js";
27
- import { SplitButton as $ } from "./fondue-components28.js";
28
- import { Switch as ro } from "./fondue-components29.js";
29
- import { Table as to } from "./fondue-components30.js";
30
- import { Tag as mo } from "./fondue-components31.js";
31
- import { Tabs as fo } from "./fondue-components32.js";
32
- import { Text as ao } from "./fondue-components33.js";
33
- import { TextInput as no } from "./fondue-components34.js";
34
- import { Textarea as To } from "./fondue-components35.js";
35
- import { ThemeContext as uo, ThemeProvider as So, useFondueTheme as ho } from "./fondue-components36.js";
36
- import { Tooltip as Co } from "./fondue-components37.js";
11
+ import { DatePicker as L } from "./fondue-components12.js";
12
+ import { Flex as k } from "./fondue-components13.js";
13
+ import { Flyout as P } from "./fondue-components14.js";
14
+ import { Grid as v } from "./fondue-components15.js";
15
+ import { Heading as w } from "./fondue-components16.js";
16
+ import { Label as R } from "./fondue-components17.js";
17
+ import { Link as G } from "./fondue-components18.js";
18
+ import { LoadingBar as I } from "./fondue-components19.js";
19
+ import { LoadingCircle as j } from "./fondue-components20.js";
20
+ import { Notice as z } from "./fondue-components21.js";
21
+ import { RadioList as J } from "./fondue-components22.js";
22
+ import { RouterProvider as M } from "./fondue-components23.js";
23
+ import { ScrollArea as Q } from "./fondue-components24.js";
24
+ import { Section as V } from "./fondue-components25.js";
25
+ import { SegmentedControl as X } from "./fondue-components26.js";
26
+ import { Select as Z } from "./fondue-components27.js";
27
+ import { Slider as $ } from "./fondue-components28.js";
28
+ import { SplitButton as ro } from "./fondue-components29.js";
29
+ import { Switch as to } from "./fondue-components30.js";
30
+ import { Table as mo } from "./fondue-components31.js";
31
+ import { Tag as fo } from "./fondue-components32.js";
32
+ import { Tabs as ao } from "./fondue-components33.js";
33
+ import { Text as no } from "./fondue-components34.js";
34
+ import { TextInput as To } from "./fondue-components35.js";
35
+ import { Textarea as uo } from "./fondue-components36.js";
36
+ import { ThemeContext as ho, ThemeProvider as Bo, useFondueTheme as Co } from "./fondue-components37.js";
37
+ import { Tooltip as bo } from "./fondue-components38.js";
37
38
  export {
38
39
  t as Accordion,
39
40
  m as Badge,
@@ -41,36 +42,37 @@ export {
41
42
  a as Button,
42
43
  l as Checkbox,
43
44
  c as ColorPicker,
45
+ L as DatePicker,
44
46
  g as Dialog,
45
47
  S as Divider,
46
48
  B as Dropdown,
47
- L as Flex,
48
- k as Flyout,
49
+ k as Flex,
50
+ P as Flyout,
49
51
  v as Grid,
50
- F as Heading,
51
- w as Label,
52
- R as Link,
53
- G as LoadingBar,
54
- I as LoadingCircle,
55
- j as Notice,
56
- z as RadioList,
57
- J as RouterProvider,
58
- M as ScrollArea,
59
- Q as Section,
60
- V as SegmentedControl,
61
- X as Select,
62
- Z as Slider,
63
- $ as SplitButton,
64
- ro as Switch,
65
- to as Table,
66
- fo as Tabs,
67
- mo as Tag,
68
- ao as Text,
69
- no as TextInput,
70
- To as Textarea,
71
- uo as ThemeContext,
72
- So as ThemeProvider,
73
- Co as Tooltip,
74
- ho as useFondueTheme
52
+ w as Heading,
53
+ R as Label,
54
+ G as Link,
55
+ I as LoadingBar,
56
+ j as LoadingCircle,
57
+ z as Notice,
58
+ J as RadioList,
59
+ M as RouterProvider,
60
+ Q as ScrollArea,
61
+ V as Section,
62
+ X as SegmentedControl,
63
+ Z as Select,
64
+ $ as Slider,
65
+ ro as SplitButton,
66
+ to as Switch,
67
+ mo as Table,
68
+ ao as Tabs,
69
+ fo as Tag,
70
+ no as Text,
71
+ To as TextInput,
72
+ uo as Textarea,
73
+ ho as ThemeContext,
74
+ Bo as ThemeProvider,
75
+ bo as Tooltip,
76
+ Co as useFondueTheme
75
77
  };
76
78
  //# sourceMappingURL=fondue-components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"fondue-components.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
2
  import * as f from "@radix-ui/react-separator";
3
3
  import { forwardRef as p } from "react";
4
- import c from "./fondue-components54.js";
4
+ import c from "./fondue-components55.js";
5
5
  const u = p(
6
6
  ({
7
7
  "data-test-id": t = "fondue-divider",
@@ -1,9 +1,20 @@
1
- import { useMemo as t } from "react";
2
- const m = (n, s) => t(() => n.map((r) => {
3
- const o = s(r), p = (o == null ? void 0 : o.label) ?? r;
4
- return { value: r, displayValue: p };
5
- }), [n, s]);
1
+ import { useState as a, useCallback as u } from "react";
2
+ const n = (s, t, e) => {
3
+ const [f, r] = a(e ?? null), i = t !== void 0 ? t : f, l = i !== null ? [i] : [], m = u(
4
+ (d) => {
5
+ d !== void 0 && (t === void 0 && r(d), s == null || s(d));
6
+ },
7
+ [t, s]
8
+ ), I = u(() => {
9
+ t === void 0 && r(null), s == null || s(null);
10
+ }, [t, s]);
11
+ return {
12
+ selectedItemValues: l,
13
+ selectItem: m,
14
+ clear: I
15
+ };
16
+ };
6
17
  export {
7
- m as useBadgeItems
18
+ n as useSingleSelect
8
19
  };
9
20
  //# sourceMappingURL=fondue-components100.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components100.js","sources":["../src/components/Select/hooks/useBadgeItems.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useMemo } from 'react';\n\ntype SelectItemLike = {\n value: string;\n label: string;\n};\n\ntype BadgeItem = {\n value: string;\n displayValue: string;\n};\n\nexport const useBadgeItems = (\n selectedItemValues: string[],\n getItemByValue: (value?: string) => SelectItemLike | undefined,\n): BadgeItem[] => {\n return useMemo(() => {\n return selectedItemValues.map((value) => {\n const item = getItemByValue(value);\n const displayValue = item?.label ?? value;\n return { value, displayValue };\n });\n }, [selectedItemValues, getItemByValue]);\n};\n"],"names":["useBadgeItems","selectedItemValues","getItemByValue","useMemo","value","item","displayValue"],"mappings":";AAcO,MAAMA,IAAgB,CACzBC,GACAC,MAEOC,EAAQ,MACJF,EAAmB,IAAI,CAACG,MAAU;AACrC,QAAMC,IAAOH,EAAeE,CAAK,GAC3BE,KAAeD,KAAA,gBAAAA,EAAM,UAASD;AACpC,SAAO,EAAE,OAAAA,GAAO,cAAAE,EAAA;AACpB,CAAC,GACF,CAACL,GAAoBC,CAAc,CAAC;"}
1
+ {"version":3,"file":"fondue-components100.js","sources":["../src/components/Select/hooks/useSingleSelect.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useCallback, useState } from 'react';\n\nexport const useSingleSelect = (\n onSelect?: (value: string | null) => void,\n value?: string | null,\n defaultValue?: string,\n) => {\n const [selectedItemState, setSelectedItemState] = useState<string | null>(defaultValue ?? null);\n\n const selectedValue = value !== undefined ? value : selectedItemState;\n const selectedItemValues = selectedValue !== null ? [selectedValue] : [];\n\n const selectItem = useCallback(\n (item?: string) => {\n if (item === undefined) {\n return;\n }\n if (value === undefined) {\n setSelectedItemState(item);\n }\n onSelect?.(item);\n },\n [value, onSelect],\n );\n\n const clear = useCallback(() => {\n if (value === undefined) {\n setSelectedItemState(null);\n }\n onSelect?.(null);\n }, [value, onSelect]);\n\n return {\n selectedItemValues,\n selectItem,\n clear,\n };\n};\n"],"names":["useSingleSelect","onSelect","value","defaultValue","selectedItemState","setSelectedItemState","useState","selectedValue","selectedItemValues","selectItem","useCallback","item","clear"],"mappings":";AAIO,MAAMA,IAAkB,CAC3BC,GACAC,GACAC,MACC;AACD,QAAM,CAACC,GAAmBC,CAAoB,IAAIC,EAAwBH,KAAgB,IAAI,GAExFI,IAAgBL,MAAU,SAAYA,IAAQE,GAC9CI,IAAqBD,MAAkB,OAAO,CAACA,CAAa,IAAI,CAAA,GAEhEE,IAAaC;AAAA,IACf,CAACC,MAAkB;AACf,MAAIA,MAAS,WAGTT,MAAU,UACVG,EAAqBM,CAAI,GAE7BV,KAAA,QAAAA,EAAWU;AAAA,IACf;AAAA,IACA,CAACT,GAAOD,CAAQ;AAAA,EAAA,GAGdW,IAAQF,EAAY,MAAM;AAC5B,IAAIR,MAAU,UACVG,EAAqB,IAAI,GAE7BJ,KAAA,QAAAA,EAAW;AAAA,EACf,GAAG,CAACC,GAAOD,CAAQ,CAAC;AAEpB,SAAO;AAAA,IACH,oBAAAO;AAAA,IACA,YAAAC;AAAA,IACA,OAAAG;AAAA,EAAA;AAER;"}
@@ -1,15 +1,154 @@
1
- import { useRef as u, useCallback as t } from "react";
2
- const c = () => {
3
- const s = u(!1), o = t((e) => {
4
- s.current = !0, e.currentTarget.dataset.showFocusRing = "false";
5
- }, []), r = t((e) => {
6
- s.current || (e.target.dataset.showFocusRing = "true");
7
- }, []), n = t((e) => {
8
- e.target.dataset.showFocusRing = "false", s.current = !1;
9
- }, []);
10
- return { wasClickedRef: s, onMouseDown: o, onFocus: r, onBlur: n };
1
+ import { jsxs as d, jsx as n } from "react/jsx-runtime";
2
+ import { IconCaretDown as V } from "@frontify/fondue-icons";
3
+ import * as I from "@radix-ui/react-popover";
4
+ import { useSelect as s } from "downshift";
5
+ import { forwardRef as ee, useRef as te, useCallback as N, useState as ne, useMemo as oe } from "react";
6
+ import { useBadgeItems as re } from "./fondue-components110.js";
7
+ import { useFocusRing as ae } from "./fondue-components111.js";
8
+ import { useSelectData as se } from "./fondue-components112.js";
9
+ import { useSelectionDescription as ie } from "./fondue-components113.js";
10
+ import r from "./fondue-components102.js";
11
+ import { ClearButton as le } from "./fondue-components114.js";
12
+ import { CollapsibleBadges as ce } from "./fondue-components115.js";
13
+ import { SelectMenu as ue } from "./fondue-components116.js";
14
+ import { StatusIcons as ge } from "./fondue-components117.js";
15
+ const O = ({
16
+ children: M,
17
+ selectedItemValues: o,
18
+ onItemSelect: p,
19
+ onClear: P,
20
+ placeholder: c = "",
21
+ status: u = "neutral",
22
+ disabled: f,
23
+ alignMenu: R = "start",
24
+ side: j = "bottom",
25
+ id: k,
26
+ showStringValue: y = !0,
27
+ "data-test-id": b = "fondue-select",
28
+ viewportCollisionPadding: E = "compact",
29
+ onEscapeKeyDown: F,
30
+ multiple: g,
31
+ ...i
32
+ }, a) => {
33
+ const C = te(null), B = N(
34
+ (e) => {
35
+ C.current = e, typeof a == "function" ? a(e) : a && (a.current = e);
36
+ },
37
+ [a]
38
+ ), { inputSlots: H, menuSlots: K, items: w, clearButton: S, getItemByValue: l } = se(M), { onMouseDown: z, onFocus: A, onBlur: q } = ae(), { selectionDescriptionId: D, selectionDescription: m } = ie(
39
+ g,
40
+ o,
41
+ l
42
+ ), G = re(o, l), [J, v] = ne(!1), x = N(
43
+ (e) => {
44
+ const t = l(e);
45
+ if (t)
46
+ return !y && (t != null && t.children) ? t.children : t == null ? void 0 : t.label;
47
+ },
48
+ [l, y]
49
+ ), { getToggleButtonProps: L, getMenuProps: Q, getItemProps: U, reset: W, isOpen: X, highlightedIndex: Y } = s({
50
+ items: w,
51
+ selectedItem: null,
52
+ toggleButtonId: k,
53
+ labelId: "aria-labelledby" in i ? i["aria-labelledby"] : void 0,
54
+ onIsOpenChange: () => {
55
+ v(!1);
56
+ },
57
+ onHighlightedIndexChange: () => {
58
+ v(!0);
59
+ },
60
+ onSelectedItemChange: ({ selectedItem: e }) => {
61
+ p(e == null ? void 0 : e.value);
62
+ },
63
+ itemToString: (e) => e ? e.label : "",
64
+ ...g ? {
65
+ stateReducer: (e, t) => {
66
+ const { changes: h, type: $ } = t;
67
+ switch ($) {
68
+ case s.stateChangeTypes.ToggleButtonKeyDownEnter:
69
+ case s.stateChangeTypes.ToggleButtonKeyDownSpaceButton:
70
+ case s.stateChangeTypes.ItemClick:
71
+ return {
72
+ ...h,
73
+ isOpen: !0,
74
+ highlightedIndex: e.highlightedIndex
75
+ };
76
+ case s.stateChangeTypes.ToggleButtonBlur:
77
+ return {
78
+ ...h,
79
+ selectedItem: e.selectedItem
80
+ };
81
+ }
82
+ return h;
83
+ }
84
+ } : {}
85
+ }), T = u === "error", Z = () => {
86
+ P(), W();
87
+ }, _ = oe(
88
+ () => x(o[0]) || c,
89
+ [x, o, c]
90
+ );
91
+ return /* @__PURE__ */ d(I.Root, { open: X, children: [
92
+ /* @__PURE__ */ n(I.Anchor, { asChild: !0, onMouseDown: z, onFocus: A, onBlur: q, children: /* @__PURE__ */ d(
93
+ "div",
94
+ {
95
+ ref: B,
96
+ className: r.root,
97
+ "data-status": T ? "error" : u,
98
+ "data-disabled": f,
99
+ "data-empty": o.length === 0,
100
+ "data-test-id": b,
101
+ ...f ? {} : (
102
+ // eslint-disable-next-line react-hooks/refs
103
+ L({
104
+ "aria-label": "aria-label" in i ? i["aria-label"] : void 0,
105
+ "aria-describedby": m ? D : void 0,
106
+ ref: B
107
+ })
108
+ ),
109
+ children: [
110
+ m ? /* @__PURE__ */ n("span", { id: D, className: r.srOnly, children: m }) : null,
111
+ g ? /* @__PURE__ */ n("div", { className: r.selectedValue, children: /* @__PURE__ */ n(
112
+ ce,
113
+ {
114
+ items: G,
115
+ placeholder: c,
116
+ onDismiss: (e) => {
117
+ var t;
118
+ p(e), (t = C.current) == null || t.focus();
119
+ },
120
+ selectedCount: o.length
121
+ }
122
+ ) }) : /* @__PURE__ */ n("span", { className: r.selectedValue, children: _ }),
123
+ H,
124
+ S ? /* @__PURE__ */ n(le, { onClear: Z, children: S }) : null,
125
+ /* @__PURE__ */ d("div", { className: r.icons, children: [
126
+ /* @__PURE__ */ n(V, { size: 16, className: r.caret }),
127
+ /* @__PURE__ */ n(ge, { status: u, hasError: T, dataTestId: b })
128
+ ] })
129
+ ]
130
+ }
131
+ ) }),
132
+ /* @__PURE__ */ n(
133
+ ue,
134
+ {
135
+ align: R,
136
+ side: j,
137
+ highlightedIndex: Y,
138
+ getMenuProps: Q,
139
+ getItemProps: U,
140
+ selectedItemValues: o,
141
+ hasInteractedSinceOpening: J,
142
+ viewportCollisionPadding: E,
143
+ onEscapeKeyDown: F,
144
+ children: K
145
+ }
146
+ )
147
+ ] });
11
148
  };
149
+ O.displayName = "Select";
150
+ const Te = ee(O);
12
151
  export {
13
- c as useFocusRing
152
+ Te as SelectBase
14
153
  };
15
154
  //# sourceMappingURL=fondue-components101.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components101.js","sources":["../src/components/Select/hooks/useFocusRing.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useCallback, useRef, type FocusEvent, type MouseEvent, type MutableRefObject } from 'react';\n\ntype FocusRingHandlers = {\n /** Ref tracking whether the element was activated via mouse click. */\n wasClickedRef: MutableRefObject<boolean>;\n /** Handler for mousedown events — marks the interaction as click-based. */\n onMouseDown: (event: MouseEvent<HTMLElement>) => void;\n /** Handler for focus events — shows the focus ring only for keyboard navigation. */\n onFocus: (event: FocusEvent<HTMLElement>) => void;\n /** Handler for blur events — hides the focus ring and resets click tracking. */\n onBlur: (event: FocusEvent<HTMLElement>) => void;\n};\n\nexport const useFocusRing = (): FocusRingHandlers => {\n const wasClickedRef = useRef(false);\n\n const onMouseDown = useCallback((event: MouseEvent<HTMLElement>): void => {\n wasClickedRef.current = true;\n event.currentTarget.dataset.showFocusRing = 'false';\n }, []);\n\n const onFocus = useCallback((event: FocusEvent<HTMLElement>): void => {\n if (!wasClickedRef.current) {\n event.target.dataset.showFocusRing = 'true';\n }\n }, []);\n\n const onBlur = useCallback((event: FocusEvent<HTMLElement>): void => {\n event.target.dataset.showFocusRing = 'false';\n wasClickedRef.current = false;\n }, []);\n\n return { wasClickedRef, onMouseDown, onFocus, onBlur };\n};\n"],"names":["useFocusRing","wasClickedRef","useRef","onMouseDown","useCallback","event","onFocus","onBlur"],"mappings":";AAeO,MAAMA,IAAe,MAAyB;AACjD,QAAMC,IAAgBC,EAAO,EAAK,GAE5BC,IAAcC,EAAY,CAACC,MAAyC;AACtE,IAAAJ,EAAc,UAAU,IACxBI,EAAM,cAAc,QAAQ,gBAAgB;AAAA,EAChD,GAAG,CAAA,CAAE,GAECC,IAAUF,EAAY,CAACC,MAAyC;AAClE,IAAKJ,EAAc,YACfI,EAAM,OAAO,QAAQ,gBAAgB;AAAA,EAE7C,GAAG,CAAA,CAAE,GAECE,IAASH,EAAY,CAACC,MAAyC;AACjE,IAAAA,EAAM,OAAO,QAAQ,gBAAgB,SACrCJ,EAAc,UAAU;AAAA,EAC5B,GAAG,CAAA,CAAE;AAEL,SAAO,EAAE,eAAAA,GAAe,aAAAE,GAAa,SAAAG,GAAS,QAAAC,EAAA;AAClD;"}
1
+ {"version":3,"file":"fondue-components101.js","sources":["../src/components/Select/components/SelectBase.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { IconCaretDown } from '@frontify/fondue-icons';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { useSelect } from 'downshift';\nimport { forwardRef, useCallback, useMemo, useRef, useState, type ForwardedRef, type ReactNode } from 'react';\n\nimport { type CommonAriaProps } from '#/helpers/aria';\n\nimport { useBadgeItems } from '../hooks/useBadgeItems';\nimport { useFocusRing } from '../hooks/useFocusRing';\nimport { useSelectData } from '../hooks/useSelectData';\nimport { useSelectionDescription } from '../hooks/useSelectionDescription';\nimport styles from '../styles/select.module.scss';\n\nimport { ClearButton } from './ClearButton';\nimport { CollapsibleBadges } from './CollapsibleBadges';\nimport { SelectMenu, type SelectMenuViewportCollisionPadding } from './SelectMenu';\nimport { StatusIcons } from './StatusIcons';\n\nexport type SelectSharedProps = {\n /**\n * Children of the Select component. This can contain the `Select.Slot` components for the label, decorators, clear action and menu\n */\n children?: ReactNode;\n /**\n * The placeholder in the select component\n */\n placeholder?: string;\n /**\n * Status of the text input\n * @default \"neutral\"\n */\n status?: 'neutral' | 'success' | 'error';\n /**\n * Disables the select component\n */\n disabled?: boolean;\n /**\n * The alignment of the menu\n * @default \"start\"\n */\n alignMenu?: 'start' | 'center' | 'end';\n /**\n * Defines the preferred side of the select. It will not be respected if there are collisions with the viewport\n * @default \"bottom\"\n */\n side?: 'left' | 'right' | 'bottom' | 'top';\n /**\n * The data test id of the select component\n */\n 'data-test-id'?: string;\n /**\n * Id of the select component\n */\n id?: string;\n /**\n * The value of the select is shown as plain text (from the label prop) when set to true\n * Items child components are used if set to false\n * @default true\n */\n showStringValue?: boolean;\n /**\n * Define the minimum distance between the select menu and the viewport edge\n * @default 'compact'\n */\n viewportCollisionPadding?: SelectMenuViewportCollisionPadding;\n /**\n * Event handler called when the escape key is pressed\n */\n onEscapeKeyDown?: (event: KeyboardEvent) => void;\n} & CommonAriaProps;\n\ntype SelectBaseProps = SelectSharedProps & {\n /**\n * The currently selected item values\n */\n selectedItemValues: string[];\n /**\n * Callback fired when an item is selected or deselected\n */\n onItemSelect: (value?: string) => void;\n /**\n * Callback fired when the selection is cleared\n */\n onClear: () => void;\n /**\n * Whether the select allows multiple selections\n */\n multiple: boolean;\n};\n\nconst SelectBaseInput = (\n {\n children,\n selectedItemValues,\n onItemSelect,\n onClear,\n placeholder = '',\n status = 'neutral',\n disabled,\n alignMenu = 'start',\n side = 'bottom',\n id,\n showStringValue = true,\n 'data-test-id': dataTestId = 'fondue-select',\n viewportCollisionPadding = 'compact',\n onEscapeKeyDown,\n multiple,\n ...props\n }: SelectBaseProps,\n forwardedRef: ForwardedRef<HTMLDivElement>,\n): ReactNode => {\n const internalRef = useRef<HTMLDivElement | null>(null);\n const triggerRef = useCallback(\n (node: HTMLDivElement | null): void => {\n internalRef.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n },\n [forwardedRef],\n );\n const { inputSlots, menuSlots, items, clearButton, getItemByValue } = useSelectData(children);\n const { onMouseDown, onFocus, onBlur } = useFocusRing();\n const { selectionDescriptionId, selectionDescription } = useSelectionDescription(\n multiple,\n selectedItemValues,\n getItemByValue,\n );\n const badgeItems = useBadgeItems(selectedItemValues, getItemByValue);\n\n const [hasInteractedSinceOpening, setHasInteractedSinceOpening] = useState(false);\n\n const getDisplayedValue = useCallback(\n (itemValue?: string): ReactNode => {\n const selectedItem = getItemByValue(itemValue);\n if (selectedItem) {\n return !showStringValue && selectedItem?.children ? selectedItem.children : selectedItem?.label;\n }\n return undefined;\n },\n [getItemByValue, showStringValue],\n );\n\n const { getToggleButtonProps, getMenuProps, getItemProps, reset, isOpen, highlightedIndex } = useSelect<{\n value: string;\n label: string;\n children?: ReactNode;\n }>({\n items,\n selectedItem: null,\n toggleButtonId: id,\n labelId: 'aria-labelledby' in props ? props['aria-labelledby'] : undefined,\n onIsOpenChange: () => {\n setHasInteractedSinceOpening(false);\n },\n onHighlightedIndexChange: () => {\n setHasInteractedSinceOpening(true);\n },\n onSelectedItemChange: ({ selectedItem }) => {\n onItemSelect(selectedItem?.value);\n },\n itemToString: (item) => (item ? item.label : ''),\n ...(multiple\n ? {\n stateReducer: (state, actionAndChanges) => {\n const { changes, type } = actionAndChanges;\n switch (type) {\n case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useSelect.stateChangeTypes.ToggleButtonKeyDownSpaceButton:\n case useSelect.stateChangeTypes.ItemClick:\n return {\n ...changes,\n isOpen: true,\n highlightedIndex: state.highlightedIndex,\n };\n case useSelect.stateChangeTypes.ToggleButtonBlur:\n return {\n ...changes,\n selectedItem: state.selectedItem,\n };\n }\n return changes;\n },\n }\n : {}),\n });\n\n const hasError = status === 'error';\n\n const handleClear = (): void => {\n onClear();\n reset();\n };\n\n const singleSelectValue = useMemo(\n (): ReactNode => getDisplayedValue(selectedItemValues[0]) || placeholder,\n [getDisplayedValue, selectedItemValues, placeholder],\n );\n\n return (\n <RadixPopover.Root open={isOpen}>\n <RadixPopover.Anchor asChild onMouseDown={onMouseDown} onFocus={onFocus} onBlur={onBlur}>\n <div\n ref={triggerRef}\n className={styles.root}\n data-status={hasError ? 'error' : status}\n data-disabled={disabled}\n data-empty={selectedItemValues.length === 0}\n data-test-id={dataTestId}\n {...(disabled\n ? {}\n : // eslint-disable-next-line react-hooks/refs\n getToggleButtonProps({\n 'aria-label': 'aria-label' in props ? props['aria-label'] : undefined,\n 'aria-describedby': selectionDescription ? selectionDescriptionId : undefined,\n ref: triggerRef,\n }))}\n >\n {selectionDescription ? (\n <span id={selectionDescriptionId} className={styles.srOnly}>\n {selectionDescription}\n </span>\n ) : null}\n {multiple ? (\n <div className={styles.selectedValue}>\n <CollapsibleBadges\n items={badgeItems}\n placeholder={placeholder}\n onDismiss={(value) => {\n onItemSelect(value);\n internalRef.current?.focus();\n }}\n selectedCount={selectedItemValues.length}\n />\n </div>\n ) : (\n <span className={styles.selectedValue}>{singleSelectValue}</span>\n )}\n {inputSlots}\n {clearButton ? <ClearButton onClear={handleClear}>{clearButton}</ClearButton> : null}\n <div className={styles.icons}>\n <IconCaretDown size={16} className={styles.caret} />\n <StatusIcons status={status} hasError={hasError} dataTestId={dataTestId} />\n </div>\n </div>\n </RadixPopover.Anchor>\n\n <SelectMenu\n align={alignMenu}\n side={side}\n highlightedIndex={highlightedIndex}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n selectedItemValues={selectedItemValues}\n hasInteractedSinceOpening={hasInteractedSinceOpening}\n viewportCollisionPadding={viewportCollisionPadding}\n onEscapeKeyDown={onEscapeKeyDown}\n >\n {menuSlots}\n </SelectMenu>\n </RadixPopover.Root>\n );\n};\nSelectBaseInput.displayName = 'Select';\n\nexport const SelectBase = forwardRef<HTMLDivElement, SelectBaseProps>(SelectBaseInput);\n"],"names":["SelectBaseInput","children","selectedItemValues","onItemSelect","onClear","placeholder","status","disabled","alignMenu","side","id","showStringValue","dataTestId","viewportCollisionPadding","onEscapeKeyDown","multiple","props","forwardedRef","internalRef","useRef","triggerRef","useCallback","node","inputSlots","menuSlots","items","clearButton","getItemByValue","useSelectData","onMouseDown","onFocus","onBlur","useFocusRing","selectionDescriptionId","selectionDescription","useSelectionDescription","badgeItems","useBadgeItems","hasInteractedSinceOpening","setHasInteractedSinceOpening","useState","getDisplayedValue","itemValue","selectedItem","getToggleButtonProps","getMenuProps","getItemProps","reset","isOpen","highlightedIndex","useSelect","item","state","actionAndChanges","changes","type","hasError","handleClear","singleSelectValue","useMemo","jsxs","RadixPopover","jsx","styles","CollapsibleBadges","value","_a","ClearButton","IconCaretDown","StatusIcons","SelectMenu","SelectBase","forwardRef"],"mappings":"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"}
@@ -1,74 +1,48 @@
1
- import { jsx as E } from "react/jsx-runtime";
2
- import { useState as S, useMemo as b, Children as V, isValidElement as C, cloneElement as w, useCallback as B, useEffect as x } from "react";
3
- import { SelectClear as F } from "./fondue-components108.js";
4
- import { ForwardedRefSelectItem as L } from "./fondue-components75.js";
5
- import { ForwardedRefSelectSlot as y } from "./fondue-components76.js";
6
- import { getSelectOptionValue as I } from "./fondue-components109.js";
7
- const d = (n, s) => {
8
- const [e, r] = S(!1), [m, i] = S(null), [l, f] = S({
9
- menuComponents: [],
10
- items: []
11
- });
12
- return x(() => {
13
- i(null), s || f({
14
- menuComponents: [],
15
- items: []
16
- }), s && (r(!0), s(n).then((u) => {
17
- f({
18
- menuComponents: u.map((o) => /* @__PURE__ */ E(L, { label: o.label, value: o.value, children: o.content ? o.content : o.label }, o.value)),
19
- items: u.map((o) => ({ value: o.value, label: o.label, children: o.content }))
20
- }), r(!1);
21
- }).catch((u) => {
22
- i(u), r(!1);
23
- }));
24
- }, [n, s]), { isLoading: e, error: m, menuComponents: l.menuComponents, items: l.items };
25
- }, g = (n) => {
26
- const s = [];
27
- return V.forEach(n, (e) => {
28
- if (C(e) && e.type === L)
29
- s.push(I(e.props));
30
- else if (C(e) && e.props.children) {
31
- const r = g(e.props.children);
32
- for (const m of r)
33
- s.push(m);
34
- }
35
- }), s;
36
- }, q = (n, s) => {
37
- const [e, r] = S(""), { inputSlots: m, menuSlots: i, itemValues: l, clearButton: f } = b(() => {
38
- const a = [], p = [];
39
- let v;
40
- V.toArray(n).some(
41
- (t) => C(t) && t.type === y
42
- ) ? V.forEach(n, (t) => {
43
- C(t) && t.type === y && (t.props.name === "menu" ? p.push(t.props.children) : t.props.name === "left" || t.props.name === "right" ? a.push(t) : t.props.name === "clear" && (t.props.children ? v = t : v = w(t, { children: /* @__PURE__ */ E(F, {}) })));
44
- }) : p.push(n);
45
- const R = g(p);
46
- return { inputSlots: a, menuSlots: p, itemValues: R, clearButton: v };
47
- }, [n]), u = b(
48
- () => l.filter(
49
- (a) => e === "" || a.label.toLowerCase().includes(e.toLowerCase())
50
- ),
51
- [l, e]
52
- ), o = B(
53
- (a) => a !== void 0 ? l.find((p) => p.value === a) : void 0,
54
- [l]
55
- ), c = d(e, s);
56
- return {
57
- items: [...u, ...c.items],
58
- menuSlots: [...i, ...c.menuComponents],
59
- filterText: e,
60
- inputSlots: m,
61
- clearButton: f,
62
- setFilterText: r,
63
- getItemByValue: o,
64
- asyncItemStatus: {
65
- isLoading: c.isLoading,
66
- error: c.error
67
- }
68
- };
1
+ const c = "_root_13ciu_7", e = "_selectedValue_13ciu_63", _ = "_input_13ciu_80", o = "_slot_13ciu_106", t = "_clear_13ciu_156", n = "_clearIcon_13ciu_163", u = "_icons_13ciu_167", i = "_caret_13ciu_173", r = "_iconSuccess_13ciu_201", s = "_iconError_13ciu_207", a = "_menu_13ciu_213", l = "_portal_13ciu_236", p = "_item_13ciu_252", g = "_checkmarkIcon_13ciu_281", m = "_itemValue_13ciu_287", d = "_group_13ciu_301", I = "_groupHeading_13ciu_312", b = "_badgesContainer_13ciu_324", k = "_badgeWrapper_13ciu_336", S = "_srOnly_13ciu_345", V = "_multiSelectInput_13ciu_357", y = {
2
+ root: c,
3
+ selectedValue: e,
4
+ input: _,
5
+ slot: o,
6
+ clear: t,
7
+ clearIcon: n,
8
+ icons: u,
9
+ caret: i,
10
+ iconSuccess: r,
11
+ iconError: s,
12
+ menu: a,
13
+ portal: l,
14
+ item: p,
15
+ checkmarkIcon: g,
16
+ itemValue: m,
17
+ group: d,
18
+ groupHeading: I,
19
+ badgesContainer: b,
20
+ badgeWrapper: k,
21
+ srOnly: S,
22
+ multiSelectInput: V
69
23
  };
70
24
  export {
71
- g as getRecursiveOptionValues,
72
- q as useSelectData
25
+ k as badgeWrapper,
26
+ b as badgesContainer,
27
+ i as caret,
28
+ g as checkmarkIcon,
29
+ t as clear,
30
+ n as clearIcon,
31
+ y as default,
32
+ d as group,
33
+ I as groupHeading,
34
+ s as iconError,
35
+ r as iconSuccess,
36
+ u as icons,
37
+ _ as input,
38
+ p as item,
39
+ m as itemValue,
40
+ a as menu,
41
+ V as multiSelectInput,
42
+ l as portal,
43
+ c as root,
44
+ e as selectedValue,
45
+ o as slot,
46
+ S as srOnly
73
47
  };
74
48
  //# sourceMappingURL=fondue-components102.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components102.js","sources":["../src/components/Select/hooks/useSelectData.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n Children,\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\n\nimport { SelectClear } from '../components/SelectClear';\nimport { ForwardedRefSelectItem, type SelectItemProps } from '../components/SelectItem';\nimport { ForwardedRefSelectSlot, type SelectSlotProps } from '../components/SelectSlot';\nimport { getSelectOptionValue } from '../utils';\n\nexport type SelectItemType = {\n value: string;\n label: string;\n};\n\nexport type AsyncItem = { label: string; value: string; content?: ReactNode };\n\nexport type AsyncItemsFetcher = (filterText: string) => Promise<AsyncItem[]>;\n\nconst useAsyncItems = (filterText: string, getAsyncItems?: AsyncItemsFetcher) => {\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [asyncResult, setAsyncResult] = useState<{\n menuComponents: ReactNode[];\n items: { value: string; label: string; children?: ReactNode }[];\n }>({\n menuComponents: [],\n items: [],\n });\n\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setError(null);\n if (!getAsyncItems) {\n setAsyncResult({\n menuComponents: [],\n items: [],\n });\n }\n\n if (getAsyncItems) {\n setIsLoading(true);\n getAsyncItems(filterText)\n .then((items) => {\n setAsyncResult({\n menuComponents: items.map((item) => (\n <ForwardedRefSelectItem key={item.value} label={item.label} value={item.value}>\n {item.content ? item.content : item.label}\n </ForwardedRefSelectItem>\n )),\n items: items.map((item) => ({ value: item.value, label: item.label, children: item.content })),\n });\n setIsLoading(false);\n })\n .catch((error: Error) => {\n setError(error);\n setIsLoading(false);\n });\n }\n }, [filterText, getAsyncItems]);\n\n return { isLoading, error, menuComponents: asyncResult.menuComponents, items: asyncResult.items };\n};\n\n/**\n * Recursively extracts option values from children.\n * This function traverses through the React component tree and collects all SelectItem values.\n *\n * @param {ReactNode} children - The React children to extract values from.\n * @returns {SelectItemType[]} An array of SelectItemType objects.\n *\n * @example\n * const options = (\n * <SelectItem value=\"1\">Option 1</SelectItem>\n * <SelectItem value=\"2\">Option 2</SelectItem>\n * );\n * const values = getRecursiveOptionValues(options);\n * // Returns: [{ value: '1', label: 'Option 1' }, { value: '2', label: 'Option 2' }]\n */\nexport const getRecursiveOptionValues = (\n children: ReactNode,\n): { value: string; label: string; children?: ReactNode }[] => {\n const values: { value: string; label: string }[] = [];\n Children.forEach(children, (child) => {\n if (isValidElement<SelectItemProps>(child) && child.type === ForwardedRefSelectItem) {\n values.push(getSelectOptionValue(child.props));\n } else if (isValidElement<{ children: ReactNode }>(child) && child.props.children) {\n const optionValues = getRecursiveOptionValues(child.props.children);\n for (const optionValue of optionValues) {\n values.push(optionValue);\n }\n }\n });\n return values;\n};\n\n/**\n * Custom hook for managing select data and filtering.\n *\n * @param {ReactNode} children - The React children to process, typically SelectItem components.\n * @param {AsyncItemsFetcher} [getAsyncItems] - Optional function to fetch items asynchronously based on filter text.\n * @returns {Object} An object containing the processed data.\n */\nexport const useSelectData = (children: ReactNode, getAsyncItems?: AsyncItemsFetcher) => {\n const [filterText, setFilterText] = useState('');\n // eslint-disable-next-line react-hooks/preserve-manual-memoization\n const { inputSlots, menuSlots, itemValues, clearButton } = useMemo(() => {\n const inputSlots: ReactNode[] = [];\n const menuSlots: ReactNode[] = [];\n let clearButton: ReactNode;\n\n const hasSlots = Children.toArray(children).some(\n (child) => isValidElement<SelectSlotProps>(child) && child.type === ForwardedRefSelectSlot,\n );\n\n if (hasSlots) {\n Children.forEach(children, (child) => {\n if (isValidElement<SelectSlotProps>(child) && child.type === ForwardedRefSelectSlot) {\n if (child.props.name === 'menu') {\n menuSlots.push(child.props.children);\n } else if (child.props.name === 'left' || child.props.name === 'right') {\n inputSlots.push(child);\n } else if (child.props.name === 'clear') {\n if (child.props.children) {\n clearButton = child;\n } else {\n clearButton = cloneElement(child, { children: <SelectClear /> });\n }\n }\n }\n });\n } else {\n menuSlots.push(children);\n }\n\n const itemValues = getRecursiveOptionValues(menuSlots);\n\n return { inputSlots, menuSlots, itemValues, clearButton };\n }, [children]);\n\n const items = useMemo(\n () =>\n itemValues.filter(\n (item) => filterText === '' || item.label.toLowerCase().includes(filterText.toLowerCase()),\n ),\n [itemValues, filterText],\n );\n\n const getItemByValue = useCallback(\n (value?: string | null) => (value !== undefined ? itemValues.find((item) => item.value === value) : undefined),\n [itemValues],\n );\n\n const asyncItems = useAsyncItems(filterText, getAsyncItems);\n\n return {\n items: [...items, ...asyncItems.items],\n menuSlots: [...menuSlots, ...asyncItems.menuComponents],\n filterText,\n inputSlots,\n clearButton,\n setFilterText,\n getItemByValue,\n asyncItemStatus: {\n isLoading: asyncItems.isLoading,\n error: asyncItems.error,\n },\n };\n};\n"],"names":["useAsyncItems","filterText","getAsyncItems","isLoading","setIsLoading","useState","error","setError","asyncResult","setAsyncResult","useEffect","items","item","jsx","ForwardedRefSelectItem","getRecursiveOptionValues","children","values","Children","child","isValidElement","getSelectOptionValue","optionValues","optionValue","useSelectData","setFilterText","inputSlots","menuSlots","itemValues","clearButton","useMemo","ForwardedRefSelectSlot","cloneElement","SelectClear","getItemByValue","useCallback","value","asyncItems"],"mappings":"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"}
1
+ {"version":3,"file":"fondue-components102.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,18 +1,17 @@
1
- import { useId as u, useMemo as f } from "react";
2
- import { useTranslation as D } from "./fondue-components39.js";
3
- const g = (t, n, r) => {
4
- const { t: i } = D(), s = u(), e = f(() => {
5
- if (!t || n.length === 0)
6
- return "";
7
- const p = n.map((c) => {
8
- const o = r(c);
9
- return (o == null ? void 0 : o.label) ?? c;
10
- }).join(", ");
11
- return i("Select_selectedCount", { count: n.length.toString(), items: p });
12
- }, [t, n, r, i]);
13
- return { selectionDescriptionId: s, selectionDescription: e };
14
- };
1
+ import { format as o } from "date-fns";
2
+ import { transformDateRangeToPickerDateRange as i, transformDatePickerDateToDate as e } from "./fondue-components118.js";
3
+ const y = (r) => !!(r && "from" in r && "to" in r), M = (r) => {
4
+ const t = e(r);
5
+ if (t)
6
+ return o(t, "MMMM d, yyyy");
7
+ }, a = (r) => {
8
+ const t = i(r);
9
+ if (!(t != null && t.from) || !(t != null && t.to))
10
+ return;
11
+ const n = t.from.getFullYear() === t.to.getFullYear();
12
+ return n && t.from.getMonth() === t.to.getMonth() ? `${o(t.from, "MMM d")}–${o(t.to, "d, yyyy")}` : n ? `${o(t.from, "MMM d")}–${o(t.to, "MMM d, yyyy")}` : `${o(t.from, "MMM d, yyyy")}–${o(t.to, "MMM d, yyyy")}`;
13
+ }, g = (r) => y(r) ? a(r) : M(r);
15
14
  export {
16
- g as useSelectionDescription
15
+ g as getDateDisplayString
17
16
  };
18
17
  //# sourceMappingURL=fondue-components103.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components103.js","sources":["../src/components/Select/hooks/useSelectionDescription.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { useId, useMemo } from 'react';\n\nimport { useTranslation } from '#/hooks/useTranslation';\n\ntype SelectItemLike = {\n value: string;\n label: string;\n};\n\ntype SelectionDescription = {\n /** The unique ID for the SR description element. */\n selectionDescriptionId: string;\n /** The description text for screen readers (empty string when not applicable). */\n selectionDescription: string;\n};\n\nexport const useSelectionDescription = (\n isMultiple: boolean,\n selectedItemValues: string[],\n getItemByValue: (value?: string) => SelectItemLike | undefined,\n): SelectionDescription => {\n const { t } = useTranslation();\n const selectionDescriptionId = useId();\n\n const selectionDescription = useMemo((): string => {\n if (!isMultiple || selectedItemValues.length === 0) {\n return '';\n }\n const labels = selectedItemValues\n .map((value) => {\n const item = getItemByValue(value);\n return item?.label ?? value;\n })\n .join(', ');\n return t('Select_selectedCount', { count: selectedItemValues.length.toString(), items: labels });\n }, [isMultiple, selectedItemValues, getItemByValue, t]);\n\n return { selectionDescriptionId, selectionDescription };\n};\n"],"names":["useSelectionDescription","isMultiple","selectedItemValues","getItemByValue","t","useTranslation","selectionDescriptionId","useId","selectionDescription","useMemo","labels","value","item"],"mappings":";;AAkBO,MAAMA,IAA0B,CACnCC,GACAC,GACAC,MACuB;AACvB,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAyBC,EAAA,GAEzBC,IAAuBC,EAAQ,MAAc;AAC/C,QAAI,CAACR,KAAcC,EAAmB,WAAW;AAC7C,aAAO;AAEX,UAAMQ,IAASR,EACV,IAAI,CAACS,MAAU;AACZ,YAAMC,IAAOT,EAAeQ,CAAK;AACjC,cAAOC,KAAA,gBAAAA,EAAM,UAASD;AAAA,IAC1B,CAAC,EACA,KAAK,IAAI;AACd,WAAOP,EAAE,wBAAwB,EAAE,OAAOF,EAAmB,OAAO,SAAA,GAAY,OAAOQ,GAAQ;AAAA,EACnG,GAAG,CAACT,GAAYC,GAAoBC,GAAgBC,CAAC,CAAC;AAEtD,SAAO,EAAE,wBAAAE,GAAwB,sBAAAE,EAAA;AACrC;"}
1
+ {"version":3,"file":"fondue-components103.js","sources":["../src/components/DatePicker/helpers/dateDisplayFormatter.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { format } from 'date-fns';\n\nimport { type DatePickerDate, type DatePickerDateRange } from '../types';\n\nimport { transformDateRangeToPickerDateRange, transformDatePickerDateToDate } from './dateTransformer';\n\nconst isDateRange = (selected?: DatePickerDateRange | DatePickerDate): selected is DatePickerDateRange => {\n return Boolean(selected && 'from' in selected && 'to' in selected);\n};\n\nconst getSingleDateDisplayString = (selected?: DatePickerDate): string | undefined => {\n const singleDate = transformDatePickerDateToDate(selected);\n if (!singleDate) {\n return undefined;\n }\n return format(singleDate, 'MMMM d, yyyy');\n};\n\nconst getDateRangeDisplayString = (selected?: DatePickerDateRange): string | undefined => {\n const dateRange = transformDateRangeToPickerDateRange(selected);\n if (!dateRange?.from || !dateRange?.to) {\n return undefined;\n }\n\n const isSameYear = dateRange.from.getFullYear() === dateRange.to.getFullYear();\n\n const isSameMonth = isSameYear && dateRange.from.getMonth() === dateRange.to.getMonth();\n\n if (isSameMonth) {\n return `${format(dateRange.from, 'MMM d')}\\u2013${format(dateRange.to, 'd, yyyy')}`;\n }\n\n if (isSameYear) {\n return `${format(dateRange.from, 'MMM d')}\\u2013${format(dateRange.to, 'MMM d, yyyy')}`;\n }\n\n return `${format(dateRange.from, 'MMM d, yyyy')}\\u2013${format(dateRange.to, 'MMM d, yyyy')}`;\n};\n\nexport const getDateDisplayString = (selected?: DatePickerDateRange | DatePickerDate): string | undefined => {\n if (isDateRange(selected)) {\n return getDateRangeDisplayString(selected);\n }\n return getSingleDateDisplayString(selected);\n};\n"],"names":["isDateRange","selected","getSingleDateDisplayString","singleDate","transformDatePickerDateToDate","format","getDateRangeDisplayString","dateRange","transformDateRangeToPickerDateRange","isSameYear","getDateDisplayString"],"mappings":";;AAQA,MAAMA,IAAc,CAACC,MACV,GAAQA,KAAY,UAAUA,KAAY,QAAQA,IAGvDC,IAA6B,CAACD,MAAkD;AAClF,QAAME,IAAaC,EAA8BH,CAAQ;AACzD,MAAKE;AAGL,WAAOE,EAAOF,GAAY,cAAc;AAC5C,GAEMG,IAA4B,CAACL,MAAuD;AACtF,QAAMM,IAAYC,EAAoCP,CAAQ;AAC9D,MAAI,EAACM,KAAA,QAAAA,EAAW,SAAQ,EAACA,KAAA,QAAAA,EAAW;AAChC;AAGJ,QAAME,IAAaF,EAAU,KAAK,kBAAkBA,EAAU,GAAG,YAAA;AAIjE,SAFoBE,KAAcF,EAAU,KAAK,eAAeA,EAAU,GAAG,SAAA,IAGlE,GAAGF,EAAOE,EAAU,MAAM,OAAO,CAAC,IAASF,EAAOE,EAAU,IAAI,SAAS,CAAC,KAGjFE,IACO,GAAGJ,EAAOE,EAAU,MAAM,OAAO,CAAC,IAASF,EAAOE,EAAU,IAAI,aAAa,CAAC,KAGlF,GAAGF,EAAOE,EAAU,MAAM,aAAa,CAAC,IAASF,EAAOE,EAAU,IAAI,aAAa,CAAC;AAC/F,GAEaG,IAAuB,CAACT,MAC7BD,EAAYC,CAAQ,IACbK,EAA0BL,CAAQ,IAEtCC,EAA2BD,CAAQ;"}
@@ -1,10 +1,18 @@
1
- import { jsx as r } from "react/jsx-runtime";
2
- import { Slot as e } from "@radix-ui/react-slot";
3
- import a from "./fondue-components99.js";
4
- const m = ({ children: o, onClear: t }) => /* @__PURE__ */ r(e, { onClick: (l) => {
5
- l.stopPropagation(), t();
6
- }, className: a.clear, role: "button", "aria-label": "Clear selection", children: o });
1
+ const t = "_root_v3an7_5", a = "_caret_v3an7_44", o = "_dateName_v3an7_59", n = "_button_v3an7_80", c = "_actions_v3an7_93", _ = "_clearIcon_v3an7_101", e = {
2
+ root: t,
3
+ caret: a,
4
+ dateName: o,
5
+ button: n,
6
+ actions: c,
7
+ clearIcon: _
8
+ };
7
9
  export {
8
- m as ClearButton
10
+ c as actions,
11
+ n as button,
12
+ a as caret,
13
+ _ as clearIcon,
14
+ o as dateName,
15
+ e as default,
16
+ t as root
9
17
  };
10
18
  //# sourceMappingURL=fondue-components104.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fondue-components104.js","sources":["../src/components/Select/components/ClearButton.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { Slot as RadixSlot } from '@radix-ui/react-slot';\nimport { type MouseEvent, type ReactNode } from 'react';\n\nimport styles from '../styles/select.module.scss';\n\ntype ClearButtonProps = {\n /** The clear button element to render inside the slot. */\n children: ReactNode;\n /** Callback fired when the clear button is clicked. */\n onClear: () => void;\n};\n\nexport const ClearButton = ({ children, onClear }: ClearButtonProps): ReactNode => {\n const handleClick = (event: MouseEvent): void => {\n event.stopPropagation();\n onClear();\n };\n\n return (\n <RadixSlot onClick={handleClick} className={styles.clear} role=\"button\" aria-label=\"Clear selection\">\n {children}\n </RadixSlot>\n );\n};\n"],"names":["ClearButton","children","onClear","jsx","RadixSlot","event","styles"],"mappings":";;;AAcO,MAAMA,IAAc,CAAC,EAAE,UAAAC,GAAU,SAAAC,QAOhC,gBAAAC,EAACC,GAAA,EAAU,SANK,CAACC,MAA4B;AAC7C,EAAAA,EAAM,gBAAA,GACNH,EAAA;AACJ,GAGqC,WAAWI,EAAO,OAAO,MAAK,UAAS,cAAW,mBAC9E,UAAAL,EAAA,CACL;"}
1
+ {"version":3,"file":"fondue-components104.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}