@expcat/tigercat-react 2.0.0-rc.2 → 2.0.4

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 (80) hide show
  1. package/dist/{chunk-JTFNGXOC.mjs → chunk-2ENQZECC.mjs} +53 -31
  2. package/dist/{chunk-O5RAMCBV.mjs → chunk-2JYJPNW3.mjs} +1 -1
  3. package/dist/{chunk-POP3TS4Q.mjs → chunk-2WGEHH5A.mjs} +57 -29
  4. package/dist/{chunk-K7MYQISG.mjs → chunk-54HN5BXW.mjs} +10 -4
  5. package/dist/chunk-5CKMYMTS.mjs +292 -0
  6. package/dist/{chunk-Y7K27DVV.mjs → chunk-6H5Y7Y6E.mjs} +42 -28
  7. package/dist/chunk-6MGQAJ62.mjs +203 -0
  8. package/dist/{chunk-TO2URY7X.mjs → chunk-7AFRHC7P.mjs} +90 -61
  9. package/dist/{chunk-MGQWVJHX.mjs → chunk-ALSOPYM5.mjs} +69 -62
  10. package/dist/{chunk-N6JNLJIN.mjs → chunk-BOGOQ44C.mjs} +6 -2
  11. package/dist/{chunk-Q327ESD2.mjs → chunk-BUXHI6UK.mjs} +17 -38
  12. package/dist/{chunk-TORX7SG4.mjs → chunk-CC7IOSNI.mjs} +10 -4
  13. package/dist/{chunk-OVE2ZUJJ.mjs → chunk-D33BIMGK.mjs} +1 -1
  14. package/dist/{chunk-PYDWF4ED.mjs → chunk-D3KP72UC.mjs} +34 -9
  15. package/dist/{chunk-ZEP7I6WB.mjs → chunk-DPWRXXXW.mjs} +16 -8
  16. package/dist/{chunk-44CQTGAN.mjs → chunk-E7OTDBI6.mjs} +2 -2
  17. package/dist/{chunk-DJ4PSDQS.mjs → chunk-FYINJRYN.mjs} +2 -2
  18. package/dist/{chunk-KFPQ6DIH.mjs → chunk-GV4F6X3C.mjs} +29 -25
  19. package/dist/chunk-HKAZXG74.mjs +308 -0
  20. package/dist/{chunk-QWUDJC6K.mjs → chunk-HOYBHB7B.mjs} +38 -17
  21. package/dist/{chunk-IZYFETUS.mjs → chunk-HS6KUPTI.mjs} +2 -2
  22. package/dist/{chunk-EKESN747.mjs → chunk-HSBN5MLS.mjs} +1 -1
  23. package/dist/{chunk-AJJJ6HWC.mjs → chunk-K4GIKSZE.mjs} +1 -1
  24. package/dist/{chunk-2UOGBS3C.mjs → chunk-KP6DEYWB.mjs} +27 -6
  25. package/dist/{chunk-PAN256RW.mjs → chunk-KVCI2346.mjs} +59 -55
  26. package/dist/{chunk-3O2WHF3U.mjs → chunk-NCHUEGUW.mjs} +2 -2
  27. package/dist/{chunk-VD55SSP7.mjs → chunk-PD6Q36OO.mjs} +14 -6
  28. package/dist/{chunk-5RVLBNLI.mjs → chunk-RJPNBYK5.mjs} +4 -4
  29. package/dist/{chunk-HXD7KMRP.mjs → chunk-UCBW5RJN.mjs} +31 -2
  30. package/dist/{chunk-5IHOOP5A.mjs → chunk-UD4DTVJZ.mjs} +64 -79
  31. package/dist/{chunk-A6JNS35U.mjs → chunk-UT5BV2VO.mjs} +2 -2
  32. package/dist/{chunk-K6GJMKJR.mjs → chunk-V6P7ZK6O.mjs} +3 -3
  33. package/dist/{chunk-4XGO3OSE.mjs → chunk-XE4YFBOZ.mjs} +12 -17
  34. package/dist/{chunk-YI7NQWUV.mjs → chunk-YI6YWH66.mjs} +14 -30
  35. package/dist/{chunk-SHCBCM2W.mjs → chunk-YIB6ZXZF.mjs} +142 -105
  36. package/dist/{chunk-SZBYEGKU.mjs → chunk-ZCGIZOMT.mjs} +1 -1
  37. package/dist/{chunk-S7IB6YST.mjs → chunk-ZG56T75O.mjs} +25 -40
  38. package/dist/{chunk-44BPUG24.mjs → chunk-ZH5ZBLAN.mjs} +38 -16
  39. package/dist/components/ActivityFeed.mjs +3 -3
  40. package/dist/components/AreaChart.mjs +1 -1
  41. package/dist/components/AutoComplete.mjs +2 -1
  42. package/dist/components/BarChart.mjs +1 -1
  43. package/dist/components/Cascader.mjs +2 -1
  44. package/dist/components/ColorPicker.mjs +2 -1
  45. package/dist/components/CommentThread.mjs +1 -1
  46. package/dist/components/CropUpload.mjs +4 -4
  47. package/dist/components/DataExport.mjs +3 -3
  48. package/dist/components/DataTableWithToolbar.mjs +6 -6
  49. package/dist/components/DatePicker.mjs +2 -1
  50. package/dist/components/Drawer.mjs +2 -2
  51. package/dist/components/Dropdown.mjs +2 -2
  52. package/dist/components/FormItem.mjs +2 -1
  53. package/dist/components/Image.mjs +5 -5
  54. package/dist/components/ImageCropper.mjs +1 -1
  55. package/dist/components/ImageGroup.mjs +3 -3
  56. package/dist/components/ImagePreview.mjs +2 -2
  57. package/dist/components/LineChart.mjs +1 -1
  58. package/dist/components/Loading.mjs +2 -2
  59. package/dist/components/Mentions.mjs +2 -1
  60. package/dist/components/Menu.mjs +2 -2
  61. package/dist/components/Modal.mjs +2 -2
  62. package/dist/components/NotificationCenter.mjs +3 -3
  63. package/dist/components/Popconfirm.mjs +3 -3
  64. package/dist/components/Popover.mjs +3 -3
  65. package/dist/components/ScatterChart.mjs +1 -1
  66. package/dist/components/Select.mjs +2 -1
  67. package/dist/components/Spotlight.mjs +2 -2
  68. package/dist/components/Table.mjs +3 -2
  69. package/dist/components/TimePicker.mjs +2 -1
  70. package/dist/components/Tooltip.mjs +3 -3
  71. package/dist/components/Tour.mjs +2 -2
  72. package/dist/components/TreeSelect.mjs +2 -1
  73. package/dist/components/Upload.mjs +1 -1
  74. package/dist/components/VirtualTable.mjs +1 -1
  75. package/dist/index.d.mts +1 -1
  76. package/dist/index.mjs +4 -2
  77. package/package.json +2 -2
  78. package/dist/chunk-KVARQQAG.mjs +0 -181
  79. package/dist/chunk-SEWNVIHH.mjs +0 -153
  80. package/dist/chunk-XIVU7TWX.mjs +0 -305
@@ -1,3 +1,7 @@
1
+ import {
2
+ renderOverlayPortal,
3
+ useAnchoredOverlay
4
+ } from "./chunk-HKAZXG74.mjs";
1
5
  import {
2
6
  useTigerConfig
3
7
  } from "./chunk-YSIXURBW.mjs";
@@ -85,8 +89,22 @@ var Cascader = (props) => {
85
89
  const [uncontrolledSearchValue, setUncontrolledSearchValue] = useState(defaultSearchValue);
86
90
  const searchQuery = searchValue ?? uncontrolledSearchValue;
87
91
  const [activePath, setActivePath] = useState([]);
92
+ const wasOpenRef = useRef(false);
88
93
  const triggerRef = useRef(null);
89
94
  const dropdownRef = useRef(null);
95
+ const overlay = useAnchoredOverlay({
96
+ enabled: isOpen,
97
+ referenceRef: triggerRef,
98
+ floatingRef: dropdownRef,
99
+ placement: "bottom-start",
100
+ offset: 4,
101
+ layout: "fullscreen-sm",
102
+ matchReferenceWidth: true,
103
+ dismissOnOutside: true,
104
+ dismissOnEscape: true,
105
+ restoreFocusOnDismiss: true,
106
+ onDismiss: () => setIsOpen(false)
107
+ });
90
108
  const displayLabel = useMemo(
91
109
  () => getCascaderDisplayLabel(options, value, separator),
92
110
  [options, value, separator]
@@ -105,29 +123,25 @@ var Cascader = (props) => {
105
123
  () => classNames(getCascaderTriggerClasses(size, disabled, isOpen), className),
106
124
  [size, disabled, isOpen, className]
107
125
  );
108
- useEffect(() => {
109
- if (isOpen) {
110
- setActivePath(value ? [...value] : []);
111
- updateSearchValue("");
112
- }
113
- }, [isOpen, value]);
114
- function updateSearchValue(value2) {
115
- if (searchValue === void 0) {
116
- setUncontrolledSearchValue(value2);
117
- }
118
- onSearchChange?.(value2);
119
- }
120
- useEffect(() => {
121
- if (!isOpen) return;
122
- function handleClick(e) {
123
- const target = e.target;
124
- if (triggerRef.current && !triggerRef.current.contains(target) && dropdownRef.current && !dropdownRef.current.contains(target)) {
125
- setIsOpen(false);
126
+ const updateSearchValue = useCallback(
127
+ (nextValue) => {
128
+ if (searchValue === void 0) {
129
+ setUncontrolledSearchValue(nextValue);
126
130
  }
131
+ onSearchChange?.(nextValue);
132
+ },
133
+ [onSearchChange, searchValue]
134
+ );
135
+ useEffect(() => {
136
+ if (!isOpen) {
137
+ wasOpenRef.current = false;
138
+ return;
127
139
  }
128
- document.addEventListener("click", handleClick, true);
129
- return () => document.removeEventListener("click", handleClick, true);
130
- }, [isOpen]);
140
+ if (wasOpenRef.current) return;
141
+ wasOpenRef.current = true;
142
+ setActivePath(value ? [...value] : []);
143
+ updateSearchValue("");
144
+ }, [isOpen, updateSearchValue, value]);
131
145
  const toggleOpen = useCallback(() => {
132
146
  if (disabled) return;
133
147
  setIsOpen((prev) => !prev);
@@ -248,98 +262,121 @@ var Cascader = (props) => {
248
262
  ]
249
263
  }
250
264
  ),
251
- isOpen && /* @__PURE__ */ jsxs(
252
- "div",
253
- {
254
- ref: dropdownRef,
255
- className: classNames(cascaderDropdownClasses, isSearchMode && "flex-col"),
256
- children: [
257
- searchable && /* @__PURE__ */ jsx(
258
- "input",
259
- {
260
- type: "text",
261
- className: cascaderSearchInputClasses,
262
- placeholder: resolveLocaleText("Search...", mergedLocale?.common?.searchPlaceholder),
263
- value: searchQuery,
264
- onChange: (e) => updateSearchValue(e.target.value),
265
- "aria-label": resolveLocaleText(
266
- "Search options",
267
- mergedLocale?.common?.searchPlaceholder
268
- )
269
- }
265
+ renderOverlayPortal(
266
+ isOpen ? /* @__PURE__ */ jsxs(
267
+ "div",
268
+ {
269
+ ref: dropdownRef,
270
+ className: classNames(
271
+ cascaderDropdownClasses,
272
+ isSearchMode && "flex-col",
273
+ overlay.floatingClasses
270
274
  ),
271
- isSearchMode ? (
272
- // Search results
273
- searchResults.length === 0 ? /* @__PURE__ */ jsx("div", { className: cascaderEmptyStateClasses, children: resolveLocaleText("No results found", emptyText, mergedLocale?.common?.emptyText) }) : /* @__PURE__ */ jsx("div", { className: "max-h-64 overflow-auto", ...getPickerListboxAria({ id: listboxId }), children: searchResults.map((item) => /* @__PURE__ */ jsx(
274
- "div",
275
+ style: overlay.floatingStyles,
276
+ "data-positioned": overlay.positioned,
277
+ children: [
278
+ searchable && /* @__PURE__ */ jsx(
279
+ "input",
275
280
  {
276
- className: classNames(
277
- cascaderSearchResultClasses,
278
- item.disabled && "opacity-50 cursor-not-allowed"
281
+ type: "text",
282
+ className: cascaderSearchInputClasses,
283
+ placeholder: resolveLocaleText(
284
+ "Search...",
285
+ mergedLocale?.common?.searchPlaceholder
279
286
  ),
280
- ...getPickerOptionAria({
281
- selected: value?.join(",") === item.valuePath.join(","),
282
- disabled: item.disabled
283
- }),
284
- onClick: () => handleSearchResultClick(item.valuePath, item.disabled),
285
- children: typeof searchable === "object" && searchable.render ? searchable.render(searchQuery, item.path) : item.label
286
- },
287
- item.valuePath.join(",")
288
- )) })
289
- ) : (
290
- // Cascading columns
291
- /* @__PURE__ */ jsx("div", { className: "flex", children: columns.map((col, colIndex) => /* @__PURE__ */ jsx(
292
- "div",
293
- {
294
- className: cascaderColumnClasses,
295
- ...getPickerListboxAria({
296
- id: colIndex === 0 ? listboxId : void 0,
297
- label: `Level ${colIndex + 1}`
298
- }),
299
- "aria-label": `Level ${colIndex + 1}`,
300
- children: col.options.map((option) => {
301
- const isSelected = col.selectedValue === option.value;
302
- const hasChildren = isCascaderOptionExpandable(option);
303
- return /* @__PURE__ */ jsxs(
287
+ value: searchQuery,
288
+ onChange: (e) => updateSearchValue(e.target.value),
289
+ "aria-label": resolveLocaleText(
290
+ "Search options",
291
+ mergedLocale?.common?.searchPlaceholder
292
+ )
293
+ }
294
+ ),
295
+ isSearchMode ? (
296
+ // Search results
297
+ searchResults.length === 0 ? /* @__PURE__ */ jsx("div", { className: cascaderEmptyStateClasses, children: resolveLocaleText(
298
+ "No results found",
299
+ emptyText,
300
+ mergedLocale?.common?.emptyText
301
+ ) }) : /* @__PURE__ */ jsx(
302
+ "div",
303
+ {
304
+ className: "max-h-64 overflow-auto",
305
+ ...getPickerListboxAria({ id: listboxId }),
306
+ children: searchResults.map((item) => /* @__PURE__ */ jsx(
304
307
  "div",
305
308
  {
306
- className: getCascaderOptionClasses(isSelected, !!option.disabled, size),
309
+ className: classNames(
310
+ cascaderSearchResultClasses,
311
+ item.disabled && "opacity-50 cursor-not-allowed"
312
+ ),
307
313
  ...getPickerOptionAria({
308
- selected: isSelected,
309
- disabled: !!option.disabled
314
+ selected: value?.join(",") === item.valuePath.join(","),
315
+ disabled: item.disabled
310
316
  }),
311
- onClick: () => handleOptionClick(option, colIndex),
312
- onMouseEnter: () => handleOptionHover(option, colIndex),
313
- children: [
314
- /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: option.label }),
315
- hasChildren && /* @__PURE__ */ jsx(
316
- "svg",
317
- {
318
- className: "w-4 h-4 text-[var(--tiger-text-muted,#9ca3af)]",
319
- xmlns: "http://www.w3.org/2000/svg",
320
- viewBox: "0 0 20 20",
321
- fill: "currentColor",
322
- children: /* @__PURE__ */ jsx(
323
- "path",
324
- {
325
- fillRule: "evenodd",
326
- d: "M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z",
327
- clipRule: "evenodd"
328
- }
329
- )
330
- }
331
- )
332
- ]
317
+ onClick: () => handleSearchResultClick(item.valuePath, item.disabled),
318
+ children: typeof searchable === "object" && searchable.render ? searchable.render(searchQuery, item.path) : item.label
333
319
  },
334
- option.value
335
- );
336
- })
337
- },
338
- colIndex
339
- )) })
340
- )
341
- ]
342
- }
320
+ item.valuePath.join(",")
321
+ ))
322
+ }
323
+ )
324
+ ) : (
325
+ // Cascading columns
326
+ /* @__PURE__ */ jsx("div", { className: "flex", children: columns.map((col, colIndex) => /* @__PURE__ */ jsx(
327
+ "div",
328
+ {
329
+ className: cascaderColumnClasses,
330
+ ...getPickerListboxAria({
331
+ id: colIndex === 0 ? listboxId : void 0,
332
+ label: `Level ${colIndex + 1}`
333
+ }),
334
+ "aria-label": `Level ${colIndex + 1}`,
335
+ children: col.options.map((option) => {
336
+ const isSelected = col.selectedValue === option.value;
337
+ const hasChildren = isCascaderOptionExpandable(option);
338
+ return /* @__PURE__ */ jsxs(
339
+ "div",
340
+ {
341
+ className: getCascaderOptionClasses(isSelected, !!option.disabled, size),
342
+ ...getPickerOptionAria({
343
+ selected: isSelected,
344
+ disabled: !!option.disabled
345
+ }),
346
+ onClick: () => handleOptionClick(option, colIndex),
347
+ onMouseEnter: () => handleOptionHover(option, colIndex),
348
+ children: [
349
+ /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: option.label }),
350
+ hasChildren && /* @__PURE__ */ jsx(
351
+ "svg",
352
+ {
353
+ className: "w-4 h-4 text-[var(--tiger-text-muted,#9ca3af)]",
354
+ xmlns: "http://www.w3.org/2000/svg",
355
+ viewBox: "0 0 20 20",
356
+ fill: "currentColor",
357
+ children: /* @__PURE__ */ jsx(
358
+ "path",
359
+ {
360
+ fillRule: "evenodd",
361
+ d: "M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z",
362
+ clipRule: "evenodd"
363
+ }
364
+ )
365
+ }
366
+ )
367
+ ]
368
+ },
369
+ option.value
370
+ );
371
+ })
372
+ },
373
+ colIndex
374
+ )) })
375
+ )
376
+ ]
377
+ }
378
+ ) : null,
379
+ overlay.target
343
380
  )
344
381
  ] });
345
382
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  renderBodyPortal,
3
3
  useEscapeKey
4
- } from "./chunk-SEWNVIHH.mjs";
4
+ } from "./chunk-HKAZXG74.mjs";
5
5
  import {
6
6
  useTigerConfig
7
7
  } from "./chunk-YSIXURBW.mjs";
@@ -1,14 +1,10 @@
1
1
  import {
2
- useClickOutside,
3
- useEscapeKey,
4
- useFloating
5
- } from "./chunk-SEWNVIHH.mjs";
2
+ useAnchoredOverlay
3
+ } from "./chunk-HKAZXG74.mjs";
6
4
 
7
5
  // src/utils/use-popup.ts
8
6
  import { useCallback, useMemo, useRef, useState } from "react";
9
7
  import {
10
- getTransformOrigin,
11
- FLOATING_OVERLAY_Z_INDEX,
12
8
  buildTriggerHandlerMap,
13
9
  restoreFocus
14
10
  } from "@expcat/tigercat-core";
@@ -29,17 +25,6 @@ function usePopup(options) {
29
25
  const containerRef = useRef(null);
30
26
  const triggerRef = useRef(null);
31
27
  const floatingRef = useRef(null);
32
- const {
33
- x,
34
- y,
35
- placement: actualPlacement
36
- } = useFloating({
37
- referenceRef: triggerRef,
38
- floatingRef,
39
- enabled: currentVisible,
40
- placement,
41
- offset
42
- });
43
28
  const setVisible = useCallback(
44
29
  (next) => {
45
30
  if (disabled && next) return;
@@ -71,26 +56,23 @@ function usePopup(options) {
71
56
  if (!disabled) setVisible(false);
72
57
  }, [disabled, setVisible]);
73
58
  const effectiveTrigger = multiTrigger ? trigger : "click";
74
- useClickOutside({
75
- enabled: currentVisible && effectiveTrigger === "click",
76
- refs: [containerRef, floatingRef],
77
- onOutsideClick: closeAndRestoreFocus,
78
- defer: true
79
- });
80
- useEscapeKey({
81
- enabled: currentVisible && effectiveTrigger !== "manual",
82
- onEscape: closeAndRestoreFocus
59
+ const overlay = useAnchoredOverlay({
60
+ enabled: currentVisible,
61
+ referenceRef: triggerRef,
62
+ floatingRef,
63
+ containerRef,
64
+ placement,
65
+ offset,
66
+ dismissOnOutside: effectiveTrigger === "click",
67
+ dismissOnEscape: effectiveTrigger !== "manual",
68
+ onDismiss: (reason) => {
69
+ if (reason === "escape") {
70
+ closeAndRestoreFocus();
71
+ } else {
72
+ setVisible(false);
73
+ }
74
+ }
83
75
  });
84
- const floatingStyles = useMemo(
85
- () => ({
86
- position: "absolute",
87
- left: x,
88
- top: y,
89
- transformOrigin: getTransformOrigin(actualPlacement),
90
- zIndex: FLOATING_OVERLAY_Z_INDEX
91
- }),
92
- [x, y, actualPlacement]
93
- );
94
76
  const triggerHandlers = useMemo(() => {
95
77
  if (!multiTrigger) {
96
78
  return { onClick: handleToggle };
@@ -107,10 +89,13 @@ function usePopup(options) {
107
89
  containerRef,
108
90
  triggerRef,
109
91
  floatingRef,
110
- x,
111
- y,
112
- actualPlacement,
113
- floatingStyles,
92
+ x: overlay.x,
93
+ y: overlay.y,
94
+ actualPlacement: overlay.placement,
95
+ floatingStyles: overlay.floatingStyles,
96
+ floatingClasses: overlay.floatingClasses,
97
+ positioned: overlay.positioned,
98
+ overlayTarget: overlay.target,
114
99
  triggerHandlers,
115
100
  closeAndRestoreFocus
116
101
  };
@@ -4,6 +4,10 @@ import {
4
4
  import {
5
5
  FormItemControlProvider
6
6
  } from "./chunk-F6T3OLTQ.mjs";
7
+ import {
8
+ renderOverlayPortal,
9
+ useAnchoredOverlay
10
+ } from "./chunk-HKAZXG74.mjs";
7
11
 
8
12
  // src/components/FormItem.tsx
9
13
  import React, { useMemo, useEffect, useState, useCallback, useId, useRef } from "react";
@@ -50,6 +54,8 @@ var FormItem = ({
50
54
  const [errorMessage, setErrorMessage] = useState("");
51
55
  const [shakeTrigger, setShakeTrigger] = useState(0);
52
56
  const prevFormErrorRef = useRef("");
57
+ const contentRef = useRef(null);
58
+ const errorRef = useRef(null);
53
59
  const reactId = useId();
54
60
  const baseId = `tiger-form-item-${reactId}`;
55
61
  const labelId = `${baseId}-label`;
@@ -129,6 +135,14 @@ var FormItem = ({
129
135
  }
130
136
  }, [name, formContext, rules]);
131
137
  const hasError = !!errorMessage;
138
+ const popupErrorVisible = showMessage && hasError && errorDisplayMode === "popup";
139
+ const overlay = useAnchoredOverlay({
140
+ enabled: popupErrorVisible,
141
+ referenceRef: contentRef,
142
+ floatingRef: errorRef,
143
+ placement: "bottom-start",
144
+ offset: 4
145
+ });
132
146
  const describedById = useMemo(
133
147
  () => showMessage && hasError ? errorId : void 0,
134
148
  [showMessage, hasError, errorId]
@@ -244,7 +258,7 @@ var FormItem = ({
244
258
  ]
245
259
  }
246
260
  ),
247
- /* @__PURE__ */ jsxs("div", { className: contentClasses, children: [
261
+ /* @__PURE__ */ jsxs("div", { ref: contentRef, className: contentClasses, children: [
248
262
  /* @__PURE__ */ jsx(
249
263
  "div",
250
264
  {
@@ -258,21 +272,29 @@ var FormItem = ({
258
272
  children: /* @__PURE__ */ jsx(FormItemControlProvider, { value: controlValue, children: enhancedChild })
259
273
  }
260
274
  ),
261
- showMessage && /* @__PURE__ */ jsx(
262
- "div",
263
- {
264
- id: hasError ? errorId : void 0,
265
- role: hasError ? "alert" : void 0,
266
- className: errorDisplayMode === "block" ? classNames(
267
- "mt-1 p-2 rounded bg-red-50 border border-red-200 text-red-600 text-sm",
268
- !hasError && "hidden"
269
- ) : errorDisplayMode === "popup" ? classNames(
270
- "absolute z-10 mt-1 px-2 py-1 rounded bg-red-600 text-white text-xs shadow-lg",
271
- !hasError && "hidden"
272
- ) : errorClasses,
273
- "aria-hidden": hasError ? void 0 : true,
274
- children: hasError ? errorMessage : ""
275
- }
275
+ showMessage && renderOverlayPortal(
276
+ /* @__PURE__ */ jsx(
277
+ "div",
278
+ {
279
+ ref: errorRef,
280
+ id: hasError ? errorId : void 0,
281
+ role: hasError ? "alert" : void 0,
282
+ className: errorDisplayMode === "block" ? classNames(
283
+ "mt-1 p-2 rounded bg-red-50 border border-red-200 text-red-600 text-sm",
284
+ !hasError && "hidden"
285
+ ) : errorDisplayMode === "popup" ? classNames(
286
+ "px-2 py-1 rounded bg-red-600 text-white text-xs shadow-lg",
287
+ overlay.floatingClasses,
288
+ !hasError && "hidden"
289
+ ) : errorClasses,
290
+ style: errorDisplayMode === "popup" ? overlay.floatingStyles : void 0,
291
+ "data-positioned": errorDisplayMode === "popup" ? overlay.positioned : void 0,
292
+ "aria-hidden": hasError ? void 0 : true,
293
+ children: hasError ? errorMessage : ""
294
+ }
295
+ ),
296
+ overlay.target,
297
+ errorDisplayMode !== "popup"
276
298
  )
277
299
  ] })
278
300
  ] });
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  ActivityFeed,
3
3
  ActivityFeed_default
4
- } from "../chunk-XIVU7TWX.mjs";
4
+ } from "../chunk-5CKMYMTS.mjs";
5
5
  import "../chunk-QB5472NM.mjs";
6
6
  import "../chunk-XZVQ3PJS.mjs";
7
- import "../chunk-AJJJ6HWC.mjs";
8
- import "../chunk-SEWNVIHH.mjs";
7
+ import "../chunk-K4GIKSZE.mjs";
9
8
  import "../chunk-7EXOY7GD.mjs";
10
9
  import "../chunk-HLS4CHWX.mjs";
11
10
  import "../chunk-IXV5YBCZ.mjs";
11
+ import "../chunk-HKAZXG74.mjs";
12
12
  import "../chunk-OO562MFD.mjs";
13
13
  import "../chunk-FPQMJFFM.mjs";
14
14
  import "../chunk-YSIXURBW.mjs";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AreaChart,
3
3
  AreaChart_default
4
- } from "../chunk-DJ4PSDQS.mjs";
4
+ } from "../chunk-FYINJRYN.mjs";
5
5
  import "../chunk-DNOPEJ5I.mjs";
6
6
  import "../chunk-YORCCCQX.mjs";
7
7
  import "../chunk-RQSQXQN6.mjs";
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  AutoComplete
3
- } from "../chunk-JTFNGXOC.mjs";
3
+ } from "../chunk-2ENQZECC.mjs";
4
+ import "../chunk-HKAZXG74.mjs";
4
5
  import "../chunk-YSIXURBW.mjs";
5
6
  import "../chunk-TGXBCKOU.mjs";
6
7
  export {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  BarChart,
3
3
  BarChart_default
4
- } from "../chunk-A6JNS35U.mjs";
4
+ } from "../chunk-UT5BV2VO.mjs";
5
5
  import "../chunk-DNOPEJ5I.mjs";
6
6
  import "../chunk-YORCCCQX.mjs";
7
7
  import "../chunk-RQSQXQN6.mjs";
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  Cascader
3
- } from "../chunk-SHCBCM2W.mjs";
3
+ } from "../chunk-YIB6ZXZF.mjs";
4
+ import "../chunk-HKAZXG74.mjs";
4
5
  import "../chunk-YSIXURBW.mjs";
5
6
  import "../chunk-TGXBCKOU.mjs";
6
7
  export {
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  ColorPicker
3
- } from "../chunk-KVARQQAG.mjs";
3
+ } from "../chunk-6MGQAJ62.mjs";
4
+ import "../chunk-HKAZXG74.mjs";
4
5
  export {
5
6
  ColorPicker
6
7
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  CommentThread,
3
3
  CommentThread_default
4
- } from "../chunk-5IHOOP5A.mjs";
4
+ } from "../chunk-UD4DTVJZ.mjs";
5
5
  import "../chunk-UYJJLHVA.mjs";
6
6
  import "../chunk-34VGG7AK.mjs";
7
7
  import "../chunk-MEFARVQI.mjs";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  CropUpload
3
- } from "../chunk-IZYFETUS.mjs";
4
- import "../chunk-K7MYQISG.mjs";
5
- import "../chunk-VD55SSP7.mjs";
3
+ } from "../chunk-HS6KUPTI.mjs";
4
+ import "../chunk-54HN5BXW.mjs";
5
+ import "../chunk-PD6Q36OO.mjs";
6
6
  import "../chunk-5TE7KLE5.mjs";
7
7
  import "../chunk-ZJWUBR2X.mjs";
8
- import "../chunk-SEWNVIHH.mjs";
8
+ import "../chunk-HKAZXG74.mjs";
9
9
  import "../chunk-YSIXURBW.mjs";
10
10
  import "../chunk-TGXBCKOU.mjs";
11
11
  export {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  DataExport
3
- } from "../chunk-OVE2ZUJJ.mjs";
4
- import "../chunk-YI7NQWUV.mjs";
5
- import "../chunk-SEWNVIHH.mjs";
3
+ } from "../chunk-D33BIMGK.mjs";
4
+ import "../chunk-YI6YWH66.mjs";
5
+ import "../chunk-HKAZXG74.mjs";
6
6
  import "../chunk-YSIXURBW.mjs";
7
7
  import "../chunk-TGXBCKOU.mjs";
8
8
  export {
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  DataTableWithToolbar,
3
3
  DataTableWithToolbar_default
4
- } from "../chunk-K6GJMKJR.mjs";
5
- import "../chunk-N6JNLJIN.mjs";
6
- import "../chunk-PAN256RW.mjs";
7
- import "../chunk-QWUDJC6K.mjs";
4
+ } from "../chunk-V6P7ZK6O.mjs";
5
+ import "../chunk-BOGOQ44C.mjs";
6
+ import "../chunk-KVCI2346.mjs";
7
+ import "../chunk-HOYBHB7B.mjs";
8
8
  import "../chunk-IIWUQK2P.mjs";
9
9
  import "../chunk-AKNWUI7K.mjs";
10
10
  import "../chunk-HHIW7V7B.mjs";
11
- import "../chunk-S7IB6YST.mjs";
11
+ import "../chunk-ZG56T75O.mjs";
12
12
  import "../chunk-F6WV53BS.mjs";
13
13
  import "../chunk-W7BC4I2Y.mjs";
14
14
  import "../chunk-F6T3OLTQ.mjs";
@@ -18,7 +18,7 @@ import "../chunk-OL3RXYMG.mjs";
18
18
  import "../chunk-MEFARVQI.mjs";
19
19
  import "../chunk-5TE7KLE5.mjs";
20
20
  import "../chunk-ZJWUBR2X.mjs";
21
- import "../chunk-SEWNVIHH.mjs";
21
+ import "../chunk-HKAZXG74.mjs";
22
22
  import "../chunk-YSIXURBW.mjs";
23
23
  import "../chunk-TGXBCKOU.mjs";
24
24
  export {
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  DatePicker
3
- } from "../chunk-PYDWF4ED.mjs";
3
+ } from "../chunk-D3KP72UC.mjs";
4
4
  import "../chunk-MEFARVQI.mjs";
5
+ import "../chunk-HKAZXG74.mjs";
5
6
  import "../chunk-YSIXURBW.mjs";
6
7
  import "../chunk-TGXBCKOU.mjs";
7
8
  export {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Drawer
3
- } from "../chunk-TORX7SG4.mjs";
4
- import "../chunk-SEWNVIHH.mjs";
3
+ } from "../chunk-CC7IOSNI.mjs";
4
+ import "../chunk-HKAZXG74.mjs";
5
5
  import "../chunk-YSIXURBW.mjs";
6
6
  import "../chunk-TGXBCKOU.mjs";
7
7
  export {
@@ -3,8 +3,8 @@ import {
3
3
  DropdownContext,
4
4
  DropdownItem,
5
5
  DropdownMenu
6
- } from "../chunk-YI7NQWUV.mjs";
7
- import "../chunk-SEWNVIHH.mjs";
6
+ } from "../chunk-YI6YWH66.mjs";
7
+ import "../chunk-HKAZXG74.mjs";
8
8
  export {
9
9
  Dropdown,
10
10
  DropdownContext,
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  FormItem
3
- } from "../chunk-44BPUG24.mjs";
3
+ } from "../chunk-ZH5ZBLAN.mjs";
4
4
  import "../chunk-OQLP452R.mjs";
5
5
  import "../chunk-F6T3OLTQ.mjs";
6
+ import "../chunk-HKAZXG74.mjs";
6
7
  import "../chunk-YSIXURBW.mjs";
7
8
  import "../chunk-TGXBCKOU.mjs";
8
9
  export {