@expcat/tigercat-vue 1.2.16 → 1.2.23
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.
- package/dist/{chunk-2GQE47OY.mjs → chunk-DSHV7EAX.mjs} +45 -4
- package/dist/{chunk-FXS5GHQZ.js → chunk-IQZX54SQ.js} +45 -4
- package/dist/{chunk-LDDGBB3V.mjs → chunk-IXJSZIAE.mjs} +100 -23
- package/dist/{chunk-4OOR4524.js → chunk-ZNGRSXFK.js} +107 -30
- package/dist/components/ActivityFeed.d.mts +6 -6
- package/dist/components/ActivityFeed.d.ts +6 -6
- package/dist/components/Alert.d.mts +2 -2
- package/dist/components/Alert.d.ts +2 -2
- package/dist/components/Anchor.d.mts +1 -1
- package/dist/components/Anchor.d.ts +1 -1
- package/dist/components/AreaChart.d.mts +1 -1
- package/dist/components/AreaChart.d.ts +1 -1
- package/dist/components/AutoComplete.d.mts +2 -2
- package/dist/components/AutoComplete.d.ts +2 -2
- package/dist/components/Avatar.d.mts +1 -1
- package/dist/components/Avatar.d.ts +1 -1
- package/dist/components/Badge.d.mts +3 -3
- package/dist/components/Badge.d.ts +3 -3
- package/dist/components/BarChart.d.mts +1 -1
- package/dist/components/BarChart.d.ts +1 -1
- package/dist/components/Breadcrumb.d.mts +2 -2
- package/dist/components/Breadcrumb.d.ts +2 -2
- package/dist/components/Button.d.mts +3 -3
- package/dist/components/Button.d.ts +3 -3
- package/dist/components/ButtonGroup.d.mts +1 -1
- package/dist/components/ButtonGroup.d.ts +1 -1
- package/dist/components/Calendar.d.mts +1 -1
- package/dist/components/Calendar.d.ts +1 -1
- package/dist/components/Card.d.mts +2 -2
- package/dist/components/Card.d.ts +2 -2
- package/dist/components/ChatWindow.d.mts +3 -3
- package/dist/components/ChatWindow.d.ts +3 -3
- package/dist/components/CodeEditor.d.mts +2 -2
- package/dist/components/CodeEditor.d.ts +2 -2
- package/dist/components/Collapse.d.mts +1 -1
- package/dist/components/Collapse.d.ts +1 -1
- package/dist/components/CollapsePanel.d.mts +1 -1
- package/dist/components/CollapsePanel.d.ts +1 -1
- package/dist/components/ColorSwatch.d.mts +1 -1
- package/dist/components/ColorSwatch.d.ts +1 -1
- package/dist/components/CommentThread.d.mts +2 -2
- package/dist/components/CommentThread.d.ts +2 -2
- package/dist/components/ConfigProvider.d.mts +1 -1
- package/dist/components/ConfigProvider.d.ts +1 -1
- package/dist/components/DataTableWithToolbar.d.mts +8 -8
- package/dist/components/DataTableWithToolbar.d.ts +8 -8
- package/dist/components/DatePicker.d.mts +2 -2
- package/dist/components/DatePicker.d.ts +2 -2
- package/dist/components/Descriptions.d.mts +2 -2
- package/dist/components/Descriptions.d.ts +2 -2
- package/dist/components/DonutChart.d.mts +2 -2
- package/dist/components/DonutChart.d.ts +2 -2
- package/dist/components/Drawer.d.mts +74 -5
- package/dist/components/Drawer.d.ts +74 -5
- package/dist/components/Drawer.js +2 -2
- package/dist/components/Drawer.mjs +1 -1
- package/dist/components/FileManager.d.mts +1 -1
- package/dist/components/FileManager.d.ts +1 -1
- package/dist/components/FloatButton.d.mts +3 -3
- package/dist/components/FloatButton.d.ts +3 -3
- package/dist/components/Form.d.mts +1 -1
- package/dist/components/Form.d.ts +1 -1
- package/dist/components/FormWizard.d.mts +4 -4
- package/dist/components/FormWizard.d.ts +4 -4
- package/dist/components/FunnelChart.d.mts +1 -1
- package/dist/components/FunnelChart.d.ts +1 -1
- package/dist/components/Gantt.d.mts +1 -1
- package/dist/components/Gantt.d.ts +1 -1
- package/dist/components/GaugeChart.d.mts +1 -1
- package/dist/components/GaugeChart.d.ts +1 -1
- package/dist/components/HeatmapChart.d.mts +2 -2
- package/dist/components/HeatmapChart.d.ts +2 -2
- package/dist/components/Image.d.mts +2 -2
- package/dist/components/Image.d.ts +2 -2
- package/dist/components/ImageAnnotation.d.mts +3 -3
- package/dist/components/ImageAnnotation.d.ts +3 -3
- package/dist/components/InfiniteScroll.d.mts +2 -2
- package/dist/components/InfiniteScroll.d.ts +2 -2
- package/dist/components/Input.d.mts +4 -4
- package/dist/components/Input.d.ts +4 -4
- package/dist/components/InputGroup.d.mts +1 -1
- package/dist/components/InputGroup.d.ts +1 -1
- package/dist/components/InputNumber.d.mts +1 -1
- package/dist/components/InputNumber.d.ts +1 -1
- package/dist/components/Kanban.d.mts +1 -1
- package/dist/components/Kanban.d.ts +1 -1
- package/dist/components/LineChart.d.mts +1 -1
- package/dist/components/LineChart.d.ts +1 -1
- package/dist/components/Link.d.mts +1 -1
- package/dist/components/Link.d.ts +1 -1
- package/dist/components/List.d.mts +6 -6
- package/dist/components/List.d.ts +6 -6
- package/dist/components/Loading.d.mts +5 -5
- package/dist/components/Loading.d.ts +5 -5
- package/dist/components/MarkdownEditor.d.mts +2 -2
- package/dist/components/MarkdownEditor.d.ts +2 -2
- package/dist/components/Mentions.d.mts +2 -2
- package/dist/components/Mentions.d.ts +2 -2
- package/dist/components/Menu.d.mts +25 -4
- package/dist/components/Menu.d.ts +25 -4
- package/dist/components/Menu.js +3 -2
- package/dist/components/Menu.mjs +2 -1
- package/dist/components/MenuItem.js +4 -3
- package/dist/components/MenuItem.mjs +2 -1
- package/dist/components/MenuItemGroup.js +4 -3
- package/dist/components/MenuItemGroup.mjs +2 -1
- package/dist/components/Modal.d.mts +7 -7
- package/dist/components/Modal.d.ts +7 -7
- package/dist/components/NotificationCenter.d.mts +5 -5
- package/dist/components/NotificationCenter.d.ts +5 -5
- package/dist/components/NumberKeyboard.d.mts +2 -2
- package/dist/components/NumberKeyboard.d.ts +2 -2
- package/dist/components/OrgChart.d.mts +1 -1
- package/dist/components/OrgChart.d.ts +1 -1
- package/dist/components/Pagination.d.mts +3 -3
- package/dist/components/Pagination.d.ts +3 -3
- package/dist/components/PieChart.d.mts +2 -2
- package/dist/components/PieChart.d.ts +2 -2
- package/dist/components/Popconfirm.d.mts +3 -3
- package/dist/components/Popconfirm.d.ts +3 -3
- package/dist/components/Popover.d.mts +1 -1
- package/dist/components/Popover.d.ts +1 -1
- package/dist/components/Progress.d.mts +2 -2
- package/dist/components/Progress.d.ts +2 -2
- package/dist/components/QRCode.d.mts +1 -1
- package/dist/components/QRCode.d.ts +1 -1
- package/dist/components/RadarChart.d.mts +1 -1
- package/dist/components/RadarChart.d.ts +1 -1
- package/dist/components/RichTextEditor.d.mts +1 -1
- package/dist/components/RichTextEditor.d.ts +1 -1
- package/dist/components/Row.d.mts +1 -1
- package/dist/components/Row.d.ts +1 -1
- package/dist/components/ScatterChart.d.mts +1 -1
- package/dist/components/ScatterChart.d.ts +1 -1
- package/dist/components/ScrollSpy.d.mts +2 -2
- package/dist/components/ScrollSpy.d.ts +2 -2
- package/dist/components/Select.d.mts +1 -1
- package/dist/components/Select.d.ts +1 -1
- package/dist/components/Signature.d.mts +2 -2
- package/dist/components/Signature.d.ts +2 -2
- package/dist/components/Skeleton.d.mts +1 -1
- package/dist/components/Skeleton.d.ts +1 -1
- package/dist/components/Space.d.mts +2 -2
- package/dist/components/Space.d.ts +2 -2
- package/dist/components/Splitter.d.mts +1 -1
- package/dist/components/Splitter.d.ts +1 -1
- package/dist/components/Spotlight.d.mts +4 -4
- package/dist/components/Spotlight.d.ts +4 -4
- package/dist/components/Steps.d.mts +2 -2
- package/dist/components/Steps.d.ts +2 -2
- package/dist/components/SubMenu.js +4 -3
- package/dist/components/SubMenu.mjs +2 -1
- package/dist/components/SunburstChart.d.mts +1 -1
- package/dist/components/SunburstChart.d.ts +1 -1
- package/dist/components/Table.d.mts +5 -5
- package/dist/components/Table.d.ts +5 -5
- package/dist/components/Tabs.d.mts +2 -2
- package/dist/components/Tabs.d.ts +2 -2
- package/dist/components/Tag.d.mts +1 -1
- package/dist/components/Tag.d.ts +1 -1
- package/dist/components/TaskBoard.d.mts +1 -1
- package/dist/components/TaskBoard.d.ts +1 -1
- package/dist/components/Text.d.mts +3 -3
- package/dist/components/Text.d.ts +3 -3
- package/dist/components/Textarea.d.mts +1 -1
- package/dist/components/Textarea.d.ts +1 -1
- package/dist/components/TimePicker.d.mts +3 -3
- package/dist/components/TimePicker.d.ts +3 -3
- package/dist/components/Timeline.d.mts +3 -3
- package/dist/components/Timeline.d.ts +3 -3
- package/dist/components/Tooltip.d.mts +1 -1
- package/dist/components/Tooltip.d.ts +1 -1
- package/dist/components/Tour.d.mts +2 -2
- package/dist/components/Tour.d.ts +2 -2
- package/dist/components/Tree.d.mts +2 -2
- package/dist/components/Tree.d.ts +2 -2
- package/dist/components/TreeMapChart.d.mts +1 -1
- package/dist/components/TreeMapChart.d.ts +1 -1
- package/dist/components/Upload.d.mts +4 -4
- package/dist/components/Upload.d.ts +4 -4
- package/dist/components/VirtualTable.d.mts +2 -2
- package/dist/components/VirtualTable.d.ts +2 -2
- package/dist/components/Watermark.d.mts +1 -1
- package/dist/components/Watermark.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/index.mjs +2 -2
- package/package.json +2 -2
|
@@ -141,6 +141,29 @@ var Drawer = defineComponent({
|
|
|
141
141
|
type: Boolean,
|
|
142
142
|
default: false
|
|
143
143
|
},
|
|
144
|
+
/**
|
|
145
|
+
* When destroyOnClose is true, wait for leave animation before unmounting.
|
|
146
|
+
* @default false
|
|
147
|
+
*/
|
|
148
|
+
destroyOnCloseAfterLeave: {
|
|
149
|
+
type: Boolean,
|
|
150
|
+
default: false
|
|
151
|
+
},
|
|
152
|
+
/**
|
|
153
|
+
* Whether the drawer panel should become fullscreen on mobile viewports.
|
|
154
|
+
* @default true
|
|
155
|
+
*/
|
|
156
|
+
fullscreenOnMobile: {
|
|
157
|
+
type: Boolean,
|
|
158
|
+
default: true
|
|
159
|
+
},
|
|
160
|
+
/**
|
|
161
|
+
* Additional CSS class for drawer panel.
|
|
162
|
+
*/
|
|
163
|
+
panelClassName: {
|
|
164
|
+
type: String,
|
|
165
|
+
default: void 0
|
|
166
|
+
},
|
|
144
167
|
/**
|
|
145
168
|
* Custom inline style for drawer panel
|
|
146
169
|
*/
|
|
@@ -148,6 +171,13 @@ var Drawer = defineComponent({
|
|
|
148
171
|
type: Object,
|
|
149
172
|
default: void 0
|
|
150
173
|
},
|
|
174
|
+
/**
|
|
175
|
+
* Custom inline style for drawer panel.
|
|
176
|
+
*/
|
|
177
|
+
panelStyle: {
|
|
178
|
+
type: [String, Object, Array],
|
|
179
|
+
default: void 0
|
|
180
|
+
},
|
|
151
181
|
/**
|
|
152
182
|
* Close button aria-label
|
|
153
183
|
* @default 'Close drawer'
|
|
@@ -177,6 +207,7 @@ var Drawer = defineComponent({
|
|
|
177
207
|
setup(props, { slots, emit, attrs }) {
|
|
178
208
|
const instanceId = ref(createDrawerId());
|
|
179
209
|
const hasBeenOpened = ref(false);
|
|
210
|
+
const deferredRendered = ref(props.open);
|
|
180
211
|
const dialogRef = ref(null);
|
|
181
212
|
const closeButtonRef = ref(null);
|
|
182
213
|
const previousActiveElement = ref(null);
|
|
@@ -188,7 +219,9 @@ var Drawer = defineComponent({
|
|
|
188
219
|
hasBeenOpened.value = true;
|
|
189
220
|
return true;
|
|
190
221
|
}
|
|
191
|
-
if (props.destroyOnClose)
|
|
222
|
+
if (props.destroyOnClose) {
|
|
223
|
+
return props.destroyOnCloseAfterLeave ? deferredRendered.value : false;
|
|
224
|
+
}
|
|
192
225
|
return hasBeenOpened.value;
|
|
193
226
|
});
|
|
194
227
|
const handleClose = () => {
|
|
@@ -245,11 +278,15 @@ var Drawer = defineComponent({
|
|
|
245
278
|
() => props.open,
|
|
246
279
|
async (nextVisible) => {
|
|
247
280
|
if (nextVisible) {
|
|
281
|
+
deferredRendered.value = true;
|
|
248
282
|
previousActiveElement.value = captureActiveElement();
|
|
249
283
|
await nextTick();
|
|
250
284
|
focusFirst([closeButtonRef.value, dialogRef.value]);
|
|
251
285
|
return;
|
|
252
286
|
}
|
|
287
|
+
if (props.destroyOnClose && !props.destroyOnCloseAfterLeave) {
|
|
288
|
+
deferredRendered.value = false;
|
|
289
|
+
}
|
|
253
290
|
restoreFocus(previousActiveElement.value);
|
|
254
291
|
}
|
|
255
292
|
);
|
|
@@ -260,6 +297,9 @@ var Drawer = defineComponent({
|
|
|
260
297
|
return;
|
|
261
298
|
const timer = window.setTimeout(() => {
|
|
262
299
|
emit(nextVisible ? "after-enter" : "after-leave");
|
|
300
|
+
if (!nextVisible && props.destroyOnClose && props.destroyOnCloseAfterLeave) {
|
|
301
|
+
deferredRendered.value = false;
|
|
302
|
+
}
|
|
263
303
|
}, ANIMATION_DURATION_MS);
|
|
264
304
|
onCleanup(() => window.clearTimeout(timer));
|
|
265
305
|
},
|
|
@@ -278,16 +318,17 @@ var Drawer = defineComponent({
|
|
|
278
318
|
);
|
|
279
319
|
const maskClasses = getDrawerMaskClasses(props.open);
|
|
280
320
|
const panelClasses = classNames(
|
|
281
|
-
getDrawerPanelClasses(props.placement, props.open, props.size),
|
|
321
|
+
getDrawerPanelClasses(props.placement, props.open, props.size, props.fullscreenOnMobile),
|
|
282
322
|
"flex flex-col",
|
|
283
323
|
props.className,
|
|
324
|
+
props.panelClassName,
|
|
284
325
|
coerceClassValue(attrs.class)
|
|
285
326
|
);
|
|
286
327
|
const isHorizontal = props.placement === "left" || props.placement === "right";
|
|
287
328
|
const widthStyle = props.width ? {
|
|
288
329
|
[isHorizontal ? "width" : "height"]: typeof props.width === "number" ? `${props.width}px` : props.width
|
|
289
330
|
} : void 0;
|
|
290
|
-
const mergedStyle = mergeStyleValues(attrs.style, props.style, widthStyle);
|
|
331
|
+
const mergedStyle = mergeStyleValues(attrs.style, props.panelStyle, props.style, widthStyle);
|
|
291
332
|
const headerClasses = getDrawerHeaderClasses();
|
|
292
333
|
const bodyClasses = getDrawerBodyClasses(props.bodyClassName);
|
|
293
334
|
const footerClasses = getDrawerFooterClasses();
|
|
@@ -370,7 +411,7 @@ var Drawer = defineComponent({
|
|
|
370
411
|
{
|
|
371
412
|
class: containerClasses,
|
|
372
413
|
style: { zIndex: props.zIndex },
|
|
373
|
-
hidden: !props.open,
|
|
414
|
+
hidden: !props.open && !(props.destroyOnClose && props.destroyOnCloseAfterLeave),
|
|
374
415
|
"aria-hidden": !props.open ? "true" : void 0,
|
|
375
416
|
"data-tiger-drawer-root": ""
|
|
376
417
|
},
|
|
@@ -141,6 +141,29 @@ var Drawer = _vue.defineComponent.call(void 0, {
|
|
|
141
141
|
type: Boolean,
|
|
142
142
|
default: false
|
|
143
143
|
},
|
|
144
|
+
/**
|
|
145
|
+
* When destroyOnClose is true, wait for leave animation before unmounting.
|
|
146
|
+
* @default false
|
|
147
|
+
*/
|
|
148
|
+
destroyOnCloseAfterLeave: {
|
|
149
|
+
type: Boolean,
|
|
150
|
+
default: false
|
|
151
|
+
},
|
|
152
|
+
/**
|
|
153
|
+
* Whether the drawer panel should become fullscreen on mobile viewports.
|
|
154
|
+
* @default true
|
|
155
|
+
*/
|
|
156
|
+
fullscreenOnMobile: {
|
|
157
|
+
type: Boolean,
|
|
158
|
+
default: true
|
|
159
|
+
},
|
|
160
|
+
/**
|
|
161
|
+
* Additional CSS class for drawer panel.
|
|
162
|
+
*/
|
|
163
|
+
panelClassName: {
|
|
164
|
+
type: String,
|
|
165
|
+
default: void 0
|
|
166
|
+
},
|
|
144
167
|
/**
|
|
145
168
|
* Custom inline style for drawer panel
|
|
146
169
|
*/
|
|
@@ -148,6 +171,13 @@ var Drawer = _vue.defineComponent.call(void 0, {
|
|
|
148
171
|
type: Object,
|
|
149
172
|
default: void 0
|
|
150
173
|
},
|
|
174
|
+
/**
|
|
175
|
+
* Custom inline style for drawer panel.
|
|
176
|
+
*/
|
|
177
|
+
panelStyle: {
|
|
178
|
+
type: [String, Object, Array],
|
|
179
|
+
default: void 0
|
|
180
|
+
},
|
|
151
181
|
/**
|
|
152
182
|
* Close button aria-label
|
|
153
183
|
* @default 'Close drawer'
|
|
@@ -177,6 +207,7 @@ var Drawer = _vue.defineComponent.call(void 0, {
|
|
|
177
207
|
setup(props, { slots, emit, attrs }) {
|
|
178
208
|
const instanceId = _vue.ref.call(void 0, createDrawerId());
|
|
179
209
|
const hasBeenOpened = _vue.ref.call(void 0, false);
|
|
210
|
+
const deferredRendered = _vue.ref.call(void 0, props.open);
|
|
180
211
|
const dialogRef = _vue.ref.call(void 0, null);
|
|
181
212
|
const closeButtonRef = _vue.ref.call(void 0, null);
|
|
182
213
|
const previousActiveElement = _vue.ref.call(void 0, null);
|
|
@@ -188,7 +219,9 @@ var Drawer = _vue.defineComponent.call(void 0, {
|
|
|
188
219
|
hasBeenOpened.value = true;
|
|
189
220
|
return true;
|
|
190
221
|
}
|
|
191
|
-
if (props.destroyOnClose)
|
|
222
|
+
if (props.destroyOnClose) {
|
|
223
|
+
return props.destroyOnCloseAfterLeave ? deferredRendered.value : false;
|
|
224
|
+
}
|
|
192
225
|
return hasBeenOpened.value;
|
|
193
226
|
});
|
|
194
227
|
const handleClose = () => {
|
|
@@ -245,11 +278,15 @@ var Drawer = _vue.defineComponent.call(void 0, {
|
|
|
245
278
|
() => props.open,
|
|
246
279
|
async (nextVisible) => {
|
|
247
280
|
if (nextVisible) {
|
|
281
|
+
deferredRendered.value = true;
|
|
248
282
|
previousActiveElement.value = _tigercatcore.captureActiveElement.call(void 0, );
|
|
249
283
|
await _vue.nextTick.call(void 0, );
|
|
250
284
|
_tigercatcore.focusFirst.call(void 0, [closeButtonRef.value, dialogRef.value]);
|
|
251
285
|
return;
|
|
252
286
|
}
|
|
287
|
+
if (props.destroyOnClose && !props.destroyOnCloseAfterLeave) {
|
|
288
|
+
deferredRendered.value = false;
|
|
289
|
+
}
|
|
253
290
|
_tigercatcore.restoreFocus.call(void 0, previousActiveElement.value);
|
|
254
291
|
}
|
|
255
292
|
);
|
|
@@ -260,6 +297,9 @@ var Drawer = _vue.defineComponent.call(void 0, {
|
|
|
260
297
|
return;
|
|
261
298
|
const timer = window.setTimeout(() => {
|
|
262
299
|
emit(nextVisible ? "after-enter" : "after-leave");
|
|
300
|
+
if (!nextVisible && props.destroyOnClose && props.destroyOnCloseAfterLeave) {
|
|
301
|
+
deferredRendered.value = false;
|
|
302
|
+
}
|
|
263
303
|
}, _tigercatcore.ANIMATION_DURATION_MS);
|
|
264
304
|
onCleanup(() => window.clearTimeout(timer));
|
|
265
305
|
},
|
|
@@ -278,16 +318,17 @@ var Drawer = _vue.defineComponent.call(void 0, {
|
|
|
278
318
|
);
|
|
279
319
|
const maskClasses = _tigercatcore.getDrawerMaskClasses.call(void 0, props.open);
|
|
280
320
|
const panelClasses = _tigercatcore.classNames.call(void 0,
|
|
281
|
-
_tigercatcore.getDrawerPanelClasses.call(void 0, props.placement, props.open, props.size),
|
|
321
|
+
_tigercatcore.getDrawerPanelClasses.call(void 0, props.placement, props.open, props.size, props.fullscreenOnMobile),
|
|
282
322
|
"flex flex-col",
|
|
283
323
|
props.className,
|
|
324
|
+
props.panelClassName,
|
|
284
325
|
_tigercatcore.coerceClassValue.call(void 0, attrs.class)
|
|
285
326
|
);
|
|
286
327
|
const isHorizontal = props.placement === "left" || props.placement === "right";
|
|
287
328
|
const widthStyle = props.width ? {
|
|
288
329
|
[isHorizontal ? "width" : "height"]: typeof props.width === "number" ? `${props.width}px` : props.width
|
|
289
330
|
} : void 0;
|
|
290
|
-
const mergedStyle = _tigercatcore.mergeStyleValues.call(void 0, attrs.style, props.style, widthStyle);
|
|
331
|
+
const mergedStyle = _tigercatcore.mergeStyleValues.call(void 0, attrs.style, props.panelStyle, props.style, widthStyle);
|
|
291
332
|
const headerClasses = _tigercatcore.getDrawerHeaderClasses.call(void 0, );
|
|
292
333
|
const bodyClasses = _tigercatcore.getDrawerBodyClasses.call(void 0, props.bodyClassName);
|
|
293
334
|
const footerClasses = _tigercatcore.getDrawerFooterClasses.call(void 0, );
|
|
@@ -370,7 +411,7 @@ var Drawer = _vue.defineComponent.call(void 0, {
|
|
|
370
411
|
{
|
|
371
412
|
class: containerClasses,
|
|
372
413
|
style: { zIndex: props.zIndex },
|
|
373
|
-
hidden: !props.open,
|
|
414
|
+
hidden: !props.open && !(props.destroyOnClose && props.destroyOnCloseAfterLeave),
|
|
374
415
|
"aria-hidden": !props.open ? "true" : void 0,
|
|
375
416
|
"data-tiger-drawer-root": ""
|
|
376
417
|
},
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
renderVueBodyTeleport,
|
|
3
|
+
useVueFloating
|
|
4
|
+
} from "./chunk-7RIWAO2A.mjs";
|
|
5
|
+
|
|
1
6
|
// src/components/Menu.ts
|
|
2
7
|
import {
|
|
3
8
|
defineComponent,
|
|
@@ -22,6 +27,7 @@ import {
|
|
|
22
27
|
getSubMenuTitleClasses,
|
|
23
28
|
getSubMenuExpandIconClasses,
|
|
24
29
|
getSubmenuPopupZIndex,
|
|
30
|
+
getTransformOrigin,
|
|
25
31
|
filterMenuItems,
|
|
26
32
|
isKeySelected,
|
|
27
33
|
isKeyOpen,
|
|
@@ -126,6 +132,10 @@ var Menu = defineComponent({
|
|
|
126
132
|
type: Number,
|
|
127
133
|
default: 24
|
|
128
134
|
},
|
|
135
|
+
popupPortal: {
|
|
136
|
+
type: Boolean,
|
|
137
|
+
default: false
|
|
138
|
+
},
|
|
129
139
|
className: {
|
|
130
140
|
type: String,
|
|
131
141
|
default: void 0
|
|
@@ -165,6 +175,9 @@ var Menu = defineComponent({
|
|
|
165
175
|
],
|
|
166
176
|
setup(props, { slots, emit, attrs }) {
|
|
167
177
|
const menuEl = ref(null);
|
|
178
|
+
const resolvedMode = computed(
|
|
179
|
+
() => props.collapsed && props.mode === "inline" ? "vertical" : props.mode
|
|
180
|
+
);
|
|
168
181
|
const internalSelectedKeys = ref(props.defaultSelectedKeys);
|
|
169
182
|
const internalOpenKeys = ref(props.defaultOpenKeys);
|
|
170
183
|
const internalSearchValue = ref(props.defaultSearchValue);
|
|
@@ -201,7 +214,7 @@ var Menu = defineComponent({
|
|
|
201
214
|
};
|
|
202
215
|
const menuClasses = computed(() => {
|
|
203
216
|
return classNames(
|
|
204
|
-
getMenuClasses(
|
|
217
|
+
getMenuClasses(resolvedMode.value, props.theme, props.collapsed),
|
|
205
218
|
props.className,
|
|
206
219
|
coerceClassValue(attrs.class)
|
|
207
220
|
);
|
|
@@ -217,15 +230,17 @@ var Menu = defineComponent({
|
|
|
217
230
|
const { class: _class, style: _style, ...rest } = attrs;
|
|
218
231
|
return rest;
|
|
219
232
|
});
|
|
220
|
-
const modeRef = computed(() =>
|
|
233
|
+
const modeRef = computed(() => resolvedMode.value);
|
|
221
234
|
const themeRef = computed(() => props.theme);
|
|
222
235
|
const collapsedRef = computed(() => props.collapsed);
|
|
223
236
|
const inlineIndentRef = computed(() => props.inlineIndent);
|
|
237
|
+
const popupPortalRef = computed(() => props.popupPortal);
|
|
224
238
|
provide(MenuContextKey, {
|
|
225
239
|
mode: modeRef,
|
|
226
240
|
theme: themeRef,
|
|
227
241
|
collapsed: collapsedRef,
|
|
228
242
|
inlineIndent: inlineIndentRef,
|
|
243
|
+
popupPortal: popupPortalRef,
|
|
229
244
|
selectedKeys: currentSelectedKeys,
|
|
230
245
|
openKeys: currentOpenKeys,
|
|
231
246
|
handleSelect,
|
|
@@ -298,7 +313,8 @@ var Menu = defineComponent({
|
|
|
298
313
|
style: menuStyle.value,
|
|
299
314
|
role: "menu",
|
|
300
315
|
"data-tiger-menu-root": "true",
|
|
301
|
-
"data-tiger-menu-mode":
|
|
316
|
+
"data-tiger-menu-mode": resolvedMode.value,
|
|
317
|
+
"data-tiger-menu-requested-mode": props.mode,
|
|
302
318
|
...passthroughAttrs.value
|
|
303
319
|
},
|
|
304
320
|
[...searchChild, ...dataChildren, ...slotChildren, ...emptyChild]
|
|
@@ -493,6 +509,10 @@ var MenuItemGroup = defineComponent({
|
|
|
493
509
|
type: Number,
|
|
494
510
|
default: 0
|
|
495
511
|
},
|
|
512
|
+
collapsed: {
|
|
513
|
+
type: Boolean,
|
|
514
|
+
default: void 0
|
|
515
|
+
},
|
|
496
516
|
className: {
|
|
497
517
|
type: String,
|
|
498
518
|
default: void 0
|
|
@@ -519,8 +539,13 @@ var MenuItemGroup = defineComponent({
|
|
|
519
539
|
const isTarget = name === "TigerMenuItem" || name === "TigerSubMenu";
|
|
520
540
|
if (!isTarget) return node;
|
|
521
541
|
const existingProps = node.props ?? {};
|
|
522
|
-
if (existingProps.level != null) return node;
|
|
523
|
-
|
|
542
|
+
if (existingProps.level != null && existingProps.collapsed != null) return node;
|
|
543
|
+
const nextProps = {};
|
|
544
|
+
if (existingProps.level == null) nextProps.level = level;
|
|
545
|
+
if (props.collapsed !== void 0 && existingProps.collapsed == null) {
|
|
546
|
+
nextProps.collapsed = props.collapsed;
|
|
547
|
+
}
|
|
548
|
+
return cloneVNode(node, nextProps);
|
|
524
549
|
});
|
|
525
550
|
};
|
|
526
551
|
return () => {
|
|
@@ -619,8 +644,11 @@ var SubMenu = defineComponent({
|
|
|
619
644
|
});
|
|
620
645
|
const isHovered = ref(false);
|
|
621
646
|
const isOpenByKeyboard = ref(false);
|
|
647
|
+
const titleEl = ref(null);
|
|
648
|
+
const popupEl = ref(null);
|
|
622
649
|
const submenuContentEl = ref(null);
|
|
623
650
|
let heightTransitionController = null;
|
|
651
|
+
let popupCloseTimer = null;
|
|
624
652
|
const effectiveCollapsed = computed(() => {
|
|
625
653
|
return props.collapsed ?? (menuContext ? menuContext.collapsed.value : false);
|
|
626
654
|
});
|
|
@@ -629,6 +657,7 @@ var SubMenu = defineComponent({
|
|
|
629
657
|
if (menuContext.mode.value === "horizontal") return true;
|
|
630
658
|
return menuContext.mode.value === "vertical" && effectiveCollapsed.value;
|
|
631
659
|
});
|
|
660
|
+
const popupPortal = computed(() => Boolean(isPopup.value && menuContext?.popupPortal.value));
|
|
632
661
|
const isExpanded = computed(() => {
|
|
633
662
|
if (menuContext?.mode.value === "horizontal" || isPopup.value) {
|
|
634
663
|
return isHovered.value || isOpenByKeyboard.value;
|
|
@@ -636,6 +665,20 @@ var SubMenu = defineComponent({
|
|
|
636
665
|
return isOpen.value;
|
|
637
666
|
});
|
|
638
667
|
const hasRenderedInline = ref(!isPopup.value && isExpanded.value);
|
|
668
|
+
const popupPlacement = computed(
|
|
669
|
+
() => menuContext?.mode.value === "horizontal" && props.level === 0 ? "bottom-start" : "right-start"
|
|
670
|
+
);
|
|
671
|
+
const {
|
|
672
|
+
x: popupX,
|
|
673
|
+
y: popupY,
|
|
674
|
+
placement: currentPopupPlacement
|
|
675
|
+
} = useVueFloating({
|
|
676
|
+
referenceRef: titleEl,
|
|
677
|
+
floatingRef: popupEl,
|
|
678
|
+
enabled: computed(() => popupPortal.value && isExpanded.value),
|
|
679
|
+
placement: popupPlacement.value,
|
|
680
|
+
offset: 4
|
|
681
|
+
});
|
|
639
682
|
const disposeHeightTransition = () => {
|
|
640
683
|
heightTransitionController?.dispose();
|
|
641
684
|
heightTransitionController = null;
|
|
@@ -668,7 +711,10 @@ var SubMenu = defineComponent({
|
|
|
668
711
|
watch(hasRenderedInline, () => {
|
|
669
712
|
void syncHeightTransition();
|
|
670
713
|
});
|
|
671
|
-
onBeforeUnmount(
|
|
714
|
+
onBeforeUnmount(() => {
|
|
715
|
+
disposeHeightTransition();
|
|
716
|
+
if (popupCloseTimer) clearTimeout(popupCloseTimer);
|
|
717
|
+
});
|
|
672
718
|
const titleClasses = computed(() => {
|
|
673
719
|
if (!menuContext) return "";
|
|
674
720
|
return classNames(
|
|
@@ -707,8 +753,8 @@ var SubMenu = defineComponent({
|
|
|
707
753
|
};
|
|
708
754
|
const focusFirstChild = async () => {
|
|
709
755
|
await nextTick();
|
|
710
|
-
const
|
|
711
|
-
if (
|
|
756
|
+
const titleEl2 = document.activeElement;
|
|
757
|
+
if (titleEl2) focusFirstChildItem(titleEl2);
|
|
712
758
|
};
|
|
713
759
|
const handleTitleKeyDown = async (event) => {
|
|
714
760
|
if (!menuContext || props.disabled) return;
|
|
@@ -777,14 +823,25 @@ var SubMenu = defineComponent({
|
|
|
777
823
|
}
|
|
778
824
|
};
|
|
779
825
|
const handleMouseEnter = () => {
|
|
826
|
+
if (popupCloseTimer) {
|
|
827
|
+
clearTimeout(popupCloseTimer);
|
|
828
|
+
popupCloseTimer = null;
|
|
829
|
+
}
|
|
780
830
|
if (menuContext?.mode.value === "horizontal" || isPopup.value) {
|
|
781
831
|
isHovered.value = true;
|
|
782
832
|
}
|
|
783
833
|
};
|
|
784
834
|
const handleMouseLeave = () => {
|
|
785
835
|
if (menuContext?.mode.value === "horizontal" || isPopup.value) {
|
|
786
|
-
|
|
787
|
-
|
|
836
|
+
const close = () => {
|
|
837
|
+
isHovered.value = false;
|
|
838
|
+
isOpenByKeyboard.value = false;
|
|
839
|
+
};
|
|
840
|
+
if (popupPortal.value) {
|
|
841
|
+
popupCloseTimer = setTimeout(close, 120);
|
|
842
|
+
return;
|
|
843
|
+
}
|
|
844
|
+
close();
|
|
788
845
|
}
|
|
789
846
|
};
|
|
790
847
|
const indentStyle = computed(() => {
|
|
@@ -806,6 +863,9 @@ var SubMenu = defineComponent({
|
|
|
806
863
|
const nextProps = {
|
|
807
864
|
level: existingProps.level ?? nextLevel
|
|
808
865
|
};
|
|
866
|
+
if (existingProps.collapsed == null && isPopup.value) {
|
|
867
|
+
nextProps.collapsed = false;
|
|
868
|
+
}
|
|
809
869
|
return cloneVNode(node, nextProps);
|
|
810
870
|
});
|
|
811
871
|
};
|
|
@@ -838,6 +898,7 @@ var SubMenu = defineComponent({
|
|
|
838
898
|
"button",
|
|
839
899
|
{
|
|
840
900
|
type: "button",
|
|
901
|
+
ref: titleEl,
|
|
841
902
|
class: titleClasses.value,
|
|
842
903
|
style: titleStyle.value,
|
|
843
904
|
onClick: handleTitleClick,
|
|
@@ -853,19 +914,35 @@ var SubMenu = defineComponent({
|
|
|
853
914
|
},
|
|
854
915
|
titleChildren
|
|
855
916
|
);
|
|
856
|
-
const
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
917
|
+
const popupContentNode = () => {
|
|
918
|
+
const popupStyle = popupPortal.value ? {
|
|
919
|
+
display: isExpanded.value ? "block" : "none",
|
|
920
|
+
position: "absolute",
|
|
921
|
+
left: `${popupX.value}px`,
|
|
922
|
+
top: `${popupY.value}px`,
|
|
923
|
+
transformOrigin: getTransformOrigin(currentPopupPlacement.value),
|
|
924
|
+
...popupZIndex.value
|
|
925
|
+
} : {
|
|
926
|
+
display: isExpanded.value ? "block" : "none",
|
|
927
|
+
...popupZIndex.value
|
|
928
|
+
};
|
|
929
|
+
const node = h(
|
|
930
|
+
"ul",
|
|
931
|
+
{
|
|
932
|
+
ref: popupPortal.value ? popupEl : void 0,
|
|
933
|
+
class: contentClasses.value,
|
|
934
|
+
style: popupStyle,
|
|
935
|
+
role: "menu",
|
|
936
|
+
"aria-hidden": isExpanded.value ? void 0 : "true",
|
|
937
|
+
onMouseenter: popupPortal.value ? handleMouseEnter : void 0,
|
|
938
|
+
onMouseleave: popupPortal.value ? handleMouseLeave : void 0,
|
|
939
|
+
"data-tiger-submenu-popup": ""
|
|
863
940
|
},
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
) : hasRenderedInline.value ? h(
|
|
941
|
+
withChildLevel(slots.default?.())
|
|
942
|
+
);
|
|
943
|
+
return popupPortal.value ? renderVueBodyTeleport(node) : node;
|
|
944
|
+
};
|
|
945
|
+
const contentNode = isPopup.value ? popupContentNode() : hasRenderedInline.value ? h(
|
|
869
946
|
"div",
|
|
870
947
|
{
|
|
871
948
|
ref: submenuContentEl,
|
|
@@ -889,7 +966,7 @@ var SubMenu = defineComponent({
|
|
|
889
966
|
return h(
|
|
890
967
|
"li",
|
|
891
968
|
{
|
|
892
|
-
class: isPopup.value ? "relative" : "",
|
|
969
|
+
class: isPopup.value && !popupPortal.value ? "relative" : "",
|
|
893
970
|
onMouseenter: handleMouseEnter,
|
|
894
971
|
onMouseleave: handleMouseLeave,
|
|
895
972
|
role: "none"
|