yuyeon 0.2.3-rc.1 → 0.2.3-rc.10

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.
Files changed (83) hide show
  1. package/dist/yuyeon.js +3203 -3120
  2. package/dist/yuyeon.umd.cjs +3 -3
  3. package/lib/components/field-input/YFieldInput.mjs +3 -2
  4. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  5. package/lib/components/index.mjs +1 -0
  6. package/lib/components/index.mjs.map +1 -1
  7. package/lib/components/input/YInput.mjs +6 -2
  8. package/lib/components/input/YInput.mjs.map +1 -1
  9. package/lib/components/layer/YLayer.mjs +21 -17
  10. package/lib/components/layer/YLayer.mjs.map +1 -1
  11. package/lib/components/layer/base.mjs +2 -1
  12. package/lib/components/layer/base.mjs.map +1 -1
  13. package/lib/components/select/YSelect.mjs +32 -14
  14. package/lib/components/select/YSelect.mjs.map +1 -1
  15. package/lib/components/table/YDataTableBody.mjs +39 -14
  16. package/lib/components/table/YDataTableBody.mjs.map +1 -1
  17. package/lib/components/table/YDataTableControl.mjs.map +1 -1
  18. package/lib/components/table/YDataTableRow.mjs +29 -7
  19. package/lib/components/table/YDataTableRow.mjs.map +1 -1
  20. package/lib/components/table/YDataTableServer.mjs +3 -1
  21. package/lib/components/table/YDataTableServer.mjs.map +1 -1
  22. package/lib/components/table/composibles/pagination.mjs +6 -4
  23. package/lib/components/table/composibles/pagination.mjs.map +1 -1
  24. package/lib/components/tooltip/YTooltip.mjs +4 -4
  25. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  26. package/lib/composables/layer-group.mjs +4 -4
  27. package/lib/composables/layer-group.mjs.map +1 -1
  28. package/lib/directives/plate-wave/index.mjs +4 -1
  29. package/lib/directives/plate-wave/index.mjs.map +1 -1
  30. package/lib/i18n/built-in.mjs +2 -2
  31. package/lib/i18n/built-in.mjs.map +1 -1
  32. package/lib/index.mjs.map +1 -1
  33. package/lib/util/component/component.mjs +4 -0
  34. package/lib/util/component/component.mjs.map +1 -1
  35. package/package.json +120 -117
  36. package/types/components/checkbox/YCheckbox.d.ts +1 -1
  37. package/types/components/date-picker/YDateCalendar.d.ts +5 -5
  38. package/types/components/dialog/YDialog.d.ts +4937 -28
  39. package/types/components/draggable/YDraggable.d.ts +8 -8
  40. package/types/components/dropdown/YDropdown.d.ts +17 -11
  41. package/types/components/field-input/YFieldInput.d.ts +3 -3
  42. package/types/components/index.d.ts +1 -0
  43. package/types/components/input/YInput.d.ts +1 -1
  44. package/types/components/layer/YLayer.d.ts +1610 -11
  45. package/types/components/layer/active-stack.d.ts +1 -1
  46. package/types/components/layer/base.d.ts +9 -3
  47. package/types/components/menu/YMenu.d.ts +4916 -11
  48. package/types/components/pagination/YPagination.d.ts +3 -3
  49. package/types/components/panel/YDividePanel.d.ts +2 -2
  50. package/types/components/progress-bar/YProgressBar.d.ts +1 -1
  51. package/types/components/select/YSelect.d.ts +133 -101
  52. package/types/components/snackbar/YSnackbar.d.ts +11 -5
  53. package/types/components/tab/YTabs.d.ts +1 -1
  54. package/types/components/table/YDataTable.d.ts +12 -0
  55. package/types/components/table/YDataTableBody.d.ts +13 -1
  56. package/types/components/table/YDataTableRow.d.ts +24 -12
  57. package/types/components/table/YDataTableServer.d.ts +12 -0
  58. package/types/components/table/composibles/header.d.ts +38 -2
  59. package/types/components/table/composibles/measure.d.ts +6 -6
  60. package/types/components/table/composibles/pagination.d.ts +8 -8
  61. package/types/components/table/composibles/sorting.d.ts +3 -3
  62. package/types/components/textarea/YTextarea.d.ts +95 -5
  63. package/types/components/tooltip/YTooltip.d.ts +10 -6
  64. package/types/components/transitions/expand-transition.d.ts +5 -5
  65. package/types/components/transitions/index.d.ts +10 -10
  66. package/types/components/tree-view/YTreeView.d.ts +13 -13
  67. package/types/components/tree-view/YTreeViewNode.d.ts +4 -4
  68. package/types/composables/communication.d.ts +2 -2
  69. package/types/composables/coordinate/index.d.ts +1599 -6
  70. package/types/composables/defaults/index.d.ts +3 -3
  71. package/types/composables/focus.d.ts +1 -1
  72. package/types/composables/form.d.ts +17 -2
  73. package/types/composables/layer-group.d.ts +4 -2
  74. package/types/composables/progress.d.ts +1 -1
  75. package/types/composables/ref.d.ts +1 -1
  76. package/types/composables/resize-observer.d.ts +11 -1
  77. package/types/composables/theme/index.d.ts +7 -7
  78. package/types/composables/timing.d.ts +3 -3
  79. package/types/composables/validation.d.ts +3 -3
  80. package/types/mixins/di.d.ts +1 -1
  81. package/types/mixins/rebind-attrs.d.ts +1 -1
  82. package/types/shims.d.ts +2 -1
  83. package/types/util/anchor.d.ts +1 -1
@@ -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","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","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 },\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 }) {\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 }\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","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","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 {\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 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 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) {\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 <YMenu\n ref={menuRef}\n offset={props.offset}\n position={props.position}\n align={props.align}\n origin={props.origin}\n content-classes={['y-select__content']}\n maxHeight={props.maxHeight}\n open-on-click-base={false}\n onAfterLeave={onAfterLeave}\n open-delay={props.openDelay}\n close-delay={props.closeDelay}\n closeCondition={closeCondition}\n {...extraMenuProps.value}\n v-model={opened.value}\n >\n {{\n base: (...args: any[]) =>\n slots.base ? (\n slots.base?.(...args)\n ) : (\n <YFieldInput\n {...{\n ...fieldInputProps,\n ...mergeProps({ ...args[0].props }, { ref: fieldInputRef }),\n }}\n modelValue={model.value\n .map((v: any) => v.props.value)\n .join(', ')}\n validationValue={model.rxValue}\n onMousedown:display={onMousedownDisplay}\n 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 <div class={['y-select__selection']}>\n {slots.selection\n ? slots.selection?.(selectionProps)\n : selected.value.length > 0\n ? displayText.value\n : props.placeholder}\n </div>\n );\n },\n leading: slots.leading\n ? (...args: any[]) => slots.leading?.(...args)\n : undefined,\n trailing: (...args: any[]) => {\n return slots['dropdown-icon'] ? (\n slots['dropdown-icon']()\n ) : (\n <YIcon\n {...mergeProps(dropdownIconProps)}\n icon={props.dropdownIcon}\n class={['y-select__icon']}\n ></YIcon>\n );\n },\n label: slots.label\n ? (...args: any[]) => slots.label?.(...args)\n : undefined,\n 'helper-text': slots['helper-text']\n ? (...args: any[]) => slots['helper-text']?.(...args)\n : undefined,\n }}\n </YFieldInput>\n ),\n default: slots.menu\n ? () => slots.menu()\n : () => (\n <YCard ref={cardRef}>\n {slots['menu-prepend']?.()}\n {items.value.length > 0 ? (\n <YList ref={listRef}>\n {items.value.map((item) => {\n const itemProps = {\n item,\n selected: isSelected(item),\n select: () => {\n select(item);\n },\n };\n return withDirectives(\n <YListItem\n onClick={(e) => onClickItem(item, e)}\n class={[\n {\n 'y-list-item--active': isSelected(item),\n },\n ]}\n disabled={item.disabled}\n >\n {{\n default: () =>\n slots.item\n ? slots.item?.(itemProps)\n : item.text,\n leading:\n slots['item-leading'] &&\n (() => slots['item-leading']?.(itemProps)),\n trailing:\n slots['item-trailing'] &&\n (() => slots['item-trailing']?.(itemProps)),\n }}\n </YListItem>,\n [[vShow, !item.hide]],\n );\n })}\n </YList>\n ) : (\n <div class=\"y-select__no-options\">\n {t('$yuyeon.noItems')}\n </div>\n )}\n {slots['menu-append']?.()}\n </YCard>\n ),\n }}\n </YMenu>\n );\n });\n\n onMounted(() => {\n if (\n props.defaultSelect &&\n (props.modelValue === undefined ||\n (Array.isArray(props.modelValue) && props.modelValue.length === 0)) &&\n items.value?.length\n ) {\n select(items.value[0]);\n }\n });\n\n expose({\n fieldInputRef,\n baseEl,\n opened,\n });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n menuRef,\n baseEl,\n opened,\n };\n },\n});\n\nexport type YSelect = InstanceType<typeof YSelect>;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from "vue";
1
+ import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from "vue";
2
2
  import { mergeProps } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
4
  import { defineComponent, propsFactory } from "../../util/component/index.mjs";
@@ -21,14 +21,16 @@ export const pressYDataTableBodyProps = propsFactory({
21
21
  rowHeight: Number,
22
22
  'onClick:row': Function,
23
23
  'onDblclick:row': Function,
24
- 'onContextmenu:row': Function
24
+ 'onContextmenu:row': Function,
25
+ 'onMousedown:row': Function,
26
+ 'onKeydown:row': Function
25
27
  }, 'YDataTableBody');
26
28
  export const YDataTableBody = defineComponent({
27
29
  name: 'YDataTableBody',
28
30
  props: {
29
31
  ...pressYDataTableBodyProps()
30
32
  },
31
- emits: ['click:row'],
33
+ emits: ['click:row', 'dblclick:row', 'contextmenu:row', 'mousedown:row'],
32
34
  setup(props, _ref) {
33
35
  let {
34
36
  slots,
@@ -65,19 +67,34 @@ export const YDataTableBody = defineComponent({
65
67
  isSelected,
66
68
  toggleSelect
67
69
  };
68
- function onClick(event) {
70
+ function onClick(event, el) {
69
71
  props['onClick:row']?.(event, {
70
- ...stateProps
72
+ ...stateProps,
73
+ el
71
74
  });
72
75
  }
73
- function onDblclick(event) {
76
+ function onDblclick(event, el) {
74
77
  props['onDblclick:row']?.(event, {
75
- ...stateProps
78
+ ...stateProps,
79
+ el
76
80
  });
77
81
  }
78
- function onContextmenu(event) {
82
+ function onContextmenu(event, el) {
79
83
  props['onContextmenu:row']?.(event, {
80
- ...stateProps
84
+ ...stateProps,
85
+ el
86
+ });
87
+ }
88
+ function onMousedown(event, el) {
89
+ props['onMousedown:row']?.(event, {
90
+ ...stateProps,
91
+ el
92
+ });
93
+ }
94
+ function onKeydown(event, el) {
95
+ props['onKeydown:row']?.(event, {
96
+ ...stateProps,
97
+ el
81
98
  });
82
99
  }
83
100
  const slotProps = {
@@ -85,17 +102,25 @@ export const YDataTableBody = defineComponent({
85
102
  props: mergeProps({
86
103
  key: `item__${item.key ?? item.index}`,
87
104
  item,
88
- onClick,
89
- onDblclick,
90
- onContextmenu,
91
105
  index
92
106
  }, typeof props.rowProps === 'function' ? props.rowProps({
93
107
  item: stateProps.item,
94
108
  index: stateProps.index,
95
109
  internalItem: stateProps.internalItem
96
- }) : props.rowProps)
110
+ }) : props.rowProps),
111
+ onClick,
112
+ onContextmenu,
113
+ onDblclick,
114
+ onMousedown,
115
+ onKeydown
97
116
  };
98
- return _createVNode(_Fragment, null, [slots.item ? slots.item(slotProps) : _createVNode(YDataTableRow, slotProps.props, slots)]);
117
+ return _createVNode(_Fragment, null, [slots.item ? slots.item(slotProps) : _createVNode(YDataTableRow, _mergeProps(slotProps.props, {
118
+ "onClick": props['onClick:row'] && onClick,
119
+ "onContextmenu": props['onContextmenu:row'] && onContextmenu,
120
+ "onDblclick": props['onDblclick:row'] && onDblclick,
121
+ "onMousedown": props['onMousedown:row'] && onMousedown,
122
+ "onKeydown": props['onKeydown:row'] && onKeydown
123
+ }), slots)]);
99
124
  })]);
100
125
  });
101
126
 
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableBody.mjs","names":["mergeProps","useRender","defineComponent","propsFactory","YDataTableRow","useHeader","useSelection","pressYDataTableBodyProps","items","type","Array","default","loading","Boolean","String","loadingText","hideNoData","noDataText","rowProps","Function","Object","rowHeight","Number","YDataTableBody","name","props","emits","setup","_ref","slots","emit","columns","isSelected","toggleSelect","_createVNode","value","length","_Fragment","body","map","item","index","stateProps","raw","internalItem","onClick","event","onDblclick","onContextmenu","slotProps","key"],"sources":["../../../src/components/table/YDataTableBody.tsx"],"sourcesContent":["import { type PropType, mergeProps } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { defineComponent, propsFactory } from '@/util/component';\n\nimport { YDataTableRow } from './YDataTableRow';\nimport { useHeader } from './composibles/header';\nimport { useSelection } from './composibles/selection';\nimport { DataTableItem, RowProps } from './types';\n\nexport const pressYDataTableBodyProps = propsFactory(\n {\n items: {\n type: Array as PropType<readonly DataTableItem[]>,\n default: () => [],\n },\n loading: [Boolean, String],\n loadingText: String,\n hideNoData: Boolean,\n noDataText: {\n type: String,\n default: '',\n },\n rowProps: [Function, Object] as PropType<RowProps<any>>,\n rowHeight: Number,\n 'onClick:row': Function as PropType<(e: Event, value: any) => void>,\n 'onDblclick:row': Function as PropType<(e: Event, value: any) => void>,\n 'onContextmenu:row': Function as PropType<(e: Event, value: any) => void>,\n },\n 'YDataTableBody',\n);\n\nexport const YDataTableBody = defineComponent({\n name: 'YDataTableBody',\n props: {\n ...pressYDataTableBodyProps(),\n },\n emits: ['click:row'],\n setup(props, { slots, emit }) {\n const { columns } = useHeader();\n const { isSelected, toggleSelect } = useSelection();\n\n useRender(() => {\n if (props.loading) {\n return (\n <tr>\n <td colspan={columns.value.length} class={'y-data-table__loading'}>\n {slots.loading ? slots.loading() : <div>{props.loadingText}</div>}\n </td>\n </tr>\n );\n }\n if (!props.loading && props.items.length < 1 && !props.hideNoData) {\n return (\n <tr key=\"no-data\" class=\"y-data-table__no-data\">\n <td colspan={columns.value.length}>\n {slots['no-data']?.() ?? props.noDataText}\n </td>\n </tr>\n );\n }\n return (\n <>\n {slots.body\n ? slots.body?.(props)\n : props.items.map((item, index) => {\n const stateProps = {\n index,\n item: item.raw,\n internalItem: item,\n columns: columns.value,\n isSelected,\n toggleSelect,\n };\n\n function onClick(event: Event) {\n props['onClick:row']?.(event, { ...stateProps });\n }\n\n function onDblclick(event: Event) {\n props['onDblclick:row']?.(event, { ...stateProps });\n }\n\n function onContextmenu(event: Event) {\n props['onContextmenu:row']?.(event, {\n ...stateProps,\n });\n }\n\n const slotProps = {\n ...stateProps,\n props: mergeProps(\n {\n key: `item__${item.key ?? item.index}`,\n item,\n onClick,\n onDblclick,\n onContextmenu,\n index,\n },\n typeof props.rowProps === 'function'\n ? props.rowProps({\n item: stateProps.item,\n index: stateProps.index,\n internalItem: stateProps.internalItem,\n })\n : props.rowProps,\n ),\n };\n return (\n <>\n {slots.item ? (\n slots.item(slotProps)\n ) : (\n <YDataTableRow\n v-slots={slots}\n {...slotProps.props}\n ></YDataTableRow>\n )}\n </>\n );\n })}\n </>\n );\n });\n\n // end\n return {};\n },\n});\n\nexport type YDataTableBody = InstanceType<typeof YDataTableBody>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDataTableBody.mjs","names":["mergeProps","useRender","defineComponent","propsFactory","YDataTableRow","useHeader","useSelection","pressYDataTableBodyProps","items","type","Array","default","loading","Boolean","String","loadingText","hideNoData","noDataText","rowProps","Function","Object","rowHeight","Number","YDataTableBody","name","props","emits","setup","_ref","slots","emit","columns","isSelected","toggleSelect","_createVNode","value","length","_Fragment","body","map","item","index","stateProps","raw","internalItem","onClick","event","el","onDblclick","onContextmenu","onMousedown","onKeydown","slotProps","key","_mergeProps"],"sources":["../../../src/components/table/YDataTableBody.tsx"],"sourcesContent":["import { type PropType, mergeProps } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { defineComponent, propsFactory } from '@/util/component';\n\nimport { YDataTableRow } from './YDataTableRow';\nimport { useHeader } from './composibles/header';\nimport { useSelection } from './composibles/selection';\nimport { DataTableItem, RowProps } from './types';\n\nexport const pressYDataTableBodyProps = propsFactory(\n {\n items: {\n type: Array as PropType<readonly DataTableItem[]>,\n default: () => [],\n },\n loading: [Boolean, String],\n loadingText: String,\n hideNoData: Boolean,\n noDataText: {\n type: String,\n default: '',\n },\n rowProps: [Function, Object] as PropType<RowProps<any>>,\n rowHeight: Number,\n 'onClick:row': Function as PropType<(e: Event, value: any) => void>,\n 'onDblclick:row': Function as PropType<(e: Event, value: any) => void>,\n 'onContextmenu:row': Function as PropType<(e: Event, value: any) => void>,\n 'onMousedown:row': Function as PropType<(e: Event, value: any) => void>,\n 'onKeydown:row': Function as PropType<(e: Event, value: any) => void>,\n },\n 'YDataTableBody',\n);\n\nexport const YDataTableBody = defineComponent({\n name: 'YDataTableBody',\n props: {\n ...pressYDataTableBodyProps(),\n },\n emits: ['click:row', 'dblclick:row', 'contextmenu:row', 'mousedown:row'],\n setup(props, { slots, emit }) {\n const { columns } = useHeader();\n const { isSelected, toggleSelect } = useSelection();\n\n useRender(() => {\n if (props.loading) {\n return (\n <tr>\n <td colspan={columns.value.length} class={'y-data-table__loading'}>\n {slots.loading ? slots.loading() : <div>{props.loadingText}</div>}\n </td>\n </tr>\n );\n }\n if (!props.loading && props.items.length < 1 && !props.hideNoData) {\n return (\n <tr key=\"no-data\" class=\"y-data-table__no-data\">\n <td colspan={columns.value.length}>\n {slots['no-data']?.() ?? props.noDataText}\n </td>\n </tr>\n );\n }\n return (\n <>\n {slots.body\n ? slots.body?.(props)\n : props.items.map((item, index) => {\n const stateProps = {\n index,\n item: item.raw,\n internalItem: item,\n columns: columns.value,\n isSelected,\n toggleSelect,\n };\n\n function onClick(event: Event, el: null | Element) {\n props['onClick:row']?.(event, { ...stateProps, el });\n }\n\n function onDblclick(event: Event, el: null | Element) {\n props['onDblclick:row']?.(event, { ...stateProps, el });\n }\n\n function onContextmenu(event: Event, el: null | Element) {\n props['onContextmenu:row']?.(event, {\n ...stateProps,\n el,\n });\n }\n\n function onMousedown(event: Event, el: null | Element) {\n props['onMousedown:row']?.(event, { ...stateProps, el });\n }\n\n function onKeydown(event: Event, el: null | Element) {\n props['onKeydown:row']?.(event, { ...stateProps, el });\n }\n\n const slotProps = {\n ...stateProps,\n props: mergeProps(\n {\n key: `item__${item.key ?? item.index}`,\n item,\n index,\n },\n typeof props.rowProps === 'function'\n ? props.rowProps({\n item: stateProps.item,\n index: stateProps.index,\n internalItem: stateProps.internalItem,\n })\n : props.rowProps,\n ),\n onClick,\n onContextmenu,\n onDblclick,\n onMousedown,\n onKeydown,\n };\n\n return (\n <>\n {slots.item ? (\n slots.item(slotProps)\n ) : (\n <YDataTableRow\n v-slots={slots}\n {...slotProps.props}\n onClick={props['onClick:row'] && onClick}\n onContextmenu={\n props['onContextmenu:row'] && onContextmenu\n }\n onDblclick={props['onDblclick:row'] && onDblclick}\n onMousedown={props['onMousedown:row'] && onMousedown}\n onKeydown={props['onKeydown:row'] && onKeydown}\n ></YDataTableRow>\n )}\n </>\n );\n })}\n </>\n );\n });\n\n // end\n return {};\n },\n});\n\nexport type YDataTableBody = InstanceType<typeof YDataTableBody>;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableControl.mjs","names":["useRender","propsFactory","defineComponent","YButton","YFieldInput","YIconExpand","YIconPageControl","YPagination","pressDataTablePaginationProps","pressYDataTableControlPropsOptions","pageLength","Number","setPageSize","Function","setPage","YDataTableControl","name","components","props","setup","_ref","slots","_createVNode","prepend","default","_Fragment","page","append"],"sources":["../../../src/components/table/YDataTableControl.tsx"],"sourcesContent":["import { type PropType } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { propsFactory } from '@/util';\r\nimport { defineComponent } from '@/util/component';\r\n\r\nimport { YButton } from '../button';\r\nimport { YFieldInput } from '../field-input';\r\nimport { YIconExpand, YIconPageControl } from '../icons';\r\nimport { YPagination } from '../pagination';\r\nimport { pressDataTablePaginationProps } from './composibles/pagination';\r\n\r\nimport './YDataTableControl.scss';\r\n\r\nexport const pressYDataTableControlPropsOptions = propsFactory(\r\n {\r\n pageLength: Number as PropType<number>,\r\n setPageSize: Function as PropType<(pageSize: number) => void>,\r\n setPage: Function as PropType<(page: number) => void>,\r\n ...pressDataTablePaginationProps(),\r\n },\r\n 'YDataTableControl',\r\n);\r\n\r\nexport const YDataTableControl = defineComponent({\r\n name: 'YDataTableControl',\r\n components: {\r\n YButton,\r\n YIconExpand,\r\n YFieldInput,\r\n YIconPageControl,\r\n },\r\n props: pressYDataTableControlPropsOptions(),\r\n setup(props, { slots }) {\r\n useRender(() => {\r\n return (\r\n <footer class={['y-data-table-control']}>\r\n {slots.prepend?.(props)}\r\n {slots.default ? (\r\n slots.default()\r\n ) : (\r\n <>\r\n <div class=\"y-data-table-control__start\"></div>\r\n <div class=\"y-data-table-control__end\">\r\n <YPagination\r\n model-value={props.page}\r\n onUpdate:modelValue={props.setPage}\r\n length={props.pageLength}\r\n totalVisible={0}\r\n ></YPagination>\r\n </div>\r\n </>\r\n )}\r\n {slots.append?.(props)}\r\n </footer>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableControl = InstanceType<typeof YDataTableControl>;\r\n"],"mappings":";SAESA,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,eAAe;AAAA,SAEfC,OAAO;AAAA,SACPC,WAAW;AAAA,SACXC,WAAW,EAAEC,gBAAgB;AAAA,SAC7BC,WAAW;AAAA,SACXC,6BAA6B;AAEtC;AAEA,OAAO,MAAMC,kCAAkC,GAAGR,YAAY,CAC5D;EACES,UAAU,EAAEC,MAA0B;EACtCC,WAAW,EAAEC,QAAgD;EAC7DC,OAAO,EAAED,QAA4C;EACrD,GAAGL,6BAA6B,CAAC;AACnC,CAAC,EACD,mBACF,CAAC;AAED,OAAO,MAAMO,iBAAiB,GAAGb,eAAe,CAAC;EAC/Cc,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVd,OAAO;IACPE,WAAW;IACXD,WAAW;IACXE;EACF,CAAC;EACDY,KAAK,EAAET,kCAAkC,CAAC,CAAC;EAC3CU,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBpB,SAAS,CAAC,MAAM;MACd,OAAAsB,YAAA;QAAA,SACiB,CAAC,sBAAsB;MAAC,IACpCD,KAAK,CAACE,OAAO,GAAGL,KAAK,CAAC,EACtBG,KAAK,CAACG,OAAO,GACZH,KAAK,CAACG,OAAO,CAAC,CAAC,GAAAF,YAAA,CAAAG,SAAA,SAAAH,YAAA;QAAA;MAAA,UAAAA,YAAA;QAAA;MAAA,IAAAA,YAAA,CAAAf,WAAA;QAAA,eAMIW,KAAK,CAACQ,IAAI;QAAA,uBACFR,KAAK,CAACJ,OAAO;QAAA,UAC1BI,KAAK,CAACR,UAAU;QAAA,gBACV;MAAC,YAItB,EACAW,KAAK,CAACM,MAAM,GAAGT,KAAK,CAAC;IAG5B,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableControl.mjs","names":["useRender","propsFactory","defineComponent","YButton","YFieldInput","YIconExpand","YIconPageControl","YPagination","pressDataTablePaginationProps","pressYDataTableControlPropsOptions","pageLength","Number","setPageSize","Function","setPage","YDataTableControl","name","components","props","setup","_ref","slots","_createVNode","prepend","default","_Fragment","page","append"],"sources":["../../../src/components/table/YDataTableControl.tsx"],"sourcesContent":["import { type PropType } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { propsFactory } from '@/util';\nimport { defineComponent } from '@/util/component';\n\nimport { YButton } from '../button';\nimport { YFieldInput } from '../field-input';\nimport { YIconExpand, YIconPageControl } from '../icons';\nimport { YPagination } from '../pagination';\nimport { pressDataTablePaginationProps } from './composibles/pagination';\n\nimport './YDataTableControl.scss';\n\nexport const pressYDataTableControlPropsOptions = propsFactory(\n {\n pageLength: Number as PropType<number>,\n setPageSize: Function as PropType<(pageSize: number) => void>,\n setPage: Function as PropType<(page: number) => void>,\n ...pressDataTablePaginationProps(),\n },\n 'YDataTableControl',\n);\n\nexport const YDataTableControl = defineComponent({\n name: 'YDataTableControl',\n components: {\n YButton,\n YIconExpand,\n YFieldInput,\n YIconPageControl,\n },\n props: pressYDataTableControlPropsOptions(),\n setup(props, { slots }) {\n useRender(() => {\n return (\n <footer class={['y-data-table-control']}>\n {slots.prepend?.(props)}\n {slots.default ? (\n slots.default()\n ) : (\n <>\n <div class=\"y-data-table-control__start\"></div>\n <div class=\"y-data-table-control__end\">\n <YPagination\n model-value={props.page}\n onUpdate:modelValue={props.setPage}\n length={props.pageLength}\n totalVisible={0}\n ></YPagination>\n </div>\n </>\n )}\n {slots.append?.(props)}\n </footer>\n );\n });\n },\n});\n\nexport type YDataTableControl = InstanceType<typeof YDataTableControl>;\n"],"mappings":";SAESA,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,eAAe;AAAA,SAEfC,OAAO;AAAA,SACPC,WAAW;AAAA,SACXC,WAAW,EAAEC,gBAAgB;AAAA,SAC7BC,WAAW;AAAA,SACXC,6BAA6B;AAEtC;AAEA,OAAO,MAAMC,kCAAkC,GAAGR,YAAY,CAC5D;EACES,UAAU,EAAEC,MAA0B;EACtCC,WAAW,EAAEC,QAAgD;EAC7DC,OAAO,EAAED,QAA4C;EACrD,GAAGL,6BAA6B,CAAC;AACnC,CAAC,EACD,mBACF,CAAC;AAED,OAAO,MAAMO,iBAAiB,GAAGb,eAAe,CAAC;EAC/Cc,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVd,OAAO;IACPE,WAAW;IACXD,WAAW;IACXE;EACF,CAAC;EACDY,KAAK,EAAET,kCAAkC,CAAC,CAAC;EAC3CU,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBpB,SAAS,CAAC,MAAM;MACd,OAAAsB,YAAA;QAAA,SACiB,CAAC,sBAAsB;MAAC,IACpCD,KAAK,CAACE,OAAO,GAAGL,KAAK,CAAC,EACtBG,KAAK,CAACG,OAAO,GACZH,KAAK,CAACG,OAAO,CAAC,CAAC,GAAAF,YAAA,CAAAG,SAAA,SAAAH,YAAA;QAAA;MAAA,UAAAA,YAAA;QAAA;MAAA,IAAAA,YAAA,CAAAf,WAAA;QAAA,eAMIW,KAAK,CAACQ,IAAI;QAAA,uBACFR,KAAK,CAACJ,OAAO;QAAA,UAC1BI,KAAK,CAACR,UAAU;QAAA,gBACV;MAAC,YAItB,EACAW,KAAK,CAACM,MAAM,GAAGT,KAAK,CAAC;IAG5B,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
- import { computed } from 'vue';
2
+ import { computed, getCurrentInstance } from 'vue';
3
3
  import { useRender } from "../../composables/component.mjs";
4
4
  import { getPropertyFromItem } from "../../util/common.mjs";
5
5
  import { defineComponent } from "../../util/component/index.mjs";
@@ -10,10 +10,12 @@ import { useHeader } from "./composibles/header.mjs";
10
10
  import { useSelection } from "./composibles/selection.mjs";
11
11
  export const pressYDataTableRowProps = propsFactory({
12
12
  index: Number,
13
+ onHover: Function,
14
+ onMousedown: Function,
13
15
  onClick: Function,
14
- onContextmenu: Function,
15
16
  onDblclick: Function,
16
- onHover: Function
17
+ onContextmenu: Function,
18
+ onKeydown: Function
17
19
  }, 'YDataTableRow');
18
20
  export const YDataTableRow = defineComponent({
19
21
  name: 'YDataTableRow',
@@ -22,11 +24,13 @@ export const YDataTableRow = defineComponent({
22
24
  cellProps: [Object, Function],
23
25
  ...pressYDataTableRowProps()
24
26
  },
27
+ emits: ['hover', 'mousedown', 'click', 'dblclick', 'contextmenu'],
25
28
  setup(props, _ref) {
26
29
  let {
27
30
  emit,
28
31
  slots
29
32
  } = _ref;
33
+ const vm = getCurrentInstance();
30
34
  const {
31
35
  isSelected,
32
36
  toggleSelect
@@ -47,14 +51,31 @@ export const YDataTableRow = defineComponent({
47
51
  }
48
52
  return ret;
49
53
  }
54
+ function onMousedown(event) {
55
+ props.onMousedown?.(event, vm?.proxy?.$el);
56
+ }
57
+ function onClick(event) {
58
+ props.onClick?.(event, vm?.proxy?.$el);
59
+ }
60
+ function onContextmenu(event) {
61
+ props.onContextmenu?.(event, vm?.proxy?.$el);
62
+ }
63
+ function onDblclick(event) {
64
+ props.onDblclick?.(event, vm?.proxy?.$el);
65
+ }
66
+ function onKeydown(event) {
67
+ props.onKeydown?.(event, vm?.proxy?.$el);
68
+ }
50
69
  useRender(() => {
51
70
  return _createVNode("tr", {
52
71
  "class": ['y-data-table__row', {
53
72
  'y-data-table__row--selected': selected.value
54
73
  }],
55
- "onClick": props.onClick,
56
- "onContextmenu": props.onContextmenu,
57
- "onDblclick": props.onDblclick
74
+ "onClick": props.onClick && onClick,
75
+ "onContextmenu": props.onContextmenu && onContextmenu,
76
+ "onDblclick": props.onDblclick && onDblclick,
77
+ "onMousedown": props.onMousedown && onMousedown,
78
+ "onKeydown": props.onKeydown && onKeydown
58
79
  }, [props.item && columns.value.map((column, colIndex) => {
59
80
  const item = props.item;
60
81
  const slotProps = {
@@ -64,7 +85,8 @@ export const YDataTableRow = defineComponent({
64
85
  columns: columns.value,
65
86
  value: getPropertyFromItem(item.columns, column.key),
66
87
  selected: selected.value,
67
- toggleSelect
88
+ toggleSelect,
89
+ el: vm?.proxy?.$el
68
90
  };
69
91
  const classes = computed(() => {
70
92
  const ret = [];
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableRow.mjs","names":["computed","useRender","getPropertyFromItem","defineComponent","propsFactory","YIconCheckbox","YDataTableCell","useHeader","useSelection","pressYDataTableRowProps","index","Number","onClick","Function","onContextmenu","onDblclick","onHover","YDataTableRow","name","props","item","Object","cellProps","setup","_ref","emit","slots","isSelected","toggleSelect","columns","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","_createVNode","value","map","column","colIndex","slotProps","raw","internalItem","key","result","call","_mergeProps","align","fixed","lastFixed","undefined","fixedOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { type PropType, computed } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { defineComponent } from '@/util/component';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { YIconCheckbox } from '../icons';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from './composibles/header';\r\nimport { useSelection } from './composibles/selection';\r\nimport { CellProps, DataTableItem } from './types';\r\n\r\nexport const pressYDataTableRowProps = propsFactory(\r\n {\r\n index: Number as PropType<number>,\r\n onClick: Function as PropType<(...args: any[]) => void>,\r\n onContextmenu: Function as PropType<(...args: any[]) => void>,\r\n onDblclick: Function as PropType<(...args: any[]) => void>,\r\n onHover: Function as PropType<(...args: any[]) => void>,\r\n },\r\n 'YDataTableRow',\r\n);\r\n\r\nexport const YDataTableRow = defineComponent({\r\n name: 'YDataTableRow',\r\n props: {\r\n item: Object as PropType<DataTableItem>,\r\n cellProps: [Object, Function] as PropType<CellProps>,\r\n ...pressYDataTableRowProps(),\r\n },\r\n setup(props, { emit, slots }) {\r\n const { isSelected, toggleSelect } = useSelection();\r\n const { columns } = useHeader();\r\n\r\n const selected = computed(() => props.item && isSelected(props.item));\r\n\r\n function arrayClasses(classes: string | string[]) {\r\n const ret: string[] = [];\r\n if (typeof classes === 'string') {\r\n ret.push(classes);\r\n }\r\n if (Array.isArray(classes)) {\r\n classes.forEach((c) => {\r\n if (typeof c === 'string') ret.push(c);\r\n });\r\n }\r\n return ret;\r\n }\r\n\r\n useRender(() => {\r\n return (\r\n <tr\r\n class={[\r\n 'y-data-table__row',\r\n { 'y-data-table__row--selected': selected.value },\r\n ]}\r\n onClick={props.onClick as any}\r\n onContextmenu={props.onContextmenu as any}\r\n onDblclick={props.onDblclick as any}\r\n >\r\n {props.item &&\r\n columns.value.map((column, colIndex) => {\r\n const item = props.item!;\r\n const slotProps = {\r\n index: props.index!,\r\n item: props.item!.raw,\r\n internalItem: props.item!,\r\n columns: columns.value,\r\n value: getPropertyFromItem(item.columns, column.key),\r\n selected: selected.value,\r\n toggleSelect,\r\n };\r\n\r\n const classes = computed(() => {\r\n const ret: string[] = [];\r\n if (typeof column.classes === 'function') {\r\n const result = column.classes.call(\r\n null,\r\n slotProps.item,\r\n slotProps.index,\r\n column,\r\n );\r\n if (result) {\r\n ret.push(...arrayClasses(result));\r\n }\r\n } else if (column.classes) {\r\n ret.push(...arrayClasses(column.classes));\r\n }\r\n\r\n return ret;\r\n });\r\n\r\n const cellProps =\r\n typeof props.cellProps === 'function'\r\n ? props.cellProps({\r\n index: slotProps.index,\r\n column,\r\n internalItem: slotProps.internalItem,\r\n item: slotProps.item,\r\n value: slotProps.value,\r\n selected: slotProps.selected,\r\n })\r\n : props.cellProps;\r\n\r\n return (\r\n <YDataTableCell\r\n align={column.align}\r\n fixed={\r\n column.fixed\r\n ? column.lastFixed\r\n ? 'last'\r\n : 'lead'\r\n : undefined\r\n }\r\n fixedOffset={column.fixedOffset}\r\n width={column.width}\r\n maxWidth={column.maxWidth}\r\n class={[\r\n 'y-data-table-data',\r\n {\r\n 'y-data-table-data--select':\r\n column.key === 'data-table-select',\r\n },\r\n ...classes.value,\r\n ]}\r\n {...cellProps}\r\n >\r\n {{\r\n default: () => {\r\n const slotName = `item.${column.key}`;\r\n\r\n if (slots[slotName]) {\r\n return slots[slotName]?.(slotProps);\r\n }\r\n\r\n if (column.key === 'data-table-select') {\r\n return (\r\n slots['item.data-table-select']?.(slotProps) ?? (\r\n <YIconCheckbox\r\n checked={isSelected(item)}\r\n disabled={!item.selectable}\r\n {...{\r\n onClick: (e: MouseEvent) => {\r\n e.stopPropagation();\r\n if (item.selectable) toggleSelect(item);\r\n },\r\n }}\r\n ></YIconCheckbox>\r\n )\r\n );\r\n }\r\n\r\n return slotProps.value;\r\n },\r\n }}\r\n </YDataTableCell>\r\n );\r\n })}\r\n </tr>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDataTableRow.mjs","names":["computed","getCurrentInstance","useRender","getPropertyFromItem","defineComponent","propsFactory","YIconCheckbox","YDataTableCell","useHeader","useSelection","pressYDataTableRowProps","index","Number","onHover","Function","onMousedown","onClick","onDblclick","onContextmenu","onKeydown","YDataTableRow","name","props","item","Object","cellProps","emits","setup","_ref","emit","slots","vm","isSelected","toggleSelect","columns","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","event","proxy","$el","_createVNode","value","map","column","colIndex","slotProps","raw","internalItem","key","el","result","call","_mergeProps","align","fixed","lastFixed","undefined","fixedOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { type PropType, computed, getCurrentInstance } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { getPropertyFromItem } from '@/util/common';\nimport { defineComponent } from '@/util/component';\nimport { propsFactory } from '@/util/component';\n\nimport { YIconCheckbox } from '../icons';\nimport { YDataTableCell } from './YDataTableCell';\nimport { useHeader } from './composibles/header';\nimport { useSelection } from './composibles/selection';\nimport { CellProps, DataTableItem } from './types';\n\nexport const pressYDataTableRowProps = propsFactory(\n {\n index: Number as PropType<number>,\n onHover: Function as PropType<(...args: any[]) => void>,\n onMousedown: Function as PropType<(...args: any[]) => void>,\n onClick: Function as PropType<(...args: any[]) => void>,\n onDblclick: Function as PropType<(...args: any[]) => void>,\n onContextmenu: Function as PropType<(...args: any[]) => void>,\n onKeydown: Function as PropType<(...args: any[]) => void>,\n },\n 'YDataTableRow',\n);\n\nexport const YDataTableRow = defineComponent({\n name: 'YDataTableRow',\n props: {\n item: Object as PropType<DataTableItem>,\n cellProps: [Object, Function] as PropType<CellProps>,\n ...pressYDataTableRowProps(),\n },\n emits: ['hover', 'mousedown', 'click', 'dblclick', 'contextmenu'],\n setup(props, { emit, slots }) {\n const vm = getCurrentInstance();\n const { isSelected, toggleSelect } = useSelection();\n const { columns } = useHeader();\n\n const selected = computed(() => props.item && isSelected(props.item));\n\n function arrayClasses(classes: string | string[]) {\n const ret: string[] = [];\n if (typeof classes === 'string') {\n ret.push(classes);\n }\n if (Array.isArray(classes)) {\n classes.forEach((c) => {\n if (typeof c === 'string') ret.push(c);\n });\n }\n return ret;\n }\n\n function onMousedown(event: MouseEvent) {\n props.onMousedown?.(event, vm?.proxy?.$el);\n }\n\n function onClick(event: MouseEvent) {\n props.onClick?.(event, vm?.proxy?.$el);\n }\n\n function onContextmenu(event: MouseEvent) {\n props.onContextmenu?.(event, vm?.proxy?.$el);\n }\n\n function onDblclick(event: MouseEvent) {\n props.onDblclick?.(event, vm?.proxy?.$el);\n }\n\n function onKeydown(event: KeyboardEvent) {\n props.onKeydown?.(event, vm?.proxy?.$el);\n }\n\n useRender(() => {\n return (\n <tr\n class={[\n 'y-data-table__row',\n { 'y-data-table__row--selected': selected.value },\n ]}\n onClick={props.onClick && onClick}\n onContextmenu={props.onContextmenu && onContextmenu}\n onDblclick={props.onDblclick && onDblclick}\n onMousedown={props.onMousedown && onMousedown}\n onKeydown={props.onKeydown && onKeydown}\n >\n {props.item &&\n columns.value.map((column, colIndex) => {\n const item = props.item!;\n const slotProps = {\n index: props.index!,\n item: props.item!.raw,\n internalItem: props.item!,\n columns: columns.value,\n value: getPropertyFromItem(item.columns, column.key),\n selected: selected.value,\n toggleSelect,\n el: vm?.proxy?.$el,\n };\n\n const classes = computed(() => {\n const ret: string[] = [];\n if (typeof column.classes === 'function') {\n const result = column.classes.call(\n null,\n slotProps.item,\n slotProps.index,\n column,\n );\n if (result) {\n ret.push(...arrayClasses(result));\n }\n } else if (column.classes) {\n ret.push(...arrayClasses(column.classes));\n }\n\n return ret;\n });\n\n const cellProps =\n typeof props.cellProps === 'function'\n ? props.cellProps({\n index: slotProps.index,\n column,\n internalItem: slotProps.internalItem,\n item: slotProps.item,\n value: slotProps.value,\n selected: slotProps.selected,\n })\n : props.cellProps;\n\n return (\n <YDataTableCell\n align={column.align}\n fixed={\n column.fixed\n ? column.lastFixed\n ? 'last'\n : 'lead'\n : undefined\n }\n fixedOffset={column.fixedOffset}\n width={column.width}\n maxWidth={column.maxWidth}\n class={[\n 'y-data-table-data',\n {\n 'y-data-table-data--select':\n column.key === 'data-table-select',\n },\n ...classes.value,\n ]}\n {...cellProps}\n >\n {{\n default: () => {\n const slotName = `item.${column.key}`;\n\n if (slots[slotName]) {\n return slots[slotName]?.(slotProps);\n }\n\n if (column.key === 'data-table-select') {\n return (\n slots['item.data-table-select']?.(slotProps) ?? (\n <YIconCheckbox\n checked={isSelected(item)}\n disabled={!item.selectable}\n {...{\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n if (item.selectable) toggleSelect(item);\n },\n }}\n ></YIconCheckbox>\n )\n );\n }\n\n return slotProps.value;\n },\n }}\n </YDataTableCell>\n );\n })}\n </tr>\n );\n });\n },\n});\n\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\n"],"mappings":"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"}
@@ -149,7 +149,9 @@ export const YDataTableServer = defineComponent({
149
149
  }
150
150
  }), {
151
151
  top: () => slots.top?.(slotProps.value),
152
- leading: () => slots.leading ? slots.leading(slotProps.value) : _createVNode(_Fragment, null, [_createVNode(YDataTableLayer, null, slots)]),
152
+ leading: () => slots.leading ? slots.leading(slotProps.value) : _createVNode(_Fragment, null, [_createVNode(YDataTableLayer, {
153
+ "slotProps": slotProps.value
154
+ }, slots)]),
153
155
  default: () => slots.default ? slots.default(slotProps.value) : _createVNode(_Fragment, null, [_createVNode("thead", {
154
156
  "ref": headObserveRef
155
157
  }, [_createVNode(YDataTableHead, yDataTableHeadProps, slots)]), slots.thead?.(slotProps.value), _createVNode("tbody", null, [_createVNode(YDataTableBody, _mergeProps(yDataTableBodyProps, {
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableServer.mjs","names":["computed","provide","ref","toRef","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","toStyleSizeValue","pressDataTableProps","YDataTableBody","YDataTableControl","YDataTableHead","YDataTableLayer","YTable","createHeader","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","provideSelection","createSorting","provideSorting","pressDataTableServerProps","total","type","Number","String","required","YDataTableServer","name","components","props","emits","value","page","pageSize","sortBy","options","click:row","e","setup","_ref","slots","emit","multiSort","parseInt","columns","headers","enableSelect","items","toggleSort","pageLength","setPageSize","setPage","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","headRect","resizeObservedRef","headObserveRef","entries","requestAnimationFrame","contentRect","search","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","length","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend"],"sources":["../../../src/components/table/YDataTableServer.tsx"],"sourcesContent":["import { type PropType, computed, provide, ref, toRef } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { useResizeObserver } from '@/composables/resize-observer';\r\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\r\nimport { toStyleSizeValue } from '@/util/ui';\r\n\r\nimport { pressDataTableProps } from './YDataTable';\r\nimport { YDataTableBody } from './YDataTableBody';\r\nimport { YDataTableControl } from './YDataTableControl';\r\nimport { YDataTableHead } from './YDataTableHead';\r\nimport { YDataTableLayer } from './YDataTableLayer';\r\nimport { YTable } from './YTable';\r\nimport { createHeader } from './composibles/header';\r\nimport { useItems } from './composibles/items';\r\nimport { useOptions } from './composibles/options';\r\nimport {\r\n createPagination,\r\n pressDataTablePaginationProps,\r\n providePagination,\r\n} from './composibles/pagination';\r\nimport { provideSelection } from './composibles/selection';\r\nimport { createSorting, provideSorting } from './composibles/sorting';\r\nimport { YDataTableSlotProps } from './types';\r\n\r\nexport const pressDataTableServerProps = propsFactory(\r\n {\r\n total: {\r\n type: [Number, String] as PropType<number | string>,\r\n required: true,\r\n },\r\n ...pressDataTablePaginationProps(),\r\n ...pressDataTableProps(),\r\n },\r\n 'YDataTableServer',\r\n);\r\n\r\nexport const YDataTableServer = defineComponent({\r\n name: 'YDataTableServer',\r\n components: {\r\n YTable,\r\n YDataTableLayer,\r\n YDataTableHead,\r\n YDataTableBody,\r\n YDataTableControl,\r\n },\r\n props: {\r\n ...pressDataTableServerProps(),\r\n },\r\n emits: {\r\n 'update:modelValue': (value: any[]) => true,\r\n 'update:page': (page: number) => true,\r\n 'update:pageSize': (pageSize: number) => true,\r\n 'update:sortBy': (sortBy: any) => true,\r\n 'update:options': (options: any) => true,\r\n 'click:row': (e: Event, value: { row: any }) => true,\r\n },\r\n setup(props, { slots, emit }) {\r\n const { page, pageSize } = createPagination(props);\r\n const { sortBy, multiSort } = createSorting(props);\r\n const total = computed(() => parseInt(props.total as string));\r\n const { columns, headers } = createHeader(props, {\r\n enableSelect: toRef(props, 'enableSelect'),\r\n });\r\n const { items } = useItems(props, columns);\r\n\r\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\r\n const { pageLength, setPageSize, setPage } = providePagination({\r\n page,\r\n pageSize,\r\n total,\r\n });\r\n const {\r\n isSelected,\r\n select,\r\n selectAll,\r\n toggleSelect,\r\n someSelected,\r\n allSelected,\r\n } = provideSelection(props, { allItems: items, pageItems: items });\r\n\r\n const headRect = ref<DOMRectReadOnly>();\r\n const { resizeObservedRef: headObserveRef } = useResizeObserver(\r\n (entries) => {\r\n requestAnimationFrame(\r\n () => (headRect.value = entries?.[0].contentRect),\r\n );\r\n },\r\n );\r\n\r\n useOptions(\r\n {\r\n page,\r\n pageSize,\r\n search: toRef(props, 'search'),\r\n sortBy,\r\n },\r\n emit,\r\n );\r\n\r\n provide('y-data-table', {\r\n toggleSort,\r\n sortBy,\r\n headRect,\r\n });\r\n\r\n const slotProps = computed<YDataTableSlotProps>(() => {\r\n return {\r\n // pagination\r\n page: page.value,\r\n pageSize: pageSize.value,\r\n pageLength: pageLength.value,\r\n setPageSize,\r\n setPage,\r\n // sorting\r\n sortBy: sortBy.value,\r\n toggleSort,\r\n // selection\r\n someSelected: someSelected.value,\r\n allSelected: allSelected.value,\r\n isSelected,\r\n select,\r\n selectAll,\r\n toggleSelect,\r\n //\r\n items: items.value,\r\n columns: columns.value,\r\n headers: headers.value,\r\n };\r\n });\r\n\r\n useRender(() => {\r\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\r\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\r\n const yTableProps = chooseProps(props, YTable.props);\r\n return (\r\n <YTable\r\n class={[\r\n 'y-data-table',\r\n {\r\n 'y-data-table--no-data':\r\n !props.loading && props.items.length < 1 && !props.hideNoData,\r\n },\r\n ]}\r\n {...yTableProps}\r\n style={{\r\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\r\n }}\r\n >\r\n {{\r\n top: () => slots.top?.(slotProps.value),\r\n leading: () =>\r\n slots.leading ? (\r\n slots.leading(slotProps.value)\r\n ) : (\r\n <>\r\n <YDataTableLayer v-slots={slots}></YDataTableLayer>\r\n </>\r\n ),\r\n default: () =>\r\n slots.default ? (\r\n slots.default(slotProps.value)\r\n ) : (\r\n <>\r\n <thead ref={headObserveRef}>\r\n <YDataTableHead\r\n v-slots={slots}\r\n {...yDataTableHeadProps}\r\n ></YDataTableHead>\r\n </thead>\r\n {slots.thead?.(slotProps.value)}\r\n <tbody>\r\n <YDataTableBody\r\n v-slots={slots}\r\n {...yDataTableBodyProps}\r\n items={items.value}\r\n ></YDataTableBody>\r\n </tbody>\r\n {slots.tbody?.(slotProps.value)}\r\n {slots.tfoot?.(slotProps.value)}\r\n </>\r\n ),\r\n trailing: () => slots.trailing?.(slotProps.value),\r\n bottom: () =>\r\n slots.bottom ? (\r\n slots.bottom(slotProps.value)\r\n ) : (\r\n <YDataTableControl\r\n v-slots={{\r\n prepend: slots['control.prepend'],\r\n }}\r\n ></YDataTableControl>\r\n ),\r\n }}\r\n </YTable>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableServer = InstanceType<typeof YDataTableServer>;\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDataTableServer.mjs","names":["computed","provide","ref","toRef","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","toStyleSizeValue","pressDataTableProps","YDataTableBody","YDataTableControl","YDataTableHead","YDataTableLayer","YTable","createHeader","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","provideSelection","createSorting","provideSorting","pressDataTableServerProps","total","type","Number","String","required","YDataTableServer","name","components","props","emits","value","page","pageSize","sortBy","options","click:row","e","setup","_ref","slots","emit","multiSort","parseInt","columns","headers","enableSelect","items","toggleSort","pageLength","setPageSize","setPage","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","headRect","resizeObservedRef","headObserveRef","entries","requestAnimationFrame","contentRect","search","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","length","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend"],"sources":["../../../src/components/table/YDataTableServer.tsx"],"sourcesContent":["import { type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { pressDataTableProps } from './YDataTable';\nimport { YDataTableBody } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable } from './YTable';\nimport { createHeader } from './composibles/header';\nimport { useItems } from './composibles/items';\nimport { useOptions } from './composibles/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n} from './composibles/pagination';\nimport { provideSelection } from './composibles/selection';\nimport { createSorting, provideSorting } from './composibles/sorting';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableServerProps = propsFactory(\n {\n total: {\n type: [Number, String] as PropType<number | string>,\n required: true,\n },\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\n },\n 'YDataTableServer',\n);\n\nexport const YDataTableServer = defineComponent({\n name: 'YDataTableServer',\n components: {\n YTable,\n YDataTableLayer,\n YDataTableHead,\n YDataTableBody,\n YDataTableControl,\n },\n props: {\n ...pressDataTableServerProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n },\n setup(props, { slots, emit }) {\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const total = computed(() => parseInt(props.total as string));\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const { pageLength, setPageSize, setPage } = providePagination({\n page,\n pageSize,\n total,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n\n const headRect = ref<DOMRectReadOnly>();\n const { resizeObservedRef: headObserveRef } = useResizeObserver(\n (entries) => {\n requestAnimationFrame(\n () => (headRect.value = entries?.[0].contentRect),\n );\n },\n );\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n provide('y-data-table', {\n toggleSort,\n sortBy,\n headRect,\n });\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n //\n items: items.value,\n columns: columns.value,\n headers: headers.value,\n };\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer\n v-slots={slots}\n slotProps={slotProps.value}\n ></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n <tbody>\n <YDataTableBody\n v-slots={slots}\n {...yDataTableBodyProps}\n items={items.value}\n ></YDataTableBody>\n </tbody>\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n v-slots={{\n prepend: slots['control.prepend'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n },\n});\n\nexport type YDataTableServer = InstanceType<typeof YDataTableServer>;\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,14 +39,16 @@ 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
  }
46
46
  });
47
- function setPageSize(value) {
47
+ function setPageSize(value, noReset) {
48
48
  pageSize.value = value;
49
- page.value = 1;
49
+ if (!noReset) {
50
+ page.value = 1;
51
+ }
50
52
  }
51
53
  function nextPage() {
52
54
  page.value = clamp(page.value + 1, 1, pageLength.value);
@@ -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","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) {\r\n pageSize.value = value;\r\n page.value = 1;\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":"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"}