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.
- package/dist/index.css +1 -1
- package/es/component.mjs +32 -30
- package/es/component.mjs.map +1 -1
- package/es/components/back-top/back-top.vue2.mjs +8 -6
- package/es/components/back-top/back-top.vue2.mjs.map +1 -1
- package/es/components/config-provider/config-provider.vue.d.ts +9 -0
- package/es/components/config-provider/config-provider.vue2.mjs +32 -23
- package/es/components/config-provider/config-provider.vue2.mjs.map +1 -1
- package/es/components/config-provider/constants.d.ts +2 -0
- package/es/components/config-provider/constants.mjs +3 -2
- package/es/components/config-provider/constants.mjs.map +1 -1
- package/es/components/config-provider/index.d.ts +8 -0
- package/es/components/config-provider/index.mjs +7 -6
- package/es/components/context-menu/context-menu.vue2.mjs +17 -10
- package/es/components/context-menu/context-menu.vue2.mjs.map +1 -1
- package/es/components/index.d.ts +3 -0
- package/es/components/index.mjs +87 -71
- package/es/components/index.mjs.map +1 -1
- package/es/components/loading/directive.d.ts +18 -0
- package/es/components/loading/directive.mjs +50 -0
- package/es/components/loading/directive.mjs.map +1 -0
- package/es/components/loading/index.d.ts +39 -0
- package/es/components/loading/index.mjs +19 -0
- package/es/components/loading/index.mjs.map +1 -0
- package/es/components/loading/loading.d.ts +27 -0
- package/es/components/loading/loading.mjs +122 -0
- package/es/components/loading/loading.mjs.map +1 -0
- package/es/components/loading/service.d.ts +3 -0
- package/es/components/loading/service.mjs +68 -0
- package/es/components/loading/service.mjs.map +1 -0
- package/es/components/loading/style/css.d.ts +0 -0
- package/es/components/loading/style/css.mjs +3 -0
- package/es/components/loading/style/css.mjs.map +1 -0
- package/es/components/loading/style/index.d.ts +0 -0
- package/es/components/loading/style/index.mjs +3 -0
- package/es/components/loading/style/index.mjs.map +1 -0
- package/es/components/loading/types.d.ts +25 -0
- package/es/components/loading/types.mjs +2 -0
- package/es/components/loading/types.mjs.map +1 -0
- package/es/components/menu/menu-item.vue2.mjs +4 -2
- package/es/components/menu/menu-item.vue2.mjs.map +1 -1
- package/es/components/menu/sub-menu.vue2.mjs +4 -2
- package/es/components/menu/sub-menu.vue2.mjs.map +1 -1
- package/es/components/message/index.d.ts +3 -0
- package/es/components/message/index.mjs +14 -0
- package/es/components/message/index.mjs.map +1 -0
- package/es/components/message/instance.d.ts +17 -0
- package/es/components/message/instance.mjs +16 -0
- package/es/components/message/instance.mjs.map +1 -0
- package/es/components/message/message.vue.d.ts +129 -0
- package/es/components/message/message.vue.mjs +5 -0
- package/es/components/message/message.vue.mjs.map +1 -0
- package/es/components/message/message.vue2.mjs +129 -0
- package/es/components/message/message.vue2.mjs.map +1 -0
- package/es/components/message/method.d.ts +4 -0
- package/es/components/message/method.mjs +98 -0
- package/es/components/message/method.mjs.map +1 -0
- package/es/components/message/style/css.d.ts +0 -0
- package/es/components/message/style/css.mjs +3 -0
- package/es/components/message/style/css.mjs.map +1 -0
- package/es/components/message/style/index.d.ts +0 -0
- package/es/components/message/style/index.mjs +3 -0
- package/es/components/message/style/index.mjs.map +1 -0
- package/es/components/message/types.d.ts +63 -0
- package/es/components/message/types.mjs +23 -0
- package/es/components/message/types.mjs.map +1 -0
- package/es/components/multiple-tabs/multiple-tabs.vue2.mjs +4 -2
- package/es/components/multiple-tabs/multiple-tabs.vue2.mjs.map +1 -1
- package/es/components/multiple-tabs/tab-content.vue2.mjs +18 -11
- package/es/components/multiple-tabs/tab-content.vue2.mjs.map +1 -1
- package/es/components/page-wrapper/index.d.ts +12 -0
- package/es/components/page-wrapper/index.mjs +11 -0
- package/es/components/page-wrapper/index.mjs.map +1 -0
- package/es/components/page-wrapper/page-wrapper.vue.d.ts +13 -0
- package/es/components/page-wrapper/page-wrapper.vue.mjs +5 -0
- package/es/components/page-wrapper/page-wrapper.vue.mjs.map +1 -0
- package/es/components/page-wrapper/page-wrapper.vue2.mjs +43 -0
- package/es/components/page-wrapper/page-wrapper.vue2.mjs.map +1 -0
- package/es/components/page-wrapper/style/css.d.ts +0 -0
- package/es/components/page-wrapper/style/css.mjs +3 -0
- package/es/components/page-wrapper/style/css.mjs.map +1 -0
- package/es/components/page-wrapper/style/index.d.ts +0 -0
- package/es/components/page-wrapper/style/index.mjs +3 -0
- package/es/components/page-wrapper/style/index.mjs.map +1 -0
- package/es/components/result/result.vue2.mjs +4 -2
- package/es/components/result/result.vue2.mjs.map +1 -1
- package/es/components/side-menu/side-menu.vue2.mjs +4 -2
- package/es/components/side-menu/side-menu.vue2.mjs.map +1 -1
- package/es/components/tabs/tab-nav.vue2.mjs +19 -17
- package/es/components/tabs/tab-nav.vue2.mjs.map +1 -1
- package/es/defaults.d.ts +1 -1
- package/es/defaults.mjs +4 -3
- package/es/defaults.mjs.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.mjs +135 -119
- package/es/index.mjs.map +1 -1
- package/es/make-installer.d.ts +2 -1
- package/es/make-installer.mjs +8 -6
- package/es/make-installer.mjs.map +1 -1
- package/es/package.json.mjs +1 -1
- package/es/plugin.d.ts +3 -0
- package/es/plugin.mjs +10 -0
- package/es/plugin.mjs.map +1 -0
- package/es/style.css +1 -1
- package/es/theme-style/src/loading.scss.mjs +5 -0
- package/es/theme-style/src/loading.scss.mjs.map +1 -0
- package/es/theme-style/src/message.scss.mjs +5 -0
- package/es/theme-style/src/message.scss.mjs.map +1 -0
- package/es/theme-style/src/page-wrapper.scss.mjs +5 -0
- package/es/theme-style/src/page-wrapper.scss.mjs.map +1 -0
- package/lib/component.js +1 -1
- package/lib/component.js.map +1 -1
- package/lib/components/back-top/back-top.vue2.js +1 -1
- package/lib/components/back-top/back-top.vue2.js.map +1 -1
- package/lib/components/config-provider/config-provider.vue.d.ts +9 -0
- package/lib/components/config-provider/config-provider.vue2.js +1 -1
- package/lib/components/config-provider/config-provider.vue2.js.map +1 -1
- package/lib/components/config-provider/constants.d.ts +2 -0
- package/lib/components/config-provider/constants.js +1 -1
- package/lib/components/config-provider/constants.js.map +1 -1
- package/lib/components/config-provider/index.d.ts +8 -0
- package/lib/components/config-provider/index.js +1 -1
- package/lib/components/context-menu/context-menu.vue2.js +1 -1
- package/lib/components/context-menu/context-menu.vue2.js.map +1 -1
- package/lib/components/index.d.ts +3 -0
- package/lib/components/index.js +1 -1
- package/lib/components/loading/directive.d.ts +18 -0
- package/lib/components/loading/directive.js +2 -0
- package/lib/components/loading/directive.js.map +1 -0
- package/lib/components/loading/index.d.ts +39 -0
- package/lib/components/loading/index.js +2 -0
- package/lib/components/loading/index.js.map +1 -0
- package/lib/components/loading/loading.d.ts +27 -0
- package/lib/components/loading/loading.js +2 -0
- package/lib/components/loading/loading.js.map +1 -0
- package/lib/components/loading/service.d.ts +3 -0
- package/lib/components/loading/service.js +2 -0
- package/lib/components/loading/service.js.map +1 -0
- package/lib/components/loading/style/css.d.ts +0 -0
- package/lib/components/loading/style/css.js +2 -0
- package/lib/components/loading/style/css.js.map +1 -0
- package/lib/components/loading/style/index.d.ts +0 -0
- package/lib/components/loading/style/index.js +2 -0
- package/lib/components/loading/style/index.js.map +1 -0
- package/lib/components/loading/types.d.ts +25 -0
- package/lib/components/loading/types.js +2 -0
- package/lib/components/loading/types.js.map +1 -0
- package/lib/components/menu/menu-item.vue2.js +1 -1
- package/lib/components/menu/menu-item.vue2.js.map +1 -1
- package/lib/components/menu/sub-menu.vue2.js +1 -1
- package/lib/components/menu/sub-menu.vue2.js.map +1 -1
- package/lib/components/message/index.d.ts +3 -0
- package/lib/components/message/index.js +2 -0
- package/lib/components/message/index.js.map +1 -0
- package/lib/components/message/instance.d.ts +17 -0
- package/lib/components/message/instance.js +2 -0
- package/lib/components/message/instance.js.map +1 -0
- package/lib/components/message/message.vue.d.ts +129 -0
- package/lib/components/message/message.vue.js +2 -0
- package/lib/components/message/message.vue.js.map +1 -0
- package/lib/components/message/message.vue2.js +2 -0
- package/lib/components/message/message.vue2.js.map +1 -0
- package/lib/components/message/method.d.ts +4 -0
- package/lib/components/message/method.js +2 -0
- package/lib/components/message/method.js.map +1 -0
- package/lib/components/message/style/css.d.ts +0 -0
- package/lib/components/message/style/css.js +2 -0
- package/lib/components/message/style/css.js.map +1 -0
- package/lib/components/message/style/index.d.ts +0 -0
- package/lib/components/message/style/index.js +2 -0
- package/lib/components/message/style/index.js.map +1 -0
- package/lib/components/message/types.d.ts +63 -0
- package/lib/components/message/types.js +2 -0
- package/lib/components/message/types.js.map +1 -0
- package/lib/components/multiple-tabs/multiple-tabs.vue2.js +1 -1
- package/lib/components/multiple-tabs/multiple-tabs.vue2.js.map +1 -1
- package/lib/components/multiple-tabs/tab-content.vue2.js +1 -1
- package/lib/components/multiple-tabs/tab-content.vue2.js.map +1 -1
- package/lib/components/page-wrapper/index.d.ts +12 -0
- package/lib/components/page-wrapper/index.js +2 -0
- package/lib/components/page-wrapper/index.js.map +1 -0
- package/lib/components/page-wrapper/page-wrapper.vue.d.ts +13 -0
- package/lib/components/page-wrapper/page-wrapper.vue.js +2 -0
- package/lib/components/page-wrapper/page-wrapper.vue.js.map +1 -0
- package/lib/components/page-wrapper/page-wrapper.vue2.js +2 -0
- package/lib/components/page-wrapper/page-wrapper.vue2.js.map +1 -0
- package/lib/components/page-wrapper/style/css.d.ts +0 -0
- package/lib/components/page-wrapper/style/css.js +2 -0
- package/lib/components/page-wrapper/style/css.js.map +1 -0
- package/lib/components/page-wrapper/style/index.d.ts +0 -0
- package/lib/components/page-wrapper/style/index.js +2 -0
- package/lib/components/page-wrapper/style/index.js.map +1 -0
- package/lib/components/result/result.vue2.js +1 -1
- package/lib/components/result/result.vue2.js.map +1 -1
- package/lib/components/side-menu/side-menu.vue2.js +1 -1
- package/lib/components/side-menu/side-menu.vue2.js.map +1 -1
- package/lib/components/tabs/tab-nav.vue2.js +1 -1
- package/lib/components/tabs/tab-nav.vue2.js.map +1 -1
- package/lib/defaults.d.ts +1 -1
- package/lib/defaults.js +1 -1
- package/lib/defaults.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/make-installer.d.ts +2 -1
- package/lib/make-installer.js +1 -1
- package/lib/make-installer.js.map +1 -1
- package/lib/package.json.js +1 -1
- package/lib/plugin.d.ts +3 -0
- package/lib/plugin.js +2 -0
- package/lib/plugin.js.map +1 -0
- package/lib/theme-style/src/loading.scss.js +2 -0
- package/lib/theme-style/src/loading.scss.js.map +1 -0
- package/lib/theme-style/src/message.scss.js +2 -0
- package/lib/theme-style/src/message.scss.js.map +1 -0
- package/lib/theme-style/src/page-wrapper.scss.js +2 -0
- package/lib/theme-style/src/page-wrapper.scss.js.map +1 -0
- package/package.json +1 -1
- package/theme-style/index.css +1 -1
- package/theme-style/src/index.scss +3 -0
- package/theme-style/src/loading.scss +112 -0
- package/theme-style/src/message.scss +111 -0
- package/theme-style/src/page-wrapper.scss +28 -0
- package/theme-style/vft-loading.css +1 -0
- package/theme-style/vft-message.css +1 -0
- package/theme-style/vft-page-wrapper.css +1 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("../../utils/vue/install.js");require("vue");require("@vue/shared");require("@vft/utils");const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("../../utils/vue/install.js");require("vue");require("@vue/shared");require("@vft/utils");const r=require("./config-provider.vue2.js"),o=require("./constants.js"),e=require("./hooks/use-global-config.js"),i=t.withInstall(r.default);exports.configProviderContextKey=o.configProviderContextKey;exports.messageConfig=o.messageConfig;exports.provideGlobalConfig=e.provideGlobalConfig;exports.useGlobalComponentSettings=e.useGlobalComponentSettings;exports.useGlobalConfig=e.useGlobalConfig;exports.VftConfigProvider=i;exports.default=i;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),o=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");const v=require("../menu/index.js");require("@vft/utils");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 x={class:"vft-sub-menu"},h=e.defineComponent({__name:"context-menu",props:{axis:null,styles:null,width:null,items:null},setup(u){let c=e.ref();const d=e.computed(()=>{const{x:r,y:
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),o=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");const v=require("../menu/index.js");require("@vft/utils");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");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");const x={class:"vft-sub-menu"},h=e.defineComponent({__name:"context-menu",props:{axis:null,styles:null,width:null,items:null},setup(u){let c=e.ref();const d=e.computed(()=>{const{x:r,y:i}=u.axis||{x:0,y:0},t=(u.items||[]).length*40,l=u.width||0,s=document.body,a=s.clientWidth<r+l?r-l:r,f=s.clientHeight<i+t?i-t:i;return{zIndex:3e3,...u.styles,position:"fixed",width:`${u.width}px`,left:`${a+1}px`,top:`${f+1}px`}});let n=e.ref(!1);o.useTimeoutFn(()=>{n.value=!0},0),o.useClickAway(c,()=>{n.value=!1},{listenerOptions:{capture:!0}}),o.useEventListener(window,"scroll",()=>{n.value=!1},{capture:!0}),o.useEventListener(window,"drag",()=>{n.value=!1},{capture:!0});function q(r){var i;r!=null&&r.disabled||((i=r.handler)==null||i.call(r),n.value=!1)}return(r,i)=>(e.openBlock(),e.createBlock(e.Transition,{name:"vft-zoom-in-top"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{ref_key:"contextMenuRef",ref:c,style:e.normalizeStyle(e.unref(d)),onClick:i[0]||(i[0]=e.withModifiers(()=>{},["stop"])),class:"vft-menu"},[e.createElementVNode("div",x,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.items,(t,l)=>(e.openBlock(),e.createBlock(e.unref(v.VftMenuItem),{onClick:s=>q(t),index:l+t.text,title:t.text,divider:t.divider,disabled:t.disabled,icon:t.iconCfg,isAloneUse:"",key:l},null,8,["onClick","index","title","divider","disabled","icon"]))),128))])],4),[[e.vShow,e.unref(n)]])]),_:1}))}});exports.default=h;
|
|
2
2
|
//# sourceMappingURL=context-menu.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-menu.vue2.js","sources":["../../../../../packages/components/context-menu/context-menu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useClickAway, useEventListener, useTimeoutFn } from '@vft/use';\nimport { computed, ref, type CSSProperties } from 'vue';\nimport type { Axis, ContextMenuItem } from './types';\nimport { VftMenuItem as MenuItem } from '@vft-ui/components';\n\ninterface Props {\n axis?: Axis;\n styles?: CSSProperties;\n width?: number;\n items?: ContextMenuItem[];\n}\n\ndefineProps({\n \"axis\": null,\n \"styles\": null,\n \"width\": null,\n \"items\": null\n})\n\nlet contextMenuRef = ref();\n\nconst getStyle = computed((): CSSProperties => {\n const { x, y } = __props.axis || { x: 0, y: 0 };\n const menuHeight = (__props.items || []).length * 40;\n const menuWidth = __props.width || 0;\n const body = document.body;\n\n const left = body.clientWidth < x + menuWidth ? x - menuWidth : x;\n const top = body.clientHeight < y + menuHeight ? y - menuHeight : y;\n return {\n zIndex: 3000,\n ...__props.styles,\n position: 'fixed',\n width: `${__props.width}px`,\n left: `${left + 1}px`,\n top: `${top + 1}px`\n };\n});\n\nlet show = ref(false);\n\nuseTimeoutFn(() => {\n show.value = true;\n}, 0);\n\nuseClickAway(contextMenuRef, () => {\n show.value = false;\n}, {\n listenerOptions: {\n capture: true\n }\n});\n\nuseEventListener(window, 'scroll', () => {\n show.value = false;\n}, {\n capture: true\n});\n\nuseEventListener(window, 'drag', () => {\n show.value = false;\n}, {\n capture: true\n});\n\nfunction handleClick (item: ContextMenuItem) {\n if (!item?.disabled) {\n item.handler?.();\n show.value = false;\n }\n}\n</script>\n\n<template>\n <transition name=\"vft-zoom-in-top\">\n <div ref=\"contextMenuRef\" v-show=\"show\" :style=\"getStyle\" @click.stop class=\"vft-menu\">\n <div class=\"vft-sub-menu\">\n <menu-item v-for=\"(item, index) in items\"\n @click=\"handleClick(item)\"\n :index=\"index + item.text\"\n :title=\"item.text\"\n :divider=\"item.divider\"\n :disabled=\"item.disabled\"\n :icon=\"item.iconCfg\"\n isAloneUse\n :key=\"index\" />\n </div>\n </div>\n </transition>\n</template>\n\n"],"names":["contextMenuRef","ref","getStyle","computed","x","y","__props","menuHeight","menuWidth","body","left","top","show","useTimeoutFn","useClickAway","useEventListener","handleClick","item","_a"],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-menu.vue2.js","sources":["../../../../../packages/components/context-menu/context-menu.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useClickAway, useEventListener, useTimeoutFn } from '@vft/use';\nimport { computed, ref, type CSSProperties } from 'vue';\nimport type { Axis, ContextMenuItem } from './types';\nimport { VftMenuItem as MenuItem } from '@vft-ui/components';\n\ninterface Props {\n axis?: Axis;\n styles?: CSSProperties;\n width?: number;\n items?: ContextMenuItem[];\n}\n\ndefineProps({\n \"axis\": null,\n \"styles\": null,\n \"width\": null,\n \"items\": null\n})\n\nlet contextMenuRef = ref();\n\nconst getStyle = computed((): CSSProperties => {\n const { x, y } = __props.axis || { x: 0, y: 0 };\n const menuHeight = (__props.items || []).length * 40;\n const menuWidth = __props.width || 0;\n const body = document.body;\n\n const left = body.clientWidth < x + menuWidth ? x - menuWidth : x;\n const top = body.clientHeight < y + menuHeight ? y - menuHeight : y;\n return {\n zIndex: 3000,\n ...__props.styles,\n position: 'fixed',\n width: `${__props.width}px`,\n left: `${left + 1}px`,\n top: `${top + 1}px`\n };\n});\n\nlet show = ref(false);\n\nuseTimeoutFn(() => {\n show.value = true;\n}, 0);\n\nuseClickAway(contextMenuRef, () => {\n show.value = false;\n}, {\n listenerOptions: {\n capture: true\n }\n});\n\nuseEventListener(window, 'scroll', () => {\n show.value = false;\n}, {\n capture: true\n});\n\nuseEventListener(window, 'drag', () => {\n show.value = false;\n}, {\n capture: true\n});\n\nfunction handleClick (item: ContextMenuItem) {\n if (!item?.disabled) {\n item.handler?.();\n show.value = false;\n }\n}\n</script>\n\n<template>\n <transition name=\"vft-zoom-in-top\">\n <div ref=\"contextMenuRef\" v-show=\"show\" :style=\"getStyle\" @click.stop class=\"vft-menu\">\n <div class=\"vft-sub-menu\">\n <menu-item v-for=\"(item, index) in items\"\n @click=\"handleClick(item)\"\n :index=\"index + item.text\"\n :title=\"item.text\"\n :divider=\"item.divider\"\n :disabled=\"item.disabled\"\n :icon=\"item.iconCfg\"\n isAloneUse\n :key=\"index\" />\n </div>\n </div>\n </transition>\n</template>\n\n"],"names":["contextMenuRef","ref","getStyle","computed","x","y","__props","menuHeight","menuWidth","body","left","top","show","useTimeoutFn","useClickAway","useEventListener","handleClick","item","_a"],"mappings":"wjDAoBA,IAAIA,EAAiBC,EAAAA,MAEf,MAAAC,EAAWC,EAAAA,SAAS,IAAqB,CACvC,KAAA,CAAE,EAAAC,EAAG,EAAAC,CAAM,EAAAC,EAAQ,MAAQ,CAAE,EAAG,EAAG,EAAG,GACtCC,GAAcD,EAAQ,OAAS,IAAI,OAAS,GAC5CE,EAAYF,EAAQ,OAAS,EAC7BG,EAAO,SAAS,KAEhBC,EAAOD,EAAK,YAAcL,EAAII,EAAYJ,EAAII,EAAYJ,EAC1DO,EAAMF,EAAK,aAAeJ,EAAIE,EAAaF,EAAIE,EAAaF,EAC3D,MAAA,CACL,OAAQ,IACR,GAAGC,EAAQ,OACX,SAAU,QACV,MAAO,GAAGA,EAAQ,UAClB,KAAM,GAAGI,EAAO,MAChB,IAAK,GAAGC,EAAM,KAAA,CAChB,CACD,EAEG,IAAAC,EAAOX,MAAI,EAAK,EAEpBY,EAAAA,aAAa,IAAM,CACjBD,EAAK,MAAQ,IACZ,CAAC,EAEJE,EAAA,aAAad,EAAgB,IAAM,CACjCY,EAAK,MAAQ,EAAA,EACZ,CACD,gBAAiB,CACf,QAAS,EACX,CAAA,CACD,EAEgBG,mBAAA,OAAQ,SAAU,IAAM,CACvCH,EAAK,MAAQ,EAAA,EACZ,CACD,QAAS,EAAA,CACV,EAEgBG,mBAAA,OAAQ,OAAQ,IAAM,CACrCH,EAAK,MAAQ,EAAA,EACZ,CACD,QAAS,EAAA,CACV,EAED,SAASI,EAAaC,EAAuB,OACtCA,GAAA,MAAAA,EAAM,YACTC,EAAAD,EAAK,UAAL,MAAAC,EAAA,KAAAD,GACAL,EAAK,MAAQ,GAEjB"}
|
package/lib/components/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./divider/index.js"),V=require("./icon/index.js"),d=require("./avatar/index.js"),p=require("./empty/index.js"),g=require("./result/index.js"),x=require("./exception/index.js"),i=require("./tabs/index.js"),l=require("./popper/index.js"),q=require("./collapse-transition/index.js"),$=require("./tooltip/index.js"),m=require("./popover/index.js"),e=require("./menu/index.js"),o=require("./context-menu/createContextMenu.js"),C=require("./context-menu/useContextMenu.js"),T=require("./multiple-tabs/index.js"),v=require("./header-layout/index.js"),y=require("./footer-layout/index.js"),b=require("./iframe-layout/index.js"),M=require("./router-view-content/index.js"),P=require("./logo/index.js"),_=require("./back-top/index.js"),L=require("./config-provider/index.js"),r=require("./descriptions/index.js"),D=require("./full-screen/index.js"),I=require("./icon-text/index.js"),S=require("./image/index.js"),E=require("./input/index.js"),G=require("./link/index.js"),w=require("./pagination/index.js"),K=require("./tag/index.js"),R=require("./side-menu/index.js"),k=require("./qrcode/index.js"),A=require("./overlay/index.js"),F=require("./clamp/index.js"),O=require("./clamp-toggle/index.js"),j=require("./page-wrapper/index.js"),B=require("./message/index.js"),H=require("./loading/index.js"),Q=require("./empty/constants.js"),W=require("./tabs/types.js"),h=require("./popper/arrow.vue2.js"),z=require("./popper/trigger.vue2.js"),J=require("./popper/content.vue2.js"),N=require("./multiple-tabs/use/use-tab-dropdown.js"),s=require("./multiple-tabs/use/use-multiple-tabs.js"),u=require("./config-provider/constants.js"),t=require("./config-provider/hooks/use-global-config.js"),U=require("./pagination/pagination.js"),a=require("./pagination/usePagination.js"),f=require("./message/types.js"),n=require("./loading/directive.js"),X=require("./loading/service.js");exports.VftDivider=c.VftDivider;exports.VftIcon=V.VftIcon;exports.VftAvatar=d.VftAvatar;exports.VftEmpty=p.VftEmpty;exports.VftResult=g.VftResult;exports.VftException=x.VftException;exports.VftTabPane=i.VftTabPane;exports.VftTabs=i.VftTabs;exports.VftPopper=l.VftPopper;exports.VftCollapseTransition=q.VftCollapseTransition;exports.VftTooltip=$.VftTooltip;exports.VftPopover=m.VftPopover;exports.VftMenu=e.VftMenu;exports.VftMenuItem=e.VftMenuItem;exports.VftMenuItemGroup=e.VftMenuItemGroup;exports.VftSubMenu=e.VftSubMenu;exports.createContextMenu=o.createContextMenu;exports.destroyContextMenu=o.destroyContextMenu;exports.useContextMenu=C.useContextMenu;exports.VftMultipleTabs=T.VftMultipleTabs;exports.VftHeaderLayout=v.VftHeaderLayout;exports.VftFooterLayout=y.VftFooterLayout;exports.VftIframeLayout=b.VftIframeLayout;exports.VftRouterViewContent=M.VftRouterViewContent;exports.VftLogo=P.VftLogo;exports.VftBackTop=_.VftBackTop;exports.VftConfigProvider=L.VftConfigProvider;exports.VftDescriptions=r.VftDescriptions;exports.VftDescriptionsItem=r.VftDescriptionsItem;exports.VftFullScreen=D.VftFullScreen;exports.VftIconText=I.VftIconText;exports.VftImage=S.VftImage;exports.VftInput=E.VftInput;exports.VftLink=G.VftLink;exports.VftPagination=w.VftPagination;exports.VftTag=K.VftTag;exports.VftSideMenu=R.VftSideMenu;exports.VftQrcode=k.VftQrcode;exports.VftOverlay=A.VftOverlay;exports.VftClamp=F.VftClamp;exports.VftClampToggle=O.VftClampToggle;exports.VftPageWrapper=j.VftPageWrapper;exports.VftMessage=B.VftMessage;exports.VftLoading=H.VftLoading;exports.EmptyEnum=Q.EmptyEnum;exports.TabsRootContextKey=W.TabsRootContextKey;exports.VftPopperArrow=h.default;exports.VftPopperTrigger=z.default;exports.VftPopperContent=J.default;exports.useTabDropdown=N.useTabDropdown;exports.initAffixTabs=s.initAffixTabs;exports.useTabsDrag=s.useTabsDrag;exports.configProviderContextKey=u.configProviderContextKey;exports.messageConfig=u.messageConfig;exports.provideGlobalConfig=t.provideGlobalConfig;exports.useGlobalComponentSettings=t.useGlobalComponentSettings;exports.useGlobalConfig=t.useGlobalConfig;exports.paginationEmits=U.paginationEmits;exports.elPaginationKey=a.elPaginationKey;exports.usePagination=a.usePagination;exports.messageDefaults=f.messageDefaults;exports.messageTypes=f.messageTypes;exports.VftLoadingDirective=n.vLoading;exports.createLoadingDirective=n.createLoadingDirective;exports.vLoading=n.vLoading;exports.VftLoadingService=X.Loading;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Directive, DirectiveBinding, UnwrapRef } from 'vue';
|
|
2
|
+
import type { LoadingOptions } from './types';
|
|
3
|
+
import type { LoadingInstance } from './loading';
|
|
4
|
+
declare const INSTANCE_KEY: unique symbol;
|
|
5
|
+
export type LoadingBinding = boolean | UnwrapRef<LoadingOptions>;
|
|
6
|
+
export interface VriLoading extends HTMLElement {
|
|
7
|
+
[INSTANCE_KEY]?: {
|
|
8
|
+
instance: LoadingInstance;
|
|
9
|
+
options: LoadingOptions;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare const vLoading: Directive<VriLoading, LoadingBinding>;
|
|
13
|
+
export declare function createLoadingDirective(defaultLoadingCfg?: UnwrapRef<LoadingOptions>): {
|
|
14
|
+
mounted(el: VriLoading, binding: DirectiveBinding<LoadingBinding>): void;
|
|
15
|
+
updated(el: VriLoading, binding: DirectiveBinding<LoadingBinding>): void;
|
|
16
|
+
unmounted(el: VriLoading): void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("vue"),r=require("@vft/utils"),y=require("./service.js"),u=Symbol("VriLoading"),i=(c,s)=>{const e=s.instance,o=l=>r.isObject(s.value)?s.value[l]:void 0,n=l=>{const a=r.isString(l)&&(e==null?void 0:e[l])||l;return a&&m.ref(a)},t=l=>n(o(l)),v=o("fullscreen")??s.modifiers.fullscreen,f={text:t("text"),svg:t("svg"),svgViewBox:t("svgViewBox"),spinner:t("spinner"),visible:t("visible"),background:t("background"),customClass:t("customClass"),rotate:t("rotate"),img:t("img"),fullscreen:v,target:o("target")??(v?void 0:c),body:o("body")??s.modifiers.body,lock:o("lock")??s.modifiers.lock};c[u]={options:f,instance:y.Loading(f)}},V=(c,s)=>{for(const e of Object.keys(s))m.isRef(s[e])&&(s[e].value=c[e])},k=p();function p(c){return{mounted(s,e){e.value.visible===!1?e.value=void 0:e.value={...c,...e.value},e.value&&i(s,e)},updated(s,e){const o=s[u];e.oldValue!==e.value&&(e.value&&!e.oldValue?(e.value={...c,...e.value},i(s,e)):e.value&&e.oldValue?r.isObject(e.value)&&(e.value={...c,...e.value},V(e.value,o.options)):o==null||o.instance.close())},unmounted(s){var e;(e=s[u])==null||e.instance.close()}}}exports.createLoadingDirective=p;exports.vLoading=k;
|
|
2
|
+
//# sourceMappingURL=directive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directive.js","sources":["../../../../../packages/components/loading/directive.ts"],"sourcesContent":["import { isRef, ref } from 'vue';\nimport { isObject, isString } from '@vft/utils';\nimport { Loading } from './service';\nimport type { Directive, DirectiveBinding, UnwrapRef } from 'vue';\nimport type { LoadingOptions } from './types';\nimport type { LoadingInstance } from './loading';\n\nconst INSTANCE_KEY = Symbol('VriLoading');\n\nexport type LoadingBinding = boolean | UnwrapRef<LoadingOptions>;\n\nexport interface VriLoading extends HTMLElement {\n [INSTANCE_KEY]?: {\n instance: LoadingInstance;\n options: LoadingOptions;\n };\n}\n\nconst createInstance = (el: VriLoading, binding: DirectiveBinding<LoadingBinding>) => {\n const vm = binding.instance;\n\n // @ts-ignore\n const getBindingProp = <K extends keyof LoadingOptions>(key: K): LoadingOptions[K] => (isObject(binding.value) ? binding.value[key] : undefined);\n\n const resolveExpression = (key: any) => {\n // @ts-ignore\n const data = (isString(key) && vm?.[key]) || key;\n if (data) return ref(data);\n else return data;\n };\n\n const getProp = <K extends keyof LoadingOptions>(name: K) => resolveExpression(getBindingProp(name));\n\n const fullscreen = getBindingProp('fullscreen') ?? binding.modifiers.fullscreen;\n\n const options: LoadingOptions = {\n text: getProp('text'),\n svg: getProp('svg'),\n svgViewBox: getProp('svgViewBox'),\n spinner: getProp('spinner'),\n visible: getProp('visible'),\n background: getProp('background'),\n customClass: getProp('customClass'),\n rotate: getProp('rotate'),\n img: getProp('img'),\n fullscreen,\n target: getBindingProp('target') ?? (fullscreen ? undefined : el),\n body: getBindingProp('body') ?? binding.modifiers.body,\n lock: getBindingProp('lock') ?? binding.modifiers.lock\n };\n\n el[INSTANCE_KEY] = {\n options,\n instance: Loading(options)\n };\n};\n\nconst updateOptions = (newOptions: UnwrapRef<LoadingOptions>, originalOptions: LoadingOptions) => {\n for (const key of Object.keys(originalOptions)) {\n // @ts-ignore\n if (isRef(originalOptions[key])) originalOptions[key].value = newOptions[key];\n }\n};\n\nexport const vLoading: Directive<VriLoading, LoadingBinding> = createLoadingDirective();\n\nexport function createLoadingDirective(defaultLoadingCfg?: UnwrapRef<LoadingOptions>) {\n return {\n mounted(el: VriLoading, binding: DirectiveBinding<LoadingBinding>) {\n // @ts-ignore\n if (binding.value.visible === false) {\n binding.value = undefined;\n } else {\n binding.value = { ...defaultLoadingCfg, ...binding.value };\n }\n\n if (binding.value) {\n createInstance(el, binding);\n }\n },\n updated(el: VriLoading, binding: DirectiveBinding<LoadingBinding>) {\n const instance = el[INSTANCE_KEY];\n if (binding.oldValue !== binding.value) {\n if (binding.value && !binding.oldValue) {\n // @ts-ignore\n binding.value = { ...defaultLoadingCfg, ...binding.value };\n\n createInstance(el, binding);\n } else if (binding.value && binding.oldValue) {\n if (isObject(binding.value)) {\n binding.value = { ...defaultLoadingCfg, ...binding.value };\n updateOptions(binding.value, instance!.options);\n }\n } else {\n instance?.instance.close();\n }\n }\n },\n unmounted(el: VriLoading) {\n el[INSTANCE_KEY]?.instance.close();\n }\n };\n}\n"],"names":["INSTANCE_KEY","createInstance","el","binding","vm","getBindingProp","key","isObject","resolveExpression","data","isString","ref","getProp","name","fullscreen","options","Loading","updateOptions","newOptions","originalOptions","isRef","vLoading","createLoadingDirective","defaultLoadingCfg","instance","_a"],"mappings":"yJAOMA,EAAe,OAAO,YAAY,EAWlCC,EAAiB,CAACC,EAAgBC,IAA8C,CACpF,MAAMC,EAAKD,EAAQ,SAGbE,EAAkDC,GAA+BC,EAAAA,SAASJ,EAAQ,KAAK,EAAIA,EAAQ,MAAMG,CAAG,EAAI,OAEhIE,EAAqBF,GAAa,CAEtC,MAAMG,EAAQC,EAAAA,SAASJ,CAAG,IAAKF,GAAA,YAAAA,EAAKE,KAASA,EACzC,OAAAG,GAAaE,EAAAA,IAAIF,CAAI,CACb,EAGRG,EAA2CC,GAAYL,EAAkBH,EAAeQ,CAAI,CAAC,EAE7FC,EAAaT,EAAe,YAAY,GAAKF,EAAQ,UAAU,WAE/DY,EAA0B,CAC9B,KAAMH,EAAQ,MAAM,EACpB,IAAKA,EAAQ,KAAK,EAClB,WAAYA,EAAQ,YAAY,EAChC,QAASA,EAAQ,SAAS,EAC1B,QAASA,EAAQ,SAAS,EAC1B,WAAYA,EAAQ,YAAY,EAChC,YAAaA,EAAQ,aAAa,EAClC,OAAQA,EAAQ,QAAQ,EACxB,IAAKA,EAAQ,KAAK,EAClB,WAAAE,EACA,OAAQT,EAAe,QAAQ,IAAMS,EAAa,OAAYZ,GAC9D,KAAMG,EAAe,MAAM,GAAKF,EAAQ,UAAU,KAClD,KAAME,EAAe,MAAM,GAAKF,EAAQ,UAAU,IAAA,EAGpDD,EAAGF,CAAY,EAAI,CACjB,QAAAe,EACA,SAAUC,UAAQD,CAAO,CAAA,CAE7B,EAEME,EAAgB,CAACC,EAAuCC,IAAoC,CAChG,UAAWb,KAAO,OAAO,KAAKa,CAAe,EAEvCC,EAAA,MAAMD,EAAgBb,CAAG,CAAC,IAAGa,EAAgBb,CAAG,EAAE,MAAQY,EAAWZ,CAAG,EAEhF,EAEae,EAAkDC,EAAuB,EAE/E,SAASA,EAAuBC,EAA+C,CAC7E,MAAA,CACL,QAAQrB,EAAgBC,EAA2C,CAE7DA,EAAQ,MAAM,UAAY,GAC5BA,EAAQ,MAAQ,OAEhBA,EAAQ,MAAQ,CAAE,GAAGoB,EAAmB,GAAGpB,EAAQ,OAGjDA,EAAQ,OACVF,EAAeC,EAAIC,CAAO,CAE9B,EACA,QAAQD,EAAgBC,EAA2C,CAC3D,MAAAqB,EAAWtB,EAAGF,CAAY,EAC5BG,EAAQ,WAAaA,EAAQ,QAC3BA,EAAQ,OAAS,CAACA,EAAQ,UAE5BA,EAAQ,MAAQ,CAAE,GAAGoB,EAAmB,GAAGpB,EAAQ,OAEnDF,EAAeC,EAAIC,CAAO,GACjBA,EAAQ,OAASA,EAAQ,SAC9BI,EAAA,SAASJ,EAAQ,KAAK,IACxBA,EAAQ,MAAQ,CAAE,GAAGoB,EAAmB,GAAGpB,EAAQ,OACrCc,EAAAd,EAAQ,MAAOqB,EAAU,OAAO,GAGhDA,GAAA,MAAAA,EAAU,SAAS,QAGzB,EACA,UAAUtB,EAAgB,QACrBuB,EAAAvB,EAAAF,CAAY,IAAZ,MAAAyB,EAAe,SAAS,OAC7B,CAAA,CAEJ"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Loading } from './service';
|
|
2
|
+
import { vLoading } from './directive';
|
|
3
|
+
import type { App } from 'vue';
|
|
4
|
+
export declare const VftLoading: {
|
|
5
|
+
install(app: App): void;
|
|
6
|
+
directive: import("vue").Directive<import("./directive").VriLoading, import("./directive").LoadingBinding>;
|
|
7
|
+
service: (options?: Partial<Omit<import("./types").LoadingOptionsResolved, "target" | "parent"> & {
|
|
8
|
+
target: string | HTMLElement;
|
|
9
|
+
body: boolean;
|
|
10
|
+
}>) => {
|
|
11
|
+
setText: (text: string) => void;
|
|
12
|
+
removeVriLoadingChild: () => void;
|
|
13
|
+
close: () => void;
|
|
14
|
+
handleAfterLeave: () => void;
|
|
15
|
+
vm: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}>;
|
|
16
|
+
$el: HTMLElement;
|
|
17
|
+
originalPosition: import("vue").Ref<string>;
|
|
18
|
+
originalOverflow: import("vue").Ref<string>;
|
|
19
|
+
visible: import("vue").Ref<boolean>;
|
|
20
|
+
parent: import("vue").Ref<import("./types").LoadingParentElement>;
|
|
21
|
+
background: import("vue").Ref<string>;
|
|
22
|
+
svg: import("vue").Ref<string>;
|
|
23
|
+
svgViewBox: import("vue").Ref<string>;
|
|
24
|
+
spinner: import("vue").Ref<string | boolean>;
|
|
25
|
+
img: import("vue").Ref<string | boolean>;
|
|
26
|
+
text: import("vue").Ref<string>;
|
|
27
|
+
fullscreen: import("vue").Ref<boolean>;
|
|
28
|
+
rotate: import("vue").Ref<string | boolean>;
|
|
29
|
+
lock: import("vue").Ref<boolean>;
|
|
30
|
+
customClass: import("vue").Ref<string>;
|
|
31
|
+
target: import("vue").Ref<HTMLElement>;
|
|
32
|
+
beforeClose?: import("vue").Ref<(() => boolean) | undefined> | undefined;
|
|
33
|
+
closed?: import("vue").Ref<(() => void) | undefined> | undefined;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export default VftLoading;
|
|
37
|
+
export { vLoading, vLoading as VftLoadingDirective, Loading as VftLoadingService };
|
|
38
|
+
export * from './types';
|
|
39
|
+
export { createLoadingDirective } from './directive';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("./service.js"),e=require("./directive.js"),t={install(o){o.directive("loading",e.vLoading),o.config.globalProperties.$loading=i.Loading},directive:e.vLoading,service:i.Loading};exports.VftLoadingService=i.Loading;exports.VftLoadingDirective=e.vLoading;exports.createLoadingDirective=e.createLoadingDirective;exports.vLoading=e.vLoading;exports.VftLoading=t;exports.default=t;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/components/loading/index.ts"],"sourcesContent":["import { Loading } from './service';\nimport { vLoading } from './directive';\n\nimport type { App } from 'vue';\n\n// installer and everything in all\nexport const VftLoading = {\n\tinstall (app: App) {\n\t\tapp.directive('loading', vLoading);\n\t\tapp.config.globalProperties.$loading = Loading;\n\t},\n\tdirective: vLoading,\n\tservice: Loading,\n};\n\nexport default VftLoading;\nexport { vLoading, vLoading as VftLoadingDirective, Loading as VftLoadingService };\n\nexport * from './types';\nexport { createLoadingDirective } from './directive';\n"],"names":["VftLoading","app","vLoading","Loading"],"mappings":"wKAMaA,EAAa,CACzB,QAASC,EAAU,CACdA,EAAA,UAAU,UAAWC,EAAAA,QAAQ,EAC7BD,EAAA,OAAO,iBAAiB,SAAWE,EAAAA,OACxC,EACA,UAAWD,EAAA,SACX,QAASC,EAAA,OACV"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { LoadingOptionsResolved } from './types';
|
|
2
|
+
export declare function createLoadingComponent(options: LoadingOptionsResolved): {
|
|
3
|
+
setText: (text: string) => void;
|
|
4
|
+
removeVriLoadingChild: () => void;
|
|
5
|
+
close: () => void;
|
|
6
|
+
handleAfterLeave: () => void;
|
|
7
|
+
vm: import("vue").ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, import("vue").ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}>;
|
|
8
|
+
$el: HTMLElement;
|
|
9
|
+
originalPosition: import("vue").Ref<string>;
|
|
10
|
+
originalOverflow: import("vue").Ref<string>;
|
|
11
|
+
visible: import("vue").Ref<boolean>;
|
|
12
|
+
parent: import("vue").Ref<import("./types").LoadingParentElement>;
|
|
13
|
+
background: import("vue").Ref<string>;
|
|
14
|
+
svg: import("vue").Ref<string>;
|
|
15
|
+
svgViewBox: import("vue").Ref<string>;
|
|
16
|
+
spinner: import("vue").Ref<string | boolean>;
|
|
17
|
+
img: import("vue").Ref<string | boolean>;
|
|
18
|
+
text: import("vue").Ref<string>;
|
|
19
|
+
fullscreen: import("vue").Ref<boolean>;
|
|
20
|
+
rotate: import("vue").Ref<string | boolean>;
|
|
21
|
+
lock: import("vue").Ref<boolean>;
|
|
22
|
+
customClass: import("vue").Ref<string>;
|
|
23
|
+
target: import("vue").Ref<HTMLElement>;
|
|
24
|
+
beforeClose?: import("vue").Ref<(() => boolean) | undefined> | undefined;
|
|
25
|
+
closed?: import("vue").Ref<(() => void) | undefined> | undefined;
|
|
26
|
+
};
|
|
27
|
+
export type LoadingInstance = ReturnType<typeof createLoadingComponent>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=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");const g=require("@vft/utils");function p(i){let c;const a=L.useNamespace("loading"),o=r.ref(!1),t=r.reactive({...i,originalPosition:"",originalOverflow:"",visible:!1});function m(e){t.text=e}r.watch(()=>t.visible,e=>{e||d()});function f(){const e=t.parent;if(!e.vLoadingAddClassList){let n=e.getAttribute("loading-number");n=Number.parseInt(n)-1,n?e.setAttribute("loading-number",n.toString()):(g.removeClass(e,a.bm("parent","relative")),e.removeAttribute("loading-number")),g.removeClass(e,a.bm("parent","hidden"))}u(),v.unmount()}function u(){var e,n;(n=(e=s.$el)==null?void 0:e.parentNode)==null||n.removeChild(s.$el)}function d(){var e;i.beforeClose&&!i.beforeClose()||(o.value=!0,clearTimeout(c),c=window.setTimeout(l,400),t.visible=!1,(e=i.closed)==null||e.call(i))}function l(){if(!o.value)return;const e=t.parent;o.value=!1,e.vLoadingAddClassList=void 0,f()}const b={name:"VriLoading",setup(){return()=>{const e=t.spinner||t.svg,n=t.img,h=n?r.h("img",{class:["circular circular-img",t.rotate?"":"circular-no-rotate"],src:n}):r.h("svg",{class:"circular",viewBox:t.svgViewBox?t.svgViewBox:"0 0 50 50",...e?{innerHTML:e}:{}},[r.h("circle",{class:"path",cx:"25",cy:"25",r:"20",fill:"none"})]),C=t.text?r.h("p",{class:a.b("text")},[t.text]):void 0;return r.h(r.Transition,{name:a.b("fade"),onAfterLeave:l},{default:r.withCtx(()=>[r.withDirectives(r.createVNode("div",{style:{backgroundColor:t.background||""},class:[a.b("mask"),t.customClass,t.fullscreen?"is-fullscreen":""]},[r.h("div",{class:a.b("spinner")},[h,C])]),[[r.vShow,t.visible]])])})}}},v=r.createApp(b),s=v.mount(document.createElement("div"));return{...r.toRefs(t),setText:m,removeVriLoadingChild:u,close:d,handleAfterLeave:l,vm:s,get $el(){return s.$el}}}exports.createLoadingComponent=p;
|
|
2
|
+
//# sourceMappingURL=loading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loading.js","sources":["../../../../../packages/components/loading/loading.ts"],"sourcesContent":["import { Transition, createApp, createVNode, h, reactive, ref, watch, toRefs, vShow, withCtx, withDirectives } from 'vue';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { removeClass } from '@vft/utils';\nimport type { LoadingOptionsResolved } from './types';\n\nexport function createLoadingComponent(options: LoadingOptionsResolved) {\n let afterLeaveTimer: number;\n\n const ns = useNamespace('loading');\n const afterLeaveFlag = ref(false);\n const data = reactive({\n ...options,\n originalPosition: '',\n originalOverflow: '',\n visible: false\n });\n\n function setText(text: string) {\n data.text = text;\n }\n\n watch(\n () => data.visible,\n (val) => {\n if (!val) {\n close();\n }\n }\n );\n\n function destroySelf() {\n const target = data.parent;\n if (!target.vLoadingAddClassList) {\n let loadingNumber: number | string | null = target.getAttribute('loading-number');\n loadingNumber = Number.parseInt(loadingNumber as any) - 1;\n if (!loadingNumber) {\n // @ts-ignore\n removeClass(target, ns.bm('parent', 'relative'));\n target.removeAttribute('loading-number');\n } else {\n target.setAttribute('loading-number', loadingNumber.toString());\n }\n // @ts-ignore\n removeClass(target, ns.bm('parent', 'hidden'));\n }\n removeVriLoadingChild();\n loadingInstance.unmount();\n }\n\n function removeVriLoadingChild(): void {\n vm.$el?.parentNode?.removeChild(vm.$el);\n }\n\n function close() {\n if (options.beforeClose && !options.beforeClose()) return;\n\n afterLeaveFlag.value = true;\n clearTimeout(afterLeaveTimer);\n\n afterLeaveTimer = window.setTimeout(handleAfterLeave, 400);\n data.visible = false;\n\n options.closed?.();\n }\n\n function handleAfterLeave() {\n if (!afterLeaveFlag.value) return;\n const target = data.parent;\n afterLeaveFlag.value = false;\n target.vLoadingAddClassList = undefined;\n destroySelf();\n }\n\n const VriLoadingComponent = {\n name: 'VriLoading',\n setup() {\n return () => {\n const svg = data.spinner || data.svg;\n const img = data.img;\n const spinner = img\n ? h('img', {\n class: ['circular circular-img', data.rotate ? '' : 'circular-no-rotate'],\n src: img\n })\n : h(\n 'svg',\n {\n class: 'circular',\n viewBox: data.svgViewBox ? data.svgViewBox : '0 0 50 50',\n ...(svg ? { innerHTML: svg } : {})\n },\n [\n h('circle', {\n class: 'path',\n cx: '25',\n cy: '25',\n r: '20',\n fill: 'none'\n })\n ]\n );\n\n const spinnerText = data.text ? h('p', { class: ns.b('text') }, [data.text]) : undefined;\n\n return h(\n Transition,\n {\n name: ns.b('fade'),\n onAfterLeave: handleAfterLeave\n },\n {\n default: withCtx(() => [\n withDirectives(\n createVNode(\n 'div',\n {\n style: {\n backgroundColor: data.background || ''\n },\n class: [ns.b('mask'), data.customClass, data.fullscreen ? 'is-fullscreen' : '']\n },\n [\n h(\n 'div',\n {\n class: ns.b('spinner')\n },\n [spinner, spinnerText]\n )\n ]\n ),\n [[vShow, data.visible]]\n )\n ])\n }\n );\n };\n }\n };\n\n const loadingInstance = createApp(VriLoadingComponent);\n const vm = loadingInstance.mount(document.createElement('div'));\n\n return {\n ...toRefs(data),\n setText,\n removeVriLoadingChild,\n close,\n handleAfterLeave,\n vm,\n get $el(): HTMLElement {\n return vm.$el;\n }\n };\n}\n\nexport type LoadingInstance = ReturnType<typeof createLoadingComponent>;\n"],"names":["createLoadingComponent","options","afterLeaveTimer","ns","useNamespace","afterLeaveFlag","ref","data","reactive","setText","text","watch","val","close","destroySelf","target","loadingNumber","removeClass","removeVriLoadingChild","loadingInstance","_b","_a","vm","handleAfterLeave","VriLoadingComponent","svg","img","spinner","h","spinnerText","Transition","withCtx","withDirectives","createVNode","vShow","createApp","toRefs"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../hooks/use-namespace/index.js"),i=require("vue");require("@popperjs/core");require("lodash");const g=require("../../hooks/use-z-index/index.js"),f=require("@vueuse/core");require("@vue/shared");const l=require("@vft/utils"),m=require("./loading.js");let a;const b=function(t={}){if(!f.isClient)return;const e=y(t);if(e.fullscreen&&a)return a;const r=m.createLoadingComponent({...e,closed:()=>{var s;(s=e.closed)==null||s.call(e),e.fullscreen&&(a=void 0)}});v(e,e.parent,r),d(e,e.parent,r),e.parent.vLoadingAddClassList=()=>d(e,e.parent,r);let n=e.parent.getAttribute("loading-number");return n?n=`${Number.parseInt(n)+1}`:n="1",e.parent.setAttribute("loading-number",n),e.parent.appendChild(r.$el),i.nextTick(()=>r.visible.value=e.visible),e.fullscreen&&(a=r),r},y=t=>{let e;return l.isString(t.target)?e=document.querySelector(t.target)??document.body:e=t.target||document.body,{parent:e===document.body||t.body?document.body:e,background:i.unref(t.background)||"",svg:i.unref(t.svg)||"",svgViewBox:i.unref(t.svgViewBox)||"",spinner:i.unref(t.spinner)||!1,img:i.unref(t.img)||!1,text:i.unref(t.text)||"",rotate:t.rotate??!0,fullscreen:e===document.body&&(t.fullscreen??!0),lock:t.lock??!1,customClass:i.unref(t.customClass)||"",visible:t.visible??!0,target:e}},v=async(t,e,r)=>{const{nextZIndex:n}=g.useZIndex(),s={};if(t.fullscreen)r.originalPosition.value=l.getStyle(document.body,"position"),r.originalOverflow.value=l.getStyle(document.body,"overflow"),s.zIndex=n();else if(t.parent===document.body){r.originalPosition.value=l.getStyle(document.body,"position"),await i.nextTick();for(const o of["top","left"]){const u=o==="top"?"scrollTop":"scrollLeft";s[o]=`${t.target.getBoundingClientRect()[o]+document.body[u]+document.documentElement[u]-Number.parseInt(l.getStyle(document.body,`margin-${o}`),10)}px`}for(const o of["height","width"])s[o]=`${t.target.getBoundingClientRect()[o]}px`}else r.originalPosition.value=l.getStyle(e,"position");for(const[o,u]of Object.entries(s))r.$el.style[o]=u},d=(t,e,r)=>{const n=c.useNamespace("loading");["absolute","fixed","sticky"].includes(r.originalPosition.value)?l.removeClass(e,n.bm("parent","relative")):l.addClass(e,n.bm("parent","relative")),t.fullscreen&&t.lock?l.addClass(e,n.bm("parent","hidden")):l.removeClass(e,n.bm("parent","hidden"))};exports.Loading=b;
|
|
2
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sources":["../../../../../packages/components/loading/service.ts"],"sourcesContent":["import { useNamespace, useZIndex } from '@vft-ui/hooks';\nimport { addClass, getStyle, isString, removeClass } from '@vft/utils';\nimport { isClient } from '@vueuse/core';\nimport type { CSSProperties } from 'vue';\nimport { nextTick, unref } from 'vue';\nimport type { LoadingInstance } from './loading';\nimport { createLoadingComponent } from './loading';\nimport type { LoadingOptions, LoadingOptionsResolved } from './types';\n\nlet fullscreenInstance: LoadingInstance | undefined = undefined;\n\nexport const Loading = function (options: LoadingOptions = {}): LoadingInstance {\n if (!isClient) return undefined as any;\n\n const resolved = resolveOptions(options);\n\n if (resolved.fullscreen && fullscreenInstance) {\n return fullscreenInstance;\n }\n\n const instance = createLoadingComponent({\n ...resolved,\n closed: () => {\n resolved.closed?.();\n if (resolved.fullscreen) fullscreenInstance = undefined;\n }\n });\n\n addStyle(resolved, resolved.parent, instance);\n addClassList(resolved, resolved.parent, instance);\n\n resolved.parent.vLoadingAddClassList = () => addClassList(resolved, resolved.parent, instance);\n\n let loadingNumber: string | null = resolved.parent.getAttribute('loading-number');\n if (!loadingNumber) {\n loadingNumber = '1';\n } else {\n loadingNumber = `${Number.parseInt(loadingNumber) + 1}`;\n }\n resolved.parent.setAttribute('loading-number', loadingNumber);\n\n resolved.parent.appendChild(instance.$el);\n\n // @ts-ignore\n nextTick(() => (instance.visible.value = resolved.visible));\n\n if (resolved.fullscreen) {\n fullscreenInstance = instance;\n }\n return instance;\n};\n\nconst resolveOptions = (options: LoadingOptions): LoadingOptionsResolved => {\n let target: HTMLElement;\n if (isString(options.target)) {\n target = document.querySelector<HTMLElement>(options.target) ?? document.body;\n } else {\n target = options.target || document.body;\n }\n return {\n parent: target === document.body || options.body ? document.body : target,\n background: unref(options.background) || '',\n svg: unref(options.svg) || '',\n svgViewBox: unref(options.svgViewBox) || '',\n spinner: unref(options.spinner) || false,\n img: unref(options.img) || false,\n text: unref(options.text) || '',\n rotate: options.rotate ?? true,\n fullscreen: target === document.body && (options.fullscreen ?? true),\n lock: options.lock ?? false,\n customClass: unref(options.customClass) || '',\n visible: options.visible ?? true,\n target\n };\n};\n\nconst addStyle = async (options: LoadingOptionsResolved, parent: HTMLElement, instance: LoadingInstance) => {\n const { nextZIndex } = useZIndex();\n\n const maskStyle: Record<string, any> = {};\n if (options.fullscreen) {\n instance.originalPosition.value = getStyle(document.body, 'position');\n instance.originalOverflow.value = getStyle(document.body, 'overflow');\n maskStyle.zIndex = nextZIndex();\n } else if (options.parent === document.body) {\n instance.originalPosition.value = getStyle(document.body, 'position');\n /**\n * await dom render when visible is true in init,\n * because some component's height maybe 0.\n * e.g. el-table.\n */\n await nextTick();\n for (const property of ['top', 'left']) {\n const scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';\n maskStyle[property] = `${\n // @ts-ignore\n (options.target as HTMLElement).getBoundingClientRect()[property] +\n document.body[scroll] +\n document.documentElement[scroll] -\n Number.parseInt(getStyle(document.body, `margin-${property}` as keyof CSSProperties), 10)\n }px`;\n }\n for (const property of ['height', 'width']) {\n // @ts-ignore\n maskStyle[property] = `${(options.target as HTMLElement).getBoundingClientRect()[property]}px`;\n }\n } else {\n instance.originalPosition.value = getStyle(parent, 'position');\n }\n for (const [key, value] of Object.entries(maskStyle)) {\n // @ts-ignore\n instance.$el.style[key] = value;\n }\n};\n\nconst addClassList = (options: LoadingOptions, parent: HTMLElement, instance: LoadingInstance) => {\n const ns = useNamespace('loading');\n\n if (!['absolute', 'fixed', 'sticky'].includes(instance.originalPosition.value)) {\n addClass(parent, ns.bm('parent', 'relative'));\n } else {\n removeClass(parent, ns.bm('parent', 'relative'));\n }\n if (options.fullscreen && options.lock) {\n addClass(parent, ns.bm('parent', 'hidden'));\n } else {\n removeClass(parent, ns.bm('parent', 'hidden'));\n }\n};\n"],"names":["fullscreenInstance","Loading","options","isClient","resolved","resolveOptions","instance","createLoadingComponent","_a","addStyle","addClassList","loadingNumber","nextTick","target","isString","unref","parent","nextZIndex","useZIndex","maskStyle","getStyle","property","scroll","key","value","ns","useNamespace","removeClass","addClass"],"mappings":"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"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MaybeRef } from '@vueuse/core';
|
|
2
|
+
export type LoadingOptionsResolved = {
|
|
3
|
+
parent: LoadingParentElement;
|
|
4
|
+
background: MaybeRef<string>;
|
|
5
|
+
svg: MaybeRef<string>;
|
|
6
|
+
svgViewBox: MaybeRef<string>;
|
|
7
|
+
spinner: MaybeRef<boolean | string>;
|
|
8
|
+
img: MaybeRef<boolean | string>;
|
|
9
|
+
text: MaybeRef<string>;
|
|
10
|
+
fullscreen: boolean;
|
|
11
|
+
rotate: MaybeRef<boolean | string>;
|
|
12
|
+
lock: boolean;
|
|
13
|
+
customClass: MaybeRef<string>;
|
|
14
|
+
visible: MaybeRef<boolean>;
|
|
15
|
+
target: HTMLElement;
|
|
16
|
+
beforeClose?: () => boolean;
|
|
17
|
+
closed?: () => void;
|
|
18
|
+
};
|
|
19
|
+
export type LoadingOptions = Partial<Omit<LoadingOptionsResolved, 'parent' | 'target'> & {
|
|
20
|
+
target: HTMLElement | string;
|
|
21
|
+
body: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
export interface LoadingParentElement extends HTMLElement {
|
|
24
|
+
vLoadingAddClassList?: () => void;
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.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"),o=require("@vft/utils");require("@vue/shared");const x=require("../../utils/error.js"),c=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");const A=require("./use-menu.js"),y=require("../divider/index.js"),U=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");const $=require("../tooltip/index.js");require("../popover/index.js");require("./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 E=["title"],a=c.useNamespace("menu-item"),I=e.defineComponent({name:a.b()}),S=e.defineComponent({...I,props:{index:null,route:null,disabled:{type:Boolean},icon:null,title:null,isAloneUse:{type:Boolean},divider:{type:Boolean},className:null,reverse:{type:Boolean}},emits:["click"],setup(
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),o=require("@vft/utils");require("@vue/shared");const x=require("../../utils/error.js"),c=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");const A=require("./use-menu.js"),y=require("../divider/index.js"),U=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");const $=require("../tooltip/index.js");require("../popover/index.js");require("./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 E=["title"],a=c.useNamespace("menu-item"),I=e.defineComponent({name:a.b()}),S=e.defineComponent({...I,props:{index:null,route:null,disabled:{type:Boolean},icon:null,title:null,isAloneUse:{type:Boolean},divider:{type:Boolean},className:null,reverse:{type:Boolean}},emits:["click"],setup(r,{emit:C}){const s=e.getCurrentInstance(),V=c.useNamespace("menu"),l=c.useNamespace("menu-item"),n=r.isAloneUse?null:e.inject("rootMenu");!n&&!r.isAloneUse&&x.throwError(a.b(),"can not inject root menu");const{parentMenu:d,indexPath:m}=A.default(s,e.computed(()=>r.index)),t=r.isAloneUse?null:e.inject(`subMenu:${d.value.uid}`);!t&&!r.isAloneUse&&x.throwError(a.b(),"can not inject sub menu");const q=e.computed(()=>r.index===(n==null?void 0:n.activeIndex)),i=e.reactive({index:r.index,indexPath:m,active:q}),h=()=>{r.disabled||(n==null||n.handleMenuItemClick({index:r.index,indexPath:m.value,route:r.route}),C("click",i))},f=e.computed(()=>o.singleAttrToObj(r.icon,"icon")),k=e.computed(()=>o.renderTNode(s,"title"));return e.onMounted(()=>{r.isAloneUse||(t==null||t.addSubMenu(i),n==null||n.addMenuItem(i))}),e.onBeforeUnmount(()=>{r.isAloneUse||(t==null||t.removeSubMenu(i),n==null||n.removeMenuItem(i))}),(u,j)=>{var v,B,b,N,g;return e.openBlock(),e.createElementBlock(e.Fragment,null,[r.reverse&&r.divider?(e.openBlock(),e.createBlock(e.unref(y.VftDivider),{key:0,marginY:"0"})):e.createCommentVNode("",!0),e.createElementVNode("li",{class:e.normalizeClass([r.className,e.unref(l).b(),e.unref(l).is("active",r.isAloneUse?!1:e.unref(q)),e.unref(l).is("disabled",r.disabled)]),role:"menuitem",tabindex:"-1",onClick:h},[((B=(v=e.unref(d))==null?void 0:v.type)==null?void 0:B.name)==="vft-menu"&&((b=e.unref(n))!=null&&b.props.collapse)&&u.$slots.title?(e.openBlock(),e.createBlock(e.unref($.VftTooltip),{key:0,placement:"right","fallback-placements":["left"],persistent:""},{content:e.withCtx(()=>[e.renderSlot(u.$slots,"title")]),default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(V).be("tooltip","trigger"))},[e.renderSlot(u.$slots,"default")],2)]),_:3})):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[(N=u.$slots)!=null&&N.default?e.renderSlot(u.$slots,"default",{key:0}):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[(g=e.unref(f))!=null&&g.icon?(e.openBlock(),e.createBlock(e.unref(U.VftIcon),e.normalizeProps(e.mergeProps({key:0},e.unref(f))),null,16)):e.createCommentVNode("",!0),e.createElementVNode("span",{title:e.unref(k)},[e.createVNode(e.unref(o.VNode),{content:e.unref(k)},null,8,["content"])],8,E)],64))],64))],2),!r.reverse&&r.divider?(e.openBlock(),e.createBlock(e.unref(y.VftDivider),{key:1,marginY:"0"})):e.createCommentVNode("",!0)],64)}}});exports.default=S;
|
|
2
2
|
//# sourceMappingURL=menu-item.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.vue2.js","sources":["../../../../../packages/components/menu/menu-item.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('menu-item')\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 { renderTNode, singleAttrToObj, VNode } from '@vft/utils';\nimport { computed, getCurrentInstance, inject, onBeforeUnmount, onMounted, reactive } from 'vue';\nimport { throwError } from '@vft-ui/utils';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type RouteLocationRaw } from 'vue-router';\nimport useMenu from './use-menu';\nimport { VftIcon as Icon, type IconProps, VftTooltip as Tooltip, VftDivider } from '@vft-ui/components';\n\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types';\n\ninterface Props {\n /** 唯一标志 */\n index?: string;\n /** Vue Router 路径对象 */\n route?: RouteLocationRaw;\n /** 是否禁用 */\n disabled?: boolean;\n icon?: IconProps;\n title?: string;\n isAloneUse?: boolean;\n divider?: boolean;\n className?: string\n reverse?: boolean\n}\n\ndefineProps({\n \"index\": null,\n \"route\": null,\n \"disabled\": { type: Boolean, },\n \"icon\": null,\n \"title\": null,\n \"isAloneUse\": { type: Boolean, },\n \"divider\": { type: Boolean, },\n \"className\": null,\n \"reverse\": { type: Boolean, }\n})\n\n\n\nconst emit = defineEmits(['click']);\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst nsMenu = useNamespace('menu');\n\nconst nsMenuItem = useNamespace('menu-item');\n\n// 获取来自 menu.vue 中注入的数据\nconst rootMenu = !__props.isAloneUse ? inject<MenuProvider>('rootMenu') : null;\nif (!rootMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject root menu');\n\n// indexPath:当前 menu-item 对应的 index 和 vft-sub-menu 的 index,parentMenu 为 vft-sub-menu 组件\nconst { parentMenu, indexPath } = useMenu(\n instance,\n computed(() => __props.index!)\n);\n\n// 注入来自 sub-menu 中的 provide 数据\nconst subMenu = !__props.isAloneUse ? inject<SubMenuProvider>(`subMenu:${parentMenu.value.uid}`) : null;\nif (!subMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject sub menu');\n\n// 当前是否为 active\nconst active = computed(() => __props.index === rootMenu?.activeIndex);\n\nconst item: MenuItemRegistered = reactive({\n index: __props.index!,\n indexPath,\n active\n});\n\n// 点击具体菜单项\nconst handleClick = () => {\n if (!__props.disabled) {\n rootMenu?.handleMenuItemClick({\n index: __props.index!,\n indexPath: indexPath.value,\n route: __props.route\n });\n emit('click', item);\n }\n};\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst title = computed(() => {\n return renderTNode(instance, 'title');\n});\n\nonMounted(() => {\n if (!__props.isAloneUse) {\n // 触发 sub-menu,vue 中的 addSubMenu\n subMenu?.addSubMenu(item);\n // 触发 menu.vue 中的 addMenuItem 更新 items\n rootMenu?.addMenuItem(item);\n }\n});\n\nonBeforeUnmount(() => {\n if (!__props.isAloneUse) {\n subMenu?.removeSubMenu(item);\n rootMenu?.removeMenuItem(item);\n }\n});\n</script>\n\n<template>\n <vft-divider v-if=\"reverse && divider\" marginY=\"0\" />\n <li :class=\"[className, nsMenuItem.b(), nsMenuItem.is('active', isAloneUse ? false : active), nsMenuItem.is('disabled', disabled)]\" role=\"menuitem\" tabindex=\"-1\" @click=\"handleClick\">\n <tooltip\n v-if=\"parentMenu?.type?.name === 'vft-menu' && rootMenu?.props.collapse && $slots.title\"\n placement=\"right\" :fallback-placements=\"['left']\" persistent>\n <template #content>\n <slot name=\"title\" />\n </template>\n <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n <slot />\n </div>\n </tooltip>\n <template v-else>\n <slot v-if=\"$slots?.default\"/>\n <template v-else>\n <Icon v-if=\"_icon?.icon\" v-bind=\"_icon\" />\n <span :title=\"title\"><v-node :content=\"title\" /></span>\n </template>\n </template>\n </li>\n <vft-divider v-if=\"!reverse && divider\" marginY=\"0\" />\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","nsMenu","nsMenuItem","rootMenu","__props","inject","throwError","parentMenu","indexPath","useMenu","computed","subMenu","active","item","reactive","handleClick","emit","_icon","singleAttrToObj","title","renderTNode","onMounted","onBeforeUnmount"],"mappings":"
|
|
1
|
+
{"version":3,"file":"menu-item.vue2.js","sources":["../../../../../packages/components/menu/menu-item.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('menu-item')\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 { renderTNode, singleAttrToObj, VNode } from '@vft/utils';\nimport { computed, getCurrentInstance, inject, onBeforeUnmount, onMounted, reactive } from 'vue';\nimport { throwError } from '@vft-ui/utils';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type RouteLocationRaw } from 'vue-router';\nimport useMenu from './use-menu';\nimport { VftIcon as Icon, type IconProps, VftTooltip as Tooltip, VftDivider } from '@vft-ui/components';\n\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types';\n\ninterface Props {\n /** 唯一标志 */\n index?: string;\n /** Vue Router 路径对象 */\n route?: RouteLocationRaw;\n /** 是否禁用 */\n disabled?: boolean;\n icon?: IconProps;\n title?: string;\n isAloneUse?: boolean;\n divider?: boolean;\n className?: string\n reverse?: boolean\n}\n\ndefineProps({\n \"index\": null,\n \"route\": null,\n \"disabled\": { type: Boolean, },\n \"icon\": null,\n \"title\": null,\n \"isAloneUse\": { type: Boolean, },\n \"divider\": { type: Boolean, },\n \"className\": null,\n \"reverse\": { type: Boolean, }\n})\n\n\n\nconst emit = defineEmits(['click']);\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst nsMenu = useNamespace('menu');\n\nconst nsMenuItem = useNamespace('menu-item');\n\n// 获取来自 menu.vue 中注入的数据\nconst rootMenu = !__props.isAloneUse ? inject<MenuProvider>('rootMenu') : null;\nif (!rootMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject root menu');\n\n// indexPath:当前 menu-item 对应的 index 和 vft-sub-menu 的 index,parentMenu 为 vft-sub-menu 组件\nconst { parentMenu, indexPath } = useMenu(\n instance,\n computed(() => __props.index!)\n);\n\n// 注入来自 sub-menu 中的 provide 数据\nconst subMenu = !__props.isAloneUse ? inject<SubMenuProvider>(`subMenu:${parentMenu.value.uid}`) : null;\nif (!subMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject sub menu');\n\n// 当前是否为 active\nconst active = computed(() => __props.index === rootMenu?.activeIndex);\n\nconst item: MenuItemRegistered = reactive({\n index: __props.index!,\n indexPath,\n active\n});\n\n// 点击具体菜单项\nconst handleClick = () => {\n if (!__props.disabled) {\n rootMenu?.handleMenuItemClick({\n index: __props.index!,\n indexPath: indexPath.value,\n route: __props.route\n });\n emit('click', item);\n }\n};\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst title = computed(() => {\n return renderTNode(instance, 'title');\n});\n\nonMounted(() => {\n if (!__props.isAloneUse) {\n // 触发 sub-menu,vue 中的 addSubMenu\n subMenu?.addSubMenu(item);\n // 触发 menu.vue 中的 addMenuItem 更新 items\n rootMenu?.addMenuItem(item);\n }\n});\n\nonBeforeUnmount(() => {\n if (!__props.isAloneUse) {\n subMenu?.removeSubMenu(item);\n rootMenu?.removeMenuItem(item);\n }\n});\n</script>\n\n<template>\n <vft-divider v-if=\"reverse && divider\" marginY=\"0\" />\n <li :class=\"[className, nsMenuItem.b(), nsMenuItem.is('active', isAloneUse ? false : active), nsMenuItem.is('disabled', disabled)]\" role=\"menuitem\" tabindex=\"-1\" @click=\"handleClick\">\n <tooltip\n v-if=\"parentMenu?.type?.name === 'vft-menu' && rootMenu?.props.collapse && $slots.title\"\n placement=\"right\" :fallback-placements=\"['left']\" persistent>\n <template #content>\n <slot name=\"title\" />\n </template>\n <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n <slot />\n </div>\n </tooltip>\n <template v-else>\n <slot v-if=\"$slots?.default\"/>\n <template v-else>\n <Icon v-if=\"_icon?.icon\" v-bind=\"_icon\" />\n <span :title=\"title\"><v-node :content=\"title\" /></span>\n </template>\n </template>\n </li>\n <vft-divider v-if=\"!reverse && divider\" marginY=\"0\" />\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","nsMenu","nsMenuItem","rootMenu","__props","inject","throwError","parentMenu","indexPath","useMenu","computed","subMenu","active","item","reactive","handleClick","emit","_icon","singleAttrToObj","title","renderTNode","onMounted","onBeforeUnmount"],"mappings":"0jDACMA,EAAuBC,EAAAA,aAAa,WAAW,EAGrDC,EAA6BC,EAAAA,gBAAmB,CAC9C,KAAMH,EAAG,EAAE,CACb,CAAC,gOA6CD,MAAMI,EAAWC,EAAAA,qBAEXC,EAASL,eAAa,MAAM,EAE5BM,EAAaN,eAAa,WAAW,EAGrCO,EAAYC,EAAQ,WAAgD,KAAnCC,EAAAA,OAAqB,UAAU,EAClE,CAACF,GAAY,CAACC,EAAQ,YAAuBE,EAAAA,WAAAX,EAAG,EAAE,EAAG,0BAA0B,EAG7E,KAAA,CAAE,WAAAY,EAAY,UAAAC,CAAA,EAAcC,EAAA,QAChCV,EACAW,WAAS,IAAMN,EAAQ,KAAM,CAAA,EAIzBO,EAAWP,EAAQ,WAA0E,KAA7DC,EAAAA,OAAwB,WAAWE,EAAW,MAAM,KAAK,EAC3F,CAACI,GAAW,CAACP,EAAQ,YAAuBE,EAAAA,WAAAX,EAAG,EAAE,EAAG,yBAAyB,EAGjF,MAAMiB,EAASF,EAAAA,SAAS,IAAMN,EAAQ,SAAUD,GAAA,YAAAA,EAAU,YAAW,EAE/DU,EAA2BC,EAAAA,SAAS,CACxC,MAAOV,EAAQ,MACf,UAAAI,EACA,OAAAI,CAAA,CACD,EAGKG,EAAc,IAAM,CACnBX,EAAQ,WACXD,GAAA,MAAAA,EAAU,oBAAoB,CAC5B,MAAOC,EAAQ,MACf,UAAWI,EAAU,MACrB,MAAOJ,EAAQ,KAAA,GAEjBY,EAAK,QAASH,CAAI,EACpB,EAGII,EAAQP,EAAAA,SAAS,IACdQ,kBAAgBd,EAAQ,KAAM,MAAM,CAC5C,EAEKe,EAAQT,EAAAA,SAAS,IACdU,EAAA,YAAYrB,EAAU,OAAO,CACrC,EAEDsB,OAAAA,EAAAA,UAAU,IAAM,CACTjB,EAAQ,aAEXO,GAAA,MAAAA,EAAS,WAAWE,GAEpBV,GAAA,MAAAA,EAAU,YAAYU,GACxB,CACD,EAEDS,EAAAA,gBAAgB,IAAM,CACflB,EAAQ,aACXO,GAAA,MAAAA,EAAS,cAAcE,GACvBV,GAAA,MAAAA,EAAU,eAAeU,GAC3B,CACD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../divider/index.js");const N=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");const Q=require("../collapse-transition/index.js"),W=require("../tooltip/index.js");require("../popover/index.js");require("./index.js");const O=require("@vft/utils");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 w=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");const R=require("@vueuse/core");require("@vue/shared");const D=require("../../utils/error.js"),X=require("./use-menu.js"),Y=require("./use-menu-css-var.js"),y=w.useNamespace("sub-menu"),_=e.defineComponent({name:y.b()}),ee=e.defineComponent({..._,props:{index:null,showTimeout:{default:300},hideTimeout:{default:300},popperClass:null,disabled:{type:Boolean},popperAppendToBody:{type:Boolean,default:void 0},popperOffset:{default:6},expandIcon:{default:{}},collapseIcon:{default:{}},title:null,icon:null,showArrow:{type:Boolean,default:!0},toolTipCfg:null},setup(t,{expose:H}){const v=e.getCurrentInstance(),{indexPath:h,parentMenu:S}=X.default(v,e.computed(()=>t.index)),a=w.useNamespace("menu"),i=w.useNamespace("sub-menu"),o=e.inject("rootMenu");o||D.throwError(y.b(),"can not inject root menu");const l=e.inject(`subMenu:${S.value.uid}`);l||D.throwError(y.b(),"can not inject sub menu");const C=e.ref({});let s;const I=e.ref(!1),L=e.ref(),k=e.ref(null),z=e.computed(()=>d.value==="horizontal"&&q.value?"bottom-start":"right-start"),q=e.computed(()=>l.level===0),x=e.computed(()=>t.popperAppendToBody===void 0?q.value:Boolean(t.popperAppendToBody)),U=e.computed(()=>o.props.collapse?`${a.namespace.value}-zoom-in-left`:`${a.namespace.value}-zoom-in-top`),Z=e.computed(()=>d.value==="horizontal"&&q.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),c=e.computed(()=>o.openedMenus.includes(t.index)),m=e.computed(()=>{let r=!1;return Object.values(C.value).forEach(u=>{u.active&&(r=!0)}),t.index===o.activeIndex&&(r=!0),r}),B=e.computed(()=>o.props.backgroundColor||""),A=e.computed(()=>o.props.activeTextColor||""),P=e.computed(()=>o.props.textColor||""),d=e.computed(()=>o.props.mode),b=e.reactive({index:t.index,indexPath:h,active:m}),$=e.computed(()=>d.value!=="horizontal"?{color:P.value}:{borderBottomColor:m.value?o.props.activeTextColor?A.value:"":"transparent",color:m.value?A.value:P.value}),G=()=>{var r,u,n;return(n=(u=(r=k.value)==null?void 0:r.popperRef)==null?void 0:u.popperInstanceRef)==null?void 0:n.destroy()},J=r=>{r||G()},j=()=>{o.props.menuTrigger==="hover"&&o.props.mode==="horizontal"||o.props.collapse&&o.props.mode==="vertical"||t.disabled||o.handleSubMenuClick({index:t.index,indexPath:h.value,active:m.value})},M=(r,u=t.showTimeout)=>{var n;r.type!=="focus"&&(o.props.menuTrigger==="click"&&o.props.mode==="horizontal"||!o.props.collapse&&o.props.mode==="vertical"||t.disabled||(l.mouseInChild.value=!0,s==null||s(),{stop:s}=R.useTimeoutFn(()=>{o.openMenu(t.index,h.value)},u),x.value&&((n=S.value.vnode.el)==null||n.dispatchEvent(new MouseEvent("mouseenter")))))},g=(r=!1)=>{var u,n;o.props.menuTrigger==="click"&&o.props.mode==="horizontal"||!o.props.collapse&&o.props.mode==="vertical"||(s==null||s(),l.mouseInChild.value=!1,{stop:s}=R.useTimeoutFn(()=>!I.value&&o.closeMenu(t.index,h.value),t.hideTimeout),x.value&&r&&((u=v.parent)==null?void 0:u.type.name)==="vft-sub-menu"&&((n=l.handleMouseleave)==null||n.call(l,!0)))};e.watch(()=>o.props.collapse,r=>J(Boolean(r)));{const r=n=>{C.value[n.index]=n},u=n=>{delete C.value[n.index]};e.provide(`subMenu:${v.uid}`,{addSubMenu:r,removeSubMenu:u,handleMouseleave:g,mouseInChild:I,level:l.level+1})}H({opened:c}),e.onMounted(()=>{o.addSubMenu(b),l.addSubMenu(b)}),e.onBeforeUnmount(()=>{l.removeSubMenu(b),o.removeSubMenu(b)});const p=e.useSlots(),K=e.computed(()=>d.value==="horizontal"&&q.value||d.value==="vertical"&&!o.props.collapse?{icon:"vi-arrow-down",size:20,...t.expandIcon}:{icon:"vi-arrow-right",size:18,...t.collapseIcon}),E=e.computed(()=>O.singleAttrToObj(t.icon,"icon")),F=e.computed(()=>O.renderTNode(v,"title"));return()=>{var V;const r=[(V=E.value)!=null&&V.icon?e.h(N.VftIcon,{...E.value}):null,e.h("span",{class:t.showArrow?i.e("text"):"",title:v.props.title},F.value),t.showArrow?e.h(N.VftIcon,{class:i.e("icon-arrow"),...K.value,style:{transform:c.value?"rotateZ(180deg)":"none"}}):!1],u=Y.useMenuCssVar(o.props,l.level+1),n=o.isMenuPopup?e.h(W.VftTooltip,{ref:k,visible:c.value,effect:"light",pure:!0,offset:t.popperOffset,showArrow:!1,persistent:!0,popperClass:t.popperClass,placement:z.value,teleported:x.value,fallbackPlacements:Z.value,transition:U.value,gpuAcceleration:!1,...t.toolTipCfg},{content:()=>{var f;return e.h("div",{class:[a.m(d.value),a.m("popup-container"),t.popperClass],onMouseenter:T=>M(T,100),onMouseleave:()=>g(!0),onFocus:T=>M(T,100)},[e.h("ul",{class:[a.b(),a.m("popup"),a.m(`popup-${z.value}`)],style:u.value},[(f=p.default)==null?void 0:f.call(p)])])},default:()=>e.h("div",{class:i.e("title"),style:[$.value,{backgroundColor:B.value}],onClick:j},r)}):e.h(e.Fragment,{},[F.value?e.h("div",{class:i.e("title"),style:[$.value,{backgroundColor:B.value}],ref:L,onClick:j},r):null,e.h(Q.VftCollapseTransition,{},{default:()=>{var f;return e.withDirectives(e.h("ul",{role:"menu",class:[a.b(),a.m("inline")],style:u.value},[(f=p.default)==null?void 0:f.call(p)]),[[e.vShow,c.value]])}})]);return e.h("li",{class:[i.b(),i.is("active",m.value),i.is("opened",c.value),i.is("disabled",t.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:c.value,onMouseenter:M,onMouseleave:()=>g(!0),onFocus:M},[n])}}});exports.default=ee;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../divider/index.js");const N=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");const Q=require("../collapse-transition/index.js"),W=require("../tooltip/index.js");require("../popover/index.js");require("./index.js");const O=require("@vft/utils");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 w=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");const R=require("@vueuse/core");require("@vue/shared");const D=require("../../utils/error.js"),X=require("./use-menu.js"),Y=require("./use-menu-css-var.js"),y=w.useNamespace("sub-menu"),_=e.defineComponent({name:y.b()}),ee=e.defineComponent({..._,props:{index:null,showTimeout:{default:300},hideTimeout:{default:300},popperClass:null,disabled:{type:Boolean},popperAppendToBody:{type:Boolean,default:void 0},popperOffset:{default:6},expandIcon:{default:{}},collapseIcon:{default:{}},title:null,icon:null,showArrow:{type:Boolean,default:!0},toolTipCfg:null},setup(t,{expose:H}){const v=e.getCurrentInstance(),{indexPath:h,parentMenu:S}=X.default(v,e.computed(()=>t.index)),a=w.useNamespace("menu"),i=w.useNamespace("sub-menu"),o=e.inject("rootMenu");o||D.throwError(y.b(),"can not inject root menu");const l=e.inject(`subMenu:${S.value.uid}`);l||D.throwError(y.b(),"can not inject sub menu");const C=e.ref({});let s;const I=e.ref(!1),L=e.ref(),k=e.ref(null),z=e.computed(()=>d.value==="horizontal"&&q.value?"bottom-start":"right-start"),q=e.computed(()=>l.level===0),x=e.computed(()=>t.popperAppendToBody===void 0?q.value:Boolean(t.popperAppendToBody)),U=e.computed(()=>o.props.collapse?`${a.namespace.value}-zoom-in-left`:`${a.namespace.value}-zoom-in-top`),Z=e.computed(()=>d.value==="horizontal"&&q.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","left-start","bottom-start","bottom-end","top-start","top-end"]),c=e.computed(()=>o.openedMenus.includes(t.index)),m=e.computed(()=>{let r=!1;return Object.values(C.value).forEach(u=>{u.active&&(r=!0)}),t.index===o.activeIndex&&(r=!0),r}),B=e.computed(()=>o.props.backgroundColor||""),A=e.computed(()=>o.props.activeTextColor||""),P=e.computed(()=>o.props.textColor||""),d=e.computed(()=>o.props.mode),b=e.reactive({index:t.index,indexPath:h,active:m}),$=e.computed(()=>d.value!=="horizontal"?{color:P.value}:{borderBottomColor:m.value?o.props.activeTextColor?A.value:"":"transparent",color:m.value?A.value:P.value}),G=()=>{var r,u,n;return(n=(u=(r=k.value)==null?void 0:r.popperRef)==null?void 0:u.popperInstanceRef)==null?void 0:n.destroy()},J=r=>{r||G()},j=()=>{o.props.menuTrigger==="hover"&&o.props.mode==="horizontal"||o.props.collapse&&o.props.mode==="vertical"||t.disabled||o.handleSubMenuClick({index:t.index,indexPath:h.value,active:m.value})},M=(r,u=t.showTimeout)=>{var n;r.type!=="focus"&&(o.props.menuTrigger==="click"&&o.props.mode==="horizontal"||!o.props.collapse&&o.props.mode==="vertical"||t.disabled||(l.mouseInChild.value=!0,s==null||s(),{stop:s}=R.useTimeoutFn(()=>{o.openMenu(t.index,h.value)},u),x.value&&((n=S.value.vnode.el)==null||n.dispatchEvent(new MouseEvent("mouseenter")))))},g=(r=!1)=>{var u,n;o.props.menuTrigger==="click"&&o.props.mode==="horizontal"||!o.props.collapse&&o.props.mode==="vertical"||(s==null||s(),l.mouseInChild.value=!1,{stop:s}=R.useTimeoutFn(()=>!I.value&&o.closeMenu(t.index,h.value),t.hideTimeout),x.value&&r&&((u=v.parent)==null?void 0:u.type.name)==="vft-sub-menu"&&((n=l.handleMouseleave)==null||n.call(l,!0)))};e.watch(()=>o.props.collapse,r=>J(Boolean(r)));{const r=n=>{C.value[n.index]=n},u=n=>{delete C.value[n.index]};e.provide(`subMenu:${v.uid}`,{addSubMenu:r,removeSubMenu:u,handleMouseleave:g,mouseInChild:I,level:l.level+1})}H({opened:c}),e.onMounted(()=>{o.addSubMenu(b),l.addSubMenu(b)}),e.onBeforeUnmount(()=>{l.removeSubMenu(b),o.removeSubMenu(b)});const p=e.useSlots(),K=e.computed(()=>d.value==="horizontal"&&q.value||d.value==="vertical"&&!o.props.collapse?{icon:"vi-arrow-down",size:20,...t.expandIcon}:{icon:"vi-arrow-right",size:18,...t.collapseIcon}),E=e.computed(()=>O.singleAttrToObj(t.icon,"icon")),F=e.computed(()=>O.renderTNode(v,"title"));return()=>{var V;const r=[(V=E.value)!=null&&V.icon?e.h(N.VftIcon,{...E.value}):null,e.h("span",{class:t.showArrow?i.e("text"):"",title:v.props.title},F.value),t.showArrow?e.h(N.VftIcon,{class:i.e("icon-arrow"),...K.value,style:{transform:c.value?"rotateZ(180deg)":"none"}}):!1],u=Y.useMenuCssVar(o.props,l.level+1),n=o.isMenuPopup?e.h(W.VftTooltip,{ref:k,visible:c.value,effect:"light",pure:!0,offset:t.popperOffset,showArrow:!1,persistent:!0,popperClass:t.popperClass,placement:z.value,teleported:x.value,fallbackPlacements:Z.value,transition:U.value,gpuAcceleration:!1,...t.toolTipCfg},{content:()=>{var f;return e.h("div",{class:[a.m(d.value),a.m("popup-container"),t.popperClass],onMouseenter:T=>M(T,100),onMouseleave:()=>g(!0),onFocus:T=>M(T,100)},[e.h("ul",{class:[a.b(),a.m("popup"),a.m(`popup-${z.value}`)],style:u.value},[(f=p.default)==null?void 0:f.call(p)])])},default:()=>e.h("div",{class:i.e("title"),style:[$.value,{backgroundColor:B.value}],onClick:j},r)}):e.h(e.Fragment,{},[F.value?e.h("div",{class:i.e("title"),style:[$.value,{backgroundColor:B.value}],ref:L,onClick:j},r):null,e.h(Q.VftCollapseTransition,{},{default:()=>{var f;return e.withDirectives(e.h("ul",{role:"menu",class:[a.b(),a.m("inline")],style:u.value},[(f=p.default)==null?void 0:f.call(p)]),[[e.vShow,c.value]])}})]);return e.h("li",{class:[i.b(),i.is("active",m.value),i.is("opened",c.value),i.is("disabled",t.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:c.value,onMouseenter:M,onMouseleave:()=>g(!0),onFocus:M},[n])}}});exports.default=ee;
|
|
2
2
|
//# sourceMappingURL=sub-menu.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-menu.vue2.js","sources":["../../../../../packages/components/menu/sub-menu.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns = /* hoist-static*/ useNamespace('sub-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 { type IconProps, type Placement, type ToolTipProps, VftCollapseTransition as CollapseTransition, VftIcon as Icon, VftTooltip as Tooltip } from '@vft-ui/components';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { throwError } from '@vft-ui/utils';\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { useTimeoutFn } from '@vueuse/core';\nimport type { CSSProperties, VNodeArrayChildren } from 'vue';\nimport { computed, Fragment, getCurrentInstance, h, inject, onBeforeUnmount, onMounted, provide, reactive, ref, useSlots, vShow, watch, withDirectives } from 'vue';\nimport type { MenuProvider, SubMenuProvider } from './types';\nimport useMenu from './use-menu';\nimport { useMenuCssVar } from './use-menu-css-var';\n\ninterface Props {\n /** 唯一标志 */\n index: string;\n /** 展开 sub-menu 的延时 */\n showTimeout?: number;\n /** 收起 sub-menu 的延时 */\n hideTimeout?: number;\n /** 为 popper 添加类名 */\n popperClass?: ClassType;\n /** 是否禁用 */\n disabled?: boolean;\n popperAppendToBody?: boolean;\n /** 弹出窗口偏移 */\n popperOffset?: number;\n expandIcon?: IconProps;\n collapseIcon?: IconProps;\n title?: string;\n icon?: IconProps | string;\n showArrow?: boolean;\n toolTipCfg?: ToolTipProps;\n}\n\ndefineProps({\n \"index\": null,\n \"showTimeout\": { default: 300 },\n \"hideTimeout\": { default: 300 },\n \"popperClass\": null,\n \"disabled\": { type: Boolean, },\n \"popperAppendToBody\": { type: Boolean, default: undefined },\n \"popperOffset\": { default: 6 },\n \"expandIcon\": { default: {} },\n \"collapseIcon\": { default: {} },\n \"title\": null,\n \"icon\": null,\n \"showArrow\": { type: Boolean, default: true },\n \"toolTipCfg\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\n// 返回当前 sub-menu 对应的 indexPath 页面中对 submenu 定义的 index parentMenu -> vft-menu 组件\nconst { indexPath, parentMenu } = useMenu(instance, computed(() => __props.index));\n\nconst nsMenu = useNamespace('menu');\nconst nsSubMenu = useNamespace('sub-menu');\n\n// 接受 vft-menu 组件中注入的数据\nconst rootMenu = inject<MenuProvider>('rootMenu');\nif (!rootMenu) throwError(ns.b(), 'can not inject root menu');\n\n// 接受 vft-menu 组件中注入的数据 parentMenu.value!.uid 当前 sub-menu 组件对应的 menu.vue 组件\nconst subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value!.uid}`);\nif (!subMenu) throwError(ns.b(), 'can not inject sub menu');\n\n/**\n * 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\nconst subMenus = ref<MenuProvider['subMenus']>({});\n\nlet timeout: (() => void) | undefined;\nconst mouseInChild = ref(false);\n\n// sub-menu-title 的 ref\nconst verticalTitleRef = ref<HTMLDivElement>();\n// tooltip 的实例\nconst vPopper = ref(null);\n\n// toolTop 的展示位置\nconst currentPlacement = computed<Placement>(\n () => (mode.value === 'horizontal' && isFirstLevel.value ? 'bottom-start' : 'right-start'));\n\n// 是否为第一级的 subMenu\nconst isFirstLevel = computed(() => {\n return subMenu.level === 0;\n});\n\nconst appendToBody = computed(() => {\n return __props.popperAppendToBody === undefined ? isFirstLevel.value : Boolean(__props.popperAppendToBody);\n});\n\n// toolTip 弹出的动画名称\nconst menuTransitionName = computed(\n () => (rootMenu.props.collapse ? `${nsMenu.namespace.value}-zoom-in-left` : `${nsMenu.namespace.value}-zoom-in-top`));\n\nconst fallbackPlacements = computed<Placement[]>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? ['bottom-start', 'bottom-end', 'top-start', 'top-end', 'right-start', 'left-start']\n : ['right-start', 'left-start', 'bottom-start', 'bottom-end', 'top-start', 'top-end']\n);\n\n// 获取当前的 index 是否包含在 openedMenus 中,表示当前 sub-menu 是否已经展开,子节点就是通过这个使用 v-show 来显隐\nconst opened = computed(() => rootMenu.openedMenus.includes(__props.index));\n\nconst active = computed(() => {\n let isActive = false;\n Object.values(subMenus.value).forEach((subItem) => {\n if (subItem.active) {\n isActive = true;\n }\n });\n if (__props.index === rootMenu.activeIndex) {\n isActive = true;\n }\n return isActive;\n});\n\nconst backgroundColor = computed(() => rootMenu.props.backgroundColor || '');\n\nconst activeTextColor = computed(() => rootMenu.props.activeTextColor || '');\n\nconst textColor = computed(() => rootMenu.props.textColor || '');\n\nconst mode = computed(() => rootMenu.props.mode);\n\nconst item = reactive({\n index: __props.index,\n indexPath,\n active\n});\n\n//\nconst titleStyle = computed<CSSProperties>(() => {\n if (mode.value !== 'horizontal') {\n return {\n color: textColor.value\n };\n }\n return {\n borderBottomColor: active.value ? (rootMenu.props.activeTextColor ? activeTextColor.value : '') : 'transparent',\n color: active.value ? activeTextColor.value : textColor.value\n };\n});\n\n// 销毁 toolTip\nconst doDestroy = () => vPopper.value?.popperRef?.popperInstanceRef?.destroy();\n\n// 当菜单收缩展开时执行销毁 toolTip\nconst handleCollapseToggle = (value: boolean) => {\n if (!value) {\n doDestroy();\n }\n};\n\n// sub-menu 菜单点击事件\nconst handleClick = () => {\n // 以下几种情况不执行点击事件操作\n if ((rootMenu.props.menuTrigger === 'hover' && rootMenu.props.mode === 'horizontal') || (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) return;\n\n // 调用 menn.vue 中的 handleSubMenuClick 点击事件,传入参数\n rootMenu.handleSubMenuClick({\n index: __props.index,\n indexPath: indexPath.value,\n active: active.value\n });\n};\n\n// 滑入 sub-menu 菜单事件\nconst handleMouseenter = (event: MouseEvent | FocusEvent, _showTimeout = __props.showTimeout) => {\n if (event.type === 'focus') {\n return;\n }\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) {\n return;\n }\n subMenu.mouseInChild.value = true;\n\n // 根据 _showTimeout 展开滑入的菜单子项\n timeout?.();\n ({ stop: timeout } = useTimeoutFn(() => {\n rootMenu.openMenu(__props.index, indexPath.value);\n }, _showTimeout));\n\n if (appendToBody.value) {\n parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'));\n }\n};\n\n// 离开滑入的菜单\nconst handleMouseleave = (deepDispatch = false) => {\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')) {\n return;\n }\n timeout?.();\n subMenu.mouseInChild.value = false;\n ({ stop: timeout } = useTimeoutFn(\n () => !mouseInChild.value && rootMenu.closeMenu(__props.index, indexPath.value),\n __props.hideTimeout));\n\n if (appendToBody.value && deepDispatch) {\n if (instance.parent?.type.name === 'vft-sub-menu') {\n subMenu.handleMouseleave?.(true);\n }\n }\n};\n\n// 监听菜单的收缩展开决定是否销毁 ToolTip\nwatch(\n () => rootMenu.props.collapse,\n (value) => handleCollapseToggle(Boolean(value))\n);\n\n// 以下代码在 menu-item.vue 中触发\n{\n /**\n * 此函数在 menu-item 中触发,items.value 默认为空对象\n * 最后添加后的 items 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\n const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item;\n };\n const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index];\n };\n provide<SubMenuProvider>(`subMenu:${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n handleMouseleave,\n mouseInChild,\n level: subMenu.level + 1\n });\n}\n\ndefineExpose({\n opened\n});\n\nonMounted(() => {\n rootMenu.addSubMenu(item);\n subMenu.addSubMenu(item);\n});\n\nonBeforeUnmount(() => {\n subMenu.removeSubMenu(item);\n rootMenu.removeSubMenu(item);\n});\n\nconst slots = useSlots();\n\n// 箭头设置\nconst subMenuIcon = computed(() => {\n // 水平模式第一级 或者 竖直非折叠\n return (mode.value === 'horizontal' && isFirstLevel.value) || (mode.value === 'vertical' && !rootMenu.props.collapse)\n ? { icon: 'vi-arrow-down', size: 20, ...__props.expandIcon } :\n { icon: 'vi-arrow-right', size: 18, ...__props.collapseIcon };\n});\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst titleCon = computed(() => {\n return renderTNode(instance, 'title');\n});\n\ndefineRender(() => {\n // sub-menu 的标题以及展开箭头 icon 相关\n const titleTag: VNodeArrayChildren = [\n _icon.value?.icon ? h(Icon, { ..._icon.value }) : null,\n h(\n 'span',\n {\n class: __props.showArrow ? nsSubMenu.e('text') : '',\n title: instance.props.title\n },\n titleCon.value\n ),\n __props.showArrow ? h(\n Icon,\n {\n class: nsSubMenu.e('icon-arrow'),\n ...subMenuIcon.value,\n style: { transform: opened.value ? 'rotateZ(180deg)' : 'none' }\n }\n ) : false\n ];\n\n // 给 vft-menu class 这一栏加入 level 等级,以此来区分当前的 level: --vft-menu-level:2;\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1);\n\n /**\n * rootMenu.isMenuPopup 是否需要 tooltip 1.水平模式的菜单需要 2.竖直类型的菜单在收缩时需要\n * 如果需要 tooltip 用 h 函数渲染时,则采用 ElTooltip 组件\n * @type {VNode}\n */\n const child = rootMenu.isMenuPopup\n ? h(\n Tooltip,\n {\n ref: vPopper,\n visible: opened.value,\n effect: 'light',\n pure: true,\n offset: __props.popperOffset,\n showArrow: false,\n persistent: true,\n popperClass: __props.popperClass,\n placement: currentPlacement.value,\n teleported: appendToBody.value,\n fallbackPlacements: fallbackPlacements.value,\n transition: menuTransitionName.value,\n gpuAcceleration: false,\n ...__props.toolTipCfg\n },\n {\n content: () =>\n h(\n 'div',\n {\n class: [nsMenu.m(mode.value), nsMenu.m('popup-container'), __props.popperClass],\n onMouseenter: (evt: MouseEvent) => handleMouseenter(evt, 100),\n onMouseleave: () => handleMouseleave(true),\n onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100)\n },\n [\n h(\n 'ul',\n {\n class: [nsMenu.b(), nsMenu.m('popup'), nsMenu.m(\n `popup-${currentPlacement.value}`)],\n style: ulStyle.value\n },\n [slots.default?.()]\n )\n ]\n ),\n default: () =>\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n onClick: handleClick\n },\n titleTag\n )\n }\n )\n :\n /**\n * Fragment 碎片化节点,可以让 dom 没有根节点\n *\n * 以下是无需 tooltip 渲染的组件,通常是侧边栏没有折叠的时候\n */\n h(Fragment, {}, [\n titleCon.value ? h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n ref: verticalTitleRef,\n onClick: handleClick\n },\n titleTag\n ) : null,\n h(\n CollapseTransition,\n {},\n {\n default: () =>\n withDirectives(\n h(\n 'ul',\n {\n role: 'menu',\n class: [nsMenu.b(), nsMenu.m('inline')],\n style: ulStyle.value\n },\n [slots.default?.()]\n ),\n [[vShow, opened.value]]\n )\n }\n )\n ]);\n\n return h(\n 'li',\n {\n class: [nsSubMenu.b(), nsSubMenu.is('active', active.value),\n nsSubMenu.is('opened', opened.value), nsSubMenu.is('disabled', __props.disabled)],\n role: 'menuitem',\n ariaHaspopup: true,\n ariaExpanded: opened.value,\n onMouseenter: handleMouseenter,\n onMouseleave: () => handleMouseleave(true),\n onFocus: handleMouseenter\n },\n [child]\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","name","b","instance","getCurrentInstance","indexPath","parentMenu","useMenu","computed","__props","index","nsMenu","nsSubMenu","rootMenu","inject","throwError","subMenu","value","uid","subMenus","ref","timeout","mouseInChild","verticalTitleRef","vPopper","currentPlacement","mode","isFirstLevel","level","appendToBody","popperAppendToBody","undefined","Boolean","menuTransitionName","props","collapse","namespace","fallbackPlacements","opened","openedMenus","includes","active","isActive","Object","values","forEach","subItem","activeIndex","backgroundColor","activeTextColor","textColor","item","reactive","titleStyle","color","borderBottomColor","doDestroy","popperRef","popperInstanceRef","destroy","handleCollapseToggle","handleClick","menuTrigger","disabled","handleSubMenuClick","handleMouseenter","event","_showTimeout","showTimeout","type","stop","useTimeoutFn","openMenu","vnode","el","dispatchEvent","MouseEvent","handleMouseleave","deepDispatch","closeMenu","hideTimeout","parent","watch","addSubMenu","removeSubMenu","provide","expose","onMounted","onBeforeUnmount","slots","useSlots","subMenuIcon","icon","size","expandIcon","collapseIcon","_icon","singleAttrToObj","titleCon","renderTNode","titleTag","h","Icon","class","showArrow","e","title","style","transform","ulStyle","useMenuCssVar","child","isMenuPopup","Tooltip","visible","effect","pure","offset","popperOffset","persistent","popperClass","placement","teleported","transition","gpuAcceleration","toolTipCfg","content","m","onMouseenter","evt","onMouseleave","onFocus","default","onClick","Fragment","CollapseTransition","withDirectives","role","vShow","is","ariaHaspopup","ariaExpanded"],"mappings":"4hDACMA,EAAuBC,EAAAA,aAAa,UAAU,EAGpDC,EAA6BC,EAAAA,gBAAmB,CAC9CC,KAAMJ,EAAGK,EAAC,CACZ,CAAC,sWAuDD,MAAMC,EAAWC,EAAAA,qBAGX,CAAEC,UAAAA,EAAWC,WAAAA,CAAW,EAAIC,EAAAA,QAAQJ,EAAUK,EAAAA,SAAS,IAAMC,EAAQC,KAAK,CAAC,EAE3EC,EAASb,eAAa,MAAM,EAC5Bc,EAAYd,eAAa,UAAU,EAGnCe,EAAWC,SAAqB,UAAU,EAC3CD,GAAUE,EAAU,WAAClB,EAAGK,EAAC,EAAI,0BAA0B,EAG5D,MAAMc,EAAUF,EAAM,OAAmB,WAAUR,EAAWW,MAAOC,KAAK,EACrEF,GAASD,EAAU,WAAClB,EAAGK,EAAC,EAAI,yBAAyB,EAY1D,MAAMiB,EAAWC,MAA8B,CAAA,CAAE,EAEjD,IAAIC,EACJ,MAAMC,EAAeF,MAAI,EAAK,EAGxBG,EAAmBH,EAAAA,MAEnBI,EAAUJ,MAAI,IAAI,EAGlBK,EAAmBjB,EAAAA,SACvB,IAAOkB,EAAKT,QAAU,cAAgBU,EAAaV,MAAQ,eAAiB,aAAc,EAGtFU,EAAenB,EAAAA,SAAS,IACrBQ,EAAQY,QAAU,CAC1B,EAEKC,EAAerB,EAAAA,SAAS,IACrBC,EAAQqB,qBAAuBC,OAAYJ,EAAaV,MAAQe,QAAQvB,EAAQqB,kBAAkB,CAC1G,EAGKG,EAAqBzB,EAAAA,SACzB,IAAOK,EAASqB,MAAMC,SAAY,GAAExB,EAAOyB,UAAUnB,qBAAwB,GAAEN,EAAOyB,UAAUnB,mBAAoB,EAEhHoB,EAAqB7B,EAAAA,SAAsB,IAC/CkB,EAAKT,QAAU,cAAgBU,EAAaV,MACxC,CAAC,eAAgB,aAAc,YAAa,UAAW,cAAe,YAAY,EAClF,CAAC,cAAe,aAAc,eAAgB,aAAc,YAAa,SAAS,CAAC,EAInFqB,EAAS9B,EAAQ,SAAC,IAAMK,EAAS0B,YAAYC,SAAS/B,EAAQC,KAAK,CAAC,EAEpE+B,EAASjC,EAAAA,SAAS,IAAM,CAC5B,IAAIkC,EAAW,GACfC,cAAOC,OAAOzB,EAASF,KAAK,EAAE4B,QAASC,GAAY,CAC7CA,EAAQL,SACVC,EAAW,GAEf,CAAC,EACGjC,EAAQC,QAAUG,EAASkC,cAC7BL,EAAW,IAENA,CACT,CAAC,EAEKM,EAAkBxC,EAAAA,SAAS,IAAMK,EAASqB,MAAMc,iBAAmB,EAAE,EAErEC,EAAkBzC,EAAAA,SAAS,IAAMK,EAASqB,MAAMe,iBAAmB,EAAE,EAErEC,EAAY1C,EAAAA,SAAS,IAAMK,EAASqB,MAAMgB,WAAa,EAAE,EAEzDxB,EAAOlB,EAAAA,SAAS,IAAMK,EAASqB,MAAMR,IAAI,EAEzCyB,EAAOC,EAAAA,SAAS,CACpB1C,MAAOD,EAAQC,MACfL,UAAAA,EACAoC,OAAAA,CACF,CAAC,EAGKY,EAAa7C,EAAAA,SAAwB,IACrCkB,EAAKT,QAAU,aACV,CACLqC,MAAOJ,EAAUjC,OAGd,CACLsC,kBAAmBd,EAAOxB,MAASJ,EAASqB,MAAMe,gBAAkBA,EAAgBhC,MAAQ,GAAM,cAClGqC,MAAOb,EAAOxB,MAAQgC,EAAgBhC,MAAQiC,EAAUjC,MAE3D,EAGKuC,EAAYA,IAAAA,WAAMhC,OAAAA,GAAAA,GAAAA,EAAAA,EAAQP,QAARO,YAAAA,EAAeiC,YAAfjC,YAAAA,EAA0BkC,oBAA1BlC,YAAAA,EAA6CmC,WAG/DC,EAAwB3C,GAAmB,CAC1CA,GACHuC,KAKEK,EAAcA,IAAM,CAEnBhD,EAASqB,MAAM4B,cAAgB,SAAWjD,EAASqB,MAAMR,OAAS,cAAkBb,EAASqB,MAAMC,UAAYtB,EAASqB,MAAMR,OAAS,YAAejB,EAAQsD,UAGnKlD,EAASmD,mBAAmB,CAC1BtD,MAAOD,EAAQC,MACfL,UAAWA,EAAUY,MACrBwB,OAAQA,EAAOxB,KACjB,CAAC,GAIGgD,EAAmBA,CAACC,EAAgCC,EAAe1D,EAAQ2D,cAAgB,OAC3FF,EAAMG,OAAS,UAGdxD,EAASqB,MAAM4B,cAAgB,SAAWjD,EAASqB,MAAMR,OAAS,cAAkB,CAACb,EAASqB,MAAMC,UAAYtB,EAASqB,MAAMR,OAAS,YAAejB,EAAQsD,WAGpK/C,EAAQM,aAAaL,MAAQ,GAG7BI,GAAAA,MAAAA,IACC,CAAEiD,KAAMjD,CAAS,EAAGkD,EAAY,aAAC,IAAM,CACtC1D,EAAS2D,SAAS/D,EAAQC,MAAOL,EAAUY,KAAK,CACjD,EAAEkD,CAAY,EAEXtC,EAAaZ,SACfX,EAAAA,EAAWW,MAAMwD,MAAMC,KAAvBpE,MAAAA,EAA2BqE,cAAc,IAAIC,WAAW,YAAY,OAKlEC,EAAmBA,CAACC,EAAe,KAAU,SAC5CjE,EAASqB,MAAM4B,cAAgB,SAAWjD,EAASqB,MAAMR,OAAS,cAAkB,CAACb,EAASqB,MAAMC,UAAYtB,EAASqB,MAAMR,OAAS,aAG7IL,GAAAA,MAAAA,IACAL,EAAQM,aAAaL,MAAQ,GAC5B,CAAEqD,KAAMjD,CAAS,EAAGkD,EAAY,aAC/B,IAAM,CAACjD,EAAaL,OAASJ,EAASkE,UAAUtE,EAAQC,MAAOL,EAAUY,KAAK,EAC9ER,EAAQuE,WAAW,EAEjBnD,EAAaZ,OAAS6D,KACpB3E,EAAAA,EAAS8E,SAAT9E,YAAAA,EAAiBkE,KAAKpE,QAAS,kBACjCe,EAAAA,EAAQ6D,mBAAR7D,MAAAA,EAAAA,KAAAA,EAA2B,OAMjCkE,QACE,IAAMrE,EAASqB,MAAMC,SACpBlB,GAAU2C,EAAqB5B,QAAQf,CAAK,CAAC,CAAC,EAIjD,CAYE,MAAMkE,EAA6ChC,GAAS,CAC1DhC,EAASF,MAAMkC,EAAKzC,KAAK,EAAIyC,GAEzBiC,EAAmDjC,GAAS,CAChE,OAAOhC,EAASF,MAAMkC,EAAKzC,KAAK,GAElC2E,EAAAA,QAA0B,WAAUlF,EAASe,MAAO,CAClDiE,WAAAA,EACAC,cAAAA,EACAP,iBAAAA,EACAvD,aAAAA,EACAM,MAAOZ,EAAQY,MAAQ,CACzB,CAAC,CACH,CAEA0D,EAAa,CACXhD,OAAAA,CACF,CAAC,EAEDiD,EAAAA,UAAU,IAAM,CACd1E,EAASsE,WAAWhC,CAAI,EACxBnC,EAAQmE,WAAWhC,CAAI,CACzB,CAAC,EAEDqC,EAAAA,gBAAgB,IAAM,CACpBxE,EAAQoE,cAAcjC,CAAI,EAC1BtC,EAASuE,cAAcjC,CAAI,CAC7B,CAAC,EAED,MAAMsC,EAAQC,EAAAA,WAGRC,EAAcnF,EAAAA,SAAS,IAEnBkB,EAAKT,QAAU,cAAgBU,EAAaV,OAAWS,EAAKT,QAAU,YAAc,CAACJ,EAASqB,MAAMC,SACxG,CAAEyD,KAAM,gBAAiBC,KAAM,GAAI,GAAGpF,EAAQqF,UAAW,EAC3D,CAAEF,KAAM,iBAAkBC,KAAM,GAAI,GAAGpF,EAAQsF,aAClD,EAEKC,EAAQxF,EAAAA,SAAS,IACdyF,kBAAgBxF,EAAQmF,KAAM,MAAM,CAC5C,EAEKM,EAAW1F,EAAAA,SAAS,IACjB2F,EAAW,YAAChG,EAAU,OAAO,CACrC,EAEY,MAAA,IAAM,OAEjB,MAAMiG,EAA+B,EACnCJ,EAAAA,EAAM/E,QAAN+E,MAAAA,EAAaJ,KAAOS,EAAC,EAACC,UAAM,CAAE,GAAGN,EAAM/E,KAAM,CAAC,EAAI,KAClDoF,EAAC,EACC,OACA,CACEE,MAAO9F,EAAQ+F,UAAY5F,EAAU6F,EAAE,MAAM,EAAI,GACjDC,MAAOvG,EAAS+B,MAAMwE,KACxB,EACAR,EAASjF,KAAK,EAEhBR,EAAQ+F,UAAYH,EAAC,EACnBC,UACA,CACEC,MAAO3F,EAAU6F,EAAE,YAAY,EAC/B,GAAGd,EAAY1E,MACf0F,MAAO,CAAEC,UAAWtE,EAAOrB,MAAQ,kBAAoB,MAAO,EAC/D,EACC,EAAK,EAIL4F,EAAUC,EAAAA,cAAcjG,EAASqB,MAAOlB,EAAQY,MAAQ,CAAC,EAOzDmF,EAAQlG,EAASmG,YACnBX,EAAAA,EACAY,EAAAA,WACA,CACE7F,IAAKI,EACL0F,QAAS5E,EAAOrB,MAChBkG,OAAQ,QACRC,KAAM,GACNC,OAAQ5G,EAAQ6G,aAChBd,UAAW,GACXe,WAAY,GACZC,YAAa/G,EAAQ+G,YACrBC,UAAWhG,EAAiBR,MAC5ByG,WAAY7F,EAAaZ,MACzBoB,mBAAoBA,EAAmBpB,MACvC0G,WAAY1F,EAAmBhB,MAC/B2G,gBAAiB,GACjB,GAAGnH,EAAQoH,UACb,EACA,CACEC,QAASA,IAAAA,OACPzB,OAAAA,EAAC,EACC,MACA,CACEE,MAAO,CAAC5F,EAAOoH,EAAErG,EAAKT,KAAK,EAAGN,EAAOoH,EAAE,iBAAiB,EAAGtH,EAAQ+G,WAAW,EAC9EQ,aAAeC,GAAoBhE,EAAiBgE,EAAK,GAAG,EAC5DC,aAAcA,IAAMrD,EAAiB,EAAI,EACzCsD,QAAUF,GAAoBhE,EAAiBgE,EAAK,GAAG,CACzD,EACA,CACE5B,EAAC,EACC,KACA,CACEE,MAAO,CAAC5F,EAAOT,EAAG,EAAES,EAAOoH,EAAE,OAAO,EAAGpH,EAAOoH,EAC3C,SAAQtG,EAAiBR,OAAO,CAAC,EACpC0F,MAAOE,EAAQ5F,KAChB,EACD,EAACwE,EAAAA,EAAM2C,UAAN3C,YAAAA,EAAAA,KAAAA,EAAiB,CAAC,CACpB,CACF,GAEL2C,QAASA,IACP/B,EAAC,EACC,MACA,CACEE,MAAO3F,EAAU6F,EAAE,OAAO,EAC1BE,MAAO,CAACtD,EAAWpC,MAAO,CAAE+B,gBAAiBA,EAAgB/B,KAAM,CAAC,EACpEoH,QAASxE,CACV,EACDuC,CAAQ,CAEd,CAAC,EAQHC,EAAC,EAACiC,EAAQ,SAAE,GAAI,CACdpC,EAASjF,MAAQoF,EAAC,EAChB,MACA,CACEE,MAAO3F,EAAU6F,EAAE,OAAO,EAC1BE,MAAO,CAACtD,EAAWpC,MAAO,CAAE+B,gBAAiBA,EAAgB/B,KAAM,CAAC,EACpEG,IAAKG,EACL8G,QAASxE,CACV,EACDuC,CAAQ,EACN,KACJC,EAAAA,EACEkC,EAAAA,sBACA,CAAA,EACA,CACEH,QAASA,IACPI,OAAAA,OAAAA,EAAAA,eACEnC,EAAC,EACC,KACA,CACEoC,KAAM,OACNlC,MAAO,CAAC5F,EAAOT,EAAC,EAAIS,EAAOoH,EAAE,QAAQ,CAAC,EACtCpB,MAAOE,EAAQ5F,KACjB,EACA,EAACwE,EAAAA,EAAM2C,UAAN3C,YAAAA,EAAAA,KAAAA,EAAiB,CAAC,EAErB,CAAC,CAACiD,QAAOpG,EAAOrB,KAAK,CAAC,CAAC,EAE5B,CAAA,CACF,CACF,EAEH,OAAOoF,EAAAA,EACL,KACA,CACEE,MAAO,CAAC3F,EAAUV,IAAKU,EAAU+H,GAAG,SAAUlG,EAAOxB,KAAK,EACxDL,EAAU+H,GAAG,SAAUrG,EAAOrB,KAAK,EAAGL,EAAU+H,GAAG,WAAYlI,EAAQsD,QAAQ,CAAC,EAClF0E,KAAM,WACNG,aAAc,GACdC,aAAcvG,EAAOrB,MACrB+G,aAAc/D,EACdiE,aAAcA,IAAMrD,EAAiB,EAAI,EACzCsD,QAASlE,CACX,EACA,CAAC8C,CAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"sub-menu.vue2.js","sources":["../../../../../packages/components/menu/sub-menu.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns = /* hoist-static*/ useNamespace('sub-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 { type IconProps, type Placement, type ToolTipProps, VftCollapseTransition as CollapseTransition, VftIcon as Icon, VftTooltip as Tooltip } from '@vft-ui/components';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { throwError } from '@vft-ui/utils';\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { useTimeoutFn } from '@vueuse/core';\nimport type { CSSProperties, VNodeArrayChildren } from 'vue';\nimport { computed, Fragment, getCurrentInstance, h, inject, onBeforeUnmount, onMounted, provide, reactive, ref, useSlots, vShow, watch, withDirectives } from 'vue';\nimport type { MenuProvider, SubMenuProvider } from './types';\nimport useMenu from './use-menu';\nimport { useMenuCssVar } from './use-menu-css-var';\n\ninterface Props {\n /** 唯一标志 */\n index: string;\n /** 展开 sub-menu 的延时 */\n showTimeout?: number;\n /** 收起 sub-menu 的延时 */\n hideTimeout?: number;\n /** 为 popper 添加类名 */\n popperClass?: ClassType;\n /** 是否禁用 */\n disabled?: boolean;\n popperAppendToBody?: boolean;\n /** 弹出窗口偏移 */\n popperOffset?: number;\n expandIcon?: IconProps;\n collapseIcon?: IconProps;\n title?: string;\n icon?: IconProps | string;\n showArrow?: boolean;\n toolTipCfg?: ToolTipProps;\n}\n\ndefineProps({\n \"index\": null,\n \"showTimeout\": { default: 300 },\n \"hideTimeout\": { default: 300 },\n \"popperClass\": null,\n \"disabled\": { type: Boolean, },\n \"popperAppendToBody\": { type: Boolean, default: undefined },\n \"popperOffset\": { default: 6 },\n \"expandIcon\": { default: {} },\n \"collapseIcon\": { default: {} },\n \"title\": null,\n \"icon\": null,\n \"showArrow\": { type: Boolean, default: true },\n \"toolTipCfg\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\n// 返回当前 sub-menu 对应的 indexPath 页面中对 submenu 定义的 index parentMenu -> vft-menu 组件\nconst { indexPath, parentMenu } = useMenu(instance, computed(() => __props.index));\n\nconst nsMenu = useNamespace('menu');\nconst nsSubMenu = useNamespace('sub-menu');\n\n// 接受 vft-menu 组件中注入的数据\nconst rootMenu = inject<MenuProvider>('rootMenu');\nif (!rootMenu) throwError(ns.b(), 'can not inject root menu');\n\n// 接受 vft-menu 组件中注入的数据 parentMenu.value!.uid 当前 sub-menu 组件对应的 menu.vue 组件\nconst subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value!.uid}`);\nif (!subMenu) throwError(ns.b(), 'can not inject sub menu');\n\n/**\n * 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\nconst subMenus = ref<MenuProvider['subMenus']>({});\n\nlet timeout: (() => void) | undefined;\nconst mouseInChild = ref(false);\n\n// sub-menu-title 的 ref\nconst verticalTitleRef = ref<HTMLDivElement>();\n// tooltip 的实例\nconst vPopper = ref(null);\n\n// toolTop 的展示位置\nconst currentPlacement = computed<Placement>(\n () => (mode.value === 'horizontal' && isFirstLevel.value ? 'bottom-start' : 'right-start'));\n\n// 是否为第一级的 subMenu\nconst isFirstLevel = computed(() => {\n return subMenu.level === 0;\n});\n\nconst appendToBody = computed(() => {\n return __props.popperAppendToBody === undefined ? isFirstLevel.value : Boolean(__props.popperAppendToBody);\n});\n\n// toolTip 弹出的动画名称\nconst menuTransitionName = computed(\n () => (rootMenu.props.collapse ? `${nsMenu.namespace.value}-zoom-in-left` : `${nsMenu.namespace.value}-zoom-in-top`));\n\nconst fallbackPlacements = computed<Placement[]>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? ['bottom-start', 'bottom-end', 'top-start', 'top-end', 'right-start', 'left-start']\n : ['right-start', 'left-start', 'bottom-start', 'bottom-end', 'top-start', 'top-end']\n);\n\n// 获取当前的 index 是否包含在 openedMenus 中,表示当前 sub-menu 是否已经展开,子节点就是通过这个使用 v-show 来显隐\nconst opened = computed(() => rootMenu.openedMenus.includes(__props.index));\n\nconst active = computed(() => {\n let isActive = false;\n Object.values(subMenus.value).forEach((subItem) => {\n if (subItem.active) {\n isActive = true;\n }\n });\n if (__props.index === rootMenu.activeIndex) {\n isActive = true;\n }\n return isActive;\n});\n\nconst backgroundColor = computed(() => rootMenu.props.backgroundColor || '');\n\nconst activeTextColor = computed(() => rootMenu.props.activeTextColor || '');\n\nconst textColor = computed(() => rootMenu.props.textColor || '');\n\nconst mode = computed(() => rootMenu.props.mode);\n\nconst item = reactive({\n index: __props.index,\n indexPath,\n active\n});\n\n//\nconst titleStyle = computed<CSSProperties>(() => {\n if (mode.value !== 'horizontal') {\n return {\n color: textColor.value\n };\n }\n return {\n borderBottomColor: active.value ? (rootMenu.props.activeTextColor ? activeTextColor.value : '') : 'transparent',\n color: active.value ? activeTextColor.value : textColor.value\n };\n});\n\n// 销毁 toolTip\nconst doDestroy = () => vPopper.value?.popperRef?.popperInstanceRef?.destroy();\n\n// 当菜单收缩展开时执行销毁 toolTip\nconst handleCollapseToggle = (value: boolean) => {\n if (!value) {\n doDestroy();\n }\n};\n\n// sub-menu 菜单点击事件\nconst handleClick = () => {\n // 以下几种情况不执行点击事件操作\n if ((rootMenu.props.menuTrigger === 'hover' && rootMenu.props.mode === 'horizontal') || (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) return;\n\n // 调用 menn.vue 中的 handleSubMenuClick 点击事件,传入参数\n rootMenu.handleSubMenuClick({\n index: __props.index,\n indexPath: indexPath.value,\n active: active.value\n });\n};\n\n// 滑入 sub-menu 菜单事件\nconst handleMouseenter = (event: MouseEvent | FocusEvent, _showTimeout = __props.showTimeout) => {\n if (event.type === 'focus') {\n return;\n }\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) {\n return;\n }\n subMenu.mouseInChild.value = true;\n\n // 根据 _showTimeout 展开滑入的菜单子项\n timeout?.();\n ({ stop: timeout } = useTimeoutFn(() => {\n rootMenu.openMenu(__props.index, indexPath.value);\n }, _showTimeout));\n\n if (appendToBody.value) {\n parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'));\n }\n};\n\n// 离开滑入的菜单\nconst handleMouseleave = (deepDispatch = false) => {\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')) {\n return;\n }\n timeout?.();\n subMenu.mouseInChild.value = false;\n ({ stop: timeout } = useTimeoutFn(\n () => !mouseInChild.value && rootMenu.closeMenu(__props.index, indexPath.value),\n __props.hideTimeout));\n\n if (appendToBody.value && deepDispatch) {\n if (instance.parent?.type.name === 'vft-sub-menu') {\n subMenu.handleMouseleave?.(true);\n }\n }\n};\n\n// 监听菜单的收缩展开决定是否销毁 ToolTip\nwatch(\n () => rootMenu.props.collapse,\n (value) => handleCollapseToggle(Boolean(value))\n);\n\n// 以下代码在 menu-item.vue 中触发\n{\n /**\n * 此函数在 menu-item 中触发,items.value 默认为空对象\n * 最后添加后的 items 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\n const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item;\n };\n const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index];\n };\n provide<SubMenuProvider>(`subMenu:${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n handleMouseleave,\n mouseInChild,\n level: subMenu.level + 1\n });\n}\n\ndefineExpose({\n opened\n});\n\nonMounted(() => {\n rootMenu.addSubMenu(item);\n subMenu.addSubMenu(item);\n});\n\nonBeforeUnmount(() => {\n subMenu.removeSubMenu(item);\n rootMenu.removeSubMenu(item);\n});\n\nconst slots = useSlots();\n\n// 箭头设置\nconst subMenuIcon = computed(() => {\n // 水平模式第一级 或者 竖直非折叠\n return (mode.value === 'horizontal' && isFirstLevel.value) || (mode.value === 'vertical' && !rootMenu.props.collapse)\n ? { icon: 'vi-arrow-down', size: 20, ...__props.expandIcon } :\n { icon: 'vi-arrow-right', size: 18, ...__props.collapseIcon };\n});\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst titleCon = computed(() => {\n return renderTNode(instance, 'title');\n});\n\ndefineRender(() => {\n // sub-menu 的标题以及展开箭头 icon 相关\n const titleTag: VNodeArrayChildren = [\n _icon.value?.icon ? h(Icon, { ..._icon.value }) : null,\n h(\n 'span',\n {\n class: __props.showArrow ? nsSubMenu.e('text') : '',\n title: instance.props.title\n },\n titleCon.value\n ),\n __props.showArrow ? h(\n Icon,\n {\n class: nsSubMenu.e('icon-arrow'),\n ...subMenuIcon.value,\n style: { transform: opened.value ? 'rotateZ(180deg)' : 'none' }\n }\n ) : false\n ];\n\n // 给 vft-menu class 这一栏加入 level 等级,以此来区分当前的 level: --vft-menu-level:2;\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1);\n\n /**\n * rootMenu.isMenuPopup 是否需要 tooltip 1.水平模式的菜单需要 2.竖直类型的菜单在收缩时需要\n * 如果需要 tooltip 用 h 函数渲染时,则采用 ElTooltip 组件\n * @type {VNode}\n */\n const child = rootMenu.isMenuPopup\n ? h(\n Tooltip,\n {\n ref: vPopper,\n visible: opened.value,\n effect: 'light',\n pure: true,\n offset: __props.popperOffset,\n showArrow: false,\n persistent: true,\n popperClass: __props.popperClass,\n placement: currentPlacement.value,\n teleported: appendToBody.value,\n fallbackPlacements: fallbackPlacements.value,\n transition: menuTransitionName.value,\n gpuAcceleration: false,\n ...__props.toolTipCfg\n },\n {\n content: () =>\n h(\n 'div',\n {\n class: [nsMenu.m(mode.value), nsMenu.m('popup-container'), __props.popperClass],\n onMouseenter: (evt: MouseEvent) => handleMouseenter(evt, 100),\n onMouseleave: () => handleMouseleave(true),\n onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100)\n },\n [\n h(\n 'ul',\n {\n class: [nsMenu.b(), nsMenu.m('popup'), nsMenu.m(\n `popup-${currentPlacement.value}`)],\n style: ulStyle.value\n },\n [slots.default?.()]\n )\n ]\n ),\n default: () =>\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n onClick: handleClick\n },\n titleTag\n )\n }\n )\n :\n /**\n * Fragment 碎片化节点,可以让 dom 没有根节点\n *\n * 以下是无需 tooltip 渲染的组件,通常是侧边栏没有折叠的时候\n */\n h(Fragment, {}, [\n titleCon.value ? h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n ref: verticalTitleRef,\n onClick: handleClick\n },\n titleTag\n ) : null,\n h(\n CollapseTransition,\n {},\n {\n default: () =>\n withDirectives(\n h(\n 'ul',\n {\n role: 'menu',\n class: [nsMenu.b(), nsMenu.m('inline')],\n style: ulStyle.value\n },\n [slots.default?.()]\n ),\n [[vShow, opened.value]]\n )\n }\n )\n ]);\n\n return h(\n 'li',\n {\n class: [nsSubMenu.b(), nsSubMenu.is('active', active.value),\n nsSubMenu.is('opened', opened.value), nsSubMenu.is('disabled', __props.disabled)],\n role: 'menuitem',\n ariaHaspopup: true,\n ariaExpanded: opened.value,\n onMouseenter: handleMouseenter,\n onMouseleave: () => handleMouseleave(true),\n onFocus: handleMouseenter\n },\n [child]\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","name","b","instance","getCurrentInstance","indexPath","parentMenu","useMenu","computed","__props","index","nsMenu","nsSubMenu","rootMenu","inject","throwError","subMenu","value","uid","subMenus","ref","timeout","mouseInChild","verticalTitleRef","vPopper","currentPlacement","mode","isFirstLevel","level","appendToBody","popperAppendToBody","undefined","Boolean","menuTransitionName","props","collapse","namespace","fallbackPlacements","opened","openedMenus","includes","active","isActive","Object","values","forEach","subItem","activeIndex","backgroundColor","activeTextColor","textColor","item","reactive","titleStyle","color","borderBottomColor","doDestroy","popperRef","popperInstanceRef","destroy","handleCollapseToggle","handleClick","menuTrigger","disabled","handleSubMenuClick","handleMouseenter","event","_showTimeout","showTimeout","type","stop","useTimeoutFn","openMenu","vnode","el","dispatchEvent","MouseEvent","handleMouseleave","deepDispatch","closeMenu","hideTimeout","parent","watch","addSubMenu","removeSubMenu","provide","expose","onMounted","onBeforeUnmount","slots","useSlots","subMenuIcon","icon","size","expandIcon","collapseIcon","_icon","singleAttrToObj","titleCon","renderTNode","titleTag","h","Icon","class","showArrow","e","title","style","transform","ulStyle","useMenuCssVar","child","isMenuPopup","Tooltip","visible","effect","pure","offset","popperOffset","persistent","popperClass","placement","teleported","transition","gpuAcceleration","toolTipCfg","content","m","onMouseenter","evt","onMouseleave","onFocus","default","onClick","Fragment","CollapseTransition","withDirectives","role","vShow","is","ariaHaspopup","ariaExpanded"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("../../utils/vue/install.js");require("vue");require("@vue/shared");require("@vft/utils");const r=require("./method.js"),e=require("./types.js"),s=t.withInstallFunction(r.default,"$message");exports.messageDefaults=e.messageDefaults;exports.messageTypes=e.messageTypes;exports.VftMessage=s;exports.default=s;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/components/message/index.ts"],"sourcesContent":["import { withInstallFunction } from '@vft-ui/utils'\n\nimport Message from './method'\n\nexport const VftMessage = withInstallFunction(Message, '$message')\nexport default VftMessage\n\nexport * from './types'\n"],"names":["VftMessage","withInstallFunction","Message"],"mappings":"6QAIaA,EAAaC,EAAAA,oBAAoBC,EAAAA,QAAS,UAAU"}
|