yuyeon 0.1.2-rc.1 → 0.1.2-rc.2
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/style.css +1 -1
- package/dist/yuyeon.js +248 -244
- package/dist/yuyeon.umd.cjs +8 -8
- package/lib/components/badge/YBadge.mjs +4 -4
- package/lib/components/badge/YBadge.mjs.map +1 -1
- package/lib/components/badge/YBadge.scss +1 -0
- package/lib/components/dialog/YDialog.mjs +4 -2
- package/lib/components/dialog/YDialog.mjs.map +1 -1
- package/lib/components/select/YSelect.mjs +4 -4
- package/lib/components/select/YSelect.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { defineComponent } from 'vue';
|
|
1
|
+
import { createVNode as _createVNode } from "vue";
|
|
2
|
+
import { defineComponent, vShow, withDirectives } from 'vue';
|
|
3
3
|
import { useRender } from "../../composables/component.mjs";
|
|
4
4
|
import { useI18n } from "../../composables/i18n/index.mjs";
|
|
5
5
|
import { IconValue } from "../../composables/icon.mjs";
|
|
@@ -61,7 +61,7 @@ export const YBadge = defineComponent({
|
|
|
61
61
|
name: props.transition
|
|
62
62
|
}
|
|
63
63
|
}, {
|
|
64
|
-
default: () => [
|
|
64
|
+
default: () => [withDirectives(_createVNode("span", {
|
|
65
65
|
"class": ['y-badge__badge'],
|
|
66
66
|
"aria-atomic": "true",
|
|
67
67
|
"aria-label": t(props.label, value),
|
|
@@ -69,7 +69,7 @@ export const YBadge = defineComponent({
|
|
|
69
69
|
"role": "status"
|
|
70
70
|
}, [props.dot ? undefined : slots.badge ? slots.badge?.() : props.icon ? _createVNode(YIcon, {
|
|
71
71
|
"icon": props.icon
|
|
72
|
-
}, null) : content]), [[
|
|
72
|
+
}, null) : content]), [[vShow, !props.hide]])]
|
|
73
73
|
})])]
|
|
74
74
|
});
|
|
75
75
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YBadge.mjs","names":["defineComponent","useRender","useI18n","IconValue","PolyTransition","propsFactory","YIcon","pressYBadgePropsOptions","tag","type","String","default","dot","Boolean","bordered","floating","inline","icon","color","hide","label","content","Number","max","transition","YBadge","name","props","slots","Object","setup","_ref","t","ElTag","value","isNaN","_createVNode","
|
|
1
|
+
{"version":3,"file":"YBadge.mjs","names":["defineComponent","vShow","withDirectives","useRender","useI18n","IconValue","PolyTransition","propsFactory","YIcon","pressYBadgePropsOptions","tag","type","String","default","dot","Boolean","bordered","floating","inline","icon","color","hide","label","content","Number","max","transition","YBadge","name","props","slots","Object","setup","_ref","t","ElTag","value","isNaN","_createVNode","undefined","badge"],"sources":["../../../src/components/badge/YBadge.tsx"],"sourcesContent":["import {\n PropType,\n SlotsType,\n defineComponent,\n vShow,\n withDirectives,\n} from 'vue';\n\nimport { useRender } from '../../composables/component';\nimport { useI18n } from '../../composables/i18n';\nimport { IconValue } from '../../composables/icon';\nimport { PolyTransition } from '../../composables/transition';\nimport { propsFactory } from '../../util/vue-component';\nimport { YIcon } from '../icon/YIcon';\n\nimport './YBadge.scss';\n\nexport const pressYBadgePropsOptions = propsFactory(\n {\n tag: {\n type: String as PropType<string>,\n default: 'div',\n },\n dot: Boolean,\n bordered: Boolean,\n floating: Boolean,\n inline: Boolean,\n icon: IconValue,\n color: String,\n hide: Boolean,\n label: {\n type: String,\n default: '$yuyeon.badge',\n },\n content: [Number, String],\n max: Number,\n transition: {\n type: String,\n default: 'fade',\n },\n },\n 'YBadge',\n);\n\nexport const YBadge = defineComponent({\n name: 'YBadge',\n props: pressYBadgePropsOptions(),\n slots: Object as SlotsType<{\n default: any;\n badge: any;\n }>,\n setup(props, { slots }) {\n const { t } = useI18n();\n\n useRender(() => {\n const ElTag = props.tag as keyof HTMLElementTagNameMap;\n const value = Number(props.content);\n const content =\n !props.max || isNaN(value)\n ? props.content\n : value <= +props.max\n ? value\n : `${props.max}+`;\n return (\n <ElTag\n class={[\n 'y-badge',\n {\n 'y-badge--bordered': props.bordered,\n 'y-badge--dot': props.dot,\n 'y-badge--floating': props.floating,\n 'y-badge--inline': props.inline,\n },\n ]}\n >\n <div class=\"y-badge__base\">\n {slots.default?.()}\n <PolyTransition\n is={props.transition}\n transitionProps={{ name: props.transition }}\n >\n {withDirectives(\n <span\n class={['y-badge__badge']}\n aria-atomic=\"true\"\n aria-label={t(props.label, value)}\n aria-live=\"polite\"\n role=\"status\"\n >\n {props.dot ? undefined : slots.badge ? (\n slots.badge?.()\n ) : props.icon ? (\n <YIcon icon={props.icon} />\n ) : (\n content\n )}\n </span>,\n [[vShow, !props.hide]],\n )}\n </PolyTransition>\n </div>\n </ElTag>\n );\n });\n },\n});\n\nexport type YBadge = InstanceType<typeof YBadge>;\n"],"mappings":";AAAA,SAGEA,eAAe,EACfC,KAAK,EACLC,cAAc,QACT,KAAK;AAAC,SAEJC,SAAS;AAAA,SACTC,OAAO;AAAA,SACPC,SAAS;AAAA,SACTC,cAAc;AAAA,SACdC,YAAY;AAAA,SACZC,KAAK;AAEd;AAEA,OAAO,MAAMC,uBAAuB,GAAGF,YAAY,CACjD;EACEG,GAAG,EAAE;IACHC,IAAI,EAAEC,MAA0B;IAChCC,OAAO,EAAE;EACX,CAAC;EACDC,GAAG,EAAEC,OAAO;EACZC,QAAQ,EAAED,OAAO;EACjBE,QAAQ,EAAEF,OAAO;EACjBG,MAAM,EAAEH,OAAO;EACfI,IAAI,EAAEd,SAAS;EACfe,KAAK,EAAER,MAAM;EACbS,IAAI,EAAEN,OAAO;EACbO,KAAK,EAAE;IACLX,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDU,OAAO,EAAE,CAACC,MAAM,EAAEZ,MAAM,CAAC;EACzBa,GAAG,EAAED,MAAM;EACXE,UAAU,EAAE;IACVf,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX;AACF,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAMc,MAAM,GAAG3B,eAAe,CAAC;EACpC4B,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAEpB,uBAAuB,CAAC,CAAC;EAChCqB,KAAK,EAAEC,MAGL;EACFC,KAAKA,CAACH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEH;IAAM,CAAC,GAAAG,IAAA;IACpB,MAAM;MAAEC;IAAE,CAAC,GAAG9B,OAAO,CAAC,CAAC;IAEvBD,SAAS,CAAC,MAAM;MACd,MAAMgC,KAAK,GAAGN,KAAK,CAACnB,GAAkC;MACtD,MAAM0B,KAAK,GAAGZ,MAAM,CAACK,KAAK,CAACN,OAAO,CAAC;MACnC,MAAMA,OAAO,GACX,CAACM,KAAK,CAACJ,GAAG,IAAIY,KAAK,CAACD,KAAK,CAAC,GACtBP,KAAK,CAACN,OAAO,GACba,KAAK,IAAI,CAACP,KAAK,CAACJ,GAAG,GACjBW,KAAK,GACJ,GAAEP,KAAK,CAACJ,GAAI,GAAE;MACvB,OAAAa,YAAA,CAAAH,KAAA;QAAA,SAEW,CACL,SAAS,EACT;UACE,mBAAmB,EAAEN,KAAK,CAACb,QAAQ;UACnC,cAAc,EAAEa,KAAK,CAACf,GAAG;UACzB,mBAAmB,EAAEe,KAAK,CAACZ,QAAQ;UACnC,iBAAiB,EAAEY,KAAK,CAACX;QAC3B,CAAC;MACF;QAAAL,OAAA,EAAAA,CAAA,MAAAyB,YAAA;UAAA;QAAA,IAGER,KAAK,CAACjB,OAAO,GAAG,CAAC,EAAAyB,YAAA,CAAAhC,cAAA;UAAA,MAEZuB,KAAK,CAACH,UAAU;UAAA,mBACH;YAAEE,IAAI,EAAEC,KAAK,CAACH;UAAW;QAAC;UAAAb,OAAA,EAAAA,CAAA,MAE1CX,cAAc,CAAAoC,YAAA;YAAA,SAEJ,CAAC,gBAAgB,CAAC;YAAA;YAAA,cAEbJ,CAAC,CAACL,KAAK,CAACP,KAAK,EAAEc,KAAK,CAAC;YAAA;YAAA;UAAA,IAIhCP,KAAK,CAACf,GAAG,GAAGyB,SAAS,GAAGT,KAAK,CAACU,KAAK,GAClCV,KAAK,CAACU,KAAK,GAAG,CAAC,GACbX,KAAK,CAACV,IAAI,GAAAmB,YAAA,CAAA9B,KAAA;YAAA,QACCqB,KAAK,CAACV;UAAI,WAEvBI,OACD,IAEH,CAAC,CAACtB,KAAK,EAAE,CAAC4B,KAAK,CAACR,IAAI,CAAC,CACvB,CAAC;QAAA;MAAA;IAKX,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
|
|
@@ -147,8 +147,10 @@ export const YDialog = defineComponent({
|
|
|
147
147
|
document.documentElement.classList.remove('y-dialog--prevent-scroll');
|
|
148
148
|
root$.style.top = '';
|
|
149
149
|
root$.style.left = '';
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
requestAnimationFrame(() => {
|
|
151
|
+
document.documentElement.scrollTop = tempScrollTop.value;
|
|
152
|
+
document.documentElement.scrollLeft = tempScrollLeft.value;
|
|
153
|
+
});
|
|
152
154
|
}
|
|
153
155
|
}
|
|
154
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YDialog.mjs","names":["computed","defineComponent","getCurrentInstance","onBeforeUnmount","ref","shallowRef","watch","useModelDuplex","useRender","chooseProps","omit","toStyleSizeValue","bindClasses","propsFactory","YCard","YLayer","pressYLayerProps","useActiveStack","pressYDialogPropsOptions","persistent","type","Boolean","default","dialogClasses","Array","String","Object","maximized","focusTrap","offset","scrim","YDialog","name","components","props","emits","setup","_ref","emit","slots","vm","$yuyeon","appContext","config","globalProperties","active","classes","boundClasses","styles","contentStyles","paddingTop","layer$","children","onFocusin","e","prevTarget","relatedTarget","target","excludeTarget","document","querySelector","isArray","excluded","some","exclude","testChildrenContains","layers","layer","content$","contains","value","includes","focusableSelector","focusables","querySelectorAll","filter","el","hasAttribute","matches","length","firstChild","lastChild","isSameNode","focus","installFocusTrap","addEventListener","dismantleFocusTrap","removeEventListener","tempScrollTop","tempScrollLeft","preventInteractionBackground","toggle","root$","root","activeLayers","getActiveLayers","filtered","ctx","modal","classList","scrollTop","documentElement","scrollLeft","add","style","top","left","isMe","remove","onUpdate","v","onClick","currentActive","disabled","baseEl","neo","old","immediate","_createVNode","_Fragment","_mergeProps","$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 onBeforeUnmount,\n ref,\n shallowRef,\n watch,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { chooseProps, omit } from '../../util';\nimport { toStyleSizeValue } from '../../util/ui';\nimport { bindClasses, propsFactory } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YLayer, pressYLayerProps } from '../layer';\nimport { useActiveStack } from '../layer/active-stack';\n\nimport './YDialog.scss';\n\nexport const pressYDialogPropsOptions = propsFactory(\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 maximized: Boolean as PropType<boolean>,\n focusTrap: {\n type: [Boolean, String, Object, Array] as PropType<\n false | string | string[] | HTMLElement\n >,\n default: true,\n },\n offset: {\n type: String as PropType<string>,\n },\n ...omit(\n pressYLayerProps({\n scrim: true,\n }),\n ['offset', 'classes'],\n ),\n },\n 'YDialog',\n);\n\nexport const YDialog = defineComponent({\n name: 'YDialog',\n components: {\n YLayer,\n YCard,\n },\n props: pressYDialogPropsOptions(),\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 styles = computed(() => {\n return {\n ...(props.contentStyles ?? {}),\n paddingTop: toStyleSizeValue(props.offset),\n };\n });\n\n const layer$ = ref<typeof YLayer>();\n const { children } = useActiveStack(layer$, active, shallowRef(true));\n\n function onFocusin(e: FocusEvent) {\n if (props.focusTrap === false) {\n return;\n }\n\n const prevTarget = e.relatedTarget as HTMLElement | null;\n const target = e.target as HTMLElement | null;\n\n const excludeTarget = props.focusTrap;\n\n if (\n typeof excludeTarget === 'string' &&\n document.querySelector(excludeTarget) == target\n ) {\n return;\n }\n\n if (typeof excludeTarget === 'object') {\n if (Array.isArray(excludeTarget)) {\n const excluded = excludeTarget.some((exclude) => {\n if (typeof exclude === 'string') {\n return document.querySelector(exclude) == target;\n }\n if (typeof exclude === 'object') {\n return exclude == target;\n }\n });\n if (excluded) {\n return;\n }\n } else if (excludeTarget == target) {\n return;\n }\n }\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 (target?.isSameNode(firstChild) || target?.isSameNode(lastChild)) {\n return;\n }\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 (\n (filtered && !filtered.length) ||\n !root$.classList.contains('y-dialog--virtual-scroll')\n ) {\n const scrollTop = document.documentElement.scrollTop;\n const scrollLeft = document.documentElement.scrollLeft;\n tempScrollTop.value = scrollTop;\n tempScrollLeft.value = scrollLeft;\n if (props.maximized) {\n document.documentElement.classList.add('y-dialog--prevent-scroll');\n }\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 onBeforeUnmount(() => {\n preventInteractionBackground(false);\n });\n\n useRender(() => {\n return (\n <>\n <YLayer\n v-model={active.value}\n classes={classes.value}\n content-styles={styles.value}\n modal\n ref={layer$}\n {...omit(chooseProps(props, YLayer.props), ['contentStyles'])}\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","onBeforeUnmount","ref","shallowRef","watch","useModelDuplex","useRender","chooseProps","omit","toStyleSizeValue","bindClasses","propsFactory","YCard","YLayer","pressYLayerProps","useActiveStack","pressYDialogPropsOptions","persistent","type","Boolean","default","dialogClasses","Array","String","Object","maximized","focusTrap","offset","scrim","YDialog","name","components","props","emits","setup","_ref","emit","slots","vm","$yuyeon","appContext","config","globalProperties","active","classes","boundClasses","styles","contentStyles","paddingTop","layer$","children","onFocusin","e","prevTarget","relatedTarget","target","excludeTarget","document","querySelector","isArray","excluded","some","exclude","testChildrenContains","layers","layer","content$","contains","value","includes","focusableSelector","focusables","querySelectorAll","filter","el","hasAttribute","matches","length","firstChild","lastChild","isSameNode","focus","installFocusTrap","addEventListener","dismantleFocusTrap","removeEventListener","tempScrollTop","tempScrollLeft","preventInteractionBackground","toggle","root$","root","activeLayers","getActiveLayers","filtered","ctx","modal","classList","scrollTop","documentElement","scrollLeft","add","style","top","left","isMe","remove","requestAnimationFrame","onUpdate","v","onClick","currentActive","disabled","baseEl","neo","old","immediate","_createVNode","_Fragment","_mergeProps","$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 onBeforeUnmount,\n ref,\n shallowRef,\n watch,\n} from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { chooseProps, omit } from '../../util';\nimport { toStyleSizeValue } from '../../util/ui';\nimport { bindClasses, propsFactory } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YLayer, pressYLayerProps } from '../layer';\nimport { useActiveStack } from '../layer/active-stack';\n\nimport './YDialog.scss';\n\nexport const pressYDialogPropsOptions = propsFactory(\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 maximized: Boolean as PropType<boolean>,\n focusTrap: {\n type: [Boolean, String, Object, Array] as PropType<\n false | string | string[] | HTMLElement\n >,\n default: true,\n },\n offset: {\n type: String as PropType<string>,\n },\n ...omit(\n pressYLayerProps({\n scrim: true,\n }),\n ['offset', 'classes'],\n ),\n },\n 'YDialog',\n);\n\nexport const YDialog = defineComponent({\n name: 'YDialog',\n components: {\n YLayer,\n YCard,\n },\n props: pressYDialogPropsOptions(),\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 styles = computed(() => {\n return {\n ...(props.contentStyles ?? {}),\n paddingTop: toStyleSizeValue(props.offset),\n };\n });\n\n const layer$ = ref<typeof YLayer>();\n const { children } = useActiveStack(layer$, active, shallowRef(true));\n\n function onFocusin(e: FocusEvent) {\n if (props.focusTrap === false) {\n return;\n }\n\n const prevTarget = e.relatedTarget as HTMLElement | null;\n const target = e.target as HTMLElement | null;\n\n const excludeTarget = props.focusTrap;\n\n if (\n typeof excludeTarget === 'string' &&\n document.querySelector(excludeTarget) == target\n ) {\n return;\n }\n\n if (typeof excludeTarget === 'object') {\n if (Array.isArray(excludeTarget)) {\n const excluded = excludeTarget.some((exclude) => {\n if (typeof exclude === 'string') {\n return document.querySelector(exclude) == target;\n }\n if (typeof exclude === 'object') {\n return exclude == target;\n }\n });\n if (excluded) {\n return;\n }\n } else if (excludeTarget == target) {\n return;\n }\n }\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 (target?.isSameNode(firstChild) || target?.isSameNode(lastChild)) {\n return;\n }\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 (\n (filtered && !filtered.length) ||\n !root$.classList.contains('y-dialog--virtual-scroll')\n ) {\n const scrollTop = document.documentElement.scrollTop;\n const scrollLeft = document.documentElement.scrollLeft;\n tempScrollTop.value = scrollTop;\n tempScrollLeft.value = scrollLeft;\n if (props.maximized) {\n document.documentElement.classList.add('y-dialog--prevent-scroll');\n }\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 requestAnimationFrame(() => {\n document.documentElement.scrollTop = tempScrollTop.value;\n document.documentElement.scrollLeft = tempScrollLeft.value;\n });\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 onBeforeUnmount(() => {\n preventInteractionBackground(false);\n });\n\n useRender(() => {\n return (\n <>\n <YLayer\n v-model={active.value}\n classes={classes.value}\n content-styles={styles.value}\n modal\n ref={layer$}\n {...omit(chooseProps(props, YLayer.props), ['contentStyles'])}\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,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
|
|
2
2
|
import { shallowRef } from '@vue/runtime-core';
|
|
3
|
-
import { nextTick, watch } from 'vue';
|
|
3
|
+
import { nextTick, vShow, watch, withDirectives } from 'vue';
|
|
4
4
|
import { computed, defineComponent, mergeProps, onMounted, ref } from 'vue';
|
|
5
5
|
import { useModelDuplex } from "../../composables/communication.mjs";
|
|
6
6
|
import { useRender } from "../../composables/component.mjs";
|
|
@@ -302,7 +302,7 @@ export const YSelect = defineComponent({
|
|
|
302
302
|
select(item);
|
|
303
303
|
}
|
|
304
304
|
};
|
|
305
|
-
return
|
|
305
|
+
return withDirectives(_createVNode(YListItem, {
|
|
306
306
|
"onClick": e => onClickItem(item, e),
|
|
307
307
|
"class": [{
|
|
308
308
|
'y-list-item--active': isSelected(item)
|
|
@@ -312,7 +312,7 @@ export const YSelect = defineComponent({
|
|
|
312
312
|
default: () => slots.item ? slots.item?.(itemProps) : item.text,
|
|
313
313
|
leading: slots['item-leading'] && (() => slots['item-leading']?.(itemProps)),
|
|
314
314
|
trailing: slots['item-trailing'] && (() => slots['item-trailing']?.(itemProps))
|
|
315
|
-
}), [[
|
|
315
|
+
}), [[vShow, !item.hide]]);
|
|
316
316
|
})]
|
|
317
317
|
}) : _createVNode("div", {
|
|
318
318
|
"class": "y-select__no-options"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YSelect.mjs","names":["shallowRef","nextTick","watch","computed","defineComponent","mergeProps","onMounted","ref","useModelDuplex","useRender","pressCoordinateProps","useI18n","pressListItemsPropsOptions","useItems","getScrollParent","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","getHtmlElement","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIcon","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","menuProps","Object","pressYSelectPropsOptions","maxHeight","Number","String","dropdownIcon","Array","openDelay","closeDelay","position","YSelect","name","inheritAttrs","props","emits","value","click:item","item","e","slots","setup","_ref","attrs","expose","fieldInputRef","menuRef","listRef","cardRef","focused","items","toRefineItems","toEmitItems","t","model","v","emitValue","selections","ret","found","find","push","selected","map","selection","extraMenuProps","preventCloseBubble","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","setTimeout","onAfterLeave","focus","closeCondition","target","layer$","content$","contains","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","scrollToActiveItem","listEl","activeEl","querySelector","contentEl","scrollEl","isSameNode","scrollTo","top","offsetTop","behavior","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","offset","align","origin","$event","base","_len","args","_key","rxValue","selectionProps","raw","placeholder","internalItems","leading","_len2","_key2","trailing","label","_len3","_key3","_len4","_key4","menu","itemProps","_withDirectives","_vShow","hide","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport { PropType, SlotsType, nextTick, watch } from 'vue';\nimport { computed, defineComponent, mergeProps, onMounted, ref } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { pressCoordinateProps } from '../../composables/coordinate';\nimport { useI18n } from '../../composables/i18n';\nimport {\n ListItem,\n pressListItemsPropsOptions,\n useItems,\n} from '../../composables/list-items';\nimport { getScrollParent } from '../../util';\nimport { wrapInArray } from '../../util/array';\nimport { deepEqual, getObjectValueByPath, omit } from '../../util/common';\nimport {\n chooseProps,\n getHtmlElement,\n propsFactory,\n} from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIcon, YIconIconProp } from '../icon';\nimport { YList, YListItem } from '../list';\nimport { YMenu } from '../menu';\n\nimport './YSelect.scss';\n\nexport type SelectEquals = (\n optionsItem: any,\n valueItem: any,\n valueKey?: string,\n) => boolean;\n\nexport function returnItemEquals(\n optionsItem: any,\n valueItem: any,\n valueKey = 'value',\n) {\n const valueItemType = typeof valueItem;\n const itemValue =\n valueItemType === 'string' || valueItemType === 'number'\n ? getObjectValueByPath(optionsItem, valueKey)\n : optionsItem;\n return deepEqual(itemValue, valueItem);\n}\n\nexport const pressSelectPropsOptions = propsFactory(\n {\n opened: Boolean as PropType<boolean>,\n multiple: Boolean,\n weakEquals: Boolean,\n valueEquals: {\n type: Function as PropType<SelectEquals>,\n default: deepEqual,\n },\n defaultSelect: Boolean,\n menuProps: {\n type: Object as PropType<YMenu['$props']>,\n },\n ...pressListItemsPropsOptions(),\n },\n 'Select',\n);\n\nexport const pressYSelectPropsOptions = propsFactory(\n {\n maxHeight: {\n type: [Number, String],\n default: 310,\n },\n dropdownIcon: {\n type: [String, Array, Object] as PropType<YIconIconProp>,\n default: '$dropdown',\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 ...pressSelectPropsOptions(),\n ...pressYFieldInputPropsOptions(),\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\n 'coordinateStrategy',\n ]),\n },\n 'YSelect',\n);\n\nexport const YSelect = defineComponent({\n name: 'YSelect',\n inheritAttrs: false,\n props: {\n ...pressYSelectPropsOptions(),\n },\n emits: {\n 'update:modelValue': (value: any) => true,\n 'update:opened': (opened: boolean) => true,\n 'click:item': (item: any, e: MouseEvent) => true,\n },\n slots: Object as SlotsType<{\n base: any;\n selection: {\n displayText: string;\n placeholder: undefined | string;\n items: any[];\n internalItems: ListItem[];\n };\n leading: any;\n label: any;\n 'helper-text': any;\n menu: any;\n 'menu-prepend': any;\n 'menu-append': any;\n 'dropdown-icon': any;\n item: { item: any; selected: boolean; select: () => void };\n 'item-leading': { item: any; selected: boolean; select: () => void };\n 'item-trailing': { item: any; selected: boolean; select: () => void };\n }>,\n setup(props, { slots, attrs, expose }) {\n const fieldInputRef = ref();\n const menuRef = ref<InstanceType<typeof YMenu>>();\n const listRef = ref<InstanceType<typeof YList>>();\n const cardRef = ref<any>();\n\n const opened = useModelDuplex(props, 'opened');\n const focused = shallowRef(false);\n\n const { items, toRefineItems, toEmitItems } = useItems(props);\n const { t } = useI18n();\n const model = useModelDuplex(\n props,\n 'modelValue',\n [],\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\n (v) => {\n const emitValue = toEmitItems(wrapInArray(v));\n return props.multiple ? emitValue : emitValue[0] ?? null;\n },\n );\n\n const selections = computed<ListItem[]>(() => {\n const ret: ListItem<any>[] = [];\n for (const v of model.value) {\n const found = items.value.find((item) => {\n return props.valueEquals(item.value, v.value);\n });\n if (found !== undefined) {\n ret.push(found);\n }\n }\n return ret;\n });\n\n const selected = computed(() => {\n return selections.value.map((selection) => selection?.props?.value);\n });\n\n const extraMenuProps = computed(() => {\n return { ...props.menuProps, preventCloseBubble: true };\n });\n\n function isSelected(item: ListItem) {\n return !!selections.value.find((selectedItem) => {\n return selectedItem?.value === item.value;\n });\n }\n\n // Field\n function onMousedownDisplay(event: MouseEvent) {\n if (props.disabled) {\n return;\n }\n opened.value = !opened.value;\n }\n\n function onBlur(event: FocusEvent) {\n // if (listRef.value?.$el.contains(event.relatedTarget)) {\n // opened.value = false;\n // }\n }\n\n // Menu Contents\n function onClickItem(item: ListItem, e: MouseEvent) {\n if (item.disabled) return;\n select(item);\n if (!props.multiple) {\n setTimeout(() => {\n opened.value = false;\n }, 40);\n }\n }\n\n function onAfterLeave() {\n if (!focused.value) {\n fieldInputRef.value?.focus();\n }\n }\n\n function closeCondition(event: MouseEvent) {\n if (event.target && (menuRef.value as any)?.layer$?.content$) {\n return (event.target as HTMLElement)?.contains(\n (menuRef.value as any)?.layer$?.content$,\n );\n }\n }\n\n function select(item: ListItem) {\n if (props.multiple) {\n const index = selections.value.findIndex((selectedItem) => {\n return selectedItem.value === item.value;\n });\n if (index === -1) {\n model.value = [...model.value, item];\n } else {\n const neo = model.value.slice();\n neo.splice(index, 1);\n model.value = neo;\n }\n } else {\n model.value = [item];\n }\n }\n\n const displayText = computed(() => {\n if (props.multiple) {\n return selections.value.map((item) => item.text).join(', ');\n }\n return selections.value?.[0]?.text ?? '';\n });\n\n const baseEl = computed(() => {\n return menuRef.value?.baseEl;\n });\n\n watch(opened, (neo) => {\n if (neo) {\n nextTick(() => {\n scrollToActiveItem();\n });\n }\n });\n\n function scrollToActiveItem() {\n if (selections.value.length === 0) {\n return;\n }\n const listEl = getHtmlElement(listRef.value);\n if (listEl) {\n const activeEl = listEl?.querySelector('.y-list-item--active') as\n | HTMLElement\n | undefined;\n const contentEl = (menuRef.value as any)?.layer$\n ?.content$ as HTMLElement;\n if (activeEl && contentEl) {\n const scrollEl = getScrollParent(activeEl);\n if (\n scrollEl &&\n (contentEl.contains(scrollEl) || contentEl.isSameNode(scrollEl))\n ) {\n scrollEl.scrollTo({ top: activeEl.offsetTop, behavior: 'smooth' });\n }\n }\n }\n }\n\n useRender(() => {\n const fieldInputProps = chooseProps(props, YFieldInput.props);\n const dropdownIconProps = chooseProps(\n typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {},\n YIcon.props,\n );\n return (\n <YMenu\n ref={menuRef}\n offset={props.offset}\n position={props.position}\n align={props.align}\n origin={props.origin}\n content-classes={['y-select__content']}\n maxHeight={props.maxHeight}\n open-on-click-base={false}\n onAfterLeave={onAfterLeave}\n open-delay={props.openDelay}\n close-delay={props.closeDelay}\n closeCondition={closeCondition}\n {...extraMenuProps.value}\n v-model={opened.value}\n >\n {{\n base: (...args: any[]) =>\n slots.base ? (\n slots.base?.(...args)\n ) : (\n <YFieldInput\n {...{\n ...fieldInputProps,\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\n }}\n modelValue={model.value\n .map((v: any) => v.props.value)\n .join(', ')}\n validationValue={model.rxValue}\n onMousedown:display={onMousedownDisplay}\n onBlur={onBlur}\n readonly\n class={[\n 'y-select',\n {\n 'y-select--opened': opened.value,\n 'y-select--selected': selected.value.length > 0,\n },\n ]}\n {...attrs}\n focused={focused.value}\n >\n {{\n default: () => {\n const selectionProps = {\n items: selections.value.map((item) => item.raw),\n displayText: displayText.value,\n placeholder: props.placeholder,\n internalItems: selections.value,\n };\n return (\n <div class={['y-select__selection']}>\n {slots.selection\n ? slots.selection?.(selectionProps)\n : selected.value.length > 0\n ? displayText.value\n : props.placeholder}\n </div>\n );\n },\n leading: slots.leading\n ? (...args: any[]) => slots.leading?.(...args)\n : undefined,\n trailing: (...args: any[]) => {\n return slots['dropdown-icon'] ? (\n slots['dropdown-icon']()\n ) : (\n <YIcon\n {...mergeProps(dropdownIconProps)}\n icon={props.dropdownIcon}\n class={['y-select__icon']}\n ></YIcon>\n );\n },\n label: slots.label\n ? (...args: any[]) => slots.label?.(...args)\n : undefined,\n 'helper-text': slots['helper-text']\n ? (...args: any[]) => slots['helper-text']?.(...args)\n : undefined,\n }}\n </YFieldInput>\n ),\n default: slots.menu\n ? () => slots.menu()\n : () => (\n <YCard ref={cardRef}>\n {slots['menu-prepend']?.()}\n {items.value.length > 0 ? (\n <YList ref={listRef}>\n {items.value.map((item) => {\n const itemProps = {\n item,\n selected: isSelected(item),\n select: () => {\n select(item);\n },\n };\n return (\n <YListItem\n onClick={(e) => onClickItem(item, e)}\n class={[\n {\n 'y-list-item--active': isSelected(item)\n },\n ]}\n disabled={item.disabled}\n v-show={!item.hide}\n >\n {{\n default: () =>\n slots.item\n ? slots.item?.(itemProps)\n : item.text,\n leading:\n slots['item-leading'] &&\n (() => slots['item-leading']?.(itemProps)),\n trailing:\n slots['item-trailing'] &&\n (() => slots['item-trailing']?.(itemProps)),\n }}\n </YListItem>\n );\n })}\n </YList>\n ) : (\n <div class=\"y-select__no-options\">\n {t('$yuyeon.noItems')}\n </div>\n )}\n {slots['menu-append']?.()}\n </YCard>\n ),\n }}\n </YMenu>\n );\n });\n\n onMounted(() => {\n if (\n props.defaultSelect &&\n (props.modelValue === undefined ||\n (Array.isArray(props.modelValue) && props.modelValue.length === 0)) &&\n items.value?.length\n ) {\n select(items.value[0]);\n }\n });\n\n expose({\n fieldInputRef,\n baseEl,\n opened,\n });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n menuRef,\n baseEl,\n opened,\n };\n },\n});\n\nexport type YSelect = InstanceType<typeof YSelect>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YSelect.mjs","names":["shallowRef","nextTick","vShow","watch","withDirectives","computed","defineComponent","mergeProps","onMounted","ref","useModelDuplex","useRender","pressCoordinateProps","useI18n","pressListItemsPropsOptions","useItems","getScrollParent","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","getHtmlElement","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIcon","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","menuProps","Object","pressYSelectPropsOptions","maxHeight","Number","String","dropdownIcon","Array","openDelay","closeDelay","position","YSelect","name","inheritAttrs","props","emits","value","click:item","item","e","slots","setup","_ref","attrs","expose","fieldInputRef","menuRef","listRef","cardRef","focused","items","toRefineItems","toEmitItems","t","model","v","emitValue","selections","ret","found","find","push","selected","map","selection","extraMenuProps","preventCloseBubble","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","setTimeout","onAfterLeave","focus","closeCondition","target","layer$","content$","contains","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","scrollToActiveItem","listEl","activeEl","querySelector","contentEl","scrollEl","isSameNode","scrollTo","top","offsetTop","behavior","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","offset","align","origin","$event","base","_len","args","_key","rxValue","selectionProps","raw","placeholder","internalItems","leading","_len2","_key2","trailing","label","_len3","_key3","_len4","_key4","menu","itemProps","hide","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport {\n PropType,\n SlotsType,\n nextTick,\n vShow,\n watch,\n withDirectives,\n} from 'vue';\nimport { computed, defineComponent, mergeProps, onMounted, ref } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\nimport { pressCoordinateProps } from '../../composables/coordinate';\nimport { useI18n } from '../../composables/i18n';\nimport {\n ListItem,\n pressListItemsPropsOptions,\n useItems,\n} from '../../composables/list-items';\nimport { getScrollParent } from '../../util';\nimport { wrapInArray } from '../../util/array';\nimport { deepEqual, getObjectValueByPath, omit } from '../../util/common';\nimport {\n chooseProps,\n getHtmlElement,\n propsFactory,\n} from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIcon, YIconIconProp } from '../icon';\nimport { YList, YListItem } from '../list';\nimport { YMenu } from '../menu';\n\nimport './YSelect.scss';\n\nexport type SelectEquals = (\n optionsItem: any,\n valueItem: any,\n valueKey?: string,\n) => boolean;\n\nexport function returnItemEquals(\n optionsItem: any,\n valueItem: any,\n valueKey = 'value',\n) {\n const valueItemType = typeof valueItem;\n const itemValue =\n valueItemType === 'string' || valueItemType === 'number'\n ? getObjectValueByPath(optionsItem, valueKey)\n : optionsItem;\n return deepEqual(itemValue, valueItem);\n}\n\nexport const pressSelectPropsOptions = propsFactory(\n {\n opened: Boolean as PropType<boolean>,\n multiple: Boolean,\n weakEquals: Boolean,\n valueEquals: {\n type: Function as PropType<SelectEquals>,\n default: deepEqual,\n },\n defaultSelect: Boolean,\n menuProps: {\n type: Object as PropType<YMenu['$props']>,\n },\n ...pressListItemsPropsOptions(),\n },\n 'Select',\n);\n\nexport const pressYSelectPropsOptions = propsFactory(\n {\n maxHeight: {\n type: [Number, String],\n default: 310,\n },\n dropdownIcon: {\n type: [String, Array, Object] as PropType<YIconIconProp>,\n default: '$dropdown',\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 ...pressSelectPropsOptions(),\n ...pressYFieldInputPropsOptions(),\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\n 'coordinateStrategy',\n ]),\n },\n 'YSelect',\n);\n\nexport const YSelect = defineComponent({\n name: 'YSelect',\n inheritAttrs: false,\n props: {\n ...pressYSelectPropsOptions(),\n },\n emits: {\n 'update:modelValue': (value: any) => true,\n 'update:opened': (opened: boolean) => true,\n 'click:item': (item: any, e: MouseEvent) => true,\n },\n slots: Object as SlotsType<{\n base: any;\n selection: {\n displayText: string;\n placeholder: undefined | string;\n items: any[];\n internalItems: ListItem[];\n };\n leading: any;\n label: any;\n 'helper-text': any;\n menu: any;\n 'menu-prepend': any;\n 'menu-append': any;\n 'dropdown-icon': any;\n item: { item: any; selected: boolean; select: () => void };\n 'item-leading': { item: any; selected: boolean; select: () => void };\n 'item-trailing': { item: any; selected: boolean; select: () => void };\n }>,\n setup(props, { slots, attrs, expose }) {\n const fieldInputRef = ref();\n const menuRef = ref<InstanceType<typeof YMenu>>();\n const listRef = ref<InstanceType<typeof YList>>();\n const cardRef = ref<any>();\n\n const opened = useModelDuplex(props, 'opened');\n const focused = shallowRef(false);\n\n const { items, toRefineItems, toEmitItems } = useItems(props);\n const { t } = useI18n();\n const model = useModelDuplex(\n props,\n 'modelValue',\n [],\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\n (v) => {\n const emitValue = toEmitItems(wrapInArray(v));\n return props.multiple ? emitValue : emitValue[0] ?? null;\n },\n );\n\n const selections = computed<ListItem[]>(() => {\n const ret: ListItem<any>[] = [];\n for (const v of model.value) {\n const found = items.value.find((item) => {\n return props.valueEquals(item.value, v.value);\n });\n if (found !== undefined) {\n ret.push(found);\n }\n }\n return ret;\n });\n\n const selected = computed(() => {\n return selections.value.map((selection) => selection?.props?.value);\n });\n\n const extraMenuProps = computed(() => {\n return { ...props.menuProps, preventCloseBubble: true };\n });\n\n function isSelected(item: ListItem) {\n return !!selections.value.find((selectedItem) => {\n return selectedItem?.value === item.value;\n });\n }\n\n // Field\n function onMousedownDisplay(event: MouseEvent) {\n if (props.disabled) {\n return;\n }\n opened.value = !opened.value;\n }\n\n function onBlur(event: FocusEvent) {\n // if (listRef.value?.$el.contains(event.relatedTarget)) {\n // opened.value = false;\n // }\n }\n\n // Menu Contents\n function onClickItem(item: ListItem, e: MouseEvent) {\n if (item.disabled) return;\n select(item);\n if (!props.multiple) {\n setTimeout(() => {\n opened.value = false;\n }, 40);\n }\n }\n\n function onAfterLeave() {\n if (!focused.value) {\n fieldInputRef.value?.focus();\n }\n }\n\n function closeCondition(event: MouseEvent) {\n if (event.target && (menuRef.value as any)?.layer$?.content$) {\n return (event.target as HTMLElement)?.contains(\n (menuRef.value as any)?.layer$?.content$,\n );\n }\n }\n\n function select(item: ListItem) {\n if (props.multiple) {\n const index = selections.value.findIndex((selectedItem) => {\n return selectedItem.value === item.value;\n });\n if (index === -1) {\n model.value = [...model.value, item];\n } else {\n const neo = model.value.slice();\n neo.splice(index, 1);\n model.value = neo;\n }\n } else {\n model.value = [item];\n }\n }\n\n const displayText = computed(() => {\n if (props.multiple) {\n return selections.value.map((item) => item.text).join(', ');\n }\n return selections.value?.[0]?.text ?? '';\n });\n\n const baseEl = computed(() => {\n return menuRef.value?.baseEl;\n });\n\n watch(opened, (neo) => {\n if (neo) {\n nextTick(() => {\n scrollToActiveItem();\n });\n }\n });\n\n function scrollToActiveItem() {\n if (selections.value.length === 0) {\n return;\n }\n const listEl = getHtmlElement(listRef.value);\n if (listEl) {\n const activeEl = listEl?.querySelector('.y-list-item--active') as\n | HTMLElement\n | undefined;\n const contentEl = (menuRef.value as any)?.layer$\n ?.content$ as HTMLElement;\n if (activeEl && contentEl) {\n const scrollEl = getScrollParent(activeEl);\n if (\n scrollEl &&\n (contentEl.contains(scrollEl) || contentEl.isSameNode(scrollEl))\n ) {\n scrollEl.scrollTo({ top: activeEl.offsetTop, behavior: 'smooth' });\n }\n }\n }\n }\n\n useRender(() => {\n const fieldInputProps = chooseProps(props, YFieldInput.props);\n const dropdownIconProps = chooseProps(\n typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {},\n YIcon.props,\n );\n return (\n <YMenu\n ref={menuRef}\n offset={props.offset}\n position={props.position}\n align={props.align}\n origin={props.origin}\n content-classes={['y-select__content']}\n maxHeight={props.maxHeight}\n open-on-click-base={false}\n onAfterLeave={onAfterLeave}\n open-delay={props.openDelay}\n close-delay={props.closeDelay}\n closeCondition={closeCondition}\n {...extraMenuProps.value}\n v-model={opened.value}\n >\n {{\n base: (...args: any[]) =>\n slots.base ? (\n slots.base?.(...args)\n ) : (\n <YFieldInput\n {...{\n ...fieldInputProps,\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\n }}\n modelValue={model.value\n .map((v: any) => v.props.value)\n .join(', ')}\n validationValue={model.rxValue}\n onMousedown:display={onMousedownDisplay}\n onBlur={onBlur}\n readonly\n class={[\n 'y-select',\n {\n 'y-select--opened': opened.value,\n 'y-select--selected': selected.value.length > 0,\n },\n ]}\n {...attrs}\n focused={focused.value}\n >\n {{\n default: () => {\n const selectionProps = {\n items: selections.value.map((item) => item.raw),\n displayText: displayText.value,\n placeholder: props.placeholder,\n internalItems: selections.value,\n };\n return (\n <div class={['y-select__selection']}>\n {slots.selection\n ? slots.selection?.(selectionProps)\n : selected.value.length > 0\n ? displayText.value\n : props.placeholder}\n </div>\n );\n },\n leading: slots.leading\n ? (...args: any[]) => slots.leading?.(...args)\n : undefined,\n trailing: (...args: any[]) => {\n return slots['dropdown-icon'] ? (\n slots['dropdown-icon']()\n ) : (\n <YIcon\n {...mergeProps(dropdownIconProps)}\n icon={props.dropdownIcon}\n class={['y-select__icon']}\n ></YIcon>\n );\n },\n label: slots.label\n ? (...args: any[]) => slots.label?.(...args)\n : undefined,\n 'helper-text': slots['helper-text']\n ? (...args: any[]) => slots['helper-text']?.(...args)\n : undefined,\n }}\n </YFieldInput>\n ),\n default: slots.menu\n ? () => slots.menu()\n : () => (\n <YCard ref={cardRef}>\n {slots['menu-prepend']?.()}\n {items.value.length > 0 ? (\n <YList ref={listRef}>\n {items.value.map((item) => {\n const itemProps = {\n item,\n selected: isSelected(item),\n select: () => {\n select(item);\n },\n };\n return withDirectives(\n <YListItem\n onClick={(e) => onClickItem(item, e)}\n class={[\n {\n 'y-list-item--active': isSelected(item),\n },\n ]}\n disabled={item.disabled}\n >\n {{\n default: () =>\n slots.item\n ? slots.item?.(itemProps)\n : item.text,\n leading:\n slots['item-leading'] &&\n (() => slots['item-leading']?.(itemProps)),\n trailing:\n slots['item-trailing'] &&\n (() => slots['item-trailing']?.(itemProps)),\n }}\n </YListItem>,\n [[vShow, !item.hide]],\n );\n })}\n </YList>\n ) : (\n <div class=\"y-select__no-options\">\n {t('$yuyeon.noItems')}\n </div>\n )}\n {slots['menu-append']?.()}\n </YCard>\n ),\n }}\n </YMenu>\n );\n });\n\n onMounted(() => {\n if (\n props.defaultSelect &&\n (props.modelValue === undefined ||\n (Array.isArray(props.modelValue) && props.modelValue.length === 0)) &&\n items.value?.length\n ) {\n select(items.value[0]);\n }\n });\n\n expose({\n fieldInputRef,\n baseEl,\n opened,\n });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n menuRef,\n baseEl,\n opened,\n };\n },\n});\n\nexport type YSelect = InstanceType<typeof YSelect>;\n"],"mappings":"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"}
|