yuyeon 0.0.38-rc1 → 0.0.38-rc2
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/yuyeon.js +507 -517
- package/dist/yuyeon.umd.cjs +2 -2
- package/lib/components/dialog/YDialog.mjs.map +1 -1
- package/lib/components/dialog/YDialog.scss +47 -47
- package/lib/components/layer/YLayer.mjs.map +1 -1
- package/lib/components/menu/YMenu.mjs +5 -13
- package/lib/components/menu/YMenu.mjs.map +1 -1
- package/lib/components/switch/YSwitch.mjs +2 -3
- package/lib/components/switch/YSwitch.mjs.map +1 -1
- package/lib/composables/layer-group.mjs.map +1 -1
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
- package/types/components/layer/YLayer.d.ts +1 -1
- package/types/components/tooltip/YTooltip.d.ts +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YDialog.mjs","names":["computed","defineComponent","getCurrentInstance","ref","shallowRef","watch","useModelDuplex","useRender","toStyleSizeValue","bindClasses","YCard","YLayer","useActiveStack","YDialog","name","components","props","modelValue","type","Boolean","persistent","default","dialogClasses","Array","String","Object","closeClickScrim","disabled","maximized","scrim","offset","emits","setup","_ref","emit","slots","vm","$yuyeon","appContext","config","globalProperties","active","classes","boundClasses","computedOffset","paddingTop","styles","value","layer$","children","onFocusin","e","prevTarget","relatedTarget","target","testChildrenContains","layers","some","layer","content$","contains","document","includes","focusableSelector","focusables","querySelectorAll","filter","el","hasAttribute","matches","length","firstChild","lastChild","focus","installFocusTrap","addEventListener","dismantleFocusTrap","removeEventListener","tempScrollTop","tempScrollLeft","preventInteractionBackground","toggle","root$","root","activeLayers","getActiveLayers","filtered","ctx","modal","scrollTop","documentElement","scrollLeft","classList","add","style","top","left","isMe","remove","onUpdate","v","onClick","currentActive","baseEl","neo","old","immediate","_createVNode","_Fragment","$event","_len","arguments","args","_key","base"],"sources":["../../../src/components/dialog/YDialog.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n ref,\n shallowRef,\n watch,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { toStyleSizeValue } from '../../util';\nimport { bindClasses } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YLayer } from '../layer';\nimport { useActiveStack } from '../layer/active-stack';\n\nimport './YDialog.scss';\n\nexport const YDialog = defineComponent({\n name: 'YDialog',\n components: {\n YLayer,\n YCard,\n },\n props: {\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n persistent: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n dialogClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n closeClickScrim: {\n type: Boolean as PropType<boolean>,\n },\n disabled: Boolean as PropType<boolean>,\n maximized: Boolean as PropType<boolean>,\n scrim: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n offset: {\n type: String as PropType<string>,\n },\n },\n emits: ['update:modelValue'],\n setup(props, { emit, slots }) {\n const vm = getCurrentInstance();\n const $yuyeon = vm?.appContext.config.globalProperties.$yuyeon;\n const active = useModelDuplex(props);\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.dialogClasses);\n return {\n ...boundClasses,\n 'y-dialog': true,\n 'y-dialog--maximized': props.maximized,\n };\n });\n\n const computedOffset = computed(() => {\n return {\n paddingTop: toStyleSizeValue(props.offset),\n };\n });\n\n const styles = computed(() => {\n return {\n ...computedOffset.value,\n };\n });\n\n const layer$ = ref<typeof YLayer>();\n const { children } = useActiveStack(layer$, active, shallowRef(true));\n function onFocusin(e: FocusEvent) {\n const prevTarget = e.relatedTarget as HTMLElement | null;\n const target = e.target as HTMLElement | null;\n\n function testChildrenContains(layers: YLayer[]) {\n return layers.some((layer) => {\n return !layer.content$?.contains(target);\n });\n }\n\n if (\n prevTarget !== target &&\n layer$.value?.content$ &&\n ![document, layer$.value?.content$].includes(target) &&\n !layer$.value?.content$.contains(target) &&\n !testChildrenContains(children.value)\n ) {\n const focusableSelector =\n 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n const focusables = [\n ...layer$.value.content$.querySelectorAll(focusableSelector),\n ].filter(\n (el) =>\n !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]'),\n ) as HTMLElement[];\n if (!focusables.length) return;\n const firstChild = focusables[0];\n const lastChild = focusables[focusables.length - 1];\n if (firstChild === lastChild) {\n lastChild.focus();\n } else {\n firstChild.focus();\n }\n }\n }\n\n function installFocusTrap() {\n document.addEventListener('focusin', onFocusin);\n }\n\n function dismantleFocusTrap() {\n document.removeEventListener('focusin', onFocusin);\n }\n\n const tempScrollTop = ref(0);\n const tempScrollLeft = ref(0);\n\n function preventInteractionBackground(toggle: boolean) {\n const root$ = $yuyeon.root as HTMLElement;\n const activeLayers = layer$.value?.getActiveLayers();\n if (toggle) {\n const filtered = activeLayers?.filter((layer: any) => {\n return layer.ctx.modal;\n });\n if (filtered && !filtered.length) {\n const scrollTop = document.documentElement.scrollTop;\n const scrollLeft = document.documentElement.scrollLeft;\n tempScrollTop.value = scrollTop;\n tempScrollLeft.value = scrollLeft;\n document.documentElement.classList.add('y-dialog--prevent-scroll');\n root$.classList.add('y-dialog--virtual-scroll');\n root$.style.top = toStyleSizeValue(-1 * scrollTop) || '';\n root$.style.left = toStyleSizeValue(-1 * scrollLeft) || '';\n }\n } else {\n const filtered = activeLayers?.filter((layer: any) => {\n return !layer$.value?.isMe(layer) && layer.ctx.modal;\n });\n if (filtered && !filtered.length) {\n root$.classList.remove('y-dialog--virtual-scroll');\n document.documentElement.classList.remove('y-dialog--prevent-scroll');\n root$.style.top = '';\n root$.style.left = '';\n document.documentElement.scrollTop = tempScrollTop.value;\n document.documentElement.scrollLeft = tempScrollLeft.value;\n }\n }\n }\n\n function onUpdate(v: boolean) {\n active.value = v;\n }\n\n function onClick(e: MouseEvent) {\n const currentActive = active.value;\n if (!props.disabled) {\n active.value = !currentActive;\n }\n }\n\n watch(\n () => layer$.value?.baseEl,\n (neo, old) => {\n if (neo) {\n neo.addEventListener('click', onClick);\n } else if (old) {\n old.removeEventListener('click', onClick);\n }\n },\n );\n\n watch(\n () => active.value,\n (neo) => {\n neo ? installFocusTrap() : dismantleFocusTrap();\n preventInteractionBackground(neo);\n },\n { immediate: true },\n );\n\n useRender(() => {\n return (\n <>\n <YLayer\n v-model={active.value}\n classes={classes.value}\n content-styles={styles.value}\n scrim={props.scrim}\n modal\n close-click-scrim={props.closeClickScrim}\n ref={layer$}\n >\n {{\n default: (...args: any[]) => slots.default?.(...args),\n base: slots.base,\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n active,\n layer: layer$,\n classes,\n };\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YDialog.mjs","names":["computed","defineComponent","getCurrentInstance","ref","shallowRef","watch","useModelDuplex","useRender","toStyleSizeValue","bindClasses","YCard","YLayer","useActiveStack","YDialog","name","components","props","modelValue","type","Boolean","persistent","default","dialogClasses","Array","String","Object","closeClickScrim","disabled","maximized","scrim","offset","emits","setup","_ref","emit","slots","vm","$yuyeon","appContext","config","globalProperties","active","classes","boundClasses","computedOffset","paddingTop","styles","value","layer$","children","onFocusin","e","prevTarget","relatedTarget","target","testChildrenContains","layers","some","layer","content$","contains","document","includes","focusableSelector","focusables","querySelectorAll","filter","el","hasAttribute","matches","length","firstChild","lastChild","focus","installFocusTrap","addEventListener","dismantleFocusTrap","removeEventListener","tempScrollTop","tempScrollLeft","preventInteractionBackground","toggle","root$","root","activeLayers","getActiveLayers","filtered","ctx","modal","scrollTop","documentElement","scrollLeft","classList","add","style","top","left","isMe","remove","onUpdate","v","onClick","currentActive","baseEl","neo","old","immediate","_createVNode","_Fragment","$event","_len","arguments","args","_key","base"],"sources":["../../../src/components/dialog/YDialog.tsx"],"sourcesContent":["import type { PropType } from 'vue';\r\nimport {\r\n computed,\r\n defineComponent,\r\n getCurrentInstance,\r\n ref,\r\n shallowRef,\r\n watch,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { toStyleSizeValue } from '../../util';\r\nimport { bindClasses } from '../../util/vue-component';\r\nimport { YCard } from '../card';\r\nimport { YLayer } from '../layer';\r\nimport { useActiveStack } from '../layer/active-stack';\r\n\r\nimport './YDialog.scss';\r\n\r\nexport const YDialog = defineComponent({\r\n name: 'YDialog',\r\n components: {\r\n YLayer,\r\n YCard,\r\n },\r\n props: {\r\n modelValue: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n persistent: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n dialogClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n closeClickScrim: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n disabled: Boolean as PropType<boolean>,\r\n maximized: Boolean as PropType<boolean>,\r\n scrim: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n offset: {\r\n type: String as PropType<string>,\r\n },\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { emit, slots }) {\r\n const vm = getCurrentInstance();\r\n const $yuyeon = vm?.appContext.config.globalProperties.$yuyeon;\r\n const active = useModelDuplex(props);\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.dialogClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-dialog': true,\r\n 'y-dialog--maximized': props.maximized,\r\n };\r\n });\r\n\r\n const computedOffset = computed(() => {\r\n return {\r\n paddingTop: toStyleSizeValue(props.offset),\r\n };\r\n });\r\n\r\n const styles = computed(() => {\r\n return {\r\n ...computedOffset.value,\r\n };\r\n });\r\n\r\n const layer$ = ref<typeof YLayer>();\r\n const { children } = useActiveStack(layer$, active, shallowRef(true));\r\n function onFocusin(e: FocusEvent) {\r\n const prevTarget = e.relatedTarget as HTMLElement | null;\r\n const target = e.target as HTMLElement | null;\r\n\r\n function testChildrenContains(layers: YLayer[]) {\r\n return layers.some((layer) => {\r\n return !layer.content$?.contains(target);\r\n });\r\n }\r\n\r\n if (\r\n prevTarget !== target &&\r\n layer$.value?.content$ &&\r\n ![document, layer$.value?.content$].includes(target) &&\r\n !layer$.value?.content$.contains(target) &&\r\n !testChildrenContains(children.value)\r\n ) {\r\n const focusableSelector =\r\n 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\r\n const focusables = [\r\n ...layer$.value.content$.querySelectorAll(focusableSelector),\r\n ].filter(\r\n (el) =>\r\n !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]'),\r\n ) as HTMLElement[];\r\n if (!focusables.length) return;\r\n const firstChild = focusables[0];\r\n const lastChild = focusables[focusables.length - 1];\r\n if (firstChild === lastChild) {\r\n lastChild.focus();\r\n } else {\r\n firstChild.focus();\r\n }\r\n }\r\n }\r\n\r\n function installFocusTrap() {\r\n document.addEventListener('focusin', onFocusin);\r\n }\r\n\r\n function dismantleFocusTrap() {\r\n document.removeEventListener('focusin', onFocusin);\r\n }\r\n\r\n const tempScrollTop = ref(0);\r\n const tempScrollLeft = ref(0);\r\n\r\n function preventInteractionBackground(toggle: boolean) {\r\n const root$ = $yuyeon.root as HTMLElement;\r\n const activeLayers = layer$.value?.getActiveLayers();\r\n if (toggle) {\r\n const filtered = activeLayers?.filter((layer: any) => {\r\n return layer.ctx.modal;\r\n });\r\n if (filtered && !filtered.length) {\r\n const scrollTop = document.documentElement.scrollTop;\r\n const scrollLeft = document.documentElement.scrollLeft;\r\n tempScrollTop.value = scrollTop;\r\n tempScrollLeft.value = scrollLeft;\r\n document.documentElement.classList.add('y-dialog--prevent-scroll');\r\n root$.classList.add('y-dialog--virtual-scroll');\r\n root$.style.top = toStyleSizeValue(-1 * scrollTop) || '';\r\n root$.style.left = toStyleSizeValue(-1 * scrollLeft) || '';\r\n }\r\n } else {\r\n const filtered = activeLayers?.filter((layer: any) => {\r\n return !layer$.value?.isMe(layer) && layer.ctx.modal;\r\n });\r\n if (filtered && !filtered.length) {\r\n root$.classList.remove('y-dialog--virtual-scroll');\r\n document.documentElement.classList.remove('y-dialog--prevent-scroll');\r\n root$.style.top = '';\r\n root$.style.left = '';\r\n document.documentElement.scrollTop = tempScrollTop.value;\r\n document.documentElement.scrollLeft = tempScrollLeft.value;\r\n }\r\n }\r\n }\r\n\r\n function onUpdate(v: boolean) {\r\n active.value = v;\r\n }\r\n\r\n function onClick(e: MouseEvent) {\r\n const currentActive = active.value;\r\n if (!props.disabled) {\r\n active.value = !currentActive;\r\n }\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n neo.addEventListener('click', onClick);\r\n } else if (old) {\r\n old.removeEventListener('click', onClick);\r\n }\r\n },\r\n );\r\n\r\n watch(\r\n () => active.value,\r\n (neo) => {\r\n neo ? installFocusTrap() : dismantleFocusTrap();\r\n preventInteractionBackground(neo);\r\n },\r\n { immediate: true },\r\n );\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n v-model={active.value}\r\n classes={classes.value}\r\n content-styles={styles.value}\r\n scrim={props.scrim}\r\n modal\r\n close-click-scrim={props.closeClickScrim}\r\n ref={layer$}\r\n >\r\n {{\r\n default: (...args: any[]) => slots.default?.(...args),\r\n base: slots.base,\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n active,\r\n layer: layer$,\r\n classes,\r\n };\r\n },\r\n});\r\n"],"mappings":"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"}
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
.y-dialog {
|
|
2
|
-
justify-content: center;
|
|
3
|
-
align-items: center;
|
|
4
|
-
backdrop-filter: blur(0.8px) saturate(0.4);
|
|
5
|
-
|
|
6
|
-
.y-layer {
|
|
7
|
-
&__content > div {
|
|
8
|
-
position: relative;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
&.y-layer--finish {
|
|
13
|
-
.y-layer__content > .y-card > .y-card__footer {
|
|
14
|
-
position: relative;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
&--maximized {
|
|
19
|
-
backdrop-filter: none;
|
|
20
|
-
align-items: unset;
|
|
21
|
-
justify-content: unset;
|
|
22
|
-
|
|
23
|
-
.y-layer {
|
|
24
|
-
&__content {
|
|
25
|
-
contain: none;
|
|
26
|
-
position: relative;
|
|
27
|
-
width: 100%;
|
|
28
|
-
max-height: 100dvh;
|
|
29
|
-
background: transparent;
|
|
30
|
-
pointer-events: all;
|
|
31
|
-
overflow-y: scroll;
|
|
32
|
-
}
|
|
33
|
-
&__content > div {
|
|
34
|
-
border-radius: 0;
|
|
35
|
-
width: 100%;
|
|
36
|
-
min-height: 100%;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.y-dialog--prevent-scroll {
|
|
43
|
-
overflow: hidden !important;
|
|
44
|
-
}
|
|
45
|
-
.y-dialog--virtual-scroll {
|
|
46
|
-
position: fixed !important;
|
|
47
|
-
}
|
|
1
|
+
.y-dialog {
|
|
2
|
+
justify-content: center;
|
|
3
|
+
align-items: center;
|
|
4
|
+
backdrop-filter: blur(0.8px) saturate(0.4);
|
|
5
|
+
|
|
6
|
+
.y-layer {
|
|
7
|
+
&__content > div {
|
|
8
|
+
position: relative;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
&.y-layer--finish {
|
|
13
|
+
.y-layer__content > .y-card > .y-card__footer {
|
|
14
|
+
position: relative;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&--maximized {
|
|
19
|
+
backdrop-filter: none;
|
|
20
|
+
align-items: unset;
|
|
21
|
+
justify-content: unset;
|
|
22
|
+
|
|
23
|
+
.y-layer {
|
|
24
|
+
&__content {
|
|
25
|
+
contain: none;
|
|
26
|
+
position: relative;
|
|
27
|
+
width: 100%;
|
|
28
|
+
max-height: 100dvh;
|
|
29
|
+
background: transparent;
|
|
30
|
+
pointer-events: all;
|
|
31
|
+
overflow-y: scroll;
|
|
32
|
+
}
|
|
33
|
+
&__content > div {
|
|
34
|
+
border-radius: 0;
|
|
35
|
+
width: 100%;
|
|
36
|
+
min-height: 100%;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.y-dialog--prevent-scroll {
|
|
43
|
+
overflow: hidden !important;
|
|
44
|
+
}
|
|
45
|
+
.y-dialog--virtual-scroll {
|
|
46
|
+
position: fixed !important;
|
|
47
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YLayer.mjs","names":["Teleport","Transition","computed","defineComponent","getCurrentInstance","mergeProps","reactive","ref","shallowRef","toRef","watchEffect","useRender","pressCoordinateProps","useCoordinate","pressDimensionPropsOptions","useDimension","useLayerGroup","pressThemePropsOptions","useLocalTheme","useLazy","PolyTransition","polyTransitionPropOptions","usePolyTransition","ComplementClick","bindClasses","propsFactory","pressYLayerProps","modelValue","type","Boolean","scrim","scrimOpacity","Number","eager","classes","Array","String","Object","contentClasses","closeClickScrim","contentStyles","default","disabled","openOnHover","openDelay","closeDelay","YLayer","name","inheritAttrs","components","directives","props","modal","emits","value","mouseEvent","afterLeave","setup","_ref","emit","expose","attrs","slots","vm","base$","scrim$","content$","baseSlot","baseEl","themeClasses","layerGroup","layerGroupState","getActiveLayers","polyTransitionBindProps","dimensionStyles","active","get","set","v","finish","lazyValue","onAfterUpdate","rendered","coordinateStyles","updateCoordinate","contentEl","onClickComplementLayer","target","closeConditional","hovered","complementClickOption","handler","determine","include","onAfterEnter","onAfterLeave","onClickScrim","baseFromSlotEl","el","base","$el","computedStyle","zIndex","computedClass","boundClasses","computedContentClasses","onMouseenter","event","onMouseleave","isMe","vnode","slotBase","class","_createVNode","_Fragment","_mergeProps","_withDirectives","_vShow","_resolveDirective"],"sources":["../../../src/components/layer/YLayer.tsx"],"sourcesContent":["import type { CSSProperties, ComponentInternalInstance, PropType } from 'vue';\nimport {\n Teleport,\n Transition,\n computed,\n defineComponent,\n getCurrentInstance,\n mergeProps,\n reactive,\n ref,\n shallowRef,\n toRef,\n watchEffect,\n} from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport {\n pressCoordinateProps,\n useCoordinate,\n} from '../../composables/coordinate';\nimport {\n pressDimensionPropsOptions,\n useDimension,\n} from '../../composables/dimension';\nimport { useLayerGroup } from '../../composables/layer-group';\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\nimport { useLazy } from '../../composables/timing';\nimport {\n PolyTransition,\n polyTransitionPropOptions,\n usePolyTransition,\n} from '../../composables/transition';\nimport {\n ComplementClick,\n ComplementClickBindingOptions,\n} from '../../directives/complement-click';\nimport { bindClasses, propsFactory } from '../../util/vue-component';\n\nimport './YLayer.scss';\n\nexport const pressYLayerProps = propsFactory(\n {\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n scrim: {\n type: Boolean as PropType<boolean>,\n },\n scrimOpacity: {\n type: Number as PropType<number>,\n },\n eager: {\n type: Boolean as PropType<boolean>,\n },\n classes: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n contentClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n closeClickScrim: {\n type: Boolean as PropType<boolean>,\n },\n\n contentStyles: {\n type: Object as PropType<CSSProperties>,\n default: () => {},\n },\n disabled: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n openOnHover: {\n type: Boolean as PropType<boolean>,\n default: false,\n },\n openDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n closeDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n ...pressThemePropsOptions(),\n ...polyTransitionPropOptions,\n ...pressCoordinateProps(),\n ...pressDimensionPropsOptions(),\n },\n 'YLayer',\n);\n\nexport const YLayer = defineComponent({\n name: 'YLayer',\n inheritAttrs: false,\n components: {\n PolyTransition,\n },\n directives: {\n ComplementClick,\n },\n props: {\n modal: Boolean as PropType<boolean>,\n ...pressYLayerProps(),\n },\n emits: {\n 'update:modelValue': (value: boolean) => true,\n 'click:complement': (mouseEvent: MouseEvent) => true,\n afterLeave: () => true,\n },\n setup(props, { emit, expose, attrs, slots }) {\n const vm = getCurrentInstance();\n const base$ = ref();\n const scrim$ = ref<HTMLElement>();\n const content$ = ref<HTMLElement>();\n const baseSlot = ref();\n const baseEl = ref<HTMLElement>();\n\n const { themeClasses } = useLocalTheme(props);\n const { layerGroup, layerGroupState, getActiveLayers } = useLayerGroup();\n const { polyTransitionBindProps } = usePolyTransition(props);\n const { dimensionStyles } = useDimension(props);\n const active = computed<boolean>({\n get: (): boolean => {\n return !!props.modelValue;\n },\n set: (v: boolean) => {\n emit('update:modelValue', v);\n },\n });\n const finish = shallowRef(false);\n\n const disabled = toRef(props, 'disabled');\n const { lazyValue, onAfterUpdate } = useLazy(toRef(props, 'eager'), active);\n const rendered = computed<boolean>(\n () => !disabled.value && (lazyValue.value || active.value),\n );\n\n const { coordinateStyles, updateCoordinate } = useCoordinate(props, {\n contentEl: content$,\n baseEl,\n active,\n });\n\n function onClickComplementLayer(mouseEvent: MouseEvent) {\n emit('click:complement', mouseEvent);\n if (!props.modal) {\n if (\n scrim$.value !== null &&\n scrim$.value === mouseEvent.target &&\n props.closeClickScrim\n ) {\n active.value = false;\n }\n } else {\n // TODO: shrug ani\n }\n }\n\n function closeConditional(): boolean {\n return (\n (!props.openOnHover || (props.openOnHover && !hovered.value)) &&\n active.value\n ); // TODO: && groupTopLevel.value;\n }\n\n const complementClickOption = reactive<ComplementClickBindingOptions>({\n handler: onClickComplementLayer,\n determine: closeConditional,\n include: () => [baseEl.value],\n });\n\n function onAfterEnter() {\n finish.value = true;\n }\n\n function onAfterLeave() {\n onAfterUpdate();\n finish.value = false;\n emit('afterLeave');\n }\n\n function onClickScrim() {\n if (props.closeClickScrim) {\n active.value = false;\n }\n }\n\n const baseFromSlotEl = computed(() => {\n return baseSlot.value?.[0]?.el;\n });\n\n watchEffect(() => {\n if (!base$.value) {\n baseEl.value = baseFromSlotEl.value;\n return;\n }\n const base = base$.value;\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\n });\n\n const computedStyle = computed(() => {\n return {\n zIndex: '2000',\n };\n });\n\n const computedClass = computed<Record<string, boolean>>(() => {\n const { classes } = props;\n const boundClasses = bindClasses(classes);\n return {\n ...boundClasses,\n 'y-layer--active': !!active.value,\n };\n });\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n };\n });\n\n const hovered = ref(false);\n\n function onMouseenter(event: Event) {\n hovered.value = true;\n }\n\n function onMouseleave(event: Event) {\n hovered.value = false;\n }\n\n expose({\n scrim$,\n base$,\n content$,\n baseEl,\n active,\n onAfterUpdate,\n updateCoordinate,\n hovered,\n modal: computed(() => props.modal),\n getActiveLayers,\n isMe: (vnode: ComponentInternalInstance) => {\n return vnode === vm;\n },\n });\n\n useRender(() => {\n const slotBase = slots.base?.({\n active: active.value,\n props: mergeProps({\n ref: base$,\n class: {\n 'y-layer-base': true,\n 'y-layer-base--active': active.value,\n },\n }),\n });\n baseSlot.value = slotBase;\n return (\n <>\n {slotBase}\n <Teleport disabled={!layerGroup.value} to={layerGroup.value as any}>\n {rendered.value && (\n <div\n class={{\n 'y-layer': true,\n 'y-layer--finish': finish.value,\n ...computedClass.value,\n [themeClasses.value ?? '']: true,\n }}\n onMouseenter={onMouseenter}\n onMouseleave={onMouseleave}\n style={computedStyle.value}\n {...attrs}\n >\n <Transition name=\"fade\" appear>\n {active.value && props.scrim && (\n <div\n class=\"y-layer__scrim\"\n style={{ '--y-layer-scrim-opacity': props.scrimOpacity }}\n onClick={onClickScrim}\n ref=\"scrim$\"\n ></div>\n )}\n </Transition>\n <PolyTransition\n onAfterEnter={onAfterEnter}\n onAfterLeave={onAfterLeave}\n appear\n {...polyTransitionBindProps.value}\n >\n <div\n v-show={active.value}\n v-complement-click={{ ...complementClickOption }}\n class={{\n 'y-layer__content': true,\n ...computedContentClasses.value,\n }}\n style={[\n {\n ...dimensionStyles.value,\n ...coordinateStyles.value,\n ...props.contentStyles,\n },\n ]}\n ref={content$}\n >\n {slots.default?.({ active: active.value })}\n </div>\n </PolyTransition>\n </div>\n )}\n </Teleport>\n </>\n );\n });\n\n return {\n complementClickOption,\n layerGroup,\n active,\n rendered,\n lazyValue,\n onAfterUpdate: onAfterUpdate as () => void,\n scrim$,\n content$,\n baseEl,\n polyTransitionBindProps,\n coordinateStyles,\n layerGroupState,\n getActiveLayers,\n };\n },\n});\n\nexport type YLayer = InstanceType<typeof YLayer>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YLayer.mjs","names":["Teleport","Transition","computed","defineComponent","getCurrentInstance","mergeProps","reactive","ref","shallowRef","toRef","watchEffect","useRender","pressCoordinateProps","useCoordinate","pressDimensionPropsOptions","useDimension","useLayerGroup","pressThemePropsOptions","useLocalTheme","useLazy","PolyTransition","polyTransitionPropOptions","usePolyTransition","ComplementClick","bindClasses","propsFactory","pressYLayerProps","modelValue","type","Boolean","scrim","scrimOpacity","Number","eager","classes","Array","String","Object","contentClasses","closeClickScrim","contentStyles","default","disabled","openOnHover","openDelay","closeDelay","YLayer","name","inheritAttrs","components","directives","props","modal","emits","value","mouseEvent","afterLeave","setup","_ref","emit","expose","attrs","slots","vm","base$","scrim$","content$","baseSlot","baseEl","themeClasses","layerGroup","layerGroupState","getActiveLayers","polyTransitionBindProps","dimensionStyles","active","get","set","v","finish","lazyValue","onAfterUpdate","rendered","coordinateStyles","updateCoordinate","contentEl","onClickComplementLayer","target","closeConditional","hovered","complementClickOption","handler","determine","include","onAfterEnter","onAfterLeave","onClickScrim","baseFromSlotEl","el","base","$el","computedStyle","zIndex","computedClass","boundClasses","computedContentClasses","onMouseenter","event","onMouseleave","isMe","vnode","slotBase","class","_createVNode","_Fragment","_mergeProps","_withDirectives","_vShow","_resolveDirective"],"sources":["../../../src/components/layer/YLayer.tsx"],"sourcesContent":["import type { CSSProperties, PropType, ComponentInternalInstance } from 'vue';\r\nimport {\r\n Teleport,\r\n Transition,\r\n computed,\r\n defineComponent,\r\n getCurrentInstance,\r\n mergeProps,\r\n reactive,\r\n ref,\r\n shallowRef,\r\n toRef,\r\n watchEffect,\r\n} from 'vue';\r\n\r\nimport { useRender } from '../../composables/component';\r\nimport {\r\n pressCoordinateProps,\r\n useCoordinate,\r\n} from '../../composables/coordinate';\r\nimport {\r\n pressDimensionPropsOptions,\r\n useDimension,\r\n} from '../../composables/dimension';\r\nimport { useLayerGroup } from '../../composables/layer-group';\r\nimport { pressThemePropsOptions, useLocalTheme } from '../../composables/theme';\r\nimport { useLazy } from '../../composables/timing';\r\nimport {\r\n PolyTransition,\r\n polyTransitionPropOptions,\r\n usePolyTransition,\r\n} from '../../composables/transition';\r\nimport {\r\n ComplementClick,\r\n ComplementClickBindingOptions,\r\n} from '../../directives/complement-click';\r\nimport { bindClasses, propsFactory } from '../../util/vue-component';\r\n\r\nimport './YLayer.scss';\r\n\r\nexport const pressYLayerProps = propsFactory(\r\n {\r\n modelValue: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n scrim: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n scrimOpacity: {\r\n type: Number as PropType<number>,\r\n },\r\n eager: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n classes: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n contentClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n closeClickScrim: {\r\n type: Boolean as PropType<boolean>,\r\n },\r\n\r\n contentStyles: {\r\n type: Object as PropType<CSSProperties>,\r\n default: () => {},\r\n },\r\n disabled: {\r\n type: Boolean as PropType<boolean>,\r\n default: false,\r\n },\r\n openOnHover: {\r\n type: Boolean as PropType<boolean>,\r\n default: false,\r\n },\r\n openDelay: {\r\n type: Number as PropType<number>,\r\n default: 200,\r\n },\r\n closeDelay: {\r\n type: Number as PropType<number>,\r\n default: 200,\r\n },\r\n ...pressThemePropsOptions(),\r\n ...polyTransitionPropOptions,\r\n ...pressCoordinateProps(),\r\n ...pressDimensionPropsOptions(),\r\n },\r\n 'YLayer',\r\n);\r\n\r\nexport const YLayer = defineComponent({\r\n name: 'YLayer',\r\n inheritAttrs: false,\r\n components: {\r\n PolyTransition,\r\n },\r\n directives: {\r\n ComplementClick,\r\n },\r\n props: {\r\n modal: Boolean as PropType<boolean>,\r\n ...pressYLayerProps(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: boolean) => true,\r\n 'click:complement': (mouseEvent: MouseEvent) => true,\r\n afterLeave: () => true,\r\n },\r\n setup(props, { emit, expose, attrs, slots }) {\r\n const vm = getCurrentInstance();\r\n const base$ = ref();\r\n const scrim$ = ref<HTMLElement>();\r\n const content$ = ref<HTMLElement>();\r\n const baseSlot = ref();\r\n const baseEl = ref<HTMLElement>();\r\n\r\n const { themeClasses } = useLocalTheme(props);\r\n const { layerGroup, layerGroupState, getActiveLayers } = useLayerGroup();\r\n const { polyTransitionBindProps } = usePolyTransition(props);\r\n const { dimensionStyles } = useDimension(props);\r\n const active = computed<boolean>({\r\n get: (): boolean => {\r\n return !!props.modelValue;\r\n },\r\n set: (v: boolean) => {\r\n emit('update:modelValue', v);\r\n },\r\n });\r\n const finish = shallowRef(false);\r\n\r\n const disabled = toRef(props, 'disabled');\r\n const { lazyValue, onAfterUpdate } = useLazy(toRef(props, 'eager'), active);\r\n const rendered = computed<boolean>(\r\n () => !disabled.value && (lazyValue.value || active.value),\r\n );\r\n\r\n const { coordinateStyles, updateCoordinate } = useCoordinate(props, {\r\n contentEl: content$,\r\n baseEl,\r\n active,\r\n });\r\n\r\n function onClickComplementLayer(mouseEvent: MouseEvent) {\r\n emit('click:complement', mouseEvent);\r\n if (!props.modal) {\r\n if (\r\n scrim$.value !== null &&\r\n scrim$.value === mouseEvent.target &&\r\n props.closeClickScrim\r\n ) {\r\n active.value = false;\r\n }\r\n } else {\r\n // TODO: shrug ani\r\n }\r\n }\r\n\r\n function closeConditional(): boolean {\r\n return (\r\n (!props.openOnHover || (props.openOnHover && !hovered.value)) &&\r\n active.value\r\n ); // TODO: && groupTopLevel.value;\r\n }\r\n\r\n const complementClickOption = reactive<ComplementClickBindingOptions>({\r\n handler: onClickComplementLayer,\r\n determine: closeConditional,\r\n include: () => [baseEl.value],\r\n });\r\n\r\n function onAfterEnter() {\r\n finish.value = true;\r\n }\r\n\r\n function onAfterLeave() {\r\n onAfterUpdate();\r\n finish.value = false;\r\n emit('afterLeave');\r\n }\r\n\r\n function onClickScrim() {\r\n if (props.closeClickScrim) {\r\n active.value = false;\r\n }\r\n }\r\n\r\n const baseFromSlotEl = computed(() => {\r\n return baseSlot.value?.[0]?.el;\r\n });\r\n\r\n watchEffect(() => {\r\n if (!base$.value) {\r\n baseEl.value = baseFromSlotEl.value;\r\n return;\r\n }\r\n const base = base$.value;\r\n baseEl.value = base$.value?.$el ? base$.value?.$el : base;\r\n });\r\n\r\n const computedStyle = computed(() => {\r\n return {\r\n zIndex: '2000',\r\n };\r\n });\r\n\r\n const computedClass = computed<Record<string, boolean>>(() => {\r\n const { classes } = props;\r\n const boundClasses = bindClasses(classes);\r\n return {\r\n ...boundClasses,\r\n 'y-layer--active': !!active.value,\r\n };\r\n });\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n return {\r\n ...boundClasses,\r\n };\r\n });\r\n\r\n const hovered = ref(false);\r\n\r\n function onMouseenter(event: Event) {\r\n hovered.value = true;\r\n }\r\n\r\n function onMouseleave(event: Event) {\r\n hovered.value = false;\r\n }\r\n\r\n expose({\r\n scrim$,\r\n base$,\r\n content$,\r\n baseEl,\r\n active,\r\n onAfterUpdate,\r\n updateCoordinate,\r\n hovered,\r\n modal: computed(() => props.modal),\r\n getActiveLayers,\r\n isMe: (vnode: ComponentInternalInstance) => {\r\n return vnode === vm;\r\n },\r\n });\r\n\r\n useRender(() => {\r\n const slotBase = slots.base?.({\r\n active: active.value,\r\n props: mergeProps({\r\n ref: base$,\r\n class: {\r\n 'y-layer-base': true,\r\n 'y-layer-base--active': active.value,\r\n },\r\n }),\r\n });\r\n baseSlot.value = slotBase;\r\n return (\r\n <>\r\n {slotBase}\r\n <Teleport disabled={!layerGroup.value} to={layerGroup.value as any}>\r\n {rendered.value && (\r\n <div\r\n class={{\r\n 'y-layer': true,\r\n 'y-layer--finish': finish.value,\r\n ...computedClass.value,\r\n [themeClasses.value ?? '']: true,\r\n }}\r\n onMouseenter={onMouseenter}\r\n onMouseleave={onMouseleave}\r\n style={computedStyle.value}\r\n {...attrs}\r\n >\r\n <Transition name=\"fade\" appear>\r\n {active.value && props.scrim && (\r\n <div\r\n class=\"y-layer__scrim\"\r\n style={{ '--y-layer-scrim-opacity': props.scrimOpacity }}\r\n onClick={onClickScrim}\r\n ref=\"scrim$\"\r\n ></div>\r\n )}\r\n </Transition>\r\n <PolyTransition\r\n onAfterEnter={onAfterEnter}\r\n onAfterLeave={onAfterLeave}\r\n appear\r\n {...polyTransitionBindProps.value}\r\n >\r\n <div\r\n v-show={active.value}\r\n v-complement-click={{ ...complementClickOption }}\r\n class={{\r\n 'y-layer__content': true,\r\n ...computedContentClasses.value,\r\n }}\r\n style={[\r\n {\r\n ...dimensionStyles.value,\r\n ...coordinateStyles.value,\r\n ...props.contentStyles,\r\n },\r\n ]}\r\n ref={content$}\r\n >\r\n {slots.default?.({ active: active.value })}\r\n </div>\r\n </PolyTransition>\r\n </div>\r\n )}\r\n </Teleport>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n complementClickOption,\r\n layerGroup,\r\n active,\r\n rendered,\r\n lazyValue,\r\n onAfterUpdate: onAfterUpdate as () => void,\r\n scrim$,\r\n content$,\r\n baseEl,\r\n polyTransitionBindProps,\r\n coordinateStyles,\r\n layerGroupState,\r\n getActiveLayers,\r\n };\r\n },\r\n});\r\n\r\nexport type YLayer = InstanceType<typeof YLayer>;\r\n"],"mappings":"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"}
|
|
@@ -3,13 +3,13 @@ import { computed, defineComponent, ref, toRef, watch } from 'vue';
|
|
|
3
3
|
import { useModelDuplex } from "../../composables/communication.mjs";
|
|
4
4
|
import { useRender } from "../../composables/component.mjs";
|
|
5
5
|
import { polyTransitionPropOptions } from "../../composables/transition.mjs";
|
|
6
|
-
import { hasElementMouseEvent } from "../../util/dom.mjs";
|
|
7
6
|
import { toKebabCase } from "../../util/string.mjs";
|
|
8
7
|
import { bindClasses, chooseProps } from "../../util/vue-component.mjs";
|
|
9
8
|
import { YLayer, pressYLayerProps } from "../layer/index.mjs";
|
|
10
9
|
import { useDelay } from "../layer/active-delay.mjs";
|
|
11
|
-
import { useActiveStack } from "../layer/active-stack.mjs";
|
|
12
10
|
import "./YMenu.scss";
|
|
11
|
+
import { useActiveStack } from "../layer/active-stack.mjs";
|
|
12
|
+
import { hasElementMouseEvent } from "../../util/dom.mjs";
|
|
13
13
|
const NAME = 'YMenu';
|
|
14
14
|
const CLASS_NAME = toKebabCase(NAME);
|
|
15
15
|
export const YMenuPropOptions = {
|
|
@@ -34,8 +34,8 @@ export const YMenuPropOptions = {
|
|
|
34
34
|
preventCloseBubble: Boolean
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
/**
|
|
38
|
-
* # Component
|
|
37
|
+
/**
|
|
38
|
+
* # Component
|
|
39
39
|
*/
|
|
40
40
|
export const YMenu = defineComponent({
|
|
41
41
|
name: NAME,
|
|
@@ -120,18 +120,10 @@ export const YMenu = defineComponent({
|
|
|
120
120
|
}
|
|
121
121
|
return;
|
|
122
122
|
}
|
|
123
|
-
function testChildrenContains(target, layers) {
|
|
124
|
-
return layers.some(layer => {
|
|
125
|
-
return !layer.content$?.contains(target);
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
123
|
if (active.value) {
|
|
129
124
|
const parentContent = parent?.$el.value?.content$;
|
|
130
125
|
const parentModal = parent?.$el.value?.modal;
|
|
131
|
-
|
|
132
|
-
active.value = false;
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
126
|
+
active.value = false;
|
|
135
127
|
if (!(parentContent && !hasElementMouseEvent(e, parentContent)) && !parentModal) {
|
|
136
128
|
parent?.clear();
|
|
137
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","ref","toRef","watch","useModelDuplex","useRender","polyTransitionPropOptions","hasElementMouseEvent","toKebabCase","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","useActiveStack","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","preventCloseBubble","YMenu","name","props","transition","emits","setup","_ref","slots","emit","expose","layer$","classes","boundClasses","model","active","get","value","set","v","disabled","hovered","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","onComplementClick","testChildrenContains","target","layers","some","layer","content$","contains","parentContent","$el","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","computedContentClasses","contentClasses","_createVNode","_Fragment","_mergeProps","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2","el$"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { PropType } from 'vue';\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { pressCoordinateProps } from '../../composables/coordinate';\nimport { polyTransitionPropOptions } from '../../composables/transition';\nimport { hasElementMouseEvent } from '../../util/dom';\nimport { toKebabCase } from '../../util/string';\nimport { bindClasses, chooseProps } from '../../util/vue-component';\nimport { YLayer, pressYLayerProps } from '../layer';\nimport { useDelay } from '../layer/active-delay';\nimport { useActiveStack } from '../layer/active-stack';\n\nimport './YMenu.scss';\n\nconst NAME = 'YMenu';\nconst CLASS_NAME = toKebabCase(NAME);\n\nexport const YMenuPropOptions = {\n menuClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n openOnClickBase: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n closeCondition: {\n type: [Boolean, Function],\n default: undefined,\n },\n preventClip: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n ...pressYLayerProps({\n coordinateStrategy: 'levitation',\n }),\n preventCloseBubble: Boolean as PropType<boolean>,\n};\n\n/**\n * # Component\n */\nexport const YMenu = defineComponent({\n name: NAME,\n props: {\n ...YMenuPropOptions,\n transition: {\n ...polyTransitionPropOptions.transition,\n default: 'fade',\n },\n },\n emits: ['update:modelValue', 'afterLeave'],\n setup(props, { slots, emit, expose }) {\n const layer$ = ref<typeof YLayer>();\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.menuClasses);\n return {\n ...boundClasses,\n 'y-menu': true,\n };\n });\n\n const model = useModelDuplex(props);\n\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n\n const hovered = computed(() => !!layer$.value?.hovered);\n\n const { children, parent } = useActiveStack(\n layer$,\n active,\n toRef(props, 'preventCloseBubble'),\n );\n\n const { startOpenDelay, startCloseDelay } = useDelay(\n props,\n (changeActive) => {\n if (\n !changeActive &&\n props.openOnHover &&\n !hovered.value &&\n children.value.length === 0\n ) {\n active.value = false;\n } else if (changeActive) {\n active.value = true;\n }\n },\n );\n\n function onMouseenter(e: MouseEvent) {\n if (props.openOnHover) {\n startOpenDelay();\n }\n }\n\n function onMouseleave(e: MouseEvent) {\n if (props.openOnHover) {\n startCloseDelay();\n }\n }\n\n watch(hovered, (value) => {\n if (!value) {\n startCloseDelay();\n }\n });\n\n function onClick(e: MouseEvent) {\n e.stopPropagation();\n if (!props.openOnClickBase) {\n return;\n }\n const currentActive = active.value;\n if (!props.disabled) {\n active.value = !currentActive;\n }\n }\n\n function onComplementClick(e: Event) {\n if (props.closeCondition === false) {\n return;\n }\n\n if (typeof props.closeCondition === 'function') {\n if (props.closeCondition(e) === false) {\n active.value = false;\n }\n return;\n }\n\n function testChildrenContains(target: HTMLElement, layers: YLayer[]) {\n return layers.some((layer) => {\n return !layer.content$?.contains(target);\n });\n }\n\n if (active.value) {\n const parentContent = parent?.$el.value?.content$;\n const parentModal = parent?.$el.value?.modal;\n\n if (!(e.target && children.value.length && testChildrenContains(e.target as HTMLElement, children.value))) {\n active.value = false;\n return;\n }\n\n if (\n !(parentContent && !hasElementMouseEvent(e, parentContent)) &&\n !parentModal\n ) {\n parent?.clear();\n }\n }\n }\n\n function bindHover(el: HTMLElement) {\n el.addEventListener('mouseenter', onMouseenter);\n el.addEventListener('mouseleave', onMouseleave);\n }\n\n function unbindHover(el: HTMLElement) {\n el.removeEventListener('mouseenter', onMouseenter);\n el.removeEventListener('mouseleave', onMouseleave);\n }\n\n watch(\n () => layer$.value?.baseEl,\n (neo, old) => {\n if (neo) {\n bindHover(neo);\n neo.addEventListener('click', onClick);\n } else if (old) {\n unbindHover(old);\n old.removeEventListener('click', onClick);\n }\n },\n );\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n };\n });\n\n useRender(() => {\n return (\n <>\n <YLayer\n ref={layer$}\n transition={props.transition}\n onClick:complement={onComplementClick}\n onAfterLeave={() => emit('afterLeave')}\n {...{\n ...chooseProps(props, YLayer.props),\n classes: classes.value,\n scrim: false,\n contentClasses: {\n 'y-menu__content': true,\n ...computedContentClasses.value,\n },\n }}\n v-model={active.value}\n >\n {{\n default: (...args: any) => {\n return <>{slots.default?.(...args) ?? ''}</>;\n },\n base: (...args: any[]) => slots.base?.(...args),\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n el$: layer$,\n classes,\n };\n },\n});\n\nexport type YMenu = InstanceType<typeof YMenu>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YMenu.mjs","names":["computed","defineComponent","ref","toRef","watch","useModelDuplex","useRender","polyTransitionPropOptions","toKebabCase","bindClasses","chooseProps","YLayer","pressYLayerProps","useDelay","useActiveStack","hasElementMouseEvent","NAME","CLASS_NAME","YMenuPropOptions","menuClasses","type","Array","String","Object","openOnClickBase","Boolean","default","closeCondition","Function","undefined","preventClip","coordinateStrategy","preventCloseBubble","YMenu","name","props","transition","emits","setup","_ref","slots","emit","expose","layer$","classes","boundClasses","model","active","get","value","set","v","disabled","hovered","children","parent","startOpenDelay","startCloseDelay","changeActive","openOnHover","length","onMouseenter","e","onMouseleave","onClick","stopPropagation","currentActive","onComplementClick","parentContent","$el","content$","parentModal","modal","clear","bindHover","el","addEventListener","unbindHover","removeEventListener","baseEl","neo","old","computedContentClasses","contentClasses","_createVNode","_Fragment","_mergeProps","onAfterLeave","scrim","$event","_len","arguments","args","_key","base","_len2","_key2","el$"],"sources":["../../../src/components/menu/YMenu.tsx"],"sourcesContent":["import type { PropType } from 'vue';\r\nimport {computed, defineComponent, ref, toRef, watch} from 'vue';\r\n\r\nimport { useModelDuplex } from '../../composables/communication';\r\nimport { useRender } from '../../composables/component';\r\nimport { pressCoordinateProps } from '../../composables/coordinate';\r\nimport { polyTransitionPropOptions } from '../../composables/transition';\r\nimport { toKebabCase } from '../../util/string';\r\nimport { bindClasses, chooseProps } from '../../util/vue-component';\r\nimport { YLayer, pressYLayerProps } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\n\r\nimport './YMenu.scss';\r\nimport {useActiveStack} from \"../layer/active-stack\";\r\nimport {hasElementMouseEvent} from \"../../util/dom\";\r\n\r\nconst NAME = 'YMenu';\r\nconst CLASS_NAME = toKebabCase(NAME);\r\n\r\nexport const YMenuPropOptions = {\r\n menuClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n openOnClickBase: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n closeCondition: {\r\n type: [Boolean, Function],\r\n default: undefined,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation',\r\n }),\r\n preventCloseBubble: Boolean as PropType<boolean>,\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YMenu = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YMenuPropOptions,\r\n transition: {\r\n ...polyTransitionPropOptions.transition,\r\n default: 'fade',\r\n },\r\n },\r\n emits: ['update:modelValue', 'afterLeave'],\r\n setup(props, { slots, emit, expose }) {\r\n const layer$ = ref<typeof YLayer>();\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.menuClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-menu': true,\r\n };\r\n });\r\n\r\n const model = useModelDuplex(props);\r\n\r\n const active = computed({\r\n get: (): boolean => {\r\n return !!model.value;\r\n },\r\n set: (v: boolean) => {\r\n if (!(v && props.disabled)) model.value = v;\r\n },\r\n });\r\n\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n const { children, parent } = useActiveStack(layer$, active, toRef(props, 'preventCloseBubble'));\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (!changeActive && props.openOnHover && !hovered.value && children.value.length === 0) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function onClick(e: MouseEvent) {\r\n e.stopPropagation();\r\n if (!props.openOnClickBase) {\r\n return;\r\n }\r\n const currentActive = active.value;\r\n if (!props.disabled) {\r\n active.value = !currentActive;\r\n }\r\n }\r\n\r\n function onComplementClick(e: Event) {\r\n if (props.closeCondition === false) {\r\n return;\r\n }\r\n if (typeof props.closeCondition === 'function') {\r\n if (props.closeCondition(e) === false) {\r\n active.value = false;\r\n }\r\n return;\r\n }\r\n if (active.value) {\r\n const parentContent = parent?.$el.value?.content$;\r\n const parentModal = parent?.$el.value?.modal;\r\n active.value = false;\r\n if (!(parentContent && !hasElementMouseEvent(e, parentContent)) && !parentModal) {\r\n parent?.clear();\r\n }\r\n }\r\n }\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener('mouseenter', onMouseenter);\r\n el.addEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener('mouseenter', onMouseenter);\r\n el.removeEventListener('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n neo.addEventListener('click', onClick);\r\n } else if (old) {\r\n unbindHover(old);\r\n old.removeEventListener('click', onClick);\r\n }\r\n },\r\n );\r\n\r\n const computedContentClasses = computed<Record<string, boolean>>(() => {\r\n const boundClasses = bindClasses(props.contentClasses);\r\n return {\r\n ...boundClasses,\r\n };\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n ref={layer$}\r\n transition={props.transition}\r\n onClick:complement={onComplementClick}\r\n onAfterLeave={() => emit('afterLeave')}\r\n {...{\r\n ...chooseProps(props, YLayer.props),\r\n classes: classes.value,\r\n scrim: false,\r\n contentClasses: {\r\n 'y-menu__content': true,\r\n ...computedContentClasses.value,\r\n },\r\n }}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return <>{slots.default?.(...args) ?? ''}</>;\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n el$: layer$,\r\n classes,\r\n };\r\n },\r\n});\r\n\r\nexport type YMenu = InstanceType<typeof YMenu>;\r\n"],"mappings":"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"}
|
|
@@ -161,6 +161,7 @@ export const YSwitch = defineComponent({
|
|
|
161
161
|
},
|
|
162
162
|
render() {
|
|
163
163
|
const {
|
|
164
|
+
$slots,
|
|
164
165
|
classes,
|
|
165
166
|
onClick,
|
|
166
167
|
onKeydown,
|
|
@@ -218,9 +219,7 @@ export const YSwitch = defineComponent({
|
|
|
218
219
|
}, null)])]), _createVNode("label", {
|
|
219
220
|
"for": inputId,
|
|
220
221
|
"class": "y-switch__label"
|
|
221
|
-
}, [_createVNode("
|
|
222
|
-
"name": "label"
|
|
223
|
-
}, null), _createVNode("input", {
|
|
222
|
+
}, [$slots.label?.(), _createVNode("input", {
|
|
224
223
|
"hidden": true
|
|
225
224
|
}, null)])])]);
|
|
226
225
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YSwitch.mjs","names":["defineComponent","withModifiers","uidCounter","YSwitch","name","model","prop","event","props","input","type","Boolean","Array","default","value","String","Number","Object","max","loading","disabled","stickOut","stateLabel","color","labelOn","labelOff","data","innerValue","counterId","focused","created","iid","toString","isArray","inputByValue","computed","isMultipleInput","multipleInputIndex","findIndex","inp","inputId","id","trackStyles","backgroundColor","classes","methods","found","find","undefined","changeMultipleInput","checked","multipleInput","slice","length","$emit","nextChange","push","splice","$nextTick","onClick","$event","changeInput","onFocus","onBlur","onKeydown","onChange","$checkbox","target","watch","render","_createVNode"],"sources":["../../../src/components/switch/YSwitch.tsx"],"sourcesContent":["import { PropType, defineComponent, withModifiers } from 'vue';\n\nimport './YSwitch.scss';\n\nlet uidCounter = 0;\n\nexport const YSwitch = defineComponent({\n name: 'YSwitch',\n model: {\n prop: 'input',\n event: 'change',\n },\n props: {\n input: {\n type: [Boolean, Array] as PropType<boolean | any[]>,\n default: false,\n },\n value: {\n type: [String, Number, Object] as PropType<any>,\n },\n max: {\n type: Number,\n },\n loading: {\n type: Boolean,\n },\n disabled: {\n type: Boolean,\n },\n stickOut: {\n type: Boolean,\n },\n stateLabel: {\n type: Boolean,\n },\n color: {\n type: String,\n },\n labelOn: {\n type: String,\n default: 'ON',\n },\n labelOff: {\n type: String,\n default: 'OFF',\n },\n },\n data() {\n return {\n innerValue: false,\n counterId: '',\n focused: false,\n };\n },\n created() {\n const iid = uidCounter.toString();\n uidCounter += 1;\n this.counterId = iid;\n if (Array.isArray(this.input)) {\n this.inputByValue();\n } else {\n this.innerValue = this.input;\n }\n },\n computed: {\n isMultipleInput() {\n return Array.isArray(this.input);\n },\n multipleInputIndex() {\n if (!Array.isArray(this.input)) {\n return -1;\n }\n return this.input.findIndex((inp) => {\n return inp === this.value;\n });\n },\n inputId() {\n const id = this.counterId;\n return `y-switch--${id}`;\n },\n trackStyles() {\n return {\n backgroundColor: this.color,\n };\n },\n classes() {\n return {\n 'y-switch--disabled': this.disabled,\n 'y-switch--loading': this.loading,\n 'y-switch--active': this.innerValue,\n 'y-switch--stick-out': this.stickOut,\n 'y-switch--focused': this.focused,\n };\n },\n },\n methods: {\n inputByValue() {\n if (Array.isArray(this.input)) {\n const found = this.input.find((inp: any) => {\n return inp === this.value;\n });\n\n if (found !== undefined) {\n this.innerValue = true;\n } else {\n this.innerValue = false;\n }\n }\n },\n changeMultipleInput(checked: boolean) {\n if (Array.isArray(this.input)) {\n const multipleInput = this.input.slice();\n if (\n checked &&\n this.max !== undefined &&\n multipleInput.length >= this.max\n ) {\n this.$emit('overmax');\n this.nextChange(false, multipleInput);\n return;\n }\n if (checked && this.multipleInputIndex < 0) {\n multipleInput.push(this.value);\n } else if (this.multipleInputIndex > -1) {\n multipleInput.splice(this.multipleInputIndex, 1);\n }\n this.$emit('change', multipleInput);\n }\n },\n nextChange(checked: boolean, value: any) {\n this.$nextTick(() => {\n this.innerValue = checked;\n });\n },\n onClick($event: Event) {\n if (this.disabled || this.loading) return;\n this.changeInput(!this.innerValue, $event);\n },\n onFocus() {\n this.focused = true;\n },\n onBlur() {\n this.focused = false;\n },\n onKeydown($event: KeyboardEvent) {\n // nothing\n },\n onChange($event: Event) {\n const $checkbox = $event.target as HTMLInputElement;\n const { checked } = $checkbox;\n this.changeInput(checked, $event);\n },\n changeInput(checked: boolean, event?: Event) {\n this.innerValue = checked;\n if (this.isMultipleInput) {\n this.changeMultipleInput(checked);\n } else {\n this.$emit('change', checked);\n }\n },\n },\n watch: {\n input() {\n this.inputByValue();\n },\n },\n render() {\n const {\n classes,\n onClick,\n onKeydown,\n onFocus,\n onBlur,\n onChange,\n inputId,\n innerValue,\n disabled,\n trackStyles,\n stateLabel,\n labelOn,\n labelOff,\n loading,\n } = this;\n return (\n <div class={{ 'y-switch': true, ...classes }}>\n <div class=\"y-switch__slot\">\n <div\n class=\"y-switch__input\"\n onClick={withModifiers(onClick, ['capture'])}\n onKeydown={onKeydown}\n >\n <input\n id={inputId}\n aria-checked={innerValue}\n type=\"checkbox\"\n role=\"switch\"\n onFocus={onFocus}\n onBlur={onBlur}\n onChange={onChange}\n disabled={disabled}\n checked={innerValue}\n ref=\"checkbox\"\n />\n <div class=\"y-switch__track\" style={trackStyles}>\n {stateLabel && (<div class=\"y-switch__state\">\n <span class=\"y-switch__state-label y-switch__state-label--on\">\n {{ labelOn }}\n </span>\n <span class=\"y-switch__state-label y-switch__state-label--off\">\n {{ labelOff }}\n </span>\n </div>)}\n </div>\n <div class=\"y-switch__thumb\">\n {loading && (<div class=\"y-switch__spinner\"></div>)}\n </div>\n </div>\n <label for={inputId} class=\"y-switch__label\">\n <slot name=\"label\"></slot>\n <input hidden />\n </label>\n </div>\n </div>\n );\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YSwitch.mjs","names":["defineComponent","withModifiers","uidCounter","YSwitch","name","model","prop","event","props","input","type","Boolean","Array","default","value","String","Number","Object","max","loading","disabled","stickOut","stateLabel","color","labelOn","labelOff","data","innerValue","counterId","focused","created","iid","toString","isArray","inputByValue","computed","isMultipleInput","multipleInputIndex","findIndex","inp","inputId","id","trackStyles","backgroundColor","classes","methods","found","find","undefined","changeMultipleInput","checked","multipleInput","slice","length","$emit","nextChange","push","splice","$nextTick","onClick","$event","changeInput","onFocus","onBlur","onKeydown","onChange","$checkbox","target","watch","render","$slots","_createVNode","label"],"sources":["../../../src/components/switch/YSwitch.tsx"],"sourcesContent":["import { PropType, defineComponent, withModifiers } from 'vue';\r\n\r\nimport './YSwitch.scss';\r\n\r\nlet uidCounter = 0;\r\n\r\nexport const YSwitch = defineComponent({\r\n name: 'YSwitch',\r\n model: {\r\n prop: 'input',\r\n event: 'change',\r\n },\r\n props: {\r\n input: {\r\n type: [Boolean, Array] as PropType<boolean | any[]>,\r\n default: false,\r\n },\r\n value: {\r\n type: [String, Number, Object] as PropType<any>,\r\n },\r\n max: {\r\n type: Number,\r\n },\r\n loading: {\r\n type: Boolean,\r\n },\r\n disabled: {\r\n type: Boolean,\r\n },\r\n stickOut: {\r\n type: Boolean,\r\n },\r\n stateLabel: {\r\n type: Boolean,\r\n },\r\n color: {\r\n type: String,\r\n },\r\n labelOn: {\r\n type: String,\r\n default: 'ON',\r\n },\r\n labelOff: {\r\n type: String,\r\n default: 'OFF',\r\n },\r\n },\r\n data() {\r\n return {\r\n innerValue: false,\r\n counterId: '',\r\n focused: false,\r\n };\r\n },\r\n created() {\r\n const iid = uidCounter.toString();\r\n uidCounter += 1;\r\n this.counterId = iid;\r\n if (Array.isArray(this.input)) {\r\n this.inputByValue();\r\n } else {\r\n this.innerValue = this.input;\r\n }\r\n },\r\n computed: {\r\n isMultipleInput() {\r\n return Array.isArray(this.input);\r\n },\r\n multipleInputIndex() {\r\n if (!Array.isArray(this.input)) {\r\n return -1;\r\n }\r\n return this.input.findIndex((inp) => {\r\n return inp === this.value;\r\n });\r\n },\r\n inputId() {\r\n const id = this.counterId;\r\n return `y-switch--${id}`;\r\n },\r\n trackStyles() {\r\n return {\r\n backgroundColor: this.color,\r\n };\r\n },\r\n classes() {\r\n return {\r\n 'y-switch--disabled': this.disabled,\r\n 'y-switch--loading': this.loading,\r\n 'y-switch--active': this.innerValue,\r\n 'y-switch--stick-out': this.stickOut,\r\n 'y-switch--focused': this.focused,\r\n };\r\n },\r\n },\r\n methods: {\r\n inputByValue() {\r\n if (Array.isArray(this.input)) {\r\n const found = this.input.find((inp: any) => {\r\n return inp === this.value;\r\n });\r\n\r\n if (found !== undefined) {\r\n this.innerValue = true;\r\n } else {\r\n this.innerValue = false;\r\n }\r\n }\r\n },\r\n changeMultipleInput(checked: boolean) {\r\n if (Array.isArray(this.input)) {\r\n const multipleInput = this.input.slice();\r\n if (\r\n checked &&\r\n this.max !== undefined &&\r\n multipleInput.length >= this.max\r\n ) {\r\n this.$emit('overmax');\r\n this.nextChange(false, multipleInput);\r\n return;\r\n }\r\n if (checked && this.multipleInputIndex < 0) {\r\n multipleInput.push(this.value);\r\n } else if (this.multipleInputIndex > -1) {\r\n multipleInput.splice(this.multipleInputIndex, 1);\r\n }\r\n this.$emit('change', multipleInput);\r\n }\r\n },\r\n nextChange(checked: boolean, value: any) {\r\n this.$nextTick(() => {\r\n this.innerValue = checked;\r\n });\r\n },\r\n onClick($event: Event) {\r\n if (this.disabled || this.loading) return;\r\n this.changeInput(!this.innerValue, $event);\r\n },\r\n onFocus() {\r\n this.focused = true;\r\n },\r\n onBlur() {\r\n this.focused = false;\r\n },\r\n onKeydown($event: KeyboardEvent) {\r\n // nothing\r\n },\r\n onChange($event: Event) {\r\n const $checkbox = $event.target as HTMLInputElement;\r\n const { checked } = $checkbox;\r\n this.changeInput(checked, $event);\r\n },\r\n changeInput(checked: boolean, event?: Event) {\r\n this.innerValue = checked;\r\n if (this.isMultipleInput) {\r\n this.changeMultipleInput(checked);\r\n } else {\r\n this.$emit('change', checked);\r\n }\r\n },\r\n },\r\n watch: {\r\n input() {\r\n this.inputByValue();\r\n },\r\n },\r\n render() {\r\n const {\r\n $slots,\r\n classes,\r\n onClick,\r\n onKeydown,\r\n onFocus,\r\n onBlur,\r\n onChange,\r\n inputId,\r\n innerValue,\r\n disabled,\r\n trackStyles,\r\n stateLabel,\r\n labelOn,\r\n labelOff,\r\n loading,\r\n } = this;\r\n return (\r\n <div class={{ 'y-switch': true, ...classes }}>\r\n <div class=\"y-switch__slot\">\r\n <div\r\n class=\"y-switch__input\"\r\n onClick={withModifiers(onClick, ['capture'])}\r\n onKeydown={onKeydown}\r\n >\r\n <input\r\n id={inputId}\r\n aria-checked={innerValue}\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n onFocus={onFocus}\r\n onBlur={onBlur}\r\n onChange={onChange}\r\n disabled={disabled}\r\n checked={innerValue}\r\n ref=\"checkbox\"\r\n />\r\n <div class=\"y-switch__track\" style={trackStyles}>\r\n {stateLabel && (\r\n <div class=\"y-switch__state\">\r\n <span class=\"y-switch__state-label y-switch__state-label--on\">\r\n {{ labelOn }}\r\n </span>\r\n <span class=\"y-switch__state-label y-switch__state-label--off\">\r\n {{ labelOff }}\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n <div class=\"y-switch__thumb\">\r\n {loading && <div class=\"y-switch__spinner\"></div>}\r\n </div>\r\n </div>\r\n <label for={inputId} class=\"y-switch__label\">\r\n {$slots.label?.()}\r\n <input hidden />\r\n </label>\r\n </div>\r\n </div>\r\n );\r\n },\r\n});\r\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layer-group.mjs","names":["computed","getCurrentInstance","watch","Y_LAYER_GROUP_CLASS_NAME","layerGroupState","WeakMap","useLayerGroup","target","vm","layerGroup","refTarget","value","targetEl","document","body","rootEl","root","vnode","el","parentElement","querySelector","nodeType","layerEl","createElement","className","appendChild","neo","old","has","get","delete","set","Set","add","immediate","getActiveLayers","activeLayers","forEach","ctx","active","push"],"sources":["../../src/composables/layer-group.ts"],"sourcesContent":["import { computed, getCurrentInstance, watch } from 'vue';\nimport type { Ref, ComponentInternalInstance } from 'vue';\n\nexport const Y_LAYER_GROUP_CLASS_NAME = 'y-layer-group';\n\nconst layerGroupState = new WeakMap<HTMLElement, Set<any>>();\n\nexport function useLayerGroup(target?: Ref<string | Element>) {\n const vm = getCurrentInstance()!;\n\n const layerGroup = computed<HTMLElement>(() => {\n const refTarget = target?.value;\n let targetEl: Element = document.body;\n\n const rootEl = vm.root.vnode.el?.parentElement as HTMLElement;\n if (rootEl) {\n targetEl = rootEl;\n }\n\n if (typeof refTarget === 'string') {\n const el = document.querySelector(refTarget);\n if (el) {\n targetEl = el;\n }\n }\n if (refTarget && (refTarget as Element).nodeType === 1) {\n targetEl = refTarget as Element;\n }\n //\n let layerEl = targetEl.querySelector(`.${Y_LAYER_GROUP_CLASS_NAME}`);\n if (!layerEl) {\n layerEl = document.createElement('div');\n layerEl.className = Y_LAYER_GROUP_CLASS_NAME;\n targetEl.appendChild(layerEl);\n }\n return layerEl as HTMLElement;\n });\n\n watch(\n layerGroup,\n (neo, old) => {\n if (old && layerGroupState.has(old)) {\n layerGroupState.get(old)?.delete(vm);\n }\n if (!(layerGroupState.has(neo) && layerGroupState.get(neo))) {\n layerGroupState.set(neo, new Set());\n }\n layerGroupState.get(neo)?.add(vm);\n },\n { immediate: true },\n );\n\n function getActiveLayers() {\n const activeLayers: ComponentInternalInstance[] = [];\n layerGroupState.get(layerGroup.value)?.forEach((value) => {\n if (value?.ctx?.active) {\n activeLayers.push(value);\n }\n });\n return activeLayers;\n }\n\n return { layerGroup, layerGroupState, getActiveLayers };\n}\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,kBAAkB,EAAEC,KAAK,QAAQ,KAAK;AAGzD,OAAO,MAAMC,wBAAwB,GAAG,eAAe;AAEvD,MAAMC,eAAe,GAAG,IAAIC,OAAO,CAAwB,CAAC;AAE5D,OAAO,SAASC,aAAaA,CAACC,MAA8B,EAAE;EAC5D,MAAMC,EAAE,GAAGP,kBAAkB,CAAC,CAAE;EAEhC,MAAMQ,UAAU,GAAGT,QAAQ,CAAc,MAAM;IAC7C,MAAMU,SAAS,GAAGH,MAAM,EAAEI,KAAK;IAC/B,IAAIC,QAAiB,GAAGC,QAAQ,CAACC,IAAI;IAErC,MAAMC,MAAM,GAAGP,EAAE,CAACQ,IAAI,CAACC,KAAK,CAACC,EAAE,EAAEC,aAA4B;IAC7D,IAAIJ,MAAM,EAAE;MACVH,QAAQ,GAAGG,MAAM;IACnB;IAEA,IAAI,OAAOL,SAAS,KAAK,QAAQ,EAAE;MACjC,MAAMQ,EAAE,GAAGL,QAAQ,CAACO,aAAa,CAACV,SAAS,CAAC;MAC5C,IAAIQ,EAAE,EAAE;QACNN,QAAQ,GAAGM,EAAE;MACf;IACF;IACA,IAAIR,SAAS,IAAKA,SAAS,CAAaW,QAAQ,KAAK,CAAC,EAAE;MACtDT,QAAQ,GAAGF,SAAoB;IACjC;IACA;IACA,IAAIY,OAAO,GAAGV,QAAQ,CAACQ,aAAa,CAAE,IAAGjB,wBAAyB,EAAC,CAAC;IACpE,IAAI,CAACmB,OAAO,EAAE;MACZA,OAAO,GAAGT,QAAQ,CAACU,aAAa,CAAC,KAAK,CAAC;MACvCD,OAAO,CAACE,SAAS,GAAGrB,wBAAwB;MAC5CS,QAAQ,CAACa,WAAW,CAACH,OAAO,CAAC;IAC/B;IACA,OAAOA,OAAO;EAChB,CAAC,CAAC;EAEFpB,KAAK,CACHO,UAAU,EACV,CAACiB,GAAG,EAAEC,GAAG,KAAK;IACZ,IAAIA,GAAG,IAAIvB,eAAe,CAACwB,GAAG,CAACD,GAAG,CAAC,EAAE;MACnCvB,eAAe,CAACyB,GAAG,CAACF,GAAG,CAAC,EAAEG,MAAM,CAACtB,EAAE,CAAC;IACtC;IACA,IAAI,EAAEJ,eAAe,CAACwB,GAAG,CAACF,GAAG,CAAC,IAAItB,eAAe,CAACyB,GAAG,CAACH,GAAG,CAAC,CAAC,EAAE;MAC3DtB,eAAe,CAAC2B,GAAG,CAACL,GAAG,EAAE,IAAIM,GAAG,CAAC,CAAC,CAAC;IACrC;IACA5B,eAAe,CAACyB,GAAG,CAACH,GAAG,CAAC,EAAEO,GAAG,CAACzB,EAAE,CAAC;EACnC,CAAC,EACD;IAAE0B,SAAS,EAAE;EAAK,CACpB,CAAC;EAED,SAASC,eAAeA,CAAA,EAAG;IACzB,MAAMC,YAAyC,GAAG,EAAE;IACpDhC,eAAe,CAACyB,GAAG,CAACpB,UAAU,CAACE,KAAK,CAAC,EAAE0B,OAAO,CAAE1B,KAAK,IAAK;MACxD,IAAIA,KAAK,EAAE2B,GAAG,EAAEC,MAAM,EAAE;QACtBH,YAAY,CAACI,IAAI,CAAC7B,KAAK,CAAC;MAC1B;IACF,CAAC,CAAC;IACF,OAAOyB,YAAY;EACrB;EAEA,OAAO;IAAE3B,UAAU;IAAEL,eAAe;IAAE+B;EAAgB,CAAC;AACzD"}
|
|
1
|
+
{"version":3,"file":"layer-group.mjs","names":["computed","getCurrentInstance","watch","Y_LAYER_GROUP_CLASS_NAME","layerGroupState","WeakMap","useLayerGroup","target","vm","layerGroup","refTarget","value","targetEl","document","body","rootEl","root","vnode","el","parentElement","querySelector","nodeType","layerEl","createElement","className","appendChild","neo","old","has","get","delete","set","Set","add","immediate","getActiveLayers","activeLayers","forEach","ctx","active","push"],"sources":["../../src/composables/layer-group.ts"],"sourcesContent":["import { computed, getCurrentInstance, watch } from 'vue';\r\nimport type { Ref, ComponentInternalInstance } from 'vue';\r\n\r\nexport const Y_LAYER_GROUP_CLASS_NAME = 'y-layer-group';\r\n\r\nconst layerGroupState = new WeakMap<HTMLElement, Set<any>>();\r\n\r\nexport function useLayerGroup(target?: Ref<string | Element>) {\r\n const vm = getCurrentInstance()!;\r\n\r\n const layerGroup = computed<HTMLElement>(() => {\r\n const refTarget = target?.value;\r\n let targetEl: Element = document.body;\r\n\r\n const rootEl = vm.root.vnode.el?.parentElement as HTMLElement;\r\n if (rootEl) {\r\n targetEl = rootEl;\r\n }\r\n\r\n if (typeof refTarget === 'string') {\r\n const el = document.querySelector(refTarget);\r\n if (el) {\r\n targetEl = el;\r\n }\r\n }\r\n if (refTarget && (refTarget as Element).nodeType === 1) {\r\n targetEl = refTarget as Element;\r\n }\r\n //\r\n let layerEl = targetEl.querySelector(`.${Y_LAYER_GROUP_CLASS_NAME}`);\r\n if (!layerEl) {\r\n layerEl = document.createElement('div');\r\n layerEl.className = Y_LAYER_GROUP_CLASS_NAME;\r\n targetEl.appendChild(layerEl);\r\n }\r\n return layerEl as HTMLElement;\r\n });\r\n\r\n watch(\r\n layerGroup,\r\n (neo, old) => {\r\n if (old && layerGroupState.has(old)) {\r\n layerGroupState.get(old)?.delete(vm);\r\n }\r\n if (!(layerGroupState.has(neo) && layerGroupState.get(neo))) {\r\n layerGroupState.set(neo, new Set());\r\n }\r\n layerGroupState.get(neo)?.add(vm);\r\n },\r\n { immediate: true },\r\n );\r\n\r\n function getActiveLayers() {\r\n const activeLayers: ComponentInternalInstance[] = [];\r\n layerGroupState.get(layerGroup.value)?.forEach((value) => {\r\n if (value?.ctx?.active) {\r\n activeLayers.push(value);\r\n }\r\n });\r\n return activeLayers;\r\n }\r\n\r\n return { layerGroup, layerGroupState, getActiveLayers };\r\n}\r\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,kBAAkB,EAAEC,KAAK,QAAQ,KAAK;AAGzD,OAAO,MAAMC,wBAAwB,GAAG,eAAe;AAEvD,MAAMC,eAAe,GAAG,IAAIC,OAAO,CAAwB,CAAC;AAE5D,OAAO,SAASC,aAAaA,CAACC,MAA8B,EAAE;EAC5D,MAAMC,EAAE,GAAGP,kBAAkB,CAAC,CAAE;EAEhC,MAAMQ,UAAU,GAAGT,QAAQ,CAAc,MAAM;IAC7C,MAAMU,SAAS,GAAGH,MAAM,EAAEI,KAAK;IAC/B,IAAIC,QAAiB,GAAGC,QAAQ,CAACC,IAAI;IAErC,MAAMC,MAAM,GAAGP,EAAE,CAACQ,IAAI,CAACC,KAAK,CAACC,EAAE,EAAEC,aAA4B;IAC7D,IAAIJ,MAAM,EAAE;MACVH,QAAQ,GAAGG,MAAM;IACnB;IAEA,IAAI,OAAOL,SAAS,KAAK,QAAQ,EAAE;MACjC,MAAMQ,EAAE,GAAGL,QAAQ,CAACO,aAAa,CAACV,SAAS,CAAC;MAC5C,IAAIQ,EAAE,EAAE;QACNN,QAAQ,GAAGM,EAAE;MACf;IACF;IACA,IAAIR,SAAS,IAAKA,SAAS,CAAaW,QAAQ,KAAK,CAAC,EAAE;MACtDT,QAAQ,GAAGF,SAAoB;IACjC;IACA;IACA,IAAIY,OAAO,GAAGV,QAAQ,CAACQ,aAAa,CAAE,IAAGjB,wBAAyB,EAAC,CAAC;IACpE,IAAI,CAACmB,OAAO,EAAE;MACZA,OAAO,GAAGT,QAAQ,CAACU,aAAa,CAAC,KAAK,CAAC;MACvCD,OAAO,CAACE,SAAS,GAAGrB,wBAAwB;MAC5CS,QAAQ,CAACa,WAAW,CAACH,OAAO,CAAC;IAC/B;IACA,OAAOA,OAAO;EAChB,CAAC,CAAC;EAEFpB,KAAK,CACHO,UAAU,EACV,CAACiB,GAAG,EAAEC,GAAG,KAAK;IACZ,IAAIA,GAAG,IAAIvB,eAAe,CAACwB,GAAG,CAACD,GAAG,CAAC,EAAE;MACnCvB,eAAe,CAACyB,GAAG,CAACF,GAAG,CAAC,EAAEG,MAAM,CAACtB,EAAE,CAAC;IACtC;IACA,IAAI,EAAEJ,eAAe,CAACwB,GAAG,CAACF,GAAG,CAAC,IAAItB,eAAe,CAACyB,GAAG,CAACH,GAAG,CAAC,CAAC,EAAE;MAC3DtB,eAAe,CAAC2B,GAAG,CAACL,GAAG,EAAE,IAAIM,GAAG,CAAC,CAAC,CAAC;IACrC;IACA5B,eAAe,CAACyB,GAAG,CAACH,GAAG,CAAC,EAAEO,GAAG,CAACzB,EAAE,CAAC;EACnC,CAAC,EACD;IAAE0B,SAAS,EAAE;EAAK,CACpB,CAAC;EAED,SAASC,eAAeA,CAAA,EAAG;IACzB,MAAMC,YAAyC,GAAG,EAAE;IACpDhC,eAAe,CAACyB,GAAG,CAACpB,UAAU,CAACE,KAAK,CAAC,EAAE0B,OAAO,CAAE1B,KAAK,IAAK;MACxD,IAAIA,KAAK,EAAE2B,GAAG,EAAEC,MAAM,EAAE;QACtBH,YAAY,CAACI,IAAI,CAAC7B,KAAK,CAAC;MAC1B;IACF,CAAC,CAAC;IACF,OAAOyB,YAAY;EACrB;EAEA,OAAO;IAAE3B,UAAU;IAAEL,eAAe;IAAE+B;EAAgB,CAAC;AACzD"}
|
package/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["components","YUYEON_LOGO","nextTick","reactive","YUYEON_THEME_KEY","createThemeModule","useTheme","PlateWave","defaultOptions","credit","init","options","arguments","length","undefined","themeModule","theme","install","app","yuyeon","root","instance","Object","keys","forEach","componentName","comp","component","directive","provide","config","globalProperties","$yuyeon","_instance","_container","Error","$el","classList","add","setAttribute","console","log","unmount","scope","stop"],"sources":["../src/index.ts"],"sourcesContent":["import * as components from './components';\nimport { YUYEON_LOGO } from './etc';\nimport { Component, ComponentInternalInstance } from '@vue/runtime-core';\nimport type { App } from 'vue';\nimport { nextTick, reactive } from 'vue';\n\nimport {\n YUYEON_THEME_KEY,\n createThemeModule,\n useTheme,\n} from './composables/theme';\nimport PlateWave from './directives/plate-wave';\n\n//\nimport './styles/base.scss';\n\nconst defaultOptions = {\n credit: true,\n};\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $yuyeon: any;\n }\n}\n\nexport function init(options: any = defaultOptions) {\n const themeModule = createThemeModule(options?.theme);\n\n const install = (app: App): any => {\n themeModule.install(app);\n\n const yuyeon = reactive({\n app: null as ComponentInternalInstance | null,\n root: null as HTMLElement | null,\n theme: themeModule.instance,\n });\n\n Object.keys(components).forEach((componentName) => {\n const comp = components[componentName as keyof typeof components];\n app.component(componentName, comp as Component);\n });\n\n app.directive('plate-wave', PlateWave);\n\n app.provide(YUYEON_THEME_KEY, yuyeon.theme);\n\n app.config.globalProperties.$yuyeon = yuyeon;\n\n nextTick(() => {\n yuyeon.app = app._instance as any;\n yuyeon.root = app._container;\n if (!yuyeon.root) {\n throw new Error(`yuyeon: Can't found instance`);\n }\n const $el = yuyeon.root;\n $el.classList.add('y-root');\n $el.setAttribute('data-y-root', '');\n themeModule.init(yuyeon);\n });\n if (options?.credit) {\n console.log(YUYEON_LOGO);\n }\n const { unmount } = app;\n app.unmount = () => {\n unmount();\n themeModule.scope.stop();\n app.unmount = unmount;\n };\n };\n\n return {\n install,\n };\n}\n\nexport { useTheme };\n"],"mappings":"OAAO,KAAKA,UAAU;AAAA,SACbC,WAAW;AAGpB,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,KAAK;AAAC,SAGvCC,gBAAgB,EAChBC,iBAAiB,EACjBC,QAAQ;AAAA,OAEHC,SAAS,2CAEhB;AACA;AAEA,MAAMC,cAAc,GAAG;EACrBC,MAAM,EAAE;AACV,CAAC;AAQD,OAAO,SAASC,IAAIA,CAAA,EAAgC;EAAA,IAA/BC,OAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGJ,cAAc;EAChD,MAAMO,WAAW,GAAGV,iBAAiB,CAACM,OAAO,EAAEK,KAAK,CAAC;EAErD,MAAMC,OAAO,GAAIC,GAAQ,IAAU;IACjCH,WAAW,CAACE,OAAO,CAACC,GAAG,CAAC;IAExB,MAAMC,MAAM,GAAGhB,QAAQ,CAAC;MACtBe,GAAG,EAAE,IAAwC;MAC7CE,IAAI,EAAE,IAA0B;MAChCJ,KAAK,EAAED,WAAW,CAACM;IACrB,CAAC,CAAC;IAEFC,MAAM,CAACC,IAAI,CAACvB,UAAU,CAAC,CAACwB,OAAO,CAAEC,aAAa,IAAK;MACjD,MAAMC,IAAI,GAAG1B,UAAU,CAACyB,aAAa,CAA4B;MACjEP,GAAG,CAACS,SAAS,CAACF,aAAa,EAAEC,IAAiB,CAAC;IACjD,CAAC,CAAC;IAEFR,GAAG,CAACU,SAAS,CAAC,YAAY,EAAErB,SAAS,CAAC;IAEtCW,GAAG,CAACW,OAAO,CAACzB,gBAAgB,EAAEe,MAAM,CAACH,KAAK,CAAC;IAE3CE,GAAG,CAACY,MAAM,CAACC,gBAAgB,CAACC,OAAO,GAAGb,MAAM;IAE5CjB,QAAQ,CAAC,MAAM;MACbiB,MAAM,CAACD,GAAG,GAAGA,GAAG,CAACe,SAAgB;MACjCd,MAAM,CAACC,IAAI,GAAGF,GAAG,CAACgB,UAAU;MAC5B,IAAI,CAACf,MAAM,CAACC,IAAI,EAAE;QAChB,MAAM,IAAIe,KAAK,CAAE,8BAA6B,CAAC;MACjD;MACA,MAAMC,GAAG,GAAGjB,MAAM,CAACC,IAAI;MACvBgB,GAAG,CAACC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MAC3BF,GAAG,CAACG,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC;MACnCxB,WAAW,CAACL,IAAI,CAACS,MAAM,CAAC;IAC1B,CAAC,CAAC;IACF,IAAIR,OAAO,EAAEF,MAAM,EAAE;MACnB+B,OAAO,CAACC,GAAG,CAACxC,WAAW,CAAC;IAC1B;IACA,MAAM;MAAEyC;IAAQ,CAAC,GAAGxB,GAAG;IACvBA,GAAG,CAACwB,OAAO,GAAG,MAAM;MAClBA,OAAO,CAAC,CAAC;MACT3B,WAAW,CAAC4B,KAAK,CAACC,IAAI,CAAC,CAAC;MACxB1B,GAAG,CAACwB,OAAO,GAAGA,OAAO;IACvB,CAAC;EACH,CAAC;EAED,OAAO;IACLzB;EACF,CAAC;AACH;AAEA,SAASX,QAAQ"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["components","YUYEON_LOGO","nextTick","reactive","YUYEON_THEME_KEY","createThemeModule","useTheme","PlateWave","defaultOptions","credit","init","options","arguments","length","undefined","themeModule","theme","install","app","yuyeon","root","instance","Object","keys","forEach","componentName","comp","component","directive","provide","config","globalProperties","$yuyeon","_instance","_container","Error","$el","classList","add","setAttribute","console","log","unmount","scope","stop"],"sources":["../src/index.ts"],"sourcesContent":["import * as components from './components';\r\nimport { YUYEON_LOGO } from './etc';\r\nimport { Component, ComponentInternalInstance } from '@vue/runtime-core';\r\nimport type { App } from 'vue';\r\nimport { nextTick, reactive } from 'vue';\r\n\r\nimport {\r\n YUYEON_THEME_KEY,\r\n createThemeModule,\r\n useTheme,\r\n} from './composables/theme';\r\nimport PlateWave from './directives/plate-wave';\r\n\r\n//\r\nimport './styles/base.scss';\r\n\r\nconst defaultOptions = {\r\n credit: true,\r\n};\r\n\r\ndeclare module 'vue' {\r\n interface ComponentCustomProperties {\r\n $yuyeon: any;\r\n }\r\n}\r\n\r\nexport function init(options: any = defaultOptions) {\r\n const themeModule = createThemeModule(options?.theme);\r\n\r\n const install = (app: App): any => {\r\n themeModule.install(app);\r\n\r\n const yuyeon = reactive({\r\n app: null as ComponentInternalInstance | null,\r\n root: null as HTMLElement | null,\r\n theme: themeModule.instance,\r\n });\r\n\r\n Object.keys(components).forEach((componentName) => {\r\n const comp = components[componentName as keyof typeof components];\r\n app.component(componentName, comp as Component);\r\n });\r\n\r\n app.directive('plate-wave', PlateWave);\r\n\r\n app.provide(YUYEON_THEME_KEY, yuyeon.theme);\r\n\r\n app.config.globalProperties.$yuyeon = yuyeon;\r\n\r\n nextTick(() => {\r\n yuyeon.app = app._instance as any;\r\n yuyeon.root = app._container;\r\n if (!yuyeon.root) {\r\n throw new Error(`yuyeon: Can't found instance`);\r\n }\r\n const $el = yuyeon.root;\r\n $el.classList.add('y-root');\r\n $el.setAttribute('data-y-root', '');\r\n themeModule.init(yuyeon);\r\n });\r\n if (options?.credit) {\r\n console.log(YUYEON_LOGO);\r\n }\r\n const { unmount } = app;\r\n app.unmount = () => {\r\n unmount();\r\n themeModule.scope.stop();\r\n app.unmount = unmount;\r\n };\r\n };\r\n\r\n return {\r\n install,\r\n };\r\n}\r\n\r\nexport { useTheme };\r\n"],"mappings":"OAAO,KAAKA,UAAU;AAAA,SACbC,WAAW;AAGpB,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,KAAK;AAAC,SAGvCC,gBAAgB,EAChBC,iBAAiB,EACjBC,QAAQ;AAAA,OAEHC,SAAS,2CAEhB;AACA;AAEA,MAAMC,cAAc,GAAG;EACrBC,MAAM,EAAE;AACV,CAAC;AAQD,OAAO,SAASC,IAAIA,CAAA,EAAgC;EAAA,IAA/BC,OAAY,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGJ,cAAc;EAChD,MAAMO,WAAW,GAAGV,iBAAiB,CAACM,OAAO,EAAEK,KAAK,CAAC;EAErD,MAAMC,OAAO,GAAIC,GAAQ,IAAU;IACjCH,WAAW,CAACE,OAAO,CAACC,GAAG,CAAC;IAExB,MAAMC,MAAM,GAAGhB,QAAQ,CAAC;MACtBe,GAAG,EAAE,IAAwC;MAC7CE,IAAI,EAAE,IAA0B;MAChCJ,KAAK,EAAED,WAAW,CAACM;IACrB,CAAC,CAAC;IAEFC,MAAM,CAACC,IAAI,CAACvB,UAAU,CAAC,CAACwB,OAAO,CAAEC,aAAa,IAAK;MACjD,MAAMC,IAAI,GAAG1B,UAAU,CAACyB,aAAa,CAA4B;MACjEP,GAAG,CAACS,SAAS,CAACF,aAAa,EAAEC,IAAiB,CAAC;IACjD,CAAC,CAAC;IAEFR,GAAG,CAACU,SAAS,CAAC,YAAY,EAAErB,SAAS,CAAC;IAEtCW,GAAG,CAACW,OAAO,CAACzB,gBAAgB,EAAEe,MAAM,CAACH,KAAK,CAAC;IAE3CE,GAAG,CAACY,MAAM,CAACC,gBAAgB,CAACC,OAAO,GAAGb,MAAM;IAE5CjB,QAAQ,CAAC,MAAM;MACbiB,MAAM,CAACD,GAAG,GAAGA,GAAG,CAACe,SAAgB;MACjCd,MAAM,CAACC,IAAI,GAAGF,GAAG,CAACgB,UAAU;MAC5B,IAAI,CAACf,MAAM,CAACC,IAAI,EAAE;QAChB,MAAM,IAAIe,KAAK,CAAE,8BAA6B,CAAC;MACjD;MACA,MAAMC,GAAG,GAAGjB,MAAM,CAACC,IAAI;MACvBgB,GAAG,CAACC,SAAS,CAACC,GAAG,CAAC,QAAQ,CAAC;MAC3BF,GAAG,CAACG,YAAY,CAAC,aAAa,EAAE,EAAE,CAAC;MACnCxB,WAAW,CAACL,IAAI,CAACS,MAAM,CAAC;IAC1B,CAAC,CAAC;IACF,IAAIR,OAAO,EAAEF,MAAM,EAAE;MACnB+B,OAAO,CAACC,GAAG,CAACxC,WAAW,CAAC;IAC1B;IACA,MAAM;MAAEyC;IAAQ,CAAC,GAAGxB,GAAG;IACvBA,GAAG,CAACwB,OAAO,GAAG,MAAM;MAClBA,OAAO,CAAC,CAAC;MACT3B,WAAW,CAAC4B,KAAK,CAACC,IAAI,CAAC,CAAC;MACxB1B,GAAG,CAACwB,OAAO,GAAGA,OAAO;IACvB,CAAC;EACH,CAAC;EAED,OAAO;IACLzB;EACF,CAAC;AACH;AAEA,SAASX,QAAQ"}
|
package/package.json
CHANGED
|
@@ -88,6 +88,9 @@ export declare const YTooltip: import("vue").DefineComponent<{
|
|
|
88
88
|
type: PropType<boolean>;
|
|
89
89
|
};
|
|
90
90
|
classes: {
|
|
91
|
+
/**
|
|
92
|
+
* # Component
|
|
93
|
+
*/
|
|
91
94
|
type: PropType<string | string[] | Record<string, any>>;
|
|
92
95
|
};
|
|
93
96
|
contentClasses: {
|
|
@@ -1752,6 +1755,9 @@ export declare const YTooltip: import("vue").DefineComponent<{
|
|
|
1752
1755
|
type: PropType<boolean>;
|
|
1753
1756
|
};
|
|
1754
1757
|
classes: {
|
|
1758
|
+
/**
|
|
1759
|
+
* # Component
|
|
1760
|
+
*/
|
|
1755
1761
|
type: PropType<string | string[] | Record<string, any>>;
|
|
1756
1762
|
};
|
|
1757
1763
|
contentClasses: {
|