vft 0.0.9 → 0.0.13
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/_virtual/_plugin-vue_export-helper.mjs +10 -0
- package/es/_virtual/_plugin-vue_export-helper.mjs.map +1 -0
- package/es/component.mjs +16 -3
- package/es/component.mjs.map +1 -1
- package/es/components/avatar/avatar.vue2.mjs +18 -14
- package/es/components/avatar/avatar.vue2.mjs.map +1 -1
- package/es/components/back-top/back-top.vue2.mjs +19 -10
- package/es/components/back-top/back-top.vue2.mjs.map +1 -1
- package/es/components/collapse-transition/index.d.ts +4 -0
- package/es/components/collapse-transition/index.mjs +10 -0
- package/es/components/collapse-transition/index.mjs.map +1 -0
- package/es/components/collapse-transition/src/collapse-transition.vue.d.ts +2 -0
- package/es/components/collapse-transition/src/collapse-transition.vue.mjs +5 -0
- package/es/components/collapse-transition/src/collapse-transition.vue.mjs.map +1 -0
- package/es/components/collapse-transition/src/collapse-transition.vue2.mjs +47 -0
- package/es/components/collapse-transition/src/collapse-transition.vue2.mjs.map +1 -0
- package/es/components/collapse-transition/style/css.d.ts +0 -0
- package/es/components/collapse-transition/style/css.mjs +3 -0
- package/es/components/collapse-transition/style/css.mjs.map +1 -0
- package/es/components/collapse-transition/style/index.d.ts +0 -0
- package/es/components/collapse-transition/style/index.mjs +3 -0
- package/es/components/collapse-transition/style/index.mjs.map +1 -0
- package/es/components/divider/divider.vue2.mjs +14 -10
- package/es/components/divider/divider.vue2.mjs.map +1 -1
- package/es/components/empty/empty.vue2.mjs +16 -12
- package/es/components/empty/empty.vue2.mjs.map +1 -1
- package/es/components/focus-trap/focus-trap.vue.d.ts +32 -0
- package/es/components/focus-trap/focus-trap.vue.mjs +11 -0
- package/es/components/focus-trap/focus-trap.vue.mjs.map +1 -0
- package/es/components/focus-trap/focus-trap.vue2.mjs +160 -0
- package/es/components/focus-trap/focus-trap.vue2.mjs.map +1 -0
- package/es/components/focus-trap/index.d.ts +5 -0
- package/es/components/focus-trap/index.mjs +26 -0
- package/es/components/focus-trap/index.mjs.map +1 -0
- package/es/components/focus-trap/tokens.d.ts +13 -0
- package/es/components/focus-trap/tokens.mjs +18 -0
- package/es/components/focus-trap/tokens.mjs.map +1 -0
- package/es/components/focus-trap/utils.d.ts +29 -0
- package/es/components/focus-trap/utils.mjs +90 -0
- package/es/components/focus-trap/utils.mjs.map +1 -0
- package/es/components/icon/icon.vue2.mjs +19 -15
- package/es/components/icon/icon.vue2.mjs.map +1 -1
- package/es/components/index.d.ts +5 -0
- package/es/components/index.mjs +32 -13
- package/es/components/index.mjs.map +1 -1
- package/es/components/menu/index.d.ts +504 -0
- package/es/components/menu/index.mjs +21 -0
- package/es/components/menu/index.mjs.map +1 -0
- package/es/components/menu/menu-collapse-transition.vue.d.ts +5 -0
- package/es/components/menu/menu-collapse-transition.vue.mjs +16 -0
- package/es/components/menu/menu-collapse-transition.vue.mjs.map +1 -0
- package/es/components/menu/menu-collapse-transition.vue2.mjs +34 -0
- package/es/components/menu/menu-collapse-transition.vue2.mjs.map +1 -0
- package/es/components/menu/menu-item-group.vue.d.ts +13 -0
- package/es/components/menu/menu-item-group.vue.mjs +5 -0
- package/es/components/menu/menu-item-group.vue.mjs.map +1 -0
- package/es/components/menu/menu-item-group.vue2.mjs +39 -0
- package/es/components/menu/menu-item-group.vue2.mjs.map +1 -0
- package/es/components/menu/menu-item.vue.d.ts +81 -0
- package/es/components/menu/menu-item.vue.mjs +5 -0
- package/es/components/menu/menu-item.vue.mjs.map +1 -0
- package/es/components/menu/menu-item.vue2.mjs +115 -0
- package/es/components/menu/menu-item.vue2.mjs.map +1 -0
- package/es/components/menu/menu.vue.d.ts +109 -0
- package/es/components/menu/menu.vue.mjs +5 -0
- package/es/components/menu/menu.vue.mjs.map +1 -0
- package/es/components/menu/menu.vue2.mjs +207 -0
- package/es/components/menu/menu.vue2.mjs.map +1 -0
- package/es/components/menu/style/css.d.ts +0 -0
- package/es/components/menu/style/css.mjs +3 -0
- package/es/components/menu/style/css.mjs.map +1 -0
- package/es/components/menu/style/index.d.ts +0 -0
- package/es/components/menu/style/index.mjs +3 -0
- package/es/components/menu/style/index.mjs.map +1 -0
- package/es/components/menu/sub-menu.vue.d.ts +112 -0
- package/es/components/menu/sub-menu.vue.mjs +5 -0
- package/es/components/menu/sub-menu.vue.mjs.map +1 -0
- package/es/components/menu/sub-menu.vue2.mjs +232 -0
- package/es/components/menu/sub-menu.vue2.mjs.map +1 -0
- package/es/components/menu/types.d.ts +59 -0
- package/es/components/menu/types.mjs +2 -0
- package/es/components/menu/types.mjs.map +1 -0
- package/es/components/menu/use-menu-css-var.d.ts +1 -0
- package/es/components/menu/use-menu-css-var.mjs +18 -0
- package/es/components/menu/use-menu-css-var.mjs.map +1 -0
- package/es/components/menu/use-menu.d.ts +14 -0
- package/es/components/menu/use-menu.mjs +23 -0
- package/es/components/menu/use-menu.mjs.map +1 -0
- package/es/components/menu/utils/menu-bar.d.ts +7 -0
- package/es/components/menu/utils/menu-bar.mjs +16 -0
- package/es/components/menu/utils/menu-bar.mjs.map +1 -0
- package/es/components/menu/utils/menu-item.d.ts +9 -0
- package/es/components/menu/utils/menu-item.mjs +42 -0
- package/es/components/menu/utils/menu-item.mjs.map +1 -0
- package/es/components/menu/utils/submenu.d.ts +12 -0
- package/es/components/menu/utils/submenu.mjs +45 -0
- package/es/components/menu/utils/submenu.mjs.map +1 -0
- package/es/components/menu-item/style/css.d.ts +0 -0
- package/es/components/menu-item/style/css.mjs +3 -0
- package/es/components/menu-item/style/css.mjs.map +1 -0
- package/es/components/menu-item/style/index.d.ts +0 -0
- package/es/components/menu-item/style/index.mjs +3 -0
- package/es/components/menu-item/style/index.mjs.map +1 -0
- package/es/components/menu-item-group/style/css.d.ts +0 -0
- package/es/components/menu-item-group/style/css.mjs +3 -0
- package/es/components/menu-item-group/style/css.mjs.map +1 -0
- package/es/components/menu-item-group/style/index.d.ts +0 -0
- package/es/components/menu-item-group/style/index.mjs +3 -0
- package/es/components/menu-item-group/style/index.mjs.map +1 -0
- package/es/components/popover/directive.d.ts +4 -0
- package/es/components/popover/directive.mjs +16 -0
- package/es/components/popover/directive.mjs.map +1 -0
- package/es/components/popover/index.d.ts +181 -0
- package/es/components/popover/index.mjs +11 -0
- package/es/components/popover/index.mjs.map +1 -0
- package/es/components/popover/popover.vue.d.ts +187 -0
- package/es/components/popover/popover.vue.mjs +5 -0
- package/es/components/popover/popover.vue.mjs.map +1 -0
- package/es/components/popover/popover.vue2.mjs +117 -0
- package/es/components/popover/popover.vue2.mjs.map +1 -0
- package/es/components/popover/style/css.d.ts +0 -0
- package/es/components/popover/style/css.mjs +4 -0
- package/es/components/popover/style/css.mjs.map +1 -0
- package/es/components/popover/style/index.d.ts +0 -0
- package/es/components/popover/style/index.mjs +4 -0
- package/es/components/popover/style/index.mjs.map +1 -0
- package/es/components/popover/types.mjs +2 -0
- package/es/components/popover/types.mjs.map +1 -0
- package/es/components/popper/arrow.vue.d.ts +18 -0
- package/es/components/popper/arrow.vue.mjs +5 -0
- package/es/components/popper/arrow.vue.mjs.map +1 -0
- package/es/components/popper/arrow.vue2.mjs +47 -0
- package/es/components/popper/arrow.vue2.mjs.map +1 -0
- package/es/components/popper/composables/index.d.ts +3 -0
- package/es/components/popper/composables/index.mjs +9 -0
- package/es/components/popper/composables/index.mjs.map +1 -0
- package/es/components/popper/composables/use-content-dom.d.ts +16 -0
- package/es/components/popper/composables/use-content-dom.mjs +43 -0
- package/es/components/popper/composables/use-content-dom.mjs.map +1 -0
- package/es/components/popper/composables/use-content.d.ts +77 -0
- package/es/components/popper/composables/use-content.mjs +64 -0
- package/es/components/popper/composables/use-content.mjs.map +1 -0
- package/es/components/popper/composables/use-focus-trap.d.ts +11 -0
- package/es/components/popper/composables/use-focus-trap.mjs +28 -0
- package/es/components/popper/composables/use-focus-trap.mjs.map +1 -0
- package/es/components/popper/constants.d.ts +24 -0
- package/es/components/popper/constants.mjs +6 -0
- package/es/components/popper/constants.mjs.map +1 -0
- package/es/components/popper/content.vue.d.ts +222 -0
- package/es/components/popper/content.vue.mjs +5 -0
- package/es/components/popper/content.vue.mjs.map +1 -0
- package/es/components/popper/content.vue2.mjs +144 -0
- package/es/components/popper/content.vue2.mjs.map +1 -0
- package/es/components/popper/index.d.ts +18 -0
- package/es/components/popper/index.mjs +17 -0
- package/es/components/popper/index.mjs.map +1 -0
- package/es/components/popper/popper.vue.d.ts +13 -0
- package/es/components/popper/popper.vue.mjs +5 -0
- package/es/components/popper/popper.vue.mjs.map +1 -0
- package/es/components/popper/popper.vue2.mjs +40 -0
- package/es/components/popper/popper.vue2.mjs.map +1 -0
- package/es/components/popper/style/css.d.ts +0 -0
- package/es/components/popper/style/css.mjs +3 -0
- package/es/components/popper/style/css.mjs.map +1 -0
- package/es/components/popper/style/index.d.ts +0 -0
- package/es/components/popper/style/index.mjs +3 -0
- package/es/components/popper/style/index.mjs.map +1 -0
- package/es/components/popper/trigger.vue.d.ts +99 -0
- package/es/components/popper/trigger.vue.mjs +5 -0
- package/es/components/popper/trigger.vue.mjs.map +1 -0
- package/es/components/popper/trigger.vue2.mjs +118 -0
- package/es/components/popper/trigger.vue2.mjs.map +1 -0
- package/es/components/popper/types.d.ts +45 -0
- package/es/components/popper/types.mjs +2 -0
- package/es/components/popper/types.mjs.map +1 -0
- package/es/components/popper/utils.d.ts +49 -0
- package/es/components/popper/utils.mjs +56 -0
- package/es/components/popper/utils.mjs.map +1 -0
- package/es/components/result/result.vue2.mjs +30 -21
- package/es/components/result/result.vue2.mjs.map +1 -1
- package/es/components/slot/index.d.ts +2 -0
- package/es/components/slot/index.mjs +6 -0
- package/es/components/slot/index.mjs.map +1 -0
- package/es/components/slot/only-child.d.ts +7 -0
- package/es/components/slot/only-child.mjs +60 -0
- package/es/components/slot/only-child.mjs.map +1 -0
- package/es/components/sub-menu/style/css.d.ts +0 -0
- package/es/components/sub-menu/style/css.mjs +3 -0
- package/es/components/sub-menu/style/css.mjs.map +1 -0
- package/es/components/sub-menu/style/index.d.ts +0 -0
- package/es/components/sub-menu/style/index.mjs +3 -0
- package/es/components/sub-menu/style/index.mjs.map +1 -0
- package/es/components/tabs/index.d.ts +21 -103
- package/es/components/tabs/index.mjs +5 -5
- package/es/components/tabs/index.mjs.map +1 -1
- package/es/components/tabs/tab-bar.vue2.mjs +14 -11
- package/es/components/tabs/tab-bar.vue2.mjs.map +1 -1
- package/es/components/tabs/tab-nav.vue2.mjs +91 -75
- package/es/components/tabs/tab-nav.vue2.mjs.map +1 -1
- package/es/components/tabs/tab-pane.vue2.mjs +32 -26
- package/es/components/tabs/tab-pane.vue2.mjs.map +1 -1
- package/es/components/tabs/tabs.vue2.mjs +52 -47
- package/es/components/tabs/tabs.vue2.mjs.map +1 -1
- package/es/components/tooltip/constants.d.ts +18 -0
- package/es/components/tooltip/constants.mjs +5 -0
- package/es/components/tooltip/constants.mjs.map +1 -0
- package/es/components/tooltip/content.vue.d.ts +268 -0
- package/es/components/tooltip/content.vue.mjs +5 -0
- package/es/components/tooltip/content.vue.mjs.map +1 -0
- package/es/components/tooltip/content.vue2.mjs +175 -0
- package/es/components/tooltip/content.vue2.mjs.map +1 -0
- package/es/components/tooltip/index.d.ts +396 -0
- package/es/components/tooltip/index.mjs +11 -0
- package/es/components/tooltip/index.mjs.map +1 -0
- package/es/components/tooltip/style/css.d.ts +0 -0
- package/es/components/tooltip/style/css.mjs +4 -0
- package/es/components/tooltip/style/css.mjs.map +1 -0
- package/es/components/tooltip/style/index.d.ts +0 -0
- package/es/components/tooltip/style/index.mjs +4 -0
- package/es/components/tooltip/style/index.mjs.map +1 -0
- package/es/components/tooltip/tooltip.vue.d.ts +470 -0
- package/es/components/tooltip/tooltip.vue.mjs +5 -0
- package/es/components/tooltip/tooltip.vue.mjs.map +1 -0
- package/es/components/tooltip/tooltip.vue2.mjs +224 -0
- package/es/components/tooltip/tooltip.vue2.mjs.map +1 -0
- package/es/components/tooltip/trigger.vue.d.ts +54 -0
- package/es/components/tooltip/trigger.vue.mjs +5 -0
- package/es/components/tooltip/trigger.vue.mjs.map +1 -0
- package/es/components/tooltip/trigger.vue2.mjs +91 -0
- package/es/components/tooltip/trigger.vue2.mjs.map +1 -0
- package/es/components/tooltip/types.d.ts +53 -0
- package/es/components/tooltip/types.mjs +2 -0
- package/es/components/tooltip/types.mjs.map +1 -0
- package/es/components/tooltip/utils.d.ts +11 -0
- package/es/components/tooltip/utils.mjs +19 -0
- package/es/components/tooltip/utils.mjs.map +1 -0
- package/es/hooks/index.d.ts +8 -0
- package/es/hooks/index.mjs +32 -6
- package/es/hooks/index.mjs.map +1 -1
- package/es/hooks/use-delayed-toggle/index.d.ts +10 -0
- package/es/hooks/use-delayed-toggle/index.mjs +21 -0
- package/es/hooks/use-delayed-toggle/index.mjs.map +1 -0
- package/es/hooks/use-forward-ref/index.d.ts +9 -0
- package/es/hooks/use-forward-ref/index.mjs +24 -0
- package/es/hooks/use-forward-ref/index.mjs.map +1 -0
- package/es/hooks/use-id/index.d.ts +9 -0
- package/es/hooks/use-id/index.mjs +29 -0
- package/es/hooks/use-id/index.mjs.map +1 -0
- package/es/hooks/use-model-toggle/index.d.ts +25 -0
- package/es/hooks/use-model-toggle/index.mjs +62 -0
- package/es/hooks/use-model-toggle/index.mjs.map +1 -0
- package/es/hooks/use-namespace/index.d.ts +5 -2
- package/es/hooks/use-namespace/index.mjs +32 -27
- package/es/hooks/use-namespace/index.mjs.map +1 -1
- package/es/hooks/use-popper/index.d.ts +78 -0
- package/es/hooks/use-popper/index.mjs +98 -0
- package/es/hooks/use-popper/index.mjs.map +1 -0
- package/es/hooks/use-popper-container/index.d.ts +5 -0
- package/es/hooks/use-popper-container/index.mjs +27 -0
- package/es/hooks/use-popper-container/index.mjs.map +1 -0
- package/es/hooks/use-timeout/index.d.ts +4 -0
- package/es/hooks/use-timeout/index.mjs +15 -0
- package/es/hooks/use-timeout/index.mjs.map +1 -0
- package/es/hooks/use-z-index/index.d.ts +7 -0
- package/es/hooks/use-z-index/index.mjs +18 -0
- package/es/hooks/use-z-index/index.mjs.map +1 -0
- package/es/index.mjs +92 -47
- package/es/index.mjs.map +1 -1
- package/es/package.json.mjs +1 -1
- package/es/style.css +1 -1
- package/es/theme-style/src/collapse-transition.scss.mjs +5 -0
- package/es/theme-style/src/collapse-transition.scss.mjs.map +1 -0
- package/es/theme-style/src/menu-item-group.scss.mjs +5 -0
- package/es/theme-style/src/menu-item-group.scss.mjs.map +1 -0
- package/es/theme-style/src/menu-item.scss.mjs +5 -0
- package/es/theme-style/src/menu-item.scss.mjs.map +1 -0
- package/es/theme-style/src/menu.scss.mjs +5 -0
- package/es/theme-style/src/menu.scss.mjs.map +1 -0
- package/es/theme-style/src/popover.scss.mjs +5 -0
- package/es/theme-style/src/popover.scss.mjs.map +1 -0
- package/es/theme-style/src/popper.scss.mjs +5 -0
- package/es/theme-style/src/popper.scss.mjs.map +1 -0
- package/es/theme-style/src/sub-menu.scss.mjs +5 -0
- package/es/theme-style/src/sub-menu.scss.mjs.map +1 -0
- package/es/theme-style/src/tooltip.scss.mjs +5 -0
- package/es/theme-style/src/tooltip.scss.mjs.map +1 -0
- package/es/utils/event.d.ts +6 -0
- package/es/utils/event.mjs +10 -0
- package/es/utils/event.mjs.map +1 -0
- package/es/utils/index.d.ts +2 -0
- package/es/utils/index.mjs +24 -19
- package/es/utils/index.mjs.map +1 -1
- package/es/utils/typescript.d.ts +12 -0
- package/es/utils/typescript.mjs +5 -0
- package/es/utils/typescript.mjs.map +1 -0
- package/lib/_virtual/_plugin-vue_export-helper.js +2 -0
- package/lib/_virtual/_plugin-vue_export-helper.js.map +1 -0
- package/lib/component.js +1 -1
- package/lib/component.js.map +1 -1
- package/lib/components/avatar/avatar.vue2.js +1 -1
- package/lib/components/avatar/avatar.vue2.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/collapse-transition/index.d.ts +4 -0
- package/lib/components/collapse-transition/index.js +2 -0
- package/lib/components/collapse-transition/index.js.map +1 -0
- package/lib/components/collapse-transition/src/collapse-transition.vue.d.ts +2 -0
- package/lib/components/collapse-transition/src/collapse-transition.vue.js +2 -0
- package/lib/components/collapse-transition/src/collapse-transition.vue.js.map +1 -0
- package/lib/components/collapse-transition/src/collapse-transition.vue2.js +2 -0
- package/lib/components/collapse-transition/src/collapse-transition.vue2.js.map +1 -0
- package/lib/components/collapse-transition/style/css.d.ts +0 -0
- package/lib/components/collapse-transition/style/css.js +2 -0
- package/lib/components/collapse-transition/style/css.js.map +1 -0
- package/lib/components/collapse-transition/style/index.d.ts +0 -0
- package/lib/components/collapse-transition/style/index.js +2 -0
- package/lib/components/collapse-transition/style/index.js.map +1 -0
- package/lib/components/divider/divider.vue2.js +1 -1
- package/lib/components/divider/divider.vue2.js.map +1 -1
- package/lib/components/empty/empty.vue2.js +1 -1
- package/lib/components/empty/empty.vue2.js.map +1 -1
- package/lib/components/focus-trap/focus-trap.vue.d.ts +32 -0
- package/lib/components/focus-trap/focus-trap.vue.js +2 -0
- package/lib/components/focus-trap/focus-trap.vue.js.map +1 -0
- package/lib/components/focus-trap/focus-trap.vue2.js +2 -0
- package/lib/components/focus-trap/focus-trap.vue2.js.map +1 -0
- package/lib/components/focus-trap/index.d.ts +5 -0
- package/lib/components/focus-trap/index.js +2 -0
- package/lib/components/focus-trap/index.js.map +1 -0
- package/lib/components/focus-trap/tokens.d.ts +13 -0
- package/lib/components/focus-trap/tokens.js +2 -0
- package/lib/components/focus-trap/tokens.js.map +1 -0
- package/lib/components/focus-trap/utils.d.ts +29 -0
- package/lib/components/focus-trap/utils.js +2 -0
- package/lib/components/focus-trap/utils.js.map +1 -0
- package/lib/components/icon/icon.vue2.js +1 -1
- package/lib/components/icon/icon.vue2.js.map +1 -1
- package/lib/components/index.d.ts +5 -0
- package/lib/components/index.js +1 -1
- package/lib/components/menu/index.d.ts +504 -0
- package/lib/components/menu/index.js +2 -0
- package/lib/components/menu/index.js.map +1 -0
- package/lib/components/menu/menu-collapse-transition.vue.d.ts +5 -0
- package/lib/components/menu/menu-collapse-transition.vue.js +2 -0
- package/lib/components/menu/menu-collapse-transition.vue.js.map +1 -0
- package/lib/components/menu/menu-collapse-transition.vue2.js +2 -0
- package/lib/components/menu/menu-collapse-transition.vue2.js.map +1 -0
- package/lib/components/menu/menu-item-group.vue.d.ts +13 -0
- package/lib/components/menu/menu-item-group.vue.js +2 -0
- package/lib/components/menu/menu-item-group.vue.js.map +1 -0
- package/lib/components/menu/menu-item-group.vue2.js +2 -0
- package/lib/components/menu/menu-item-group.vue2.js.map +1 -0
- package/lib/components/menu/menu-item.vue.d.ts +81 -0
- package/lib/components/menu/menu-item.vue.js +2 -0
- package/lib/components/menu/menu-item.vue.js.map +1 -0
- package/lib/components/menu/menu-item.vue2.js +2 -0
- package/lib/components/menu/menu-item.vue2.js.map +1 -0
- package/lib/components/menu/menu.vue.d.ts +109 -0
- package/lib/components/menu/menu.vue.js +2 -0
- package/lib/components/menu/menu.vue.js.map +1 -0
- package/lib/components/menu/menu.vue2.js +2 -0
- package/lib/components/menu/menu.vue2.js.map +1 -0
- package/lib/components/menu/style/css.d.ts +0 -0
- package/lib/components/menu/style/css.js +2 -0
- package/lib/components/menu/style/css.js.map +1 -0
- package/lib/components/menu/style/index.d.ts +0 -0
- package/lib/components/menu/style/index.js +2 -0
- package/lib/components/menu/style/index.js.map +1 -0
- package/lib/components/menu/sub-menu.vue.d.ts +112 -0
- package/lib/components/menu/sub-menu.vue.js +2 -0
- package/lib/components/menu/sub-menu.vue.js.map +1 -0
- package/lib/components/menu/sub-menu.vue2.js +2 -0
- package/lib/components/menu/sub-menu.vue2.js.map +1 -0
- package/lib/components/menu/types.d.ts +59 -0
- package/lib/components/menu/types.js +2 -0
- package/lib/components/menu/types.js.map +1 -0
- package/lib/components/menu/use-menu-css-var.d.ts +1 -0
- package/lib/components/menu/use-menu-css-var.js +2 -0
- package/lib/components/menu/use-menu-css-var.js.map +1 -0
- package/lib/components/menu/use-menu.d.ts +14 -0
- package/lib/components/menu/use-menu.js +2 -0
- package/lib/components/menu/use-menu.js.map +1 -0
- package/lib/components/menu/utils/menu-bar.d.ts +7 -0
- package/lib/components/menu/utils/menu-bar.js +2 -0
- package/lib/components/menu/utils/menu-bar.js.map +1 -0
- package/lib/components/menu/utils/menu-item.d.ts +9 -0
- package/lib/components/menu/utils/menu-item.js +2 -0
- package/lib/components/menu/utils/menu-item.js.map +1 -0
- package/lib/components/menu/utils/submenu.d.ts +12 -0
- package/lib/components/menu/utils/submenu.js +2 -0
- package/lib/components/menu/utils/submenu.js.map +1 -0
- package/lib/components/menu-item/style/css.d.ts +0 -0
- package/lib/components/menu-item/style/css.js +2 -0
- package/lib/components/menu-item/style/css.js.map +1 -0
- package/lib/components/menu-item/style/index.d.ts +0 -0
- package/lib/components/menu-item/style/index.js +2 -0
- package/lib/components/menu-item/style/index.js.map +1 -0
- package/lib/components/menu-item-group/style/css.d.ts +0 -0
- package/lib/components/menu-item-group/style/css.js +2 -0
- package/lib/components/menu-item-group/style/css.js.map +1 -0
- package/lib/components/menu-item-group/style/index.d.ts +0 -0
- package/lib/components/menu-item-group/style/index.js +2 -0
- package/lib/components/menu-item-group/style/index.js.map +1 -0
- package/lib/components/popover/directive.d.ts +4 -0
- package/lib/components/popover/directive.js +2 -0
- package/lib/components/popover/directive.js.map +1 -0
- package/lib/components/popover/index.d.ts +181 -0
- package/lib/components/popover/index.js +2 -0
- package/lib/components/popover/index.js.map +1 -0
- package/lib/components/popover/popover.vue.d.ts +187 -0
- package/lib/components/popover/popover.vue.js +2 -0
- package/lib/components/popover/popover.vue.js.map +1 -0
- package/lib/components/popover/popover.vue2.js +2 -0
- package/lib/components/popover/popover.vue2.js.map +1 -0
- package/lib/components/popover/style/css.d.ts +0 -0
- package/lib/components/popover/style/css.js +2 -0
- package/lib/components/popover/style/css.js.map +1 -0
- package/lib/components/popover/style/index.d.ts +0 -0
- package/lib/components/popover/style/index.js +2 -0
- package/lib/components/popover/style/index.js.map +1 -0
- package/lib/components/popover/types.js +2 -0
- package/lib/components/popover/types.js.map +1 -0
- package/lib/components/popper/arrow.vue.d.ts +18 -0
- package/lib/components/popper/arrow.vue.js +2 -0
- package/lib/components/popper/arrow.vue.js.map +1 -0
- package/lib/components/popper/arrow.vue2.js +2 -0
- package/lib/components/popper/arrow.vue2.js.map +1 -0
- package/lib/components/popper/composables/index.d.ts +3 -0
- package/lib/components/popper/composables/index.js +2 -0
- package/lib/components/popper/composables/index.js.map +1 -0
- package/lib/components/popper/composables/use-content-dom.d.ts +16 -0
- package/lib/components/popper/composables/use-content-dom.js +2 -0
- package/lib/components/popper/composables/use-content-dom.js.map +1 -0
- package/lib/components/popper/composables/use-content.d.ts +77 -0
- package/lib/components/popper/composables/use-content.js +2 -0
- package/lib/components/popper/composables/use-content.js.map +1 -0
- package/lib/components/popper/composables/use-focus-trap.d.ts +11 -0
- package/lib/components/popper/composables/use-focus-trap.js +2 -0
- package/lib/components/popper/composables/use-focus-trap.js.map +1 -0
- package/lib/components/popper/constants.d.ts +24 -0
- package/lib/components/popper/constants.js +2 -0
- package/lib/components/popper/constants.js.map +1 -0
- package/lib/components/popper/content.vue.d.ts +222 -0
- package/lib/components/popper/content.vue.js +2 -0
- package/lib/components/popper/content.vue.js.map +1 -0
- package/lib/components/popper/content.vue2.js +2 -0
- package/lib/components/popper/content.vue2.js.map +1 -0
- package/lib/components/popper/index.d.ts +18 -0
- package/lib/components/popper/index.js +2 -0
- package/lib/components/popper/index.js.map +1 -0
- package/lib/components/popper/popper.vue.d.ts +13 -0
- package/lib/components/popper/popper.vue.js +2 -0
- package/lib/components/popper/popper.vue.js.map +1 -0
- package/lib/components/popper/popper.vue2.js +2 -0
- package/lib/components/popper/popper.vue2.js.map +1 -0
- package/lib/components/popper/style/css.d.ts +0 -0
- package/lib/components/popper/style/css.js +2 -0
- package/lib/components/popper/style/css.js.map +1 -0
- package/lib/components/popper/style/index.d.ts +0 -0
- package/lib/components/popper/style/index.js +2 -0
- package/lib/components/popper/style/index.js.map +1 -0
- package/lib/components/popper/trigger.vue.d.ts +99 -0
- package/lib/components/popper/trigger.vue.js +2 -0
- package/lib/components/popper/trigger.vue.js.map +1 -0
- package/lib/components/popper/trigger.vue2.js +2 -0
- package/lib/components/popper/trigger.vue2.js.map +1 -0
- package/lib/components/popper/types.d.ts +45 -0
- package/lib/components/popper/types.js +2 -0
- package/lib/components/popper/types.js.map +1 -0
- package/lib/components/popper/utils.d.ts +49 -0
- package/lib/components/popper/utils.js +2 -0
- package/lib/components/popper/utils.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/slot/index.d.ts +2 -0
- package/lib/components/slot/index.js +2 -0
- package/lib/components/slot/index.js.map +1 -0
- package/lib/components/slot/only-child.d.ts +7 -0
- package/lib/components/slot/only-child.js +2 -0
- package/lib/components/slot/only-child.js.map +1 -0
- package/lib/components/sub-menu/style/css.d.ts +0 -0
- package/lib/components/sub-menu/style/css.js +2 -0
- package/lib/components/sub-menu/style/css.js.map +1 -0
- package/lib/components/sub-menu/style/index.d.ts +0 -0
- package/lib/components/sub-menu/style/index.js +2 -0
- package/lib/components/sub-menu/style/index.js.map +1 -0
- package/lib/components/tabs/index.d.ts +21 -103
- package/lib/components/tabs/index.js +1 -1
- package/lib/components/tabs/index.js.map +1 -1
- package/lib/components/tabs/tab-bar.vue2.js +1 -1
- package/lib/components/tabs/tab-bar.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/components/tabs/tab-pane.vue2.js +1 -1
- package/lib/components/tabs/tab-pane.vue2.js.map +1 -1
- package/lib/components/tabs/tabs.vue2.js +1 -1
- package/lib/components/tabs/tabs.vue2.js.map +1 -1
- package/lib/components/tooltip/constants.d.ts +18 -0
- package/lib/components/tooltip/constants.js +2 -0
- package/lib/components/tooltip/constants.js.map +1 -0
- package/lib/components/tooltip/content.vue.d.ts +268 -0
- package/lib/components/tooltip/content.vue.js +2 -0
- package/lib/components/tooltip/content.vue.js.map +1 -0
- package/lib/components/tooltip/content.vue2.js +2 -0
- package/lib/components/tooltip/content.vue2.js.map +1 -0
- package/lib/components/tooltip/index.d.ts +396 -0
- package/lib/components/tooltip/index.js +2 -0
- package/lib/components/tooltip/index.js.map +1 -0
- package/lib/components/tooltip/style/css.d.ts +0 -0
- package/lib/components/tooltip/style/css.js +2 -0
- package/lib/components/tooltip/style/css.js.map +1 -0
- package/lib/components/tooltip/style/index.d.ts +0 -0
- package/lib/components/tooltip/style/index.js +2 -0
- package/lib/components/tooltip/style/index.js.map +1 -0
- package/lib/components/tooltip/tooltip.vue.d.ts +470 -0
- package/lib/components/tooltip/tooltip.vue.js +2 -0
- package/lib/components/tooltip/tooltip.vue.js.map +1 -0
- package/lib/components/tooltip/tooltip.vue2.js +2 -0
- package/lib/components/tooltip/tooltip.vue2.js.map +1 -0
- package/lib/components/tooltip/trigger.vue.d.ts +54 -0
- package/lib/components/tooltip/trigger.vue.js +2 -0
- package/lib/components/tooltip/trigger.vue.js.map +1 -0
- package/lib/components/tooltip/trigger.vue2.js +2 -0
- package/lib/components/tooltip/trigger.vue2.js.map +1 -0
- package/lib/components/tooltip/types.d.ts +53 -0
- package/lib/components/tooltip/types.js +2 -0
- package/lib/components/tooltip/types.js.map +1 -0
- package/lib/components/tooltip/utils.d.ts +11 -0
- package/lib/components/tooltip/utils.js +2 -0
- package/lib/components/tooltip/utils.js.map +1 -0
- package/lib/hooks/index.d.ts +8 -0
- package/lib/hooks/index.js +1 -1
- package/lib/hooks/use-delayed-toggle/index.d.ts +10 -0
- package/lib/hooks/use-delayed-toggle/index.js +2 -0
- package/lib/hooks/use-delayed-toggle/index.js.map +1 -0
- package/lib/hooks/use-forward-ref/index.d.ts +9 -0
- package/lib/hooks/use-forward-ref/index.js +2 -0
- package/lib/hooks/use-forward-ref/index.js.map +1 -0
- package/lib/hooks/use-id/index.d.ts +9 -0
- package/lib/hooks/use-id/index.js +6 -0
- package/lib/hooks/use-id/index.js.map +1 -0
- package/lib/hooks/use-model-toggle/index.d.ts +25 -0
- package/lib/hooks/use-model-toggle/index.js +2 -0
- package/lib/hooks/use-model-toggle/index.js.map +1 -0
- package/lib/hooks/use-namespace/index.d.ts +5 -2
- package/lib/hooks/use-namespace/index.js +1 -1
- package/lib/hooks/use-namespace/index.js.map +1 -1
- package/lib/hooks/use-popper/index.d.ts +78 -0
- package/lib/hooks/use-popper/index.js +2 -0
- package/lib/hooks/use-popper/index.js.map +1 -0
- package/lib/hooks/use-popper-container/index.d.ts +5 -0
- package/lib/hooks/use-popper-container/index.js +2 -0
- package/lib/hooks/use-popper-container/index.js.map +1 -0
- package/lib/hooks/use-timeout/index.d.ts +4 -0
- package/lib/hooks/use-timeout/index.js +2 -0
- package/lib/hooks/use-timeout/index.js.map +1 -0
- package/lib/hooks/use-z-index/index.d.ts +7 -0
- package/lib/hooks/use-z-index/index.js +2 -0
- package/lib/hooks/use-z-index/index.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/package.json.js +1 -1
- package/lib/theme-style/src/collapse-transition.scss.js +2 -0
- package/lib/theme-style/src/collapse-transition.scss.js.map +1 -0
- package/lib/theme-style/src/menu-item-group.scss.js +2 -0
- package/lib/theme-style/src/menu-item-group.scss.js.map +1 -0
- package/lib/theme-style/src/menu-item.scss.js +2 -0
- package/lib/theme-style/src/menu-item.scss.js.map +1 -0
- package/lib/theme-style/src/menu.scss.js +2 -0
- package/lib/theme-style/src/menu.scss.js.map +1 -0
- package/lib/theme-style/src/popover.scss.js +2 -0
- package/lib/theme-style/src/popover.scss.js.map +1 -0
- package/lib/theme-style/src/popper.scss.js +2 -0
- package/lib/theme-style/src/popper.scss.js.map +1 -0
- package/lib/theme-style/src/sub-menu.scss.js +2 -0
- package/lib/theme-style/src/sub-menu.scss.js.map +1 -0
- package/lib/theme-style/src/tooltip.scss.js +2 -0
- package/lib/theme-style/src/tooltip.scss.js.map +1 -0
- package/lib/utils/event.d.ts +6 -0
- package/lib/utils/event.js +2 -0
- package/lib/utils/event.js.map +1 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.js +1 -1
- package/lib/utils/typescript.d.ts +12 -0
- package/lib/utils/typescript.js +2 -0
- package/lib/utils/typescript.js.map +1 -0
- package/package.json +3 -1
- package/theme-style/index.css +1 -1
- package/theme-style/src/collapse-transition.scss +0 -0
- package/theme-style/src/common/var.scss +5 -0
- package/theme-style/src/index.scss +7 -0
- package/theme-style/src/menu-item-group.scss +0 -0
- package/theme-style/src/menu-item.scss +0 -0
- package/theme-style/src/menu.scss +341 -0
- package/theme-style/src/popover.scss +62 -0
- package/theme-style/src/popper.scss +108 -0
- package/theme-style/src/sub-menu.scss +0 -0
- package/theme-style/src/tooltip.scss +0 -0
- package/theme-style/vft-collapse-transition.css +0 -0
- package/theme-style/vft-menu-item-group.css +0 -0
- package/theme-style/vft-menu-item.css +0 -0
- package/theme-style/vft-menu.css +1 -0
- package/theme-style/vft-popover.css +1 -0
- package/theme-style/vft-popper.css +1 -0
- package/theme-style/vft-sub-menu.css +0 -0
- package/theme-style/vft-tooltip.css +0 -0
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import { defineComponent as f, getCurrentInstance as z, computed as d, openBlock as
|
|
1
|
+
import { defineComponent as f, getCurrentInstance as z, computed as d, openBlock as i, createElementBlock as n, normalizeClass as l, unref as e, createElementVNode as C, normalizeStyle as T, renderSlot as u, createVNode as A, createCommentVNode as N } from "vue";
|
|
2
2
|
import { renderTNode as E, setSize as _, VNode as O } from "@vft/utils";
|
|
3
3
|
import { useNamespace as k } from "../../hooks/use-namespace/index.mjs";
|
|
4
|
+
import "@popperjs/core";
|
|
5
|
+
import "lodash";
|
|
6
|
+
import "../../hooks/use-z-index/index.mjs";
|
|
7
|
+
import "@vueuse/core";
|
|
4
8
|
import "@vue/shared";
|
|
5
9
|
import { getSizeType as S } from "../../utils/helper.mjs";
|
|
6
10
|
import { EmptyEnum as o } from "./constants.mjs";
|
|
@@ -14,7 +18,7 @@ const h = ["src"], m = (
|
|
|
14
18
|
k("empty")
|
|
15
19
|
), v = f({
|
|
16
20
|
name: m.b()
|
|
17
|
-
}),
|
|
21
|
+
}), Y = /* @__PURE__ */ f({
|
|
18
22
|
...v,
|
|
19
23
|
props: {
|
|
20
24
|
img: null,
|
|
@@ -22,7 +26,7 @@ const h = ["src"], m = (
|
|
|
22
26
|
size: null,
|
|
23
27
|
desc: null
|
|
24
28
|
},
|
|
25
|
-
setup(
|
|
29
|
+
setup(r) {
|
|
26
30
|
const g = z(), t = (/* @__PURE__ */ new Map([
|
|
27
31
|
[
|
|
28
32
|
o.NO_COLLECT,
|
|
@@ -60,39 +64,39 @@ const h = ["src"], m = (
|
|
|
60
64
|
img: b
|
|
61
65
|
}
|
|
62
66
|
]
|
|
63
|
-
])).get(
|
|
64
|
-
return (
|
|
67
|
+
])).get(r.type), y = d(() => r.img || (t == null ? void 0 : t.img)), c = d(() => E(g, "desc", { defaultNode: t == null ? void 0 : t.text })), a = S(r.size);
|
|
68
|
+
return (s, M) => {
|
|
65
69
|
var p;
|
|
66
|
-
return
|
|
70
|
+
return i(), n("div", {
|
|
67
71
|
class: l([e(m).b(), e(a) ? e(m).m(e(a)) : ""])
|
|
68
72
|
}, [
|
|
69
73
|
C("div", {
|
|
70
74
|
class: l(e(m).e("image")),
|
|
71
|
-
style: T(e(a) ? {} : e(_)(((p = e(t)) == null ? void 0 : p.size) ||
|
|
75
|
+
style: T(e(a) ? {} : e(_)(((p = e(t)) == null ? void 0 : p.size) || r.size))
|
|
72
76
|
}, [
|
|
73
|
-
|
|
77
|
+
s.$slots.img ? u(s.$slots, "img", { key: 0 }) : (i(), n("img", {
|
|
74
78
|
key: 1,
|
|
75
79
|
src: e(y),
|
|
76
80
|
alt: ""
|
|
77
81
|
}, null, 8, h))
|
|
78
82
|
], 6),
|
|
79
|
-
e(c) ? (
|
|
83
|
+
e(c) ? (i(), n("span", {
|
|
80
84
|
key: 0,
|
|
81
85
|
class: l(e(m).e("desc"))
|
|
82
86
|
}, [
|
|
83
87
|
A(e(O), { content: e(c) }, null, 8, ["content"])
|
|
84
88
|
], 2)) : N("", !0),
|
|
85
|
-
|
|
89
|
+
s.$slots.default ? (i(), n("div", {
|
|
86
90
|
key: 1,
|
|
87
91
|
class: l(e(m).e("bottom"))
|
|
88
92
|
}, [
|
|
89
|
-
u(
|
|
93
|
+
u(s.$slots, "default")
|
|
90
94
|
], 2)) : N("", !0)
|
|
91
95
|
], 2);
|
|
92
96
|
};
|
|
93
97
|
}
|
|
94
98
|
});
|
|
95
99
|
export {
|
|
96
|
-
|
|
100
|
+
Y as default
|
|
97
101
|
};
|
|
98
102
|
//# sourceMappingURL=empty.vue2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty.vue2.mjs","sources":["../../../../../packages/components/empty/empty.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('empty')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script setup lang=\"ts\">\nimport { renderTNode, setSize, VNode } from '@vft/utils';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { getCurrentInstance, computed } from 'vue';\nimport type { ComponentSize } from '../types';\nimport { getSizeType } from '@vft-ui/utils';\nimport { EmptyEnum } from './constants';\n\nimport NoCollect from './assets/no-collect.png';\nimport NoData from './assets/no-data.png';\nimport NoFilter from './assets/no-filter.png';\nimport NoPageData from './assets/no-page-data.png';\nimport NoSearch from './assets/no-search.png';\n\ninterface EmptyProps {\n /** 图片类型或字符串 支持自定义 slot */\n img?: string;\n type?: EmptyEnum;\n /** 图片大小 */\n size?: ComponentSize | string | number[];\n /** 图片底部描述 支持自定义 slot */\n desc?: string;\n}\n\ndefineProps({\n \"img\": null,\n \"type\": { default: EmptyEnum.NO_DATA },\n \"size\": null,\n \"desc\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance();\n\nconst imgTypeMap = new Map<EmptyEnum, {text: string; img: string; size?: EmptyProps['size']; descStyle?: Record<string, Numberish>}>([\n [\n\t\tEmptyEnum.NO_COLLECT,\n {\n text: '暂无收藏记录',\n img: NoCollect\n }\n ],\n [\n\t\tEmptyEnum.NO_PAGE_DATA,\n {\n text: '没有找到相关信息',\n size: 300,\n img: NoPageData\n }\n ],\n [\n\t\tEmptyEnum.NO_DATA,\n {\n text: '暂无数据',\n img: NoData\n }\n ],\n [\n\t\tEmptyEnum.NO_FILTER,\n {\n text: '此筛选条件下无结果',\n img: NoFilter\n }\n ],\n [\n\t\tEmptyEnum.NO_SEARCH,\n {\n text: '没有搜索结果',\n img: NoSearch\n }\n ]\n]);\n\nconst imgInfos = imgTypeMap.get(__props.type);\n\nconst imgContent = computed(() => __props.img || imgInfos?.img);\n\nconst descContent = computed(() => renderTNode(instance, 'desc', { defaultNode: imgInfos?.text }));\n\nconst _sizeType = getSizeType(__props.size as string);\n</script>\n\n<template>\n <div :class=\"[ns.b(), _sizeType ? ns.m(_sizeType) : '']\">\n <div :class=\"ns.e('image')\" :style=\"_sizeType ? {} : setSize(imgInfos?.size || size)\">\n <slot v-if=\"$slots.img\" name=\"img\" />\n <img v-else :src=\"imgContent\" alt=\"\" />\n </div>\n <span :class=\"ns.e('desc')\" v-if=\"descContent\">\n <v-node :content=\"descContent\" />\n </span>\n <div v-if=\"$slots.default\" :class=\"ns.e('bottom')\">\n <slot />\n </div>\n </div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","imgInfos","EmptyEnum","NoCollect","NoPageData","NoData","NoFilter","NoSearch","__props","imgContent","computed","descContent","renderTNode","_sizeType","getSizeType"],"mappings":"
|
|
1
|
+
{"version":3,"file":"empty.vue2.mjs","sources":["../../../../../packages/components/empty/empty.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('empty')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script setup lang=\"ts\">\nimport { renderTNode, setSize, VNode } from '@vft/utils';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { getCurrentInstance, computed } from 'vue';\nimport type { ComponentSize } from '../types';\nimport { getSizeType } from '@vft-ui/utils';\nimport { EmptyEnum } from './constants';\n\nimport NoCollect from './assets/no-collect.png';\nimport NoData from './assets/no-data.png';\nimport NoFilter from './assets/no-filter.png';\nimport NoPageData from './assets/no-page-data.png';\nimport NoSearch from './assets/no-search.png';\n\ninterface EmptyProps {\n /** 图片类型或字符串 支持自定义 slot */\n img?: string;\n type?: EmptyEnum;\n /** 图片大小 */\n size?: ComponentSize | string | number[];\n /** 图片底部描述 支持自定义 slot */\n desc?: string;\n}\n\ndefineProps({\n \"img\": null,\n \"type\": { default: EmptyEnum.NO_DATA },\n \"size\": null,\n \"desc\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance();\n\nconst imgTypeMap = new Map<EmptyEnum, {text: string; img: string; size?: EmptyProps['size']; descStyle?: Record<string, Numberish>}>([\n [\n\t\tEmptyEnum.NO_COLLECT,\n {\n text: '暂无收藏记录',\n img: NoCollect\n }\n ],\n [\n\t\tEmptyEnum.NO_PAGE_DATA,\n {\n text: '没有找到相关信息',\n size: 300,\n img: NoPageData\n }\n ],\n [\n\t\tEmptyEnum.NO_DATA,\n {\n text: '暂无数据',\n img: NoData\n }\n ],\n [\n\t\tEmptyEnum.NO_FILTER,\n {\n text: '此筛选条件下无结果',\n img: NoFilter\n }\n ],\n [\n\t\tEmptyEnum.NO_SEARCH,\n {\n text: '没有搜索结果',\n img: NoSearch\n }\n ]\n]);\n\nconst imgInfos = imgTypeMap.get(__props.type);\n\nconst imgContent = computed(() => __props.img || imgInfos?.img);\n\nconst descContent = computed(() => renderTNode(instance, 'desc', { defaultNode: imgInfos?.text }));\n\nconst _sizeType = getSizeType(__props.size as string);\n</script>\n\n<template>\n <div :class=\"[ns.b(), _sizeType ? ns.m(_sizeType) : '']\">\n <div :class=\"ns.e('image')\" :style=\"_sizeType ? {} : setSize(imgInfos?.size || size)\">\n <slot v-if=\"$slots.img\" name=\"img\" />\n <img v-else :src=\"imgContent\" alt=\"\" />\n </div>\n <span :class=\"ns.e('desc')\" v-if=\"descContent\">\n <v-node :content=\"descContent\" />\n </span>\n <div v-if=\"$slots.default\" :class=\"ns.e('bottom')\">\n <slot />\n </div>\n </div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","imgInfos","EmptyEnum","NoCollect","NoPageData","NoData","NoFilter","NoSearch","__props","imgContent","computed","descContent","renderTNode","_sizeType","getSizeType"],"mappings":";;;;;;;;;;;;;;;mBACMA;AAAA;AAAA,EAAuBC,EAAa,OAAO;AAAA,GAGjDC,IAA6BC,EAAmB;AAAA,EAC9C,MAAMH,EAAG,EAAE;AACb,CAAC;;;;;;;;;AAoCD,UAAMI,IAAWC,KAyCXC,yBAvCiB,IAA8G;AAAA,MACnI;AAAA,QACAC,EAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,KAAKC;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,QACAD,EAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAKE;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,QACAF,EAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,KAAKG;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,QACAH,EAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,KAAKI;AAAA,QACP;AAAA,MACF;AAAA,MACA;AAAA,QACAJ,EAAU;AAAA,QACR;AAAA,UACE,MAAM;AAAA,UACN,KAAKK;AAAA,QACP;AAAA,MACF;AAAA,IAAA,CACD,GAE2B,IAAIC,EAAQ,IAAI,GAEtCC,IAAaC,EAAS,MAAMF,EAAQ,QAAOP,KAAA,gBAAAA,EAAU,IAAG,GAExDU,IAAcD,EAAS,MAAME,EAAYb,GAAU,QAAQ,EAAE,aAAaE,KAAA,gBAAAA,EAAU,KAAK,CAAC,CAAC,GAE3FY,IAAYC,EAAYN,EAAQ,IAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { PropType } from 'vue';
|
|
2
|
+
declare const _sfc_main: import("vue").DefineComponent<{
|
|
3
|
+
loop: BooleanConstructor;
|
|
4
|
+
trapped: BooleanConstructor;
|
|
5
|
+
focusTrapEl: PropType<HTMLElement>;
|
|
6
|
+
focusStartEl: {
|
|
7
|
+
type: PropType<HTMLElement | "first" | "container">;
|
|
8
|
+
default: string;
|
|
9
|
+
};
|
|
10
|
+
}, {
|
|
11
|
+
onKeydown: (e: KeyboardEvent) => void;
|
|
12
|
+
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("focusin" | "focusout" | "focusAfterTrapped" | "focusAfterReleased" | "focusout-prevented" | "release-requested")[], "focusin" | "focusout" | "focusAfterTrapped" | "focusAfterReleased" | "focusout-prevented" | "release-requested", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
13
|
+
loop: BooleanConstructor;
|
|
14
|
+
trapped: BooleanConstructor;
|
|
15
|
+
focusTrapEl: PropType<HTMLElement>;
|
|
16
|
+
focusStartEl: {
|
|
17
|
+
type: PropType<HTMLElement | "first" | "container">;
|
|
18
|
+
default: string;
|
|
19
|
+
};
|
|
20
|
+
}>> & {
|
|
21
|
+
onFocusin?: ((...args: any[]) => any) | undefined;
|
|
22
|
+
onFocusout?: ((...args: any[]) => any) | undefined;
|
|
23
|
+
onFocusAfterTrapped?: ((...args: any[]) => any) | undefined;
|
|
24
|
+
onFocusAfterReleased?: ((...args: any[]) => any) | undefined;
|
|
25
|
+
"onFocusout-prevented"?: ((...args: any[]) => any) | undefined;
|
|
26
|
+
"onRelease-requested"?: ((...args: any[]) => any) | undefined;
|
|
27
|
+
}, {
|
|
28
|
+
loop: boolean;
|
|
29
|
+
trapped: boolean;
|
|
30
|
+
focusStartEl: HTMLElement | "first" | "container";
|
|
31
|
+
}>;
|
|
32
|
+
export default _sfc_main;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import r from "./focus-trap.vue2.mjs";
|
|
2
|
+
import { renderSlot as e } from "vue";
|
|
3
|
+
import t from "../../_virtual/_plugin-vue_export-helper.mjs";
|
|
4
|
+
function n(o, s, f, p, a, d) {
|
|
5
|
+
return e(o.$slots, "default", { handleKeydown: o.onKeydown });
|
|
6
|
+
}
|
|
7
|
+
const u = /* @__PURE__ */ t(r, [["render", n]]);
|
|
8
|
+
export {
|
|
9
|
+
u as default
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=focus-trap.vue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-trap.vue.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { EVENT_CODE as w } from "@vft/constants";
|
|
2
|
+
import { useEscapeKeydown as j } from "@vft/use";
|
|
3
|
+
import { isString as q } from "@vft/utils";
|
|
4
|
+
import { isNil as x } from "lodash";
|
|
5
|
+
import { defineComponent as J, ref as M, provide as Y, watch as O, unref as E, onMounted as z, onBeforeUnmount as G, nextTick as I } from "vue";
|
|
6
|
+
import { ON_TRAP_FOCUS_EVT as U, ON_RELEASE_FOCUS_EVT as K, FOCUS_TRAP_INJECTION_KEY as H, FOCUS_AFTER_TRAPPED as b, FOCUS_AFTER_TRAPPED_OPTS as k, FOCUS_AFTER_RELEASED as y } from "./tokens.mjs";
|
|
7
|
+
import { useFocusReason as Q, tryFocus as f, createFocusOutPreventedEvent as m, getEdges as W, focusableStack as N, focusFirstDescendant as X, obtainAllFocusableElements as Z, isFocusCausedByUserEvent as $ } from "./utils.mjs";
|
|
8
|
+
const ce = J({
|
|
9
|
+
name: "VftFocusTrap",
|
|
10
|
+
inheritAttrs: !1,
|
|
11
|
+
props: {
|
|
12
|
+
loop: Boolean,
|
|
13
|
+
trapped: Boolean,
|
|
14
|
+
focusTrapEl: Object,
|
|
15
|
+
focusStartEl: {
|
|
16
|
+
type: [Object, String],
|
|
17
|
+
default: "first"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
emits: [
|
|
21
|
+
U,
|
|
22
|
+
K,
|
|
23
|
+
"focusin",
|
|
24
|
+
"focusout",
|
|
25
|
+
"focusout-prevented",
|
|
26
|
+
"release-requested"
|
|
27
|
+
],
|
|
28
|
+
setup(n, { emit: r }) {
|
|
29
|
+
const c = M();
|
|
30
|
+
let l, T;
|
|
31
|
+
const { focusReason: d } = Q();
|
|
32
|
+
j((e) => {
|
|
33
|
+
n.trapped && !i.paused && r("release-requested", e);
|
|
34
|
+
});
|
|
35
|
+
const i = {
|
|
36
|
+
paused: !1,
|
|
37
|
+
pause() {
|
|
38
|
+
this.paused = !0;
|
|
39
|
+
},
|
|
40
|
+
resume() {
|
|
41
|
+
this.paused = !1;
|
|
42
|
+
}
|
|
43
|
+
}, v = (e) => {
|
|
44
|
+
if (!n.loop && !n.trapped || i.paused)
|
|
45
|
+
return;
|
|
46
|
+
const { key: t, altKey: s, ctrlKey: o, metaKey: a, currentTarget: R, shiftKey: h } = e, { loop: D } = n, V = t === w.tab && !s && !o && !a, p = document.activeElement;
|
|
47
|
+
if (V && p) {
|
|
48
|
+
const P = R, [_, C] = W(P);
|
|
49
|
+
if (_ && C) {
|
|
50
|
+
if (!h && p === C) {
|
|
51
|
+
const u = m({
|
|
52
|
+
focusReason: d.value
|
|
53
|
+
});
|
|
54
|
+
r("focusout-prevented", u), u.defaultPrevented || (e.preventDefault(), D && f(_, !0));
|
|
55
|
+
} else if (h && [_, P].includes(p)) {
|
|
56
|
+
const u = m({
|
|
57
|
+
focusReason: d.value
|
|
58
|
+
});
|
|
59
|
+
r("focusout-prevented", u), u.defaultPrevented || (e.preventDefault(), D && f(C, !0));
|
|
60
|
+
}
|
|
61
|
+
} else if (p === P) {
|
|
62
|
+
const u = m({
|
|
63
|
+
focusReason: d.value
|
|
64
|
+
});
|
|
65
|
+
r("focusout-prevented", u), u.defaultPrevented || e.preventDefault();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
Y(H, {
|
|
70
|
+
focusTrapRef: c,
|
|
71
|
+
onKeydown: v
|
|
72
|
+
}), O(
|
|
73
|
+
() => n.focusTrapEl,
|
|
74
|
+
(e) => {
|
|
75
|
+
e && (c.value = e);
|
|
76
|
+
},
|
|
77
|
+
{ immediate: !0 }
|
|
78
|
+
), O([c], ([e], [t]) => {
|
|
79
|
+
e && (e.addEventListener("keydown", v), e.addEventListener("focusin", g), e.addEventListener("focusout", S)), t && (t.removeEventListener("keydown", v), t.removeEventListener("focusin", g), t.removeEventListener("focusout", S));
|
|
80
|
+
});
|
|
81
|
+
const F = (e) => {
|
|
82
|
+
r(U, e);
|
|
83
|
+
}, B = (e) => r(K, e), g = (e) => {
|
|
84
|
+
const t = E(c);
|
|
85
|
+
if (!t)
|
|
86
|
+
return;
|
|
87
|
+
const s = e.target, o = e.relatedTarget, a = s && t.contains(s);
|
|
88
|
+
n.trapped || o && t.contains(o) || (l = o), a && r("focusin", e), !i.paused && n.trapped && (a ? T = s : f(T, !0));
|
|
89
|
+
}, S = (e) => {
|
|
90
|
+
const t = E(c);
|
|
91
|
+
if (!(i.paused || !t))
|
|
92
|
+
if (n.trapped) {
|
|
93
|
+
const s = e.relatedTarget;
|
|
94
|
+
!x(s) && !t.contains(s) && setTimeout(() => {
|
|
95
|
+
if (!i.paused && n.trapped) {
|
|
96
|
+
const o = m({
|
|
97
|
+
focusReason: d.value
|
|
98
|
+
});
|
|
99
|
+
r("focusout-prevented", o), o.defaultPrevented || f(T, !0);
|
|
100
|
+
}
|
|
101
|
+
}, 0);
|
|
102
|
+
} else {
|
|
103
|
+
const s = e.target;
|
|
104
|
+
s && t.contains(s) || r("focusout", e);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
async function L() {
|
|
108
|
+
await I();
|
|
109
|
+
const e = E(c);
|
|
110
|
+
if (e) {
|
|
111
|
+
N.push(i);
|
|
112
|
+
const t = e.contains(
|
|
113
|
+
document.activeElement
|
|
114
|
+
) ? l : document.activeElement;
|
|
115
|
+
if (l = t, !e.contains(t)) {
|
|
116
|
+
const o = new Event(
|
|
117
|
+
b,
|
|
118
|
+
k
|
|
119
|
+
);
|
|
120
|
+
e.addEventListener(b, F), e.dispatchEvent(o), o.defaultPrevented || I(() => {
|
|
121
|
+
let a = n.focusStartEl;
|
|
122
|
+
q(a) || (f(a), document.activeElement !== a && (a = "first")), a === "first" && X(
|
|
123
|
+
Z(e),
|
|
124
|
+
!0
|
|
125
|
+
), (document.activeElement === t || a === "container") && f(e);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function A() {
|
|
131
|
+
const e = E(c);
|
|
132
|
+
if (e) {
|
|
133
|
+
e.removeEventListener(b, F);
|
|
134
|
+
const t = new CustomEvent(y, {
|
|
135
|
+
...k,
|
|
136
|
+
detail: {
|
|
137
|
+
focusReason: d.value
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
e.addEventListener(y, B), e.dispatchEvent(t), !t.defaultPrevented && (d.value == "keyboard" || !$() || e.contains(document.activeElement)) && f(l ?? document.body), e.removeEventListener(y, F), N.remove(i);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return z(() => {
|
|
144
|
+
n.trapped && L(), O(
|
|
145
|
+
() => n.trapped,
|
|
146
|
+
(e) => {
|
|
147
|
+
e ? L() : A();
|
|
148
|
+
}
|
|
149
|
+
);
|
|
150
|
+
}), G(() => {
|
|
151
|
+
n.trapped && A();
|
|
152
|
+
}), {
|
|
153
|
+
onKeydown: v
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
export {
|
|
158
|
+
ce as default
|
|
159
|
+
};
|
|
160
|
+
//# sourceMappingURL=focus-trap.vue2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-trap.vue2.mjs","sources":["../../../../../packages/components/focus-trap/focus-trap.vue"],"sourcesContent":["<template>\n <slot :handle-keydown=\"onKeydown\" />\n</template>\n\n<script lang=\"ts\">\nimport { EVENT_CODE } from '@vft/constants';\nimport { useEscapeKeydown } from '@vft/use';\nimport { isString } from '@vft/utils';\nimport { isNil } from 'lodash';\nimport type { PropType } from 'vue';\nimport {\n defineComponent,\n nextTick,\n onBeforeUnmount,\n onMounted,\n provide,\n ref,\n unref,\n watch\n} from 'vue';\nimport {\n FOCUS_AFTER_RELEASED,\n FOCUS_AFTER_TRAPPED,\n FOCUS_AFTER_TRAPPED_OPTS,\n FOCUS_TRAP_INJECTION_KEY,\n ON_RELEASE_FOCUS_EVT,\n ON_TRAP_FOCUS_EVT\n} from './tokens';\nimport type { FocusLayer } from './utils';\nimport {\n createFocusOutPreventedEvent,\n focusableStack,\n focusFirstDescendant,\n getEdges,\n isFocusCausedByUserEvent,\n obtainAllFocusableElements,\n tryFocus,\n useFocusReason\n} from './utils';\n\nexport default defineComponent({\n name: 'VftFocusTrap',\n inheritAttrs: false,\n props: {\n loop: Boolean,\n trapped: Boolean,\n focusTrapEl: Object as PropType<HTMLElement>,\n focusStartEl: {\n type: [Object, String] as PropType<'container' | 'first' | HTMLElement>,\n default: 'first'\n }\n },\n emits: [\n ON_TRAP_FOCUS_EVT,\n ON_RELEASE_FOCUS_EVT,\n 'focusin',\n 'focusout',\n 'focusout-prevented',\n 'release-requested'\n ],\n setup (props, { emit }) {\n\t\tconst forwardRef = ref<HTMLElement | undefined>()\n\t\tlet lastFocusBeforeTrapped: HTMLElement | null\n\t\tlet lastFocusAfterTrapped: HTMLElement | null\n\n\t\tconst { focusReason } = useFocusReason()\n\n\t\tuseEscapeKeydown((event) => {\n\t\t\tif (props.trapped && !focusLayer.paused) {\n\t\t\t\temit('release-requested', event)\n\t\t\t}\n\t\t})\n\n\t\tconst focusLayer: FocusLayer = {\n\t\t\tpaused: false,\n\t\t\tpause () {\n\t\t\t\tthis.paused = true\n\t\t\t},\n\t\t\tresume () {\n\t\t\t\tthis.paused = false\n\t\t\t},\n\t\t}\n\n\t\tconst onKeydown = (e: KeyboardEvent) => {\n\t\t\tif (!props.loop && !props.trapped) return\n\t\t\tif (focusLayer.paused) return\n\n\t\t\tconst { key, altKey, ctrlKey, metaKey, currentTarget, shiftKey } = e\n\t\t\tconst { loop } = props\n\t\t\tconst isTabbing =\n\t\t\t\tkey === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey\n\n\t\t\tconst currentFocusingEl = document.activeElement\n\t\t\tif (isTabbing && currentFocusingEl) {\n\t\t\t\tconst container = currentTarget as HTMLElement\n\t\t\t\tconst [first, last] = getEdges(container)\n\t\t\t\tconst isTabbable = first && last\n\t\t\t\tif (!isTabbable) {\n\t\t\t\t\tif (currentFocusingEl === container) {\n\t\t\t\t\t\tconst focusoutPreventedEvent = createFocusOutPreventedEvent({\n\t\t\t\t\t\t\tfocusReason: focusReason.value,\n\t\t\t\t\t\t})\n\t\t\t\t\t\temit('focusout-prevented', focusoutPreventedEvent)\n\t\t\t\t\t\tif (!focusoutPreventedEvent.defaultPrevented) {\n\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!shiftKey && currentFocusingEl === last) {\n\t\t\t\t\t\tconst focusoutPreventedEvent = createFocusOutPreventedEvent({\n\t\t\t\t\t\t\tfocusReason: focusReason.value,\n\t\t\t\t\t\t})\n\t\t\t\t\t\temit('focusout-prevented', focusoutPreventedEvent)\n\t\t\t\t\t\tif (!focusoutPreventedEvent.defaultPrevented) {\n\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\tif (loop) tryFocus(first, true)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tshiftKey &&\n\t\t\t\t\t\t[first, container].includes(currentFocusingEl as HTMLElement)\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst focusoutPreventedEvent = createFocusOutPreventedEvent({\n\t\t\t\t\t\t\tfocusReason: focusReason.value,\n\t\t\t\t\t\t})\n\t\t\t\t\t\temit('focusout-prevented', focusoutPreventedEvent)\n\t\t\t\t\t\tif (!focusoutPreventedEvent.defaultPrevented) {\n\t\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\t\tif (loop) tryFocus(last, true)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprovide(FOCUS_TRAP_INJECTION_KEY, {\n\t\t\tfocusTrapRef: forwardRef,\n\t\t\tonKeydown,\n\t\t})\n\n\t\twatch(\n\t\t\t() => props.focusTrapEl,\n\t\t\t(focusTrapEl) => {\n\t\t\t\tif (focusTrapEl) {\n\t\t\t\t\tforwardRef.value = focusTrapEl\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ immediate: true }\n\t\t)\n\n\t\twatch([forwardRef], ([forwardRef], [oldForwardRef]) => {\n\t\t\tif (forwardRef) {\n\t\t\t\tforwardRef.addEventListener('keydown', onKeydown)\n\t\t\t\tforwardRef.addEventListener('focusin', onFocusIn)\n\t\t\t\tforwardRef.addEventListener('focusout', onFocusOut)\n\t\t\t}\n\t\t\tif (oldForwardRef) {\n\t\t\t\toldForwardRef.removeEventListener('keydown', onKeydown)\n\t\t\t\toldForwardRef.removeEventListener('focusin', onFocusIn)\n\t\t\t\toldForwardRef.removeEventListener('focusout', onFocusOut)\n\t\t\t}\n\t\t})\n\n\t\tconst trapOnFocus = (e: Event) => {\n\t\t\temit(ON_TRAP_FOCUS_EVT, e)\n\t\t}\n\t\tconst releaseOnFocus = (e: Event) => emit(ON_RELEASE_FOCUS_EVT, e)\n\n\t\tconst onFocusIn = (e: FocusEvent) => {\n\t\t\tconst trapContainer = unref(forwardRef)\n\t\t\tif (!trapContainer) return\n\n\t\t\tconst target = e.target as HTMLElement | null\n\t\t\tconst relatedTarget = e.relatedTarget as HTMLElement | null\n\t\t\tconst isFocusedInTrap = target && trapContainer.contains(target)\n\n\t\t\tif (!props.trapped) {\n\t\t\t\tconst isPrevFocusedInTrap =\n\t\t\t\t\trelatedTarget && trapContainer.contains(relatedTarget)\n\t\t\t\tif (!isPrevFocusedInTrap) {\n\t\t\t\t\tlastFocusBeforeTrapped = relatedTarget\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isFocusedInTrap) emit('focusin', e)\n\n\t\t\tif (focusLayer.paused) return\n\n\t\t\tif (props.trapped) {\n\t\t\t\tif (isFocusedInTrap) {\n\t\t\t\t\tlastFocusAfterTrapped = target\n\t\t\t\t} else {\n\t\t\t\t\ttryFocus(lastFocusAfterTrapped, true)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst onFocusOut = (e: Event) => {\n\t\t\tconst trapContainer = unref(forwardRef)\n\t\t\tif (focusLayer.paused || !trapContainer) return\n\n\t\t\tif (props.trapped) {\n\t\t\t\tconst relatedTarget = (e as FocusEvent)\n\t\t\t\t\t.relatedTarget as HTMLElement | null\n\t\t\t\tif (!isNil(relatedTarget) && !trapContainer.contains(relatedTarget)) {\n\t\t\t\t\t// Give embedded focus layer time to pause this layer before reclaiming focus\n\t\t\t\t\t// And only reclaim focus if it should currently be trapping\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (!focusLayer.paused && props.trapped) {\n\t\t\t\t\t\t\tconst focusoutPreventedEvent = createFocusOutPreventedEvent({\n\t\t\t\t\t\t\t\tfocusReason: focusReason.value,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\temit('focusout-prevented', focusoutPreventedEvent)\n\t\t\t\t\t\t\tif (!focusoutPreventedEvent.defaultPrevented) {\n\t\t\t\t\t\t\t\ttryFocus(lastFocusAfterTrapped, true)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 0)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst target = e.target as HTMLElement | null\n\t\t\t\tconst isFocusedInTrap = target && trapContainer.contains(target)\n\t\t\t\tif (!isFocusedInTrap) emit('focusout', e)\n\t\t\t}\n\t\t}\n\n\t\tasync function startTrap () {\n\t\t\t// Wait for forwardRef to resolve\n\t\t\tawait nextTick()\n\t\t\tconst trapContainer = unref(forwardRef)\n\t\t\tif (trapContainer) {\n\t\t\t\tfocusableStack.push(focusLayer)\n\t\t\t\tconst prevFocusedElement = trapContainer.contains(\n\t\t\t\t\tdocument.activeElement\n\t\t\t\t)\n\t\t\t\t\t? lastFocusBeforeTrapped\n\t\t\t\t\t: document.activeElement\n\t\t\t\tlastFocusBeforeTrapped = prevFocusedElement as HTMLElement | null\n\t\t\t\tconst isPrevFocusContained = trapContainer.contains(prevFocusedElement)\n\t\t\t\tif (!isPrevFocusContained) {\n\t\t\t\t\tconst focusEvent = new Event(\n\t\t\t\t\t\tFOCUS_AFTER_TRAPPED,\n\t\t\t\t\t\tFOCUS_AFTER_TRAPPED_OPTS\n\t\t\t\t\t)\n\t\t\t\t\ttrapContainer.addEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus)\n\t\t\t\t\ttrapContainer.dispatchEvent(focusEvent)\n\t\t\t\t\tif (!focusEvent.defaultPrevented) {\n\t\t\t\t\t\tnextTick(() => {\n\t\t\t\t\t\t\tlet focusStartEl = props.focusStartEl\n\t\t\t\t\t\t\tif (!isString(focusStartEl)) {\n\t\t\t\t\t\t\t\ttryFocus(focusStartEl)\n\t\t\t\t\t\t\t\tif (document.activeElement !== focusStartEl) {\n\t\t\t\t\t\t\t\t\tfocusStartEl = 'first'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (focusStartEl === 'first') {\n\t\t\t\t\t\t\t\tfocusFirstDescendant(\n\t\t\t\t\t\t\t\t\tobtainAllFocusableElements(trapContainer),\n\t\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tdocument.activeElement === prevFocusedElement ||\n\t\t\t\t\t\t\t\tfocusStartEl === 'container'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\ttryFocus(trapContainer)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction stopTrap () {\n\t\t\tconst trapContainer = unref(forwardRef)\n\n\t\t\tif (trapContainer) {\n\t\t\t\ttrapContainer.removeEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus)\n\n\t\t\t\tconst releasedEvent = new CustomEvent(FOCUS_AFTER_RELEASED, {\n\t\t\t\t\t...FOCUS_AFTER_TRAPPED_OPTS,\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tfocusReason: focusReason.value,\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\ttrapContainer.addEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus)\n\t\t\t\ttrapContainer.dispatchEvent(releasedEvent)\n\t\t\t\tif (\n\t\t\t\t\t!releasedEvent.defaultPrevented &&\n\t\t\t\t\t(focusReason.value == 'keyboard' ||\n\t\t\t\t\t\t!isFocusCausedByUserEvent() ||\n\t\t\t\t\t\ttrapContainer.contains(document.activeElement))\n\t\t\t\t) {\n\t\t\t\t\ttryFocus(lastFocusBeforeTrapped ?? document.body)\n\t\t\t\t}\n\n\t\t\t\ttrapContainer.removeEventListener(FOCUS_AFTER_RELEASED, trapOnFocus)\n\t\t\t\tfocusableStack.remove(focusLayer)\n\t\t\t}\n\t\t}\n\n\t\tonMounted(() => {\n\t\t\tif (props.trapped) {\n\t\t\t\tstartTrap()\n\t\t\t}\n\n\t\t\twatch(\n\t\t\t\t() => props.trapped,\n\t\t\t\t(trapped) => {\n\t\t\t\t\tif (trapped) {\n\t\t\t\t\t\tstartTrap()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstopTrap()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t})\n\n\t\tonBeforeUnmount(() => {\n\t\t\tif (props.trapped) {\n\t\t\t\tstopTrap()\n\t\t\t}\n\t\t})\n\n\t\treturn {\n\t\t\tonKeydown,\n\t\t}\n }\n});\n</script>\n"],"names":["_sfc_main","defineComponent","ON_TRAP_FOCUS_EVT","ON_RELEASE_FOCUS_EVT","props","emit","forwardRef","ref","lastFocusBeforeTrapped","lastFocusAfterTrapped","focusReason","useFocusReason","useEscapeKeydown","event","focusLayer","onKeydown","key","altKey","ctrlKey","metaKey","currentTarget","shiftKey","loop","isTabbing","EVENT_CODE","currentFocusingEl","container","first","last","getEdges","focusoutPreventedEvent","createFocusOutPreventedEvent","tryFocus","provide","FOCUS_TRAP_INJECTION_KEY","watch","focusTrapEl","oldForwardRef","onFocusIn","onFocusOut","trapOnFocus","releaseOnFocus","trapContainer","unref","target","relatedTarget","isFocusedInTrap","isNil","startTrap","nextTick","focusableStack","prevFocusedElement","focusEvent","FOCUS_AFTER_TRAPPED","FOCUS_AFTER_TRAPPED_OPTS","focusStartEl","isString","focusFirstDescendant","obtainAllFocusableElements","stopTrap","releasedEvent","FOCUS_AFTER_RELEASED","isFocusCausedByUserEvent","onMounted","trapped","onBeforeUnmount"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import E from "./focus-trap.vue.mjs";
|
|
2
|
+
import { FOCUSOUT_PREVENTED as _, FOCUSOUT_PREVENTED_OPTS as F, FOCUS_AFTER_RELEASED as o, FOCUS_AFTER_TRAPPED as T, FOCUS_AFTER_TRAPPED_OPTS as O, FOCUS_TRAP_INJECTION_KEY as r, ON_RELEASE_FOCUS_EVT as S, ON_TRAP_FOCUS_EVT as u } from "./tokens.mjs";
|
|
3
|
+
import { createFocusOutPreventedEvent as a, focusFirstDescendant as c, focusableStack as P, getEdges as U, getVisibleElement as n, isFocusCausedByUserEvent as A, isHidden as C, obtainAllFocusableElements as i, tryFocus as l, useFocusReason as d } from "./utils.mjs";
|
|
4
|
+
export {
|
|
5
|
+
_ as FOCUSOUT_PREVENTED,
|
|
6
|
+
F as FOCUSOUT_PREVENTED_OPTS,
|
|
7
|
+
o as FOCUS_AFTER_RELEASED,
|
|
8
|
+
T as FOCUS_AFTER_TRAPPED,
|
|
9
|
+
O as FOCUS_AFTER_TRAPPED_OPTS,
|
|
10
|
+
r as FOCUS_TRAP_INJECTION_KEY,
|
|
11
|
+
S as ON_RELEASE_FOCUS_EVT,
|
|
12
|
+
u as ON_TRAP_FOCUS_EVT,
|
|
13
|
+
E as VftFocusTrap,
|
|
14
|
+
a as createFocusOutPreventedEvent,
|
|
15
|
+
E as default,
|
|
16
|
+
c as focusFirstDescendant,
|
|
17
|
+
P as focusableStack,
|
|
18
|
+
U as getEdges,
|
|
19
|
+
n as getVisibleElement,
|
|
20
|
+
A as isFocusCausedByUserEvent,
|
|
21
|
+
C as isHidden,
|
|
22
|
+
i as obtainAllFocusableElements,
|
|
23
|
+
l as tryFocus,
|
|
24
|
+
d as useFocusReason
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { InjectionKey, Ref } from 'vue';
|
|
2
|
+
export declare const FOCUS_AFTER_TRAPPED = "focus-trap.focus-after-trapped";
|
|
3
|
+
export declare const FOCUS_AFTER_RELEASED = "focus-trap.focus-after-released";
|
|
4
|
+
export declare const FOCUSOUT_PREVENTED = "focus-trap.focusout-prevented";
|
|
5
|
+
export declare const FOCUS_AFTER_TRAPPED_OPTS: EventInit;
|
|
6
|
+
export declare const FOCUSOUT_PREVENTED_OPTS: EventInit;
|
|
7
|
+
export declare const ON_TRAP_FOCUS_EVT = "focusAfterTrapped";
|
|
8
|
+
export declare const ON_RELEASE_FOCUS_EVT = "focusAfterReleased";
|
|
9
|
+
export type FocusTrapInjectionContext = {
|
|
10
|
+
focusTrapRef: Ref<HTMLElement | undefined>;
|
|
11
|
+
onKeydown: (e: KeyboardEvent) => void;
|
|
12
|
+
};
|
|
13
|
+
export declare const FOCUS_TRAP_INJECTION_KEY: InjectionKey<FocusTrapInjectionContext>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const e = "focus-trap.focus-after-trapped", s = "focus-trap.focus-after-released", t = "focus-trap.focusout-prevented", c = {
|
|
2
|
+
cancelable: !0,
|
|
3
|
+
bubbles: !1
|
|
4
|
+
}, E = {
|
|
5
|
+
cancelable: !0,
|
|
6
|
+
bubbles: !1
|
|
7
|
+
}, o = "focusAfterTrapped", _ = "focusAfterReleased", T = Symbol("vftFocusTrap");
|
|
8
|
+
export {
|
|
9
|
+
t as FOCUSOUT_PREVENTED,
|
|
10
|
+
E as FOCUSOUT_PREVENTED_OPTS,
|
|
11
|
+
s as FOCUS_AFTER_RELEASED,
|
|
12
|
+
e as FOCUS_AFTER_TRAPPED,
|
|
13
|
+
c as FOCUS_AFTER_TRAPPED_OPTS,
|
|
14
|
+
T as FOCUS_TRAP_INJECTION_KEY,
|
|
15
|
+
_ as ON_RELEASE_FOCUS_EVT,
|
|
16
|
+
o as ON_TRAP_FOCUS_EVT
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=tokens.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.mjs","sources":["../../../../../packages/components/focus-trap/tokens.ts"],"sourcesContent":["import type { InjectionKey, Ref } from 'vue';\n\nexport const FOCUS_AFTER_TRAPPED = 'focus-trap.focus-after-trapped';\nexport const FOCUS_AFTER_RELEASED = 'focus-trap.focus-after-released';\nexport const FOCUSOUT_PREVENTED = 'focus-trap.focusout-prevented';\nexport const FOCUS_AFTER_TRAPPED_OPTS: EventInit = {\n\tcancelable: true,\n\tbubbles: false,\n};\nexport const FOCUSOUT_PREVENTED_OPTS: EventInit = {\n\tcancelable: true,\n\tbubbles: false,\n};\n\nexport const ON_TRAP_FOCUS_EVT = 'focusAfterTrapped';\nexport const ON_RELEASE_FOCUS_EVT = 'focusAfterReleased';\n\nexport type FocusTrapInjectionContext = {\n\tfocusTrapRef: Ref<HTMLElement | undefined>\n\tonKeydown: (e: KeyboardEvent) => void\n}\n\nexport const FOCUS_TRAP_INJECTION_KEY: InjectionKey<FocusTrapInjectionContext> =\n\tSymbol('vftFocusTrap');\n"],"names":["FOCUS_AFTER_TRAPPED","FOCUS_AFTER_RELEASED","FOCUSOUT_PREVENTED","FOCUS_AFTER_TRAPPED_OPTS","FOCUSOUT_PREVENTED_OPTS","ON_TRAP_FOCUS_EVT","ON_RELEASE_FOCUS_EVT","FOCUS_TRAP_INJECTION_KEY"],"mappings":"AAEO,MAAMA,IAAsB,kCACtBC,IAAuB,mCACvBC,IAAqB,iCACrBC,IAAsC;AAAA,EAClD,YAAY;AAAA,EACZ,SAAS;AACV,GACaC,IAAqC;AAAA,EACjD,YAAY;AAAA,EACZ,SAAS;AACV,GAEaC,IAAoB,qBACpBC,IAAuB,sBAOvBC,IACZ,OAAO,cAAc;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
declare const focusReason: import("vue").Ref<"pointer" | "keyboard" | undefined>;
|
|
2
|
+
declare const lastUserFocusTimestamp: import("vue").Ref<number>;
|
|
3
|
+
declare const lastAutomatedFocusTimestamp: import("vue").Ref<number>;
|
|
4
|
+
export type FocusLayer = {
|
|
5
|
+
paused: boolean;
|
|
6
|
+
pause: () => void;
|
|
7
|
+
resume: () => void;
|
|
8
|
+
};
|
|
9
|
+
export type FocusStack = FocusLayer[];
|
|
10
|
+
export declare const obtainAllFocusableElements: (element: HTMLElement) => HTMLElement[];
|
|
11
|
+
export declare const getVisibleElement: (elements: HTMLElement[], container: HTMLElement) => HTMLElement | undefined;
|
|
12
|
+
export declare const isHidden: (element: HTMLElement, container: HTMLElement) => boolean;
|
|
13
|
+
export declare const getEdges: (container: HTMLElement) => (HTMLElement | undefined)[];
|
|
14
|
+
export declare const tryFocus: (element?: HTMLElement | {
|
|
15
|
+
focus: () => void;
|
|
16
|
+
} | null, shouldSelect?: boolean) => void;
|
|
17
|
+
export declare const focusFirstDescendant: (elements: HTMLElement[], shouldSelect?: boolean) => void;
|
|
18
|
+
export declare const focusableStack: {
|
|
19
|
+
push: (layer: FocusLayer) => void;
|
|
20
|
+
remove: (layer: FocusLayer) => void;
|
|
21
|
+
};
|
|
22
|
+
export declare const isFocusCausedByUserEvent: () => boolean;
|
|
23
|
+
export declare const useFocusReason: () => {
|
|
24
|
+
focusReason: typeof focusReason;
|
|
25
|
+
lastUserFocusTimestamp: typeof lastUserFocusTimestamp;
|
|
26
|
+
lastAutomatedFocusTimestamp: typeof lastAutomatedFocusTimestamp;
|
|
27
|
+
};
|
|
28
|
+
export declare const createFocusOutPreventedEvent: (detail: CustomEventInit['detail']) => CustomEvent<any>;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ref as i, onMounted as v, onBeforeUnmount as p } from "vue";
|
|
2
|
+
import { FOCUSOUT_PREVENTED as F, FOCUSOUT_PREVENTED_OPTS as w } from "./tokens.mjs";
|
|
3
|
+
const a = i(), u = i(0), d = i(0);
|
|
4
|
+
let r = 0;
|
|
5
|
+
const T = (e) => {
|
|
6
|
+
const n = [], o = document.createTreeWalker(e, NodeFilter.SHOW_ELEMENT, {
|
|
7
|
+
acceptNode: (t) => {
|
|
8
|
+
const s = t.tagName === "INPUT" && t.type === "hidden";
|
|
9
|
+
return t.disabled || t.hidden || s ? NodeFilter.FILTER_SKIP : t.tabIndex >= 0 || t === document.activeElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
for (; o.nextNode(); )
|
|
13
|
+
n.push(o.currentNode);
|
|
14
|
+
return n;
|
|
15
|
+
}, l = (e, n) => {
|
|
16
|
+
for (const o of e)
|
|
17
|
+
if (!N(o, n))
|
|
18
|
+
return o;
|
|
19
|
+
}, N = (e, n) => {
|
|
20
|
+
if (process.env.NODE_ENV === "test")
|
|
21
|
+
return !1;
|
|
22
|
+
if (getComputedStyle(e).visibility === "hidden")
|
|
23
|
+
return !0;
|
|
24
|
+
for (; e; ) {
|
|
25
|
+
if (n && e === n)
|
|
26
|
+
return !1;
|
|
27
|
+
if (getComputedStyle(e).display === "none")
|
|
28
|
+
return !0;
|
|
29
|
+
e = e.parentElement;
|
|
30
|
+
}
|
|
31
|
+
return !1;
|
|
32
|
+
}, R = (e) => {
|
|
33
|
+
const n = T(e), o = l(n, e), t = l(n.reverse(), e);
|
|
34
|
+
return [o, t];
|
|
35
|
+
}, y = (e) => e instanceof HTMLInputElement && "select" in e, S = (e, n) => {
|
|
36
|
+
if (e && e.focus) {
|
|
37
|
+
const o = document.activeElement;
|
|
38
|
+
e.focus({ preventScroll: !0 }), d.value = window.performance.now(), e !== o && y(e) && n && e.select();
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
function m(e, n) {
|
|
42
|
+
const o = [...e], t = e.indexOf(n);
|
|
43
|
+
return t !== -1 && o.splice(t, 1), o;
|
|
44
|
+
}
|
|
45
|
+
const L = () => {
|
|
46
|
+
let e = [];
|
|
47
|
+
return {
|
|
48
|
+
push: (t) => {
|
|
49
|
+
const s = e[0];
|
|
50
|
+
s && t !== s && s.pause(), e = m(e, t), e.unshift(t);
|
|
51
|
+
},
|
|
52
|
+
remove: (t) => {
|
|
53
|
+
var s, f;
|
|
54
|
+
e = m(e, t), (f = (s = e[0]) == null ? void 0 : s.resume) == null || f.call(s);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}, k = (e, n = !1) => {
|
|
58
|
+
const o = document.activeElement;
|
|
59
|
+
for (const t of e)
|
|
60
|
+
if (S(t, n), document.activeElement !== o)
|
|
61
|
+
return;
|
|
62
|
+
}, C = L(), I = () => u.value > d.value, c = () => {
|
|
63
|
+
a.value = "pointer", u.value = window.performance.now();
|
|
64
|
+
}, E = () => {
|
|
65
|
+
a.value = "keyboard", u.value = window.performance.now();
|
|
66
|
+
}, O = () => (v(() => {
|
|
67
|
+
r === 0 && (document.addEventListener("mousedown", c), document.addEventListener("touchstart", c), document.addEventListener("keydown", E)), r++;
|
|
68
|
+
}), p(() => {
|
|
69
|
+
r--, r <= 0 && (document.removeEventListener("mousedown", c), document.removeEventListener("touchstart", c), document.removeEventListener("keydown", E));
|
|
70
|
+
}), {
|
|
71
|
+
focusReason: a,
|
|
72
|
+
lastUserFocusTimestamp: u,
|
|
73
|
+
lastAutomatedFocusTimestamp: d
|
|
74
|
+
}), P = (e) => new CustomEvent(F, {
|
|
75
|
+
...w,
|
|
76
|
+
detail: e
|
|
77
|
+
});
|
|
78
|
+
export {
|
|
79
|
+
P as createFocusOutPreventedEvent,
|
|
80
|
+
k as focusFirstDescendant,
|
|
81
|
+
C as focusableStack,
|
|
82
|
+
R as getEdges,
|
|
83
|
+
l as getVisibleElement,
|
|
84
|
+
I as isFocusCausedByUserEvent,
|
|
85
|
+
N as isHidden,
|
|
86
|
+
T as obtainAllFocusableElements,
|
|
87
|
+
S as tryFocus,
|
|
88
|
+
O as useFocusReason
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../../../../../packages/components/focus-trap/utils.ts"],"sourcesContent":["import { onBeforeUnmount, onMounted, ref } from 'vue'\nimport { FOCUSOUT_PREVENTED, FOCUSOUT_PREVENTED_OPTS } from './tokens'\n\nconst focusReason = ref<'pointer' | 'keyboard'>()\nconst lastUserFocusTimestamp = ref<number>(0)\nconst lastAutomatedFocusTimestamp = ref<number>(0)\nlet focusReasonUserCount = 0\n\nexport type FocusLayer = {\n\tpaused: boolean\n\tpause: () => void\n\tresume: () => void\n}\n\nexport type FocusStack = FocusLayer[]\n\nexport const obtainAllFocusableElements = (\n\telement: HTMLElement\n): HTMLElement[] => {\n\tconst nodes: HTMLElement[] = []\n\tconst walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT, {\n\t\tacceptNode: (\n\t\t\tnode: Element & {\n\t\t\t\tdisabled: boolean\n\t\t\t\thidden: boolean\n\t\t\t\ttype: string\n\t\t\t\ttabIndex: number\n\t\t\t}\n\t\t) => {\n\t\t\tconst isHiddenInput = node.tagName === 'INPUT' && node.type === 'hidden'\n\t\t\tif (node.disabled || node.hidden || isHiddenInput)\n\t\t\t\treturn NodeFilter.FILTER_SKIP\n\t\t\treturn node.tabIndex >= 0 || node === document.activeElement\n\t\t\t\t? NodeFilter.FILTER_ACCEPT\n\t\t\t\t: NodeFilter.FILTER_SKIP\n\t\t},\n\t})\n\twhile (walker.nextNode()) nodes.push(walker.currentNode as HTMLElement)\n\t\n\treturn nodes\n}\n\nexport const getVisibleElement = (\n\telements: HTMLElement[],\n\tcontainer: HTMLElement\n) => {\n\tfor (const element of elements) {\n\t\tif (!isHidden(element, container)) return element\n\t}\n}\n\nexport const isHidden = (element: HTMLElement, container: HTMLElement) => {\n\tif (process.env.NODE_ENV === 'test') return false\n\tif (getComputedStyle(element).visibility === 'hidden') return true\n\t\n\twhile (element) {\n\t\tif (container && element === container) return false\n\t\tif (getComputedStyle(element).display === 'none') return true\n\t\telement = element.parentElement as HTMLElement\n\t}\n\t\n\treturn false\n}\n\nexport const getEdges = (container: HTMLElement) => {\n\tconst focusable = obtainAllFocusableElements(container)\n\tconst first = getVisibleElement(focusable, container)\n\tconst last = getVisibleElement(focusable.reverse(), container)\n\treturn [first, last]\n}\n\nconst isSelectable = (\n\telement: any\n): element is HTMLInputElement & {select: () => void} => {\n\treturn element instanceof HTMLInputElement && 'select' in element\n}\n\nexport const tryFocus = (\n\telement?: HTMLElement | {focus: () => void} | null,\n\tshouldSelect?: boolean\n) => {\n\tif (element && element.focus) {\n\t\tconst prevFocusedElement = document.activeElement\n\t\telement.focus({ preventScroll: true })\n\t\tlastAutomatedFocusTimestamp.value = window.performance.now()\n\t\tif (\n\t\t\telement !== prevFocusedElement &&\n\t\t\tisSelectable(element) &&\n\t\t\tshouldSelect\n\t\t) {\n\t\t\telement.select()\n\t\t}\n\t}\n}\n\nfunction removeFromStack<T> (list: T[], item: T) {\n\tconst copy = [...list]\n\t\n\tconst idx = list.indexOf(item)\n\t\n\tif (idx !== -1) {\n\t\tcopy.splice(idx, 1)\n\t}\n\treturn copy\n}\n\nconst createFocusableStack = () => {\n\tlet stack = [] as FocusStack\n\t\n\tconst push = (layer: FocusLayer) => {\n\t\tconst currentLayer = stack[0]\n\t\t\n\t\tif (currentLayer && layer !== currentLayer) {\n\t\t\tcurrentLayer.pause()\n\t\t}\n\t\t\n\t\tstack = removeFromStack(stack, layer)\n\t\tstack.unshift(layer)\n\t}\n\t\n\tconst remove = (layer: FocusLayer) => {\n\t\tstack = removeFromStack(stack, layer)\n\t\tstack[0]?.resume?.()\n\t}\n\t\n\treturn {\n\t\tpush,\n\t\tremove,\n\t}\n}\n\nexport const focusFirstDescendant = (\n\telements: HTMLElement[],\n\tshouldSelect = false\n) => {\n\tconst prevFocusedElement = document.activeElement\n\tfor (const element of elements) {\n\t\ttryFocus(element, shouldSelect)\n\t\tif (document.activeElement !== prevFocusedElement) return\n\t}\n}\n\nexport const focusableStack = createFocusableStack()\n\nexport const isFocusCausedByUserEvent = (): boolean => {\n\treturn lastUserFocusTimestamp.value > lastAutomatedFocusTimestamp.value\n}\n\nconst notifyFocusReasonPointer = () => {\n\tfocusReason.value = 'pointer'\n\tlastUserFocusTimestamp.value = window.performance.now()\n}\n\nconst notifyFocusReasonKeydown = () => {\n\tfocusReason.value = 'keyboard'\n\tlastUserFocusTimestamp.value = window.performance.now()\n}\n\nexport const useFocusReason = (): {\n\tfocusReason: typeof focusReason\n\tlastUserFocusTimestamp: typeof lastUserFocusTimestamp\n\tlastAutomatedFocusTimestamp: typeof lastAutomatedFocusTimestamp\n} => {\n\tonMounted(() => {\n\t\tif (focusReasonUserCount === 0) {\n\t\t\tdocument.addEventListener('mousedown', notifyFocusReasonPointer)\n\t\t\tdocument.addEventListener('touchstart', notifyFocusReasonPointer)\n\t\t\tdocument.addEventListener('keydown', notifyFocusReasonKeydown)\n\t\t}\n\t\tfocusReasonUserCount++\n\t})\n\t\n\tonBeforeUnmount(() => {\n\t\tfocusReasonUserCount--\n\t\tif (focusReasonUserCount <= 0) {\n\t\t\tdocument.removeEventListener('mousedown', notifyFocusReasonPointer)\n\t\t\tdocument.removeEventListener('touchstart', notifyFocusReasonPointer)\n\t\t\tdocument.removeEventListener('keydown', notifyFocusReasonKeydown)\n\t\t}\n\t})\n\t\n\treturn {\n\t\tfocusReason,\n\t\tlastUserFocusTimestamp,\n\t\tlastAutomatedFocusTimestamp,\n\t}\n}\n\nexport const createFocusOutPreventedEvent = (\n\tdetail: CustomEventInit['detail']\n) => {\n\treturn new CustomEvent(FOCUSOUT_PREVENTED, {\n\t\t...FOCUSOUT_PREVENTED_OPTS,\n\t\tdetail,\n\t})\n}\n"],"names":["focusReason","ref","lastUserFocusTimestamp","lastAutomatedFocusTimestamp","focusReasonUserCount","obtainAllFocusableElements","element","nodes","walker","node","isHiddenInput","getVisibleElement","elements","container","isHidden","getEdges","focusable","first","last","isSelectable","tryFocus","shouldSelect","prevFocusedElement","removeFromStack","list","item","copy","idx","createFocusableStack","stack","layer","currentLayer","_b","_a","focusFirstDescendant","focusableStack","isFocusCausedByUserEvent","notifyFocusReasonPointer","notifyFocusReasonKeydown","useFocusReason","onMounted","onBeforeUnmount","createFocusOutPreventedEvent","detail","FOCUSOUT_PREVENTED","FOCUSOUT_PREVENTED_OPTS"],"mappings":"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"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as t, computed as i, openBlock as c, createElementBlock as s, renderSlot as r } from "vue";
|
|
2
2
|
import { addUnit as a } from "@vft/utils";
|
|
3
|
-
import { useNamespace as
|
|
3
|
+
import { useNamespace as f } from "../../hooks/use-namespace/index.mjs";
|
|
4
|
+
import "@popperjs/core";
|
|
5
|
+
import "lodash";
|
|
6
|
+
import "../../hooks/use-z-index/index.mjs";
|
|
7
|
+
import "@vueuse/core";
|
|
4
8
|
import "@vue/shared";
|
|
5
|
-
const
|
|
9
|
+
const u = (
|
|
6
10
|
/* hoist-static*/
|
|
7
|
-
|
|
8
|
-
), m =
|
|
9
|
-
name:
|
|
10
|
-
}),
|
|
11
|
+
f("icon")
|
|
12
|
+
), m = t({
|
|
13
|
+
name: u.b()
|
|
14
|
+
}), b = /* @__PURE__ */ t({
|
|
11
15
|
...m,
|
|
12
16
|
props: {
|
|
13
17
|
dot: { type: Boolean },
|
|
@@ -21,18 +25,18 @@ const f = (
|
|
|
21
25
|
scale: null
|
|
22
26
|
},
|
|
23
27
|
emits: ["click"],
|
|
24
|
-
setup(
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
return
|
|
28
|
+
setup(e, { emit: d }) {
|
|
29
|
+
i(() => {
|
|
30
|
+
const o = {};
|
|
31
|
+
return e.color && (o.color = e.color), e.size && (o.fontSize = a(e.size)), e.spin && (o.animation = "vft-rotate 1s linear 0s infinite"), e.cursor && (o.cursor = "pointer"), e.scale && (o.transform = "scale(0.8)"), o;
|
|
28
32
|
});
|
|
29
|
-
const
|
|
30
|
-
return
|
|
31
|
-
r(
|
|
33
|
+
const n = ((o) => o == null ? void 0 : o.includes("/"))(e.icon), l = i(() => e.classPrefix);
|
|
34
|
+
return i(() => n ? "" : [e.icon.startsWith("vi-") ? "vicon" : "iconfont", `${l.value || ""}${e.icon}`]), (o, B) => (c(), s("div", null, [
|
|
35
|
+
r(o.$slots, "default")
|
|
32
36
|
]));
|
|
33
37
|
}
|
|
34
38
|
});
|
|
35
39
|
export {
|
|
36
|
-
|
|
40
|
+
b as default
|
|
37
41
|
};
|
|
38
42
|
//# sourceMappingURL=icon.vue2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icon.vue2.mjs","sources":["../../../../../packages/components/icon/icon.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('icon')\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 { computed, type CSSProperties, inject } from 'vue';\nimport { addUnit } from '@vft/utils';\nimport { useNamespace } from '@vft-ui/hooks';\n\nexport interface IconProps {\n /** 是否显示图标右上角小红点 */\n dot?: boolean;\n /** 图标名称或图片链接 */\n icon: string;\n /** 图标大小 */\n size?: Numberish;\n /** 图标右上角徽标的内容 */\n badge?: Numberish;\n /** 图标颜色 */\n color?: string;\n /** 类名前缀,用于使用自定义图标 */\n classPrefix?: string;\n spin?: boolean;\n cursor?: boolean;\n scale?: number\n}\n\nconst emit = defineEmits(['click']);\n\ndefineProps({\n \"dot\": { type: Boolean, },\n \"icon\": null,\n \"size\": null,\n \"badge\": null,\n \"color\": null,\n \"classPrefix\": null,\n \"spin\": { type: Boolean, },\n \"cursor\": { type: Boolean, },\n \"scale\": null\n})\n\n\n\n;\n\nconst style = computed(() => {\n const _style: CSSProperties = {};\n if (__props.color) {\n _style['color'] = __props.color;\n }\n if (__props.size) {\n _style['fontSize'] = addUnit(__props.size);\n }\n if (__props.spin) {\n _style['animation'] = '
|
|
1
|
+
{"version":3,"file":"icon.vue2.mjs","sources":["../../../../../packages/components/icon/icon.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('icon')\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 { computed, type CSSProperties, inject } from 'vue';\nimport { addUnit } from '@vft/utils';\nimport { useNamespace } from '@vft-ui/hooks';\n\nexport interface IconProps {\n /** 是否显示图标右上角小红点 */\n dot?: boolean;\n /** 图标名称或图片链接 */\n icon: string;\n /** 图标大小 */\n size?: Numberish;\n /** 图标右上角徽标的内容 */\n badge?: Numberish;\n /** 图标颜色 */\n color?: string;\n /** 类名前缀,用于使用自定义图标 */\n classPrefix?: string;\n spin?: boolean;\n cursor?: boolean;\n scale?: number\n}\n\nconst emit = defineEmits(['click']);\n\ndefineProps({\n \"dot\": { type: Boolean, },\n \"icon\": null,\n \"size\": null,\n \"badge\": null,\n \"color\": null,\n \"classPrefix\": null,\n \"spin\": { type: Boolean, },\n \"cursor\": { type: Boolean, },\n \"scale\": null\n})\n\n\n\n;\n\nconst style = computed(() => {\n const _style: CSSProperties = {};\n if (__props.color) {\n _style['color'] = __props.color;\n }\n if (__props.size) {\n _style['fontSize'] = addUnit(__props.size);\n }\n if (__props.spin) {\n _style['animation'] = 'vft-rotate 1s linear 0s infinite';\n }\n if (__props.cursor) {\n _style['cursor'] = 'pointer';\n }\n if (__props.scale) {\n _style.transform = 'scale(0.8)';\n }\n return _style;\n});\n\nconst isImage = (name?: string) => name?.includes('/');\nconst isImageIcon = isImage(__props.icon);\n\n\nconst _classPrefix = computed(() => __props.classPrefix);\nconst classes = computed(() => (isImageIcon ? '' : [__props.icon.startsWith('vi-') ? 'vicon' : 'iconfont', `${_classPrefix.value || ''}${__props.icon}`]));\n</script>\n\n<template>\n\t<div>\n\t\t<slot></slot>\n\t</div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","computed","_style","__props","addUnit","isImageIcon","name","_classPrefix"],"mappings":";;;;;;;;AACA,MAAMA;AAAA;AAAA,EAAuBC,EAAa,MAAM;AAAA,GAGhDC,IAA6BC,EAAmB;AAAA,EAC9C,MAAMH,EAAG,EAAE;AACb,CAAC;;;;;;;;;;;;;;;AA0Ca,IAAAI,EAAS,MAAM;AAC3B,YAAMC,IAAwB,CAAA;AAC9B,aAAIC,EAAQ,UACHD,EAAA,QAAWC,EAAQ,QAExBA,EAAQ,SACVD,EAAO,WAAcE,EAAQD,EAAQ,IAAI,IAEvCA,EAAQ,SACVD,EAAO,YAAe,qCAEpBC,EAAQ,WACVD,EAAO,SAAY,YAEjBC,EAAQ,UACVD,EAAO,YAAY,eAEdA;AAAA,IAAA,CACR;AAGK,UAAAG,KADU,CAACC,MAAkBA,KAAA,gBAAAA,EAAM,SAAS,MACtBH,EAAQ,IAAI,GAGlCI,IAAeN,EAAS,MAAME,EAAQ,WAAW;AACvC,WAAAF,EAAS,MAAOI,IAAc,KAAK,CAACF,EAAQ,KAAK,WAAW,KAAK,IAAI,UAAU,YAAY,GAAGI,EAAa,SAAS,KAAKJ,EAAQ,MAAM,CAAE;;;;;"}
|