yuyeon 0.0.39 → 0.0.40

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.
@@ -75,6 +75,7 @@ export const YLayer = defineComponent({
75
75
  'click:complement': mouseEvent => true,
76
76
  afterLeave: () => true
77
77
  },
78
+ slots: Object,
78
79
  setup(props, _ref) {
79
80
  let {
80
81
  emit,
@@ -165,8 +166,16 @@ export const YLayer = defineComponent({
165
166
  baseEl.value = baseFromSlotEl.value;
166
167
  return;
167
168
  }
168
- const base = base$.value;
169
- baseEl.value = base$.value?.$el ? base$.value?.$el : base;
169
+ let base = base$.value;
170
+ if (base.baseEl) {
171
+ base = base.baseEl;
172
+ }
173
+ if (base$.value?.$el) {
174
+ if (base$.value.$el.nodeType === 1) {
175
+ base = base$.value.$el;
176
+ }
177
+ }
178
+ baseEl.value = base;
170
179
  });
171
180
  const computedStyle = computed(() => {
172
181
  return {
@@ -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, 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 base$,\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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"}
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","slots","setup","_ref","emit","expose","attrs","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","nodeType","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 {\n CSSProperties,\n ComponentInternalInstance,\n PropType,\n SlotsType,\n} 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 slots: Object as SlotsType<{\n base: any;\n default: any;\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 let base = base$.value;\n if (base.baseEl) {\n base = base.baseEl;\n }\n if (base$.value?.$el) {\n if (base$.value.$el.nodeType === 1) {\n base = base$.value.$el;\n }\n }\n baseEl.value = 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 base$,\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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"}
@@ -152,6 +152,12 @@ export const YMenu = defineComponent({
152
152
  ...boundClasses
153
153
  };
154
154
  });
155
+ const baseEl = computed(() => {
156
+ return layer$.value?.baseEl;
157
+ });
158
+ expose({
159
+ baseEl
160
+ });
155
161
  useRender(() => {
156
162
  return _createVNode(_Fragment, null, [_createVNode(YLayer, _mergeProps({
157
163
  "ref": layer$,
@@ -186,6 +192,7 @@ export const YMenu = defineComponent({
186
192
  });
187
193
  return {
188
194
  el$: layer$,
195
+ baseEl,
189
196
  classes
190
197
  };
191
198
  }
@@ -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","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';\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\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 const { children, parent } = useActiveStack(\n layer$,\n active,\n toRef(props, 'preventCloseBubble'),\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 if (typeof props.closeCondition === 'function') {\n if (props.closeCondition(e) === false) {\n active.value = false;\n }\n return;\n }\n if (active.value) {\n const parentContent = parent?.$el.value?.content$;\n const parentModal = parent?.$el.value?.modal;\n active.value = false;\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","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","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';\nimport { computed, defineComponent, ref, toRef, watch } from 'vue';\n\nimport { useModelDuplex } from '../../composables/communication';\nimport { useRender } from '../../composables/component';\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 const { children, parent } = useActiveStack(\n layer$,\n active,\n toRef(props, 'preventCloseBubble'),\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 if (typeof props.closeCondition === 'function') {\n if (props.closeCondition(e) === false) {\n active.value = false;\n }\n return;\n }\n if (active.value) {\n const parentContent = parent?.$el.value?.content$;\n const parentModal = parent?.$el.value?.modal;\n active.value = false;\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 const baseEl = computed(() => {\n return layer$.value?.baseEl;\n });\n\n expose({\n baseEl,\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 baseEl,\n classes,\n };\n },\n});\n\nexport type YMenu = InstanceType<typeof YMenu>;\n"],"mappings":"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"}
@@ -60,7 +60,8 @@ export const YSelect = defineComponent({
60
60
  setup(props, _ref) {
61
61
  let {
62
62
  slots,
63
- attrs
63
+ attrs,
64
+ expose
64
65
  } = _ref;
65
66
  const fieldInputRef = ref();
66
67
  const menuRef = ref();
@@ -139,6 +140,9 @@ export const YSelect = defineComponent({
139
140
  }
140
141
  return selections.value?.[0]?.text ?? '';
141
142
  });
143
+ const baseEl = computed(() => {
144
+ return menuRef.value.baseEl;
145
+ });
142
146
  useRender(() => {
143
147
  const fieldInputProps = chooseProps(props, YFieldInput.props);
144
148
  return _createVNode(YMenu, {
@@ -222,11 +226,16 @@ export const YSelect = defineComponent({
222
226
  select(items.value[0]);
223
227
  }
224
228
  });
229
+ expose({
230
+ fieldInputRef,
231
+ baseEl
232
+ });
225
233
  return {
226
234
  fieldInputRef,
227
235
  model,
228
236
  selections,
229
- selected
237
+ selected,
238
+ baseEl
230
239
  };
231
240
  }
232
241
  });
@@ -1 +1 @@
1
- {"version":3,"file":"YSelect.mjs","names":["shallowRef","computed","defineComponent","mergeProps","onMounted","ref","useModelDuplex","useRender","pressCoordinateProps","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIconDropdown","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","pressYSelectPropsOptions","maxHeight","Number","String","expandIcon","Object","position","YSelect","name","inheritAttrs","props","emits","value","click:item","item","e","slots","setup","_ref","attrs","fieldInputRef","menuRef","listRef","focused","items","toRefineItems","toEmitItems","model","v","emitValue","selections","map","find","selected","selection","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","onAfterLeave","focus","index","findIndex","neo","slice","splice","displayText","text","join","fieldInputProps","_createVNode","$event","offset","origin","base","_len","args","Array","_key","_mergeProps","leading","_len2","_key2","trailing","menu","_createTextVNode","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport type { PropType, SlotsType } 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 {\n ListItem,\n pressListItemsPropsOptions,\n useItems,\n} from '../../composables/list-items';\nimport { wrapInArray } from '../../util/array';\nimport {\n deepEqual,\n getObjectValueByPath,\n getPropertyFromItem,\n omit,\n} from '../../util/common';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIconDropdown } from '../icons/YIconDropdown';\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 ...pressListItemsPropsOptions(),\n },\n 'Select',\n);\n\nexport const pressYSelectPropsOptions = propsFactory(\n {\n maxHeight: {\n type: [Number, String],\n default: 310,\n },\n expandIcon: {\n type: Object,\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: any;\n leading: any;\n 'helper-text': any;\n menu: any;\n 'menu-prepend': any;\n 'menu-append': any;\n 'expand-icon': any;\n item: { item: any; selected: boolean };\n }>,\n setup(props, { slots, attrs }) {\n const fieldInputRef = ref();\n const menuRef = ref();\n const listRef = ref<InstanceType<typeof YList>>();\n\n const opened = useModelDuplex(props, 'opened');\n const focused = shallowRef(false);\n\n const { items, toRefineItems, toEmitItems } = useItems(props);\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 return model.value.map((v: any) => {\n return items.value.find((item) => {\n return props.valueEquals(item.value, v.value);\n });\n });\n });\n\n const selected = computed(() => {\n return selections.value.map((selection) => selection.props.value);\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 select(item);\n if (!props.multiple) {\n opened.value = false;\n }\n }\n\n function onAfterLeave() {\n if (focused.value) {\n fieldInputRef.value?.focus();\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 useRender(() => {\n const fieldInputProps = chooseProps(props, YFieldInput.props);\n return (\n <YMenu\n v-model={opened.value}\n ref={menuRef}\n offset={props.offset}\n position={props.position}\n origin={props.origin}\n content-classes={['y-select__content']}\n maxHeight={props.maxHeight}\n open-on-click-base={false}\n onAfterLeave={onAfterLeave}\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 onMousedown:display={onMousedownDisplay}\n onBlur={onBlur}\n readonly\n class={['y-select', { 'y-select--opened': opened.value }]}\n {...attrs}\n v-model:focused={focused.value}\n >\n {{\n default: () => {\n return (\n <div class={['y-select__selection']}>\n {slots.selection\n ? slots.selection?.()\n : displayText.value}\n </div>\n );\n },\n leading: slots.leading\n ? (...args: any[]) => slots.leading?.(...args)\n : undefined,\n trailing: (...args: any[]) => {\n return slots['expand-icon'] ? (\n slots['expand-icon']()\n ) : (\n <i class=\"y-select__icon\">\n <YIconDropdown></YIconDropdown>\n </i>\n );\n },\n 'helper-text': slots['helper-text']\n ? slots['helper-text']?.()\n : undefined,\n }}\n </YFieldInput>\n ),\n default: () =>\n slots.menu ? (\n slots.menu()\n ) : (\n <YCard>\n {slots['menu-prepend']?.()}\n {items.value.length > 0 ? (\n <YList ref={listRef}>\n {items.value.map((item) => {\n return (\n <YListItem\n onClick={(e) => onClickItem(item, e)}\n class={{ 'y-list-item--active': isSelected(item) }}\n >\n {slots.item\n ? slots.item({ item, selected: isSelected(item) })\n : item.text}\n </YListItem>\n );\n })}\n </YList>\n ) : (\n <div class=\"y-select__no-options\">항목이 없습니다.</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 return {\n fieldInputRef,\n model,\n selections,\n selected,\n };\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"YSelect.mjs","names":["shallowRef","computed","defineComponent","mergeProps","onMounted","ref","useModelDuplex","useRender","pressCoordinateProps","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","getObjectValueByPath","omit","chooseProps","propsFactory","YCard","YFieldInput","pressYFieldInputPropsOptions","YIconDropdown","YList","YListItem","YMenu","returnItemEquals","optionsItem","valueItem","valueKey","arguments","length","undefined","valueItemType","itemValue","pressSelectPropsOptions","opened","Boolean","multiple","weakEquals","valueEquals","type","Function","default","defaultSelect","pressYSelectPropsOptions","maxHeight","Number","String","expandIcon","Object","position","YSelect","name","inheritAttrs","props","emits","value","click:item","item","e","slots","setup","_ref","attrs","expose","fieldInputRef","menuRef","listRef","focused","items","toRefineItems","toEmitItems","model","v","emitValue","selections","map","find","selected","selection","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","onAfterLeave","focus","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","fieldInputProps","_createVNode","$event","offset","origin","base","_len","args","Array","_key","_mergeProps","leading","_len2","_key2","trailing","menu","_createTextVNode","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import { shallowRef } from '@vue/runtime-core';\nimport type { PropType, SlotsType } 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 {\n ListItem,\n pressListItemsPropsOptions,\n useItems,\n} from '../../composables/list-items';\nimport { wrapInArray } from '../../util/array';\nimport { deepEqual, getObjectValueByPath, omit } from '../../util/common';\nimport { chooseProps, propsFactory } from '../../util/vue-component';\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIconDropdown } from '../icons/YIconDropdown';\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 ...pressListItemsPropsOptions(),\n },\n 'Select',\n);\n\nexport const pressYSelectPropsOptions = propsFactory(\n {\n maxHeight: {\n type: [Number, String],\n default: 310,\n },\n expandIcon: {\n type: Object,\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: any;\n leading: any;\n 'helper-text': any;\n menu: any;\n 'menu-prepend': any;\n 'menu-append': any;\n 'expand-icon': any;\n item: { item: any; selected: boolean };\n }>,\n setup(props, { slots, attrs, expose }) {\n const fieldInputRef = ref();\n const menuRef = ref();\n const listRef = ref<InstanceType<typeof YList>>();\n\n const opened = useModelDuplex(props, 'opened');\n const focused = shallowRef(false);\n\n const { items, toRefineItems, toEmitItems } = useItems(props);\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 return model.value.map((v: any) => {\n return items.value.find((item) => {\n return props.valueEquals(item.value, v.value);\n });\n });\n });\n\n const selected = computed(() => {\n return selections.value.map((selection) => selection.props.value);\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 select(item);\n if (!props.multiple) {\n opened.value = false;\n }\n }\n\n function onAfterLeave() {\n if (focused.value) {\n fieldInputRef.value?.focus();\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 useRender(() => {\n const fieldInputProps = chooseProps(props, YFieldInput.props);\n return (\n <YMenu\n v-model={opened.value}\n ref={menuRef}\n offset={props.offset}\n position={props.position}\n origin={props.origin}\n content-classes={['y-select__content']}\n maxHeight={props.maxHeight}\n open-on-click-base={false}\n onAfterLeave={onAfterLeave}\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 onMousedown:display={onMousedownDisplay}\n onBlur={onBlur}\n readonly\n class={['y-select', { 'y-select--opened': opened.value }]}\n {...attrs}\n v-model:focused={focused.value}\n >\n {{\n default: () => {\n return (\n <div class={['y-select__selection']}>\n {slots.selection\n ? slots.selection?.()\n : displayText.value}\n </div>\n );\n },\n leading: slots.leading\n ? (...args: any[]) => slots.leading?.(...args)\n : undefined,\n trailing: (...args: any[]) => {\n return slots['expand-icon'] ? (\n slots['expand-icon']()\n ) : (\n <i class=\"y-select__icon\">\n <YIconDropdown></YIconDropdown>\n </i>\n );\n },\n 'helper-text': slots['helper-text']\n ? slots['helper-text']?.()\n : undefined,\n }}\n </YFieldInput>\n ),\n default: () =>\n slots.menu ? (\n slots.menu()\n ) : (\n <YCard>\n {slots['menu-prepend']?.()}\n {items.value.length > 0 ? (\n <YList ref={listRef}>\n {items.value.map((item) => {\n return (\n <YListItem\n onClick={(e) => onClickItem(item, e)}\n class={{ 'y-list-item--active': isSelected(item) }}\n >\n {slots.item\n ? slots.item({ item, selected: isSelected(item) })\n : item.text}\n </YListItem>\n );\n })}\n </YList>\n ) : (\n <div class=\"y-select__no-options\">항목이 없습니다.</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 });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n baseEl,\n };\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export function createDateModule(options) {}
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["createDateModule","options"],"sources":["../../../src/composables/date/index.ts"],"sourcesContent":["\r\n\r\nexport function createDateModule(options: DateOptions) {\r\n\r\n}\r\n"],"mappings":"AAEA,OAAO,SAASA,gBAAgBA,CAACC,OAAoB,EAAE,CAEvD"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../../../src/composables/date/types.ts"],"sourcesContent":["interface DateOptions {\r\n adapter: any;\r\n locale: Record<string, any>;\r\n formats?: Record<string, any>;\r\n}\r\n"],"mappings":""}
@@ -0,0 +1,293 @@
1
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
+ const firstDay = {
5
+ '001': 1,
6
+ AD: 1,
7
+ AE: 6,
8
+ AF: 6,
9
+ AG: 0,
10
+ AI: 1,
11
+ AL: 1,
12
+ AM: 1,
13
+ AN: 1,
14
+ AR: 1,
15
+ AS: 0,
16
+ AT: 1,
17
+ AU: 1,
18
+ AX: 1,
19
+ AZ: 1,
20
+ BA: 1,
21
+ BD: 0,
22
+ BE: 1,
23
+ BG: 1,
24
+ BH: 6,
25
+ BM: 1,
26
+ BN: 1,
27
+ BR: 0,
28
+ BS: 0,
29
+ BT: 0,
30
+ BW: 0,
31
+ BY: 1,
32
+ BZ: 0,
33
+ CA: 0,
34
+ CH: 1,
35
+ CL: 1,
36
+ CM: 1,
37
+ CN: 1,
38
+ CO: 0,
39
+ CR: 1,
40
+ CY: 1,
41
+ CZ: 1,
42
+ DE: 1,
43
+ DJ: 6,
44
+ DK: 1,
45
+ DM: 0,
46
+ DO: 0,
47
+ DZ: 6,
48
+ EC: 1,
49
+ EE: 1,
50
+ EG: 6,
51
+ ES: 1,
52
+ ET: 0,
53
+ FI: 1,
54
+ FJ: 1,
55
+ FO: 1,
56
+ FR: 1,
57
+ GB: 1,
58
+ 'GB-alt-variant': 0,
59
+ GE: 1,
60
+ GF: 1,
61
+ GP: 1,
62
+ GR: 1,
63
+ GT: 0,
64
+ GU: 0,
65
+ HK: 0,
66
+ HN: 0,
67
+ HR: 1,
68
+ HU: 1,
69
+ ID: 0,
70
+ IE: 1,
71
+ IL: 0,
72
+ IN: 0,
73
+ IQ: 6,
74
+ IR: 6,
75
+ IS: 1,
76
+ IT: 1,
77
+ JM: 0,
78
+ JO: 6,
79
+ JP: 0,
80
+ KE: 0,
81
+ KG: 1,
82
+ KH: 0,
83
+ KR: 0,
84
+ KW: 6,
85
+ KZ: 1,
86
+ LA: 0,
87
+ LB: 1,
88
+ LI: 1,
89
+ LK: 1,
90
+ LT: 1,
91
+ LU: 1,
92
+ LV: 1,
93
+ LY: 6,
94
+ MC: 1,
95
+ MD: 1,
96
+ ME: 1,
97
+ MH: 0,
98
+ MK: 1,
99
+ MM: 0,
100
+ MN: 1,
101
+ MO: 0,
102
+ MQ: 1,
103
+ MT: 0,
104
+ MV: 5,
105
+ MX: 0,
106
+ MY: 1,
107
+ MZ: 0,
108
+ NI: 0,
109
+ NL: 1,
110
+ NO: 1,
111
+ NP: 0,
112
+ NZ: 1,
113
+ OM: 6,
114
+ PA: 0,
115
+ PE: 0,
116
+ PH: 0,
117
+ PK: 0,
118
+ PL: 1,
119
+ PR: 0,
120
+ PT: 0,
121
+ PY: 0,
122
+ QA: 6,
123
+ RE: 1,
124
+ RO: 1,
125
+ RS: 1,
126
+ RU: 1,
127
+ SA: 0,
128
+ SD: 6,
129
+ SE: 1,
130
+ SG: 0,
131
+ SI: 1,
132
+ SK: 1,
133
+ SM: 1,
134
+ SV: 0,
135
+ SY: 6,
136
+ TH: 0,
137
+ TJ: 1,
138
+ TM: 1,
139
+ TR: 1,
140
+ TT: 0,
141
+ TW: 0,
142
+ UA: 1,
143
+ UM: 0,
144
+ US: 0,
145
+ UY: 1,
146
+ UZ: 1,
147
+ VA: 1,
148
+ VE: 0,
149
+ VI: 0,
150
+ VN: 1,
151
+ WS: 0,
152
+ XK: 1,
153
+ YE: 0,
154
+ ZA: 0,
155
+ ZW: 0
156
+ };
157
+ export class DateUtil {
158
+ static getWeekArray(date, locale) {
159
+ const weeks = [];
160
+ let currentWeek = [];
161
+ const firstDayOfMonth = DateUtil.startOfMonth(date);
162
+ const lastDayOfMonth = DateUtil.endOfMonth(date);
163
+ const firstDayWeekIndex = (firstDayOfMonth.getDay() - firstDay[locale.slice(-2).toUpperCase()] + 7) % 7;
164
+ const lastDayWeekIndex = (lastDayOfMonth.getDay() - firstDay[locale.slice(-2).toUpperCase()] + 7) % 7;
165
+ // prev month
166
+ for (let i = 0; i < firstDayWeekIndex; i++) {
167
+ const adjacentDay = new Date(firstDayOfMonth);
168
+ adjacentDay.setDate(adjacentDay.getDate() - (firstDayWeekIndex - i));
169
+ currentWeek.push(adjacentDay);
170
+ }
171
+ // this month
172
+ for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
173
+ currentWeek.push(new Date(date.getFullYear(), date.getMonth(), i));
174
+ // flush full week
175
+ if (currentWeek.length === 7) {
176
+ weeks.push(currentWeek);
177
+ currentWeek = [];
178
+ }
179
+ }
180
+ // next month
181
+ for (let i = 1; i < 7 - lastDayWeekIndex; i++) {
182
+ const adjacentDay = new Date(lastDayOfMonth);
183
+ adjacentDay.setDate(adjacentDay.getDate() + i);
184
+ currentWeek.push(adjacentDay);
185
+ }
186
+ if (currentWeek.length > 0) {
187
+ weeks.push(currentWeek);
188
+ }
189
+ return weeks;
190
+ }
191
+ static startOfMonth(date) {
192
+ return new Date(date.getFullYear(), date.getMonth(), 1);
193
+ }
194
+ static endOfMonth(date) {
195
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
196
+ }
197
+ static addDays(date, amount) {
198
+ const d = new Date(date);
199
+ d.setDate(d.getDate() + amount);
200
+ return d;
201
+ }
202
+ }
203
+ // implements DateAdapter<Date>
204
+ export class YuyeonDateAdapter {
205
+ constructor() {
206
+ _defineProperty(this, "locale", 'ko');
207
+ }
208
+ getWeekArray(date) {
209
+ return DateUtil.getWeekArray(date, this.locale);
210
+ }
211
+ startOfMonth(date) {
212
+ return DateUtil.startOfMonth(date);
213
+ }
214
+ endOfMonth(date) {
215
+ return DateUtil.endOfMonth(date);
216
+ }
217
+ addDays(date, amount) {
218
+ return DateUtil.addDays(date, amount);
219
+ }
220
+ addMonths(date, amount) {
221
+ return new Date();
222
+ }
223
+ date(value) {
224
+ return null;
225
+ }
226
+ endOfDay(date) {
227
+ return new Date();
228
+ }
229
+ endOfYear(date) {
230
+ return new Date();
231
+ }
232
+ format(date, formatString) {
233
+ return "";
234
+ }
235
+ getDiff(date, comparing, unit) {
236
+ return 0;
237
+ }
238
+ getMonth(date) {
239
+ return 0;
240
+ }
241
+ getNextMonth(date) {
242
+ return new Date();
243
+ }
244
+ getWeekdays() {
245
+ return [];
246
+ }
247
+ getYear(date) {
248
+ return 0;
249
+ }
250
+ isAfter(date, comparing) {
251
+ return false;
252
+ }
253
+ isBefore(date, comparing) {
254
+ return false;
255
+ }
256
+ isEqual(date, comparing) {
257
+ return false;
258
+ }
259
+ isSameDay(date, comparing) {
260
+ return false;
261
+ }
262
+ isSameMonth(date, comparing) {
263
+ return false;
264
+ }
265
+ isValid(date) {
266
+ return false;
267
+ }
268
+ isWithinRange(date, range) {
269
+ return false;
270
+ }
271
+ parseISO(date) {
272
+ return new Date();
273
+ }
274
+ setMonth(date, month) {
275
+ return new Date();
276
+ }
277
+ setYear(date, year) {
278
+ return new Date();
279
+ }
280
+ startOfDay(date) {
281
+ return new Date();
282
+ }
283
+ startOfYear(date) {
284
+ return new Date();
285
+ }
286
+ toISO(date) {
287
+ return "";
288
+ }
289
+ toJsDate(value) {
290
+ return new Date();
291
+ }
292
+ }
293
+ //# sourceMappingURL=built-in.mjs.map