vft 0.0.481 → 0.0.483

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 (56) hide show
  1. package/dist/index.css +1 -1
  2. package/es/components/autocomplete/autocomplete.vue.d.ts +2 -2
  3. package/es/components/autocomplete/index.d.ts +6 -6
  4. package/es/components/button/index.d.ts +9 -9
  5. package/es/components/horizontal-menu/horizontal-menu.vue.d.ts +20 -4
  6. package/es/components/horizontal-menu/horizontal-menu.vue2.js +29 -29
  7. package/es/components/horizontal-menu/index.d.ts +20 -4
  8. package/es/components/menu/index.d.ts +28 -7
  9. package/es/components/menu/menu-item-group.vue.d.ts +2 -4
  10. package/es/components/menu/menu-item.vue.d.ts +1 -17
  11. package/es/components/menu/menu.vue.d.ts +3 -28
  12. package/es/components/menu/menu.vue2.js +81 -76
  13. package/es/components/menu/sub-menu.vue.d.ts +1 -19
  14. package/es/components/menu/types.d.ts +64 -0
  15. package/es/components/popconfirm/index.d.ts +15 -15
  16. package/es/components/popconfirm/popconfirm.vue.d.ts +1 -1
  17. package/es/components/select/index.d.ts +4 -4
  18. package/es/components/select/select.vue.d.ts +4 -4
  19. package/es/components/select/useSelect.d.ts +4 -4
  20. package/es/components/side-menu/index.d.ts +55 -4
  21. package/es/components/side-menu/side-menu.vue.d.ts +20 -3
  22. package/es/components/side-menu/side-menu.vue2.js +166 -139
  23. package/es/components/side-menu/types.d.ts +13 -2
  24. package/es/package.json.d.ts +1 -1
  25. package/es/package.json.js +1 -1
  26. package/lib/components/autocomplete/autocomplete.vue.d.ts +2 -2
  27. package/lib/components/autocomplete/index.d.ts +6 -6
  28. package/lib/components/button/index.d.ts +9 -9
  29. package/lib/components/horizontal-menu/horizontal-menu.vue.d.ts +20 -4
  30. package/lib/components/horizontal-menu/horizontal-menu.vue2.cjs +1 -1
  31. package/lib/components/horizontal-menu/index.d.ts +20 -4
  32. package/lib/components/menu/index.d.ts +28 -7
  33. package/lib/components/menu/menu-item-group.vue.d.ts +2 -4
  34. package/lib/components/menu/menu-item.vue.d.ts +1 -17
  35. package/lib/components/menu/menu.vue.d.ts +3 -28
  36. package/lib/components/menu/menu.vue2.cjs +1 -1
  37. package/lib/components/menu/sub-menu.vue.d.ts +1 -19
  38. package/lib/components/menu/types.d.ts +64 -0
  39. package/lib/components/popconfirm/index.d.ts +15 -15
  40. package/lib/components/popconfirm/popconfirm.vue.d.ts +1 -1
  41. package/lib/components/select/index.d.ts +4 -4
  42. package/lib/components/select/select.vue.d.ts +4 -4
  43. package/lib/components/select/useSelect.d.ts +4 -4
  44. package/lib/components/side-menu/index.d.ts +55 -4
  45. package/lib/components/side-menu/side-menu.vue.d.ts +20 -3
  46. package/lib/components/side-menu/side-menu.vue2.cjs +1 -1
  47. package/lib/components/side-menu/types.d.ts +13 -2
  48. package/lib/package.json.cjs +1 -1
  49. package/lib/package.json.d.ts +1 -1
  50. package/package.json +4 -4
  51. package/theme-style/index.css +1 -1
  52. package/theme-style/src/md-container.scss +1 -1
  53. package/theme-style/src/menu.scss +54 -0
  54. package/theme-style/vft-md-container.css +1 -1
  55. package/theme-style/vft-menu.css +1 -1
  56. package/web-types.json +1 -1
@@ -259,9 +259,9 @@ export declare const VftSelect: SFCWithInstall<import("vue").DefineComponent<imp
259
259
  readonly placement?: import("@popperjs/core").Placement | undefined;
260
260
  readonly strategy?: "fixed" | "absolute" | undefined;
261
261
  readonly effect?: "light" | "dark" | undefined;
262
- readonly visible?: boolean | null | undefined;
263
262
  readonly teleported?: boolean | undefined;
264
263
  readonly open?: boolean | undefined;
264
+ readonly visible?: boolean | null | undefined;
265
265
  readonly trigger?: import("vft/es/vft").TooltipTriggerType | undefined;
266
266
  readonly arrowOffset?: number | undefined;
267
267
  readonly gpuAcceleration?: boolean | undefined;
@@ -677,9 +677,9 @@ export declare const VftSelect: SFCWithInstall<import("vue").DefineComponent<imp
677
677
  readonly placement?: import("@popperjs/core").Placement | undefined;
678
678
  readonly strategy?: "fixed" | "absolute" | undefined;
679
679
  readonly effect?: "light" | "dark" | undefined;
680
- readonly visible?: boolean | null | undefined;
681
680
  readonly teleported?: boolean | undefined;
682
681
  readonly open?: boolean | undefined;
682
+ readonly visible?: boolean | null | undefined;
683
683
  readonly trigger?: import("vft/es/vft").TooltipTriggerType | undefined;
684
684
  readonly arrowOffset?: number | undefined;
685
685
  readonly gpuAcceleration?: boolean | undefined;
@@ -1096,9 +1096,9 @@ export declare const VftSelect: SFCWithInstall<import("vue").DefineComponent<imp
1096
1096
  readonly placement?: import("@popperjs/core").Placement | undefined;
1097
1097
  readonly strategy?: "fixed" | "absolute" | undefined;
1098
1098
  readonly effect?: "light" | "dark" | undefined;
1099
- readonly visible?: boolean | null | undefined;
1100
1099
  readonly teleported?: boolean | undefined;
1101
1100
  readonly open?: boolean | undefined;
1101
+ readonly visible?: boolean | null | undefined;
1102
1102
  readonly trigger?: import("vft/es/vft").TooltipTriggerType | undefined;
1103
1103
  readonly arrowOffset?: number | undefined;
1104
1104
  readonly gpuAcceleration?: boolean | undefined;
@@ -1514,9 +1514,9 @@ export declare const VftSelect: SFCWithInstall<import("vue").DefineComponent<imp
1514
1514
  readonly placement?: import("@popperjs/core").Placement | undefined;
1515
1515
  readonly strategy?: "fixed" | "absolute" | undefined;
1516
1516
  readonly effect?: "light" | "dark" | undefined;
1517
- readonly visible?: boolean | null | undefined;
1518
1517
  readonly teleported?: boolean | undefined;
1519
1518
  readonly open?: boolean | undefined;
1519
+ readonly visible?: boolean | null | undefined;
1520
1520
  readonly trigger?: import("vft/es/vft").TooltipTriggerType | undefined;
1521
1521
  readonly arrowOffset?: number | undefined;
1522
1522
  readonly gpuAcceleration?: boolean | undefined;
@@ -255,9 +255,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
255
255
  readonly placement?: import("@popperjs/core").Placement | undefined;
256
256
  readonly strategy?: "fixed" | "absolute" | undefined;
257
257
  readonly effect?: "light" | "dark" | undefined;
258
- readonly visible?: boolean | null | undefined;
259
258
  readonly teleported?: boolean | undefined;
260
259
  readonly open?: boolean | undefined;
260
+ readonly visible?: boolean | null | undefined;
261
261
  readonly trigger?: import("vft/es/components/tooltip").TooltipTriggerType | undefined;
262
262
  readonly arrowOffset?: number | undefined;
263
263
  readonly gpuAcceleration?: boolean | undefined;
@@ -673,9 +673,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
673
673
  readonly placement?: import("@popperjs/core").Placement | undefined;
674
674
  readonly strategy?: "fixed" | "absolute" | undefined;
675
675
  readonly effect?: "light" | "dark" | undefined;
676
- readonly visible?: boolean | null | undefined;
677
676
  readonly teleported?: boolean | undefined;
678
677
  readonly open?: boolean | undefined;
678
+ readonly visible?: boolean | null | undefined;
679
679
  readonly trigger?: import("vft/es/components/tooltip").TooltipTriggerType | undefined;
680
680
  readonly arrowOffset?: number | undefined;
681
681
  readonly gpuAcceleration?: boolean | undefined;
@@ -1092,9 +1092,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1092
1092
  readonly placement?: import("@popperjs/core").Placement | undefined;
1093
1093
  readonly strategy?: "fixed" | "absolute" | undefined;
1094
1094
  readonly effect?: "light" | "dark" | undefined;
1095
- readonly visible?: boolean | null | undefined;
1096
1095
  readonly teleported?: boolean | undefined;
1097
1096
  readonly open?: boolean | undefined;
1097
+ readonly visible?: boolean | null | undefined;
1098
1098
  readonly trigger?: import("vft/es/components/tooltip").TooltipTriggerType | undefined;
1099
1099
  readonly arrowOffset?: number | undefined;
1100
1100
  readonly gpuAcceleration?: boolean | undefined;
@@ -1510,9 +1510,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1510
1510
  readonly placement?: import("@popperjs/core").Placement | undefined;
1511
1511
  readonly strategy?: "fixed" | "absolute" | undefined;
1512
1512
  readonly effect?: "light" | "dark" | undefined;
1513
- readonly visible?: boolean | null | undefined;
1514
1513
  readonly teleported?: boolean | undefined;
1515
1514
  readonly open?: boolean | undefined;
1515
+ readonly visible?: boolean | null | undefined;
1516
1516
  readonly trigger?: import("vft/es/components/tooltip").TooltipTriggerType | undefined;
1517
1517
  readonly arrowOffset?: number | undefined;
1518
1518
  readonly gpuAcceleration?: boolean | undefined;
@@ -103,9 +103,9 @@ declare const useSelect: (props: SelectV2Props, emit: any) => {
103
103
  readonly placement?: import("@popperjs/core").Placement | undefined;
104
104
  readonly strategy?: "fixed" | "absolute" | undefined;
105
105
  readonly effect?: "light" | "dark" | undefined;
106
- readonly visible?: boolean | null | undefined;
107
106
  readonly teleported?: boolean | undefined;
108
107
  readonly open?: boolean | undefined;
108
+ readonly visible?: boolean | null | undefined;
109
109
  readonly trigger?: import("vft/es/components/tooltip").TooltipTriggerType | undefined;
110
110
  readonly arrowOffset?: number | undefined;
111
111
  readonly gpuAcceleration?: boolean | undefined;
@@ -521,9 +521,9 @@ declare const useSelect: (props: SelectV2Props, emit: any) => {
521
521
  readonly placement?: import("@popperjs/core").Placement | undefined;
522
522
  readonly strategy?: "fixed" | "absolute" | undefined;
523
523
  readonly effect?: "light" | "dark" | undefined;
524
- readonly visible?: boolean | null | undefined;
525
524
  readonly teleported?: boolean | undefined;
526
525
  readonly open?: boolean | undefined;
526
+ readonly visible?: boolean | null | undefined;
527
527
  readonly trigger?: import("vft/es/components/tooltip").TooltipTriggerType | undefined;
528
528
  readonly arrowOffset?: number | undefined;
529
529
  readonly gpuAcceleration?: boolean | undefined;
@@ -940,9 +940,9 @@ declare const useSelect: (props: SelectV2Props, emit: any) => {
940
940
  readonly placement?: import("@popperjs/core").Placement | undefined;
941
941
  readonly strategy?: "fixed" | "absolute" | undefined;
942
942
  readonly effect?: "light" | "dark" | undefined;
943
- readonly visible?: boolean | null | undefined;
944
943
  readonly teleported?: boolean | undefined;
945
944
  readonly open?: boolean | undefined;
945
+ readonly visible?: boolean | null | undefined;
946
946
  readonly trigger?: import("vft/es/components/tooltip").TooltipTriggerType | undefined;
947
947
  readonly arrowOffset?: number | undefined;
948
948
  readonly gpuAcceleration?: boolean | undefined;
@@ -1358,9 +1358,9 @@ declare const useSelect: (props: SelectV2Props, emit: any) => {
1358
1358
  readonly placement?: import("@popperjs/core").Placement | undefined;
1359
1359
  readonly strategy?: "fixed" | "absolute" | undefined;
1360
1360
  readonly effect?: "light" | "dark" | undefined;
1361
- readonly visible?: boolean | null | undefined;
1362
1361
  readonly teleported?: boolean | undefined;
1363
1362
  readonly open?: boolean | undefined;
1363
+ readonly visible?: boolean | null | undefined;
1364
1364
  readonly trigger?: import("vft/es/components/tooltip").TooltipTriggerType | undefined;
1365
1365
  readonly arrowOffset?: number | undefined;
1366
1366
  readonly gpuAcceleration?: boolean | undefined;
@@ -15,20 +15,31 @@ export declare const VftSideMenu: import("vft/es/utils").SFCWithInstall<import("
15
15
  type: import("vue").PropType<import("./types").MenuType[]>;
16
16
  required: true;
17
17
  };
18
+ tooltipCfg: {
19
+ type: import("vue").PropType<Partial<import("vft/es/vft").ToolTipProps>>;
20
+ };
18
21
  defaultActive: {
19
22
  type: import("vue").PropType<string>;
20
23
  };
21
24
  defaultOpeneds: {
22
- type: import("vue").PropType<(string | number)[]>;
25
+ type: import("vue").PropType<string[]>;
23
26
  };
24
27
  uniqueOpened: {
25
28
  type: import("vue").PropType<boolean>;
26
29
  default: boolean;
27
30
  };
31
+ collapseTransition: {
32
+ type: import("vue").PropType<boolean>;
33
+ default: boolean;
34
+ };
28
35
  disableSubMenuAction: {
29
36
  type: import("vue").PropType<boolean>;
30
37
  default: boolean;
31
38
  };
39
+ collapseType: {
40
+ type: import("vue").PropType<"menu-title">;
41
+ default: undefined;
42
+ };
32
43
  isFixedLeft: {
33
44
  type: import("vue").PropType<boolean>;
34
45
  default: boolean;
@@ -83,6 +94,18 @@ export declare const VftSideMenu: import("vft/es/utils").SFCWithInstall<import("
83
94
  type: import("vue").PropType<number | boolean>;
84
95
  default: boolean;
85
96
  };
97
+ enableScroll: {
98
+ type: import("vue").PropType<boolean>;
99
+ default: boolean;
100
+ };
101
+ scrollThreshold: {
102
+ type: import("vue").PropType<number>;
103
+ default: number;
104
+ };
105
+ scrollMaxHeight: {
106
+ type: import("vue").PropType<string | number>;
107
+ default: number;
108
+ };
86
109
  }>, {
87
110
  sideRef: import("vue").Ref<any, any>;
88
111
  jumpActiveDom: ({ activeDom, offset, delay }?: {
@@ -96,7 +119,7 @@ export declare const VftSideMenu: import("vft/es/utils").SFCWithInstall<import("
96
119
  "update:width": (val: string | number) => void;
97
120
  dragEnd: (oldIndex: import("sortablejs").SortableEvent, newIndex: import("sortablejs").SortableEvent) => void;
98
121
  dragWidthEnd: () => void;
99
- select: (val: import("./types").MenuSelectEventData) => void;
122
+ select: (menuItem: import("vft/es/vft").MenuItemClicked, routerResult?: Promise<void | import("vue-router").NavigationFailure> | undefined) => void;
100
123
  subMenuClick: (val: any) => void;
101
124
  subMenuOpenClick: (val: any) => void;
102
125
  menuItemMouseenter: (val: any) => void;
@@ -118,20 +141,31 @@ export declare const VftSideMenu: import("vft/es/utils").SFCWithInstall<import("
118
141
  type: import("vue").PropType<import("./types").MenuType[]>;
119
142
  required: true;
120
143
  };
144
+ tooltipCfg: {
145
+ type: import("vue").PropType<Partial<import("vft/es/vft").ToolTipProps>>;
146
+ };
121
147
  defaultActive: {
122
148
  type: import("vue").PropType<string>;
123
149
  };
124
150
  defaultOpeneds: {
125
- type: import("vue").PropType<(string | number)[]>;
151
+ type: import("vue").PropType<string[]>;
126
152
  };
127
153
  uniqueOpened: {
128
154
  type: import("vue").PropType<boolean>;
129
155
  default: boolean;
130
156
  };
157
+ collapseTransition: {
158
+ type: import("vue").PropType<boolean>;
159
+ default: boolean;
160
+ };
131
161
  disableSubMenuAction: {
132
162
  type: import("vue").PropType<boolean>;
133
163
  default: boolean;
134
164
  };
165
+ collapseType: {
166
+ type: import("vue").PropType<"menu-title">;
167
+ default: undefined;
168
+ };
135
169
  isFixedLeft: {
136
170
  type: import("vue").PropType<boolean>;
137
171
  default: boolean;
@@ -186,8 +220,20 @@ export declare const VftSideMenu: import("vft/es/utils").SFCWithInstall<import("
186
220
  type: import("vue").PropType<number | boolean>;
187
221
  default: boolean;
188
222
  };
223
+ enableScroll: {
224
+ type: import("vue").PropType<boolean>;
225
+ default: boolean;
226
+ };
227
+ scrollThreshold: {
228
+ type: import("vue").PropType<number>;
229
+ default: number;
230
+ };
231
+ scrollMaxHeight: {
232
+ type: import("vue").PropType<string | number>;
233
+ default: number;
234
+ };
189
235
  }>> & Readonly<{
190
- onSelect?: ((val: import("./types").MenuSelectEventData) => any) | undefined;
236
+ onSelect?: ((menuItem: import("vft/es/vft").MenuItemClicked, routerResult?: Promise<void | import("vue-router").NavigationFailure> | undefined) => any) | undefined;
191
237
  "onUpdate:collapse"?: ((val: boolean) => any) | undefined;
192
238
  "onUpdate:width"?: ((val: string | number) => any) | undefined;
193
239
  onDragEnd?: ((oldIndex: import("sortablejs").SortableEvent, newIndex: import("sortablejs").SortableEvent) => any) | undefined;
@@ -201,7 +247,9 @@ export declare const VftSideMenu: import("vft/es/utils").SFCWithInstall<import("
201
247
  width: string | number;
202
248
  collapse: boolean;
203
249
  uniqueOpened: boolean;
250
+ collapseTransition: boolean;
204
251
  disableSubMenuAction: boolean;
252
+ collapseType: "menu-title";
205
253
  isFixedLeft: boolean;
206
254
  collapseWidth: string | number;
207
255
  menuTopBottomHeight: number;
@@ -215,6 +263,9 @@ export declare const VftSideMenu: import("vft/es/utils").SFCWithInstall<import("
215
263
  openMenuCollapse: boolean;
216
264
  disabledJudgeTurnOver: boolean;
217
265
  defaultOpenedsLevel: number | boolean;
266
+ enableScroll: boolean;
267
+ scrollThreshold: number;
268
+ scrollMaxHeight: string | number;
218
269
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>> & Record<string, any>;
219
270
  export default VftSideMenu;
220
271
  export * from './types';
@@ -1,5 +1,7 @@
1
+ import type { MenuItemClicked } from 'vft/es/components/menu';
1
2
  import type { SortableEvent } from 'sortablejs';
2
- import type { MenuSelectEventData, SideMenuProps } from './types';
3
+ import type { NavigationFailure } from 'vue-router';
4
+ import type { SideMenuProps } from './types';
3
5
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<SideMenuProps>, {
4
6
  isFixedLeft: boolean;
5
7
  autoScrollActiveDom: boolean;
@@ -16,6 +18,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
16
18
  useRouterJump: boolean;
17
19
  disableSubMenuAction: boolean;
18
20
  defaultOpenedsLevel: boolean;
21
+ enableScroll: boolean;
22
+ scrollThreshold: number;
23
+ scrollMaxHeight: number;
24
+ collapseTransition: boolean;
25
+ collapseType: undefined;
19
26
  }>>, {
20
27
  sideRef: import("vue").Ref<any, any>;
21
28
  jumpActiveDom: ({ activeDom, offset, delay }?: {
@@ -29,7 +36,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
29
36
  "update:width": (val: string | number) => void;
30
37
  dragEnd: (oldIndex: SortableEvent, newIndex: SortableEvent) => void;
31
38
  dragWidthEnd: () => void;
32
- select: (val: MenuSelectEventData) => void;
39
+ select: (menuItem: MenuItemClicked, routerResult?: Promise<void | NavigationFailure> | undefined) => void;
33
40
  subMenuClick: (val: any) => void;
34
41
  subMenuOpenClick: (val: any) => void;
35
42
  menuItemMouseenter: (val: any) => void;
@@ -50,8 +57,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
50
57
  useRouterJump: boolean;
51
58
  disableSubMenuAction: boolean;
52
59
  defaultOpenedsLevel: boolean;
60
+ enableScroll: boolean;
61
+ scrollThreshold: number;
62
+ scrollMaxHeight: number;
63
+ collapseTransition: boolean;
64
+ collapseType: undefined;
53
65
  }>>> & Readonly<{
54
- onSelect?: ((val: MenuSelectEventData) => any) | undefined;
66
+ onSelect?: ((menuItem: MenuItemClicked, routerResult?: Promise<void | NavigationFailure> | undefined) => any) | undefined;
55
67
  "onUpdate:collapse"?: ((val: boolean) => any) | undefined;
56
68
  "onUpdate:width"?: ((val: string | number) => any) | undefined;
57
69
  onDragEnd?: ((oldIndex: SortableEvent, newIndex: SortableEvent) => any) | undefined;
@@ -65,7 +77,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
65
77
  width: string | number;
66
78
  collapse: boolean;
67
79
  uniqueOpened: boolean;
80
+ collapseTransition: boolean;
68
81
  disableSubMenuAction: boolean;
82
+ collapseType: "menu-title";
69
83
  isFixedLeft: boolean;
70
84
  collapseWidth: string | number;
71
85
  menuTopBottomHeight: number;
@@ -79,6 +93,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
79
93
  openMenuCollapse: boolean;
80
94
  disabledJudgeTurnOver: boolean;
81
95
  defaultOpenedsLevel: number | boolean;
96
+ enableScroll: boolean;
97
+ scrollThreshold: number;
98
+ scrollMaxHeight: string | number;
82
99
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
83
100
  export default _default;
84
101
  type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("vue"),R=require("@vft/router"),oe=require("@vft/use/sortable"),g=require("@vft/utils");require("@vueuse/core");const I=require("../../utils/helper.cjs");require("lodash-es");require("../form/index.cjs");const ue=require("../icon/index.cjs"),b=require("../menu/index.cjs"),ae=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const se=require("./use-drag-line.cjs");function ie(h){return typeof h=="function"||Object.prototype.toString.call(h)==="[object Object]"&&!n.isVNode(h)}const de=n.defineComponent({name:"vft-side-menu"}),re=n.defineComponent({...de,props:{isFixedLeft:{type:Boolean,default:!1},menus:{},width:{default:200},height:{default:"100%"},collapseWidth:{default:50},attrMapping:{},menuTopBottomHeight:{default:0},showCollapse:{type:Boolean,default:!1},dragOption:{},dragWidthCfg:{type:[Boolean,Object],default:!1},useRouterJump:{type:Boolean,default:!1},openDisabled:{type:Boolean},autoScrollActiveDom:{type:[Boolean,Number],default:!0},openMenuCollapse:{type:Boolean,default:!0},collapse:{type:Boolean,default:!1},uniqueOpened:{type:Boolean,default:!0},disabledJudgeTurnOver:{type:Boolean,default:!1},defaultActive:{},defaultOpeneds:{},defaultOpenedsLevel:{type:[Number,Boolean],default:!1},disableSubMenuAction:{type:Boolean,default:!1}},emits:["update:collapse","update:width","dragEnd","dragWidthEnd","select","subMenuClick","subMenuOpenClick","menuItemMouseenter","menuItemMouseleave"],setup(h,{expose:W,emit:j}){const t=h,r=j,{defaultActive:L,collapse:f,uniqueOpened:E,defaultOpeneds:J,openMenuCollapse:P,defaultOpenedsLevel:y}=n.toRefs(t),s=ae.useNamespace("side-menu"),c=n.useSlots(),O=n.getCurrentInstance(),C=n.ref(),a=n.computed(()=>({path:"path",children:"children",title:"title",index:"path",icon:"icon",disabled:"disabled",...t.attrMapping})),U=(e,u=1/0)=>{const l=[],o=(i,d=0)=>{d>=u||i.forEach(m=>{m[a.value.children]?.length&&(l.push(m[a.value.index]),o(m[a.value.children],d+1))})};return o(e),l};R.listenerRouteChange(({route:e})=>{!e||e.meta?.hideSide&&!t.useRouterJump||(C.value=e.path)});const $=e=>{const u=e.e;if(t.autoScrollActiveDom&&u){const l=g.isNumber(t.autoScrollActiveDom)?t.autoScrollActiveDom:0,o=u.target;x({activeDom:o,offset:l})}r("subMenuOpenClick",e)},H=e=>{r("subMenuClick",e)},x=({activeDom:e=null,offset:u=0,delay:l=300}={})=>{v.value?.menu&&setTimeout(()=>{const o=e||document.querySelector(".vft-menu-item.is-active")||document.querySelector(".vft-sub-menu.is-active");o&&(v.value.menu.scrollTop=v.value.menu.scrollTop+(o.getBoundingClientRect().top-v.value.menu.getBoundingClientRect().top)+u)},l)},F=e=>{r("menuItemMouseenter",e)},Z=e=>{r("menuItemMouseleave",e)},_=(e,u)=>{const l=e[a.value.path],o=e[a.value.title],i=e?.[a.value.children],d=e?.[a.value.index],m=e?.[a.value.icon],D=!!e?.[a.value.disabled],T=t.disabledJudgeTurnOver?!D:D,k=d||l||u+o;return i?.length?n.h(b.VftSubMenu,{...e,popperAppendToBody:!0,key:k,index:k,title:o,icon:m,disabled:t.openDisabled&&T,popperClass:s.e("popper")},{default:()=>i?.map((p,ee)=>{const S=p[a.value.path],A=p[a.value.index],te=p[a.value.icon],ne=p[a.value.title],V=!!p[a.value.disabled],le=t.disabledJudgeTurnOver?!V:V;return p?.[a.value.children]?.length?_(p,ee):n.h(b.VftMenuItem,{...p,key:A||S,index:A||S,route:S,icon:te,title:ne,disabled:t.openDisabled&&le},c.menuItem?()=>c.menuItem?.({item:p}):"")})}):n.h(b.VftMenuItem,{...e,key:d||l,index:d||l,title:o,route:l,icon:m,disabled:t.openDisabled&&T,onMouseenter:()=>F(e),onMouseleave:()=>Z(e)},c.menuItem?()=>c.menuItem?.({item:e,index:u}):"")},v=n.ref(),z=n.computed(()=>({...t.collapseWidth===0&&f.value?{width:0}:{},height:`calc(100% - ${t.menuTopBottomHeight}px)`})),q=O.appContext.config.globalProperties.$router;async function Y(e){if(t.useRouterJump){const{go:u}=R.useRouterHelper(q),l=e.route;let o=e.route;e.indexPath.some(d=>g.isUrl(d))&&(o=e.indexPath.slice(-2).join("/"));const i=q.getRoutes().filter(d=>d.path===o)?.[0]?.meta?.linkTarget;u(i?{url:l,winOpenOpt:{target:i}}:l)}r("select",e)}const M=n.ref(),N=n.ref(),B=n.ref(),G=n.computed(()=>({...t.collapseWidth===0&&f.value?{borderRight:"none"}:{},width:I.addUnit(t.width),height:t.height}));n.watch(()=>f.value,e=>{K.value||(e?r("update:width",t.collapseWidth):r("update:width",B.value||t.width),B.value=t.width)});const{isDraging:K}=se.useDragLine(M,N,O),Q=n.computed(()=>({left:I.addUnit(t.width)})),X=n.computed(()=>[s.b(),t.isFixedLeft?s.m("fixed"):""]),w=n.ref([]);return n.onMounted(()=>{n.nextTick(()=>{if(t.dragOption?.dragClassName){const e=document.querySelectorAll(`.${s.e(t.dragOption?.dragClassName)}`)?.[0],{initSortable:u}=oe.useSortable(e,{draggable:".vft-menu-item",onEnd:l=>{const{oldIndex:o,newIndex:i}=l;g.isNullOrUndefined(o)||g.isNullOrUndefined(i)||o===i||r("dragEnd",o,i)},...t.dragOption});u()}})}),W({sideRef:M,jumpActiveDom:x,menuRef:v}),()=>{let e;return y.value&&(w.value=U(t.menus,g.isNumber(y.value)?y.value:1/0)),n.createVNode("div",{ref:M,class:X.value,style:G.value},[c.top?n.createVNode("div",{class:s.e("top")},[c.top()]):null,n.h(n.createVNode(b.VftMenu,{ref:v,onSelect:Y,onOpen:$,onSubMenuClick:H,defaultActive:L?.value||C.value,defaultOpeneds:J?.value||w.value,disableSubMenuAction:t.disableSubMenuAction,class:[s.e("con"),t.dragOption?.dragClassName?s.e(t.dragOption?.dragClassName):""],style:z.value,collapse:P.value?f.value:!1,uniqueOpened:E.value,collapseTransition:!1},ie(e=t.menus.map((u,l)=>_(u,l)))?e:{default:()=>[e]})),c.bottom?n.createVNode("div",{class:s.e("bottom")},[c.bottom()]):t.showCollapse?n.createVNode("div",{onClick:()=>r("update:collapse",!f.value),class:[s.e("bottom"),s.e("collapse")]},[n.createVNode(ue.VftIcon,{style:{transform:f.value?"rotateY(180deg)":""},size:20,icon:"icon-sidebar-collapse"},null)]):null,c.default?.(),t.dragWidthCfg?n.createVNode("div",{ref:N,style:Q.value,class:s.e("drag-bar")},null):null])}}});exports.default=re;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),ue=require("../icon/index.cjs"),g=require("../menu/index.cjs");require("@vueuse/core");const b=require("@vft/utils"),C=require("../../utils/helper.cjs");require("lodash-es");require("../form/index.cjs");const R=require("@vft/router"),se=require("@vft/use/sortable"),ie=require("../../hooks/use-namespace/index.cjs");require("../../hooks/use-model-toggle/index.cjs");require("@popperjs/core");require("../../hooks/use-z-index/index.cjs");const re=require("./use-drag-line.cjs");function de(m){return typeof m=="function"||Object.prototype.toString.call(m)==="[object Object]"&&!l.isVNode(m)}const ce=l.defineComponent({name:"vft-side-menu"}),pe=l.defineComponent({...ce,props:{isFixedLeft:{type:Boolean,default:!1},menus:{},width:{default:200},height:{default:"100%"},collapseWidth:{default:50},attrMapping:{},menuTopBottomHeight:{default:0},showCollapse:{type:Boolean,default:!1},dragOption:{},dragWidthCfg:{type:[Boolean,Object],default:!1},useRouterJump:{type:Boolean,default:!1},openDisabled:{type:Boolean},autoScrollActiveDom:{type:[Boolean,Number],default:!0},openMenuCollapse:{type:Boolean,default:!0},collapse:{type:Boolean,default:!1},uniqueOpened:{type:Boolean,default:!0},disabledJudgeTurnOver:{type:Boolean,default:!1},defaultActive:{},defaultOpeneds:{},defaultOpenedsLevel:{type:[Number,Boolean],default:!1},disableSubMenuAction:{type:Boolean,default:!1},enableScroll:{type:Boolean,default:!0},scrollThreshold:{default:10},scrollMaxHeight:{default:500},collapseTransition:{type:Boolean,default:!1},collapseType:{default:void 0},tooltipCfg:{}},emits:["update:collapse","update:width","dragEnd","dragWidthEnd","select","subMenuClick","subMenuOpenClick","menuItemMouseenter","menuItemMouseleave"],setup(m,{expose:W,emit:j}){const t=m,d=j,{defaultActive:L,collapse:h,uniqueOpened:E,defaultOpeneds:H,openMenuCollapse:J,defaultOpenedsLevel:y}=l.toRefs(t),i=ie.useNamespace("side-menu"),c=l.useSlots(),O=l.getCurrentInstance(),x=l.ref(),u=l.computed(()=>({path:"path",children:"children",title:"title",index:"path",icon:"icon",disabled:"disabled",...t.attrMapping})),U=(e,a=1/0)=>{const n=[],o=(s,p=0)=>{p>=a||s.forEach(r=>{r[u.value.children]?.length&&(n.push(r[u.value.index]),o(r[u.value.children],p+1))})};return o(e),n};R.listenerRouteChange(({route:e})=>{!e||e.meta?.hideSide&&!t.useRouterJump||(x.value=e.path)});const P=e=>{const a=e.e;if(t.autoScrollActiveDom&&a){const n=b.isNumber(t.autoScrollActiveDom)?t.autoScrollActiveDom:0,o=a.target;T({activeDom:o,offset:n})}d("subMenuOpenClick",e)},$=e=>{d("subMenuClick",e)},T=({activeDom:e=null,offset:a=0,delay:n=300}={})=>{v.value?.menu&&setTimeout(()=>{const o=e||document.querySelector(".vft-menu-item.is-active")||document.querySelector(".vft-sub-menu.is-active");o&&(v.value.menu.scrollTop=v.value.menu.scrollTop+(o.getBoundingClientRect().top-v.value.menu.getBoundingClientRect().top)+a)},n)},F=e=>{d("menuItemMouseenter",e)},Y=e=>{d("menuItemMouseleave",e)},Z=(e,a)=>!t.enableScroll||!e?e:h.value&&a>t.scrollThreshold?l.h(g.VftMenuItemGroup,{style:{maxHeight:C.addUnit(t.scrollMaxHeight),overflowY:"auto"}},()=>e):e,_=(e,a)=>{const n=e[u.value.path],o=e[u.value.title],s=e?.[u.value.children],p=e?.[u.value.index],r=e?.[u.value.icon],D=!!e?.[u.value.disabled],k=t.disabledJudgeTurnOver?!D:D,V=p||n||a+o;return s?.length?l.h(g.VftSubMenu,{...e,popperAppendToBody:!0,key:V,index:V,title:o,icon:r,disabled:t.openDisabled&&k,popperClass:i.e("popper"),toolTipCfg:{placement:"right","fallback-placements":["right-start","right"],...t.tooltipCfg}},{default:()=>{const te=s?.map((f,le)=>{const S=f[u.value.path],A=f[u.value.index],ne=f[u.value.icon],oe=f[u.value.title],I=!!f[u.value.disabled],ae=t.disabledJudgeTurnOver?!I:I;return f?.[u.value.children]?.length?_(f,le):l.h(g.VftMenuItem,{...f,key:A||S,index:A||S,route:S,icon:ne,title:oe,disabled:t.openDisabled&&ae},c.menuItem?()=>c.menuItem?.({item:f}):"")});return Z(te,s?.length||0)}}):l.h(g.VftMenuItem,{...e,key:p||n,index:p||n,title:o,route:n,icon:r,disabled:t.openDisabled&&k,onMouseenter:()=>F(e),onMouseleave:()=>Y(e)},c.menuItem?()=>c.menuItem?.({item:e,index:a}):"")},v=l.ref(),z=l.computed(()=>({...t.collapseWidth===0&&h.value?{width:0}:{},height:`calc(100% - ${t.menuTopBottomHeight}px)`})),q=O.appContext.config.globalProperties.$router;function G(e,a){if(t.useRouterJump){const{go:n}=R.useRouterHelper(q),o=e.route;let s=e.route;e.indexPath.some(r=>b.isUrl(r))&&(s=e.indexPath.slice(-2).join("/"));const p=q.getRoutes().filter(r=>r.path===s)?.[0]?.meta?.linkTarget;n(p?{url:o,winOpenOpt:{target:p}}:o)}d("select",e,a)}const M=l.ref(),B=l.ref(),N=l.ref(),K=l.computed(()=>({...t.collapseWidth===0&&h.value?{borderRight:"none"}:{},width:C.addUnit(t.width),height:t.height}));l.watch(()=>h.value,e=>{Q.value||(e?d("update:width",t.collapseWidth):d("update:width",N.value||t.width),N.value=t.width)});const{isDraging:Q}=re.useDragLine(M,B,O),X=l.computed(()=>({left:C.addUnit(t.width)})),ee=l.computed(()=>[i.b(),t.isFixedLeft?i.m("fixed"):""]),w=l.ref([]);return l.onMounted(()=>{l.nextTick(()=>{if(t.dragOption?.dragClassName){const e=document.querySelectorAll(`.${i.e(t.dragOption?.dragClassName)}`)?.[0],{initSortable:a}=se.useSortable(e,{draggable:".vft-menu-item",onEnd:n=>{const{oldIndex:o,newIndex:s}=n;b.isNullOrUndefined(o)||b.isNullOrUndefined(s)||o===s||d("dragEnd",o,s)},...t.dragOption});a()}})}),W({sideRef:M,jumpActiveDom:T,menuRef:v}),()=>{let e;return y.value&&(w.value=U(t.menus,b.isNumber(y.value)?y.value:1/0)),l.createVNode("div",{ref:M,class:ee.value,style:K.value},[c.top?l.createVNode("div",{class:i.e("top")},[c.top()]):null,l.h(l.createVNode(g.VftMenu,{ref:v,onSelect:G,onOpen:P,onSubMenuClick:$,defaultActive:L?.value||x.value,defaultOpeneds:H?.value||w.value,disableSubMenuAction:t.disableSubMenuAction,class:[i.e("con"),t.dragOption?.dragClassName?i.e(t.dragOption?.dragClassName):""],style:z.value,collapse:J.value?h.value:!1,uniqueOpened:E.value,collapseTransition:t.collapseTransition,collapseType:t.collapseType},de(e=t.menus.map((a,n)=>_(a,n)))?e:{default:()=>[e]})),c.bottom?l.createVNode("div",{class:i.e("bottom")},[c.bottom()]):t.showCollapse?l.createVNode("div",{onClick:()=>d("update:collapse",!h.value),class:[i.e("bottom"),i.e("collapse")]},[l.createVNode(ue.VftIcon,{style:{transform:h.value?"rotateY(180deg)":""},size:20,icon:"icon-sidebar-collapse"},null)]):null,c.default?.(),t.dragWidthCfg?l.createVNode("div",{ref:B,style:X.value,class:i.e("drag-bar")},null):null])}}});exports.default=pe;
@@ -1,5 +1,8 @@
1
+ import type { MenuItemClicked } from 'vft/es/components/menu';
2
+ import type { ToolTipProps } from 'vft/es/components/tooltip';
1
3
  import type Sortable from 'sortablejs';
2
4
  import type { SortableEvent } from 'sortablejs';
5
+ import type { NavigationFailure } from 'vue-router';
3
6
  /** 菜单项类型 */
4
7
  export type MenuType = {
5
8
  /** 子菜单列表 */
@@ -72,11 +75,19 @@ export interface SideMenuProps {
72
75
  /** 默认选中的菜单索引 */
73
76
  defaultActive?: string;
74
77
  /** 默认展开的子菜单索引数组 */
75
- defaultOpeneds?: Array<string | number>;
78
+ defaultOpeneds?: Array<string>;
76
79
  /** 默认展开的层级深度 */
77
80
  defaultOpenedsLevel?: number | boolean;
78
81
  /** 禁用子菜单的展开收缩行为 */
79
82
  disableSubMenuAction?: boolean;
83
+ enableScroll?: boolean;
84
+ scrollThreshold?: number;
85
+ scrollMaxHeight?: string | number;
86
+ /** 是否开启折叠动画 */
87
+ collapseTransition?: boolean;
88
+ /** 收缩类型 */
89
+ collapseType?: 'menu-title';
90
+ tooltipCfg?: Partial<ToolTipProps>;
80
91
  }
81
92
  /** 菜单选中事件参数 */
82
93
  export interface MenuSelectEventData {
@@ -96,7 +107,7 @@ export interface SideMenuEmits {
96
107
  /** 拖拽宽度结束事件 */
97
108
  (e: 'dragWidthEnd'): void;
98
109
  /** 菜单选中事件 */
99
- (e: 'select', val: MenuSelectEventData): void;
110
+ (e: 'select', menuItem: MenuItemClicked, routerResult?: Promise<void | NavigationFailure>): void;
100
111
  /** 子菜单点击事件 */
101
112
  (e: 'subMenuClick', val: any): void;
102
113
  /** 子菜单展开点击事件 */
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.0.481";exports.version=e;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.0.483";exports.version=e;
@@ -1,6 +1,6 @@
1
1
  declare const _default: {
2
2
  "name": "vft",
3
- "version": "0.0.481",
3
+ "version": "0.0.483",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vft",
3
- "version": "0.0.481",
3
+ "version": "0.0.483",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.js",
@@ -57,11 +57,11 @@
57
57
  "sortablejs": "1.15.0",
58
58
  "photoswipe": "5.4.4",
59
59
  "@vft/constants": "0.0.75",
60
+ "@vft/router": "0.0.73",
60
61
  "@vft/use": "0.0.92",
61
62
  "@vft/store": "0.0.64",
62
- "@vft/utils": "0.0.158",
63
- "@vft/router": "0.0.73",
64
- "@vft/directives": "0.0.36"
63
+ "@vft/directives": "0.0.36",
64
+ "@vft/utils": "0.0.158"
65
65
  },
66
66
  "vetur": {
67
67
  "tags": "tags.json",