yuyeon 0.3.1-rc.5 → 0.3.1-rc.6

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.
@@ -1,6 +1,6 @@
1
1
  import { computed, defineComponent, h, ref, unref } from 'vue';
2
- import { useRender } from 'yuyeon/composables';
3
- import { getHtmlElement } from 'yuyeon/util';
2
+ import { useRender } from "../../composables/component.mjs";
3
+ import { getHtmlElement } from "../../util/index.mjs";
4
4
  export const YDraggable = defineComponent({
5
5
  name: 'YDraggable',
6
6
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"YDraggable.mjs","names":["computed","defineComponent","h","ref","unref","useRender","getHtmlElement","YDraggable","name","props","as","Object","String","handle","disabled","Boolean","capture","exact","container","onDragStart","Function","emits","setup","_ref","slots","emit","targetRef","dragging","originPosition","position","targetEl","value","handleEl","el","hEl","querySelector","nodeType","containerEl","document","undefined","slotProps","start","e","console","log","target","containerRect","getBoundingClientRect","targetRect","pos","x","clientX","left","scrollLeft","y","clientY","top","scrollTop","move","end","default","window","config"],"sources":["../../../src/components/draggable/YDraggable.ts"],"sourcesContent":["import {\n MaybeRef,\n PropType,\n computed,\n defineComponent,\n h,\n ref,\n unref,\n} from 'vue';\nimport { useRender } from 'yuyeon/composables';\nimport { getHtmlElement } from 'yuyeon/util';\n\ntype Coord = { x: number; y: number };\n\nexport const YDraggable = defineComponent({\n name: 'YDraggable',\n props: {\n as: [Object, String] as PropType<object | string>,\n handle: [Object, String] as PropType<MaybeRef<HTMLElement | string>>,\n disabled: Boolean,\n capture: Boolean,\n exact: Boolean,\n container: [Object, String] as PropType<\n MaybeRef<HTMLElement | SVGElement | null> | string\n >,\n onDragStart: Function as PropType<\n (pos: Coord, e: PointerEvent) => boolean | undefined\n >,\n },\n emits: ['start'],\n setup(props, { slots, emit }) {\n const targetRef = ref();\n const dragging = ref(false);\n const originPosition = ref();\n const position = ref();\n\n const targetEl = computed(() => {\n return getHtmlElement(targetRef.value);\n });\n\n const handleEl = computed(() => {\n let el = targetEl.value;\n if (typeof props.handle === 'string') {\n const hEl = targetEl.value?.querySelector(props.handle);\n if (hEl?.nodeType === 1) el = hEl;\n }\n return el;\n });\n\n const containerEl = computed(() => {\n const container = unref(props.container);\n if (typeof container === 'string') {\n return document.querySelector(container);\n } else if (container) {\n return getHtmlElement(container);\n }\n return undefined;\n });\n\n const slotProps = computed(() => {\n return {\n handle: handleEl.value,\n };\n });\n\n const start = (e: PointerEvent) => {\n console.log('start', e);\n if (props.disabled) return;\n if (props.exact && e.target !== targetEl.value) return;\n\n const container = containerEl.value;\n const containerRect = container?.getBoundingClientRect?.();\n const targetRect = targetEl.value?.getBoundingClientRect();\n const pos = {\n x:\n e.clientX -\n (container\n ? targetRect.left - containerRect!.left + container.scrollLeft\n : targetRect.left),\n y:\n e.clientY -\n (container\n ? targetRect.top - containerRect!.top + container.scrollTop\n : targetRect.top),\n };\n if (props.onDragStart?.(pos, e) === false) return;\n originPosition.value = pos;\n };\n\n const move = (e: PointerEvent) => {\n console.log('move', e);\n };\n\n const end = (e: PointerEvent) => {\n console.log('end', e);\n };\n\n useRender(() => {\n if (slots.default) {\n return h(\n props.as || 'div',\n { ref: targetRef },\n slots.default(slotProps.value),\n );\n }\n return h('div');\n });\n\n if (window) {\n const config = { capture: props.capture ?? true };\n // useEventListener(handleEl, 'pointerdown', start, config);\n // useEventListener(window, 'pointermove', move, config);\n // useEventListener(window, 'pointerup', end, config);\n }\n\n return {\n targetEl,\n handleEl,\n dragging,\n position,\n };\n },\n});\n\nexport type YDraggable = InstanceType<typeof YDraggable>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDraggable.mjs","names":["computed","defineComponent","h","ref","unref","useRender","getHtmlElement","YDraggable","name","props","as","Object","String","handle","disabled","Boolean","capture","exact","container","onDragStart","Function","emits","setup","_ref","slots","emit","targetRef","dragging","originPosition","position","targetEl","value","handleEl","el","hEl","querySelector","nodeType","containerEl","document","undefined","slotProps","start","e","console","log","target","containerRect","getBoundingClientRect","targetRect","pos","x","clientX","left","scrollLeft","y","clientY","top","scrollTop","move","end","default","window","config"],"sources":["../../../src/components/draggable/YDraggable.ts"],"sourcesContent":["import {\n MaybeRef,\n PropType,\n computed,\n defineComponent,\n h,\n ref,\n unref,\n} from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { getHtmlElement } from '@/util/index';\n\ntype Coord = { x: number; y: number };\n\nexport const YDraggable = defineComponent({\n name: 'YDraggable',\n props: {\n as: [Object, String] as PropType<object | string>,\n handle: [Object, String] as PropType<MaybeRef<HTMLElement | string>>,\n disabled: Boolean,\n capture: Boolean,\n exact: Boolean,\n container: [Object, String] as PropType<\n MaybeRef<HTMLElement | SVGElement | null> | string\n >,\n onDragStart: Function as PropType<\n (pos: Coord, e: PointerEvent) => boolean | undefined\n >,\n },\n emits: ['start'],\n setup(props, { slots, emit }) {\n const targetRef = ref();\n const dragging = ref(false);\n const originPosition = ref();\n const position = ref();\n\n const targetEl = computed(() => {\n return getHtmlElement(targetRef.value);\n });\n\n const handleEl = computed(() => {\n let el = targetEl.value;\n if (typeof props.handle === 'string') {\n const hEl = targetEl.value?.querySelector(props.handle);\n if (hEl?.nodeType === 1) el = hEl;\n }\n return el;\n });\n\n const containerEl = computed(() => {\n const container = unref(props.container);\n if (typeof container === 'string') {\n return document.querySelector(container);\n } else if (container) {\n return getHtmlElement(container);\n }\n return undefined;\n });\n\n const slotProps = computed(() => {\n return {\n handle: handleEl.value,\n };\n });\n\n const start = (e: PointerEvent) => {\n console.log('start', e);\n if (props.disabled) return;\n if (props.exact && e.target !== targetEl.value) return;\n\n const container = containerEl.value;\n const containerRect = container?.getBoundingClientRect?.();\n const targetRect = targetEl.value?.getBoundingClientRect();\n const pos = {\n x:\n e.clientX -\n (container\n ? targetRect.left - containerRect!.left + container.scrollLeft\n : targetRect.left),\n y:\n e.clientY -\n (container\n ? targetRect.top - containerRect!.top + container.scrollTop\n : targetRect.top),\n };\n if (props.onDragStart?.(pos, e) === false) return;\n originPosition.value = pos;\n };\n\n const move = (e: PointerEvent) => {\n console.log('move', e);\n };\n\n const end = (e: PointerEvent) => {\n console.log('end', e);\n };\n\n useRender(() => {\n if (slots.default) {\n return h(\n props.as || 'div',\n { ref: targetRef },\n slots.default(slotProps.value),\n );\n }\n return h('div');\n });\n\n if (window) {\n const config = { capture: props.capture ?? true };\n // useEventListener(handleEl, 'pointerdown', start, config);\n // useEventListener(window, 'pointermove', move, config);\n // useEventListener(window, 'pointerup', end, config);\n }\n\n return {\n targetEl,\n handleEl,\n dragging,\n position,\n };\n },\n});\n\nexport type YDraggable = InstanceType<typeof YDraggable>;\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
2
  import { ref, watch } from 'vue';
3
- import { useModelDuplex } from 'yuyeon/composables';
3
+ import { useModelDuplex } from "../../composables/communication.mjs";
4
4
  import { useRender } from "../../composables/component.mjs";
5
5
  import { useDelay } from "../../composables/timing.mjs";
6
6
  import { defineComponent, propsFactory } from "../../util/component/index.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"YHover.mjs","names":["ref","watch","useModelDuplex","useRender","useDelay","defineComponent","propsFactory","pressYHoverPropsOptions","disabled","Boolean","modelValue","type","default","undefined","openDelay","Number","closeDelay","YHover","name","props","emits","setup","_ref","slots","emit","isHovering","startOpenDelay","startCloseDelay","value","defaultSlot","neo","onMouseenter","onMouseleave","_createVNode","_Fragment"],"sources":["../../../src/components/hover/YHover.tsx"],"sourcesContent":["import { ref, watch } from 'vue';\r\nimport { useModelDuplex } from 'yuyeon/composables';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { useDelay } from '@/composables/timing';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\n\r\nexport const pressYHoverPropsOptions = propsFactory(\r\n {\r\n disabled: Boolean,\r\n modelValue: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n openDelay: {\r\n type: Number,\r\n default: 100,\r\n },\r\n closeDelay: {\r\n type: Number,\r\n default: 100,\r\n },\r\n },\r\n 'YHover',\r\n);\r\n\r\nexport const YHover = defineComponent({\r\n name: 'YHover',\r\n props: pressYHoverPropsOptions(),\r\n emits: ['update:modelValue', 'hover'],\r\n setup(props, { slots, emit }) {\r\n const isHovering = useModelDuplex(props, 'modelValue');\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (value: any) => {\r\n !props.disabled && (isHovering.value = value);\r\n },\r\n );\r\n\r\n const defaultSlot = ref<any>();\r\n\r\n watch(isHovering, (neo) => {\r\n emit('hover', neo, defaultSlot);\r\n });\r\n\r\n useRender(() => {\r\n defaultSlot.value = slots.default?.({\r\n isHovering: isHovering.value,\r\n props: {\r\n onMouseenter: () => startOpenDelay(),\r\n onMouseleave: () => startCloseDelay(),\r\n },\r\n });\r\n return <>{defaultSlot.value}</>;\r\n });\r\n },\r\n});\r\n\r\nexport type YHover = InstanceType<typeof YHover>;\r\n"],"mappings":";AAAA,SAASA,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAChC,SAASC,cAAc,QAAQ,oBAAoB;AAAC,SAE3CC,SAAS;AAAA,SACTC,QAAQ;AAAA,SACRC,eAAe,EAAEC,YAAY;AAEtC,OAAO,MAAMC,uBAAuB,GAAGD,YAAY,CACjD;EACEE,QAAQ,EAAEC,OAAO;EACjBC,UAAU,EAAE;IACVC,IAAI,EAAEF,OAAO;IACbG,OAAO,EAAEC;EACX,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAEI,MAAM;IACZH,OAAO,EAAE;EACX,CAAC;EACDI,UAAU,EAAE;IACVL,IAAI,EAAEI,MAAM;IACZH,OAAO,EAAE;EACX;AACF,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAMK,MAAM,GAAGZ,eAAe,CAAC;EACpCa,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAEZ,uBAAuB,CAAC,CAAC;EAChCa,KAAK,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC;EACrCC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC1B,MAAMG,UAAU,GAAGvB,cAAc,CAACiB,KAAK,EAAE,YAAY,CAAC;IACtD,MAAM;MAAEO,cAAc;MAAEC;IAAgB,CAAC,GAAGvB,QAAQ,CAClDe,KAAK,EACJS,KAAU,IAAK;MACd,CAACT,KAAK,CAACX,QAAQ,KAAKiB,UAAU,CAACG,KAAK,GAAGA,KAAK,CAAC;IAC/C,CACF,CAAC;IAED,MAAMC,WAAW,GAAG7B,GAAG,CAAM,CAAC;IAE9BC,KAAK,CAACwB,UAAU,EAAGK,GAAG,IAAK;MACzBN,IAAI,CAAC,OAAO,EAAEM,GAAG,EAAED,WAAW,CAAC;IACjC,CAAC,CAAC;IAEF1B,SAAS,CAAC,MAAM;MACd0B,WAAW,CAACD,KAAK,GAAGL,KAAK,CAACX,OAAO,GAAG;QAClCa,UAAU,EAAEA,UAAU,CAACG,KAAK;QAC5BT,KAAK,EAAE;UACLY,YAAY,EAAEA,CAAA,KAAML,cAAc,CAAC,CAAC;UACpCM,YAAY,EAAEA,CAAA,KAAML,eAAe,CAAC;QACtC;MACF,CAAC,CAAC;MACF,OAAAM,YAAA,CAAAC,SAAA,SAAUL,WAAW,CAACD,KAAK;IAC7B,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YHover.mjs","names":["ref","watch","useModelDuplex","useRender","useDelay","defineComponent","propsFactory","pressYHoverPropsOptions","disabled","Boolean","modelValue","type","default","undefined","openDelay","Number","closeDelay","YHover","name","props","emits","setup","_ref","slots","emit","isHovering","startOpenDelay","startCloseDelay","value","defaultSlot","neo","onMouseenter","onMouseleave","_createVNode","_Fragment"],"sources":["../../../src/components/hover/YHover.tsx"],"sourcesContent":["import { ref, watch } from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { useDelay } from '@/composables/timing';\nimport { defineComponent, propsFactory } from '@/util/component';\n\nexport const pressYHoverPropsOptions = propsFactory(\n {\n disabled: Boolean,\n modelValue: {\n type: Boolean,\n default: undefined,\n },\n openDelay: {\n type: Number,\n default: 100,\n },\n closeDelay: {\n type: Number,\n default: 100,\n },\n },\n 'YHover',\n);\n\nexport const YHover = defineComponent({\n name: 'YHover',\n props: pressYHoverPropsOptions(),\n emits: ['update:modelValue', 'hover'],\n setup(props, { slots, emit }) {\n const isHovering = useModelDuplex(props, 'modelValue');\n const { startOpenDelay, startCloseDelay } = useDelay(\n props,\n (value: any) => {\n !props.disabled && (isHovering.value = value);\n },\n );\n\n const defaultSlot = ref<any>();\n\n watch(isHovering, (neo) => {\n emit('hover', neo, defaultSlot);\n });\n\n useRender(() => {\n defaultSlot.value = slots.default?.({\n isHovering: isHovering.value,\n props: {\n onMouseenter: () => startOpenDelay(),\n onMouseleave: () => startCloseDelay(),\n },\n });\n return <>{defaultSlot.value}</>;\n });\n },\n});\n\nexport type YHover = InstanceType<typeof YHover>;\n"],"mappings":";AAAA,SAASA,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAExBC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,QAAQ;AAAA,SACRC,eAAe,EAAEC,YAAY;AAEtC,OAAO,MAAMC,uBAAuB,GAAGD,YAAY,CACjD;EACEE,QAAQ,EAAEC,OAAO;EACjBC,UAAU,EAAE;IACVC,IAAI,EAAEF,OAAO;IACbG,OAAO,EAAEC;EACX,CAAC;EACDC,SAAS,EAAE;IACTH,IAAI,EAAEI,MAAM;IACZH,OAAO,EAAE;EACX,CAAC;EACDI,UAAU,EAAE;IACVL,IAAI,EAAEI,MAAM;IACZH,OAAO,EAAE;EACX;AACF,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAMK,MAAM,GAAGZ,eAAe,CAAC;EACpCa,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAEZ,uBAAuB,CAAC,CAAC;EAChCa,KAAK,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC;EACrCC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAAmB;IAAA,IAAjB;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAF,IAAA;IAC1B,MAAMG,UAAU,GAAGvB,cAAc,CAACiB,KAAK,EAAE,YAAY,CAAC;IACtD,MAAM;MAAEO,cAAc;MAAEC;IAAgB,CAAC,GAAGvB,QAAQ,CAClDe,KAAK,EACJS,KAAU,IAAK;MACd,CAACT,KAAK,CAACX,QAAQ,KAAKiB,UAAU,CAACG,KAAK,GAAGA,KAAK,CAAC;IAC/C,CACF,CAAC;IAED,MAAMC,WAAW,GAAG7B,GAAG,CAAM,CAAC;IAE9BC,KAAK,CAACwB,UAAU,EAAGK,GAAG,IAAK;MACzBN,IAAI,CAAC,OAAO,EAAEM,GAAG,EAAED,WAAW,CAAC;IACjC,CAAC,CAAC;IAEF1B,SAAS,CAAC,MAAM;MACd0B,WAAW,CAACD,KAAK,GAAGL,KAAK,CAACX,OAAO,GAAG;QAClCa,UAAU,EAAEA,UAAU,CAACG,KAAK;QAC5BT,KAAK,EAAE;UACLY,YAAY,EAAEA,CAAA,KAAML,cAAc,CAAC,CAAC;UACpCM,YAAY,EAAEA,CAAA,KAAML,eAAe,CAAC;QACtC;MACF,CAAC,CAAC;MACF,OAAAM,YAAA,CAAAC,SAAA,SAAUL,WAAW,CAACD,KAAK;IAC7B,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -262,7 +262,7 @@ export const YSelect = defineComponent({
262
262
  "modelValue": opened.value,
263
263
  "onUpdate:modelValue": $event => opened.value = $event
264
264
  }), {
265
- default: slots.menu ? () => slots.menu() : () => _createVNode(YCard, {
265
+ default: slots.menu ? () => slots.menu?.() : () => _createVNode(YCard, {
266
266
  "ref": cardRef
267
267
  }, {
268
268
  default: () => [slots['menu-prepend']?.(), items.value.length > 0 ? _createVNode(YList, {
@@ -1 +1 @@
1
- {"version":3,"file":"YSelect.mjs","names":["computed","mergeProps","nextTick","onMounted","ref","shallowRef","vShow","watch","withDirectives","useModelDuplex","useRender","pressCoordinateProps","useI18n","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","omit","chooseProps","defineComponent","getHtmlElement","propsFactory","getScrollParent","YCard","YFieldInput","pressYFieldInputPropsOptions","YIcon","YList","YListItem","YMenu","pressSelectPropsOptions","opened","Boolean","closeOnBlur","multiple","itemComparator","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","change","slots","setup","_ref","attrs","expose","emit","fieldInputRef","menuRef","listRef","cardRef","focused","items","toRefineItems","toEmitItems","t","setOut","v","emitValue","model","selections","ret","found","find","undefined","push","selected","map","selection","extraMenuProps","preventCloseBubble","isSelected","selectedItem","onMousedownDisplay","event","disabled","onKeydownDisplay","console","log","key","onBlur","requestAnimationFrame","contentEl","layer$","content$","contains","document","activeElement","onClickItem","select","setTimeout","onAfterLeave","closeCondition","target","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","scrollToActiveItem","length","listEl","activeEl","querySelector","scrollEl","isSameNode","scrollTo","top","offsetTop","behavior","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","rxValue","selectionProps","raw","placeholder","internalItems","_Fragment","offset","align","origin","$event","menu","itemProps","leading","trailing","hide","_len","arguments","args","_key","label","_len2","_key2","_len3","_key3","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import {\r\n type PropType,\r\n type SlotsType,\r\n computed,\r\n mergeProps,\r\n nextTick,\r\n onMounted,\r\n ref,\r\n shallowRef,\r\n vShow,\r\n watch,\r\n withDirectives,\r\n} from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { useRender } from '@/composables/component';\r\nimport { pressCoordinateProps } from '@/composables/coordinate';\r\nimport { useI18n } from '@/composables/i18n';\r\nimport {\r\n ListItem,\r\n pressListItemsPropsOptions,\r\n useItems,\r\n} from '@/composables/list-items';\r\nimport { wrapInArray } from '@/util/array';\r\nimport { deepEqual, omit } from '@/util/common';\r\nimport {\r\n chooseProps,\r\n defineComponent,\r\n getHtmlElement,\r\n propsFactory,\r\n} from '@/util/component';\r\nimport { getScrollParent } from '@/util/scroll';\r\n\r\nimport { YCard } from '../card';\r\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\r\nimport { YIcon, YIconIconProp } from '../icon';\r\nimport { YList, YListItem } from '../list';\r\nimport { YMenu } from '../menu';\r\n\r\nimport './YSelect.scss';\r\n\r\nexport type ItemComparator = (\r\n optionsItem: any,\r\n valueItem: any,\r\n valueKey?: string,\r\n) => boolean;\r\n\r\nexport const pressSelectPropsOptions = propsFactory(\r\n {\r\n opened: Boolean as PropType<boolean>,\r\n closeOnBlur: Boolean as PropType<boolean>,\r\n multiple: Boolean,\r\n itemComparator: {\r\n type: Function as PropType<ItemComparator>,\r\n default: deepEqual,\r\n },\r\n defaultSelect: Boolean,\r\n menuProps: {\r\n type: Object as PropType<YMenu['$props']>,\r\n },\r\n ...pressListItemsPropsOptions(),\r\n },\r\n 'Select',\r\n);\r\n\r\nexport const pressYSelectPropsOptions = propsFactory(\r\n {\r\n maxHeight: {\r\n type: [Number, String],\r\n default: 310,\r\n },\r\n dropdownIcon: {\r\n type: [String, Array, Object] as PropType<YIconIconProp>,\r\n default: '$dropdown',\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 ...pressSelectPropsOptions(),\r\n ...pressYFieldInputPropsOptions(),\r\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\r\n 'coordinateStrategy',\r\n ]),\r\n },\r\n 'YSelect',\r\n);\r\n\r\nexport const YSelect = defineComponent({\r\n name: 'YSelect',\r\n inheritAttrs: false,\r\n props: {\r\n ...pressYSelectPropsOptions(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: any) => true,\r\n 'update:opened': (opened: boolean) => true,\r\n 'click:item': (item: any, e: MouseEvent) => true,\r\n change: (value: any) => true,\r\n },\r\n slots: Object as SlotsType<{\r\n base: any;\r\n selection: {\r\n displayText: string;\r\n placeholder: undefined | string;\r\n items: any[];\r\n internalItems: ListItem[];\r\n };\r\n leading: any;\r\n label: any;\r\n 'helper-text': any;\r\n menu: any;\r\n 'menu-prepend': any;\r\n 'menu-append': any;\r\n 'dropdown-icon': any;\r\n item: { item: any; selected: boolean; select: () => void };\r\n 'item-leading': { item: any; selected: boolean; select: () => void };\r\n 'item-trailing': { item: any; selected: boolean; select: () => void };\r\n }>,\r\n setup(props, { slots, attrs, expose, emit }) {\r\n const fieldInputRef = ref();\r\n const menuRef = ref<InstanceType<typeof YMenu>>();\r\n const listRef = ref<InstanceType<typeof YList>>();\r\n const cardRef = ref<any>();\r\n\r\n const opened = useModelDuplex(props, 'opened');\r\n const focused = shallowRef(false);\r\n\r\n const { items, toRefineItems, toEmitItems } = useItems(props);\r\n const { t } = useI18n();\r\n const setOut = (v: any) => {\r\n const emitValue = toEmitItems(wrapInArray(v));\r\n return props.multiple ? emitValue : emitValue[0] ?? null;\r\n };\r\n const model = useModelDuplex(\r\n props,\r\n 'modelValue',\r\n [],\r\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\r\n setOut,\r\n );\r\n\r\n const selections = computed<ListItem[]>(() => {\r\n const ret: ListItem<any>[] = [];\r\n for (const v of model.value) {\r\n const found = items.value.find((item) => {\r\n return props.itemComparator(item.value, v.value);\r\n });\r\n if (found !== undefined) {\r\n ret.push(found);\r\n }\r\n }\r\n return ret;\r\n });\r\n\r\n const selected = computed(() => {\r\n return selections.value.map((selection) => selection?.props?.value);\r\n });\r\n\r\n const extraMenuProps = computed(() => {\r\n return { ...props.menuProps, preventCloseBubble: true };\r\n });\r\n\r\n function isSelected(item: ListItem) {\r\n return !!selections.value.find((selectedItem) => {\r\n return selectedItem?.value === item.value;\r\n });\r\n }\r\n\r\n // Field\r\n function onMousedownDisplay(event: MouseEvent) {\r\n if (props.disabled) return;\r\n opened.value = !opened.value;\r\n }\r\n\r\n function onKeydownDisplay(event: KeyboardEvent) {\r\n console.log(event);\r\n if (props.disabled) return;\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n opened.value = !opened.value;\r\n }\r\n }\r\n\r\n function onBlur(event: FocusEvent) {\r\n requestAnimationFrame(() => {\r\n const contentEl = (menuRef.value as any)?.layer$?.content$;\r\n if (contentEl?.contains(document.activeElement)) {\r\n return;\r\n }\r\n if (opened.value && props.closeOnBlur) {\r\n opened.value = false;\r\n }\r\n });\r\n }\r\n\r\n // Menu Contents\r\n function onClickItem(item: ListItem, e: MouseEvent) {\r\n if (item.disabled) return;\r\n select(item);\r\n if (!props.multiple) {\r\n setTimeout(() => {\r\n opened.value = false;\r\n }, 40);\r\n }\r\n }\r\n\r\n function onAfterLeave() {\r\n if (!focused.value) {\r\n // fieldInputRef.value?.focus();\r\n }\r\n }\r\n\r\n function closeCondition(event: MouseEvent) {\r\n if (event.target && (menuRef.value as any)?.layer$?.content$) {\r\n return (event.target as HTMLElement)?.contains(\r\n (menuRef.value as any)?.layer$?.content$,\r\n );\r\n }\r\n }\r\n\r\n function select(item: ListItem) {\r\n let value;\r\n if (props.multiple) {\r\n const index = selections.value.findIndex((selectedItem) => {\r\n return selectedItem.value === item.value;\r\n });\r\n if (index === -1) {\r\n value = [...model.value, item];\r\n } else {\r\n const neo = model.value.slice();\r\n neo.splice(index, 1);\r\n value = neo;\r\n }\r\n } else {\r\n value = [item];\r\n }\r\n model.value = value;\r\n emit('change', setOut(value));\r\n }\r\n\r\n const displayText = computed(() => {\r\n if (props.multiple) {\r\n return selections.value.map((item) => item.text).join(', ');\r\n }\r\n return selections.value?.[0]?.text ?? '';\r\n });\r\n\r\n const baseEl = computed(() => {\r\n return menuRef.value?.baseEl;\r\n });\r\n\r\n watch(opened, (neo) => {\r\n if (neo) {\r\n nextTick(() => {\r\n scrollToActiveItem();\r\n });\r\n }\r\n });\r\n\r\n function scrollToActiveItem() {\r\n if (selections.value.length === 0) {\r\n return;\r\n }\r\n const listEl = getHtmlElement(listRef.value);\r\n if (listEl) {\r\n const activeEl = listEl?.querySelector('.y-list-item--active') as\r\n | HTMLElement\r\n | undefined;\r\n const contentEl = (menuRef.value as any)?.layer$\r\n ?.content$ as HTMLElement;\r\n if (activeEl && contentEl) {\r\n const scrollEl = getScrollParent(activeEl);\r\n if (\r\n scrollEl &&\r\n (contentEl.contains(scrollEl) || contentEl.isSameNode(scrollEl))\r\n ) {\r\n scrollEl.scrollTo({ top: activeEl.offsetTop, behavior: 'smooth' });\r\n }\r\n }\r\n }\r\n }\r\n\r\n useRender(() => {\r\n const fieldInputProps = chooseProps(props, YFieldInput.props);\r\n const dropdownIconProps = chooseProps(\r\n typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {},\r\n YIcon.props,\r\n );\r\n return (\r\n <YFieldInput\r\n ref={fieldInputRef}\r\n {...fieldInputProps}\r\n modelValue={model.value\r\n .map((v: any) => v.props.value)\r\n .join(', ')}\r\n validationValue={model.rxValue}\r\n onMousedown:display={onMousedownDisplay}\r\n onKeydown:display={onKeydownDisplay}\r\n onBlur={onBlur}\r\n readonly\r\n class={[\r\n 'y-select',\r\n {\r\n 'y-select--opened': opened.value,\r\n 'y-select--selected': selected.value.length > 0,\r\n },\r\n ]}\r\n {...attrs}\r\n focused={focused.value}\r\n >\r\n {{\r\n default: () => {\r\n const selectionProps = {\r\n items: selections.value.map((item) => item.raw),\r\n displayText: displayText.value,\r\n placeholder: props.placeholder,\r\n internalItems: selections.value,\r\n };\r\n return <>\r\n <div class={['y-select__selection']}>\r\n {slots.selection\r\n ? slots.selection?.(selectionProps)\r\n : selected.value.length > 0\r\n ? displayText.value\r\n : props.placeholder}\r\n </div>\r\n <YMenu\r\n ref={menuRef}\r\n offset={props.offset}\r\n position={props.position}\r\n align={props.align}\r\n origin={props.origin}\r\n content-classes={['y-select__content']}\r\n maxHeight={props.maxHeight}\r\n open-on-click-base={false}\r\n onAfterLeave={onAfterLeave}\r\n open-delay={props.openDelay}\r\n close-delay={props.closeDelay}\r\n closeCondition={closeCondition}\r\n base=\"parent\"\r\n {...extraMenuProps.value}\r\n v-model={opened.value}\r\n >\r\n {{\r\n default: slots.menu\r\n ? () => slots.menu()\r\n : () => (\r\n <YCard ref={cardRef}>\r\n {slots['menu-prepend']?.()}\r\n {items.value.length > 0 ? (\r\n <YList ref={listRef}>\r\n {items.value.map((item) => {\r\n const itemProps = {\r\n item,\r\n selected: isSelected(item),\r\n select: () => {\r\n select(item);\r\n },\r\n };\r\n return withDirectives(\r\n <YListItem\r\n onClick={(e) => onClickItem(item, e)}\r\n class={[\r\n {\r\n 'y-list-item--active': isSelected(item),\r\n },\r\n ]}\r\n disabled={item.disabled}\r\n >\r\n {{\r\n default: () =>\r\n slots.item\r\n ? slots.item?.(itemProps)\r\n : item.text,\r\n leading:\r\n slots['item-leading'] &&\r\n (() => slots['item-leading']?.(itemProps)),\r\n trailing:\r\n slots['item-trailing'] &&\r\n (() => slots['item-trailing']?.(itemProps)),\r\n }}\r\n </YListItem>,\r\n [[vShow, !item.hide]],\r\n );\r\n })}\r\n </YList>\r\n ) : (\r\n <div class=\"y-select__no-options\">\r\n {t('$yuyeon.noItems')}\r\n </div>\r\n )}\r\n {slots['menu-append']?.()}\r\n </YCard>\r\n ),\r\n }}\r\n </YMenu>\r\n </>\r\n },\r\n leading: slots.leading\r\n ? (...args: any[]) => slots.leading?.(...args)\r\n : undefined,\r\n trailing: (...args: any[]) => {\r\n return slots['dropdown-icon'] ? (\r\n slots['dropdown-icon']()\r\n ) : (\r\n <YIcon\r\n {...mergeProps(dropdownIconProps)}\r\n icon={props.dropdownIcon}\r\n class={['y-select__icon']}\r\n ></YIcon>\r\n );\r\n },\r\n label: slots.label\r\n ? (...args: any[]) => slots.label?.(...args)\r\n : undefined,\r\n 'helper-text': slots['helper-text']\r\n ? (...args: any[]) => slots['helper-text']?.(...args)\r\n : undefined,\r\n }}\r\n </YFieldInput>\r\n );\r\n });\r\n\r\n onMounted(() => {\r\n if (\r\n props.defaultSelect &&\r\n (props.modelValue === undefined ||\r\n (Array.isArray(props.modelValue) && props.modelValue.length === 0)) &&\r\n items.value?.length\r\n ) {\r\n select(items.value[0]);\r\n }\r\n });\r\n\r\n expose({\r\n fieldInputRef,\r\n baseEl,\r\n opened,\r\n });\r\n\r\n return {\r\n fieldInputRef,\r\n model,\r\n selections,\r\n selected,\r\n menuRef,\r\n baseEl,\r\n opened,\r\n };\r\n },\r\n});\r\n\r\nexport type YSelect = InstanceType<typeof YSelect>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YSelect.mjs","names":["computed","mergeProps","nextTick","onMounted","ref","shallowRef","vShow","watch","withDirectives","useModelDuplex","useRender","pressCoordinateProps","useI18n","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","omit","chooseProps","defineComponent","getHtmlElement","propsFactory","getScrollParent","YCard","YFieldInput","pressYFieldInputPropsOptions","YIcon","YList","YListItem","YMenu","pressSelectPropsOptions","opened","Boolean","closeOnBlur","multiple","itemComparator","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","change","slots","setup","_ref","attrs","expose","emit","fieldInputRef","menuRef","listRef","cardRef","focused","items","toRefineItems","toEmitItems","t","setOut","v","emitValue","model","selections","ret","found","find","undefined","push","selected","map","selection","extraMenuProps","preventCloseBubble","isSelected","selectedItem","onMousedownDisplay","event","disabled","onKeydownDisplay","console","log","key","onBlur","requestAnimationFrame","contentEl","layer$","content$","contains","document","activeElement","onClickItem","select","setTimeout","onAfterLeave","closeCondition","target","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","scrollToActiveItem","length","listEl","activeEl","querySelector","scrollEl","isSameNode","scrollTo","top","offsetTop","behavior","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","rxValue","selectionProps","raw","placeholder","internalItems","_Fragment","offset","align","origin","$event","menu","itemProps","leading","trailing","hide","_len","arguments","args","_key","label","_len2","_key2","_len3","_key3","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import {\n ExtractPropTypes,\n type PropType,\n type SlotsType,\n computed,\n mergeProps,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n vShow,\n watch,\n withDirectives,\n} 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 { wrapInArray } from '@/util/array';\nimport { deepEqual, omit } from '@/util/common';\nimport {\n chooseProps,\n defineComponent,\n getHtmlElement,\n propsFactory,\n} from '@/util/component';\nimport { getScrollParent } from '@/util/scroll';\n\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 ItemComparator = (\n optionsItem: any,\n valueItem: any,\n valueKey?: string,\n) => boolean;\n\nexport const pressSelectPropsOptions = propsFactory(\n {\n opened: Boolean as PropType<boolean>,\n closeOnBlur: Boolean as PropType<boolean>,\n multiple: Boolean,\n itemComparator: {\n type: Function as PropType<ItemComparator>,\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 ReturnType<typeof pressYSelectPropsOptions>\n>({\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 change: (value: any) => 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, emit }) {\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 setOut = (v: any) => {\n const emitValue = toEmitItems(wrapInArray(v));\n return props.multiple ? emitValue : emitValue[0] ?? null;\n };\n const model = useModelDuplex(\n props,\n 'modelValue',\n [],\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\n setOut,\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.itemComparator(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) return;\n opened.value = !opened.value;\n }\n\n function onKeydownDisplay(event: KeyboardEvent) {\n console.log(event);\n if (props.disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n opened.value = !opened.value;\n }\n }\n\n function onBlur(event: FocusEvent) {\n requestAnimationFrame(() => {\n const contentEl = (menuRef.value as any)?.layer$?.content$;\n if (contentEl?.contains(document.activeElement)) {\n return;\n }\n if (opened.value && props.closeOnBlur) {\n opened.value = false;\n }\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 let value;\n if (props.multiple) {\n const index = selections.value.findIndex((selectedItem) => {\n return selectedItem.value === item.value;\n });\n if (index === -1) {\n value = [...model.value, item];\n } else {\n const neo = model.value.slice();\n neo.splice(index, 1);\n value = neo;\n }\n } else {\n value = [item];\n }\n model.value = value;\n emit('change', setOut(value));\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 <YFieldInput\n ref={fieldInputRef}\n {...fieldInputProps}\n modelValue={model.value.map((v: any) => v.props.value).join(', ')}\n validationValue={model.rxValue}\n onMousedown:display={onMousedownDisplay}\n onKeydown:display={onKeydownDisplay}\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 <>\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 <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 base=\"parent\"\n {...extraMenuProps.value}\n v-model={opened.value}\n >\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':\n 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 (() =>\n slots['item-leading']?.(\n itemProps,\n )),\n trailing:\n slots['item-trailing'] &&\n (() =>\n slots['item-trailing']?.(\n itemProps,\n )),\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 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 });\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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"}
@@ -4,7 +4,7 @@ import { useModelDuplex } from "../../composables/communication.mjs";
4
4
  import { useRender } from "../../composables/component.mjs";
5
5
  import { pressPolyTransitionPropsOptions } from "../../composables/transition.mjs";
6
6
  import { omit } from "../../util/common.mjs";
7
- import { bindClasses, chooseProps, defineComponent } from "../../util/component/index.mjs";
7
+ import { bindClasses, chooseProps, defineComponent, propsFactory } from "../../util/component/index.mjs";
8
8
  import { YLayer, pressYLayerProps } from "../layer/index.mjs";
9
9
  import { useDelay } from "../layer/active-delay.mjs";
10
10
  import { YPlate } from "../plate/index.mjs";
@@ -17,26 +17,27 @@ const YTooltipPropOptions = {
17
17
  preventClip: {
18
18
  type: Boolean,
19
19
  default: true
20
- }
20
+ },
21
+ ...pressYLayerProps({
22
+ coordinateStrategy: 'levitation',
23
+ scrollStrategy: 'reposition',
24
+ openOnHover: true,
25
+ align: 'center',
26
+ offset: 8
27
+ }),
28
+ ...pressPolyTransitionPropsOptions({
29
+ transition: 'fade'
30
+ })
21
31
  };
32
+ export const pressYTooltipPropsOptions = propsFactory(YTooltipPropOptions, 'YTooltip');
22
33
 
23
- /**
24
- * # Component
34
+ /**
35
+ * # Component
25
36
  */
26
37
  export const YTooltip = defineComponent({
27
38
  name: NAME,
28
39
  props: {
29
- ...YTooltipPropOptions,
30
- ...pressYLayerProps({
31
- coordinateStrategy: 'levitation',
32
- scrollStrategy: 'reposition',
33
- openOnHover: true,
34
- align: 'center',
35
- offset: 8
36
- }),
37
- ...pressPolyTransitionPropsOptions({
38
- transition: 'fade'
39
- })
40
+ ...pressYTooltipPropsOptions()
40
41
  },
41
42
  emits: ['update:modelValue'],
42
43
  setup(props, _ref) {
@@ -1 +1 @@
1
- {"version":3,"file":"YTooltip.mjs","names":["computed","nextTick","ref","watch","useModelDuplex","useRender","pressPolyTransitionPropsOptions","omit","bindClasses","chooseProps","defineComponent","YLayer","pressYLayerProps","useDelay","YPlate","NAME","YTooltipPropOptions","tooltipClasses","type","Array","String","Object","preventClip","Boolean","default","YTooltip","name","props","coordinateStrategy","scrollStrategy","openOnHover","align","offset","transition","emits","setup","_ref","slots","emit","expose","layer$","contentEl","baseEl","value","classes","boundClasses","model","active","get","set","v","disabled","hovered","neo","$content","content$","startOpenDelay","startCloseDelay","changeActive","onMouseenter","e","onMouseleave","bindHover","el","addEventListener","unbindHover","removeEventListener","old","_createVNode","_Fragment","_mergeProps","$event","_len","arguments","length","args","_key","base","_len2","_key2","el$"],"sources":["../../../src/components/tooltip/YTooltip.tsx"],"sourcesContent":["import { type PropType, computed, nextTick, ref, watch } from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { useRender } from '@/composables/component';\r\nimport { pressPolyTransitionPropsOptions } from '@/composables/transition';\r\nimport { omit } from '@/util/common';\r\nimport { bindClasses, chooseProps, defineComponent } from '@/util/component';\r\n\r\nimport { YLayer, pressYLayerProps } from '../layer';\r\nimport { useDelay } from '../layer/active-delay';\r\nimport { YPlate } from '../plate';\r\n\r\nimport './YTooltip.scss';\r\n\r\nconst NAME = 'YTooltip';\r\n\r\nconst YTooltipPropOptions = {\r\n tooltipClasses: {\r\n type: [Array, String, Object] as PropType<\r\n string[] | string | Record<string, any>\r\n >,\r\n },\r\n preventClip: {\r\n type: Boolean as PropType<boolean>,\r\n default: true,\r\n },\r\n};\r\n\r\n/**\r\n * # Component\r\n */\r\nexport const YTooltip = defineComponent({\r\n name: NAME,\r\n props: {\r\n ...YTooltipPropOptions,\r\n ...pressYLayerProps({\r\n coordinateStrategy: 'levitation' as const,\r\n scrollStrategy: 'reposition' as const,\r\n openOnHover: true,\r\n align: 'center',\r\n offset: 8,\r\n }),\r\n ...pressPolyTransitionPropsOptions({\r\n transition: 'fade',\r\n }),\r\n },\r\n emits: ['update:modelValue'],\r\n setup(props, { slots, emit, expose }) {\r\n const layer$ = ref<typeof YLayer>();\r\n const contentEl = ref<HTMLElement>();\r\n const baseEl = computed(() => {\r\n return layer$.value?.baseEl;\r\n });\r\n\r\n const classes = computed(() => {\r\n const boundClasses = bindClasses(props.tooltipClasses);\r\n return {\r\n ...boundClasses,\r\n 'y-tooltip': true,\r\n };\r\n });\r\n\r\n const model = useModelDuplex(props);\r\n\r\n const active = computed({\r\n get: (): boolean => {\r\n return !!model.value;\r\n },\r\n set: (v: boolean) => {\r\n if (!(v && props.disabled)) model.value = v;\r\n },\r\n });\r\n\r\n const hovered = computed(() => !!layer$.value?.hovered);\r\n\r\n watch(active, (neo) => {\r\n if (neo) {\r\n nextTick(() => {\r\n const $content = layer$.value?.content$;\r\n contentEl.value = $content;\r\n });\r\n }\r\n });\r\n\r\n const { startOpenDelay, startCloseDelay } = useDelay(\r\n props,\r\n (changeActive) => {\r\n if (!changeActive && props.openOnHover && !hovered.value) {\r\n active.value = false;\r\n } else if (changeActive) {\r\n active.value = true;\r\n }\r\n },\r\n );\r\n\r\n function onMouseenter(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startOpenDelay();\r\n }\r\n }\r\n\r\n function onMouseleave(e: MouseEvent) {\r\n if (props.openOnHover) {\r\n startCloseDelay();\r\n }\r\n }\r\n\r\n watch(hovered, (value) => {\r\n if (!value) {\r\n startCloseDelay();\r\n }\r\n });\r\n\r\n function bindHover(el: HTMLElement) {\r\n el.addEventListener?.('mouseenter', onMouseenter);\r\n el.addEventListener?.('mouseleave', onMouseleave);\r\n }\r\n\r\n function unbindHover(el: HTMLElement) {\r\n el.removeEventListener?.('mouseenter', onMouseenter);\r\n el.removeEventListener?.('mouseleave', onMouseleave);\r\n }\r\n\r\n watch(\r\n () => layer$.value?.baseEl,\r\n (neo, old) => {\r\n if (neo) {\r\n bindHover(neo);\r\n } else if (old) {\r\n unbindHover(old);\r\n }\r\n },\r\n );\r\n\r\n expose({\r\n layer$,\r\n baseEl,\r\n });\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n <YLayer\r\n ref={layer$}\r\n {...omit(chooseProps(props, YLayer.props), ['scrim'])}\r\n classes={classes.value}\r\n scrim={false}\r\n transition={props.transition}\r\n v-model={active.value}\r\n >\r\n {{\r\n default: (...args: any) => {\r\n return (\r\n <>\r\n <YPlate></YPlate>\r\n <div class=\"y-tooltip__content\">\r\n {slots.default?.(...args) ?? ''}\r\n </div>\r\n </>\r\n );\r\n },\r\n base: (...args: any[]) => slots.base?.(...args),\r\n }}\r\n </YLayer>\r\n </>\r\n );\r\n });\r\n\r\n return {\r\n layer$,\r\n el$: layer$,\r\n baseEl,\r\n active,\r\n };\r\n },\r\n});\r\n\r\nexport type YTooltip = InstanceType<typeof YTooltip>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YTooltip.mjs","names":["computed","nextTick","ref","watch","useModelDuplex","useRender","pressPolyTransitionPropsOptions","omit","bindClasses","chooseProps","defineComponent","propsFactory","YLayer","pressYLayerProps","useDelay","YPlate","NAME","YTooltipPropOptions","tooltipClasses","type","Array","String","Object","preventClip","Boolean","default","coordinateStrategy","scrollStrategy","openOnHover","align","offset","transition","pressYTooltipPropsOptions","YTooltip","name","props","emits","setup","_ref","slots","emit","expose","layer$","contentEl","baseEl","value","classes","boundClasses","model","active","get","set","v","disabled","hovered","neo","$content","content$","startOpenDelay","startCloseDelay","changeActive","onMouseenter","e","onMouseleave","bindHover","el","addEventListener","unbindHover","removeEventListener","old","_createVNode","_Fragment","_mergeProps","$event","_len","arguments","length","args","_key","base","_len2","_key2","el$"],"sources":["../../../src/components/tooltip/YTooltip.tsx"],"sourcesContent":["import { type PropType, computed, nextTick, ref, watch } from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { pressPolyTransitionPropsOptions } from '@/composables/transition';\nimport { omit } from '@/util/common';\nimport {\n bindClasses,\n chooseProps,\n defineComponent,\n propsFactory,\n} from '@/util/component';\n\nimport { YLayer, pressYLayerProps } from '../layer';\nimport { useDelay } from '../layer/active-delay';\nimport { YPlate } from '../plate';\n\nimport './YTooltip.scss';\n\nconst NAME = 'YTooltip';\n\nconst YTooltipPropOptions = {\n tooltipClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n preventClip: {\n type: Boolean as PropType<boolean>,\n default: true,\n },\n ...pressYLayerProps({\n coordinateStrategy: 'levitation' as const,\n scrollStrategy: 'reposition' as const,\n openOnHover: true,\n align: 'center',\n offset: 8,\n }),\n ...pressPolyTransitionPropsOptions({\n transition: 'fade',\n }),\n};\n\nexport const pressYTooltipPropsOptions = propsFactory(\n YTooltipPropOptions,\n 'YTooltip',\n);\n\n/**\n * # Component\n */\nexport const YTooltip = defineComponent<\n ReturnType<typeof pressYTooltipPropsOptions>\n>({\n name: NAME,\n props: {\n ...pressYTooltipPropsOptions(),\n },\n emits: ['update:modelValue'],\n setup(props, { slots, emit, expose }) {\n const layer$ = ref<typeof YLayer>();\n const contentEl = ref<HTMLElement>();\n const baseEl = computed(() => {\n return layer$.value?.baseEl;\n });\n\n const classes = computed(() => {\n const boundClasses = bindClasses(props.tooltipClasses);\n return {\n ...boundClasses,\n 'y-tooltip': true,\n };\n });\n\n const model = useModelDuplex(props);\n\n const active = computed({\n get: (): boolean => {\n return !!model.value;\n },\n set: (v: boolean) => {\n if (!(v && props.disabled)) model.value = v;\n },\n });\n\n const hovered = computed(() => !!layer$.value?.hovered);\n\n watch(active, (neo) => {\n if (neo) {\n nextTick(() => {\n const $content = layer$.value?.content$;\n contentEl.value = $content;\n });\n }\n });\n\n const { startOpenDelay, startCloseDelay } = useDelay(\n props,\n (changeActive) => {\n if (!changeActive && props.openOnHover && !hovered.value) {\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 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 } else if (old) {\n unbindHover(old);\n }\n },\n );\n\n expose({\n layer$,\n baseEl,\n });\n\n useRender(() => {\n return (\n <>\n <YLayer\n ref={layer$}\n {...omit(chooseProps(props, YLayer.props), ['scrim'])}\n classes={classes.value}\n scrim={false}\n transition={props.transition}\n v-model={active.value}\n >\n {{\n default: (...args: any) => {\n return (\n <>\n <YPlate></YPlate>\n <div class=\"y-tooltip__content\">\n {slots.default?.(...args) ?? ''}\n </div>\n </>\n );\n },\n base: (...args: any[]) => slots.base?.(...args),\n }}\n </YLayer>\n </>\n );\n });\n\n return {\n layer$,\n el$: layer$,\n baseEl,\n active,\n };\n },\n});\n\nexport type YTooltip = InstanceType<typeof YTooltip>;\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuyeon",
3
- "version": "0.3.1-rc.5",
3
+ "version": "0.3.1-rc.6",
4
4
  "keywords": [
5
5
  "UI Library",
6
6
  "Vue"
@@ -75,14 +75,14 @@ export declare const pressYDropdownPropsOptions: <Defaults extends {
75
75
  }, "type" | "default"> & {
76
76
  type: PropType<unknown extends Defaults["transition"] ? NonNullable<string | (import('vue').TransitionProps & {
77
77
  is?: import('vue').Component | undefined;
78
- })> : Defaults["transition"] | NonNullable<NonNullable<string | (import('vue').TransitionProps & {
78
+ })> : NonNullable<NonNullable<string | (import('vue').TransitionProps & {
79
79
  is?: import('vue').Component | undefined;
80
- })>>>;
80
+ })>> | Defaults["transition"]>;
81
81
  default: unknown extends Defaults["transition"] ? NonNullable<string | (import('vue').TransitionProps & {
82
82
  is?: import('vue').Component | undefined;
83
- })> : Defaults["transition"] | NonNullable<NonNullable<string | (import('vue').TransitionProps & {
83
+ })> : NonNullable<NonNullable<string | (import('vue').TransitionProps & {
84
84
  is?: import('vue').Component | undefined;
85
- })>>;
85
+ })>> | Defaults["transition"];
86
86
  };
87
87
  items: unknown extends Defaults["items"] ? {
88
88
  type: PropType<any[]>;