vft 0.0.20 → 0.0.21

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 (226) hide show
  1. package/dist/index.css +1 -1
  2. package/es/component.mjs +32 -30
  3. package/es/component.mjs.map +1 -1
  4. package/es/components/back-top/back-top.vue2.mjs +8 -6
  5. package/es/components/back-top/back-top.vue2.mjs.map +1 -1
  6. package/es/components/config-provider/config-provider.vue.d.ts +9 -0
  7. package/es/components/config-provider/config-provider.vue2.mjs +32 -23
  8. package/es/components/config-provider/config-provider.vue2.mjs.map +1 -1
  9. package/es/components/config-provider/constants.d.ts +2 -0
  10. package/es/components/config-provider/constants.mjs +3 -2
  11. package/es/components/config-provider/constants.mjs.map +1 -1
  12. package/es/components/config-provider/index.d.ts +8 -0
  13. package/es/components/config-provider/index.mjs +7 -6
  14. package/es/components/context-menu/context-menu.vue2.mjs +17 -10
  15. package/es/components/context-menu/context-menu.vue2.mjs.map +1 -1
  16. package/es/components/index.d.ts +3 -0
  17. package/es/components/index.mjs +87 -71
  18. package/es/components/index.mjs.map +1 -1
  19. package/es/components/loading/directive.d.ts +18 -0
  20. package/es/components/loading/directive.mjs +50 -0
  21. package/es/components/loading/directive.mjs.map +1 -0
  22. package/es/components/loading/index.d.ts +39 -0
  23. package/es/components/loading/index.mjs +19 -0
  24. package/es/components/loading/index.mjs.map +1 -0
  25. package/es/components/loading/loading.d.ts +27 -0
  26. package/es/components/loading/loading.mjs +122 -0
  27. package/es/components/loading/loading.mjs.map +1 -0
  28. package/es/components/loading/service.d.ts +3 -0
  29. package/es/components/loading/service.mjs +68 -0
  30. package/es/components/loading/service.mjs.map +1 -0
  31. package/es/components/loading/style/css.d.ts +0 -0
  32. package/es/components/loading/style/css.mjs +3 -0
  33. package/es/components/loading/style/css.mjs.map +1 -0
  34. package/es/components/loading/style/index.d.ts +0 -0
  35. package/es/components/loading/style/index.mjs +3 -0
  36. package/es/components/loading/style/index.mjs.map +1 -0
  37. package/es/components/loading/types.d.ts +25 -0
  38. package/es/components/loading/types.mjs +2 -0
  39. package/es/components/loading/types.mjs.map +1 -0
  40. package/es/components/menu/menu-item.vue2.mjs +4 -2
  41. package/es/components/menu/menu-item.vue2.mjs.map +1 -1
  42. package/es/components/menu/sub-menu.vue2.mjs +4 -2
  43. package/es/components/menu/sub-menu.vue2.mjs.map +1 -1
  44. package/es/components/message/index.d.ts +3 -0
  45. package/es/components/message/index.mjs +14 -0
  46. package/es/components/message/index.mjs.map +1 -0
  47. package/es/components/message/instance.d.ts +17 -0
  48. package/es/components/message/instance.mjs +16 -0
  49. package/es/components/message/instance.mjs.map +1 -0
  50. package/es/components/message/message.vue.d.ts +129 -0
  51. package/es/components/message/message.vue.mjs +5 -0
  52. package/es/components/message/message.vue.mjs.map +1 -0
  53. package/es/components/message/message.vue2.mjs +129 -0
  54. package/es/components/message/message.vue2.mjs.map +1 -0
  55. package/es/components/message/method.d.ts +4 -0
  56. package/es/components/message/method.mjs +98 -0
  57. package/es/components/message/method.mjs.map +1 -0
  58. package/es/components/message/style/css.d.ts +0 -0
  59. package/es/components/message/style/css.mjs +3 -0
  60. package/es/components/message/style/css.mjs.map +1 -0
  61. package/es/components/message/style/index.d.ts +0 -0
  62. package/es/components/message/style/index.mjs +3 -0
  63. package/es/components/message/style/index.mjs.map +1 -0
  64. package/es/components/message/types.d.ts +63 -0
  65. package/es/components/message/types.mjs +23 -0
  66. package/es/components/message/types.mjs.map +1 -0
  67. package/es/components/multiple-tabs/multiple-tabs.vue2.mjs +4 -2
  68. package/es/components/multiple-tabs/multiple-tabs.vue2.mjs.map +1 -1
  69. package/es/components/multiple-tabs/tab-content.vue2.mjs +18 -11
  70. package/es/components/multiple-tabs/tab-content.vue2.mjs.map +1 -1
  71. package/es/components/page-wrapper/index.d.ts +12 -0
  72. package/es/components/page-wrapper/index.mjs +11 -0
  73. package/es/components/page-wrapper/index.mjs.map +1 -0
  74. package/es/components/page-wrapper/page-wrapper.vue.d.ts +13 -0
  75. package/es/components/page-wrapper/page-wrapper.vue.mjs +5 -0
  76. package/es/components/page-wrapper/page-wrapper.vue.mjs.map +1 -0
  77. package/es/components/page-wrapper/page-wrapper.vue2.mjs +43 -0
  78. package/es/components/page-wrapper/page-wrapper.vue2.mjs.map +1 -0
  79. package/es/components/page-wrapper/style/css.d.ts +0 -0
  80. package/es/components/page-wrapper/style/css.mjs +3 -0
  81. package/es/components/page-wrapper/style/css.mjs.map +1 -0
  82. package/es/components/page-wrapper/style/index.d.ts +0 -0
  83. package/es/components/page-wrapper/style/index.mjs +3 -0
  84. package/es/components/page-wrapper/style/index.mjs.map +1 -0
  85. package/es/components/result/result.vue2.mjs +4 -2
  86. package/es/components/result/result.vue2.mjs.map +1 -1
  87. package/es/components/side-menu/side-menu.vue2.mjs +4 -2
  88. package/es/components/side-menu/side-menu.vue2.mjs.map +1 -1
  89. package/es/components/tabs/tab-nav.vue2.mjs +19 -17
  90. package/es/components/tabs/tab-nav.vue2.mjs.map +1 -1
  91. package/es/defaults.d.ts +1 -1
  92. package/es/defaults.mjs +4 -3
  93. package/es/defaults.mjs.map +1 -1
  94. package/es/index.d.ts +1 -1
  95. package/es/index.mjs +135 -119
  96. package/es/index.mjs.map +1 -1
  97. package/es/make-installer.d.ts +2 -1
  98. package/es/make-installer.mjs +8 -6
  99. package/es/make-installer.mjs.map +1 -1
  100. package/es/package.json.mjs +1 -1
  101. package/es/plugin.d.ts +3 -0
  102. package/es/plugin.mjs +10 -0
  103. package/es/plugin.mjs.map +1 -0
  104. package/es/style.css +1 -1
  105. package/es/theme-style/src/loading.scss.mjs +5 -0
  106. package/es/theme-style/src/loading.scss.mjs.map +1 -0
  107. package/es/theme-style/src/message.scss.mjs +5 -0
  108. package/es/theme-style/src/message.scss.mjs.map +1 -0
  109. package/es/theme-style/src/page-wrapper.scss.mjs +5 -0
  110. package/es/theme-style/src/page-wrapper.scss.mjs.map +1 -0
  111. package/lib/component.js +1 -1
  112. package/lib/component.js.map +1 -1
  113. package/lib/components/back-top/back-top.vue2.js +1 -1
  114. package/lib/components/back-top/back-top.vue2.js.map +1 -1
  115. package/lib/components/config-provider/config-provider.vue.d.ts +9 -0
  116. package/lib/components/config-provider/config-provider.vue2.js +1 -1
  117. package/lib/components/config-provider/config-provider.vue2.js.map +1 -1
  118. package/lib/components/config-provider/constants.d.ts +2 -0
  119. package/lib/components/config-provider/constants.js +1 -1
  120. package/lib/components/config-provider/constants.js.map +1 -1
  121. package/lib/components/config-provider/index.d.ts +8 -0
  122. package/lib/components/config-provider/index.js +1 -1
  123. package/lib/components/context-menu/context-menu.vue2.js +1 -1
  124. package/lib/components/context-menu/context-menu.vue2.js.map +1 -1
  125. package/lib/components/index.d.ts +3 -0
  126. package/lib/components/index.js +1 -1
  127. package/lib/components/loading/directive.d.ts +18 -0
  128. package/lib/components/loading/directive.js +2 -0
  129. package/lib/components/loading/directive.js.map +1 -0
  130. package/lib/components/loading/index.d.ts +39 -0
  131. package/lib/components/loading/index.js +2 -0
  132. package/lib/components/loading/index.js.map +1 -0
  133. package/lib/components/loading/loading.d.ts +27 -0
  134. package/lib/components/loading/loading.js +2 -0
  135. package/lib/components/loading/loading.js.map +1 -0
  136. package/lib/components/loading/service.d.ts +3 -0
  137. package/lib/components/loading/service.js +2 -0
  138. package/lib/components/loading/service.js.map +1 -0
  139. package/lib/components/loading/style/css.d.ts +0 -0
  140. package/lib/components/loading/style/css.js +2 -0
  141. package/lib/components/loading/style/css.js.map +1 -0
  142. package/lib/components/loading/style/index.d.ts +0 -0
  143. package/lib/components/loading/style/index.js +2 -0
  144. package/lib/components/loading/style/index.js.map +1 -0
  145. package/lib/components/loading/types.d.ts +25 -0
  146. package/lib/components/loading/types.js +2 -0
  147. package/lib/components/loading/types.js.map +1 -0
  148. package/lib/components/menu/menu-item.vue2.js +1 -1
  149. package/lib/components/menu/menu-item.vue2.js.map +1 -1
  150. package/lib/components/menu/sub-menu.vue2.js +1 -1
  151. package/lib/components/menu/sub-menu.vue2.js.map +1 -1
  152. package/lib/components/message/index.d.ts +3 -0
  153. package/lib/components/message/index.js +2 -0
  154. package/lib/components/message/index.js.map +1 -0
  155. package/lib/components/message/instance.d.ts +17 -0
  156. package/lib/components/message/instance.js +2 -0
  157. package/lib/components/message/instance.js.map +1 -0
  158. package/lib/components/message/message.vue.d.ts +129 -0
  159. package/lib/components/message/message.vue.js +2 -0
  160. package/lib/components/message/message.vue.js.map +1 -0
  161. package/lib/components/message/message.vue2.js +2 -0
  162. package/lib/components/message/message.vue2.js.map +1 -0
  163. package/lib/components/message/method.d.ts +4 -0
  164. package/lib/components/message/method.js +2 -0
  165. package/lib/components/message/method.js.map +1 -0
  166. package/lib/components/message/style/css.d.ts +0 -0
  167. package/lib/components/message/style/css.js +2 -0
  168. package/lib/components/message/style/css.js.map +1 -0
  169. package/lib/components/message/style/index.d.ts +0 -0
  170. package/lib/components/message/style/index.js +2 -0
  171. package/lib/components/message/style/index.js.map +1 -0
  172. package/lib/components/message/types.d.ts +63 -0
  173. package/lib/components/message/types.js +2 -0
  174. package/lib/components/message/types.js.map +1 -0
  175. package/lib/components/multiple-tabs/multiple-tabs.vue2.js +1 -1
  176. package/lib/components/multiple-tabs/multiple-tabs.vue2.js.map +1 -1
  177. package/lib/components/multiple-tabs/tab-content.vue2.js +1 -1
  178. package/lib/components/multiple-tabs/tab-content.vue2.js.map +1 -1
  179. package/lib/components/page-wrapper/index.d.ts +12 -0
  180. package/lib/components/page-wrapper/index.js +2 -0
  181. package/lib/components/page-wrapper/index.js.map +1 -0
  182. package/lib/components/page-wrapper/page-wrapper.vue.d.ts +13 -0
  183. package/lib/components/page-wrapper/page-wrapper.vue.js +2 -0
  184. package/lib/components/page-wrapper/page-wrapper.vue.js.map +1 -0
  185. package/lib/components/page-wrapper/page-wrapper.vue2.js +2 -0
  186. package/lib/components/page-wrapper/page-wrapper.vue2.js.map +1 -0
  187. package/lib/components/page-wrapper/style/css.d.ts +0 -0
  188. package/lib/components/page-wrapper/style/css.js +2 -0
  189. package/lib/components/page-wrapper/style/css.js.map +1 -0
  190. package/lib/components/page-wrapper/style/index.d.ts +0 -0
  191. package/lib/components/page-wrapper/style/index.js +2 -0
  192. package/lib/components/page-wrapper/style/index.js.map +1 -0
  193. package/lib/components/result/result.vue2.js +1 -1
  194. package/lib/components/result/result.vue2.js.map +1 -1
  195. package/lib/components/side-menu/side-menu.vue2.js +1 -1
  196. package/lib/components/side-menu/side-menu.vue2.js.map +1 -1
  197. package/lib/components/tabs/tab-nav.vue2.js +1 -1
  198. package/lib/components/tabs/tab-nav.vue2.js.map +1 -1
  199. package/lib/defaults.d.ts +1 -1
  200. package/lib/defaults.js +1 -1
  201. package/lib/defaults.js.map +1 -1
  202. package/lib/index.d.ts +1 -1
  203. package/lib/index.js +1 -1
  204. package/lib/index.js.map +1 -1
  205. package/lib/make-installer.d.ts +2 -1
  206. package/lib/make-installer.js +1 -1
  207. package/lib/make-installer.js.map +1 -1
  208. package/lib/package.json.js +1 -1
  209. package/lib/plugin.d.ts +3 -0
  210. package/lib/plugin.js +2 -0
  211. package/lib/plugin.js.map +1 -0
  212. package/lib/theme-style/src/loading.scss.js +2 -0
  213. package/lib/theme-style/src/loading.scss.js.map +1 -0
  214. package/lib/theme-style/src/message.scss.js +2 -0
  215. package/lib/theme-style/src/message.scss.js.map +1 -0
  216. package/lib/theme-style/src/page-wrapper.scss.js +2 -0
  217. package/lib/theme-style/src/page-wrapper.scss.js.map +1 -0
  218. package/package.json +1 -1
  219. package/theme-style/index.css +1 -1
  220. package/theme-style/src/index.scss +3 -0
  221. package/theme-style/src/loading.scss +112 -0
  222. package/theme-style/src/message.scss +111 -0
  223. package/theme-style/src/page-wrapper.scss +28 -0
  224. package/theme-style/vft-loading.css +1 -0
  225. package/theme-style/vft-message.css +1 -0
  226. package/theme-style/vft-page-wrapper.css +1 -0
@@ -0,0 +1,17 @@
1
+ import type { ComponentInternalInstance, VNode } from 'vue';
2
+ import type { Mutable } from 'vft/es/utils';
3
+ import type { MessageHandler, MessageProps } from './types';
4
+ export type MessageContext = {
5
+ id: string;
6
+ vnode: VNode;
7
+ handler: MessageHandler;
8
+ vm: ComponentInternalInstance;
9
+ props: Mutable<MessageProps>;
10
+ };
11
+ export declare const instances: MessageContext[];
12
+ export declare const getInstance: (id: string) => {
13
+ current: MessageContext;
14
+ prev: MessageContext | undefined;
15
+ };
16
+ export declare const getLastOffset: (id: string) => number;
17
+ export declare const getOffsetOrSpace: (id: string, offset: number) => number;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("vue"),n=i.shallowReactive([]),c=t=>{const e=n.findIndex(o=>o.id===t),r=n[e];let s;return e>0&&(s=n[e-1]),{current:r,prev:s}},a=t=>{const{prev:e}=c(t);return e?e.vm.exposed.bottom.value:0},f=(t,e)=>n.findIndex(s=>s.id===t)>0?20:e;exports.getInstance=c;exports.getLastOffset=a;exports.getOffsetOrSpace=f;exports.instances=n;
2
+ //# sourceMappingURL=instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance.js","sources":["../../../../../packages/components/message/instance.ts"],"sourcesContent":["import { shallowReactive } from 'vue'\nimport type { ComponentInternalInstance, VNode } from 'vue'\nimport type { Mutable } from '@vft-ui/utils'\nimport type { MessageHandler, MessageProps } from './types'\n\nexport type MessageContext = {\n\tid: string\n\tvnode: VNode\n\thandler: MessageHandler\n\tvm: ComponentInternalInstance\n\tprops: Mutable<MessageProps>\n}\n\nexport const instances: MessageContext[] = shallowReactive([])\n\nexport const getInstance = (id: string) => {\n\tconst idx = instances.findIndex((instance) => instance.id === id)\n\tconst current = instances[idx]\n\tlet prev: MessageContext | undefined\n\tif (idx > 0) {\n\t\tprev = instances[idx - 1]\n\t}\n\treturn { current, prev }\n}\n\nexport const getLastOffset = (id: string): number => {\n\tconst { prev } = getInstance(id)\n\tif (!prev) return 0\n\treturn prev.vm.exposed!.bottom.value\n}\n\nexport const getOffsetOrSpace = (id: string, offset: number) => {\n\tconst idx = instances.findIndex((instance) => instance.id === id)\n\treturn idx > 0 ? 20 : offset\n}\n"],"names":["instances","shallowReactive","getInstance","id","idx","instance","current","prev","getLastOffset","getOffsetOrSpace","offset"],"mappings":"uGAaaA,EAA8BC,EAAgB,gBAAA,EAAE,EAEhDC,EAAeC,GAAe,CAC1C,MAAMC,EAAMJ,EAAU,UAAWK,GAAaA,EAAS,KAAOF,CAAE,EAC1DG,EAAUN,EAAUI,CAAG,EACzB,IAAAG,EACJ,OAAIH,EAAM,IACFG,EAAAP,EAAUI,EAAM,CAAC,GAElB,CAAE,QAAAE,EAAS,KAAAC,EACnB,EAEaC,EAAiBL,GAAuB,CACpD,KAAM,CAAE,KAAAI,CAAA,EAASL,EAAYC,CAAE,EAC/B,OAAKI,EACEA,EAAK,GAAG,QAAS,OAAO,MADb,CAEnB,EAEaE,EAAmB,CAACN,EAAYO,IAChCV,EAAU,UAAWK,GAAaA,EAAS,KAAOF,CAAE,EACnD,EAAI,GAAKO"}
@@ -0,0 +1,129 @@
1
+ import type { PropType as __PropType } from 'vue';
2
+ import { type VNode } from 'vue';
3
+ import type { MessageType } from './types';
4
+ declare const _sfc_main: import("vue").DefineComponent<{
5
+ customClass: {
6
+ type: __PropType<string | undefined>;
7
+ required: false;
8
+ };
9
+ center: {
10
+ type: __PropType<boolean | undefined>;
11
+ required: false;
12
+ };
13
+ dangerouslyUseHTMLString: {
14
+ type: __PropType<boolean | undefined>;
15
+ required: false;
16
+ };
17
+ duration: {
18
+ type: __PropType<number>;
19
+ required: true;
20
+ };
21
+ icon: {
22
+ type: __PropType<string | undefined>;
23
+ required: false;
24
+ };
25
+ id: {
26
+ type: __PropType<string>;
27
+ required: true;
28
+ };
29
+ message: {
30
+ type: __PropType<string | VNode<import("vue").RendererNode, import("vue").RendererElement, {
31
+ [key: string]: any;
32
+ }> | (() => VNode) | undefined>;
33
+ required: false;
34
+ };
35
+ onClose: {
36
+ type: __PropType<Function | undefined>;
37
+ required: false;
38
+ };
39
+ showClose: {
40
+ type: __PropType<boolean | undefined>;
41
+ required: false;
42
+ };
43
+ type: {
44
+ type: __PropType<MessageType>;
45
+ required: true;
46
+ };
47
+ offset: {
48
+ type: __PropType<number>;
49
+ required: true;
50
+ };
51
+ zIndex: {
52
+ type: __PropType<number | undefined>;
53
+ required: false;
54
+ };
55
+ grouping: {
56
+ type: __PropType<boolean | undefined>;
57
+ required: false;
58
+ };
59
+ repeatNum: {
60
+ type: __PropType<number | undefined>;
61
+ required: false;
62
+ };
63
+ }, {
64
+ visible: import("vue").Ref<boolean>;
65
+ bottom: import("vue").ComputedRef<number>;
66
+ close: () => void;
67
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "destroy"[], "destroy", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
68
+ customClass: {
69
+ type: __PropType<string | undefined>;
70
+ required: false;
71
+ };
72
+ center: {
73
+ type: __PropType<boolean | undefined>;
74
+ required: false;
75
+ };
76
+ dangerouslyUseHTMLString: {
77
+ type: __PropType<boolean | undefined>;
78
+ required: false;
79
+ };
80
+ duration: {
81
+ type: __PropType<number>;
82
+ required: true;
83
+ };
84
+ icon: {
85
+ type: __PropType<string | undefined>;
86
+ required: false;
87
+ };
88
+ id: {
89
+ type: __PropType<string>;
90
+ required: true;
91
+ };
92
+ message: {
93
+ type: __PropType<string | VNode<import("vue").RendererNode, import("vue").RendererElement, {
94
+ [key: string]: any;
95
+ }> | (() => VNode) | undefined>;
96
+ required: false;
97
+ };
98
+ onClose: {
99
+ type: __PropType<Function | undefined>;
100
+ required: false;
101
+ };
102
+ showClose: {
103
+ type: __PropType<boolean | undefined>;
104
+ required: false;
105
+ };
106
+ type: {
107
+ type: __PropType<MessageType>;
108
+ required: true;
109
+ };
110
+ offset: {
111
+ type: __PropType<number>;
112
+ required: true;
113
+ };
114
+ zIndex: {
115
+ type: __PropType<number | undefined>;
116
+ required: false;
117
+ };
118
+ grouping: {
119
+ type: __PropType<boolean | undefined>;
120
+ required: false;
121
+ };
122
+ repeatNum: {
123
+ type: __PropType<number | undefined>;
124
+ required: false;
125
+ };
126
+ }>> & {
127
+ onDestroy?: ((...args: any[]) => any) | undefined;
128
+ }, {}>;
129
+ export default _sfc_main;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./message.vue2.js");exports.default=e.default;
2
+ //# sourceMappingURL=message.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),M=require("@vft/constants"),z=require("@vft/utils"),g=require("@vueuse/core"),b=require("@vft/use"),S=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vue/shared");const E=require("./instance.js"),y=require("../icon/index.js"),L=["id"],N=["innerHTML"],T=["onClick"],V=e.defineComponent({__name:"message",props:{customClass:null,center:{type:Boolean},dangerouslyUseHTMLString:{type:Boolean},duration:null,icon:null,id:null,message:{type:[String,null,Function]},onClose:{type:Function},showClose:{type:Boolean},type:null,offset:null,zIndex:null,grouping:{type:Boolean},repeatNum:null},emits:["destroy"],setup(n,{expose:C}){const t=n,o=S.useNamespace("message"),c=e.ref(),r=e.ref(!1),a=e.ref(0);let l;const p=new Map([["success",{icon:"vi-fill-success"}],["error",{icon:"vi-fill-error"}],["warning",{icon:"vi-fill-warning"}]]),f=e.computed(()=>(t.icon?z.isObject(t.icon)?t.icon:{icon:t.icon}:"")||p.get(t.type)||""),k=e.computed(()=>{const s=t.type;return{[o.bm("icon",s)]:s}}),B=e.computed(()=>E.getLastOffset(t.id)),d=e.computed(()=>t.offset+B.value),h=e.computed(()=>a.value+d.value),w=e.computed(()=>({top:`${d.value}px`,zIndex:t.zIndex}));function u(){t.duration!==0&&({stop:l}=g.useTimeoutFn(()=>{i()},t.duration))}function m(){l==null||l()}function i(){r.value=!1}function q({code:s}){s===M.EVENT_CODE.esc&&i()}return e.onMounted(()=>{u(),r.value=!0}),e.watch(()=>t.repeatNum,()=>{m(),u()}),b.useEventListener(document,"keydown",q),g.useResizeObserver(c,()=>{a.value=c.value.getBoundingClientRect().height}),C({visible:r,bottom:h,close:i}),(s,v)=>(e.openBlock(),e.createBlock(e.Transition,{name:e.unref(o).b("fade"),onBeforeLeave:n.onClose,onAfterLeave:v[0]||(v[0]=x=>s.$emit("destroy"))},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{id:n.id,ref_key:"messageRef",ref:c,class:e.normalizeClass([e.unref(o).b(),{[e.unref(o).m(n.type)]:n.type&&!n.icon},e.unref(o).is("center",n.center),e.unref(o).is("closable",n.showClose),n.customClass]),style:e.normalizeStyle(e.unref(w)),role:"alert",onMouseenter:m,onMouseleave:u},[e.unref(f)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass([e.unref(o).e("icon"),e.unref(k)])},[e.createVNode(e.unref(y.VftIcon),e.normalizeProps(e.guardReactiveProps(e.unref(f))),null,16)],2)):e.createCommentVNode("",!0),e.renderSlot(s.$slots,"default",{},()=>[n.dangerouslyUseHTMLString?(e.openBlock(),e.createElementBlock("p",{key:1,class:e.normalizeClass(e.unref(o).e("content")),innerHTML:n.message},null,10,N)):(e.openBlock(),e.createElementBlock("p",{key:0,class:e.normalizeClass(e.unref(o).e("content"))},e.toDisplayString(n.message),3))]),n.showClose?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(o).e("closeBtn")),onClick:e.withModifiers(i,["stop"])},[e.createVNode(e.unref(y.VftIcon),{icon:"vi-close"})],10,T)):e.createCommentVNode("",!0)],46,L),[[e.vShow,r.value]])]),_:3},8,["name","onBeforeLeave"]))}});exports.default=V;
2
+ //# sourceMappingURL=message.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.vue2.js","sources":["../../../../../packages/components/message/message.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { EVENT_CODE } from '@vft/constants';\nimport { isObject } from '@vft/utils';\nimport { useResizeObserver, useTimeoutFn } from '@vueuse/core';\nimport { useEventListener } from '@vft/use';\nimport type { CSSProperties } from 'vue';\nimport { computed, onMounted, ref, type VNode, watch } from 'vue';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { getLastOffset } from './instance';\nimport Icon from '@vft-ui/components/icon';\nimport type { MessageType } from './types';\n\ninterface MessageProps {\n customClass?: string;\n center?: boolean;\n dangerouslyUseHTMLString?: boolean;\n duration: number;\n icon?: string;\n id: string;\n message?: string | VNode | (() => VNode);\n onClose?: Function;\n showClose?: boolean;\n type: MessageType;\n offset: number;\n zIndex?: number;\n grouping?: boolean;\n repeatNum?: number;\n}\n\nconst props = defineProps({\n \"customClass\": null,\n \"center\": { type: Boolean, },\n \"dangerouslyUseHTMLString\": { type: Boolean, },\n \"duration\": null,\n \"icon\": null,\n \"id\": null,\n \"message\": { type: [String, null, Function], },\n \"onClose\": { type: Function, },\n \"showClose\": { type: Boolean, },\n \"type\": null,\n \"offset\": null,\n \"zIndex\": null,\n \"grouping\": { type: Boolean, },\n \"repeatNum\": null\n});\n\ndefineEmits(['destroy']);\n\nconst ns = useNamespace('message');\n\n// 消息框 ref\nconst messageRef = ref<HTMLDivElement>();\n// 是否可见\nconst visible = ref(false);\nconst height = ref(0);\n\nlet stopTimer: (() => void) | undefined = undefined;\n\nconst iconCfgMap = new Map([\n ['success', { icon: 'vi-fill-success' }],\n ['error', { icon: 'vi-fill-error' }],\n ['warning', { icon: 'vi-fill-warning' }]\n]);\n\nconst iconCfg = computed(() => {\n const _iconCfg = props.icon ? isObject(props.icon) ? props.icon : { icon: props.icon } : '';\n\n return _iconCfg || iconCfgMap.get(props.type) || '';\n});\n\nconst typeClass = computed(() => {\n const type = props.type;\n return { [ns.bm('icon', type)]: type };\n});\n\nconst lastOffset = computed(() => getLastOffset(props.id));\n// 偏移量\nconst offset = computed(() => props.offset + lastOffset.value);\nconst bottom = computed((): number => height.value + offset.value);\nconst customStyle = computed<CSSProperties>(() => ({\n top: `${offset.value}px`,\n zIndex: props.zIndex\n}));\n\nfunction startTimer () {\n if (props.duration === 0) return;\n ({ stop: stopTimer } = useTimeoutFn(() => {\n close();\n }, props.duration));\n}\n\nfunction clearTimer () {\n stopTimer?.();\n}\n\nfunction close () {\n visible.value = false;\n}\n\n// 监听退出键关闭\nfunction keydown ({ code }: KeyboardEvent) {\n if (code === EVENT_CODE.esc) {\n close();\n }\n}\n\nonMounted(() => {\n startTimer();\n visible.value = true;\n});\n\nwatch(\n () => props.repeatNum,\n () => {\n clearTimer();\n startTimer();\n }\n);\n\n// 监听键盘事件\nuseEventListener(document, 'keydown', keydown);\n\n// 监听 messageRef 消息框的大小变化\nuseResizeObserver(messageRef, () => {\n height.value = messageRef.value!.getBoundingClientRect().height;\n});\n\ndefineExpose({\n visible,\n bottom,\n close\n});\n</script>\n\n<template>\n <transition\n :name=\"ns.b('fade')\"\n @before-leave=\"onClose\"\n @after-leave=\"$emit('destroy')\"\n >\n <div\n v-show=\"visible\"\n :id=\"id\"\n ref=\"messageRef\"\n :class=\"[\n ns.b(),\n { [ns.m(type)]: type && !icon },\n ns.is('center', center),\n ns.is('closable', showClose),\n customClass,\n ]\"\n :style=\"customStyle\"\n role=\"alert\"\n @mouseenter=\"clearTimer\"\n @mouseleave=\"startTimer\"\n >\n <div v-if=\"iconCfg\" :class=\"[ns.e('icon'), typeClass]\">\n <icon v-bind=\"iconCfg\" />\n </div>\n <slot>\n <p v-if=\"!dangerouslyUseHTMLString\" :class=\"ns.e('content')\">\n {{ message }}\n </p>\n <!-- Caution here, message could've been compromised, never use user's input as message -->\n <p v-else :class=\"ns.e('content')\" v-html=\"message\" />\n </slot>\n <div v-if=\"showClose\" :class=\"ns.e('closeBtn')\" @click.stop=\"close\">\n <icon icon=\"vi-close\"/>\n </div>\n </div>\n </transition>\n</template>\n"],"names":["ns","useNamespace","messageRef","ref","visible","height","stopTimer","iconCfgMap","iconCfg","computed","props","isObject","typeClass","type","lastOffset","getLastOffset","offset","bottom","customStyle","startTimer","useTimeoutFn","close","clearTimer","keydown","code","EVENT_CODE","onMounted","watch","useEventListener","useResizeObserver","expose"],"mappings":"y1BAgDMA,EAAKC,eAAa,SAAS,EAG3BC,EAAaC,EAAAA,MAEbC,EAAUD,MAAI,EAAK,EACnBE,EAASF,MAAI,CAAC,EAEpB,IAAIG,EAEE,MAAAC,MAAiB,IAAI,CACzB,CAAC,UAAW,CAAE,KAAM,kBAAmB,EACvC,CAAC,QAAS,CAAE,KAAM,gBAAiB,EACnC,CAAC,UAAW,CAAE,KAAM,kBAAmB,CAAA,CACxC,EAEKC,EAAUC,EAAAA,SAAS,KACNC,EAAM,KAAOC,EAAA,SAASD,EAAM,IAAI,EAAIA,EAAM,KAAO,CAAE,KAAMA,EAAM,MAAS,KAEtEH,EAAW,IAAIG,EAAM,IAAI,GAAK,EAClD,EAEKE,EAAYH,EAAAA,SAAS,IAAM,CAC/B,MAAMI,EAAOH,EAAM,KACZ,MAAA,CAAE,CAACV,EAAG,GAAG,OAAQa,CAAI,CAAC,EAAGA,EAAK,CACtC,EAEKC,EAAaL,EAAAA,SAAS,IAAMM,EAAc,cAAAL,EAAM,EAAE,CAAC,EAEnDM,EAASP,EAAAA,SAAS,IAAMC,EAAM,OAASI,EAAW,KAAK,EACvDG,EAASR,EAAAA,SAAS,IAAcJ,EAAO,MAAQW,EAAO,KAAK,EAC3DE,EAAcT,EAAAA,SAAwB,KAAO,CACjD,IAAK,GAAGO,EAAO,UACf,OAAQN,EAAM,MACd,EAAA,EAEF,SAASS,GAAc,CACjBT,EAAM,WAAa,IACtB,CAAE,KAAMJ,CAAU,EAAIc,eAAa,IAAM,CAClCC,GAAA,EACLX,EAAM,QAAQ,EACnB,CAEA,SAASY,GAAc,CACThB,GAAA,MAAAA,GACd,CAEA,SAASe,GAAS,CAChBjB,EAAQ,MAAQ,EAClB,CAGS,SAAAmB,EAAS,CAAE,KAAAC,GAAuB,CACrCA,IAASC,aAAW,KAChBJ,GAEV,CAEAK,OAAAA,EAAAA,UAAU,IAAM,CACHP,IACXf,EAAQ,MAAQ,EAAA,CACjB,EAEDuB,EAAA,MACE,IAAMjB,EAAM,UACZ,IAAM,CACOY,IACAH,GACb,CAAA,EAIeS,EAAAA,iBAAA,SAAU,UAAWL,CAAO,EAG7CM,EAAA,kBAAkB3B,EAAY,IAAM,CAClCG,EAAO,MAAQH,EAAW,MAAO,sBAAA,EAAwB,MAAA,CAC1D,EAEY4B,EAAA,CACX,QAAA1B,EACA,OAAAa,EACA,MAAAI,CAAA,CACD"}
@@ -0,0 +1,4 @@
1
+ import type { Message, MessageType } from './types';
2
+ export declare function closeAll(type?: MessageType): void;
3
+ declare const _default: Message;
4
+ export default _default;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const p=require("vue"),v=require("@vueuse/core"),o=require("@vft/utils");require("@popperjs/core");require("lodash");const _=require("../../hooks/use-z-index/index.js");require("@vue/shared");const y=require("../../utils/error.js"),T=require("./message.vue2.js"),q=require("./types.js"),i=require("./instance.js");require("../config-provider/index.js");const f=require("../config-provider/constants.js");let b=1;const x=e=>{const s=!e||o.isString(e)||o.isVNode(e)||o.isFunction(e)?{message:e}:e,n={...q.messageDefaults,...s};if(!n.appendTo)n.appendTo=document.body;else if(o.isString(n.appendTo)){let t=document.querySelector(n.appendTo);o.isElement(t)||(y.debugWarn("VriMessage","the appendTo option is not an HTMLElement. Falling back to document.body."),t=document.body),n.appendTo=t}return n},C=e=>{const s=i.instances.indexOf(e);if(s===-1)return;i.instances.splice(s,1);const{handler:n}=e;n.close()},z=({appendTo:e,...s},n)=>{const{nextZIndex:t}=_.useZIndex(),r=`message_${b++}`,u=s.onClose,c=document.createElement("div"),l={...s,zIndex:t()+s.zIndex,id:r,onClose:()=>{u==null||u(),C(m)},onDestroy:()=>{p.render(null,c)}},d=p.createVNode(T.default,l,o.isFunction(l.message)||o.isVNode(l.message)?{default:o.isFunction(l.message)?l.message:()=>l.message}:null);d.appContext=n||a._context,p.render(d,c),e.appendChild(c.firstElementChild);const g=d.component,m={id:r,vnode:d,vm:g,handler:{close:()=>{g.exposed.visible.value=!1}},props:d.component.props};return m},a=(e={},s)=>{if(!v.isClient)return{close:()=>{}};if(o.isNumber(f.messageConfig.max)&&i.instances.length>=f.messageConfig.max)return{close:()=>{}};const n=x(e);if(n.grouping&&i.instances.length){const r=i.instances.find(({vnode:u})=>{var c;return((c=u.props)==null?void 0:c.message)===n.message});if(r)return r.props.repeatNum+=1,r.props.type=n.type,r.handler}const t=z(n,s);return i.instances.push(t),t.handler};q.messageTypes.forEach(e=>{a[e]=(s={},n)=>{const t=x(s);return a({...t,type:e},n)}});function h(e){for(const s of i.instances)(!e||e===s.props.type)&&s.handler.close()}a.closeAll=h;a._context=null;exports.closeAll=h;exports.default=a;
2
+ //# sourceMappingURL=method.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"method.js","sources":["../../../../../packages/components/message/method.ts"],"sourcesContent":["import { createVNode, render } from 'vue';\nimport { isClient } from '@vueuse/core';\nimport { isElement, isFunction, isNumber, isString, isVNode } from '@vft/utils';\nimport { useZIndex } from '@vft-ui/hooks';\nimport { debugWarn } from '../../utils';\nimport MessageConstructor from './message.vue';\nimport { messageDefaults, messageTypes } from './types';\nimport { instances } from './instance';\nimport { messageConfig } from '@vft-ui/components/config-provider';\nimport type { MessageContext } from './instance';\nimport type { AppContext } from 'vue';\nimport type { Message, MessageFn, MessageHandler, MessageParamsNormalized, MessageParams, MessageType } from './types';\n\nlet seed = 1;\n\n// 获取最终处理后的 message 的参数\nconst normalizeOptions = (params?: MessageParams) => {\n const options = !params || isString(params) || isVNode(params) || isFunction(params) ? { message: params } : params;\n\n // 合并传入的数据与默认的值\n const normalized = {\n ...messageDefaults,\n ...options\n };\n\n // appendTo 默认指定为 body\n if (!normalized.appendTo) {\n normalized.appendTo = document.body;\n } else if (isString(normalized.appendTo)) {\n let appendTo = document.querySelector<HTMLElement>(normalized.appendTo);\n // 当外部传入了 appendTo 但是我们获取到的 appendTo 不是一个元素节点,抛出警告,然后继续默认指定为 body\n if (!isElement(appendTo)) {\n debugWarn('VriMessage', 'the appendTo option is not an HTMLElement. Falling back to document.body.');\n appendTo = document.body;\n }\n\n normalized.appendTo = appendTo;\n }\n\n return normalized as MessageParamsNormalized;\n};\n\n// 关闭 message\nconst closeMessage = (instance: MessageContext) => {\n const idx = instances.indexOf(instance);\n if (idx === -1) return;\n\n instances.splice(idx, 1);\n const { handler } = instance;\n handler.close();\n};\n\n/**\n * @description 创建一个 message 实例\n * @author wfd\n * @date 2022/10/31 15:37\n * @example\n * @param {any} appendTo\n * @param {Omit<, \"appendTo\">} options\n * @param {AppContext | null} context\n * @returns {MessageContext}\n */\nconst createMessage = ({ appendTo, ...options }: MessageParamsNormalized, context?: AppContext | null): MessageContext => {\n // z-index 的设置\n const { nextZIndex } = useZIndex();\n // 自定义 message 的 id\n const id = `message_${seed++}`;\n // 获取用户自定义的 onClose\n const userOnClose = options.onClose;\n\n const container = document.createElement('div');\n\n const props = {\n ...options,\n zIndex: nextZIndex() + options.zIndex!,\n id,\n onClose: () => {\n userOnClose?.();\n closeMessage(instance);\n },\n\n // 清除 message element 防止内存泄漏\n onDestroy: () => {\n render(null, container);\n }\n };\n // 创建一个虚拟节点,children 的用处是为了 message 可能是函数或者虚拟节点\n const vnode = createVNode(MessageConstructor, props, isFunction(props.message) || isVNode(props.message) ? { default: isFunction(props.message) ? props.message : () => props.message } : null);\n\n // 设置 context\n vnode.appContext = context || message._context;\n // 渲染虚拟dom\n render(vnode, container);\n\n // 将渲染好的 dom 添加到 appendTo 上,默认是添加到 body 上\n appendTo.appendChild(container.firstElementChild!);\n\n const vm = vnode.component!;\n\n const handler: MessageHandler = {\n // instead of calling the onClose function directly,\n // setting this value so that we can have the full lifecycle\n // for out component, so that all closing steps will not be skipped.\n close: () => {\n // 将 message 组件暴露出来的 visible 设置为 false\n vm.exposed!.visible.value = false;\n }\n };\n\n // 返回这个实例\n const instance: MessageContext = {\n id,\n vnode,\n vm,\n handler,\n props: (vnode.component as any).props\n };\n\n return instance;\n};\n\n// message 初始化相关\nconst message: MessageFn & Partial<Message> & { _context: AppContext | null } = (options = {}, context) => {\n if (!isClient) return { close: () => undefined };\n\n // 判断设置最大的 message 展示的数量\n if (isNumber(messageConfig.max) && instances.length >= messageConfig.max) {\n return { close: () => undefined };\n }\n // 获取最终处理后的 message 的参数\n const normalized = normalizeOptions(options);\n\n // 开启分组,message 实例存在\n if (normalized.grouping && instances.length) {\n // 找出当前实例中展示的 message 与现在 options 参数中 message 一致的 message 实例\n const instance = instances.find(({ vnode: vm }) => vm.props?.message === normalized.message);\n // repeatNum ++\n if (instance) {\n instance.props.repeatNum += 1;\n instance.props.type = normalized.type;\n return instance.handler;\n }\n }\n // 创建一个 message 实例\n const instance = createMessage(normalized, context);\n // 将 message 实例 push 至数组中\n instances.push(instance);\n\n return instance.handler;\n};\n\n//\nmessageTypes.forEach((type) => {\n message[type] = (options = {}, appContext) => {\n const normalized = normalizeOptions(options);\n return message({ ...normalized, type }, appContext);\n };\n});\n\n// 关闭所有 message\nexport function closeAll(type?: MessageType): void {\n for (const instance of instances) {\n if (!type || type === instance.props.type) {\n instance.handler.close();\n }\n }\n}\n\nmessage.closeAll = closeAll;\nmessage._context = null;\n\nexport default message as Message;\n"],"names":["seed","normalizeOptions","params","options","isString","isVNode","isFunction","normalized","messageDefaults","appendTo","isElement","debugWarn","closeMessage","instance","idx","instances","handler","createMessage","context","nextZIndex","useZIndex","id","userOnClose","container","props","render","vnode","createVNode","MessageConstructor","message","vm","isClient","isNumber","messageConfig","_a","messageTypes","type","appContext","closeAll"],"mappings":"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"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";require("vft/theme-style/base.css");require("vft/theme-style/vft-message.css");
2
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";require("../../../theme-style/src/base.scss.js");require("../../../theme-style/src/message.scss.js");
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ import type { AppContext, VNode } from 'vue';
2
+ export declare const messageTypes: readonly ["success", "info", "warning", "error"];
3
+ export type MessageType = 'success' | 'warning' | 'info' | 'error';
4
+ export interface MessageConfigContext {
5
+ /** 可同时显示的消息最大数量 */
6
+ max?: number;
7
+ }
8
+ export declare const messageDefaults: {
9
+ customClass: string;
10
+ center: boolean;
11
+ dangerouslyUseHTMLString: boolean;
12
+ duration: number;
13
+ icon: undefined;
14
+ id: string;
15
+ message: string;
16
+ onClose: undefined;
17
+ showClose: boolean;
18
+ type: string;
19
+ offset: number;
20
+ zIndex: number;
21
+ grouping: boolean;
22
+ repeatNum: number;
23
+ appendTo: HTMLElement;
24
+ };
25
+ export interface MessageProps {
26
+ customClass?: string;
27
+ center?: boolean;
28
+ dangerouslyUseHTMLString?: boolean;
29
+ duration?: number;
30
+ icon?: string;
31
+ id?: string;
32
+ message?: string | VNode | (() => VNode);
33
+ onClose?: Function;
34
+ showClose?: boolean;
35
+ type?: MessageType;
36
+ offset?: number;
37
+ zIndex?: number;
38
+ grouping?: boolean;
39
+ repeatNum: number;
40
+ }
41
+ export type MessageOptions = Partial<Omit<MessageProps, 'id'> & {
42
+ appendTo?: HTMLElement | string;
43
+ }>;
44
+ export type MessageParams = MessageOptions | MessageOptions['message'];
45
+ export type MessageParamsNormalized = Omit<MessageProps, 'id'> & {
46
+ appendTo: HTMLElement;
47
+ };
48
+ export type MessageOptionsWithType = Omit<MessageOptions, 'type'>;
49
+ export type MessageParamsWithType = MessageOptionsWithType | MessageOptions['message'];
50
+ export interface MessageHandler {
51
+ close: () => void;
52
+ }
53
+ export type MessageFn = {
54
+ (options?: MessageParams, appContext?: null | AppContext): MessageHandler;
55
+ closeAll(type?: MessageType): void;
56
+ };
57
+ export type MessageTypedFn = (options?: MessageParamsWithType, appContext?: null | AppContext) => MessageHandler;
58
+ export interface Message extends MessageFn {
59
+ success: MessageTypedFn;
60
+ warning: MessageTypedFn;
61
+ info: MessageTypedFn;
62
+ error: MessageTypedFn;
63
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vueuse/core"),s=["success","info","warning","error"],o={customClass:"",center:!1,dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",offset:16,zIndex:0,grouping:!1,repeatNum:1,appendTo:e.isClient?document.body:void 0};exports.messageDefaults=o;exports.messageTypes=s;
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../../../../packages/components/message/types.ts"],"sourcesContent":["import { isClient } from '@vueuse/core';\nimport type { AppContext, VNode } from 'vue';\n\nexport const messageTypes = ['success', 'info', 'warning', 'error'] as const;\nexport type MessageType = 'success' | 'warning' | 'info' | 'error';\n\nexport interface MessageConfigContext {\n /** 可同时显示的消息最大数量 */\n max?: number;\n}\n\n// props 默认赋值\nexport const messageDefaults = {\n customClass: '',\n center: false,\n dangerouslyUseHTMLString: false,\n duration: 3000,\n icon: undefined,\n id: '',\n message: '',\n onClose: undefined,\n showClose: false,\n type: 'info',\n offset: 16,\n zIndex: 0,\n grouping: false,\n repeatNum: 1,\n appendTo: isClient ? document.body : (undefined as never),\n};\n\nexport interface MessageProps {\n customClass?: string;\n center?: boolean;\n dangerouslyUseHTMLString?: boolean;\n duration?: number;\n icon?: string;\n id?: string;\n message?: string | VNode | (() => VNode);\n onClose?: Function;\n showClose?: boolean;\n type?: MessageType;\n offset?: number;\n zIndex?: number;\n grouping?: boolean;\n repeatNum: number;\n}\n\n// 排除 id 增加 appendTo\nexport type MessageOptions = Partial<\n Omit<MessageProps, 'id'> & {\n appendTo?: HTMLElement | string;\n }\n>;\n\nexport type MessageParams = MessageOptions | MessageOptions['message'];\n\nexport type MessageParamsNormalized = Omit<MessageProps, 'id'> & {\n appendTo: HTMLElement;\n};\n\nexport type MessageOptionsWithType = Omit<MessageOptions, 'type'>;\nexport type MessageParamsWithType = MessageOptionsWithType | MessageOptions['message'];\n\nexport interface MessageHandler {\n close: () => void;\n}\n\nexport type MessageFn = {\n (options?: MessageParams, appContext?: null | AppContext): MessageHandler;\n closeAll(type?: MessageType): void;\n};\n\nexport type MessageTypedFn = (options?: MessageParamsWithType, appContext?: null | AppContext) => MessageHandler;\n\nexport interface Message extends MessageFn {\n success: MessageTypedFn\n warning: MessageTypedFn\n info: MessageTypedFn\n error: MessageTypedFn\n}\n"],"names":["messageTypes","messageDefaults","isClient"],"mappings":"gHAGaA,EAAe,CAAC,UAAW,OAAQ,UAAW,OAAO,EASrDC,EAAkB,CAC7B,YAAa,GACb,OAAQ,GACR,yBAA0B,GAC1B,SAAU,IACV,KAAM,OACN,GAAI,GACJ,QAAS,GACT,QAAS,OACT,UAAW,GACX,KAAM,OACN,OAAQ,GACR,OAAQ,EACR,SAAU,GACV,UAAW,EACX,SAAUC,EAAW,SAAA,SAAS,KAAQ,MACxC"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),s=require("@vft/router"),p=require("@vft/store"),w=require("@vft/use"),x=require("@vft/utils"),I=require("hotkeys-js"),g=require("vue-router"),K=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("../divider/index.js");require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");const y=require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("./index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");require("../back-top/index.js");require("../config-provider/index.js");require("../descriptions/index.js");require("../full-screen/index.js");require("../icon-text/index.js");require("../image/index.js");require("../input/index.js");require("../link/index.js");require("../pagination/index.js");require("../tag/index.js");require("../side-menu/index.js");require("../qrcode/index.js");require("../overlay/index.js");require("../clamp/index.js");require("../clamp-toggle/index.js");const A=require("./tab-content.vue2.js"),R=require("./use/use-multiple-tabs.js"),C=K.useNamespace("multiple-tabs"),z=e.defineComponent({name:C.b()}),D=e.defineComponent({...z,props:{tabsStyle:null,contextMenuStyle:null,canDrag:{type:Boolean}},setup(q){const n=R.initAffixTabs();q.canDrag&&R.useTabsDrag(n);const f=p.useMultipleTabStore(),a=e.ref(""),i=e.ref(0),m=e.ref(),v=g.useRouter(),{go:h}=s.useRouterHelper(),d=e.computed(()=>f.getTabList.filter(t=>{var r;return!((r=t.meta)!=null&&r.hideTab)}));e.watchEffect(()=>{var t;if(a.value){const r=d.value.findIndex(u=>s.getRouterKeyPath(u)===a.value);r===-1?i.value=((t=d.value)==null?void 0:t.length)-1:i.value=r,i.value=i.value<(n==null?void 0:n.length)?(n==null?void 0:n.length)-1:i.value}}),g.onBeforeRouteLeave(()=>{m.value=e.unref(v.currentRoute)}),s.listenerRouteChange(t=>{if(!t)return;const{meta:r={}}=t,{currentActivePath:u,hideTab:o}=r,l=o?u:null,c=s.getRouterKeyPath(t);if(a.value!==c&&(a.value=c),l){let b=v.getRoutes().find(V=>V.path===u);b&&f.addTab(b,e.unref(m),i.value,t)}else f.addTab(e.unref(t),e.unref(m),i.value)});function _(t){var o,l;if(a.value===t.paneName)return;const r=d.value[t.attrs.index];a.value=t.paneName;const u=(l=(o=r==null?void 0:r.meta)==null?void 0:o.hideActiveRoute)==null?void 0:l.fullPath;h(u||r.fullPath||r.path)}function T(t){f.closeTabByKey(t,v)}const[S,P]=w.useRefs();function M(t){const r=t.pane.attrs.index,u=t.event;S.value[r].handleContext(u)}const k=e.computed(()=>{let t={padding:"4px 0 0","header-height":"26px","item-color":"#5C5C5C","item-bg-color":"#f8f8f8","font-size":"13px","item-padding":"0 10px","close-icon-left":"8px","item-distance":"10px","item-max-width":"348px","header-margin":"0 0 0 8px"};return{...x.generateCssVars(t,"tabs","vft"),...q.tabsStyle}}),{closeCurrent:B}=p.useTabs();I("command+e, ctrl+e",function(){return B(),!1});const N=e.computed(()=>({...x.generateCssVars({border:"1px solid #dcdfe6","sub-item-height":"40px","item-min-width":"150px"},"menu","vft"),...q.contextMenuStyle}));return(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(C).b()),style:e.normalizeStyle(e.unref(k))},[e.createVNode(e.unref(y.VftTabs),{"model-value":a.value,"onUpdate:modelValue":r[0]||(r[0]=u=>a.value=u),type:"card",onTabClick:_,onTabRemove:T,onTabContextMenu:M,closeIconCfg:{color:"white"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(d),(u,o)=>{var l;return e.openBlock(),e.createBlock(e.unref(y.VftTabPane),{key:e.unref(s.getRouterKeyPath)(u)+o,closable:!((l=u.meta)!=null&&l.affix),index:o,name:e.unref(s.getRouterKeyPath)(u)},{label:e.withCtx(()=>{var c;return[e.createVNode(A.default,{contextMenuStyle:e.unref(N),affixNum:(c=e.unref(n))==null?void 0:c.length,ref_for:!0,ref:e.unref(P)(o),tabItem:u},null,8,["contextMenuStyle","affixNum","tabItem"])]}),_:2},1032,["closable","index","name"])}),128))]),_:1},8,["model-value"])],6))}});exports.default=D;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),s=require("@vft/router"),p=require("@vft/store"),w=require("@vft/use"),x=require("@vft/utils"),I=require("hotkeys-js"),g=require("vue-router"),K=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("../divider/index.js");require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");const y=require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("./index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");require("../back-top/index.js");require("../config-provider/index.js");require("../descriptions/index.js");require("../full-screen/index.js");require("../icon-text/index.js");require("../image/index.js");require("../input/index.js");require("../link/index.js");require("../pagination/index.js");require("../tag/index.js");require("../side-menu/index.js");require("../qrcode/index.js");require("../overlay/index.js");require("../clamp/index.js");require("../clamp-toggle/index.js");require("../page-wrapper/index.js");require("../message/index.js");const A=require("./tab-content.vue2.js"),R=require("./use/use-multiple-tabs.js"),C=K.useNamespace("multiple-tabs"),z=e.defineComponent({name:C.b()}),D=e.defineComponent({...z,props:{tabsStyle:null,contextMenuStyle:null,canDrag:{type:Boolean}},setup(q){const n=R.initAffixTabs();q.canDrag&&R.useTabsDrag(n);const f=p.useMultipleTabStore(),a=e.ref(""),o=e.ref(0),m=e.ref(),v=g.useRouter(),{go:h}=s.useRouterHelper(),d=e.computed(()=>f.getTabList.filter(t=>{var r;return!((r=t.meta)!=null&&r.hideTab)}));e.watchEffect(()=>{var t;if(a.value){const r=d.value.findIndex(u=>s.getRouterKeyPath(u)===a.value);r===-1?o.value=((t=d.value)==null?void 0:t.length)-1:o.value=r,o.value=o.value<(n==null?void 0:n.length)?(n==null?void 0:n.length)-1:o.value}}),g.onBeforeRouteLeave(()=>{m.value=e.unref(v.currentRoute)}),s.listenerRouteChange(t=>{if(!t)return;const{meta:r={}}=t,{currentActivePath:u,hideTab:i}=r,l=i?u:null,c=s.getRouterKeyPath(t);if(a.value!==c&&(a.value=c),l){let b=v.getRoutes().find(V=>V.path===u);b&&f.addTab(b,e.unref(m),o.value,t)}else f.addTab(e.unref(t),e.unref(m),o.value)});function _(t){var i,l;if(a.value===t.paneName)return;const r=d.value[t.attrs.index];a.value=t.paneName;const u=(l=(i=r==null?void 0:r.meta)==null?void 0:i.hideActiveRoute)==null?void 0:l.fullPath;h(u||r.fullPath||r.path)}function T(t){f.closeTabByKey(t,v)}const[S,P]=w.useRefs();function M(t){const r=t.pane.attrs.index,u=t.event;S.value[r].handleContext(u)}const k=e.computed(()=>{let t={padding:"4px 0 0","header-height":"26px","item-color":"#5C5C5C","item-bg-color":"#f8f8f8","font-size":"13px","item-padding":"0 10px","close-icon-left":"8px","item-distance":"10px","item-max-width":"348px","header-margin":"0 0 0 8px"};return{...x.generateCssVars(t,"tabs","vft"),...q.tabsStyle}}),{closeCurrent:B}=p.useTabs();I("command+e, ctrl+e",function(){return B(),!1});const N=e.computed(()=>({...x.generateCssVars({border:"1px solid #dcdfe6","sub-item-height":"40px","item-min-width":"150px"},"menu","vft"),...q.contextMenuStyle}));return(t,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(C).b()),style:e.normalizeStyle(e.unref(k))},[e.createVNode(e.unref(y.VftTabs),{"model-value":a.value,"onUpdate:modelValue":r[0]||(r[0]=u=>a.value=u),type:"card",onTabClick:_,onTabRemove:T,onTabContextMenu:M,closeIconCfg:{color:"white"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(d),(u,i)=>{var l;return e.openBlock(),e.createBlock(e.unref(y.VftTabPane),{key:e.unref(s.getRouterKeyPath)(u)+i,closable:!((l=u.meta)!=null&&l.affix),index:i,name:e.unref(s.getRouterKeyPath)(u)},{label:e.withCtx(()=>{var c;return[e.createVNode(A.default,{contextMenuStyle:e.unref(N),affixNum:(c=e.unref(n))==null?void 0:c.length,ref_for:!0,ref:e.unref(P)(i),tabItem:u},null,8,["contextMenuStyle","affixNum","tabItem"])]}),_:2},1032,["closable","index","name"])}),128))]),_:1},8,["model-value"])],6))}});exports.default=D;
2
2
  //# sourceMappingURL=multiple-tabs.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiple-tabs.vue2.js","sources":["../../../../../packages/components/multiple-tabs/multiple-tabs.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('multiple-tabs')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { getRouterKeyPath, listenerRouteChange, useRouterHelper } from '@vft/router';\nimport { useMultipleTabStore, useTabs } from '@vft/store';\nimport { useRefs } from '@vft/use';\nimport { generateCssVars } from '@vft/utils';\nimport hotkeys from 'hotkeys-js';\nimport { computed, ref, unref, watchEffect } from 'vue';\nimport type { RouteLocationNormalized, RouteMeta } from 'vue-router';\nimport { useRouter, onBeforeRouteLeave } from 'vue-router';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { VftTabs, VftTabPane, type TabsPaneContext } from '@vft-ui/components';\n\nimport TabContent from './tab-content.vue';\nimport type { TabContentExpose } from './types';\nimport { initAffixTabs, useTabsDrag } from './use';\n\ninterface MultipleTabsProps {\n tabsStyle?: Record<string, Numberish>;\n contextMenuStyle?: Record<string, Numberish>;\n canDrag?: boolean;\n}\n\ndefineProps({\n \"tabsStyle\": null,\n \"contextMenuStyle\": null,\n \"canDrag\": { type: Boolean, }\n})\n\n\n\n;\n\nconst affixList = initAffixTabs();\n\nif (__props.canDrag) {\n useTabsDrag(affixList);\n}\n\nconst tabStore = useMultipleTabStore();\n\n// active path for tab\nconst activePathRef = ref('');\nconst activeIndex = ref(0);\nconst fromRoute = ref();\n\nconst router = useRouter();\nconst { go } = useRouterHelper();\n\n// get current tab list\nconst getTabsState = computed(() => {\n return tabStore.getTabList.filter((item) => {\n return !item.meta?.hideTab;\n });\n});\n\n\nwatchEffect(() => {\n if (activePathRef.value) {\n const _activeIndex = getTabsState.value.findIndex(item => {\n return getRouterKeyPath(item) === activePathRef.value;\n });\n if (_activeIndex === -1) {\n activeIndex.value = getTabsState.value?.length - 1;\n } else {\n activeIndex.value = _activeIndex;\n }\n activeIndex.value = activeIndex.value < affixList?.length ? affixList?.length - 1 : activeIndex.value;\n }\n});\n\nonBeforeRouteLeave(() => {\n fromRoute.value = unref(router.currentRoute);\n});\n\nlistenerRouteChange((route) => {\n if (!route) {\n return;\n }\n\n const { meta = {} } = route;\n const { currentActivePath, hideTab } = meta as RouteMeta;\n\n const isHide = !hideTab ? null : currentActivePath;\n\n // set current active tab value\n const activePath = getRouterKeyPath(route);\n\n if (activePathRef.value !== activePath) {\n activePathRef.value = activePath;\n }\n\n if (isHide) {\n // 如果当前 tab 是隐藏的,则从路由中根据 currentActivePath 寻找到此路由的信息,然后在 tabStore 添加此路由\n let findParentRoute = router.getRoutes().find((item) => item.path === currentActivePath);\n findParentRoute && tabStore.addTab(findParentRoute as unknown as RouteLocationNormalized, unref(fromRoute), activeIndex.value, route);\n } else {\n tabStore.addTab(unref(route), unref(fromRoute), activeIndex.value);\n }\n});\n\n// 点击 tab 根据 tab 传入的 path 路径,跳转到对应页面\nfunction handleClick (pane: TabsPaneContext) {\n if (activePathRef.value === pane.paneName) {\n \treturn;\n }\n const clickTab = getTabsState.value[pane.attrs.index];\n activePathRef.value = pane.paneName as string;\n const hideActiveRoutePath = (clickTab?.meta?.hideActiveRoute as RouteLocationNormalized)?.fullPath;\n if (hideActiveRoutePath) {\n go(hideActiveRoutePath);\n } else {\n go(clickTab.fullPath || clickTab.path);\n }\n}\n\n// click x close tab\nfunction handleRemove (targetPath: string) {\n tabStore.closeTabByKey(targetPath, router);\n}\n\nconst [refs, setRefs] = useRefs<TabContentExpose>();\n\nfunction handleContextMenu (data: {pane: {attrs: {index: number;};}; event: any;}) {\n const _index = data.pane.attrs.index;\n const _event = data.event;\n refs.value[_index].handleContext(_event);\n}\n\nconst _tabsStyle = computed(() => {\n let initTabStyle: Record<string, Numberish> = {\n padding: '4px 0 0',\n 'header-height': '26px',\n 'item-color': '#5C5C5C',\n 'item-bg-color': '#f8f8f8',\n 'font-size': '13px',\n 'item-padding': '0 10px',\n 'close-icon-left': '8px',\n 'item-distance': '10px',\n 'item-max-width': '348px',\n 'header-margin': '0 0 0 8px'\n };\n\n return { ...generateCssVars(initTabStyle, 'tabs', 'vft'), ...__props.tabsStyle };\n});\n\nconst { closeCurrent } = useTabs();\n\nhotkeys('command+e, ctrl+e', function () {\n closeCurrent();\n return false;\n});\n\nconst _contextMenuStyle = computed(() => {\n return {\n ...generateCssVars({\n border: '1px solid #dcdfe6',\n 'sub-item-height': '40px',\n 'item-min-width': '150px'\n }, 'menu', 'vft'),\n ...__props.contextMenuStyle\n };\n});\n</script>\n\n<template>\n <div :class=\"ns.b()\" :style=\"_tabsStyle\">\n <vft-tabs\n v-model:model-value=\"activePathRef\"\n type=\"card\"\n @tabClick=\"handleClick\"\n @tabRemove=\"handleRemove\"\n @tabContextMenu=\"handleContextMenu\"\n :closeIconCfg=\"{ color: 'white'}\"\n >\n <!--why key add index:key not update after sort -->\n <template v-for=\"(item, index) in getTabsState\" :key=\"getRouterKeyPath(item) + index\">\n <vft-tab-pane :closable=\"!(item.meta?.affix)\" :index=\"index\" :name=\"getRouterKeyPath(item)\">\n <template #label>\n <tab-content :contextMenuStyle=\"_contextMenuStyle\" :affixNum=\"affixList?.length\"\n :ref=\"setRefs(index)\" :tabItem=\"item\" />\n </template>\n </vft-tab-pane>\n </template>\n </vft-tabs>\n </div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","affixList","initAffixTabs","__props","useTabsDrag","tabStore","useMultipleTabStore","activePathRef","ref","activeIndex","fromRoute","router","useRouter","go","useRouterHelper","getTabsState","computed","item","_a","watchEffect","_activeIndex","getRouterKeyPath","onBeforeRouteLeave","unref","listenerRouteChange","route","meta","currentActivePath","hideTab","isHide","activePath","findParentRoute","handleClick","pane","clickTab","hideActiveRoutePath","_b","handleRemove","targetPath","refs","setRefs","useRefs","handleContextMenu","data","_index","_event","_tabsStyle","initTabStyle","generateCssVars","closeCurrent","useTabs","hotkeys","_contextMenuStyle"],"mappings":"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"}
1
+ {"version":3,"file":"multiple-tabs.vue2.js","sources":["../../../../../packages/components/multiple-tabs/multiple-tabs.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('multiple-tabs')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { getRouterKeyPath, listenerRouteChange, useRouterHelper } from '@vft/router';\nimport { useMultipleTabStore, useTabs } from '@vft/store';\nimport { useRefs } from '@vft/use';\nimport { generateCssVars } from '@vft/utils';\nimport hotkeys from 'hotkeys-js';\nimport { computed, ref, unref, watchEffect } from 'vue';\nimport type { RouteLocationNormalized, RouteMeta } from 'vue-router';\nimport { useRouter, onBeforeRouteLeave } from 'vue-router';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { VftTabs, VftTabPane, type TabsPaneContext } from '@vft-ui/components';\n\nimport TabContent from './tab-content.vue';\nimport type { TabContentExpose } from './types';\nimport { initAffixTabs, useTabsDrag } from './use';\n\ninterface MultipleTabsProps {\n tabsStyle?: Record<string, Numberish>;\n contextMenuStyle?: Record<string, Numberish>;\n canDrag?: boolean;\n}\n\ndefineProps({\n \"tabsStyle\": null,\n \"contextMenuStyle\": null,\n \"canDrag\": { type: Boolean, }\n})\n\n\n\n;\n\nconst affixList = initAffixTabs();\n\nif (__props.canDrag) {\n useTabsDrag(affixList);\n}\n\nconst tabStore = useMultipleTabStore();\n\n// active path for tab\nconst activePathRef = ref('');\nconst activeIndex = ref(0);\nconst fromRoute = ref();\n\nconst router = useRouter();\nconst { go } = useRouterHelper();\n\n// get current tab list\nconst getTabsState = computed(() => {\n return tabStore.getTabList.filter((item) => {\n return !item.meta?.hideTab;\n });\n});\n\n\nwatchEffect(() => {\n if (activePathRef.value) {\n const _activeIndex = getTabsState.value.findIndex(item => {\n return getRouterKeyPath(item) === activePathRef.value;\n });\n if (_activeIndex === -1) {\n activeIndex.value = getTabsState.value?.length - 1;\n } else {\n activeIndex.value = _activeIndex;\n }\n activeIndex.value = activeIndex.value < affixList?.length ? affixList?.length - 1 : activeIndex.value;\n }\n});\n\nonBeforeRouteLeave(() => {\n fromRoute.value = unref(router.currentRoute);\n});\n\nlistenerRouteChange((route) => {\n if (!route) {\n return;\n }\n\n const { meta = {} } = route;\n const { currentActivePath, hideTab } = meta as RouteMeta;\n\n const isHide = !hideTab ? null : currentActivePath;\n\n // set current active tab value\n const activePath = getRouterKeyPath(route);\n\n if (activePathRef.value !== activePath) {\n activePathRef.value = activePath;\n }\n\n if (isHide) {\n // 如果当前 tab 是隐藏的,则从路由中根据 currentActivePath 寻找到此路由的信息,然后在 tabStore 添加此路由\n let findParentRoute = router.getRoutes().find((item) => item.path === currentActivePath);\n findParentRoute && tabStore.addTab(findParentRoute as unknown as RouteLocationNormalized, unref(fromRoute), activeIndex.value, route);\n } else {\n tabStore.addTab(unref(route), unref(fromRoute), activeIndex.value);\n }\n});\n\n// 点击 tab 根据 tab 传入的 path 路径,跳转到对应页面\nfunction handleClick (pane: TabsPaneContext) {\n if (activePathRef.value === pane.paneName) {\n \treturn;\n }\n const clickTab = getTabsState.value[pane.attrs.index];\n activePathRef.value = pane.paneName as string;\n const hideActiveRoutePath = (clickTab?.meta?.hideActiveRoute as RouteLocationNormalized)?.fullPath;\n if (hideActiveRoutePath) {\n go(hideActiveRoutePath);\n } else {\n go(clickTab.fullPath || clickTab.path);\n }\n}\n\n// click x close tab\nfunction handleRemove (targetPath: string) {\n tabStore.closeTabByKey(targetPath, router);\n}\n\nconst [refs, setRefs] = useRefs<TabContentExpose>();\n\nfunction handleContextMenu (data: {pane: {attrs: {index: number;};}; event: any;}) {\n const _index = data.pane.attrs.index;\n const _event = data.event;\n refs.value[_index].handleContext(_event);\n}\n\nconst _tabsStyle = computed(() => {\n let initTabStyle: Record<string, Numberish> = {\n padding: '4px 0 0',\n 'header-height': '26px',\n 'item-color': '#5C5C5C',\n 'item-bg-color': '#f8f8f8',\n 'font-size': '13px',\n 'item-padding': '0 10px',\n 'close-icon-left': '8px',\n 'item-distance': '10px',\n 'item-max-width': '348px',\n 'header-margin': '0 0 0 8px'\n };\n\n return { ...generateCssVars(initTabStyle, 'tabs', 'vft'), ...__props.tabsStyle };\n});\n\nconst { closeCurrent } = useTabs();\n\nhotkeys('command+e, ctrl+e', function () {\n closeCurrent();\n return false;\n});\n\nconst _contextMenuStyle = computed(() => {\n return {\n ...generateCssVars({\n border: '1px solid #dcdfe6',\n 'sub-item-height': '40px',\n 'item-min-width': '150px'\n }, 'menu', 'vft'),\n ...__props.contextMenuStyle\n };\n});\n</script>\n\n<template>\n <div :class=\"ns.b()\" :style=\"_tabsStyle\">\n <vft-tabs\n v-model:model-value=\"activePathRef\"\n type=\"card\"\n @tabClick=\"handleClick\"\n @tabRemove=\"handleRemove\"\n @tabContextMenu=\"handleContextMenu\"\n :closeIconCfg=\"{ color: 'white'}\"\n >\n <!--why key add index:key not update after sort -->\n <template v-for=\"(item, index) in getTabsState\" :key=\"getRouterKeyPath(item) + index\">\n <vft-tab-pane :closable=\"!(item.meta?.affix)\" :index=\"index\" :name=\"getRouterKeyPath(item)\">\n <template #label>\n <tab-content :contextMenuStyle=\"_contextMenuStyle\" :affixNum=\"affixList?.length\"\n :ref=\"setRefs(index)\" :tabItem=\"item\" />\n </template>\n </vft-tab-pane>\n </template>\n </vft-tabs>\n </div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","affixList","initAffixTabs","__props","useTabsDrag","tabStore","useMultipleTabStore","activePathRef","ref","activeIndex","fromRoute","router","useRouter","go","useRouterHelper","getTabsState","computed","item","_a","watchEffect","_activeIndex","getRouterKeyPath","onBeforeRouteLeave","unref","listenerRouteChange","route","meta","currentActivePath","hideTab","isHide","activePath","findParentRoute","handleClick","pane","clickTab","hideActiveRoutePath","_b","handleRemove","targetPath","refs","setRefs","useRefs","handleContextMenu","data","_index","_event","_tabsStyle","initTabStyle","generateCssVars","closeCurrent","useTabs","hotkeys","_contextMenuStyle"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("@vft/utils");require("@vft/use");require("../divider/index.js");require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("./index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");require("../back-top/index.js");require("../config-provider/index.js");require("../descriptions/index.js");require("../full-screen/index.js");require("../icon-text/index.js");require("../image/index.js");require("../input/index.js");require("../link/index.js");require("../pagination/index.js");require("../tag/index.js");require("../side-menu/index.js");require("../qrcode/index.js");require("../overlay/index.js");require("../clamp/index.js");require("../clamp-toggle/index.js");const a=require("../context-menu/useContextMenu.js"),s=require("./use/use-tab-dropdown.js");require("vue-router");require("@vft/store");const c=["title","onContextmenu"],m=e.defineComponent({__name:"tab-content",props:{tabItem:null,affixNum:null,contextMenuStyle:null},setup(r,{expose:n}){const[q]=a.useContextMenu(),u=e.computed(()=>r.tabItem.meta&&r.tabItem.meta.title),{getDropMenuList:o,handleContextMenu:l}=s.useTabDropdown(r.tabItem,r.affixNum);function i(t){l(r.tabItem)(t),q({event:t,styles:r.contextMenuStyle,items:o.value})}return n({handleContext:i}),(t,f)=>(e.openBlock(),e.createElementBlock("span",{title:e.unref(u),class:"vft-multiple-tabs__title",onContextmenu:e.withModifiers(i,["stop"])},e.toDisplayString(e.unref(u)),41,c))}});exports.default=m;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("@vft/utils");require("@vft/use");require("../divider/index.js");require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("./index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");require("../back-top/index.js");require("../config-provider/index.js");require("../descriptions/index.js");require("../full-screen/index.js");require("../icon-text/index.js");require("../image/index.js");require("../input/index.js");require("../link/index.js");require("../pagination/index.js");require("../tag/index.js");require("../side-menu/index.js");require("../qrcode/index.js");require("../overlay/index.js");require("../clamp/index.js");require("../clamp-toggle/index.js");require("../page-wrapper/index.js");require("../message/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");const a=require("../context-menu/useContextMenu.js"),s=require("./use/use-tab-dropdown.js");require("vue-router");require("@vft/store");const c=["title","onContextmenu"],m=e.defineComponent({__name:"tab-content",props:{tabItem:null,affixNum:null,contextMenuStyle:null},setup(r,{expose:n}){const[q]=a.useContextMenu(),u=e.computed(()=>r.tabItem.meta&&r.tabItem.meta.title),{getDropMenuList:o,handleContextMenu:l}=s.useTabDropdown(r.tabItem,r.affixNum);function i(t){l(r.tabItem)(t),q({event:t,styles:r.contextMenuStyle,items:o.value})}return n({handleContext:i}),(t,f)=>(e.openBlock(),e.createElementBlock("span",{title:e.unref(u),class:"vft-multiple-tabs__title",onContextmenu:e.withModifiers(i,["stop"])},e.toDisplayString(e.unref(u)),41,c))}});exports.default=m;
2
2
  //# sourceMappingURL=tab-content.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-content.vue2.js","sources":["../../../../../packages/components/multiple-tabs/tab-content.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { type RouteLocationNormalized } from 'vue-router';\nimport { useContextMenu } from '@vft-ui/components/context-menu';\nimport type { TabContentExpose } from './types';\nimport { useTabDropdown } from './use';\n\ninterface Props {\n tabItem: RouteLocationNormalized;\n affixNum: number;\n contextMenuStyle?: Record<string, Numberish>;\n}\n\ndefineProps({\n \"tabItem\": null,\n \"affixNum\": null,\n \"contextMenuStyle\": null\n})\n\nconst [createContextMenu] = useContextMenu();\n\nconst getTitle = computed(() => {\n return __props.tabItem.meta && (__props.tabItem.meta.title as string);\n});\n\nconst { getDropMenuList, handleContextMenu } = useTabDropdown(__props.tabItem, __props.affixNum);\n\nfunction handleContext(e: MouseEvent) {\n handleContextMenu(__props.tabItem)(e);\n createContextMenu({\n event: e,\n styles: __props.contextMenuStyle,\n items: getDropMenuList.value\n });\n}\n\ndefineExpose<TabContentExpose>({\n handleContext\n});\n</script>\n\n<template>\n <span :title=\"getTitle\" class=\"vft-multiple-tabs__title\" @contextmenu.stop=\"handleContext\">{{ getTitle }}</span>\n</template>\n"],"names":["createContextMenu","useContextMenu","getTitle","computed","__props","getDropMenuList","handleContextMenu","useTabDropdown","handleContext","e","expose"],"mappings":"++CAmBM,KAAA,CAACA,CAAiB,EAAIC,EAAAA,iBAEtBC,EAAWC,EAAAA,SAAS,IACjBC,EAAQ,QAAQ,MAASA,EAAQ,QAAQ,KAAK,KACtD,EAEK,CAAE,gBAAAC,EAAiB,kBAAAC,GAAsBC,EAAAA,eAAeH,EAAQ,QAASA,EAAQ,QAAQ,EAE/F,SAASI,EAAcC,EAAe,CAClBH,EAAAF,EAAQ,OAAO,EAAEK,CAAC,EAClBT,EAAA,CAChB,MAAOS,EACP,OAAQL,EAAQ,iBAChB,MAAOC,EAAgB,KAAA,CACxB,CACH,CAE+B,OAAAK,EAAA,CAC7B,cAAAF,CAAA,CACD"}
1
+ {"version":3,"file":"tab-content.vue2.js","sources":["../../../../../packages/components/multiple-tabs/tab-content.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { type RouteLocationNormalized } from 'vue-router';\nimport { useContextMenu } from '@vft-ui/components/context-menu';\nimport type { TabContentExpose } from './types';\nimport { useTabDropdown } from './use';\n\ninterface Props {\n tabItem: RouteLocationNormalized;\n affixNum: number;\n contextMenuStyle?: Record<string, Numberish>;\n}\n\ndefineProps({\n \"tabItem\": null,\n \"affixNum\": null,\n \"contextMenuStyle\": null\n})\n\nconst [createContextMenu] = useContextMenu();\n\nconst getTitle = computed(() => {\n return __props.tabItem.meta && (__props.tabItem.meta.title as string);\n});\n\nconst { getDropMenuList, handleContextMenu } = useTabDropdown(__props.tabItem, __props.affixNum);\n\nfunction handleContext(e: MouseEvent) {\n handleContextMenu(__props.tabItem)(e);\n createContextMenu({\n event: e,\n styles: __props.contextMenuStyle,\n items: getDropMenuList.value\n });\n}\n\ndefineExpose<TabContentExpose>({\n handleContext\n});\n</script>\n\n<template>\n <span :title=\"getTitle\" class=\"vft-multiple-tabs__title\" @contextmenu.stop=\"handleContext\">{{ getTitle }}</span>\n</template>\n"],"names":["createContextMenu","useContextMenu","getTitle","computed","__props","getDropMenuList","handleContextMenu","useTabDropdown","handleContext","e","expose"],"mappings":"yrDAmBM,KAAA,CAACA,CAAiB,EAAIC,EAAAA,iBAEtBC,EAAWC,EAAAA,SAAS,IACjBC,EAAQ,QAAQ,MAASA,EAAQ,QAAQ,KAAK,KACtD,EAEK,CAAE,gBAAAC,EAAiB,kBAAAC,GAAsBC,EAAAA,eAAeH,EAAQ,QAASA,EAAQ,QAAQ,EAE/F,SAASI,EAAcC,EAAe,CAClBH,EAAAF,EAAQ,OAAO,EAAEK,CAAC,EAClBT,EAAA,CAChB,MAAOS,EACP,OAAQL,EAAQ,iBAChB,MAAOC,EAAgB,KAAA,CACxB,CACH,CAE+B,OAAAK,EAAA,CAC7B,cAAAF,CAAA,CACD"}
@@ -0,0 +1,12 @@
1
+ export declare const VftPageWrapper: import("vft/es/utils").SFCWithInstall<import("vue").DefineComponent<{
2
+ title: {
3
+ type: import("vue").PropType<string | undefined>;
4
+ required: false;
5
+ };
6
+ }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
7
+ title: {
8
+ type: import("vue").PropType<string | undefined>;
9
+ required: false;
10
+ };
11
+ }>>, {}>> & Record<string, any>;
12
+ export default VftPageWrapper;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../../utils/vue/install.js");require("vue");require("@vue/shared");require("@vft/utils");const t=require("./page-wrapper.vue2.js"),e=r.withInstall(t.default);exports.VftPageWrapper=e;exports.default=e;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../packages/components/page-wrapper/index.ts"],"sourcesContent":["import { withInstall } from '@vft-ui/utils'\n\nimport PageWrapper from './page-wrapper.vue'\n\nexport const VftPageWrapper = withInstall(PageWrapper)\n\nexport default VftPageWrapper\n\n"],"names":["VftPageWrapper","withInstall","PageWrapper"],"mappings":"gQAIaA,EAAiBC,cAAYC,EAAW,OAAA"}
@@ -0,0 +1,13 @@
1
+ import type { PropType as __PropType } from 'vue';
2
+ declare const _sfc_main: import("vue").DefineComponent<{
3
+ title: {
4
+ type: __PropType<string | undefined>;
5
+ required: false;
6
+ };
7
+ }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
8
+ title: {
9
+ type: __PropType<string | undefined>;
10
+ required: false;
11
+ };
12
+ }>>, {}>;
13
+ export default _sfc_main;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./page-wrapper.vue2.js");exports.default=e.default;
2
+ //# sourceMappingURL=page-wrapper.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-wrapper.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),l=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("@vft/utils");const o=require("@vft/router"),r=l.useNamespace("page-wrapper"),a=e.defineComponent({name:r.b()}),u=e.defineComponent({...a,props:{title:null},setup(t){const{getTitle:n}=o.useRouterHelper();return(s,i)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(r).b())},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).e("header"))},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(r).e("title"))},e.toDisplayString(t.title||e.unref(n)),3)],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(r).e("content"))},[e.renderSlot(s.$slots,"default")],2)],2))}});exports.default=u;
2
+ //# sourceMappingURL=page-wrapper.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-wrapper.vue2.js","sources":["../../../../../packages/components/page-wrapper/page-wrapper.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('page-wrapper')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { useNamespace } from '@vft-ui/hooks';\nimport { useRouterHelper } from '@vft/router';\n\ninterface Props {\n title?: string;\n}\n\ndefineProps({\n \"title\": null\n})\n\n\n\n;\n\nconst { getTitle } = useRouterHelper();\n</script>\n\n<template>\n <div :class=\"ns.b()\">\n <div :class=\"ns.e('header')\">\n <span :class=\"ns.e('title')\">{{ title || getTitle }}</span>\n </div>\n <div :class=\"ns.e('content')\">\n <slot />\n </div>\n </div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","getTitle","useRouterHelper"],"mappings":"+WACMA,EAAuBC,EAAAA,aAAa,cAAc,EAGxDC,EAA6BC,EAAAA,gBAAmB,CAC9C,KAAMH,EAAG,EAAE,CACb,CAAC,wDAiBK,KAAA,CAAE,SAAAI,GAAaC,EAAAA"}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";require("vft/theme-style/base.css");require("vft/theme-style/vft-page-wrapper.css");
2
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";require("../../../theme-style/src/base.scss.js");require("../../../theme-style/src/page-wrapper.scss.js");
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),c=require("@vft/utils"),f=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("../divider/index.js");const v=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("./index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("@vft/use");require("../multiple-tabs/index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");require("../back-top/index.js");require("../config-provider/index.js");require("../descriptions/index.js");require("../full-screen/index.js");require("../icon-text/index.js");require("../image/index.js");require("../input/index.js");require("../link/index.js");require("../pagination/index.js");require("../tag/index.js");require("../side-menu/index.js");require("../qrcode/index.js");require("../overlay/index.js");require("../clamp/index.js");require("../clamp-toggle/index.js");const i=f.useNamespace("result"),p=e.defineComponent({name:i.b()}),_=e.defineComponent({...p,props:{title:null,subTitle:null,icon:null},setup(l){var q,o;const a=e.getCurrentInstance(),r=e.useSlots(),n=e.computed(()=>c.singleAttrToObj(l.icon,"icon")),d=(q=n.value)!=null&&q.icon?e.h("div",{class:i.e("icon")},[e.h(v.VftIcon,{...n.value})]):(o=r.default)==null?void 0:o.call(r),t=u=>{const s=c.renderTNode(a,u);return s?e.h("div",{class:i.e(u)},[e.h("p",{},{default:()=>s})]):null};return()=>e.h("div",{class:i.b()},{default:()=>[d,t("title"),t("sub-title"),r.extra?e.h("div",{class:i.e("extra")},{default:()=>{var u;return(u=r.extra)==null?void 0:u.call(r)}}):null]})}});exports.default=_;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),c=require("@vft/utils"),f=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("../divider/index.js");const v=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("./index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");require("@vft/use");require("../multiple-tabs/index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");require("../back-top/index.js");require("../config-provider/index.js");require("../descriptions/index.js");require("../full-screen/index.js");require("../icon-text/index.js");require("../image/index.js");require("../input/index.js");require("../link/index.js");require("../pagination/index.js");require("../tag/index.js");require("../side-menu/index.js");require("../qrcode/index.js");require("../overlay/index.js");require("../clamp/index.js");require("../clamp-toggle/index.js");require("../page-wrapper/index.js");require("../message/index.js");const i=f.useNamespace("result"),p=e.defineComponent({name:i.b()}),_=e.defineComponent({...p,props:{title:null,subTitle:null,icon:null},setup(l){var q,o;const a=e.getCurrentInstance(),r=e.useSlots(),n=e.computed(()=>c.singleAttrToObj(l.icon,"icon")),d=(q=n.value)!=null&&q.icon?e.h("div",{class:i.e("icon")},[e.h(v.VftIcon,{...n.value})]):(o=r.default)==null?void 0:o.call(r),t=u=>{const s=c.renderTNode(a,u);return s?e.h("div",{class:i.e(u)},[e.h("p",{},{default:()=>s})]):null};return()=>e.h("div",{class:i.b()},{default:()=>[d,t("title"),t("sub-title"),r.extra?e.h("div",{class:i.e("extra")},{default:()=>{var u;return(u=r.extra)==null?void 0:u.call(r)}}):null]})}});exports.default=_;
2
2
  //# sourceMappingURL=result.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.vue2.js","sources":["../../../../../packages/components/result/result.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('result')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script setup lang=\"ts\">\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { h, getCurrentInstance, computed, useSlots } from 'vue';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type IconProps, VftIcon } from '@vft-ui/components';\n\ninterface Props {\n title?: string | number;\n subTitle?: string | number;\n icon?: IconProps;\n}\n\ndefineProps({\n \"title\": null,\n \"subTitle\": null,\n \"icon\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst slots = useSlots();\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst vIcon = _icon.value?.icon ? h('div', {\n class: ns.e('icon')\n}, [h(VftIcon, { ..._icon.value })]) : slots.default?.();\n\nconst vCon = (attrName: string) => {\n const nodeCon = renderTNode(instance, attrName);\n return nodeCon ? h(\n 'div',\n {\n class: ns.e(attrName)\n }, [h('p', {}, { default: () => nodeCon })]\n ) : null;\n};\n\ndefineRender(() => {\n return (\n h(\n 'div', { class: ns.b() }, {\n default: () => [\n vIcon,\n vCon('title'),\n vCon('sub-title'),\n slots.extra ? h('div', { class: ns.e('extra') }, { default: ()=> slots.extra?.() }) : null\n ]\n }\n )\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","slots","useSlots","_icon","computed","singleAttrToObj","__props","vIcon","_a","h","VftIcon","_b","vCon","attrName","nodeCon","renderTNode"],"mappings":"s5CACA,MAAMA,EAAuBC,EAAAA,aAAa,QAAQ,EAGlDC,EAA6BC,EAAAA,gBAAmB,CAC9C,KAAMH,EAAG,EAAE,CACb,CAAC,wFAuBD,MAAMI,EAAWC,EAAAA,qBAEXC,EAAQC,EAAAA,WAERC,EAAQC,EAAAA,SAAS,IACdC,kBAAgBC,EAAQ,KAAM,MAAM,CAC5C,EAEKC,GAAQC,EAAAL,EAAM,QAAN,MAAAK,EAAa,KAAOC,EAAAA,EAAE,MAAO,CACzC,MAAOd,EAAG,EAAE,MAAM,CACjB,EAAA,CAACc,EAAE,EAAAC,UAAS,CAAE,GAAGP,EAAM,KAAO,CAAA,CAAC,CAAC,GAAIQ,EAAAV,EAAM,UAAN,YAAAU,EAAA,KAAAV,GAEjCW,EAAQC,GAAqB,CAC3B,MAAAC,EAAUC,EAAAA,YAAYhB,EAAUc,CAAQ,EAC9C,OAAOC,EAAUL,EAAA,EACf,MACA,CACE,MAAOd,EAAG,EAAEkB,CAAQ,CACtB,EAAG,CAACJ,EAAAA,EAAE,IAAK,CAAC,EAAG,CAAE,QAAS,IAAMK,CAAQ,CAAC,CAAC,CACxC,EAAA,IAAA,EAGO,MAAA,IAETL,EAAA,EACE,MAAO,CAAE,MAAOd,EAAG,GAAI,EAAG,CACxB,QAAS,IAAM,CACbY,EACAK,EAAK,OAAO,EACZA,EAAK,WAAW,EAChBX,EAAM,MAAQQ,EAAA,EAAE,MAAO,CAAE,MAAOd,EAAG,EAAE,OAAO,CAAE,EAAG,CAAE,QAAS,IAAA,OAAK,OAAAa,EAAAP,EAAM,QAAN,YAAAO,EAAA,KAAAP,GAAiB,CAAA,EAAI,IACxF,CACF,CAAA"}
1
+ {"version":3,"file":"result.vue2.js","sources":["../../../../../packages/components/result/result.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('result')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script setup lang=\"ts\">\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { h, getCurrentInstance, computed, useSlots } from 'vue';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type IconProps, VftIcon } from '@vft-ui/components';\n\ninterface Props {\n title?: string | number;\n subTitle?: string | number;\n icon?: IconProps;\n}\n\ndefineProps({\n \"title\": null,\n \"subTitle\": null,\n \"icon\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst slots = useSlots();\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst vIcon = _icon.value?.icon ? h('div', {\n class: ns.e('icon')\n}, [h(VftIcon, { ..._icon.value })]) : slots.default?.();\n\nconst vCon = (attrName: string) => {\n const nodeCon = renderTNode(instance, attrName);\n return nodeCon ? h(\n 'div',\n {\n class: ns.e(attrName)\n }, [h('p', {}, { default: () => nodeCon })]\n ) : null;\n};\n\ndefineRender(() => {\n return (\n h(\n 'div', { class: ns.b() }, {\n default: () => [\n vIcon,\n vCon('title'),\n vCon('sub-title'),\n slots.extra ? h('div', { class: ns.e('extra') }, { default: ()=> slots.extra?.() }) : null\n ]\n }\n )\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","slots","useSlots","_icon","computed","singleAttrToObj","__props","vIcon","_a","h","VftIcon","_b","vCon","attrName","nodeCon","renderTNode"],"mappings":"y9CACA,MAAMA,EAAuBC,EAAAA,aAAa,QAAQ,EAGlDC,EAA6BC,EAAAA,gBAAmB,CAC9C,KAAMH,EAAG,EAAE,CACb,CAAC,wFAuBD,MAAMI,EAAWC,EAAAA,qBAEXC,EAAQC,EAAAA,WAERC,EAAQC,EAAAA,SAAS,IACdC,kBAAgBC,EAAQ,KAAM,MAAM,CAC5C,EAEKC,GAAQC,EAAAL,EAAM,QAAN,MAAAK,EAAa,KAAOC,EAAAA,EAAE,MAAO,CACzC,MAAOd,EAAG,EAAE,MAAM,CACjB,EAAA,CAACc,EAAE,EAAAC,UAAS,CAAE,GAAGP,EAAM,KAAO,CAAA,CAAC,CAAC,GAAIQ,EAAAV,EAAM,UAAN,YAAAU,EAAA,KAAAV,GAEjCW,EAAQC,GAAqB,CAC3B,MAAAC,EAAUC,EAAAA,YAAYhB,EAAUc,CAAQ,EAC9C,OAAOC,EAAUL,EAAA,EACf,MACA,CACE,MAAOd,EAAG,EAAEkB,CAAQ,CACtB,EAAG,CAACJ,EAAAA,EAAE,IAAK,CAAC,EAAG,CAAE,QAAS,IAAMK,CAAQ,CAAC,CAAC,CACxC,EAAA,IAAA,EAGO,MAAA,IAETL,EAAA,EACE,MAAO,CAAE,MAAOd,EAAG,GAAI,EAAG,CACxB,QAAS,IAAM,CACbY,EACAK,EAAK,OAAO,EACZA,EAAK,WAAW,EAChBX,EAAM,MAAQQ,EAAA,EAAE,MAAO,CAAE,MAAOd,EAAG,EAAE,OAAO,CAAE,EAAG,CAAE,QAAS,IAAA,OAAK,OAAAa,EAAAP,EAAM,QAAN,YAAAO,EAAA,KAAAP,GAAiB,CAAA,EAAI,IACxF,CACF,CAAA"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("vue"),M=require("@vft/router"),A=require("@vft/use"),p=require("@vft/utils"),H=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("../divider/index.js");const R=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");const f=require("../menu/index.js");require("../multiple-tabs/index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");require("../back-top/index.js");require("../config-provider/index.js");require("../descriptions/index.js");require("../full-screen/index.js");require("../icon-text/index.js");require("../image/index.js");require("../input/index.js");require("../link/index.js");require("../pagination/index.js");require("../tag/index.js");require("./index.js");require("../qrcode/index.js");require("../overlay/index.js");require("../clamp/index.js");require("../clamp-toggle/index.js");const U=require("vue-router"),a=H.useNamespace("side-menu"),$=r.defineComponent({name:a.b()}),P=r.defineComponent({...$,props:{menus:null,uniqueOpened:{type:Boolean,default:!0},collapse:{type:Boolean,default:!1},defaultActive:null,width:null,collapseWidth:{default:50},attrMapping:null,extraHeight:{default:100},menuTopBottomHeight:{default:40},showCollapse:{type:Boolean,default:!1},dragOption:null,useMenuSelect:{type:Boolean,default:!0}},emits:["update:collapse","dragEnd","select"],setup(n,{emit:h}){const q=r.useSlots(),v=r.ref(),i=r.computed(()=>({path:"path",children:"children",title:"title",index:"path",icon:"icon",...n.attrMapping}));M.listenerRouteChange(e=>{!e||e.meta.hideSide||(v.value=e.path)});const x=(e,o)=>{const u=e[i.value.path],s=e[i.value.title],l=e==null?void 0:e[i.value.children],c=e==null?void 0:e[i.value.index],d=e==null?void 0:e[i.value.icon];return l!=null&&l.length?r.h(f.VftSubMenu,{popperAppendToBody:!0,key:c||u,index:c||u,title:s,icon:d,popperClass:a.e("popper")},{default:()=>l==null?void 0:l.map((t,k)=>{var y;const g=t[i.value.path],m=t[i.value.index],w=t[i.value.icon],B=t[i.value.title];return(y=t==null?void 0:t[i.value.children])!=null&&y.length?x(t,k):r.h(f.VftMenuItem,{key:m||g,index:m||g,route:g,icon:w,title:B,disabled:t.disabled})})}):r.h(f.VftMenuItem,{key:c||u,index:c||u,title:s,route:u,icon:d,disabled:e.disabled},q.menuItem?()=>{var t;return(t=q.menuItem)==null?void 0:t.call(q,{item:e,index:o})}:"")},O=r.computed(()=>{var e,o;return r.h(f.VftMenu,{onSelect:n.useMenuSelect?b:()=>{},defaultActive:n.defaultActive||v.value,class:[a.e("con"),(e=n.dragOption)!=null&&e.dragClassName?a.e((o=n.dragOption)==null?void 0:o.dragClassName):""],style:{height:`calc(100% - ${n.menuTopBottomHeight}px)`},uniqueOpened:n.uniqueOpened,collapse:n.collapse,"collapse-transition":!1},()=>n.menus.map((u,s)=>x(u,s)))}),{go:C}=M.useRouterHelper(),S=U.useRouter();async function b(e){var l,c,d;const o=e.route;let u=e.route;e.indexPath.some(t=>p.isUrl(t))&&(u=e.indexPath.slice(-2).join("/"));const s=(d=(c=(l=S.getRoutes().filter(t=>t.path===u))==null?void 0:l[0])==null?void 0:c.meta)==null?void 0:d.linkTarget;C(s?{url:o,winOpenOpt:{target:s}}:o),h("select",e)}const N=r.computed(()=>({...p.generateCssVars({"border-right":"none"},"menu"),...p.generateCssVars({width:n.collapse?p.addUnit(n.collapseWidth):p.addUnit(n.width)},"side-menu"),height:`calc(100% - ${n.extraHeight}px)`})),V=r.computed(()=>[a.b(),a.m("fixed")]);function T(){h("update:collapse",!n.collapse)}return r.onMounted(()=>{r.nextTick(()=>{var e,o,u;if((e=n.dragOption)!=null&&e.dragClassName){const s=(u=document.querySelectorAll("."+a.e((o=n.dragOption)==null?void 0:o.dragClassName)))==null?void 0:u[0],{initSortable:l}=A.useSortable(s,{draggable:".vft-menu-item",onEnd:c=>{const{oldIndex:d,newIndex:t}=c;p.isNullOrUndefined(d)||p.isNullOrUndefined(t)||d===t||h("dragEnd",d,t)},...n.dragOption});l()}})}),()=>r.createVNode("div",{class:V.value,style:N.value},[q.top?r.createVNode("div",{class:a.e("top")},[q.top()]):null,O.value,q.bottom?r.createVNode("div",{class:a.e("bottom")},[q.bottom()]):n.showCollapse?r.createVNode("div",{onClick:T,class:[a.e("bottom"),a.e("collapse")]},[r.createVNode(R.VftIcon,{style:{transform:n.collapse?"rotateY(180deg)":""},icon:"vi-collapse"},null)]):null])}});exports.default=P;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("vue"),M=require("@vft/router"),A=require("@vft/use"),p=require("@vft/utils"),H=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("../divider/index.js");const R=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("../tabs/index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");const f=require("../menu/index.js");require("../multiple-tabs/index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");require("../back-top/index.js");require("../config-provider/index.js");require("../descriptions/index.js");require("../full-screen/index.js");require("../icon-text/index.js");require("../image/index.js");require("../input/index.js");require("../link/index.js");require("../pagination/index.js");require("../tag/index.js");require("./index.js");require("../qrcode/index.js");require("../overlay/index.js");require("../clamp/index.js");require("../clamp-toggle/index.js");require("../page-wrapper/index.js");require("../message/index.js");const U=require("vue-router"),i=H.useNamespace("side-menu"),$=r.defineComponent({name:i.b()}),P=r.defineComponent({...$,props:{menus:null,uniqueOpened:{type:Boolean,default:!0},collapse:{type:Boolean,default:!1},defaultActive:null,width:null,collapseWidth:{default:50},attrMapping:null,extraHeight:{default:100},menuTopBottomHeight:{default:40},showCollapse:{type:Boolean,default:!1},dragOption:null,useMenuSelect:{type:Boolean,default:!0}},emits:["update:collapse","dragEnd","select"],setup(n,{emit:h}){const q=r.useSlots(),v=r.ref(),a=r.computed(()=>({path:"path",children:"children",title:"title",index:"path",icon:"icon",...n.attrMapping}));M.listenerRouteChange(e=>{!e||e.meta.hideSide||(v.value=e.path)});const x=(e,o)=>{const u=e[a.value.path],s=e[a.value.title],l=e==null?void 0:e[a.value.children],c=e==null?void 0:e[a.value.index],d=e==null?void 0:e[a.value.icon];return l!=null&&l.length?r.h(f.VftSubMenu,{popperAppendToBody:!0,key:c||u,index:c||u,title:s,icon:d,popperClass:i.e("popper")},{default:()=>l==null?void 0:l.map((t,k)=>{var y;const g=t[a.value.path],m=t[a.value.index],w=t[a.value.icon],B=t[a.value.title];return(y=t==null?void 0:t[a.value.children])!=null&&y.length?x(t,k):r.h(f.VftMenuItem,{key:m||g,index:m||g,route:g,icon:w,title:B,disabled:t.disabled})})}):r.h(f.VftMenuItem,{key:c||u,index:c||u,title:s,route:u,icon:d,disabled:e.disabled},q.menuItem?()=>{var t;return(t=q.menuItem)==null?void 0:t.call(q,{item:e,index:o})}:"")},O=r.computed(()=>{var e,o;return r.h(f.VftMenu,{onSelect:n.useMenuSelect?b:()=>{},defaultActive:n.defaultActive||v.value,class:[i.e("con"),(e=n.dragOption)!=null&&e.dragClassName?i.e((o=n.dragOption)==null?void 0:o.dragClassName):""],style:{height:`calc(100% - ${n.menuTopBottomHeight}px)`},uniqueOpened:n.uniqueOpened,collapse:n.collapse,"collapse-transition":!1},()=>n.menus.map((u,s)=>x(u,s)))}),{go:C}=M.useRouterHelper(),S=U.useRouter();async function b(e){var l,c,d;const o=e.route;let u=e.route;e.indexPath.some(t=>p.isUrl(t))&&(u=e.indexPath.slice(-2).join("/"));const s=(d=(c=(l=S.getRoutes().filter(t=>t.path===u))==null?void 0:l[0])==null?void 0:c.meta)==null?void 0:d.linkTarget;C(s?{url:o,winOpenOpt:{target:s}}:o),h("select",e)}const N=r.computed(()=>({...p.generateCssVars({"border-right":"none"},"menu"),...p.generateCssVars({width:n.collapse?p.addUnit(n.collapseWidth):p.addUnit(n.width)},"side-menu"),height:`calc(100% - ${n.extraHeight}px)`})),V=r.computed(()=>[i.b(),i.m("fixed")]);function T(){h("update:collapse",!n.collapse)}return r.onMounted(()=>{r.nextTick(()=>{var e,o,u;if((e=n.dragOption)!=null&&e.dragClassName){const s=(u=document.querySelectorAll("."+i.e((o=n.dragOption)==null?void 0:o.dragClassName)))==null?void 0:u[0],{initSortable:l}=A.useSortable(s,{draggable:".vft-menu-item",onEnd:c=>{const{oldIndex:d,newIndex:t}=c;p.isNullOrUndefined(d)||p.isNullOrUndefined(t)||d===t||h("dragEnd",d,t)},...n.dragOption});l()}})}),()=>r.createVNode("div",{class:V.value,style:N.value},[q.top?r.createVNode("div",{class:i.e("top")},[q.top()]):null,O.value,q.bottom?r.createVNode("div",{class:i.e("bottom")},[q.bottom()]):n.showCollapse?r.createVNode("div",{onClick:T,class:[i.e("bottom"),i.e("collapse")]},[r.createVNode(R.VftIcon,{style:{transform:n.collapse?"rotateY(180deg)":""},icon:"vi-collapse"},null)]):null])}});exports.default=P;
2
2
  //# sourceMappingURL=side-menu.vue2.js.map