yuyeon 0.2.3-rc.3 → 0.2.3-rc.5

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.
@@ -85,10 +85,11 @@ export const YSelect = defineComponent({
85
85
  const {
86
86
  t
87
87
  } = useI18n();
88
- const model = useModelDuplex(props, 'modelValue', [], v => toRefineItems(v === null ? [null] : wrapInArray(v)), v => {
88
+ const setOut = v => {
89
89
  const emitValue = toEmitItems(wrapInArray(v));
90
90
  return props.multiple ? emitValue : emitValue[0] ?? null;
91
- });
91
+ };
92
+ const model = useModelDuplex(props, 'modelValue', [], v => toRefineItems(v === null ? [null] : wrapInArray(v)), setOut);
92
93
  const selections = computed(() => {
93
94
  const ret = [];
94
95
  for (const v of model.value) {
@@ -150,21 +151,23 @@ export const YSelect = defineComponent({
150
151
  }
151
152
  }
152
153
  function select(item) {
154
+ let value;
153
155
  if (props.multiple) {
154
156
  const index = selections.value.findIndex(selectedItem => {
155
157
  return selectedItem.value === item.value;
156
158
  });
157
159
  if (index === -1) {
158
- model.value = [...model.value, item];
160
+ value = [...model.value, item];
159
161
  } else {
160
162
  const neo = model.value.slice();
161
163
  neo.splice(index, 1);
162
- model.value = neo;
164
+ value = neo;
163
165
  }
164
166
  } else {
165
- model.value = [item];
167
+ value = [item];
166
168
  }
167
- emit('change', model.rxValue);
169
+ model.value = value;
170
+ emit('change', setOut(value));
168
171
  }
169
172
  const displayText = computed(() => {
170
173
  if (props.multiple) {
@@ -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","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","slots","setup","_ref","attrs","expose","emit","fieldInputRef","menuRef","listRef","cardRef","focused","items","toRefineItems","toEmitItems","t","model","v","emitValue","selections","ret","found","find","undefined","push","selected","map","selection","extraMenuProps","preventCloseBubble","isSelected","selectedItem","onMousedownDisplay","event","disabled","onBlur","onClickItem","select","setTimeout","onAfterLeave","focus","closeCondition","target","layer$","content$","contains","index","findIndex","neo","slice","splice","rxValue","displayText","text","join","baseEl","scrollToActiveItem","length","listEl","activeEl","querySelector","contentEl","scrollEl","isSameNode","scrollTo","top","offsetTop","behavior","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","offset","align","origin","$event","base","_len","arguments","args","_key","selectionProps","raw","placeholder","internalItems","leading","_len2","_key2","trailing","label","_len3","_key3","_len4","_key4","menu","itemProps","hide","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import {\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, getObjectValueByPath, 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 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 model = useModelDuplex(\r\n props,\r\n 'modelValue',\r\n [],\r\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\r\n (v) => {\r\n const emitValue = toEmitItems(wrapInArray(v));\r\n return props.multiple ? emitValue : emitValue[0] ?? null;\r\n },\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) {\r\n return;\r\n }\r\n opened.value = !opened.value;\r\n }\r\n\r\n function onBlur(event: FocusEvent) {\r\n // if (listRef.value?.$el.contains(event.relatedTarget)) {\r\n // opened.value = false;\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 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 model.value = [...model.value, item];\r\n } else {\r\n const neo = model.value.slice();\r\n neo.splice(index, 1);\r\n model.value = neo;\r\n }\r\n } else {\r\n model.value = [item];\r\n }\r\n emit('change', model.rxValue);\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 <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 {...extraMenuProps.value}\r\n v-model={opened.value}\r\n >\r\n {{\r\n base: (...args: any[]) =>\r\n slots.base ? (\r\n slots.base?.(...args)\r\n ) : (\r\n <YFieldInput\r\n {...{\r\n ...fieldInputProps,\r\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\r\n }}\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 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 );\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 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\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","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","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","onBlur","onClickItem","select","setTimeout","onAfterLeave","focus","closeCondition","target","layer$","content$","contains","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","scrollToActiveItem","length","listEl","activeEl","querySelector","contentEl","scrollEl","isSameNode","scrollTo","top","offsetTop","behavior","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","offset","align","origin","$event","base","_len","arguments","args","_key","rxValue","selectionProps","raw","placeholder","internalItems","leading","_len2","_key2","trailing","label","_len3","_key3","_len4","_key4","menu","itemProps","hide","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import {\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, getObjectValueByPath, 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 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) {\r\n return;\r\n }\r\n opened.value = !opened.value;\r\n }\r\n\r\n function onBlur(event: FocusEvent) {\r\n // if (listRef.value?.$el.contains(event.relatedTarget)) {\r\n // opened.value = false;\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 <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 {...extraMenuProps.value}\r\n v-model={opened.value}\r\n >\r\n {{\r\n base: (...args: any[]) =>\r\n slots.base ? (\r\n slots.base?.(...args)\r\n ) : (\r\n <YFieldInput\r\n {...{\r\n ...fieldInputProps,\r\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\r\n }}\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 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 );\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 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\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,4 +1,4 @@
1
- import { computed, inject, provide, watchEffect } from 'vue';
1
+ import { computed, inject, provide, watch } from 'vue';
2
2
  import { useModelDuplex } from "../../../composables/communication.mjs";
3
3
  import { clamp } from "../../../util/common.mjs";
4
4
  import { propsFactory } from "../../../util/component/index.mjs";
@@ -39,7 +39,7 @@ export function providePagination(options) {
39
39
  if (pageSize.value === -1 || total.value === 0) return 1;
40
40
  return Math.ceil(total.value / pageSize.value);
41
41
  });
42
- watchEffect(() => {
42
+ watch([page, pageLength], () => {
43
43
  if (page.value > pageLength.value) {
44
44
  page.value = pageLength.value;
45
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.mjs","names":["computed","inject","provide","watchEffect","useModelDuplex","clamp","propsFactory","Y_DATA_TABLE_PAGINATION_KEY","Symbol","for","pressDataTablePaginationProps","page","type","Number","String","default","pageSize","createPagination","props","undefined","value","providePagination","options","total","startIndex","endIndex","Math","min","pageLength","ceil","setPageSize","noReset","nextPage","prevPage","setPage","data","usePagination","Error","description","usePaginatedItems","items","paginatedItems","slice"],"sources":["../../../../src/components/table/composibles/pagination.ts"],"sourcesContent":["import type { InjectionKey, PropType, Ref } from 'vue';\r\nimport { computed, inject, provide, watchEffect } from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { clamp } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { DataTableProvidePaginationData } from '../types';\r\n\r\nexport const Y_DATA_TABLE_PAGINATION_KEY: InjectionKey<{\r\n page: Ref<number>;\r\n pageSize: Ref<number>;\r\n startIndex: Ref<number>;\r\n endIndex: Ref<number>;\r\n pageLength: Ref<number>;\r\n total: Ref<number>;\r\n prevPage: () => void;\r\n nextPage: () => void;\r\n setPage: (page: number) => void;\r\n setPageSize: (size: number) => void;\r\n}> = Symbol.for('yuyeon.data-table.pagination');\r\n\r\nexport const pressDataTablePaginationProps = propsFactory(\r\n {\r\n page: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 1,\r\n },\r\n pageSize: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 10,\r\n },\r\n },\r\n 'YDataTable--pagination',\r\n);\r\n\r\ntype PaginationProps = {\r\n page: number | string;\r\n 'onUpdate:page': ((v: any) => void) | undefined;\r\n pageSize: number | string;\r\n 'onUpdate:pageSize': ((v: any) => void) | undefined;\r\n total?: number | string;\r\n};\r\n\r\nexport function createPagination(props: PaginationProps) {\r\n const page = useModelDuplex(\r\n props,\r\n 'page',\r\n undefined,\r\n (value) => +(value ?? 1),\r\n );\r\n const pageSize = useModelDuplex(\r\n props,\r\n 'pageSize',\r\n undefined,\r\n (value) => +(value ?? 10),\r\n );\r\n return { page, pageSize };\r\n}\r\n\r\nexport function providePagination(options: {\r\n page: Ref<number>;\r\n pageSize: Ref<number>;\r\n total: Ref<number>;\r\n}) {\r\n const { page, pageSize, total } = options;\r\n const startIndex = computed(() => {\r\n if (pageSize.value === -1) return 0;\r\n\r\n return pageSize.value * (page.value - 1);\r\n });\r\n const endIndex = computed(() => {\r\n if (pageSize.value === -1) return total.value;\r\n\r\n return Math.min(total.value, startIndex.value + pageSize.value);\r\n });\r\n\r\n const pageLength = computed(() => {\r\n if (pageSize.value === -1 || total.value === 0) return 1;\r\n\r\n return Math.ceil(total.value / pageSize.value);\r\n });\r\n\r\n watchEffect(() => {\r\n if (page.value > pageLength.value) {\r\n page.value = pageLength.value;\r\n }\r\n });\r\n\r\n function setPageSize(value: number, noReset?: boolean) {\r\n pageSize.value = value;\r\n if (!noReset) {\r\n page.value = 1;\r\n }\r\n }\r\n\r\n function nextPage() {\r\n page.value = clamp(page.value + 1, 1, pageLength.value);\r\n }\r\n\r\n function prevPage() {\r\n page.value = clamp(page.value - 1, 1, pageLength.value);\r\n }\r\n\r\n function setPage(value: number) {\r\n page.value = clamp(value, 1, pageLength.value);\r\n }\r\n\r\n const data: DataTableProvidePaginationData = {\r\n page,\r\n pageSize,\r\n startIndex,\r\n endIndex,\r\n pageLength,\r\n total,\r\n nextPage,\r\n prevPage,\r\n setPage,\r\n setPageSize,\r\n };\r\n\r\n provide(Y_DATA_TABLE_PAGINATION_KEY, data);\r\n\r\n return data;\r\n}\r\n\r\nexport function usePagination() {\r\n const data = inject(Y_DATA_TABLE_PAGINATION_KEY);\r\n if (!data) {\r\n throw new Error(`Not provided: ${Y_DATA_TABLE_PAGINATION_KEY.description}`);\r\n }\r\n return data;\r\n}\r\n\r\nexport function usePaginatedItems<T>(options: {\r\n items: Ref<readonly T[]>;\r\n startIndex: Ref<number>;\r\n endIndex: Ref<number>;\r\n pageSize: Ref<number>;\r\n}) {\r\n const { items, startIndex, endIndex, pageSize } = options;\r\n const paginatedItems = computed(() => {\r\n if (pageSize.value <= 0) return items.value;\r\n\r\n return items.value.slice(startIndex.value, endIndex.value);\r\n });\r\n\r\n return { paginatedItems };\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"pagination.mjs","names":["computed","inject","provide","watch","useModelDuplex","clamp","propsFactory","Y_DATA_TABLE_PAGINATION_KEY","Symbol","for","pressDataTablePaginationProps","page","type","Number","String","default","pageSize","createPagination","props","undefined","value","providePagination","options","total","startIndex","endIndex","Math","min","pageLength","ceil","setPageSize","noReset","nextPage","prevPage","setPage","data","usePagination","Error","description","usePaginatedItems","items","paginatedItems","slice"],"sources":["../../../../src/components/table/composibles/pagination.ts"],"sourcesContent":["import type { InjectionKey, PropType, Ref } from 'vue';\r\nimport { computed, inject, provide, watch } from 'vue';\r\n\r\nimport { useModelDuplex } from '@/composables/communication';\r\nimport { clamp } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { DataTableProvidePaginationData } from '../types';\r\n\r\nexport const Y_DATA_TABLE_PAGINATION_KEY: InjectionKey<{\r\n page: Ref<number>;\r\n pageSize: Ref<number>;\r\n startIndex: Ref<number>;\r\n endIndex: Ref<number>;\r\n pageLength: Ref<number>;\r\n total: Ref<number>;\r\n prevPage: () => void;\r\n nextPage: () => void;\r\n setPage: (page: number) => void;\r\n setPageSize: (size: number) => void;\r\n}> = Symbol.for('yuyeon.data-table.pagination');\r\n\r\nexport const pressDataTablePaginationProps = propsFactory(\r\n {\r\n page: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 1,\r\n },\r\n pageSize: {\r\n type: [Number, String] as PropType<number | string>,\r\n default: 10,\r\n },\r\n },\r\n 'YDataTable--pagination',\r\n);\r\n\r\ntype PaginationProps = {\r\n page: number | string;\r\n 'onUpdate:page': ((v: any) => void) | undefined;\r\n pageSize: number | string;\r\n 'onUpdate:pageSize': ((v: any) => void) | undefined;\r\n total?: number | string;\r\n};\r\n\r\nexport function createPagination(props: PaginationProps) {\r\n const page = useModelDuplex(\r\n props,\r\n 'page',\r\n undefined,\r\n (value) => +(value ?? 1),\r\n );\r\n const pageSize = useModelDuplex(\r\n props,\r\n 'pageSize',\r\n undefined,\r\n (value) => +(value ?? 10),\r\n );\r\n return { page, pageSize };\r\n}\r\n\r\nexport function providePagination(options: {\r\n page: Ref<number>;\r\n pageSize: Ref<number>;\r\n total: Ref<number>;\r\n}) {\r\n const { page, pageSize, total } = options;\r\n const startIndex = computed(() => {\r\n if (pageSize.value === -1) return 0;\r\n\r\n return pageSize.value * (page.value - 1);\r\n });\r\n\r\n const endIndex = computed(() => {\r\n if (pageSize.value === -1) return total.value;\r\n\r\n return Math.min(total.value, startIndex.value + pageSize.value);\r\n });\r\n\r\n const pageLength = computed(() => {\r\n if (pageSize.value === -1 || total.value === 0) return 1;\r\n\r\n return Math.ceil(total.value / pageSize.value);\r\n });\r\n\r\n watch([page, pageLength], () => {\r\n if (page.value > pageLength.value) {\r\n page.value = pageLength.value;\r\n }\r\n });\r\n\r\n function setPageSize(value: number, noReset?: boolean) {\r\n pageSize.value = value;\r\n if (!noReset) {\r\n page.value = 1;\r\n }\r\n }\r\n\r\n function nextPage() {\r\n page.value = clamp(page.value + 1, 1, pageLength.value);\r\n }\r\n\r\n function prevPage() {\r\n page.value = clamp(page.value - 1, 1, pageLength.value);\r\n }\r\n\r\n function setPage(value: number) {\r\n page.value = clamp(value, 1, pageLength.value);\r\n }\r\n\r\n const data: DataTableProvidePaginationData = {\r\n page,\r\n pageSize,\r\n startIndex,\r\n endIndex,\r\n pageLength,\r\n total,\r\n nextPage,\r\n prevPage,\r\n setPage,\r\n setPageSize,\r\n };\r\n\r\n provide(Y_DATA_TABLE_PAGINATION_KEY, data);\r\n\r\n return data;\r\n}\r\n\r\nexport function usePagination() {\r\n const data = inject(Y_DATA_TABLE_PAGINATION_KEY);\r\n if (!data) {\r\n throw new Error(`Not provided: ${Y_DATA_TABLE_PAGINATION_KEY.description}`);\r\n }\r\n return data;\r\n}\r\n\r\nexport function usePaginatedItems<T>(options: {\r\n items: Ref<readonly T[]>;\r\n startIndex: Ref<number>;\r\n endIndex: Ref<number>;\r\n pageSize: Ref<number>;\r\n}) {\r\n const { items, startIndex, endIndex, pageSize } = options;\r\n const paginatedItems = computed(() => {\r\n if (pageSize.value <= 0) return items.value;\r\n\r\n return items.value.slice(startIndex.value, endIndex.value);\r\n });\r\n\r\n return { paginatedItems };\r\n}\r\n"],"mappings":"AACA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,OAAO,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAE9CC,cAAc;AAAA,SACdC,KAAK;AAAA,SACLC,YAAY;AAIrB,OAAO,MAAMC,2BAWX,GAAGC,MAAM,CAACC,GAAG,CAAC,8BAA8B,CAAC;AAE/C,OAAO,MAAMC,6BAA6B,GAAGJ,YAAY,CACvD;EACEK,IAAI,EAAE;IACJC,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAA8B;IACnDC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRJ,IAAI,EAAE,CAACC,MAAM,EAAEC,MAAM,CAA8B;IACnDC,OAAO,EAAE;EACX;AACF,CAAC,EACD,wBACF,CAAC;AAUD,OAAO,SAASE,gBAAgBA,CAACC,KAAsB,EAAE;EACvD,MAAMP,IAAI,GAAGP,cAAc,CACzBc,KAAK,EACL,MAAM,EACNC,SAAS,EACRC,KAAK,IAAK,EAAEA,KAAK,IAAI,CAAC,CACzB,CAAC;EACD,MAAMJ,QAAQ,GAAGZ,cAAc,CAC7Bc,KAAK,EACL,UAAU,EACVC,SAAS,EACRC,KAAK,IAAK,EAAEA,KAAK,IAAI,EAAE,CAC1B,CAAC;EACD,OAAO;IAAET,IAAI;IAAEK;EAAS,CAAC;AAC3B;AAEA,OAAO,SAASK,iBAAiBA,CAACC,OAIjC,EAAE;EACD,MAAM;IAAEX,IAAI;IAAEK,QAAQ;IAAEO;EAAM,CAAC,GAAGD,OAAO;EACzC,MAAME,UAAU,GAAGxB,QAAQ,CAAC,MAAM;IAChC,IAAIgB,QAAQ,CAACI,KAAK,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;IAEnC,OAAOJ,QAAQ,CAACI,KAAK,IAAIT,IAAI,CAACS,KAAK,GAAG,CAAC,CAAC;EAC1C,CAAC,CAAC;EAEF,MAAMK,QAAQ,GAAGzB,QAAQ,CAAC,MAAM;IAC9B,IAAIgB,QAAQ,CAACI,KAAK,KAAK,CAAC,CAAC,EAAE,OAAOG,KAAK,CAACH,KAAK;IAE7C,OAAOM,IAAI,CAACC,GAAG,CAACJ,KAAK,CAACH,KAAK,EAAEI,UAAU,CAACJ,KAAK,GAAGJ,QAAQ,CAACI,KAAK,CAAC;EACjE,CAAC,CAAC;EAEF,MAAMQ,UAAU,GAAG5B,QAAQ,CAAC,MAAM;IAChC,IAAIgB,QAAQ,CAACI,KAAK,KAAK,CAAC,CAAC,IAAIG,KAAK,CAACH,KAAK,KAAK,CAAC,EAAE,OAAO,CAAC;IAExD,OAAOM,IAAI,CAACG,IAAI,CAACN,KAAK,CAACH,KAAK,GAAGJ,QAAQ,CAACI,KAAK,CAAC;EAChD,CAAC,CAAC;EAEFjB,KAAK,CAAC,CAACQ,IAAI,EAAEiB,UAAU,CAAC,EAAE,MAAM;IAC9B,IAAIjB,IAAI,CAACS,KAAK,GAAGQ,UAAU,CAACR,KAAK,EAAE;MACjCT,IAAI,CAACS,KAAK,GAAGQ,UAAU,CAACR,KAAK;IAC/B;EACF,CAAC,CAAC;EAEF,SAASU,WAAWA,CAACV,KAAa,EAAEW,OAAiB,EAAE;IACrDf,QAAQ,CAACI,KAAK,GAAGA,KAAK;IACtB,IAAI,CAACW,OAAO,EAAE;MACZpB,IAAI,CAACS,KAAK,GAAG,CAAC;IAChB;EACF;EAEA,SAASY,QAAQA,CAAA,EAAG;IAClBrB,IAAI,CAACS,KAAK,GAAGf,KAAK,CAACM,IAAI,CAACS,KAAK,GAAG,CAAC,EAAE,CAAC,EAAEQ,UAAU,CAACR,KAAK,CAAC;EACzD;EAEA,SAASa,QAAQA,CAAA,EAAG;IAClBtB,IAAI,CAACS,KAAK,GAAGf,KAAK,CAACM,IAAI,CAACS,KAAK,GAAG,CAAC,EAAE,CAAC,EAAEQ,UAAU,CAACR,KAAK,CAAC;EACzD;EAEA,SAASc,OAAOA,CAACd,KAAa,EAAE;IAC9BT,IAAI,CAACS,KAAK,GAAGf,KAAK,CAACe,KAAK,EAAE,CAAC,EAAEQ,UAAU,CAACR,KAAK,CAAC;EAChD;EAEA,MAAMe,IAAoC,GAAG;IAC3CxB,IAAI;IACJK,QAAQ;IACRQ,UAAU;IACVC,QAAQ;IACRG,UAAU;IACVL,KAAK;IACLS,QAAQ;IACRC,QAAQ;IACRC,OAAO;IACPJ;EACF,CAAC;EAED5B,OAAO,CAACK,2BAA2B,EAAE4B,IAAI,CAAC;EAE1C,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC9B,MAAMD,IAAI,GAAGlC,MAAM,CAACM,2BAA2B,CAAC;EAChD,IAAI,CAAC4B,IAAI,EAAE;IACT,MAAM,IAAIE,KAAK,CAAE,iBAAgB9B,2BAA2B,CAAC+B,WAAY,EAAC,CAAC;EAC7E;EACA,OAAOH,IAAI;AACb;AAEA,OAAO,SAASI,iBAAiBA,CAAIjB,OAKpC,EAAE;EACD,MAAM;IAAEkB,KAAK;IAAEhB,UAAU;IAAEC,QAAQ;IAAET;EAAS,CAAC,GAAGM,OAAO;EACzD,MAAMmB,cAAc,GAAGzC,QAAQ,CAAC,MAAM;IACpC,IAAIgB,QAAQ,CAACI,KAAK,IAAI,CAAC,EAAE,OAAOoB,KAAK,CAACpB,KAAK;IAE3C,OAAOoB,KAAK,CAACpB,KAAK,CAACsB,KAAK,CAAClB,UAAU,CAACJ,KAAK,EAAEK,QAAQ,CAACL,KAAK,CAAC;EAC5D,CAAC,CAAC;EAEF,OAAO;IAAEqB;EAAe,CAAC;AAC3B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuyeon",
3
- "version": "0.2.3-rc.3",
3
+ "version": "0.2.3-rc.5",
4
4
  "keywords": [
5
5
  "UI Library",
6
6
  "Vue"
@@ -93,13 +93,13 @@
93
93
  "babel-polyfill": "^6.26.0",
94
94
  "concurrently": "^4.1.1",
95
95
  "cross-env": "^7.0.3",
96
- "rollup": "^3.20.2",
96
+ "rollup": "^4.22.4",
97
97
  "rollup-plugin-dts": "^5.3.0",
98
98
  "rollup-plugin-sass": "^1.2.19",
99
99
  "rollup-plugin-sourcemaps": "^0.6.3",
100
100
  "rollup-plugin-terser": "^7.0.2",
101
101
  "sass": "^1.63.3",
102
- "vite": "^5.3.1",
102
+ "vite": "^5.4.6",
103
103
  "vite-plugin-dts": "^3.9.1",
104
104
  "vue-router": "^4.3.3",
105
105
  "vue-tsc": "^2.0.21"