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
@@ -1,4 +1,4 @@
1
- import { defineComponent as l, computed as u, openBlock as c, createElementBlock as s, unref as i, withModifiers as f, toDisplayString as x } from "vue";
1
+ import { defineComponent as l, computed as u, openBlock as c, createElementBlock as s, unref as e, withModifiers as f, toDisplayString as x } from "vue";
2
2
  import "@vft/utils";
3
3
  import "@vft/use";
4
4
  import "../divider/index.mjs";
@@ -34,11 +34,18 @@ import "../qrcode/index.mjs";
34
34
  import "../overlay/index.mjs";
35
35
  import "../clamp/index.mjs";
36
36
  import "../clamp-toggle/index.mjs";
37
+ import "../page-wrapper/index.mjs";
38
+ import "../message/index.mjs";
39
+ import "@popperjs/core";
40
+ import "lodash";
41
+ import "../../hooks/use-z-index/index.mjs";
42
+ import "@vueuse/core";
43
+ import "@vue/shared";
37
44
  import { useContextMenu as b } from "../context-menu/useContextMenu.mjs";
38
45
  import { useTabDropdown as d } from "./use/use-tab-dropdown.mjs";
39
46
  import "vue-router";
40
47
  import "@vft/store";
41
- const C = ["title", "onContextmenu"], rt = /* @__PURE__ */ l({
48
+ const C = ["title", "onContextmenu"], st = /* @__PURE__ */ l({
42
49
  __name: "tab-content",
43
50
  props: {
44
51
  tabItem: null,
@@ -46,24 +53,24 @@ const C = ["title", "onContextmenu"], rt = /* @__PURE__ */ l({
46
53
  contextMenuStyle: null
47
54
  },
48
55
  setup(t, { expose: r }) {
49
- const [n] = b(), e = u(() => t.tabItem.meta && t.tabItem.meta.title), { getDropMenuList: p, handleContextMenu: a } = d(t.tabItem, t.affixNum);
50
- function m(o) {
51
- a(t.tabItem)(o), n({
56
+ const [p] = b(), m = u(() => t.tabItem.meta && t.tabItem.meta.title), { getDropMenuList: n, handleContextMenu: a } = d(t.tabItem, t.affixNum);
57
+ function i(o) {
58
+ a(t.tabItem)(o), p({
52
59
  event: o,
53
60
  styles: t.contextMenuStyle,
54
- items: p.value
61
+ items: n.value
55
62
  });
56
63
  }
57
64
  return r({
58
- handleContext: m
65
+ handleContext: i
59
66
  }), (o, M) => (c(), s("span", {
60
- title: i(e),
67
+ title: e(m),
61
68
  class: "vft-multiple-tabs__title",
62
- onContextmenu: f(m, ["stop"])
63
- }, x(i(e)), 41, C));
69
+ onContextmenu: f(i, ["stop"])
70
+ }, x(e(m)), 41, C));
64
71
  }
65
72
  });
66
73
  export {
67
- rt as default
74
+ st as default
68
75
  };
69
76
  //# sourceMappingURL=tab-content.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-content.vue2.mjs","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBM,UAAA,CAACA,CAAiB,IAAIC,KAEtBC,IAAWC,EAAS,MACjBC,EAAQ,QAAQ,QAASA,EAAQ,QAAQ,KAAK,KACtD,GAEK,EAAE,iBAAAC,GAAiB,mBAAAC,MAAsBC,EAAeH,EAAQ,SAASA,EAAQ,QAAQ;AAE/F,aAASI,EAAcC,GAAe;AAClB,MAAAH,EAAAF,EAAQ,OAAO,EAAEK,CAAC,GAClBT,EAAA;AAAA,QAChB,OAAOS;AAAA,QACP,QAAQL,EAAQ;AAAA,QAChB,OAAOC,EAAgB;AAAA,MAAA,CACxB;AAAA,IACH;AAE+B,WAAAK,EAAA;AAAA,MAC7B,eAAAF;AAAA,IAAA,CACD;;;;;;;"}
1
+ {"version":3,"file":"tab-content.vue2.mjs","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBM,UAAA,CAACA,CAAiB,IAAIC,KAEtBC,IAAWC,EAAS,MACjBC,EAAQ,QAAQ,QAASA,EAAQ,QAAQ,KAAK,KACtD,GAEK,EAAE,iBAAAC,GAAiB,mBAAAC,MAAsBC,EAAeH,EAAQ,SAASA,EAAQ,QAAQ;AAE/F,aAASI,EAAcC,GAAe;AAClB,MAAAH,EAAAF,EAAQ,OAAO,EAAEK,CAAC,GAClBT,EAAA;AAAA,QAChB,OAAOS;AAAA,QACP,QAAQL,EAAQ;AAAA,QAChB,OAAOC,EAAgB;AAAA,MAAA,CACxB;AAAA,IACH;AAE+B,WAAAK,EAAA;AAAA,MAC7B,eAAAF;AAAA,IAAA,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,11 @@
1
+ import { withInstall as t } from "../../utils/vue/install.mjs";
2
+ import "vue";
3
+ import "@vue/shared";
4
+ import "@vft/utils";
5
+ import r from "./page-wrapper.vue2.mjs";
6
+ const f = t(r);
7
+ export {
8
+ f as VftPageWrapper,
9
+ f as default
10
+ };
11
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","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":";;;;;AAIa,MAAAA,IAAiBC,EAAYC,CAAW;"}
@@ -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,5 @@
1
+ import f from "./page-wrapper.vue2.mjs";
2
+ export {
3
+ f as default
4
+ };
5
+ //# sourceMappingURL=page-wrapper.vue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-wrapper.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,43 @@
1
+ import { defineComponent as s, openBlock as p, createElementBlock as i, normalizeClass as o, unref as e, createElementVNode as r, toDisplayString as m, renderSlot as c } from "vue";
2
+ import { useNamespace as u } from "../../hooks/use-namespace/index.mjs";
3
+ import "@popperjs/core";
4
+ import "lodash";
5
+ import "../../hooks/use-z-index/index.mjs";
6
+ import "@vueuse/core";
7
+ import "@vue/shared";
8
+ import "@vft/utils";
9
+ import { useRouterHelper as d } from "@vft/router";
10
+ const t = (
11
+ /* hoist-static*/
12
+ u("page-wrapper")
13
+ ), f = s({
14
+ name: t.b()
15
+ }), S = /* @__PURE__ */ s({
16
+ ...f,
17
+ props: {
18
+ title: null
19
+ },
20
+ setup(l) {
21
+ const { getTitle: n } = d();
22
+ return (a, _) => (p(), i("div", {
23
+ class: o(e(t).b())
24
+ }, [
25
+ r("div", {
26
+ class: o(e(t).e("header"))
27
+ }, [
28
+ r("span", {
29
+ class: o(e(t).e("title"))
30
+ }, m(l.title || e(n)), 3)
31
+ ], 2),
32
+ r("div", {
33
+ class: o(e(t).e("content"))
34
+ }, [
35
+ c(a.$slots, "default")
36
+ ], 2)
37
+ ], 2));
38
+ }
39
+ });
40
+ export {
41
+ S as default
42
+ };
43
+ //# sourceMappingURL=page-wrapper.vue2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-wrapper.vue2.mjs","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":";;;;;;;;;AACA,MAAMA;AAAA;AAAA,EAAuBC,EAAa,cAAc;AAAA,GAGxDC,IAA6BC,EAAmB;AAAA,EAC9C,MAAMH,EAAG,EAAE;AACb,CAAC;;;;;;AAiBK,UAAA,EAAE,UAAAI,MAAaC;;;;;;;;;;;;;;;;;;;"}
File without changes
@@ -0,0 +1,3 @@
1
+ import "vft/theme-style/base.css";
2
+ import "vft/theme-style/vft-page-wrapper.css";
3
+ //# sourceMappingURL=css.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
File without changes
@@ -0,0 +1,3 @@
1
+ import "../../../theme-style/src/base.scss.mjs";
2
+ import "../../../theme-style/src/page-wrapper.scss.mjs";
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -40,12 +40,14 @@ import "../qrcode/index.mjs";
40
40
  import "../overlay/index.mjs";
41
41
  import "../clamp/index.mjs";
42
42
  import "../clamp-toggle/index.mjs";
43
+ import "../page-wrapper/index.mjs";
44
+ import "../message/index.mjs";
43
45
  const i = (
44
46
  /* hoist-static*/
45
47
  x("result")
46
48
  ), I = l({
47
49
  name: i.b()
48
- }), lt = /* @__PURE__ */ l({
50
+ }), ut = /* @__PURE__ */ l({
49
51
  ...I,
50
52
  props: {
51
53
  title: null,
@@ -84,6 +86,6 @@ const i = (
84
86
  }
85
87
  });
86
88
  export {
87
- lt as default
89
+ ut as default
88
90
  };
89
91
  //# sourceMappingURL=result.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.vue2.mjs","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,MAAMA;AAAA;AAAA,EAAuBC,EAAa,QAAQ;AAAA,GAGlDC,IAA6BC,EAAmB;AAAA,EAC9C,MAAMH,EAAG,EAAE;AACb,CAAC;;;;;;;;;AAuBD,UAAMI,IAAWC,KAEXC,IAAQC,KAERC,IAAQC,EAAS,MACdC,EAAgBC,EAAQ,MAAM,MAAM,CAC5C,GAEKC,KAAQC,IAAAL,EAAM,UAAN,QAAAK,EAAa,OAAOC,EAAE,OAAO;AAAA,MACzC,OAAOd,EAAG,EAAE,MAAM;AAAA,IACjB,GAAA,CAACc,EAAEC,GAAS,EAAE,GAAGP,EAAM,MAAO,CAAA,CAAC,CAAC,KAAIQ,IAAAV,EAAM,YAAN,gBAAAU,EAAA,KAAAV,IAEjCW,IAAO,CAACC,MAAqB;AAC3B,YAAAC,IAAUC,EAAYhB,GAAUc,CAAQ;AAC9C,aAAOC,IAAUL;AAAA,QACf;AAAA,QACA;AAAA,UACE,OAAOd,EAAG,EAAEkB,CAAQ;AAAA,QACtB;AAAA,QAAG,CAACJ,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,MAAMK,EAAQ,CAAC,CAAC;AAAA,MACxC,IAAA;AAAA,IAAA;AAGO,WAAA,MAETL;AAAA,MACE;AAAA,MAAO,EAAE,OAAOd,EAAG,IAAI;AAAA,MAAG;AAAA,QACxB,SAAS,MAAM;AAAA,UACbY;AAAA,UACAK,EAAK,OAAO;AAAA,UACZA,EAAK,WAAW;AAAA,UAChBX,EAAM,QAAQQ,EAAE,OAAO,EAAE,OAAOd,EAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,MAAA;;AAAK,oBAAAa,IAAAP,EAAM,UAAN,gBAAAO,EAAA,KAAAP;AAAA,YAAiB,CAAA,IAAI;AAAA,QACxF;AAAA,MACF;AAAA,IAAA;AAAA;;"}
1
+ {"version":3,"file":"result.vue2.mjs","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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,MAAMA;AAAA;AAAA,EAAuBC,EAAa,QAAQ;AAAA,GAGlDC,IAA6BC,EAAmB;AAAA,EAC9C,MAAMH,EAAG,EAAE;AACb,CAAC;;;;;;;;;AAuBD,UAAMI,IAAWC,KAEXC,IAAQC,KAERC,IAAQC,EAAS,MACdC,EAAgBC,EAAQ,MAAM,MAAM,CAC5C,GAEKC,KAAQC,IAAAL,EAAM,UAAN,QAAAK,EAAa,OAAOC,EAAE,OAAO;AAAA,MACzC,OAAOd,EAAG,EAAE,MAAM;AAAA,IACjB,GAAA,CAACc,EAAEC,GAAS,EAAE,GAAGP,EAAM,MAAO,CAAA,CAAC,CAAC,KAAIQ,IAAAV,EAAM,YAAN,gBAAAU,EAAA,KAAAV,IAEjCW,IAAO,CAACC,MAAqB;AAC3B,YAAAC,IAAUC,EAAYhB,GAAUc,CAAQ;AAC9C,aAAOC,IAAUL;AAAA,QACf;AAAA,QACA;AAAA,UACE,OAAOd,EAAG,EAAEkB,CAAQ;AAAA,QACtB;AAAA,QAAG,CAACJ,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,MAAMK,EAAQ,CAAC,CAAC;AAAA,MACxC,IAAA;AAAA,IAAA;AAGO,WAAA,MAETL;AAAA,MACE;AAAA,MAAO,EAAE,OAAOd,EAAG,IAAI;AAAA,MAAG;AAAA,QACxB,SAAS,MAAM;AAAA,UACbY;AAAA,UACAK,EAAK,OAAO;AAAA,UACZA,EAAK,WAAW;AAAA,UAChBX,EAAM,QAAQQ,EAAE,OAAO,EAAE,OAAOd,EAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,MAAA;;AAAK,oBAAAa,IAAAP,EAAM,UAAN,gBAAAO,EAAA,KAAAP;AAAA,YAAiB,CAAA,IAAI;AAAA,QACxF;AAAA,MACF;AAAA,IAAA;AAAA;;"}
@@ -41,13 +41,15 @@ import "../qrcode/index.mjs";
41
41
  import "../overlay/index.mjs";
42
42
  import "../clamp/index.mjs";
43
43
  import "../clamp-toggle/index.mjs";
44
+ import "../page-wrapper/index.mjs";
45
+ import "../message/index.mjs";
44
46
  import { useRouter as L } from "vue-router";
45
47
  const a = (
46
48
  /* hoist-static*/
47
49
  F("side-menu")
48
50
  ), Q = w({
49
51
  name: a.b()
50
- }), je = /* @__PURE__ */ w({
52
+ }), ze = /* @__PURE__ */ w({
51
53
  ...Q,
52
54
  props: {
53
55
  menus: null,
@@ -221,6 +223,6 @@ const a = (
221
223
  }
222
224
  });
223
225
  export {
224
- je as default
226
+ ze as default
225
227
  };
226
228
  //# sourceMappingURL=side-menu.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"side-menu.vue2.mjs","sources":["../../../../../packages/components/side-menu/side-menu.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns = /* hoist-static*/ useNamespace('side-menu')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"tsx\" setup>\nimport { listenerRouteChange, type MenuType, useRouterHelper } from '@vft/router';\nimport { useSortable } from '@vft/use';\nimport { addUnit, generateCssVars, isNullOrUndefined, isUrl } from '@vft/utils';\nimport Sortable, { type SortableEvent } from 'sortablejs';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { VftMenu as Menu, VftSubMenu as SubMenu, VftMenuItem as MenuItem, VftIcon as Icon } from '@vft-ui/components';\nimport { ref, h, type VNode, computed, useSlots, onMounted, nextTick } from 'vue';\nimport { useRouter } from 'vue-router';\n\ninterface MenuConProps {\n menus: MenuType[];\n uniqueOpened?: boolean;\n collapse?: boolean;\n defaultActive?: string;\n width?: Numberish;\n collapseWidth?: Numberish;\n attrMapping?: {\n path?: string;\n children?: string;\n title?: string;\n index?: Numberish;\n icon?: string;\n };\n /** 系统内除去侧边栏的其他高度 */\n extraHeight?: number;\n /** 上下插槽的总体高度 */\n menuTopBottomHeight?: number;\n /** 显示底部折叠按钮 */\n showCollapse?: boolean;\n /** 排序配置 */\n dragOption?: Sortable.Options & {dragClassName: string};\n useMenuSelect?: boolean\n}\n\ndefineProps({\n \"menus\": null,\n \"uniqueOpened\": { type: Boolean, default: true },\n \"collapse\": { type: Boolean, default: false },\n \"defaultActive\": null,\n \"width\": null,\n \"collapseWidth\": { default: 50 },\n \"attrMapping\": null,\n \"extraHeight\": { default: 100 },\n \"menuTopBottomHeight\": { default: 40 },\n \"showCollapse\": { type: Boolean, default: false },\n \"dragOption\": null,\n \"useMenuSelect\": { type: Boolean, default: true }\n})\n\nconst emit = defineEmits(['update:collapse', 'dragEnd', 'select']);\n\n\n\nconst slots = useSlots();\n\n;\n\nconst _defaultActive = ref();\n\nconst _attrMapping = computed(() => {\n\treturn {\n path: 'path',\n children: 'children',\n title: 'title',\n index: 'path',\n icon: 'icon',\n ...__props.attrMapping\n };\n});\n\nlistenerRouteChange((route) => {\n if (!route || route.meta.hideSide) {\n return;\n }\n _defaultActive.value = route.path as string;\n});\n\nconst vSubMenu = (item: Record<string, any>, itemIndex: number): VNode => {\n const _path = item[_attrMapping.value.path!];\n const _title = item[_attrMapping.value.title!];\n const _children = item?.[_attrMapping.value.children!];\n const _index = item?.[_attrMapping.value.index!];\n const _icon = item?.[_attrMapping.value.icon!];\n\n return _children?.length\n ? h(\n // @ts-ignore\n SubMenu,\n {\n popperAppendToBody: true,\n key: _index || _path,\n index: _index || _path,\n title: _title,\n icon: _icon,\n popperClass: ns.e('popper')\n },\n {\n default: () => {\n return _children?.map((subItem: Record<string, any>, index: number) => {\n const subPath = subItem[_attrMapping.value.path!];\n const subIndex = subItem[_attrMapping.value.index!];\n const subIcon = subItem[_attrMapping.value.icon!];\n const subTitle = subItem[_attrMapping.value.title!];\n return subItem?.[_attrMapping.value.children!]?.length\n ? vSubMenu(subItem, index)\n : // @ts-ignore\n h(MenuItem, {\n key: subIndex || subPath,\n index: subIndex || subPath,\n route: subPath,\n icon: subIcon,\n title: subTitle,\n disabled: subItem.disabled\n });\n });\n }\n }\n )\n : h(MenuItem, {\n key: _index || _path,\n index: _index || _path,\n title: _title,\n route: _path,\n icon: _icon,\n disabled: item.disabled\n }, slots.menuItem ? () => slots.menuItem?.({ item, index: itemIndex }) : '');\n};\n\nconst vMenu = computed(() => {\n return h(\n Menu,\n {\n onSelect: __props.useMenuSelect ? handleSelect : () => {},\n defaultActive: __props.defaultActive || _defaultActive.value,\n class: [ns.e('con'), __props.dragOption?.dragClassName ? ns.e(__props.dragOption?.dragClassName) : ''],\n style: { height: `calc(100% - ${__props.menuTopBottomHeight}px)` },\n uniqueOpened: __props.uniqueOpened,\n collapse: __props.collapse,\n 'collapse-transition': false\n }, () =>\n __props.menus.map((item, index) => {\n return vSubMenu(item, index);\n })\n );\n});\n\nconst { go } = useRouterHelper();\nconst router = useRouter();\n\nasync function handleSelect (data: {route: string; indexPath: string[]}) {\n const path = data.route;\n\n let _path = data.route;\n\n if (data.indexPath.some((item) => isUrl(item))) {\n _path = data.indexPath.slice(-2).join('/');\n }\n const linkTarget = router.getRoutes().filter((item) => item.path === _path)?.[0]?.meta?.linkTarget;\n\n if (linkTarget) {\n go({ url: path, winOpenOpt: { target: linkTarget as TargetContext } });\n } else {\n go(path);\n }\n emit('select', data);\n}\n\nconst style = computed(() => {\n return {\n ...generateCssVars({ 'border-right': 'none' }, 'menu'),\n ...generateCssVars({ width: !__props.collapse ? addUnit(__props.width) : addUnit(__props.collapseWidth) }, 'side-menu'),\n height: `calc(100% - ${__props.extraHeight}px)`\n };\n});\n\nconst menuClass = computed(() => {\n return [ns.b(), ns.m('fixed')];\n});\n\nfunction onChangeCollapse () {\n emit('update:collapse', !__props.collapse);\n}\n\nonMounted(() => {\n nextTick(() => {\n if (__props.dragOption?.dragClassName) {\n const el = document.querySelectorAll('.' + ns.e(__props.dragOption?.dragClassName))?.[0] as HTMLElement;\n\n const { initSortable } = useSortable(el, {\n draggable: '.vft-menu-item',\n onEnd: (evt: SortableEvent) => {\n const { oldIndex, newIndex } = evt;\n if (isNullOrUndefined(oldIndex) || isNullOrUndefined(newIndex) || oldIndex === newIndex) {\n return;\n }\n emit('dragEnd', oldIndex, newIndex);\n },\n ...__props.dragOption\n });\n initSortable();\n }\n });\n});\n\ndefineRender(() => {\n return (\n <div class={menuClass.value} style={style.value}>\n {slots.top ? <div class={ns.e('top')}>{slots.top()}</div> : null}\n {vMenu.value}\n {slots.bottom ? (\n <div class={ns.e('bottom')}>{slots.bottom()}</div>\n ) : __props.showCollapse ? (\n <div onClick={onChangeCollapse} class={[ns.e('bottom'), ns.e('collapse')]}>\n <Icon style={{ transform: __props.collapse ? 'rotateY(180deg)' : '' }} icon=\"vi-collapse\"></Icon>\n </div>\n ) : null}\n </div>\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","name","b","slots","useSlots","_defaultActive","ref","_attrMapping","computed","path","children","title","index","icon","__props","attrMapping","listenerRouteChange","route","meta","hideSide","value","vSubMenu","item","itemIndex","_path","_title","_children","_index","_icon","length","h","SubMenu","popperAppendToBody","key","popperClass","e","default","map","subItem","subPath","subIndex","subIcon","subTitle","MenuItem","disabled","menuItem","vMenu","Menu","onSelect","useMenuSelect","handleSelect","defaultActive","class","dragOption","dragClassName","style","height","menuTopBottomHeight","uniqueOpened","collapse","menus","go","useRouterHelper","router","useRouter","data","indexPath","some","isUrl","slice","join","linkTarget","getRoutes","filter","url","winOpenOpt","target","emit","generateCssVars","width","addUnit","collapseWidth","extraHeight","menuClass","m","onChangeCollapse","onMounted","nextTick","el","document","querySelectorAll","initSortable","useSortable","draggable","onEnd","evt","oldIndex","newIndex","isNullOrUndefined","_createVNode","top","bottom","showCollapse","Icon","transform"],"mappings":"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"}
1
+ {"version":3,"file":"side-menu.vue2.mjs","sources":["../../../../../packages/components/side-menu/side-menu.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns = /* hoist-static*/ useNamespace('side-menu')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"tsx\" setup>\nimport { listenerRouteChange, type MenuType, useRouterHelper } from '@vft/router';\nimport { useSortable } from '@vft/use';\nimport { addUnit, generateCssVars, isNullOrUndefined, isUrl } from '@vft/utils';\nimport Sortable, { type SortableEvent } from 'sortablejs';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { VftMenu as Menu, VftSubMenu as SubMenu, VftMenuItem as MenuItem, VftIcon as Icon } from '@vft-ui/components';\nimport { ref, h, type VNode, computed, useSlots, onMounted, nextTick } from 'vue';\nimport { useRouter } from 'vue-router';\n\ninterface MenuConProps {\n menus: MenuType[];\n uniqueOpened?: boolean;\n collapse?: boolean;\n defaultActive?: string;\n width?: Numberish;\n collapseWidth?: Numberish;\n attrMapping?: {\n path?: string;\n children?: string;\n title?: string;\n index?: Numberish;\n icon?: string;\n };\n /** 系统内除去侧边栏的其他高度 */\n extraHeight?: number;\n /** 上下插槽的总体高度 */\n menuTopBottomHeight?: number;\n /** 显示底部折叠按钮 */\n showCollapse?: boolean;\n /** 排序配置 */\n dragOption?: Sortable.Options & {dragClassName: string};\n useMenuSelect?: boolean\n}\n\ndefineProps({\n \"menus\": null,\n \"uniqueOpened\": { type: Boolean, default: true },\n \"collapse\": { type: Boolean, default: false },\n \"defaultActive\": null,\n \"width\": null,\n \"collapseWidth\": { default: 50 },\n \"attrMapping\": null,\n \"extraHeight\": { default: 100 },\n \"menuTopBottomHeight\": { default: 40 },\n \"showCollapse\": { type: Boolean, default: false },\n \"dragOption\": null,\n \"useMenuSelect\": { type: Boolean, default: true }\n})\n\nconst emit = defineEmits(['update:collapse', 'dragEnd', 'select']);\n\n\n\nconst slots = useSlots();\n\n;\n\nconst _defaultActive = ref();\n\nconst _attrMapping = computed(() => {\n\treturn {\n path: 'path',\n children: 'children',\n title: 'title',\n index: 'path',\n icon: 'icon',\n ...__props.attrMapping\n };\n});\n\nlistenerRouteChange((route) => {\n if (!route || route.meta.hideSide) {\n return;\n }\n _defaultActive.value = route.path as string;\n});\n\nconst vSubMenu = (item: Record<string, any>, itemIndex: number): VNode => {\n const _path = item[_attrMapping.value.path!];\n const _title = item[_attrMapping.value.title!];\n const _children = item?.[_attrMapping.value.children!];\n const _index = item?.[_attrMapping.value.index!];\n const _icon = item?.[_attrMapping.value.icon!];\n\n return _children?.length\n ? h(\n // @ts-ignore\n SubMenu,\n {\n popperAppendToBody: true,\n key: _index || _path,\n index: _index || _path,\n title: _title,\n icon: _icon,\n popperClass: ns.e('popper')\n },\n {\n default: () => {\n return _children?.map((subItem: Record<string, any>, index: number) => {\n const subPath = subItem[_attrMapping.value.path!];\n const subIndex = subItem[_attrMapping.value.index!];\n const subIcon = subItem[_attrMapping.value.icon!];\n const subTitle = subItem[_attrMapping.value.title!];\n return subItem?.[_attrMapping.value.children!]?.length\n ? vSubMenu(subItem, index)\n : // @ts-ignore\n h(MenuItem, {\n key: subIndex || subPath,\n index: subIndex || subPath,\n route: subPath,\n icon: subIcon,\n title: subTitle,\n disabled: subItem.disabled\n });\n });\n }\n }\n )\n : h(MenuItem, {\n key: _index || _path,\n index: _index || _path,\n title: _title,\n route: _path,\n icon: _icon,\n disabled: item.disabled\n }, slots.menuItem ? () => slots.menuItem?.({ item, index: itemIndex }) : '');\n};\n\nconst vMenu = computed(() => {\n return h(\n Menu,\n {\n onSelect: __props.useMenuSelect ? handleSelect : () => {},\n defaultActive: __props.defaultActive || _defaultActive.value,\n class: [ns.e('con'), __props.dragOption?.dragClassName ? ns.e(__props.dragOption?.dragClassName) : ''],\n style: { height: `calc(100% - ${__props.menuTopBottomHeight}px)` },\n uniqueOpened: __props.uniqueOpened,\n collapse: __props.collapse,\n 'collapse-transition': false\n }, () =>\n __props.menus.map((item, index) => {\n return vSubMenu(item, index);\n })\n );\n});\n\nconst { go } = useRouterHelper();\nconst router = useRouter();\n\nasync function handleSelect (data: {route: string; indexPath: string[]}) {\n const path = data.route;\n\n let _path = data.route;\n\n if (data.indexPath.some((item) => isUrl(item))) {\n _path = data.indexPath.slice(-2).join('/');\n }\n const linkTarget = router.getRoutes().filter((item) => item.path === _path)?.[0]?.meta?.linkTarget;\n\n if (linkTarget) {\n go({ url: path, winOpenOpt: { target: linkTarget as TargetContext } });\n } else {\n go(path);\n }\n emit('select', data);\n}\n\nconst style = computed(() => {\n return {\n ...generateCssVars({ 'border-right': 'none' }, 'menu'),\n ...generateCssVars({ width: !__props.collapse ? addUnit(__props.width) : addUnit(__props.collapseWidth) }, 'side-menu'),\n height: `calc(100% - ${__props.extraHeight}px)`\n };\n});\n\nconst menuClass = computed(() => {\n return [ns.b(), ns.m('fixed')];\n});\n\nfunction onChangeCollapse () {\n emit('update:collapse', !__props.collapse);\n}\n\nonMounted(() => {\n nextTick(() => {\n if (__props.dragOption?.dragClassName) {\n const el = document.querySelectorAll('.' + ns.e(__props.dragOption?.dragClassName))?.[0] as HTMLElement;\n\n const { initSortable } = useSortable(el, {\n draggable: '.vft-menu-item',\n onEnd: (evt: SortableEvent) => {\n const { oldIndex, newIndex } = evt;\n if (isNullOrUndefined(oldIndex) || isNullOrUndefined(newIndex) || oldIndex === newIndex) {\n return;\n }\n emit('dragEnd', oldIndex, newIndex);\n },\n ...__props.dragOption\n });\n initSortable();\n }\n });\n});\n\ndefineRender(() => {\n return (\n <div class={menuClass.value} style={style.value}>\n {slots.top ? <div class={ns.e('top')}>{slots.top()}</div> : null}\n {vMenu.value}\n {slots.bottom ? (\n <div class={ns.e('bottom')}>{slots.bottom()}</div>\n ) : __props.showCollapse ? (\n <div onClick={onChangeCollapse} class={[ns.e('bottom'), ns.e('collapse')]}>\n <Icon style={{ transform: __props.collapse ? 'rotateY(180deg)' : '' }} icon=\"vi-collapse\"></Icon>\n </div>\n ) : null}\n </div>\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","name","b","slots","useSlots","_defaultActive","ref","_attrMapping","computed","path","children","title","index","icon","__props","attrMapping","listenerRouteChange","route","meta","hideSide","value","vSubMenu","item","itemIndex","_path","_title","_children","_index","_icon","length","h","SubMenu","popperAppendToBody","key","popperClass","e","default","map","subItem","subPath","subIndex","subIcon","subTitle","MenuItem","disabled","menuItem","vMenu","Menu","onSelect","useMenuSelect","handleSelect","defaultActive","class","dragOption","dragClassName","style","height","menuTopBottomHeight","uniqueOpened","collapse","menus","go","useRouterHelper","router","useRouter","data","indexPath","some","isUrl","slice","join","linkTarget","getRoutes","filter","url","winOpenOpt","target","emit","generateCssVars","width","addUnit","collapseWidth","extraHeight","menuClass","m","onChangeCollapse","onMounted","nextTick","el","document","querySelectorAll","initSortable","useSortable","draggable","onEnd","evt","oldIndex","newIndex","isNullOrUndefined","_createVNode","top","bottom","showCollapse","Icon","transform"],"mappings":"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"}
@@ -36,20 +36,22 @@ import "../qrcode/index.mjs";
36
36
  import "../overlay/index.mjs";
37
37
  import "../clamp/index.mjs";
38
38
  import "../clamp-toggle/index.mjs";
39
+ import "../page-wrapper/index.mjs";
40
+ import "../message/index.mjs";
39
41
  import { useNamespace as K } from "../../hooks/use-namespace/index.mjs";
40
42
  import "@popperjs/core";
41
43
  import "lodash";
42
44
  import "../../hooks/use-z-index/index.mjs";
43
- import { useDocumentVisibility as lt, useWindowFocus as at, useResizeObserver as st } from "@vueuse/core";
45
+ import { useDocumentVisibility as lt, useWindowFocus as at, useResizeObserver as it } from "@vueuse/core";
44
46
  import { EVENT_CODE as k } from "@vft/constants";
45
- import { TabsRootContextKey as it } from "./types.mjs";
47
+ import { TabsRootContextKey as st } from "./types.mjs";
46
48
  import rt from "./tab-bar.vue2.mjs";
47
49
  const V = (
48
50
  /* hoist-static*/
49
51
  K("tab-nav")
50
52
  ), ct = E({
51
53
  name: V.b()
52
- }), oe = /* @__PURE__ */ E({
54
+ }), le = /* @__PURE__ */ E({
53
55
  ...ct,
54
56
  props: {
55
57
  panes: null,
@@ -74,7 +76,7 @@ const V = (
74
76
  emit: C
75
77
  }) {
76
78
  var A;
77
- const M = Z(), b = _(it);
79
+ const M = Z(), b = _(st);
78
80
  b || nt(V.b(), "<vft-tabs><tab-nav /></vft-tabs>");
79
81
  const o = K("tabs"), q = lt(), H = at(), $ = g(), d = g(), h = g(), f = g(!1), v = g(0), S = g(!1), x = g(!0), w = I(() => ["top", "bottom"].includes(b.props.tabPosition) ? "width" : "height"), W = I(() => ({
80
82
  transform: `translate${w.value === "width" ? "X" : "Y"}(-${v.value}px)`
@@ -96,9 +98,9 @@ const V = (
96
98
  const t = $.value.querySelector(".is-active");
97
99
  if (!t)
98
100
  return;
99
- const n = d.value, p = ["top", "bottom"].includes(b.props.tabPosition), i = t.getBoundingClientRect(), a = n.getBoundingClientRect(), u = p ? e.offsetWidth - a.width : e.offsetHeight - a.height, c = v.value;
100
- let s = c;
101
- p ? (i.left < a.left && (s = c - (a.left - i.left)), i.right > a.right && (s = c + i.right - a.right)) : (i.top < a.top && (s = c - (a.top - i.top)), i.bottom > a.bottom && (s = c + (i.bottom - a.bottom))), s = Math.max(s, 0), v.value = Math.min(s, u);
101
+ const n = d.value, p = ["top", "bottom"].includes(b.props.tabPosition), s = t.getBoundingClientRect(), a = n.getBoundingClientRect(), u = p ? e.offsetWidth - a.width : e.offsetHeight - a.height, c = v.value;
102
+ let i = c;
103
+ p ? (s.left < a.left && (i = c - (a.left - s.left)), s.right > a.right && (i = c + s.right - a.right)) : (s.top < a.top && (i = c - (a.top - s.top)), s.bottom > a.bottom && (i = c + (s.bottom - a.bottom))), i = Math.max(i, 0), v.value = Math.min(i, u);
102
104
  }, z = () => {
103
105
  if (!h.value || !d.value)
104
106
  return;
@@ -108,14 +110,14 @@ const V = (
108
110
  const t = e.code, {
109
111
  up: n,
110
112
  down: p,
111
- left: i,
113
+ left: s,
112
114
  right: a
113
115
  } = k;
114
- if (![n, p, i, a].includes(t))
116
+ if (![n, p, s, a].includes(t))
115
117
  return;
116
118
  const u = Array.from(e.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")), c = u.indexOf(e.target);
117
- let s;
118
- t === i || t === n ? c === 0 ? s = u.length - 1 : s = c - 1 : c < u.length - 1 ? s = c + 1 : s = 0, u[s].focus(), u[s].click(), P();
119
+ let i;
120
+ t === s || t === n ? c === 0 ? i = u.length - 1 : i = c - 1 : c < u.length - 1 ? i = c + 1 : i = 0, u[i].focus(), u[i].click(), P();
119
121
  }, P = () => {
120
122
  x.value && (S.value = !0);
121
123
  }, B = () => S.value = !1;
@@ -123,7 +125,7 @@ const V = (
123
125
  e === "hidden" ? x.value = !1 : e === "visible" && setTimeout(() => x.value = !0, 50);
124
126
  }), O(H, (e) => {
125
127
  e ? setTimeout(() => x.value = !0, 50) : x.value = !1;
126
- }), st($, z), tt(() => setTimeout(() => R(), 0)), et(() => z()), D({
128
+ }), it($, z), tt(() => setTimeout(() => R(), 0)), et(() => z()), D({
127
129
  scrollToActiveTab: R,
128
130
  removeFocus: B
129
131
  }), O(() => l.panes, () => M.update(), {
@@ -142,15 +144,15 @@ const V = (
142
144
  var e;
143
145
  return (e = l.panes) == null ? void 0 : e.map((t, n) => {
144
146
  var N, F, L;
145
- const p = t.uid, i = t.props.disabled, a = t.props.name ?? t.index ?? `${n}`, u = !i && (t.isClosable || l.editable);
147
+ const p = t.uid, s = t.props.disabled, a = t.props.name ?? t.index ?? `${n}`, u = !s && (t.isClosable || l.editable);
146
148
  t.index = `${n}`;
147
149
  const c = u ? r("span", {
148
150
  class: "is-icon-close",
149
151
  onClick: (m) => C("tabRemove", t, m)
150
- }, [(N = l.closeIconCfg) != null && N.icon ? r(T, l.closeIconCfg, null) : null]) : null, s = ((L = (F = t.slots).label) == null ? void 0 : L.call(F)) || t.props.label, Q = !i && t.active ? 0 : -1;
152
+ }, [(N = l.closeIconCfg) != null && N.icon ? r(T, l.closeIconCfg, null) : null]) : null, i = ((L = (F = t.slots).label) == null ? void 0 : L.call(F)) || t.props.label, Q = !s && t.active ? 0 : -1;
151
153
  return r("div", {
152
154
  ref: `tab-${p}`,
153
- class: [o.e("item"), o.is(b.props.tabPosition), o.is("active", t.active), o.is("disabled", i), o.is("closable", u), o.is("focus", S.value)],
155
+ class: [o.e("item"), o.is(b.props.tabPosition), o.is("active", t.active), o.is("disabled", s), o.is("closable", u), o.is("focus", S.value)],
154
156
  id: `tab-${a}`,
155
157
  key: `tab-${p}`,
156
158
  "aria-controls": `pane-${a}`,
@@ -172,7 +174,7 @@ const V = (
172
174
  onKeydown: (m) => {
173
175
  u && (m.code === k.delete || m.code === k.backspace) && C("tabRemove", t, m);
174
176
  }
175
- }, [s, c]);
177
+ }, [i, c]);
176
178
  });
177
179
  }), J = l.editable || l.addable ? r("span", {
178
180
  class: o.e("new-tab"),
@@ -200,6 +202,6 @@ const V = (
200
202
  }
201
203
  });
202
204
  export {
203
- oe as default
205
+ le as default
204
206
  };
205
207
  //# sourceMappingURL=tab-nav.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-nav.vue2.mjs","sources":["../../../../../packages/components/tabs/tab-nav.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns_nav = /* hoist-static*/ useNamespace('tab-nav')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: ns_nav.b()\n});</script>\n<script lang=\"tsx\" setup>\nimport { throwError } from '@vft-ui/utils';\nimport {\n computed,\n type CSSProperties,\n getCurrentInstance,\n inject,\n nextTick,\n onMounted,\n onUpdated,\n ref,\n watch\n} from 'vue';\nimport { type IconProps, VftIcon } from '@vft-ui/components';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { capitalize } from '@vft/utils';\nimport { EVENT_CODE } from '@vft/constants';\nimport { TabsRootContextKey } from './types';\nimport type { TabsPaneContext, TabsType, Scrollable } from './types';\nimport { useDocumentVisibility, useResizeObserver, useWindowFocus } from '@vueuse/core';\nimport TabBar from './tab-bar.vue';\n\ninterface TabNavProps {\n panes: TabsPaneContext[];\n /** 标签是否同时可增加和关闭 */\n editable?: boolean;\n /** 标签是否可增加 */\n addable?: boolean;\n /** tab 类型 */\n type?: TabsType;\n stretch?: boolean;\n /** 图标配置 */\n closeIconCfg?: IconProps;\n addIconCfg?: IconProps;\n arrowLeftIconCfg?: IconProps;\n arrowRightIconCfg?: IconProps;\n}\n\ndefineProps({\n \"panes\": null,\n \"editable\": { type: Boolean, },\n \"addable\": { type: Boolean, },\n \"type\": null,\n \"stretch\": { type: Boolean, },\n \"closeIconCfg\": null,\n \"addIconCfg\": null,\n \"arrowLeftIconCfg\": null,\n \"arrowRightIconCfg\": null\n})\n\nconst emit = defineEmits(['tabClick', 'tabRemove', 'tabAdd', 'tabContextmenu']);\n\n\n\n;\n\nconst vm = getCurrentInstance()!;\n\n// 获取从 index.vue 提供的数据信息\nconst rootTabs = inject(TabsRootContextKey)!;\nif (!rootTabs) throwError(ns_nav.b(), `<vft-tabs><tab-nav /></vft-tabs>`)\n\nconst ns = useNamespace('tabs');\nconst visibility = useDocumentVisibility();\nconst focused = useWindowFocus();\n\n// 整个 nav dom 包含前进后退 btn (vft-tabs__nav-wrap)\nconst el$ = ref<HTMLDivElement>();\n// el$ 子节点 包含 newButton (vft-tabs__nav-scroll)\nconst navScroll$ = ref<HTMLDivElement>();\n// navScroll$ 子节点 (vft-tabs__nav)\nconst nav$ = ref<HTMLDivElement>();\n\n/** 是否展示左右滚动 */\nconst scrollable = ref<false | Scrollable>(false);\n// 记录滚动时的偏移量\nconst navOffset = ref(0);\nconst isFocus = ref(false);\nconst focusable = ref(true);\n\n// 根据 tabPosition 确定 sizeName 是 width or height\nconst sizeName = computed(() => ['top', 'bottom'].includes(rootTabs.props.tabPosition!) ? 'width' : 'height');\n\n// 设置 tab 导航栏的 translateX or translateY 的偏移量\nconst navStyle = computed<CSSProperties>(() => {\n const dir = sizeName.value === 'width' ? 'X' : 'Y';\n return {\n transform: `translate${dir}(-${navOffset.value}px)`\n };\n});\n\n// 向前滚动\nconst scrollPrev = () => {\n if (!navScroll$.value) return;\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n\n if (!currentOffset) return;\n\n navOffset.value = currentOffset > containerSize ? currentOffset - containerSize : 0;\n};\n\n// 向后滚动\nconst scrollNext = () => {\n if (!navScroll$.value || !nav$.value) return;\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`];\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n\n if (navSize - currentOffset <= containerSize) return;\n\n navOffset.value = navSize - currentOffset > containerSize * 2\n ? currentOffset + containerSize\n : navSize - containerSize;\n};\n\n// 滚动到激活的 tab 主要是获取 navOffset 的值\nconst scrollToActiveTab = async() => {\n const nav = nav$.value;\n if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return;\n\n await nextTick();\n\n const activeTab = el$.value.querySelector('.is-active');\n if (!activeTab) return;\n\n const navScroll = navScroll$.value;\n const isHorizontal = ['top', 'bottom'].includes(\n rootTabs.props.tabPosition!\n );\n const activeTabBounding = activeTab.getBoundingClientRect();\n // vft-tabs__nav-scroll\n const navScrollBounding = navScroll.getBoundingClientRect();\n const maxOffset = isHorizontal\n ? nav.offsetWidth - navScrollBounding.width\n : nav.offsetHeight - navScrollBounding.height;\n\n const currentOffset = navOffset.value;\n\n let newOffset = currentOffset;\n\n if (isHorizontal) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset =\n currentOffset - (navScrollBounding.left - activeTabBounding.left);\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset =\n currentOffset + activeTabBounding.right - navScrollBounding.right;\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset =\n currentOffset - (navScrollBounding.top - activeTabBounding.top);\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset =\n currentOffset +\n (activeTabBounding.bottom - navScrollBounding.bottom);\n }\n }\n newOffset = Math.max(newOffset, 0);\n navOffset.value = Math.min(newOffset, maxOffset);\n};\n\nconst update = () => {\n if (!nav$.value || !navScroll$.value) return;\n // 根据 position 的不同 获取 nav$(vft-tabs__nav) 的 offsetWidth or offsetHeight\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`];\n // 获取到 navScroll$ 的 offsetWidth or offsetHeight\n const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`];\n // 获取到当前的偏移量\n const currentOffset = navOffset.value;\n // 由于 navScroll$ 的 overflow 是 hidden,所以当 vft-tabs__nav 撑开时其宽度可能会超过 vft-tabs__nav-scroll\n if (containerSize < navSize) {\n scrollable.value = scrollable.value || {};\n scrollable.value.prev = currentOffset;\n scrollable.value.next = currentOffset + containerSize < navSize;\n if (navSize - currentOffset < containerSize) {\n navOffset.value = navSize - containerSize;\n }\n } else {\n scrollable.value = false;\n if (currentOffset > 0) {\n navOffset.value = 0;\n }\n }\n};\n\nconst changeTab = (e: KeyboardEvent) => {\n const code = e.code;\n\n const { up, down, left, right } = EVENT_CODE;\n if (![up, down, left, right].includes(code)) return;\n\n // 左右上下键更换tab\n const tabList = Array.from(\n (e.currentTarget as HTMLDivElement).querySelectorAll<HTMLDivElement>(\n '[role=tab]:not(.is-disabled)'\n )\n );\n const currentIndex = tabList.indexOf(e.target as HTMLDivElement);\n\n let nextIndex: number;\n if (code === left || code === up) {\n // left\n if (currentIndex === 0) {\n // first\n nextIndex = tabList.length - 1;\n } else {\n nextIndex = currentIndex - 1;\n }\n } else {\n // right\n if (currentIndex < tabList.length - 1) {\n // not last\n nextIndex = currentIndex + 1;\n } else {\n nextIndex = 0;\n }\n }\n tabList[nextIndex].focus(); // 改变焦点元素\n tabList[nextIndex].click(); // 选中下一个tab\n setFocus();\n};\n\nconst setFocus = () => {\n if (focusable.value) isFocus.value = true;\n};\nconst removeFocus = () => (isFocus.value = false);\n\nwatch(visibility, (visibility) => {\n if (visibility === 'hidden') {\n focusable.value = false;\n } else if (visibility === 'visible') {\n setTimeout(() => (focusable.value = true), 50);\n }\n});\n\nwatch(focused, (focused) => {\n if (focused) {\n setTimeout(() => (focusable.value = true), 50);\n } else {\n focusable.value = false;\n }\n});\n\n// 监听 resize 触发 update\nuseResizeObserver(el$, update);\n\nonMounted(() => setTimeout(() => scrollToActiveTab(), 0));\nonUpdated(() => update());\n\ndefineExpose({\n scrollToActiveTab,\n removeFocus\n});\n\nwatch(\n () => __props.panes,\n () => vm.update(),\n { flush: 'post' }\n);\n\n// 前进后退标签\nconst scrollBtn = computed(() => {\n return scrollable.value\n ? [\n <span\n class={[\n ns.e('nav-prev'),\n ns.is('disabled', !scrollable.value.prev)\n ]}\n onClick={scrollPrev}\n >\n {__props.arrowLeftIconCfg?.icon ? <VftIcon {...__props.arrowLeftIconCfg}></VftIcon> : null}\n </span>,\n <span\n class={[\n ns.e('nav-next'),\n ns.is('disabled', !scrollable.value.next)\n ]}\n onClick={scrollNext}\n >\n {__props.arrowRightIconCfg?.icon ? <VftIcon {...__props.arrowRightIconCfg}></VftIcon> : null}\n </span>\n ]\n : null;\n});\n\n// 渲染 tab-pane\nconst tabs = computed(() => {\n return __props.panes?.map((pane, index) => {\n const uid = pane.uid;\n const disabled = pane.props.disabled;\n const tabName = pane.props.name ?? pane.index ?? `${index}`;\n const closable = !disabled && (pane.isClosable || __props.editable);\n pane.index = `${index}`;\n\n // 关闭标签图标\n const btnClose = closable ? (\n <span class=\"is-icon-close\" onClick={(ev: MouseEvent) => emit('tabRemove', pane, ev)}>\n {__props.closeIconCfg?.icon ? <VftIcon {...__props.closeIconCfg}></VftIcon> : null}\n </span>\n ) : null;\n\n const tabLabelContent = pane.slots.label?.() || pane.props.label;\n const tabindex = !disabled && pane.active ? 0 : -1;\n\n return (\n <div\n ref={`tab-${uid}`}\n class={[\n ns.e('item'),\n ns.is(rootTabs.props.tabPosition!),\n ns.is('active', pane.active),\n ns.is('disabled', disabled),\n ns.is('closable', closable),\n ns.is('focus', isFocus.value)\n ]}\n id={`tab-${tabName}`}\n key={`tab-${uid}`}\n aria-controls={`pane-${tabName}`}\n role=\"tab\"\n aria-selected={pane.active}\n tabindex={tabindex}\n onFocus={() => setFocus()}\n onBlur={() => removeFocus()}\n onClick={(ev: MouseEvent) => {\n removeFocus();\n emit('tabClick', pane, tabName, ev);\n }}\n onContextmenu={(event) => {\n event.preventDefault();\n emit('tabContextmenu', { pane, index, event });\n }}\n onKeydown={(ev: KeyboardEvent) => {\n if (\n closable &&\n (ev.code === EVENT_CODE.delete ||\n ev.code === EVENT_CODE.backspace)\n ) {\n emit('tabRemove', pane, ev);\n }\n }}\n >\n {...[tabLabelContent, btnClose]}\n </div>\n );\n });\n});\n\n// 增加 tab 的 dom\nconst newButton =\n __props.editable || __props.addable ? (\n <span\n class={ns.e('new-tab')}\n tabindex=\"0\"\n onClick={() => emit('tabAdd')}\n onKeydown={(ev: KeyboardEvent) => {\n if (ev.code === EVENT_CODE.enter) emit('tabAdd');\n }}\n >\n {__props.addIconCfg?.icon ? <VftIcon {...__props.addIconCfg}></VftIcon> : null}\n </span>\n ) : null;\n\ndefineRender(() => {\n return (\n <div\n ref={el$}\n class={[\n ns.e('nav-wrap'),\n ns.is('scrollable', !!scrollable.value),\n ns.is(rootTabs.props.tabPosition!)\n ]}\n >\n {scrollBtn.value}\n <div class={ns.e('nav-scroll')} ref={navScroll$}>\n <div\n class={[\n ns.e('nav'),\n ns.is(rootTabs.props.tabPosition!),\n ns.is(\n 'stretch',\n __props.stretch &&\n ['top', 'bottom'].includes(rootTabs.props.tabPosition!)\n )\n ]}\n ref={nav$}\n style={navStyle.value}\n role=\"tablist\"\n onKeydown={changeTab}\n >\n {...[\n !__props.type ? <TabBar tabs={[...__props.panes]} /> : null,\n tabs.value\n ]}\n </div>\n {newButton}\n </div>\n </div>\n );\n});\n</script>\n"],"names":["ns_nav","useNamespace","__default__","DO_defineComponent","name","b","vm","getCurrentInstance","rootTabs","inject","TabsRootContextKey","throwError","ns","visibility","useDocumentVisibility","focused","useWindowFocus","el$","ref","navScroll$","nav$","scrollable","navOffset","isFocus","focusable","sizeName","computed","includes","props","tabPosition","navStyle","transform","value","scrollPrev","containerSize","capitalize","currentOffset","scrollNext","navSize","scrollToActiveTab","nav","nextTick","activeTab","querySelector","navScroll","isHorizontal","activeTabBounding","getBoundingClientRect","navScrollBounding","maxOffset","offsetWidth","width","offsetHeight","height","newOffset","left","right","top","bottom","Math","max","min","update","prev","next","changeTab","e","code","up","down","EVENT_CODE","tabList","Array","from","currentTarget","querySelectorAll","currentIndex","indexOf","target","nextIndex","length","focus","click","setFocus","removeFocus","watch","setTimeout","useResizeObserver","onMounted","onUpdated","expose","__props","panes","flush","scrollBtn","_createVNode","is","arrowLeftIconCfg","icon","VftIcon","arrowRightIconCfg","tabs","map","pane","index","uid","disabled","tabName","closable","isClosable","editable","btnClose","ev","emit","closeIconCfg","tabLabelContent","slots","label","tabindex","active","onFocus","onBlur","event","preventDefault","delete","backspace","newButton","addable","onClick","enter","addIconCfg","stretch","type","TabBar"],"mappings":"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"}
1
+ {"version":3,"file":"tab-nav.vue2.mjs","sources":["../../../../../packages/components/tabs/tab-nav.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns_nav = /* hoist-static*/ useNamespace('tab-nav')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: ns_nav.b()\n});</script>\n<script lang=\"tsx\" setup>\nimport { throwError } from '@vft-ui/utils';\nimport {\n computed,\n type CSSProperties,\n getCurrentInstance,\n inject,\n nextTick,\n onMounted,\n onUpdated,\n ref,\n watch\n} from 'vue';\nimport { type IconProps, VftIcon } from '@vft-ui/components';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { capitalize } from '@vft/utils';\nimport { EVENT_CODE } from '@vft/constants';\nimport { TabsRootContextKey } from './types';\nimport type { TabsPaneContext, TabsType, Scrollable } from './types';\nimport { useDocumentVisibility, useResizeObserver, useWindowFocus } from '@vueuse/core';\nimport TabBar from './tab-bar.vue';\n\ninterface TabNavProps {\n panes: TabsPaneContext[];\n /** 标签是否同时可增加和关闭 */\n editable?: boolean;\n /** 标签是否可增加 */\n addable?: boolean;\n /** tab 类型 */\n type?: TabsType;\n stretch?: boolean;\n /** 图标配置 */\n closeIconCfg?: IconProps;\n addIconCfg?: IconProps;\n arrowLeftIconCfg?: IconProps;\n arrowRightIconCfg?: IconProps;\n}\n\ndefineProps({\n \"panes\": null,\n \"editable\": { type: Boolean, },\n \"addable\": { type: Boolean, },\n \"type\": null,\n \"stretch\": { type: Boolean, },\n \"closeIconCfg\": null,\n \"addIconCfg\": null,\n \"arrowLeftIconCfg\": null,\n \"arrowRightIconCfg\": null\n})\n\nconst emit = defineEmits(['tabClick', 'tabRemove', 'tabAdd', 'tabContextmenu']);\n\n\n\n;\n\nconst vm = getCurrentInstance()!;\n\n// 获取从 index.vue 提供的数据信息\nconst rootTabs = inject(TabsRootContextKey)!;\nif (!rootTabs) throwError(ns_nav.b(), `<vft-tabs><tab-nav /></vft-tabs>`)\n\nconst ns = useNamespace('tabs');\nconst visibility = useDocumentVisibility();\nconst focused = useWindowFocus();\n\n// 整个 nav dom 包含前进后退 btn (vft-tabs__nav-wrap)\nconst el$ = ref<HTMLDivElement>();\n// el$ 子节点 包含 newButton (vft-tabs__nav-scroll)\nconst navScroll$ = ref<HTMLDivElement>();\n// navScroll$ 子节点 (vft-tabs__nav)\nconst nav$ = ref<HTMLDivElement>();\n\n/** 是否展示左右滚动 */\nconst scrollable = ref<false | Scrollable>(false);\n// 记录滚动时的偏移量\nconst navOffset = ref(0);\nconst isFocus = ref(false);\nconst focusable = ref(true);\n\n// 根据 tabPosition 确定 sizeName 是 width or height\nconst sizeName = computed(() => ['top', 'bottom'].includes(rootTabs.props.tabPosition!) ? 'width' : 'height');\n\n// 设置 tab 导航栏的 translateX or translateY 的偏移量\nconst navStyle = computed<CSSProperties>(() => {\n const dir = sizeName.value === 'width' ? 'X' : 'Y';\n return {\n transform: `translate${dir}(-${navOffset.value}px)`\n };\n});\n\n// 向前滚动\nconst scrollPrev = () => {\n if (!navScroll$.value) return;\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n\n if (!currentOffset) return;\n\n navOffset.value = currentOffset > containerSize ? currentOffset - containerSize : 0;\n};\n\n// 向后滚动\nconst scrollNext = () => {\n if (!navScroll$.value || !nav$.value) return;\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`];\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n\n if (navSize - currentOffset <= containerSize) return;\n\n navOffset.value = navSize - currentOffset > containerSize * 2\n ? currentOffset + containerSize\n : navSize - containerSize;\n};\n\n// 滚动到激活的 tab 主要是获取 navOffset 的值\nconst scrollToActiveTab = async() => {\n const nav = nav$.value;\n if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return;\n\n await nextTick();\n\n const activeTab = el$.value.querySelector('.is-active');\n if (!activeTab) return;\n\n const navScroll = navScroll$.value;\n const isHorizontal = ['top', 'bottom'].includes(\n rootTabs.props.tabPosition!\n );\n const activeTabBounding = activeTab.getBoundingClientRect();\n // vft-tabs__nav-scroll\n const navScrollBounding = navScroll.getBoundingClientRect();\n const maxOffset = isHorizontal\n ? nav.offsetWidth - navScrollBounding.width\n : nav.offsetHeight - navScrollBounding.height;\n\n const currentOffset = navOffset.value;\n\n let newOffset = currentOffset;\n\n if (isHorizontal) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset =\n currentOffset - (navScrollBounding.left - activeTabBounding.left);\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset =\n currentOffset + activeTabBounding.right - navScrollBounding.right;\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset =\n currentOffset - (navScrollBounding.top - activeTabBounding.top);\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset =\n currentOffset +\n (activeTabBounding.bottom - navScrollBounding.bottom);\n }\n }\n newOffset = Math.max(newOffset, 0);\n navOffset.value = Math.min(newOffset, maxOffset);\n};\n\nconst update = () => {\n if (!nav$.value || !navScroll$.value) return;\n // 根据 position 的不同 获取 nav$(vft-tabs__nav) 的 offsetWidth or offsetHeight\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`];\n // 获取到 navScroll$ 的 offsetWidth or offsetHeight\n const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`];\n // 获取到当前的偏移量\n const currentOffset = navOffset.value;\n // 由于 navScroll$ 的 overflow 是 hidden,所以当 vft-tabs__nav 撑开时其宽度可能会超过 vft-tabs__nav-scroll\n if (containerSize < navSize) {\n scrollable.value = scrollable.value || {};\n scrollable.value.prev = currentOffset;\n scrollable.value.next = currentOffset + containerSize < navSize;\n if (navSize - currentOffset < containerSize) {\n navOffset.value = navSize - containerSize;\n }\n } else {\n scrollable.value = false;\n if (currentOffset > 0) {\n navOffset.value = 0;\n }\n }\n};\n\nconst changeTab = (e: KeyboardEvent) => {\n const code = e.code;\n\n const { up, down, left, right } = EVENT_CODE;\n if (![up, down, left, right].includes(code)) return;\n\n // 左右上下键更换tab\n const tabList = Array.from(\n (e.currentTarget as HTMLDivElement).querySelectorAll<HTMLDivElement>(\n '[role=tab]:not(.is-disabled)'\n )\n );\n const currentIndex = tabList.indexOf(e.target as HTMLDivElement);\n\n let nextIndex: number;\n if (code === left || code === up) {\n // left\n if (currentIndex === 0) {\n // first\n nextIndex = tabList.length - 1;\n } else {\n nextIndex = currentIndex - 1;\n }\n } else {\n // right\n if (currentIndex < tabList.length - 1) {\n // not last\n nextIndex = currentIndex + 1;\n } else {\n nextIndex = 0;\n }\n }\n tabList[nextIndex].focus(); // 改变焦点元素\n tabList[nextIndex].click(); // 选中下一个tab\n setFocus();\n};\n\nconst setFocus = () => {\n if (focusable.value) isFocus.value = true;\n};\nconst removeFocus = () => (isFocus.value = false);\n\nwatch(visibility, (visibility) => {\n if (visibility === 'hidden') {\n focusable.value = false;\n } else if (visibility === 'visible') {\n setTimeout(() => (focusable.value = true), 50);\n }\n});\n\nwatch(focused, (focused) => {\n if (focused) {\n setTimeout(() => (focusable.value = true), 50);\n } else {\n focusable.value = false;\n }\n});\n\n// 监听 resize 触发 update\nuseResizeObserver(el$, update);\n\nonMounted(() => setTimeout(() => scrollToActiveTab(), 0));\nonUpdated(() => update());\n\ndefineExpose({\n scrollToActiveTab,\n removeFocus\n});\n\nwatch(\n () => __props.panes,\n () => vm.update(),\n { flush: 'post' }\n);\n\n// 前进后退标签\nconst scrollBtn = computed(() => {\n return scrollable.value\n ? [\n <span\n class={[\n ns.e('nav-prev'),\n ns.is('disabled', !scrollable.value.prev)\n ]}\n onClick={scrollPrev}\n >\n {__props.arrowLeftIconCfg?.icon ? <VftIcon {...__props.arrowLeftIconCfg}></VftIcon> : null}\n </span>,\n <span\n class={[\n ns.e('nav-next'),\n ns.is('disabled', !scrollable.value.next)\n ]}\n onClick={scrollNext}\n >\n {__props.arrowRightIconCfg?.icon ? <VftIcon {...__props.arrowRightIconCfg}></VftIcon> : null}\n </span>\n ]\n : null;\n});\n\n// 渲染 tab-pane\nconst tabs = computed(() => {\n return __props.panes?.map((pane, index) => {\n const uid = pane.uid;\n const disabled = pane.props.disabled;\n const tabName = pane.props.name ?? pane.index ?? `${index}`;\n const closable = !disabled && (pane.isClosable || __props.editable);\n pane.index = `${index}`;\n\n // 关闭标签图标\n const btnClose = closable ? (\n <span class=\"is-icon-close\" onClick={(ev: MouseEvent) => emit('tabRemove', pane, ev)}>\n {__props.closeIconCfg?.icon ? <VftIcon {...__props.closeIconCfg}></VftIcon> : null}\n </span>\n ) : null;\n\n const tabLabelContent = pane.slots.label?.() || pane.props.label;\n const tabindex = !disabled && pane.active ? 0 : -1;\n\n return (\n <div\n ref={`tab-${uid}`}\n class={[\n ns.e('item'),\n ns.is(rootTabs.props.tabPosition!),\n ns.is('active', pane.active),\n ns.is('disabled', disabled),\n ns.is('closable', closable),\n ns.is('focus', isFocus.value)\n ]}\n id={`tab-${tabName}`}\n key={`tab-${uid}`}\n aria-controls={`pane-${tabName}`}\n role=\"tab\"\n aria-selected={pane.active}\n tabindex={tabindex}\n onFocus={() => setFocus()}\n onBlur={() => removeFocus()}\n onClick={(ev: MouseEvent) => {\n removeFocus();\n emit('tabClick', pane, tabName, ev);\n }}\n onContextmenu={(event) => {\n event.preventDefault();\n emit('tabContextmenu', { pane, index, event });\n }}\n onKeydown={(ev: KeyboardEvent) => {\n if (\n closable &&\n (ev.code === EVENT_CODE.delete ||\n ev.code === EVENT_CODE.backspace)\n ) {\n emit('tabRemove', pane, ev);\n }\n }}\n >\n {...[tabLabelContent, btnClose]}\n </div>\n );\n });\n});\n\n// 增加 tab 的 dom\nconst newButton =\n __props.editable || __props.addable ? (\n <span\n class={ns.e('new-tab')}\n tabindex=\"0\"\n onClick={() => emit('tabAdd')}\n onKeydown={(ev: KeyboardEvent) => {\n if (ev.code === EVENT_CODE.enter) emit('tabAdd');\n }}\n >\n {__props.addIconCfg?.icon ? <VftIcon {...__props.addIconCfg}></VftIcon> : null}\n </span>\n ) : null;\n\ndefineRender(() => {\n return (\n <div\n ref={el$}\n class={[\n ns.e('nav-wrap'),\n ns.is('scrollable', !!scrollable.value),\n ns.is(rootTabs.props.tabPosition!)\n ]}\n >\n {scrollBtn.value}\n <div class={ns.e('nav-scroll')} ref={navScroll$}>\n <div\n class={[\n ns.e('nav'),\n ns.is(rootTabs.props.tabPosition!),\n ns.is(\n 'stretch',\n __props.stretch &&\n ['top', 'bottom'].includes(rootTabs.props.tabPosition!)\n )\n ]}\n ref={nav$}\n style={navStyle.value}\n role=\"tablist\"\n onKeydown={changeTab}\n >\n {...[\n !__props.type ? <TabBar tabs={[...__props.panes]} /> : null,\n tabs.value\n ]}\n </div>\n {newButton}\n </div>\n </div>\n );\n});\n</script>\n"],"names":["ns_nav","useNamespace","__default__","DO_defineComponent","name","b","vm","getCurrentInstance","rootTabs","inject","TabsRootContextKey","throwError","ns","visibility","useDocumentVisibility","focused","useWindowFocus","el$","ref","navScroll$","nav$","scrollable","navOffset","isFocus","focusable","sizeName","computed","includes","props","tabPosition","navStyle","transform","value","scrollPrev","containerSize","capitalize","currentOffset","scrollNext","navSize","scrollToActiveTab","nav","nextTick","activeTab","querySelector","navScroll","isHorizontal","activeTabBounding","getBoundingClientRect","navScrollBounding","maxOffset","offsetWidth","width","offsetHeight","height","newOffset","left","right","top","bottom","Math","max","min","update","prev","next","changeTab","e","code","up","down","EVENT_CODE","tabList","Array","from","currentTarget","querySelectorAll","currentIndex","indexOf","target","nextIndex","length","focus","click","setFocus","removeFocus","watch","setTimeout","useResizeObserver","onMounted","onUpdated","expose","__props","panes","flush","scrollBtn","_createVNode","is","arrowLeftIconCfg","icon","VftIcon","arrowRightIconCfg","tabs","map","pane","index","uid","disabled","tabName","closable","isClosable","editable","btnClose","ev","emit","closeIconCfg","tabLabelContent","slots","label","tabindex","active","onFocus","onBlur","event","preventDefault","delete","backspace","newButton","addable","onClick","enter","addIconCfg","stretch","type","TabBar"],"mappings":"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"}
package/es/defaults.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  declare const _default: {
2
2
  version: string;
3
- install: (app: import("vue").App<any>, options?: any) => void;
3
+ install: (app: import("vue").App<any>, options?: Partial<import("vft/es/components").ConfigProviderProps> | undefined) => void;
4
4
  };
5
5
  export default _default;
package/es/defaults.mjs CHANGED
@@ -1,7 +1,8 @@
1
1
  import { makeInstaller as o } from "./make-installer.mjs";
2
- import t from "./component.mjs";
3
- const m = o([...t]);
2
+ import r from "./component.mjs";
3
+ import t from "./plugin.mjs";
4
+ const n = o([...r, ...t]);
4
5
  export {
5
- m as default
6
+ n as default
6
7
  };
7
8
  //# sourceMappingURL=defaults.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.mjs","sources":["../../../packages/vft/defaults.ts"],"sourcesContent":["import { makeInstaller } from './make-installer'\nimport Components from './component'\n\nexport default makeInstaller([...Components, ...[]])\n"],"names":["installer","makeInstaller","Components"],"mappings":";;AAGA,MAAeA,IAAAC,EAAc,CAAC,GAAGC,CAAiB,CAAC;"}
1
+ {"version":3,"file":"defaults.mjs","sources":["../../../packages/vft/defaults.ts"],"sourcesContent":["import { makeInstaller } from './make-installer'\nimport Components from './component'\nimport Plugins from './plugin'\n\nexport default makeInstaller([...Components, ...Plugins])\n"],"names":["installer","makeInstaller","Components","Plugins"],"mappings":";;;AAIA,MAAeA,IAAAC,EAAc,CAAC,GAAGC,GAAY,GAAGC,CAAO,CAAC;"}
package/es/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export * from 'vft/es/components';
3
3
  export * from 'vft/es/constants';
4
4
  export * from 'vft/es/hooks';
5
5
  export * from './make-installer';
6
- export declare const install: (app: import("vue").App<any>, options?: any) => void;
6
+ export declare const install: (app: import("vue").App<any>, options?: Partial<import("vft/es/components").ConfigProviderProps> | undefined) => void;
7
7
  export declare const version: string;
8
8
  export default installer;
9
9
  export { default as dayjs } from 'dayjs';