@expcat/tigercat-react 1.2.16 → 1.2.19

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.
@@ -1,4 +1,9 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/components/Menu.tsx
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+
4
+ var _chunkSTTQ5LXXjs = require('./chunk-STTQ5LXX.js');
5
+
6
+ // src/components/Menu.tsx
2
7
 
3
8
 
4
9
 
@@ -37,6 +42,7 @@ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
37
42
 
38
43
 
39
44
 
45
+
40
46
 
41
47
 
42
48
  var _tigercatcore = require('@expcat/tigercat-core');
@@ -56,6 +62,7 @@ var Menu = ({
56
62
  collapsed = false,
57
63
  multiple = true,
58
64
  inlineIndent = 24,
65
+ popupPortal = false,
59
66
  className,
60
67
  style,
61
68
  onSelect,
@@ -115,12 +122,23 @@ var Menu = ({
115
122
  theme,
116
123
  collapsed,
117
124
  inlineIndent,
125
+ popupPortal,
118
126
  selectedKeys,
119
127
  openKeys,
120
128
  handleSelect,
121
129
  handleOpenChange
122
130
  }),
123
- [mode, theme, collapsed, inlineIndent, selectedKeys, openKeys, handleSelect, handleOpenChange]
131
+ [
132
+ mode,
133
+ theme,
134
+ collapsed,
135
+ inlineIndent,
136
+ popupPortal,
137
+ selectedKeys,
138
+ openKeys,
139
+ handleSelect,
140
+ handleOpenChange
141
+ ]
124
142
  );
125
143
  const filteredItems = _react.useMemo.call(void 0,
126
144
  () => _tigercatcore.filterMenuItems.call(void 0, _nullishCoalesce(items, () => ( [])), searchValue),
@@ -326,13 +344,29 @@ var SubMenu = ({
326
344
  }
327
345
  const [isHovered, setIsHovered] = _react.useState.call(void 0, false);
328
346
  const [isOpenByKeyboard, setIsOpenByKeyboard] = _react.useState.call(void 0, false);
347
+ const popupCloseTimerRef = _react.useRef.call(void 0, null);
348
+ const titleRef = _react.useRef.call(void 0, null);
349
+ const popupRef = _react.useRef.call(void 0, null);
329
350
  const submenuContentRef = _react.useRef.call(void 0, null);
330
351
  const heightTransitionRef = _react.useRef.call(void 0, null);
331
352
  const effectiveCollapsed = _nullishCoalesce(collapsedOverride, () => ( (menuContext ? menuContext.collapsed : false)));
332
353
  const isPopup = !!menuContext && (menuContext.mode === "horizontal" || menuContext.mode === "vertical" && effectiveCollapsed);
333
354
  const isOpen = !!menuContext && _tigercatcore.isKeyOpen.call(void 0, itemKey, menuContext.openKeys);
334
355
  const isExpanded = isPopup ? isHovered || isOpenByKeyboard : isOpen;
335
- const isInlineOrVertical = _optionalChain([menuContext, 'optionalAccess', _6 => _6.mode]) !== "horizontal" && !isPopup;
356
+ const popupPortal = Boolean(isPopup && _optionalChain([menuContext, 'optionalAccess', _6 => _6.popupPortal]));
357
+ const popupPlacement = _optionalChain([menuContext, 'optionalAccess', _7 => _7.mode]) === "horizontal" && level === 0 ? "bottom-start" : "right-start";
358
+ const {
359
+ x: popupX,
360
+ y: popupY,
361
+ placement: currentPopupPlacement
362
+ } = _chunkSTTQ5LXXjs.useFloating.call(void 0, {
363
+ referenceRef: titleRef,
364
+ floatingRef: popupRef,
365
+ enabled: popupPortal && isExpanded,
366
+ placement: popupPlacement,
367
+ offset: 4
368
+ });
369
+ const isInlineOrVertical = _optionalChain([menuContext, 'optionalAccess', _8 => _8.mode]) !== "horizontal" && !isPopup;
336
370
  const [hasRenderedInline, setHasRenderedInline] = _react.useState.call(void 0,
337
371
  () => isInlineOrVertical ? isExpanded : false
338
372
  );
@@ -341,10 +375,17 @@ var SubMenu = ({
341
375
  setHasRenderedInline(true);
342
376
  }, [hasRenderedInline, isExpanded, isInlineOrVertical]);
343
377
  const disposeHeightTransition = _react.useCallback.call(void 0, () => {
344
- _optionalChain([heightTransitionRef, 'access', _7 => _7.current, 'optionalAccess', _8 => _8.dispose, 'call', _9 => _9()]);
378
+ _optionalChain([heightTransitionRef, 'access', _9 => _9.current, 'optionalAccess', _10 => _10.dispose, 'call', _11 => _11()]);
345
379
  heightTransitionRef.current = null;
346
380
  }, []);
347
- _react.useEffect.call(void 0, () => disposeHeightTransition, [disposeHeightTransition]);
381
+ _react.useEffect.call(void 0, () => {
382
+ return () => {
383
+ disposeHeightTransition();
384
+ if (popupCloseTimerRef.current) {
385
+ clearTimeout(popupCloseTimerRef.current);
386
+ }
387
+ };
388
+ }, [disposeHeightTransition]);
348
389
  _react.useLayoutEffect.call(void 0, () => {
349
390
  if (!isInlineOrVertical || !hasRenderedInline || !submenuContentRef.current) {
350
391
  disposeHeightTransition();
@@ -384,14 +425,25 @@ var SubMenu = ({
384
425
  menuContext.handleOpenChange(itemKey);
385
426
  }, [disabled, menuContext, itemKey, isPopup]);
386
427
  const handleMouseEnter = _react.useCallback.call(void 0, () => {
387
- if (_optionalChain([menuContext, 'optionalAccess', _10 => _10.mode]) === "horizontal" || isPopup) setIsHovered(true);
428
+ if (popupCloseTimerRef.current) {
429
+ clearTimeout(popupCloseTimerRef.current);
430
+ popupCloseTimerRef.current = null;
431
+ }
432
+ if (_optionalChain([menuContext, 'optionalAccess', _12 => _12.mode]) === "horizontal" || isPopup) setIsHovered(true);
388
433
  }, [menuContext, isPopup]);
389
434
  const handleMouseLeave = _react.useCallback.call(void 0, () => {
390
- if (_optionalChain([menuContext, 'optionalAccess', _11 => _11.mode]) === "horizontal" || isPopup) {
391
- setIsHovered(false);
392
- setIsOpenByKeyboard(false);
435
+ if (_optionalChain([menuContext, 'optionalAccess', _13 => _13.mode]) === "horizontal" || isPopup) {
436
+ const close = () => {
437
+ setIsHovered(false);
438
+ setIsOpenByKeyboard(false);
439
+ };
440
+ if (popupPortal) {
441
+ popupCloseTimerRef.current = setTimeout(close, 120);
442
+ return;
443
+ }
444
+ close();
393
445
  }
394
- }, [menuContext, isPopup]);
446
+ }, [menuContext, isPopup, popupPortal]);
395
447
  const openInline = _react.useCallback.call(void 0,
396
448
  (titleEl) => {
397
449
  if (!menuContext) return;
@@ -406,7 +458,7 @@ var SubMenu = ({
406
458
  if (!menuContext || disabled) return;
407
459
  const current = event.currentTarget;
408
460
  const rootMenu = current.closest('ul[role="menu"]');
409
- const isRoot = _optionalChain([rootMenu, 'optionalAccess', _12 => _12.dataset, 'access', _13 => _13.tigerMenuRoot]) === "true";
461
+ const isRoot = _optionalChain([rootMenu, 'optionalAccess', _14 => _14.dataset, 'access', _15 => _15.tigerMenuRoot]) === "true";
410
462
  const isHorizontalRoot = isRoot && menuContext.mode === "horizontal";
411
463
  const nextKey = isHorizontalRoot ? "ArrowRight" : "ArrowDown";
412
464
  const prevKey = isHorizontalRoot ? "ArrowLeft" : "ArrowUp";
@@ -504,6 +556,31 @@ var SubMenu = ({
504
556
  });
505
557
  const popupZIndex = isPopup ? _tigercatcore.getSubmenuPopupZIndex.call(void 0, level) : {};
506
558
  if (isPopup) {
559
+ const popupStyle = popupPortal ? {
560
+ display: isExpanded ? "block" : "none",
561
+ position: "absolute",
562
+ left: popupX,
563
+ top: popupY,
564
+ transformOrigin: _tigercatcore.getTransformOrigin.call(void 0, currentPopupPlacement),
565
+ ...popupZIndex
566
+ } : { display: isExpanded ? "block" : "none", ...popupZIndex };
567
+ const popup = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
568
+ "ul",
569
+ {
570
+ ref: popupPortal ? popupRef : void 0,
571
+ className: contentClasses,
572
+ style: popupStyle,
573
+ role: "menu",
574
+ "aria-hidden": isExpanded ? void 0 : "true",
575
+ onMouseEnter: popupPortal ? handleMouseEnter : void 0,
576
+ onMouseLeave: popupPortal ? handleMouseLeave : void 0,
577
+ "data-tiger-submenu-popup": "",
578
+ children: enhancedChildren
579
+ }
580
+ );
581
+ if (popupPortal) {
582
+ return _chunkSTTQ5LXXjs.renderBodyPortal.call(void 0, popup);
583
+ }
507
584
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
508
585
  "ul",
509
586
  {
@@ -511,6 +588,7 @@ var SubMenu = ({
511
588
  style: { display: isExpanded ? "block" : "none", ...popupZIndex },
512
589
  role: "menu",
513
590
  "aria-hidden": isExpanded ? void 0 : "true",
591
+ "data-tiger-submenu-popup": "",
514
592
  children: enhancedChildren
515
593
  }
516
594
  );
@@ -533,7 +611,7 @@ var SubMenu = ({
533
611
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
534
612
  "li",
535
613
  {
536
- className: isPopup ? "relative" : "",
614
+ className: isPopup && !popupPortal ? "relative" : "",
537
615
  onMouseEnter: handleMouseEnter,
538
616
  onMouseLeave: handleMouseLeave,
539
617
  role: "none",
@@ -541,6 +619,7 @@ var SubMenu = ({
541
619
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
542
620
  "button",
543
621
  {
622
+ ref: titleRef,
544
623
  type: "button",
545
624
  className: titleClasses,
546
625
  style: indentStyle,
@@ -66,6 +66,10 @@ var Drawer = ({
66
66
  className,
67
67
  bodyClassName,
68
68
  destroyOnClose = false,
69
+ destroyOnCloseAfterLeave = false,
70
+ fullscreenOnMobile = true,
71
+ panelClassName,
72
+ panelStyle,
69
73
  onClose,
70
74
  onOpenChange,
71
75
  onAfterEnter,
@@ -78,10 +82,18 @@ var Drawer = ({
78
82
  ...rest
79
83
  }) => {
80
84
  const [hasBeenOpened, setHasBeenOpened] = React.useState(open);
85
+ const [deferredRendered, setDeferredRendered] = React.useState(open);
81
86
  useEffect(() => {
82
- if (open) setHasBeenOpened(true);
83
- }, [open]);
84
- const shouldRender = destroyOnClose ? open : hasBeenOpened;
87
+ if (open) {
88
+ setHasBeenOpened(true);
89
+ setDeferredRendered(true);
90
+ return;
91
+ }
92
+ if (destroyOnClose && !destroyOnCloseAfterLeave) {
93
+ setDeferredRendered(false);
94
+ }
95
+ }, [destroyOnClose, destroyOnCloseAfterLeave, open]);
96
+ const shouldRender = destroyOnClose ? destroyOnCloseAfterLeave ? deferredRendered : open : hasBeenOpened;
85
97
  const handleClose = useCallback(() => {
86
98
  onOpenChange?.(false);
87
99
  onClose?.();
@@ -105,10 +117,13 @@ var Drawer = ({
105
117
  onAfterEnter?.();
106
118
  } else {
107
119
  onAfterLeave?.();
120
+ if (destroyOnClose && destroyOnCloseAfterLeave) {
121
+ setDeferredRendered(false);
122
+ }
108
123
  }
109
124
  }, ANIMATION_DURATION_MS);
110
125
  return () => window.clearTimeout(timer);
111
- }, [open, onAfterEnter, onAfterLeave]);
126
+ }, [destroyOnClose, destroyOnCloseAfterLeave, open, onAfterEnter, onAfterLeave]);
112
127
  const reactId = useId();
113
128
  const drawerId = useMemo(() => `tiger-drawer-${reactId}`, [reactId]);
114
129
  const titleId = `${drawerId}-title`;
@@ -191,9 +206,10 @@ var Drawer = ({
191
206
  const containerClasses = classNames(getDrawerContainerClasses(), !open && "pointer-events-none");
192
207
  const maskClasses = getDrawerMaskClasses(open);
193
208
  const panelClasses = classNames(
194
- getDrawerPanelClasses(placement, open, size),
209
+ getDrawerPanelClasses(placement, open, size, fullscreenOnMobile),
195
210
  "flex flex-col",
196
- className
211
+ className,
212
+ panelClassName
197
213
  );
198
214
  const headerClasses = getDrawerHeaderClasses();
199
215
  const bodyClasses = getDrawerBodyClasses(bodyClassName);
@@ -203,12 +219,13 @@ var Drawer = ({
203
219
  if (!shouldRender) {
204
220
  return null;
205
221
  }
222
+ const isLeavingBeforeDestroy = destroyOnClose && destroyOnCloseAfterLeave && !open;
206
223
  const drawerContent = /* @__PURE__ */ jsxs(
207
224
  "div",
208
225
  {
209
226
  className: containerClasses,
210
227
  style: { zIndex },
211
- hidden: !open,
228
+ hidden: !open && !isLeavingBeforeDestroy,
212
229
  "aria-hidden": !open ? "true" : void 0,
213
230
  "data-tiger-drawer-root": "",
214
231
  children: [
@@ -226,6 +243,7 @@ var Drawer = ({
226
243
  {
227
244
  className: panelClasses,
228
245
  style: {
246
+ ...panelStyle,
229
247
  ...style,
230
248
  ...width ? {
231
249
  [placement === "left" || placement === "right" ? "width" : "height"]: typeof width === "number" ? `${width}px` : width
@@ -66,6 +66,10 @@ var Drawer = ({
66
66
  className,
67
67
  bodyClassName,
68
68
  destroyOnClose = false,
69
+ destroyOnCloseAfterLeave = false,
70
+ fullscreenOnMobile = true,
71
+ panelClassName,
72
+ panelStyle,
69
73
  onClose,
70
74
  onOpenChange,
71
75
  onAfterEnter,
@@ -78,10 +82,18 @@ var Drawer = ({
78
82
  ...rest
79
83
  }) => {
80
84
  const [hasBeenOpened, setHasBeenOpened] = _react2.default.useState(open);
85
+ const [deferredRendered, setDeferredRendered] = _react2.default.useState(open);
81
86
  _react.useEffect.call(void 0, () => {
82
- if (open) setHasBeenOpened(true);
83
- }, [open]);
84
- const shouldRender = destroyOnClose ? open : hasBeenOpened;
87
+ if (open) {
88
+ setHasBeenOpened(true);
89
+ setDeferredRendered(true);
90
+ return;
91
+ }
92
+ if (destroyOnClose && !destroyOnCloseAfterLeave) {
93
+ setDeferredRendered(false);
94
+ }
95
+ }, [destroyOnClose, destroyOnCloseAfterLeave, open]);
96
+ const shouldRender = destroyOnClose ? destroyOnCloseAfterLeave ? deferredRendered : open : hasBeenOpened;
85
97
  const handleClose = _react.useCallback.call(void 0, () => {
86
98
  _optionalChain([onOpenChange, 'optionalCall', _ => _(false)]);
87
99
  _optionalChain([onClose, 'optionalCall', _2 => _2()]);
@@ -105,10 +117,13 @@ var Drawer = ({
105
117
  _optionalChain([onAfterEnter, 'optionalCall', _3 => _3()]);
106
118
  } else {
107
119
  _optionalChain([onAfterLeave, 'optionalCall', _4 => _4()]);
120
+ if (destroyOnClose && destroyOnCloseAfterLeave) {
121
+ setDeferredRendered(false);
122
+ }
108
123
  }
109
124
  }, _tigercatcore.ANIMATION_DURATION_MS);
110
125
  return () => window.clearTimeout(timer);
111
- }, [open, onAfterEnter, onAfterLeave]);
126
+ }, [destroyOnClose, destroyOnCloseAfterLeave, open, onAfterEnter, onAfterLeave]);
112
127
  const reactId = _react.useId.call(void 0, );
113
128
  const drawerId = _react.useMemo.call(void 0, () => `tiger-drawer-${reactId}`, [reactId]);
114
129
  const titleId = `${drawerId}-title`;
@@ -191,9 +206,10 @@ var Drawer = ({
191
206
  const containerClasses = _tigercatcore.classNames.call(void 0, _tigercatcore.getDrawerContainerClasses.call(void 0, ), !open && "pointer-events-none");
192
207
  const maskClasses = _tigercatcore.getDrawerMaskClasses.call(void 0, open);
193
208
  const panelClasses = _tigercatcore.classNames.call(void 0,
194
- _tigercatcore.getDrawerPanelClasses.call(void 0, placement, open, size),
209
+ _tigercatcore.getDrawerPanelClasses.call(void 0, placement, open, size, fullscreenOnMobile),
195
210
  "flex flex-col",
196
- className
211
+ className,
212
+ panelClassName
197
213
  );
198
214
  const headerClasses = _tigercatcore.getDrawerHeaderClasses.call(void 0, );
199
215
  const bodyClasses = _tigercatcore.getDrawerBodyClasses.call(void 0, bodyClassName);
@@ -203,12 +219,13 @@ var Drawer = ({
203
219
  if (!shouldRender) {
204
220
  return null;
205
221
  }
222
+ const isLeavingBeforeDestroy = destroyOnClose && destroyOnCloseAfterLeave && !open;
206
223
  const drawerContent = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
207
224
  "div",
208
225
  {
209
226
  className: containerClasses,
210
227
  style: { zIndex },
211
- hidden: !open,
228
+ hidden: !open && !isLeavingBeforeDestroy,
212
229
  "aria-hidden": !open ? "true" : void 0,
213
230
  "data-tiger-drawer-root": "",
214
231
  children: [
@@ -226,6 +243,7 @@ var Drawer = ({
226
243
  {
227
244
  className: panelClasses,
228
245
  style: {
246
+ ...panelStyle,
229
247
  ...style,
230
248
  ...width ? {
231
249
  [placement === "left" || placement === "right" ? "width" : "height"]: typeof width === "number" ? `${width}px` : width
@@ -1,3 +1,8 @@
1
+ import {
2
+ renderBodyPortal,
3
+ useFloating
4
+ } from "./chunk-SEWNVIHH.mjs";
5
+
1
6
  // src/components/Menu.tsx
2
7
  import React, {
3
8
  createContext,
@@ -17,6 +22,7 @@ import {
17
22
  getSubMenuTitleClasses,
18
23
  getSubMenuExpandIconClasses,
19
24
  getSubmenuPopupZIndex,
25
+ getTransformOrigin,
20
26
  filterMenuItems,
21
27
  isKeySelected,
22
28
  isKeyOpen,
@@ -56,6 +62,7 @@ var Menu = ({
56
62
  collapsed = false,
57
63
  multiple = true,
58
64
  inlineIndent = 24,
65
+ popupPortal = false,
59
66
  className,
60
67
  style,
61
68
  onSelect,
@@ -115,12 +122,23 @@ var Menu = ({
115
122
  theme,
116
123
  collapsed,
117
124
  inlineIndent,
125
+ popupPortal,
118
126
  selectedKeys,
119
127
  openKeys,
120
128
  handleSelect,
121
129
  handleOpenChange
122
130
  }),
123
- [mode, theme, collapsed, inlineIndent, selectedKeys, openKeys, handleSelect, handleOpenChange]
131
+ [
132
+ mode,
133
+ theme,
134
+ collapsed,
135
+ inlineIndent,
136
+ popupPortal,
137
+ selectedKeys,
138
+ openKeys,
139
+ handleSelect,
140
+ handleOpenChange
141
+ ]
124
142
  );
125
143
  const filteredItems = useMemo(
126
144
  () => filterMenuItems(items ?? [], searchValue),
@@ -326,12 +344,28 @@ var SubMenu = ({
326
344
  }
327
345
  const [isHovered, setIsHovered] = useState(false);
328
346
  const [isOpenByKeyboard, setIsOpenByKeyboard] = useState(false);
347
+ const popupCloseTimerRef = useRef(null);
348
+ const titleRef = useRef(null);
349
+ const popupRef = useRef(null);
329
350
  const submenuContentRef = useRef(null);
330
351
  const heightTransitionRef = useRef(null);
331
352
  const effectiveCollapsed = collapsedOverride ?? (menuContext ? menuContext.collapsed : false);
332
353
  const isPopup = !!menuContext && (menuContext.mode === "horizontal" || menuContext.mode === "vertical" && effectiveCollapsed);
333
354
  const isOpen = !!menuContext && isKeyOpen(itemKey, menuContext.openKeys);
334
355
  const isExpanded = isPopup ? isHovered || isOpenByKeyboard : isOpen;
356
+ const popupPortal = Boolean(isPopup && menuContext?.popupPortal);
357
+ const popupPlacement = menuContext?.mode === "horizontal" && level === 0 ? "bottom-start" : "right-start";
358
+ const {
359
+ x: popupX,
360
+ y: popupY,
361
+ placement: currentPopupPlacement
362
+ } = useFloating({
363
+ referenceRef: titleRef,
364
+ floatingRef: popupRef,
365
+ enabled: popupPortal && isExpanded,
366
+ placement: popupPlacement,
367
+ offset: 4
368
+ });
335
369
  const isInlineOrVertical = menuContext?.mode !== "horizontal" && !isPopup;
336
370
  const [hasRenderedInline, setHasRenderedInline] = useState(
337
371
  () => isInlineOrVertical ? isExpanded : false
@@ -344,7 +378,14 @@ var SubMenu = ({
344
378
  heightTransitionRef.current?.dispose();
345
379
  heightTransitionRef.current = null;
346
380
  }, []);
347
- useEffect(() => disposeHeightTransition, [disposeHeightTransition]);
381
+ useEffect(() => {
382
+ return () => {
383
+ disposeHeightTransition();
384
+ if (popupCloseTimerRef.current) {
385
+ clearTimeout(popupCloseTimerRef.current);
386
+ }
387
+ };
388
+ }, [disposeHeightTransition]);
348
389
  useLayoutEffect(() => {
349
390
  if (!isInlineOrVertical || !hasRenderedInline || !submenuContentRef.current) {
350
391
  disposeHeightTransition();
@@ -384,14 +425,25 @@ var SubMenu = ({
384
425
  menuContext.handleOpenChange(itemKey);
385
426
  }, [disabled, menuContext, itemKey, isPopup]);
386
427
  const handleMouseEnter = useCallback(() => {
428
+ if (popupCloseTimerRef.current) {
429
+ clearTimeout(popupCloseTimerRef.current);
430
+ popupCloseTimerRef.current = null;
431
+ }
387
432
  if (menuContext?.mode === "horizontal" || isPopup) setIsHovered(true);
388
433
  }, [menuContext, isPopup]);
389
434
  const handleMouseLeave = useCallback(() => {
390
435
  if (menuContext?.mode === "horizontal" || isPopup) {
391
- setIsHovered(false);
392
- setIsOpenByKeyboard(false);
436
+ const close = () => {
437
+ setIsHovered(false);
438
+ setIsOpenByKeyboard(false);
439
+ };
440
+ if (popupPortal) {
441
+ popupCloseTimerRef.current = setTimeout(close, 120);
442
+ return;
443
+ }
444
+ close();
393
445
  }
394
- }, [menuContext, isPopup]);
446
+ }, [menuContext, isPopup, popupPortal]);
395
447
  const openInline = useCallback(
396
448
  (titleEl) => {
397
449
  if (!menuContext) return;
@@ -504,6 +556,31 @@ var SubMenu = ({
504
556
  });
505
557
  const popupZIndex = isPopup ? getSubmenuPopupZIndex(level) : {};
506
558
  if (isPopup) {
559
+ const popupStyle = popupPortal ? {
560
+ display: isExpanded ? "block" : "none",
561
+ position: "absolute",
562
+ left: popupX,
563
+ top: popupY,
564
+ transformOrigin: getTransformOrigin(currentPopupPlacement),
565
+ ...popupZIndex
566
+ } : { display: isExpanded ? "block" : "none", ...popupZIndex };
567
+ const popup = /* @__PURE__ */ jsx(
568
+ "ul",
569
+ {
570
+ ref: popupPortal ? popupRef : void 0,
571
+ className: contentClasses,
572
+ style: popupStyle,
573
+ role: "menu",
574
+ "aria-hidden": isExpanded ? void 0 : "true",
575
+ onMouseEnter: popupPortal ? handleMouseEnter : void 0,
576
+ onMouseLeave: popupPortal ? handleMouseLeave : void 0,
577
+ "data-tiger-submenu-popup": "",
578
+ children: enhancedChildren
579
+ }
580
+ );
581
+ if (popupPortal) {
582
+ return renderBodyPortal(popup);
583
+ }
507
584
  return /* @__PURE__ */ jsx(
508
585
  "ul",
509
586
  {
@@ -511,6 +588,7 @@ var SubMenu = ({
511
588
  style: { display: isExpanded ? "block" : "none", ...popupZIndex },
512
589
  role: "menu",
513
590
  "aria-hidden": isExpanded ? void 0 : "true",
591
+ "data-tiger-submenu-popup": "",
514
592
  children: enhancedChildren
515
593
  }
516
594
  );
@@ -533,7 +611,7 @@ var SubMenu = ({
533
611
  return /* @__PURE__ */ jsxs(
534
612
  "li",
535
613
  {
536
- className: isPopup ? "relative" : "",
614
+ className: isPopup && !popupPortal ? "relative" : "",
537
615
  onMouseEnter: handleMouseEnter,
538
616
  onMouseLeave: handleMouseLeave,
539
617
  role: "none",
@@ -541,6 +619,7 @@ var SubMenu = ({
541
619
  /* @__PURE__ */ jsx(
542
620
  "button",
543
621
  {
622
+ ref: titleRef,
544
623
  type: "button",
545
624
  className: titleClasses,
546
625
  style: indentStyle,
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { DrawerProps as DrawerProps$1 } from '@expcat/tigercat-core';
3
3
 
4
- interface DrawerProps extends DrawerProps$1, Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'children'> {
4
+ interface DrawerProps extends Omit<DrawerProps$1, 'panelStyle'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'children'> {
5
5
  onOpenChange?: (open: boolean) => void;
6
6
  onClose?: () => void;
7
7
  onAfterEnter?: () => void;
@@ -9,6 +9,7 @@ interface DrawerProps extends DrawerProps$1, Omit<React.HTMLAttributes<HTMLDivEl
9
9
  header?: React.ReactNode;
10
10
  children?: React.ReactNode;
11
11
  footer?: React.ReactNode;
12
+ panelStyle?: React.CSSProperties;
12
13
  /**
13
14
  * Close button aria-label
14
15
  * @default 'Close drawer'
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { DrawerProps as DrawerProps$1 } from '@expcat/tigercat-core';
3
3
 
4
- interface DrawerProps extends DrawerProps$1, Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'children'> {
4
+ interface DrawerProps extends Omit<DrawerProps$1, 'panelStyle'>, Omit<React.HTMLAttributes<HTMLDivElement>, 'title' | 'children'> {
5
5
  onOpenChange?: (open: boolean) => void;
6
6
  onClose?: () => void;
7
7
  onAfterEnter?: () => void;
@@ -9,6 +9,7 @@ interface DrawerProps extends DrawerProps$1, Omit<React.HTMLAttributes<HTMLDivEl
9
9
  header?: React.ReactNode;
10
10
  children?: React.ReactNode;
11
11
  footer?: React.ReactNode;
12
+ panelStyle?: React.CSSProperties;
12
13
  /**
13
14
  * Close button aria-label
14
15
  * @default 'Close drawer'
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkCFZJOGGHjs = require('../chunk-CFZJOGGH.js');
3
+ var _chunkOHSJ4KTUjs = require('../chunk-OHSJ4KTU.js');
4
4
  require('../chunk-STTQ5LXX.js');
5
5
 
6
6
 
7
- exports.Drawer = _chunkCFZJOGGHjs.Drawer;
7
+ exports.Drawer = _chunkOHSJ4KTUjs.Drawer;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Drawer
3
- } from "../chunk-G6MD6ZVN.mjs";
3
+ } from "../chunk-D62GWQBX.mjs";
4
4
  import "../chunk-SEWNVIHH.mjs";
5
5
  export {
6
6
  Drawer
@@ -6,6 +6,7 @@ interface MenuContextValue {
6
6
  theme: MenuTheme;
7
7
  collapsed: boolean;
8
8
  inlineIndent: number;
9
+ popupPortal: boolean;
9
10
  selectedKeys: (string | number)[];
10
11
  openKeys: (string | number)[];
11
12
  handleSelect: (key: string | number) => void;
@@ -6,6 +6,7 @@ interface MenuContextValue {
6
6
  theme: MenuTheme;
7
7
  collapsed: boolean;
8
8
  inlineIndent: number;
9
+ popupPortal: boolean;
9
10
  selectedKeys: (string | number)[];
10
11
  openKeys: (string | number)[];
11
12
  handleSelect: (key: string | number) => void;
@@ -4,11 +4,12 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkSY4P2AXWjs = require('../chunk-SY4P2AXW.js');
7
+ var _chunk3PWNNDNQjs = require('../chunk-3PWNNDNQ.js');
8
+ require('../chunk-STTQ5LXX.js');
8
9
 
9
10
 
10
11
 
11
12
 
12
13
 
13
14
 
14
- exports.Menu = _chunkSY4P2AXWjs.Menu; exports.MenuItem = _chunkSY4P2AXWjs.MenuItem; exports.MenuItemGroup = _chunkSY4P2AXWjs.MenuItemGroup; exports.SubMenu = _chunkSY4P2AXWjs.SubMenu; exports.useMenuContext = _chunkSY4P2AXWjs.useMenuContext;
15
+ exports.Menu = _chunk3PWNNDNQjs.Menu; exports.MenuItem = _chunk3PWNNDNQjs.MenuItem; exports.MenuItemGroup = _chunk3PWNNDNQjs.MenuItemGroup; exports.SubMenu = _chunk3PWNNDNQjs.SubMenu; exports.useMenuContext = _chunk3PWNNDNQjs.useMenuContext;
@@ -4,7 +4,8 @@ import {
4
4
  MenuItemGroup,
5
5
  SubMenu,
6
6
  useMenuContext
7
- } from "../chunk-L2NMDYYQ.mjs";
7
+ } from "../chunk-OOE5ZJNW.mjs";
8
+ import "../chunk-SEWNVIHH.mjs";
8
9
  export {
9
10
  Menu,
10
11
  MenuItem,
@@ -1,7 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkSY4P2AXWjs = require('../chunk-SY4P2AXW.js');
3
+ var _chunk3PWNNDNQjs = require('../chunk-3PWNNDNQ.js');
4
+ require('../chunk-STTQ5LXX.js');
4
5
 
5
6
 
6
7
 
7
- exports.MenuItem = _chunkSY4P2AXWjs.MenuItem; exports.default = _chunkSY4P2AXWjs.MenuItem;
8
+ exports.MenuItem = _chunk3PWNNDNQjs.MenuItem; exports.default = _chunk3PWNNDNQjs.MenuItem;
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  MenuItem
3
- } from "../chunk-L2NMDYYQ.mjs";
3
+ } from "../chunk-OOE5ZJNW.mjs";
4
+ import "../chunk-SEWNVIHH.mjs";
4
5
  export {
5
6
  MenuItem,
6
7
  MenuItem as default
@@ -1,7 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkSY4P2AXWjs = require('../chunk-SY4P2AXW.js');
3
+ var _chunk3PWNNDNQjs = require('../chunk-3PWNNDNQ.js');
4
+ require('../chunk-STTQ5LXX.js');
4
5
 
5
6
 
6
7
 
7
- exports.MenuItemGroup = _chunkSY4P2AXWjs.MenuItemGroup; exports.default = _chunkSY4P2AXWjs.MenuItemGroup;
8
+ exports.MenuItemGroup = _chunk3PWNNDNQjs.MenuItemGroup; exports.default = _chunk3PWNNDNQjs.MenuItemGroup;
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  MenuItemGroup
3
- } from "../chunk-L2NMDYYQ.mjs";
3
+ } from "../chunk-OOE5ZJNW.mjs";
4
+ import "../chunk-SEWNVIHH.mjs";
4
5
  export {
5
6
  MenuItemGroup,
6
7
  MenuItemGroup as default
@@ -1,7 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkSY4P2AXWjs = require('../chunk-SY4P2AXW.js');
3
+ var _chunk3PWNNDNQjs = require('../chunk-3PWNNDNQ.js');
4
+ require('../chunk-STTQ5LXX.js');
4
5
 
5
6
 
6
7
 
7
- exports.SubMenu = _chunkSY4P2AXWjs.SubMenu; exports.default = _chunkSY4P2AXWjs.SubMenu;
8
+ exports.SubMenu = _chunk3PWNNDNQjs.SubMenu; exports.default = _chunk3PWNNDNQjs.SubMenu;
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  SubMenu
3
- } from "../chunk-L2NMDYYQ.mjs";
3
+ } from "../chunk-OOE5ZJNW.mjs";
4
+ import "../chunk-SEWNVIHH.mjs";
4
5
  export {
5
6
  SubMenu,
6
7
  SubMenu as default
package/dist/index.js CHANGED
@@ -144,7 +144,7 @@ var _chunkXRNKHQTLjs = require('./chunk-XRNKHQTL.js');
144
144
 
145
145
 
146
146
 
147
- var _chunkSY4P2AXWjs = require('./chunk-SY4P2AXW.js');
147
+ var _chunk3PWNNDNQjs = require('./chunk-3PWNNDNQ.js');
148
148
 
149
149
 
150
150
 
@@ -231,7 +231,7 @@ var _chunkK2TXT5HQjs = require('./chunk-K2TXT5HQ.js');
231
231
  var _chunkBO45CU4Qjs = require('./chunk-BO45CU4Q.js');
232
232
 
233
233
 
234
- var _chunkCFZJOGGHjs = require('./chunk-CFZJOGGH.js');
234
+ var _chunkOHSJ4KTUjs = require('./chunk-OHSJ4KTU.js');
235
235
 
236
236
 
237
237
  var _chunkC3NKZZQQjs = require('./chunk-C3NKZZQQ.js');
@@ -907,4 +907,4 @@ var version = "1.2.0";
907
907
 
908
908
 
909
909
 
910
- exports.ActivityFeed = _chunkDXMSDLVJjs.ActivityFeed; exports.Affix = _chunkRYIYE2PYjs.Affix; exports.Alert = _chunkVNMWPJDNjs.Alert; exports.Anchor = _chunkSQGFNVYTjs.Anchor; exports.AnchorLink = _chunkSQGFNVYTjs.AnchorLink; exports.AreaChart = _chunkDCKBVRLIjs.AreaChart; exports.AutoComplete = _chunkU356F7GUjs.AutoComplete; exports.Avatar = _chunk4MQCUKICjs.Avatar; exports.AvatarGroup = _chunkTQOWIDQTjs.AvatarGroup; exports.BackTop = _chunk4LIDROT4js.BackTop; exports.Badge = _chunkPNAWOJ32js.Badge; exports.BarChart = _chunkNMKFR435js.BarChart; exports.Breadcrumb = _chunkVDF2BD2Ajs.Breadcrumb; exports.BreadcrumbItem = _chunkVDF2BD2Ajs.BreadcrumbItem; exports.Button = _chunk56ZV3VVYjs.Button; exports.ButtonGroup = _chunkYMKA4L3Zjs.ButtonGroup; exports.Calendar = _chunk5EVHVZG5js.Calendar; exports.Card = _chunkUIO6O4MIjs.Card; exports.Carousel = _chunkB5TUTAVXjs.Carousel; exports.Cascader = _chunkTC6JLEGZjs.Cascader; exports.ChartAxis = _chunkE5GD3H7Ljs.ChartAxis; exports.ChartCanvas = _chunkUKLVOR4Ejs.ChartCanvas; exports.ChartGrid = _chunk3QFHVAZTjs.ChartGrid; exports.ChartLegend = _chunkWV5XHYW6js.ChartLegend; exports.ChartSeries = _chunkAX5XRD2Qjs.ChartSeries; exports.ChartTooltip = _chunkUVMQJOTXjs.ChartTooltip; exports.ChatWindow = _chunk2DH6MGC6js.ChatWindow; exports.Checkbox = _chunkF7H4ALKNjs.Checkbox; exports.CheckboxGroup = _chunkJLRRXRZOjs.CheckboxGroup; exports.Code = _chunkRTHC4KWMjs.Code; exports.CodeEditor = _chunk3E76U2RGjs.CodeEditor; exports.Col = _chunkQQKP437Ljs.Col; exports.Collapse = _chunkQ2GPRAF4js.Collapse; exports.CollapsePanel = _chunkWN3ZI7FNjs.CollapsePanel; exports.ColorPicker = _chunkJB33A4S6js.ColorPicker; exports.ColorSwatch = _chunkJ4SNBXJMjs.ColorSwatch; exports.CommentThread = _chunkEX63M5IDjs.CommentThread; exports.ConfigProvider = _chunkTDODFBBOjs.ConfigProvider; exports.Container = _chunkW3VLCSJLjs.Container; exports.Content = _chunkOFCKGWTSjs.Content; exports.Countdown = _chunkU3M24RPHjs.Countdown; exports.CronEditor = _chunkNRLGZRK2js.CronEditor; exports.CropUpload = _chunkUE52NMPOjs.CropUpload; exports.DataTableWithToolbar = _chunk7YUD6VICjs.DataTableWithToolbar; exports.DatePicker = _chunkTSJYAEFZjs.DatePicker; exports.Descriptions = _chunk6CWZXS5Bjs.Descriptions; exports.Divider = _chunkIZXU7DF6js.Divider; exports.DonutChart = _chunkK2TXT5HQjs.DonutChart; exports.Drawer = _chunkCFZJOGGHjs.Drawer; exports.Dropdown = _chunkAKZY7QYAjs.Dropdown; exports.DropdownItem = _chunkC3NKZZQQjs.DropdownItem; exports.DropdownMenu = _chunkAKZY7QYAjs.DropdownMenu; exports.Empty = _chunkZRHDNGWOjs.Empty; exports.FileManager = _chunkHR5GBE3Pjs.FileManager; exports.FloatButton = _chunkXFPJYKBQjs.FloatButton; exports.FloatButtonGroup = _chunkXFPJYKBQjs.FloatButtonGroup; exports.Footer = _chunkTB2UHDOZjs.Footer; exports.Form = _chunkUPPHGL64js.Form; exports.FormItem = _chunkBCQQYERGjs.FormItem; exports.FormWizard = _chunkDTYDPMNRjs.FormWizard; exports.FunnelChart = _chunkQIKR5EFIjs.FunnelChart; exports.Gantt = _chunkQMK4OFC5js.Gantt; exports.GaugeChart = _chunkT7KO6EVKjs.GaugeChart; exports.Header = _chunkVJJ76I7Ujs.Header; exports.HeatmapChart = _chunkH6NC6SBXjs.HeatmapChart; exports.Icon = _chunkIHH2O7YKjs.Icon; exports.Image = _chunkCGIBGSNEjs.Image; exports.ImageAnnotation = _chunkEHIXCFD7js.ImageAnnotation; exports.ImageCropper = _chunkFI53LYZ6js.ImageCropper; exports.ImageGroup = _chunkMB6U72CIjs.ImageGroup; exports.ImageGroupContext = _chunkMB6U72CIjs.ImageGroupContext; exports.ImagePreview = _chunk4U5HSR2Hjs.ImagePreview; exports.ImageViewer = _chunkUXUYCWQCjs.ImageViewer; exports.InfiniteScroll = _chunkM73NMNZXjs.InfiniteScroll; exports.Input = _chunkZYJTHGQWjs.Input; exports.InputGroup = _chunkI3CDTF4Ujs.InputGroup; exports.InputGroupAddon = _chunkI3CDTF4Ujs.InputGroupAddon; exports.InputNumber = _chunkSKMZTW3Kjs.InputNumber; exports.Kanban = _chunkCSH2QOOHjs.Kanban; exports.Layout = _chunkD6TKXVEBjs.Layout; exports.LineChart = _chunkEQD2U4KMjs.LineChart; exports.Link = _chunkQYYAXM5Fjs.Link; exports.List = _chunkWG3YS2QVjs.List; exports.Loading = _chunk3MRP3XYIjs.Loading; exports.MarkdownEditor = _chunkBFAZZUD6js.MarkdownEditor; exports.Mentions = _chunkXRNKHQTLjs.Mentions; exports.Menu = _chunkSY4P2AXWjs.Menu; exports.MenuItem = _chunkSY4P2AXWjs.MenuItem; exports.MenuItemGroup = _chunkSY4P2AXWjs.MenuItemGroup; exports.Message = _chunkLMTUM3J3js.Message; exports.MessageContainer = _chunkLMTUM3J3js.MessageContainer; exports.Modal = _chunkSXHP4Q7Ojs.Modal; exports.NotificationCenter = _chunkRUZQN7X3js.NotificationCenter; exports.NotificationContainer = _chunkNMEVQPODjs.NotificationContainer; exports.NumberKeyboard = _chunkG5USITWFjs.NumberKeyboard; exports.OrgChart = _chunk4DTMFQCYjs.OrgChart; exports.Pagination = _chunkKEF2PEP4js.Pagination; exports.PieChart = _chunkBO45CU4Qjs.PieChart; exports.Popconfirm = _chunkJNRUOQNTjs.Popconfirm; exports.Popover = _chunkIAONLOJNjs.Popover; exports.PrintLayout = _chunkQ4JMAQXJjs.PrintLayout; exports.PrintPageBreak = _chunkQ4JMAQXJjs.PrintPageBreak; exports.Progress = _chunkLODDAS62js.Progress; exports.QRCode = _chunkAUW7DCXLjs.QRCode; exports.RadarChart = _chunkEOU6WZTSjs.RadarChart; exports.Radio = _chunkTMON4MPOjs.Radio; exports.RadioGroup = _chunkZFMMAYSXjs.RadioGroup; exports.Rate = _chunkGG72T6JKjs.Rate; exports.Resizable = _chunkPFYK2V3Ejs.Resizable; exports.Result = _chunkYID7J6ZKjs.Result; exports.RichTextEditor = _chunkONTRGV5Tjs.RichTextEditor; exports.Row = _chunkVE3SYUMHjs.Row; exports.ScatterChart = _chunkW6AWN7BCjs.ScatterChart; exports.ScrollSpy = _chunkFBFCJCONjs.ScrollSpy; exports.Segmented = _chunkN2JYU4JIjs.Segmented; exports.Select = _chunk6Z4LLPZAjs.Select; exports.Sidebar = _chunkYWTZALG5js.Sidebar; exports.Signature = _chunk7ISEWLA3js.Signature; exports.Skeleton = _chunk4PPTEEDIjs.Skeleton; exports.Slider = _chunk7Z64GEMNjs.Slider; exports.Space = _chunkPTEDJ6MAjs.Space; exports.Splitter = _chunkH4AR4GXHjs.Splitter; exports.Spotlight = _chunkKYP7U6FKjs.Spotlight; exports.Statistic = _chunkZDXIP33Yjs.Statistic; exports.Stepper = _chunkMB3QU3USjs.Stepper; exports.Steps = _chunkXPA2YCQOjs.Steps; exports.StepsItem = _chunkXPA2YCQOjs.StepsItem; exports.SubMenu = _chunkSY4P2AXWjs.SubMenu; exports.SunburstChart = _chunkUIIOZEUPjs.SunburstChart; exports.Switch = _chunk4TEILQSNjs.Switch; exports.TabPane = _chunkRFHPG4KNjs.TabPane; exports.Table = _chunk5EZWYEGJjs.Table; exports.Tabs = _chunkRFHPG4KNjs.Tabs; exports.Tag = _chunkVCULFIZ5js.Tag; exports.TaskBoard = _chunkXHT2VIDRjs.TaskBoard; exports.Text = _chunkUF3DXKCIjs.Text; exports.Textarea = _chunkWVVXZKNIjs.Textarea; exports.TimePicker = _chunk4SO4LANYjs.TimePicker; exports.Timeline = _chunkPR3PQUKMjs.Timeline; exports.Tooltip = _chunkKRFD27WAjs.Tooltip; exports.Tour = _chunkKQ5I7PRMjs.Tour; exports.Transfer = _chunkEF5ZTNHXjs.Transfer; exports.Tree = _chunkSIY6FDKJjs.Tree; exports.TreeMapChart = _chunkX7JAYXPYjs.TreeMapChart; exports.TreeSelect = _chunkCBYJXDW4js.TreeSelect; exports.Upload = _chunkUHFHOTNIjs.Upload; exports.VirtualList = _chunkP36GX65Njs.VirtualList; exports.VirtualTable = _chunk77F5YT4Ejs.VirtualTable; exports.Watermark = _chunkCHPJPIW6js.Watermark; exports.notification = _chunkNMEVQPODjs.notification; exports.useAnchorContext = _chunkSQGFNVYTjs.useAnchorContext; exports.useBreadcrumbContext = _chunkVDF2BD2Ajs.useBreadcrumbContext; exports.useChartInteraction = _chunkXTV5JLLCjs.useChartInteraction; exports.useCollapseContext = _chunkQ2GPRAF4js.useCollapseContext; exports.useControlledState = _chunkUKGQ7256js.useControlledState; exports.useDrag = useDrag; exports.useFormContext = _chunkUPPHGL64js.useFormContext; exports.useFormController = useFormController; exports.useMenuContext = _chunkSY4P2AXWjs.useMenuContext; exports.useStepsContext = _chunkXPA2YCQOjs.useStepsContext; exports.useTabsContext = _chunkRFHPG4KNjs.useTabsContext; exports.useTigerConfig = _chunkTDODFBBOjs.useTigerConfig; exports.version = version;
910
+ exports.ActivityFeed = _chunkDXMSDLVJjs.ActivityFeed; exports.Affix = _chunkRYIYE2PYjs.Affix; exports.Alert = _chunkVNMWPJDNjs.Alert; exports.Anchor = _chunkSQGFNVYTjs.Anchor; exports.AnchorLink = _chunkSQGFNVYTjs.AnchorLink; exports.AreaChart = _chunkDCKBVRLIjs.AreaChart; exports.AutoComplete = _chunkU356F7GUjs.AutoComplete; exports.Avatar = _chunk4MQCUKICjs.Avatar; exports.AvatarGroup = _chunkTQOWIDQTjs.AvatarGroup; exports.BackTop = _chunk4LIDROT4js.BackTop; exports.Badge = _chunkPNAWOJ32js.Badge; exports.BarChart = _chunkNMKFR435js.BarChart; exports.Breadcrumb = _chunkVDF2BD2Ajs.Breadcrumb; exports.BreadcrumbItem = _chunkVDF2BD2Ajs.BreadcrumbItem; exports.Button = _chunk56ZV3VVYjs.Button; exports.ButtonGroup = _chunkYMKA4L3Zjs.ButtonGroup; exports.Calendar = _chunk5EVHVZG5js.Calendar; exports.Card = _chunkUIO6O4MIjs.Card; exports.Carousel = _chunkB5TUTAVXjs.Carousel; exports.Cascader = _chunkTC6JLEGZjs.Cascader; exports.ChartAxis = _chunkE5GD3H7Ljs.ChartAxis; exports.ChartCanvas = _chunkUKLVOR4Ejs.ChartCanvas; exports.ChartGrid = _chunk3QFHVAZTjs.ChartGrid; exports.ChartLegend = _chunkWV5XHYW6js.ChartLegend; exports.ChartSeries = _chunkAX5XRD2Qjs.ChartSeries; exports.ChartTooltip = _chunkUVMQJOTXjs.ChartTooltip; exports.ChatWindow = _chunk2DH6MGC6js.ChatWindow; exports.Checkbox = _chunkF7H4ALKNjs.Checkbox; exports.CheckboxGroup = _chunkJLRRXRZOjs.CheckboxGroup; exports.Code = _chunkRTHC4KWMjs.Code; exports.CodeEditor = _chunk3E76U2RGjs.CodeEditor; exports.Col = _chunkQQKP437Ljs.Col; exports.Collapse = _chunkQ2GPRAF4js.Collapse; exports.CollapsePanel = _chunkWN3ZI7FNjs.CollapsePanel; exports.ColorPicker = _chunkJB33A4S6js.ColorPicker; exports.ColorSwatch = _chunkJ4SNBXJMjs.ColorSwatch; exports.CommentThread = _chunkEX63M5IDjs.CommentThread; exports.ConfigProvider = _chunkTDODFBBOjs.ConfigProvider; exports.Container = _chunkW3VLCSJLjs.Container; exports.Content = _chunkOFCKGWTSjs.Content; exports.Countdown = _chunkU3M24RPHjs.Countdown; exports.CronEditor = _chunkNRLGZRK2js.CronEditor; exports.CropUpload = _chunkUE52NMPOjs.CropUpload; exports.DataTableWithToolbar = _chunk7YUD6VICjs.DataTableWithToolbar; exports.DatePicker = _chunkTSJYAEFZjs.DatePicker; exports.Descriptions = _chunk6CWZXS5Bjs.Descriptions; exports.Divider = _chunkIZXU7DF6js.Divider; exports.DonutChart = _chunkK2TXT5HQjs.DonutChart; exports.Drawer = _chunkOHSJ4KTUjs.Drawer; exports.Dropdown = _chunkAKZY7QYAjs.Dropdown; exports.DropdownItem = _chunkC3NKZZQQjs.DropdownItem; exports.DropdownMenu = _chunkAKZY7QYAjs.DropdownMenu; exports.Empty = _chunkZRHDNGWOjs.Empty; exports.FileManager = _chunkHR5GBE3Pjs.FileManager; exports.FloatButton = _chunkXFPJYKBQjs.FloatButton; exports.FloatButtonGroup = _chunkXFPJYKBQjs.FloatButtonGroup; exports.Footer = _chunkTB2UHDOZjs.Footer; exports.Form = _chunkUPPHGL64js.Form; exports.FormItem = _chunkBCQQYERGjs.FormItem; exports.FormWizard = _chunkDTYDPMNRjs.FormWizard; exports.FunnelChart = _chunkQIKR5EFIjs.FunnelChart; exports.Gantt = _chunkQMK4OFC5js.Gantt; exports.GaugeChart = _chunkT7KO6EVKjs.GaugeChart; exports.Header = _chunkVJJ76I7Ujs.Header; exports.HeatmapChart = _chunkH6NC6SBXjs.HeatmapChart; exports.Icon = _chunkIHH2O7YKjs.Icon; exports.Image = _chunkCGIBGSNEjs.Image; exports.ImageAnnotation = _chunkEHIXCFD7js.ImageAnnotation; exports.ImageCropper = _chunkFI53LYZ6js.ImageCropper; exports.ImageGroup = _chunkMB6U72CIjs.ImageGroup; exports.ImageGroupContext = _chunkMB6U72CIjs.ImageGroupContext; exports.ImagePreview = _chunk4U5HSR2Hjs.ImagePreview; exports.ImageViewer = _chunkUXUYCWQCjs.ImageViewer; exports.InfiniteScroll = _chunkM73NMNZXjs.InfiniteScroll; exports.Input = _chunkZYJTHGQWjs.Input; exports.InputGroup = _chunkI3CDTF4Ujs.InputGroup; exports.InputGroupAddon = _chunkI3CDTF4Ujs.InputGroupAddon; exports.InputNumber = _chunkSKMZTW3Kjs.InputNumber; exports.Kanban = _chunkCSH2QOOHjs.Kanban; exports.Layout = _chunkD6TKXVEBjs.Layout; exports.LineChart = _chunkEQD2U4KMjs.LineChart; exports.Link = _chunkQYYAXM5Fjs.Link; exports.List = _chunkWG3YS2QVjs.List; exports.Loading = _chunk3MRP3XYIjs.Loading; exports.MarkdownEditor = _chunkBFAZZUD6js.MarkdownEditor; exports.Mentions = _chunkXRNKHQTLjs.Mentions; exports.Menu = _chunk3PWNNDNQjs.Menu; exports.MenuItem = _chunk3PWNNDNQjs.MenuItem; exports.MenuItemGroup = _chunk3PWNNDNQjs.MenuItemGroup; exports.Message = _chunkLMTUM3J3js.Message; exports.MessageContainer = _chunkLMTUM3J3js.MessageContainer; exports.Modal = _chunkSXHP4Q7Ojs.Modal; exports.NotificationCenter = _chunkRUZQN7X3js.NotificationCenter; exports.NotificationContainer = _chunkNMEVQPODjs.NotificationContainer; exports.NumberKeyboard = _chunkG5USITWFjs.NumberKeyboard; exports.OrgChart = _chunk4DTMFQCYjs.OrgChart; exports.Pagination = _chunkKEF2PEP4js.Pagination; exports.PieChart = _chunkBO45CU4Qjs.PieChart; exports.Popconfirm = _chunkJNRUOQNTjs.Popconfirm; exports.Popover = _chunkIAONLOJNjs.Popover; exports.PrintLayout = _chunkQ4JMAQXJjs.PrintLayout; exports.PrintPageBreak = _chunkQ4JMAQXJjs.PrintPageBreak; exports.Progress = _chunkLODDAS62js.Progress; exports.QRCode = _chunkAUW7DCXLjs.QRCode; exports.RadarChart = _chunkEOU6WZTSjs.RadarChart; exports.Radio = _chunkTMON4MPOjs.Radio; exports.RadioGroup = _chunkZFMMAYSXjs.RadioGroup; exports.Rate = _chunkGG72T6JKjs.Rate; exports.Resizable = _chunkPFYK2V3Ejs.Resizable; exports.Result = _chunkYID7J6ZKjs.Result; exports.RichTextEditor = _chunkONTRGV5Tjs.RichTextEditor; exports.Row = _chunkVE3SYUMHjs.Row; exports.ScatterChart = _chunkW6AWN7BCjs.ScatterChart; exports.ScrollSpy = _chunkFBFCJCONjs.ScrollSpy; exports.Segmented = _chunkN2JYU4JIjs.Segmented; exports.Select = _chunk6Z4LLPZAjs.Select; exports.Sidebar = _chunkYWTZALG5js.Sidebar; exports.Signature = _chunk7ISEWLA3js.Signature; exports.Skeleton = _chunk4PPTEEDIjs.Skeleton; exports.Slider = _chunk7Z64GEMNjs.Slider; exports.Space = _chunkPTEDJ6MAjs.Space; exports.Splitter = _chunkH4AR4GXHjs.Splitter; exports.Spotlight = _chunkKYP7U6FKjs.Spotlight; exports.Statistic = _chunkZDXIP33Yjs.Statistic; exports.Stepper = _chunkMB3QU3USjs.Stepper; exports.Steps = _chunkXPA2YCQOjs.Steps; exports.StepsItem = _chunkXPA2YCQOjs.StepsItem; exports.SubMenu = _chunk3PWNNDNQjs.SubMenu; exports.SunburstChart = _chunkUIIOZEUPjs.SunburstChart; exports.Switch = _chunk4TEILQSNjs.Switch; exports.TabPane = _chunkRFHPG4KNjs.TabPane; exports.Table = _chunk5EZWYEGJjs.Table; exports.Tabs = _chunkRFHPG4KNjs.Tabs; exports.Tag = _chunkVCULFIZ5js.Tag; exports.TaskBoard = _chunkXHT2VIDRjs.TaskBoard; exports.Text = _chunkUF3DXKCIjs.Text; exports.Textarea = _chunkWVVXZKNIjs.Textarea; exports.TimePicker = _chunk4SO4LANYjs.TimePicker; exports.Timeline = _chunkPR3PQUKMjs.Timeline; exports.Tooltip = _chunkKRFD27WAjs.Tooltip; exports.Tour = _chunkKQ5I7PRMjs.Tour; exports.Transfer = _chunkEF5ZTNHXjs.Transfer; exports.Tree = _chunkSIY6FDKJjs.Tree; exports.TreeMapChart = _chunkX7JAYXPYjs.TreeMapChart; exports.TreeSelect = _chunkCBYJXDW4js.TreeSelect; exports.Upload = _chunkUHFHOTNIjs.Upload; exports.VirtualList = _chunkP36GX65Njs.VirtualList; exports.VirtualTable = _chunk77F5YT4Ejs.VirtualTable; exports.Watermark = _chunkCHPJPIW6js.Watermark; exports.notification = _chunkNMEVQPODjs.notification; exports.useAnchorContext = _chunkSQGFNVYTjs.useAnchorContext; exports.useBreadcrumbContext = _chunkVDF2BD2Ajs.useBreadcrumbContext; exports.useChartInteraction = _chunkXTV5JLLCjs.useChartInteraction; exports.useCollapseContext = _chunkQ2GPRAF4js.useCollapseContext; exports.useControlledState = _chunkUKGQ7256js.useControlledState; exports.useDrag = useDrag; exports.useFormContext = _chunkUPPHGL64js.useFormContext; exports.useFormController = useFormController; exports.useMenuContext = _chunk3PWNNDNQjs.useMenuContext; exports.useStepsContext = _chunkXPA2YCQOjs.useStepsContext; exports.useTabsContext = _chunkRFHPG4KNjs.useTabsContext; exports.useTigerConfig = _chunkTDODFBBOjs.useTigerConfig; exports.version = version;
package/dist/index.mjs CHANGED
@@ -144,7 +144,7 @@ import {
144
144
  MenuItemGroup,
145
145
  SubMenu,
146
146
  useMenuContext
147
- } from "./chunk-L2NMDYYQ.mjs";
147
+ } from "./chunk-OOE5ZJNW.mjs";
148
148
  import {
149
149
  Message,
150
150
  MessageContainer
@@ -231,7 +231,7 @@ import {
231
231
  } from "./chunk-XBM76P27.mjs";
232
232
  import {
233
233
  Drawer
234
- } from "./chunk-G6MD6ZVN.mjs";
234
+ } from "./chunk-D62GWQBX.mjs";
235
235
  import {
236
236
  DropdownItem
237
237
  } from "./chunk-73OAHAPC.mjs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expcat/tigercat-react",
3
- "version": "1.2.16",
3
+ "version": "1.2.19",
4
4
  "description": "React components for Tigercat UI library",
5
5
  "license": "MIT",
6
6
  "author": "Yizhe Wang",
@@ -47,7 +47,7 @@
47
47
  "access": "public"
48
48
  },
49
49
  "dependencies": {
50
- "@expcat/tigercat-core": "1.2.16"
50
+ "@expcat/tigercat-core": "1.2.19"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/node": "^25.6.0",