yuyeon 0.2.3-rc.2 → 0.2.3-rc.20

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 (108) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +3271 -3162
  3. package/dist/yuyeon.umd.cjs +3 -3
  4. package/lib/components/button/YButton.mjs +1 -0
  5. package/lib/components/button/YButton.mjs.map +1 -1
  6. package/lib/components/button/YButton.scss +9 -0
  7. package/lib/components/dialog/YDialog.mjs +2 -1
  8. package/lib/components/dialog/YDialog.mjs.map +1 -1
  9. package/lib/components/dropdown/YDropdown.mjs +9 -3
  10. package/lib/components/dropdown/YDropdown.mjs.map +1 -1
  11. package/lib/components/field-input/YFieldInput.mjs +7 -3
  12. package/lib/components/field-input/YFieldInput.mjs.map +1 -1
  13. package/lib/components/index.mjs +1 -0
  14. package/lib/components/index.mjs.map +1 -1
  15. package/lib/components/input/YInput.mjs +10 -3
  16. package/lib/components/input/YInput.mjs.map +1 -1
  17. package/lib/components/layer/YLayer.mjs +21 -17
  18. package/lib/components/layer/YLayer.mjs.map +1 -1
  19. package/lib/components/layer/base.mjs +2 -1
  20. package/lib/components/layer/base.mjs.map +1 -1
  21. package/lib/components/select/YSelect.mjs +124 -118
  22. package/lib/components/select/YSelect.mjs.map +1 -1
  23. package/lib/components/table/YDataTableBody.mjs +39 -14
  24. package/lib/components/table/YDataTableBody.mjs.map +1 -1
  25. package/lib/components/table/YDataTableCell.mjs +8 -4
  26. package/lib/components/table/YDataTableCell.mjs.map +1 -1
  27. package/lib/components/table/YDataTableHead.mjs +23 -11
  28. package/lib/components/table/YDataTableHead.mjs.map +1 -1
  29. package/lib/components/table/YDataTableRow.mjs +43 -15
  30. package/lib/components/table/YDataTableRow.mjs.map +1 -1
  31. package/lib/components/table/YDataTableServer.mjs +3 -1
  32. package/lib/components/table/YDataTableServer.mjs.map +1 -1
  33. package/lib/components/table/composibles/header.mjs +14 -4
  34. package/lib/components/table/composibles/header.mjs.map +1 -1
  35. package/lib/components/table/composibles/pagination.mjs +2 -2
  36. package/lib/components/table/composibles/pagination.mjs.map +1 -1
  37. package/lib/components/table/types/header.mjs.map +1 -1
  38. package/lib/components/table/types/index.mjs.map +1 -1
  39. package/lib/components/tooltip/YTooltip.mjs +4 -4
  40. package/lib/components/tooltip/YTooltip.mjs.map +1 -1
  41. package/lib/composables/layer-group.mjs +4 -4
  42. package/lib/composables/layer-group.mjs.map +1 -1
  43. package/lib/directives/plate-wave/index.mjs +4 -1
  44. package/lib/directives/plate-wave/index.mjs.map +1 -1
  45. package/lib/i18n/built-in.mjs +2 -2
  46. package/lib/i18n/built-in.mjs.map +1 -1
  47. package/lib/index.mjs.map +1 -1
  48. package/lib/util/component/component.mjs +4 -0
  49. package/lib/util/component/component.mjs.map +1 -1
  50. package/package.json +120 -117
  51. package/types/components/checkbox/YCheckbox.d.ts +1 -1
  52. package/types/components/checkbox/YInputCheckbox.d.ts +2 -2
  53. package/types/components/date-picker/YDateCalendar.d.ts +5 -5
  54. package/types/components/dialog/YDialog.d.ts +4938 -28
  55. package/types/components/draggable/YDraggable.d.ts +8 -8
  56. package/types/components/dropdown/YDropdown.d.ts +17 -11
  57. package/types/components/field-input/YFieldInput.d.ts +3 -3
  58. package/types/components/icons/YIconCheckbox.d.ts +1 -1
  59. package/types/components/icons/YIconPageControl.d.ts +1 -1
  60. package/types/components/icons/YIconSort.d.ts +1 -1
  61. package/types/components/icons/index.d.ts +5 -5
  62. package/types/components/index.d.ts +1 -0
  63. package/types/components/input/YInput.d.ts +1 -1
  64. package/types/components/layer/YLayer.d.ts +1610 -11
  65. package/types/components/layer/active-stack.d.ts +1 -1
  66. package/types/components/layer/base.d.ts +9 -3
  67. package/types/components/menu/YMenu.d.ts +4916 -11
  68. package/types/components/pagination/YPagination.d.ts +3 -3
  69. package/types/components/panel/YDividePanel.d.ts +2 -2
  70. package/types/components/progress-bar/YProgressBar.d.ts +1 -1
  71. package/types/components/select/YSelect.d.ts +129 -98
  72. package/types/components/snackbar/YSnackbar.d.ts +11 -5
  73. package/types/components/tab/YTabs.d.ts +1 -1
  74. package/types/components/table/YDataTable.d.ts +19 -7
  75. package/types/components/table/YDataTableBody.d.ts +13 -1
  76. package/types/components/table/YDataTableCell.d.ts +5 -1
  77. package/types/components/table/YDataTableRow.d.ts +24 -12
  78. package/types/components/table/YDataTableServer.d.ts +19 -7
  79. package/types/components/table/composibles/header.d.ts +50 -10
  80. package/types/components/table/composibles/measure.d.ts +6 -6
  81. package/types/components/table/composibles/pagination.d.ts +8 -8
  82. package/types/components/table/composibles/sorting.d.ts +3 -3
  83. package/types/components/table/types/header.d.ts +2 -1
  84. package/types/components/table/types/index.d.ts +1 -0
  85. package/types/components/text-highlighter/YTextHighlighter.d.ts +1 -1
  86. package/types/components/textarea/YTextarea.d.ts +95 -5
  87. package/types/components/tooltip/YTooltip.d.ts +10 -6
  88. package/types/components/transitions/expand-transition.d.ts +5 -5
  89. package/types/components/transitions/index.d.ts +10 -10
  90. package/types/components/tree-view/YTreeView.d.ts +13 -13
  91. package/types/components/tree-view/YTreeViewNode.d.ts +4 -4
  92. package/types/composables/communication.d.ts +2 -2
  93. package/types/composables/coordinate/index.d.ts +1599 -6
  94. package/types/composables/defaults/index.d.ts +3 -3
  95. package/types/composables/focus.d.ts +1 -1
  96. package/types/composables/form.d.ts +17 -2
  97. package/types/composables/layer-group.d.ts +4 -2
  98. package/types/composables/progress.d.ts +1 -1
  99. package/types/composables/ref.d.ts +1 -1
  100. package/types/composables/resize-observer.d.ts +11 -1
  101. package/types/composables/theme/index.d.ts +7 -7
  102. package/types/composables/timing.d.ts +3 -3
  103. package/types/composables/validation.d.ts +3 -3
  104. package/types/mixins/di.d.ts +1 -1
  105. package/types/mixins/rebind-attrs.d.ts +1 -1
  106. package/types/shims.d.ts +2 -1
  107. package/types/util/anchor.d.ts +1 -1
  108. package/types/util/component/component.d.ts +3 -2
@@ -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","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 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.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":";AAAA,SAGEA,QAAQ,EACRC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,GAAG,EACHC,UAAU,EACVC,KAAK,EACLC,KAAK,EACLC,cAAc,QACT,KAAK;AAAC,SAEJC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,oBAAoB;AAAA,SACpBC,OAAO;AAAA,SAGdC,0BAA0B,EAC1BC,QAAQ;AAAA,SAEDC,WAAW;AAAA,SACXC,SAAS,EAAwBC,IAAI;AAAA,SAE5CC,WAAW,EACXC,eAAe,EACfC,cAAc,EACdC,YAAY;AAAA,SAELC,eAAe;AAAA,SAEfC,KAAK;AAAA,SACLC,WAAW,EAAEC,4BAA4B;AAAA,SACzCC,KAAK;AAAA,SACLC,KAAK,EAAEC,SAAS;AAAA,SAChBC,KAAK;AAEd;AAQA,OAAO,MAAMC,uBAAuB,GAAGT,YAAY,CACjD;EACEU,MAAM,EAAEC,OAA4B;EACpCC,QAAQ,EAAED,OAAO;EACjBE,cAAc,EAAE;IACdC,IAAI,EAAEC,QAAoC;IAC1CC,OAAO,EAAErB;EACX,CAAC;EACDsB,aAAa,EAAEN,OAAO;EACtBO,SAAS,EAAE;IACTJ,IAAI,EAAEK;EACR,CAAC;EACD,GAAG3B,0BAA0B,CAAC;AAChC,CAAC,EACD,QACF,CAAC;AAED,OAAO,MAAM4B,wBAAwB,GAAGpB,YAAY,CAClD;EACEqB,SAAS,EAAE;IACTP,IAAI,EAAE,CAACQ,MAAM,EAAEC,MAAM,CAAC;IACtBP,OAAO,EAAE;EACX,CAAC;EACDQ,YAAY,EAAE;IACZV,IAAI,EAAE,CAACS,MAAM,EAAEE,KAAK,EAAEN,MAAM,CAA4B;IACxDH,OAAO,EAAE;EACX,CAAC;EACDU,SAAS,EAAE;IACTZ,IAAI,EAAEQ,MAA0B;IAChCN,OAAO,EAAE;EACX,CAAC;EACDW,UAAU,EAAE;IACVb,IAAI,EAAEQ,MAA0B;IAChCN,OAAO,EAAE;EACX,CAAC;EACD,GAAGP,uBAAuB,CAAC,CAAC;EAC5B,GAAGL,4BAA4B,CAAC,CAAC;EACjC,GAAGR,IAAI,CAACN,oBAAoB,CAAC;IAAEsC,QAAQ,EAAE;EAAqB,CAAC,CAAC,EAAE,CAChE,oBAAoB,CACrB;AACH,CAAC,EACD,SACF,CAAC;AAED,OAAO,MAAMC,OAAO,GAAG/B,eAAe,CAAC;EACrCgC,IAAI,EAAE,SAAS;EACfC,YAAY,EAAE,KAAK;EACnBC,KAAK,EAAE;IACL,GAAGZ,wBAAwB,CAAC;EAC9B,CAAC;EACDa,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAU,IAAK,IAAI;IACzC,eAAe,EAAGxB,MAAe,IAAK,IAAI;IAC1C,YAAY,EAAEyB,CAACC,IAAS,EAAEC,CAAa,KAAK,IAAI;IAChD,QAAQ,EAAGH,KAAU,IAAK;EAC5B,CAAC;EACDI,KAAK,EAAEnB,MAkBL;EACFoB,KAAKA,CAACP,KAAK,EAAAQ,IAAA,EAAkC;IAAA,IAAhC;MAAEF,KAAK;MAAEG,KAAK;MAAEC,MAAM;MAAEC;IAAK,CAAC,GAAAH,IAAA;IACzC,MAAMI,aAAa,GAAG7D,GAAG,CAAC,CAAC;IAC3B,MAAM8D,OAAO,GAAG9D,GAAG,CAA6B,CAAC;IACjD,MAAM+D,OAAO,GAAG/D,GAAG,CAA6B,CAAC;IACjD,MAAMgE,OAAO,GAAGhE,GAAG,CAAM,CAAC;IAE1B,MAAM2B,MAAM,GAAGtB,cAAc,CAAC4C,KAAK,EAAE,QAAQ,CAAC;IAC9C,MAAMgB,OAAO,GAAGhE,UAAU,CAAC,KAAK,CAAC;IAEjC,MAAM;MAAEiE,KAAK;MAAEC,aAAa;MAAEC;IAAY,CAAC,GAAG1D,QAAQ,CAACuC,KAAK,CAAC;IAC7D,MAAM;MAAEoB;IAAE,CAAC,GAAG7D,OAAO,CAAC,CAAC;IACvB,MAAM8D,KAAK,GAAGjE,cAAc,CAC1B4C,KAAK,EACL,YAAY,EACZ,EAAE,EACDsB,CAAC,IAAKJ,aAAa,CAACI,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG5D,WAAW,CAAC4D,CAAC,CAAC,CAAC,EACzDA,CAAC,IAAK;MACL,MAAMC,SAAS,GAAGJ,WAAW,CAACzD,WAAW,CAAC4D,CAAC,CAAC,CAAC;MAC7C,OAAOtB,KAAK,CAACpB,QAAQ,GAAG2C,SAAS,GAAGA,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI;IAC1D,CACF,CAAC;IAED,MAAMC,UAAU,GAAG7E,QAAQ,CAAa,MAAM;MAC5C,MAAM8E,GAAoB,GAAG,EAAE;MAC/B,KAAK,MAAMH,CAAC,IAAID,KAAK,CAACnB,KAAK,EAAE;QAC3B,MAAMwB,KAAK,GAAGT,KAAK,CAACf,KAAK,CAACyB,IAAI,CAAEvB,IAAI,IAAK;UACvC,OAAOJ,KAAK,CAACnB,cAAc,CAACuB,IAAI,CAACF,KAAK,EAAEoB,CAAC,CAACpB,KAAK,CAAC;QAClD,CAAC,CAAC;QACF,IAAIwB,KAAK,KAAKE,SAAS,EAAE;UACvBH,GAAG,CAACI,IAAI,CAACH,KAAK,CAAC;QACjB;MACF;MACA,OAAOD,GAAG;IACZ,CAAC,CAAC;IAEF,MAAMK,QAAQ,GAAGnF,QAAQ,CAAC,MAAM;MAC9B,OAAO6E,UAAU,CAACtB,KAAK,CAAC6B,GAAG,CAAEC,SAAS,IAAKA,SAAS,EAAEhC,KAAK,EAAEE,KAAK,CAAC;IACrE,CAAC,CAAC;IAEF,MAAM+B,cAAc,GAAGtF,QAAQ,CAAC,MAAM;MACpC,OAAO;QAAE,GAAGqD,KAAK,CAACd,SAAS;QAAEgD,kBAAkB,EAAE;MAAK,CAAC;IACzD,CAAC,CAAC;IAEF,SAASC,UAAUA,CAAC/B,IAAc,EAAE;MAClC,OAAO,CAAC,CAACoB,UAAU,CAACtB,KAAK,CAACyB,IAAI,CAAES,YAAY,IAAK;QAC/C,OAAOA,YAAY,EAAElC,KAAK,KAAKE,IAAI,CAACF,KAAK;MAC3C,CAAC,CAAC;IACJ;;IAEA;IACA,SAASmC,kBAAkBA,CAACC,KAAiB,EAAE;MAC7C,IAAItC,KAAK,CAACuC,QAAQ,EAAE;QAClB;MACF;MACA7D,MAAM,CAACwB,KAAK,GAAG,CAACxB,MAAM,CAACwB,KAAK;IAC9B;IAEA,SAASsC,MAAMA,CAACF,KAAiB,EAAE;MACjC;MACA;MACA;IAAA;;IAGF;IACA,SAASG,WAAWA,CAACrC,IAAc,EAAEC,CAAa,EAAE;MAClD,IAAID,IAAI,CAACmC,QAAQ,EAAE;MACnBG,MAAM,CAACtC,IAAI,CAAC;MACZ,IAAI,CAACJ,KAAK,CAACpB,QAAQ,EAAE;QACnB+D,UAAU,CAAC,MAAM;UACfjE,MAAM,CAACwB,KAAK,GAAG,KAAK;QACtB,CAAC,EAAE,EAAE,CAAC;MACR;IACF;IAEA,SAAS0C,YAAYA,CAAA,EAAG;MACtB,IAAI,CAAC5B,OAAO,CAACd,KAAK,EAAE;QAClBU,aAAa,CAACV,KAAK,EAAE2C,KAAK,CAAC,CAAC;MAC9B;IACF;IAEA,SAASC,cAAcA,CAACR,KAAiB,EAAE;MACzC,IAAIA,KAAK,CAACS,MAAM,IAAKlC,OAAO,CAACX,KAAK,EAAU8C,MAAM,EAAEC,QAAQ,EAAE;QAC5D,OAAQX,KAAK,CAACS,MAAM,EAAkBG,QAAQ,CAC3CrC,OAAO,CAACX,KAAK,EAAU8C,MAAM,EAAEC,QAClC,CAAC;MACH;IACF;IAEA,SAASP,MAAMA,CAACtC,IAAc,EAAE;MAC9B,IAAIJ,KAAK,CAACpB,QAAQ,EAAE;QAClB,MAAMuE,KAAK,GAAG3B,UAAU,CAACtB,KAAK,CAACkD,SAAS,CAAEhB,YAAY,IAAK;UACzD,OAAOA,YAAY,CAAClC,KAAK,KAAKE,IAAI,CAACF,KAAK;QAC1C,CAAC,CAAC;QACF,IAAIiD,KAAK,KAAK,CAAC,CAAC,EAAE;UAChB9B,KAAK,CAACnB,KAAK,GAAG,CAAC,GAAGmB,KAAK,CAACnB,KAAK,EAAEE,IAAI,CAAC;QACtC,CAAC,MAAM;UACL,MAAMiD,GAAG,GAAGhC,KAAK,CAACnB,KAAK,CAACoD,KAAK,CAAC,CAAC;UAC/BD,GAAG,CAACE,MAAM,CAACJ,KAAK,EAAE,CAAC,CAAC;UACpB9B,KAAK,CAACnB,KAAK,GAAGmD,GAAG;QACnB;MACF,CAAC,MAAM;QACLhC,KAAK,CAACnB,KAAK,GAAG,CAACE,IAAI,CAAC;MACtB;MACAO,IAAI,CAAC,QAAQ,EAAEU,KAAK,CAACnB,KAAK,CAAC;IAC7B;IAEA,MAAMsD,WAAW,GAAG7G,QAAQ,CAAC,MAAM;MACjC,IAAIqD,KAAK,CAACpB,QAAQ,EAAE;QAClB,OAAO4C,UAAU,CAACtB,KAAK,CAAC6B,GAAG,CAAE3B,IAAI,IAAKA,IAAI,CAACqD,IAAI,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;MAC7D;MACA,OAAOlC,UAAU,CAACtB,KAAK,GAAG,CAAC,CAAC,EAAEuD,IAAI,IAAI,EAAE;IAC1C,CAAC,CAAC;IAEF,MAAME,MAAM,GAAGhH,QAAQ,CAAC,MAAM;MAC5B,OAAOkE,OAAO,CAACX,KAAK,EAAEyD,MAAM;IAC9B,CAAC,CAAC;IAEFzG,KAAK,CAACwB,MAAM,EAAG2E,GAAG,IAAK;MACrB,IAAIA,GAAG,EAAE;QACPxG,QAAQ,CAAC,MAAM;UACb+G,kBAAkB,CAAC,CAAC;QACtB,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IAEF,SAASA,kBAAkBA,CAAA,EAAG;MAC5B,IAAIpC,UAAU,CAACtB,KAAK,CAAC2D,MAAM,KAAK,CAAC,EAAE;QACjC;MACF;MACA,MAAMC,MAAM,GAAG/F,cAAc,CAAC+C,OAAO,CAACZ,KAAK,CAAC;MAC5C,IAAI4D,MAAM,EAAE;QACV,MAAMC,QAAQ,GAAGD,MAAM,EAAEE,aAAa,CAAC,sBAAsB,CAEhD;QACb,MAAMC,SAAS,GAAIpD,OAAO,CAACX,KAAK,EAAU8C,MAAM,EAC5CC,QAAuB;QAC3B,IAAIc,QAAQ,IAAIE,SAAS,EAAE;UACzB,MAAMC,QAAQ,GAAGjG,eAAe,CAAC8F,QAAQ,CAAC;UAC1C,IACEG,QAAQ,KACPD,SAAS,CAACf,QAAQ,CAACgB,QAAQ,CAAC,IAAID,SAAS,CAACE,UAAU,CAACD,QAAQ,CAAC,CAAC,EAChE;YACAA,QAAQ,CAACE,QAAQ,CAAC;cAAEC,GAAG,EAAEN,QAAQ,CAACO,SAAS;cAAEC,QAAQ,EAAE;YAAS,CAAC,CAAC;UACpE;QACF;MACF;IACF;IAEAlH,SAAS,CAAC,MAAM;MACd,MAAMmH,eAAe,GAAG3G,WAAW,CAACmC,KAAK,EAAE7B,WAAW,CAAC6B,KAAK,CAAC;MAC7D,MAAMyE,iBAAiB,GAAG5G,WAAW,CACnC,OAAOmC,KAAK,CAACR,YAAY,KAAK,QAAQ,GAAGQ,KAAK,CAACR,YAAY,GAAG,CAAC,CAAC,EAChEnB,KAAK,CAAC2B,KACR,CAAC;MACD,OAAA0E,YAAA,CAAAlG,KAAA,EAAAmG,WAAA;QAAA,OAES9D,OAAO;QAAA,UACJb,KAAK,CAAC4E,MAAM;QAAA,YACV5E,KAAK,CAACJ,QAAQ;QAAA,SACjBI,KAAK,CAAC6E,KAAK;QAAA,UACV7E,KAAK,CAAC8E,MAAM;QAAA,mBACH,CAAC,mBAAmB,CAAC;QAAA,aAC3B9E,KAAK,CAACX,SAAS;QAAA,sBACN,KAAK;QAAA,gBACXuD,YAAY;QAAA,cACd5C,KAAK,CAACN,SAAS;QAAA,eACdM,KAAK,CAACL,UAAU;QAAA,kBACbmD;MAAc,GAC1Bb,cAAc,CAAC/B,KAAK;QAAA,cACfxB,MAAM,CAACwB,KAAK;QAAA,uBAAA6E,MAAA,IAAZrG,MAAM,CAACwB,KAAK,GAAA6E;MAAA;QAGnBC,IAAI,EAAE,SAAAA,CAAA;UAAA,SAAAC,IAAA,GAAAC,SAAA,CAAArB,MAAA,EAAIsB,IAAI,OAAA1F,KAAA,CAAAwF,IAAA,GAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;YAAJD,IAAI,CAAAC,IAAA,IAAAF,SAAA,CAAAE,IAAA;UAAA;UAAA,OACZ9E,KAAK,CAAC0E,IAAI,GACR1E,KAAK,CAAC0E,IAAI,GAAG,GAAGG,IAAI,CAAC,GAAAT,YAAA,CAAAvG,WAAA,EAAAwG,WAAA;YAIjB,GAAGH,eAAe;YAClB,GAAG5H,UAAU,CAAC;cAAE,GAAGuI,IAAI,CAAC,CAAC,CAAC,CAACnF;YAAM,CAAC,EAAE;cAAEjD,GAAG,EAAE6D;YAAc,CAAC;UAAC;YAAA,cAEjDS,KAAK,CAACnB,KAAK,CACpB6B,GAAG,CAAET,CAAM,IAAKA,CAAC,CAACtB,KAAK,CAACE,KAAK,CAAC,CAC9BwD,IAAI,CAAC,IAAI,CAAC;YAAA,mBACIrC,KAAK,CAACgE,OAAO;YAAA,uBACThD,kBAAkB;YAAA,UAC/BG,MAAM;YAAA;YAAA,SAEP,CACL,UAAU,EACV;cACE,kBAAkB,EAAE9D,MAAM,CAACwB,KAAK;cAChC,oBAAoB,EAAE4B,QAAQ,CAAC5B,KAAK,CAAC2D,MAAM,GAAG;YAChD,CAAC;UACF,GACGpD,KAAK;YAAA,WACAO,OAAO,CAACd;UAAK;YAGpBlB,OAAO,EAAEA,CAAA,KAAM;cACb,MAAMsG,cAAc,GAAG;gBACrBrE,KAAK,EAAEO,UAAU,CAACtB,KAAK,CAAC6B,GAAG,CAAE3B,IAAI,IAAKA,IAAI,CAACmF,GAAG,CAAC;gBAC/C/B,WAAW,EAAEA,WAAW,CAACtD,KAAK;gBAC9BsF,WAAW,EAAExF,KAAK,CAACwF,WAAW;gBAC9BC,aAAa,EAAEjE,UAAU,CAACtB;cAC5B,CAAC;cACD,OAAAwE,YAAA;gBAAA,SACc,CAAC,qBAAqB;cAAC,IAChCpE,KAAK,CAAC0B,SAAS,GACZ1B,KAAK,CAAC0B,SAAS,GAAGsD,cAAc,CAAC,GACjCxD,QAAQ,CAAC5B,KAAK,CAAC2D,MAAM,GAAG,CAAC,GACvBL,WAAW,CAACtD,KAAK,GACjBF,KAAK,CAACwF,WAAW;YAG7B,CAAC;YACDE,OAAO,EAAEpF,KAAK,CAACoF,OAAO,GAClB;cAAA,SAAAC,KAAA,GAAAT,SAAA,CAAArB,MAAA,EAAIsB,IAAI,OAAA1F,KAAA,CAAAkG,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;gBAAJT,IAAI,CAAAS,KAAA,IAAAV,SAAA,CAAAU,KAAA;cAAA;cAAA,OAAYtF,KAAK,CAACoF,OAAO,GAAG,GAAGP,IAAI,CAAC;YAAA,IAC5CvD,SAAS;YACbiE,QAAQ,EAAE,SAAAA,CAAA,EAAoB;cAC5B,OAAOvF,KAAK,CAAC,eAAe,CAAC,GAC3BA,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAAoE,YAAA,CAAArG,KAAA,EAAAsG,WAAA,CAGlB/H,UAAU,CAAC6H,iBAAiB,CAAC;gBAAA,QAC3BzE,KAAK,CAACR,YAAY;gBAAA,SACjB,CAAC,gBAAgB;cAAC,SAE5B;YACH,CAAC;YACDsG,KAAK,EAAExF,KAAK,CAACwF,KAAK,GACd;cAAA,SAAAC,KAAA,GAAAb,SAAA,CAAArB,MAAA,EAAIsB,IAAI,OAAA1F,KAAA,CAAAsG,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;gBAAJb,IAAI,CAAAa,KAAA,IAAAd,SAAA,CAAAc,KAAA;cAAA;cAAA,OAAY1F,KAAK,CAACwF,KAAK,GAAG,GAAGX,IAAI,CAAC;YAAA,IAC1CvD,SAAS;YACb,aAAa,EAAEtB,KAAK,CAAC,aAAa,CAAC,GAC/B;cAAA,SAAA2F,KAAA,GAAAf,SAAA,CAAArB,MAAA,EAAIsB,IAAI,OAAA1F,KAAA,CAAAwG,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;gBAAJf,IAAI,CAAAe,KAAA,IAAAhB,SAAA,CAAAgB,KAAA;cAAA;cAAA,OAAY5F,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG6E,IAAI,CAAC;YAAA,IACnDvD;UAAS,EAGlB;QAAA;QACH5C,OAAO,EAAEsB,KAAK,CAAC6F,IAAI,GACf,MAAM7F,KAAK,CAAC6F,IAAI,CAAC,CAAC,GAClB,MAAAzB,YAAA,CAAAxG,KAAA;UAAA,OACc6C;QAAO;UAAA/B,OAAA,EAAAA,CAAA,MAChBsB,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EACzBW,KAAK,CAACf,KAAK,CAAC2D,MAAM,GAAG,CAAC,GAAAa,YAAA,CAAApG,KAAA;YAAA,OACTwC;UAAO;YAAA9B,OAAA,EAAAA,CAAA,MAChBiC,KAAK,CAACf,KAAK,CAAC6B,GAAG,CAAE3B,IAAI,IAAK;cACzB,MAAMgG,SAAS,GAAG;gBAChBhG,IAAI;gBACJ0B,QAAQ,EAAEK,UAAU,CAAC/B,IAAI,CAAC;gBAC1BsC,MAAM,EAAEA,CAAA,KAAM;kBACZA,MAAM,CAACtC,IAAI,CAAC;gBACd;cACF,CAAC;cACD,OAAOjD,cAAc,CAAAuH,YAAA,CAAAnG,SAAA;gBAAA,WAEP8B,CAAC,IAAKoC,WAAW,CAACrC,IAAI,EAAEC,CAAC,CAAC;gBAAA,SAC7B,CACL;kBACE,qBAAqB,EAAE8B,UAAU,CAAC/B,IAAI;gBACxC,CAAC,CACF;gBAAA,YACSA,IAAI,CAACmC;cAAQ;gBAGrBvD,OAAO,EAAEA,CAAA,KACPsB,KAAK,CAACF,IAAI,GACNE,KAAK,CAACF,IAAI,GAAGgG,SAAS,CAAC,GACvBhG,IAAI,CAACqD,IAAI;gBACfiC,OAAO,EACLpF,KAAK,CAAC,cAAc,CAAC,KACpB,MAAMA,KAAK,CAAC,cAAc,CAAC,GAAG8F,SAAS,CAAC,CAAC;gBAC5CP,QAAQ,EACNvF,KAAK,CAAC,eAAe,CAAC,KACrB,MAAMA,KAAK,CAAC,eAAe,CAAC,GAAG8F,SAAS,CAAC;cAAC,IAGjD,CAAC,CAACnJ,KAAK,EAAE,CAACmD,IAAI,CAACiG,IAAI,CAAC,CACtB,CAAC;YACH,CAAC,CAAC;UAAA,KAAA3B,YAAA;YAAA;UAAA,IAIDtD,CAAC,CAAC,iBAAiB,CAAC,EAExB,EACAd,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC;QAAA;MAE5B;IAIb,CAAC,CAAC;IAEFxD,SAAS,CAAC,MAAM;MACd,IACEkD,KAAK,CAACf,aAAa,KAClBe,KAAK,CAACsG,UAAU,KAAK1E,SAAS,IAC5BnC,KAAK,CAAC8G,OAAO,CAACvG,KAAK,CAACsG,UAAU,CAAC,IAAItG,KAAK,CAACsG,UAAU,CAACzC,MAAM,KAAK,CAAE,CAAC,IACrE5C,KAAK,CAACf,KAAK,EAAE2D,MAAM,EACnB;QACAnB,MAAM,CAACzB,KAAK,CAACf,KAAK,CAAC,CAAC,CAAC,CAAC;MACxB;IACF,CAAC,CAAC;IAEFQ,MAAM,CAAC;MACLE,aAAa;MACb+C,MAAM;MACNjF;IACF,CAAC,CAAC;IAEF,OAAO;MACLkC,aAAa;MACbS,KAAK;MACLG,UAAU;MACVM,QAAQ;MACRjB,OAAO;MACP8C,MAAM;MACNjF;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YSelect.mjs","names":["computed","mergeProps","nextTick","onMounted","ref","shallowRef","vShow","watch","withDirectives","useModelDuplex","useRender","pressCoordinateProps","useI18n","pressListItemsPropsOptions","useItems","wrapInArray","deepEqual","omit","chooseProps","defineComponent","getHtmlElement","propsFactory","getScrollParent","YCard","YFieldInput","pressYFieldInputPropsOptions","YIcon","YList","YListItem","YMenu","pressSelectPropsOptions","opened","Boolean","closeOnBlur","multiple","itemComparator","type","Function","default","defaultSelect","menuProps","Object","pressYSelectPropsOptions","maxHeight","Number","String","dropdownIcon","Array","openDelay","closeDelay","position","YSelect","name","inheritAttrs","props","emits","value","click:item","item","e","change","slots","setup","_ref","attrs","expose","emit","fieldInputRef","menuRef","listRef","cardRef","focused","items","toRefineItems","toEmitItems","t","setOut","v","emitValue","model","selections","ret","found","find","undefined","push","selected","map","selection","extraMenuProps","preventCloseBubble","isSelected","selectedItem","onMousedownDisplay","event","disabled","onKeydownDisplay","console","log","key","onBlur","requestAnimationFrame","contentEl","layer$","content$","contains","document","activeElement","onClickItem","select","setTimeout","onAfterLeave","closeCondition","target","index","findIndex","neo","slice","splice","displayText","text","join","baseEl","scrollToActiveItem","length","listEl","activeEl","querySelector","scrollEl","isSameNode","scrollTo","top","offsetTop","behavior","fieldInputProps","dropdownIconProps","_createVNode","_mergeProps","rxValue","selectionProps","raw","placeholder","internalItems","_Fragment","offset","align","origin","$event","menu","itemProps","leading","trailing","hide","_len","arguments","args","_key","label","_len2","_key2","_len3","_key3","modelValue","isArray"],"sources":["../../../src/components/select/YSelect.tsx"],"sourcesContent":["import {\n type PropType,\n type SlotsType,\n computed,\n mergeProps,\n nextTick,\n onMounted,\n ref,\n shallowRef,\n vShow,\n watch,\n withDirectives,\n} from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { pressCoordinateProps } from '@/composables/coordinate';\nimport { useI18n } from '@/composables/i18n';\nimport {\n ListItem,\n pressListItemsPropsOptions,\n useItems,\n} from '@/composables/list-items';\nimport { wrapInArray } from '@/util/array';\nimport { deepEqual, omit } from '@/util/common';\nimport {\n chooseProps,\n defineComponent,\n getHtmlElement,\n propsFactory,\n} from '@/util/component';\nimport { getScrollParent } from '@/util/scroll';\n\nimport { YCard } from '../card';\nimport { YFieldInput, pressYFieldInputPropsOptions } from '../field-input';\nimport { YIcon, YIconIconProp } from '../icon';\nimport { YList, YListItem } from '../list';\nimport { YMenu } from '../menu';\n\nimport './YSelect.scss';\n\nexport type ItemComparator = (\n optionsItem: any,\n valueItem: any,\n valueKey?: string,\n) => boolean;\n\nexport const pressSelectPropsOptions = propsFactory(\n {\n opened: Boolean as PropType<boolean>,\n closeOnBlur: Boolean as PropType<boolean>,\n multiple: Boolean,\n itemComparator: {\n type: Function as PropType<ItemComparator>,\n default: deepEqual,\n },\n defaultSelect: Boolean,\n menuProps: {\n type: Object as PropType<YMenu['$props']>,\n },\n ...pressListItemsPropsOptions(),\n },\n 'Select',\n);\n\nexport const pressYSelectPropsOptions = propsFactory(\n {\n maxHeight: {\n type: [Number, String],\n default: 310,\n },\n dropdownIcon: {\n type: [String, Array, Object] as PropType<YIconIconProp>,\n default: '$dropdown',\n },\n openDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n closeDelay: {\n type: Number as PropType<number>,\n default: 200,\n },\n ...pressSelectPropsOptions(),\n ...pressYFieldInputPropsOptions(),\n ...omit(pressCoordinateProps({ position: 'bottom' as 'bottom' }), [\n 'coordinateStrategy',\n ]),\n },\n 'YSelect',\n);\n\nexport const YSelect = defineComponent({\n name: 'YSelect',\n inheritAttrs: false,\n props: {\n ...pressYSelectPropsOptions(),\n },\n emits: {\n 'update:modelValue': (value: any) => true,\n 'update:opened': (opened: boolean) => true,\n 'click:item': (item: any, e: MouseEvent) => true,\n change: (value: any) => true,\n },\n slots: Object as SlotsType<{\n base: any;\n selection: {\n displayText: string;\n placeholder: undefined | string;\n items: any[];\n internalItems: ListItem[];\n };\n leading: any;\n label: any;\n 'helper-text': any;\n menu: any;\n 'menu-prepend': any;\n 'menu-append': any;\n 'dropdown-icon': any;\n item: { item: any; selected: boolean; select: () => void };\n 'item-leading': { item: any; selected: boolean; select: () => void };\n 'item-trailing': { item: any; selected: boolean; select: () => void };\n }>,\n setup(props, { slots, attrs, expose, emit }) {\n const fieldInputRef = ref();\n const menuRef = ref<InstanceType<typeof YMenu>>();\n const listRef = ref<InstanceType<typeof YList>>();\n const cardRef = ref<any>();\n\n const opened = useModelDuplex(props, 'opened');\n const focused = shallowRef(false);\n\n const { items, toRefineItems, toEmitItems } = useItems(props);\n const { t } = useI18n();\n const setOut = (v: any) => {\n const emitValue = toEmitItems(wrapInArray(v));\n return props.multiple ? emitValue : emitValue[0] ?? null;\n };\n const model = useModelDuplex(\n props,\n 'modelValue',\n [],\n (v) => toRefineItems(v === null ? [null] : wrapInArray(v)),\n setOut,\n );\n\n const selections = computed<ListItem[]>(() => {\n const ret: ListItem<any>[] = [];\n for (const v of model.value) {\n const found = items.value.find((item) => {\n return props.itemComparator(item.value, v.value);\n });\n if (found !== undefined) {\n ret.push(found);\n }\n }\n return ret;\n });\n\n const selected = computed(() => {\n return selections.value.map((selection) => selection?.props?.value);\n });\n\n const extraMenuProps = computed(() => {\n return { ...props.menuProps, preventCloseBubble: true };\n });\n\n function isSelected(item: ListItem) {\n return !!selections.value.find((selectedItem) => {\n return selectedItem?.value === item.value;\n });\n }\n\n // Field\n function onMousedownDisplay(event: MouseEvent) {\n if (props.disabled) return;\n opened.value = !opened.value;\n }\n\n function onKeydownDisplay(event: KeyboardEvent) {\n console.log(event);\n if (props.disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n opened.value = !opened.value;\n }\n }\n\n function onBlur(event: FocusEvent) {\n requestAnimationFrame(() => {\n const contentEl = (menuRef.value as any)?.layer$?.content$;\n if (contentEl?.contains(document.activeElement)) {\n return;\n }\n if (opened.value && props.closeOnBlur) {\n opened.value = false;\n }\n });\n }\n\n // Menu Contents\n function onClickItem(item: ListItem, e: MouseEvent) {\n if (item.disabled) return;\n select(item);\n if (!props.multiple) {\n setTimeout(() => {\n opened.value = false;\n }, 40);\n }\n }\n\n function onAfterLeave() {\n if (!focused.value) {\n // fieldInputRef.value?.focus();\n }\n }\n\n function closeCondition(event: MouseEvent) {\n if (event.target && (menuRef.value as any)?.layer$?.content$) {\n return (event.target as HTMLElement)?.contains(\n (menuRef.value as any)?.layer$?.content$,\n );\n }\n }\n\n function select(item: ListItem) {\n let value;\n if (props.multiple) {\n const index = selections.value.findIndex((selectedItem) => {\n return selectedItem.value === item.value;\n });\n if (index === -1) {\n value = [...model.value, item];\n } else {\n const neo = model.value.slice();\n neo.splice(index, 1);\n value = neo;\n }\n } else {\n value = [item];\n }\n model.value = value;\n emit('change', setOut(value));\n }\n\n const displayText = computed(() => {\n if (props.multiple) {\n return selections.value.map((item) => item.text).join(', ');\n }\n return selections.value?.[0]?.text ?? '';\n });\n\n const baseEl = computed(() => {\n return menuRef.value?.baseEl;\n });\n\n watch(opened, (neo) => {\n if (neo) {\n nextTick(() => {\n scrollToActiveItem();\n });\n }\n });\n\n function scrollToActiveItem() {\n if (selections.value.length === 0) {\n return;\n }\n const listEl = getHtmlElement(listRef.value);\n if (listEl) {\n const activeEl = listEl?.querySelector('.y-list-item--active') as\n | HTMLElement\n | undefined;\n const contentEl = (menuRef.value as any)?.layer$\n ?.content$ as HTMLElement;\n if (activeEl && contentEl) {\n const scrollEl = getScrollParent(activeEl);\n if (\n scrollEl &&\n (contentEl.contains(scrollEl) || contentEl.isSameNode(scrollEl))\n ) {\n scrollEl.scrollTo({ top: activeEl.offsetTop, behavior: 'smooth' });\n }\n }\n }\n }\n\n useRender(() => {\n const fieldInputProps = chooseProps(props, YFieldInput.props);\n const dropdownIconProps = chooseProps(\n typeof props.dropdownIcon === 'object' ? props.dropdownIcon : {},\n YIcon.props,\n );\n return (\n <YFieldInput\n ref={fieldInputRef}\n {...fieldInputProps}\n modelValue={model.value\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 <YMenu\n ref={menuRef}\n offset={props.offset}\n position={props.position}\n align={props.align}\n origin={props.origin}\n content-classes={['y-select__content']}\n maxHeight={props.maxHeight}\n open-on-click-base={false}\n onAfterLeave={onAfterLeave}\n open-delay={props.openDelay}\n close-delay={props.closeDelay}\n closeCondition={closeCondition}\n base=\"parent\"\n {...extraMenuProps.value}\n v-model={opened.value}\n >\n {{\n default: slots.menu\n ? () => slots.menu()\n : () => (\n <YCard ref={cardRef}>\n {slots['menu-prepend']?.()}\n {items.value.length > 0 ? (\n <YList ref={listRef}>\n {items.value.map((item) => {\n const itemProps = {\n item,\n selected: isSelected(item),\n select: () => {\n select(item);\n },\n };\n return withDirectives(\n <YListItem\n onClick={(e) => onClickItem(item, e)}\n class={[\n {\n 'y-list-item--active': 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 leading: slots.leading\n ? (...args: any[]) => slots.leading?.(...args)\n : undefined,\n trailing: (...args: any[]) => {\n return slots['dropdown-icon'] ? (\n slots['dropdown-icon']()\n ) : (\n <YIcon\n {...mergeProps(dropdownIconProps)}\n icon={props.dropdownIcon}\n class={['y-select__icon']}\n ></YIcon>\n );\n },\n label: slots.label\n ? (...args: any[]) => slots.label?.(...args)\n : undefined,\n 'helper-text': slots['helper-text']\n ? (...args: any[]) => slots['helper-text']?.(...args)\n : undefined,\n }}\n </YFieldInput>\n );\n });\n\n onMounted(() => {\n if (\n props.defaultSelect &&\n (props.modelValue === undefined ||\n (Array.isArray(props.modelValue) && props.modelValue.length === 0)) &&\n items.value?.length\n ) {\n select(items.value[0]);\n }\n });\n\n expose({\n fieldInputRef,\n baseEl,\n opened,\n });\n\n return {\n fieldInputRef,\n model,\n selections,\n selected,\n menuRef,\n baseEl,\n opened,\n };\n },\n});\n\nexport type YSelect = InstanceType<typeof YSelect>;\n"],"mappings":"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"}
@@ -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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"}
@@ -17,6 +17,9 @@ export const YDataTableCell = defineComponent({
17
17
  fixedOffset: {
18
18
  type: Number
19
19
  },
20
+ rightOffset: {
21
+ type: Number
22
+ },
20
23
  width: {
21
24
  type: [Number, String]
22
25
  },
@@ -41,10 +44,10 @@ export const YDataTableCell = defineComponent({
41
44
  const offsetStyle = computed(() => {
42
45
  const ret = {};
43
46
  if (props.fixed && props.fixedOffset !== undefined) {
44
- if (props.fixed === 'lead') {
45
- ret['left'] = toStyleSizeValue(props.fixedOffset);
46
- } else if (props.fixed === 'last') {
47
+ if (props.fixed.startsWith('lead')) {
47
48
  ret['left'] = toStyleSizeValue(props.fixedOffset);
49
+ } else if (props.fixed.startsWith('trail')) {
50
+ ret['right'] = toStyleSizeValue(props.rightOffset);
48
51
  }
49
52
  }
50
53
  return ret;
@@ -54,7 +57,8 @@ export const YDataTableCell = defineComponent({
54
57
  return _createVNode(ElTag, _mergeProps({
55
58
  "class": [`y-data-table__${ElTag}`, 'y-data-table-cell', {
56
59
  'y-data-table-cell--fixed': props.fixed,
57
- [`y-data-table-cell--fixed-${props.fixed}`]: props.fixed,
60
+ 'y-data-table-cell--fixed-last': props.fixed?.endsWith('last'),
61
+ [`y-data-table-cell--fixed-${props.fixed?.replace('-last', '')}`]: props.fixed,
58
62
  [`y-data-table-cell--align-${props.align}`]: props.align
59
63
  }],
60
64
  "style": {
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableCell.mjs","names":["computed","useRender","defineComponent","toStyleSizeValue","YDataTableCell","name","functional","props","type","String","default","fixed","fixedOffset","Number","width","maxWidth","height","align","emits","setup","_ref","slots","emit","attrs","offsetStyle","ret","undefined","ElTag","_createVNode","_mergeProps","value","e"],"sources":["../../../src/components/table/YDataTableCell.tsx"],"sourcesContent":["import { type CSSProperties, type PropType, computed } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { defineComponent } from '@/util/component';\r\nimport { toStyleSizeValue } from '@/util/ui';\r\n\r\nexport const YDataTableCell = defineComponent({\r\n name: 'YDataTableCell',\r\n functional: true,\r\n props: {\r\n type: {\r\n type: String as PropType<'head' | 'data'>,\r\n default: 'data',\r\n },\r\n fixed: {\r\n type: String as PropType<'lead' | 'last'>,\r\n },\r\n fixedOffset: {\r\n type: Number as PropType<number>,\r\n },\r\n width: {\r\n type: [Number, String] as PropType<string | number>,\r\n },\r\n maxWidth: {\r\n type: [Number, String] as PropType<string | number>,\r\n },\r\n height: {\r\n type: [Number, String] as PropType<string | number>,\r\n },\r\n align: {\r\n type: String as PropType<'start' | 'center' | 'end'>,\r\n default: 'start',\r\n },\r\n },\r\n emits: ['click'],\r\n setup(props, { slots, emit, attrs }) {\r\n const offsetStyle = computed(() => {\r\n const ret: CSSProperties = {};\r\n if (props.fixed && props.fixedOffset !== undefined) {\r\n if (props.fixed === 'lead') {\r\n ret['left'] = toStyleSizeValue(props.fixedOffset);\r\n } else if (props.fixed === 'last') {\r\n ret['left'] = toStyleSizeValue(props.fixedOffset);\r\n }\r\n }\r\n return ret;\r\n });\r\n\r\n useRender(() => {\r\n const ElTag = props.type === 'head' ? 'th' : 'td';\r\n return (\r\n <ElTag\r\n class={[\r\n `y-data-table__${ElTag}`,\r\n 'y-data-table-cell',\r\n {\r\n 'y-data-table-cell--fixed': props.fixed,\r\n [`y-data-table-cell--fixed-${props.fixed}`]: props.fixed,\r\n [`y-data-table-cell--align-${props.align}`]: props.align,\r\n },\r\n ]}\r\n style={{\r\n width: toStyleSizeValue(props.width),\r\n height: toStyleSizeValue(props.height),\r\n maxWidth: toStyleSizeValue(props.maxWidth),\r\n ...offsetStyle.value,\r\n }}\r\n {...attrs}\r\n onClick={(e) => emit('click', e)}\r\n >\r\n {slots.default?.()}\r\n </ElTag>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableCell = InstanceType<typeof YDataTableCell>;\r\n"],"mappings":";AAAA,SAA4CA,QAAQ,QAAQ,KAAK;AAAC,SAEzDC,SAAS;AAAA,SACTC,eAAe;AAAA,SACfC,gBAAgB;AAEzB,OAAO,MAAMC,cAAc,GAAGF,eAAe,CAAC;EAC5CG,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE,IAAI;EAChBC,KAAK,EAAE;IACLC,IAAI,EAAE;MACJA,IAAI,EAAEC,MAAmC;MACzCC,OAAO,EAAE;IACX,CAAC;IACDC,KAAK,EAAE;MACLH,IAAI,EAAEC;IACR,CAAC;IACDG,WAAW,EAAE;MACXJ,IAAI,EAAEK;IACR,CAAC;IACDC,KAAK,EAAE;MACLN,IAAI,EAAE,CAACK,MAAM,EAAEJ,MAAM;IACvB,CAAC;IACDM,QAAQ,EAAE;MACRP,IAAI,EAAE,CAACK,MAAM,EAAEJ,MAAM;IACvB,CAAC;IACDO,MAAM,EAAE;MACNR,IAAI,EAAE,CAACK,MAAM,EAAEJ,MAAM;IACvB,CAAC;IACDQ,KAAK,EAAE;MACLT,IAAI,EAAEC,MAA8C;MACpDC,OAAO,EAAE;IACX;EACF,CAAC;EACDQ,KAAK,EAAE,CAAC,OAAO,CAAC;EAChBC,KAAKA,CAACZ,KAAK,EAAAa,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IACjC,MAAMI,WAAW,GAAGxB,QAAQ,CAAC,MAAM;MACjC,MAAMyB,GAAkB,GAAG,CAAC,CAAC;MAC7B,IAAIlB,KAAK,CAACI,KAAK,IAAIJ,KAAK,CAACK,WAAW,KAAKc,SAAS,EAAE;QAClD,IAAInB,KAAK,CAACI,KAAK,KAAK,MAAM,EAAE;UAC1Bc,GAAG,CAAC,MAAM,CAAC,GAAGtB,gBAAgB,CAACI,KAAK,CAACK,WAAW,CAAC;QACnD,CAAC,MAAM,IAAIL,KAAK,CAACI,KAAK,KAAK,MAAM,EAAE;UACjCc,GAAG,CAAC,MAAM,CAAC,GAAGtB,gBAAgB,CAACI,KAAK,CAACK,WAAW,CAAC;QACnD;MACF;MACA,OAAOa,GAAG;IACZ,CAAC,CAAC;IAEFxB,SAAS,CAAC,MAAM;MACd,MAAM0B,KAAK,GAAGpB,KAAK,CAACC,IAAI,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI;MACjD,OAAAoB,YAAA,CAAAD,KAAA,EAAAE,WAAA;QAAA,SAEW,CACJ,iBAAgBF,KAAM,EAAC,EACxB,mBAAmB,EACnB;UACE,0BAA0B,EAAEpB,KAAK,CAACI,KAAK;UACvC,CAAE,4BAA2BJ,KAAK,CAACI,KAAM,EAAC,GAAGJ,KAAK,CAACI,KAAK;UACxD,CAAE,4BAA2BJ,KAAK,CAACU,KAAM,EAAC,GAAGV,KAAK,CAACU;QACrD,CAAC,CACF;QAAA,SACM;UACLH,KAAK,EAAEX,gBAAgB,CAACI,KAAK,CAACO,KAAK,CAAC;UACpCE,MAAM,EAAEb,gBAAgB,CAACI,KAAK,CAACS,MAAM,CAAC;UACtCD,QAAQ,EAAEZ,gBAAgB,CAACI,KAAK,CAACQ,QAAQ,CAAC;UAC1C,GAAGS,WAAW,CAACM;QACjB;MAAC,GACGP,KAAK;QAAA,WACCQ,CAAC,IAAKT,IAAI,CAAC,OAAO,EAAES,CAAC;MAAC;QAAArB,OAAA,EAAAA,CAAA,MAE/BW,KAAK,CAACX,OAAO,GAAG,CAAC;MAAA;IAGxB,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableCell.mjs","names":["computed","useRender","defineComponent","toStyleSizeValue","YDataTableCell","name","functional","props","type","String","default","fixed","fixedOffset","Number","rightOffset","width","maxWidth","height","align","emits","setup","_ref","slots","emit","attrs","offsetStyle","ret","undefined","startsWith","ElTag","_createVNode","_mergeProps","endsWith","replace","value","e"],"sources":["../../../src/components/table/YDataTableCell.tsx"],"sourcesContent":["import { type CSSProperties, type PropType, computed } from 'vue';\n\nimport type { FixedPropType } from '@/components/table/types';\nimport { useRender } from '@/composables/component';\nimport { defineComponent } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nexport const YDataTableCell = defineComponent({\n name: 'YDataTableCell',\n functional: true,\n props: {\n type: {\n type: String as PropType<'head' | 'data'>,\n default: 'data',\n },\n fixed: {\n type: String as PropType<FixedPropType>,\n },\n fixedOffset: {\n type: Number as PropType<number>,\n },\n rightOffset: {\n type: Number as PropType<number>,\n },\n width: {\n type: [Number, String] as PropType<string | number>,\n },\n maxWidth: {\n type: [Number, String] as PropType<string | number>,\n },\n height: {\n type: [Number, String] as PropType<string | number>,\n },\n align: {\n type: String as PropType<'start' | 'center' | 'end'>,\n default: 'start',\n },\n },\n emits: ['click'],\n setup(props, { slots, emit, attrs }) {\n const offsetStyle = computed(() => {\n const ret: CSSProperties = {};\n if (props.fixed && props.fixedOffset !== undefined) {\n if (props.fixed.startsWith('lead')) {\n ret['left'] = toStyleSizeValue(props.fixedOffset);\n } else if (props.fixed.startsWith('trail')) {\n ret['right'] = toStyleSizeValue(props.rightOffset);\n }\n }\n return ret;\n });\n\n useRender(() => {\n const ElTag = props.type === 'head' ? 'th' : 'td';\n return (\n <ElTag\n class={[\n `y-data-table__${ElTag}`,\n 'y-data-table-cell',\n {\n 'y-data-table-cell--fixed': props.fixed,\n 'y-data-table-cell--fixed-last': props.fixed?.endsWith('last'),\n [`y-data-table-cell--fixed-${props.fixed?.replace('-last', '')}`]:\n props.fixed,\n [`y-data-table-cell--align-${props.align}`]: props.align,\n },\n ]}\n style={{\n width: toStyleSizeValue(props.width),\n height: toStyleSizeValue(props.height),\n maxWidth: toStyleSizeValue(props.maxWidth),\n ...offsetStyle.value,\n }}\n {...attrs}\n onClick={(e) => emit('click', e)}\n >\n {slots.default?.()}\n </ElTag>\n );\n });\n },\n});\n\nexport type YDataTableCell = InstanceType<typeof YDataTableCell>;\n"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import { Fragment as _Fragment, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
1
+ import { Fragment as _Fragment, mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
2
2
  import { useRender } from "../../composables/component.mjs";
3
3
  import { wrapInArray } from "../../util/index.mjs";
4
4
  import { defineComponent, propsFactory } from "../../util/component/index.mjs";
5
5
  import { toStyleSizeValue } from "../../util/ui.mjs";
6
+ import { YButton } from "../button/YButton.mjs";
6
7
  import { YIconCheckbox } from "../icons/YIconCheckbox.mjs";
7
8
  import { YIconSort } from "../icons/YIconSort.mjs";
8
9
  import { YDataTableCell } from "./YDataTableCell.mjs";
@@ -52,11 +53,18 @@ export const YDataTableHead = defineComponent({
52
53
  } = useHeader();
53
54
  const getFixedStyles = (column, y) => {
54
55
  if (!props.sticky && !column.fixed) return undefined;
56
+ let fixedOffset = {};
57
+ if (column.fixed === true || column.fixed === 'left') {
58
+ fixedOffset.left = toStyleSizeValue(column.fixedOffset);
59
+ }
60
+ if (column.fixed === 'right') {
61
+ fixedOffset.right = toStyleSizeValue(column.rightOffset);
62
+ }
55
63
  return {
56
64
  position: 'sticky',
57
65
  zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,
58
- left: column.fixed ? toStyleSizeValue(column.fixedOffset) : undefined,
59
- top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined
66
+ top: props.sticky ? `calc(var(--v-table-header-height) * ${y})` : undefined,
67
+ ...fixedOffset
60
68
  };
61
69
  };
62
70
  function onClick(e) {
@@ -83,7 +91,7 @@ export const YDataTableHead = defineComponent({
83
91
  return _createVNode(YDataTableCell, _mergeProps({
84
92
  "type": "head",
85
93
  "align": column.align,
86
- "fixed": column.fixed ? column.lastFixed ? 'last' : 'lead' : undefined,
94
+ "fixed": column.fixed ? (column.fixed === 'right' ? 'trail' : 'lead') + (column.lastFixed ? '-last' : '') : undefined,
87
95
  "class": ['y-data-table-header', {
88
96
  'y-data-table-header--sortable': column.sortable,
89
97
  'y-data-table-header--sorted': isSorted(column),
@@ -118,16 +126,20 @@ export const YDataTableHead = defineComponent({
118
126
  return slots[headerSlotName]?.(headerSlotProps);
119
127
  }
120
128
  if (column.key === 'data-table-select') {
121
- return slots['header.data-table-select']?.(headerSlotProps) ?? (showSelectAll && _createVNode(YIconCheckbox, _mergeProps({
122
- "checked": allSelected.value,
123
- "indeterminate": !allSelected.value && someSelected.value,
124
- "disabled": selectables.value.length < 1
125
- }, {
126
- onClick: e => {
129
+ return slots['header.data-table-select']?.(headerSlotProps) ?? (showSelectAll && _createVNode(YButton, {
130
+ "variation": 'text,small',
131
+ "disabled": selectables.value.length < 1,
132
+ "onClick": e => {
127
133
  e.stopPropagation();
128
134
  selectAll(!allSelected.value);
129
135
  }
130
- }), null));
136
+ }, {
137
+ default: () => [_createVNode(YIconCheckbox, {
138
+ "checked": allSelected.value,
139
+ "indeterminate": !allSelected.value && someSelected.value,
140
+ "disabled": selectables.value.length < 1
141
+ }, null)]
142
+ }));
131
143
  }
132
144
  return _createVNode("div", {
133
145
  "class": "y-data-table-header__content"
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableHead.mjs","names":["useRender","wrapInArray","defineComponent","propsFactory","toStyleSizeValue","YIconCheckbox","YIconSort","YDataTableCell","useHeader","useSelection","useSorting","pressYDataTableHeadProps","multiSort","Boolean","sortAscIcon","type","String","default","sortDescIcon","dualSortIcon","sticky","YDataTableHead","name","components","props","setup","_ref","slots","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","selectables","columns","headers","getFixedStyles","column","y","fixed","undefined","position","zIndex","left","fixedOffset","top","onClick","e","getSortDirection","found","value","find","by","key","order","YDataTableTh","_ref2","x","_createVNode","_mergeProps","align","lastFixed","sortable","headerClasses","width","minWidth","maxWidth","rowspan","colspan","headerSlotName","headerSlotProps","length","stopPropagation","text","_Fragment","head","map","row"],"sources":["../../../src/components/table/YDataTableHead.tsx"],"sourcesContent":["import { type CSSProperties } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { wrapInArray } from '@/util';\nimport { defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YIconCheckbox } from '../icons/YIconCheckbox';\nimport { YIconSort } from '../icons/YIconSort';\nimport { YDataTableCell } from './YDataTableCell';\nimport { useHeader } from './composibles/header';\nimport { useSelection } from './composibles/selection';\nimport { useSorting } from './composibles/sorting';\nimport { InternalDataTableHeader } from './types';\n\nexport const pressYDataTableHeadProps = propsFactory(\n {\n multiSort: Boolean,\n sortAscIcon: {\n type: String,\n default: '@sortAsc',\n },\n sortDescIcon: {\n type: String,\n default: '@sortDesc',\n },\n dualSortIcon: Boolean,\n sticky: Boolean,\n },\n 'YDataTableHead',\n);\n\nexport const YDataTableHead = defineComponent({\n name: 'YDataTableHead',\n components: {\n YDataTableCell,\n },\n props: {\n ...pressYDataTableHeadProps(),\n },\n setup(props, { slots }) {\n const { toggleSort, sortBy, isSorted } = useSorting();\n const { someSelected, allSelected, selectAll, showSelectAll, selectables } =\n useSelection();\n const { columns, headers } = useHeader();\n\n const getFixedStyles = (\n column: InternalDataTableHeader,\n y: number,\n ): CSSProperties | undefined => {\n if (!props.sticky && !column.fixed) return undefined;\n\n return {\n position: 'sticky',\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,\n left: column.fixed ? toStyleSizeValue(column.fixedOffset) : undefined,\n top: props.sticky\n ? `calc(var(--v-table-header-height) * ${y})`\n : undefined,\n };\n };\n\n function onClick(e: Event) {\n //\n }\n\n function getSortDirection(column: InternalDataTableHeader) {\n const found = sortBy.value.find((by) => by.key === column.key);\n if (!found) {\n return undefined;\n }\n if (found.order === 'asc') {\n return 'asc';\n }\n if (found.order === 'desc') {\n return 'desc';\n }\n }\n\n const YDataTableTh = ({\n column,\n x,\n y,\n }: {\n column: InternalDataTableHeader;\n x: number;\n y: number;\n }) => {\n return (\n <YDataTableCell\n type=\"head\"\n align={column.align}\n fixed={\n column.fixed ? (column.lastFixed ? 'last' : 'lead') : undefined\n }\n class={[\n 'y-data-table-header',\n {\n 'y-data-table-header--sortable': column.sortable,\n 'y-data-table-header--sorted': isSorted(column),\n 'y-data-table-header--select': column.key === 'data-table-select',\n },\n ...wrapInArray(column.headerClasses ?? []),\n ]}\n style={{\n width: toStyleSizeValue(column.width),\n minWidth: toStyleSizeValue(column.width),\n maxWidth: toStyleSizeValue(column.maxWidth),\n ...getFixedStyles(column, y),\n }}\n {...{ rowspan: column.rowspan, colspan: column.colspan }}\n onClick={onClick}\n >\n {{\n default: () => {\n const headerSlotName = `header.${column.key}` as const;\n const headerSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectables: selectables.value,\n getSortDirection,\n };\n\n if (slots[headerSlotName]) {\n return slots[headerSlotName]?.(headerSlotProps);\n }\n\n if (column.key === 'data-table-select') {\n return (\n slots['header.data-table-select']?.(headerSlotProps) ??\n (showSelectAll && (\n <YIconCheckbox\n checked={allSelected.value}\n indeterminate={!allSelected.value && someSelected.value}\n disabled={selectables.value.length < 1}\n {...{\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n selectAll(!allSelected.value);\n },\n }}\n ></YIconCheckbox>\n ))\n );\n }\n\n return (\n <div class=\"y-data-table-header__content\">\n <span class=\"y-data-table-header__text\">\n {slots?.[`header-text.${column.key}`]?.(headerSlotProps) ??\n column.text}\n </span>\n <span\n class={[\n 'y-data-table-header__sorting-icon',\n {\n 'y-data-table-header__sorting-icon--disabled':\n !column.sortable,\n },\n ]}\n onClick={\n column.sortable\n ? (e) => {\n e.stopPropagation();\n toggleSort(column);\n }\n : undefined\n }\n >\n <YIconSort\n disabled={!column.sortable}\n direction={getSortDirection(column)}\n ></YIconSort>\n </span>\n </div>\n );\n },\n }}\n </YDataTableCell>\n );\n };\n\n useRender(() => {\n return (\n <>\n {slots.head\n ? slots.head?.(props)\n : headers.value.map((row, y) => (\n <tr>\n {row.map((column, x) => (\n <YDataTableTh column={column} x={x} y={y} />\n ))}\n </tr>\n ))}\n </>\n );\n });\n },\n});\n\nexport type YDataTableHead = InstanceType<typeof YDataTableHead>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDataTableHead.mjs","names":["useRender","wrapInArray","defineComponent","propsFactory","toStyleSizeValue","YButton","YIconCheckbox","YIconSort","YDataTableCell","useHeader","useSelection","useSorting","pressYDataTableHeadProps","multiSort","Boolean","sortAscIcon","type","String","default","sortDescIcon","dualSortIcon","sticky","YDataTableHead","name","components","props","setup","_ref","slots","toggleSort","sortBy","isSorted","someSelected","allSelected","selectAll","showSelectAll","selectables","columns","headers","getFixedStyles","column","y","fixed","undefined","fixedOffset","left","right","rightOffset","position","zIndex","top","onClick","e","getSortDirection","found","value","find","by","key","order","YDataTableTh","_ref2","x","_createVNode","_mergeProps","align","lastFixed","sortable","headerClasses","width","minWidth","maxWidth","rowspan","colspan","headerSlotName","headerSlotProps","length","stopPropagation","text","_Fragment","head","map","row"],"sources":["../../../src/components/table/YDataTableHead.tsx"],"sourcesContent":["import { type CSSProperties } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { wrapInArray } from '@/util';\nimport { defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YButton } from '../button/YButton';\nimport { YIconCheckbox } from '../icons/YIconCheckbox';\nimport { YIconSort } from '../icons/YIconSort';\nimport { YDataTableCell } from './YDataTableCell';\nimport { useHeader } from './composibles/header';\nimport { useSelection } from './composibles/selection';\nimport { useSorting } from './composibles/sorting';\nimport { type FixedPropType, InternalDataTableHeader } from './types';\n\nexport const pressYDataTableHeadProps = propsFactory(\n {\n multiSort: Boolean,\n sortAscIcon: {\n type: String,\n default: '@sortAsc',\n },\n sortDescIcon: {\n type: String,\n default: '@sortDesc',\n },\n dualSortIcon: Boolean,\n sticky: Boolean,\n },\n 'YDataTableHead',\n);\n\nexport const YDataTableHead = defineComponent({\n name: 'YDataTableHead',\n components: {\n YDataTableCell,\n },\n props: {\n ...pressYDataTableHeadProps(),\n },\n setup(props, { slots }) {\n const { toggleSort, sortBy, isSorted } = useSorting();\n const { someSelected, allSelected, selectAll, showSelectAll, selectables } =\n useSelection();\n const { columns, headers } = useHeader();\n\n const getFixedStyles = (\n column: InternalDataTableHeader,\n y: number,\n ): CSSProperties | undefined => {\n if (!props.sticky && !column.fixed) return undefined;\n let fixedOffset: any = {};\n if (column.fixed === true || column.fixed === 'left') {\n fixedOffset.left = toStyleSizeValue(column.fixedOffset);\n }\n if (column.fixed === 'right') {\n fixedOffset.right = toStyleSizeValue(column.rightOffset);\n }\n\n return {\n position: 'sticky',\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,\n top: props.sticky\n ? `calc(var(--v-table-header-height) * ${y})`\n : undefined,\n ...fixedOffset,\n };\n };\n\n function onClick(e: Event) {\n //\n }\n\n function getSortDirection(column: InternalDataTableHeader) {\n const found = sortBy.value.find((by) => by.key === column.key);\n if (!found) {\n return undefined;\n }\n if (found.order === 'asc') {\n return 'asc';\n }\n if (found.order === 'desc') {\n return 'desc';\n }\n }\n\n const YDataTableTh = ({\n column,\n x,\n y,\n }: {\n column: InternalDataTableHeader;\n x: number;\n y: number;\n }) => {\n return (\n <YDataTableCell\n type=\"head\"\n align={column.align}\n fixed={\n column.fixed\n ? (((column.fixed === 'right' ? 'trail' : 'lead') +\n (column.lastFixed ? '-last' : '')) as FixedPropType)\n : undefined\n }\n class={[\n 'y-data-table-header',\n {\n 'y-data-table-header--sortable': column.sortable,\n 'y-data-table-header--sorted': isSorted(column),\n 'y-data-table-header--select': column.key === 'data-table-select',\n },\n ...wrapInArray(column.headerClasses ?? []),\n ]}\n style={{\n width: toStyleSizeValue(column.width),\n minWidth: toStyleSizeValue(column.width),\n maxWidth: toStyleSizeValue(column.maxWidth),\n ...getFixedStyles(column, y),\n }}\n {...{ rowspan: column.rowspan, colspan: column.colspan }}\n onClick={onClick}\n >\n {{\n default: () => {\n const headerSlotName = `header.${column.key}` as const;\n const headerSlotProps = {\n column,\n selectAll,\n isSorted,\n toggleSort,\n sortBy: sortBy.value,\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n selectables: selectables.value,\n getSortDirection,\n };\n\n if (slots[headerSlotName]) {\n return slots[headerSlotName]?.(headerSlotProps);\n }\n\n if (column.key === 'data-table-select') {\n return (\n slots['header.data-table-select']?.(headerSlotProps) ??\n (showSelectAll && (\n <YButton\n variation={'text,small'}\n disabled={selectables.value.length < 1}\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n selectAll(!allSelected.value);\n }}\n >\n <YIconCheckbox\n checked={allSelected.value}\n indeterminate={!allSelected.value && someSelected.value}\n disabled={selectables.value.length < 1}\n ></YIconCheckbox>\n </YButton>\n ))\n );\n }\n\n return (\n <div class=\"y-data-table-header__content\">\n <span class=\"y-data-table-header__text\">\n {slots?.[`header-text.${column.key}`]?.(headerSlotProps) ??\n column.text}\n </span>\n <span\n class={[\n 'y-data-table-header__sorting-icon',\n {\n 'y-data-table-header__sorting-icon--disabled':\n !column.sortable,\n },\n ]}\n onClick={\n column.sortable\n ? (e) => {\n e.stopPropagation();\n toggleSort(column);\n }\n : undefined\n }\n >\n <YIconSort\n disabled={!column.sortable}\n direction={getSortDirection(column)}\n ></YIconSort>\n </span>\n </div>\n );\n },\n }}\n </YDataTableCell>\n );\n };\n\n useRender(() => {\n return (\n <>\n {slots.head\n ? slots.head?.(props)\n : headers.value.map((row, y) => (\n <tr>\n {row.map((column, x) => (\n <YDataTableTh column={column} x={x} y={y} />\n ))}\n </tr>\n ))}\n </>\n );\n });\n },\n});\n\nexport type YDataTableHead = InstanceType<typeof YDataTableHead>;\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
- import { computed } from 'vue';
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
2
+ import { computed, getCurrentInstance } from 'vue';
3
+ import { YButton } from "./../index.mjs";
3
4
  import { useRender } from "../../composables/component.mjs";
4
5
  import { getPropertyFromItem } from "../../util/common.mjs";
5
6
  import { defineComponent } from "../../util/component/index.mjs";
@@ -10,10 +11,12 @@ import { useHeader } from "./composibles/header.mjs";
10
11
  import { useSelection } from "./composibles/selection.mjs";
11
12
  export const pressYDataTableRowProps = propsFactory({
12
13
  index: Number,
14
+ onHover: Function,
15
+ onMousedown: Function,
13
16
  onClick: Function,
14
- onContextmenu: Function,
15
17
  onDblclick: Function,
16
- onHover: Function
18
+ onContextmenu: Function,
19
+ onKeydown: Function
17
20
  }, 'YDataTableRow');
18
21
  export const YDataTableRow = defineComponent({
19
22
  name: 'YDataTableRow',
@@ -22,11 +25,13 @@ export const YDataTableRow = defineComponent({
22
25
  cellProps: [Object, Function],
23
26
  ...pressYDataTableRowProps()
24
27
  },
28
+ emits: ['hover', 'mousedown', 'click', 'dblclick', 'contextmenu'],
25
29
  setup(props, _ref) {
26
30
  let {
27
31
  emit,
28
32
  slots
29
33
  } = _ref;
34
+ const vm = getCurrentInstance();
30
35
  const {
31
36
  isSelected,
32
37
  toggleSelect
@@ -47,14 +52,31 @@ export const YDataTableRow = defineComponent({
47
52
  }
48
53
  return ret;
49
54
  }
55
+ function onMousedown(event) {
56
+ props.onMousedown?.(event, vm?.proxy?.$el);
57
+ }
58
+ function onClick(event) {
59
+ props.onClick?.(event, vm?.proxy?.$el);
60
+ }
61
+ function onContextmenu(event) {
62
+ props.onContextmenu?.(event, vm?.proxy?.$el);
63
+ }
64
+ function onDblclick(event) {
65
+ props.onDblclick?.(event, vm?.proxy?.$el);
66
+ }
67
+ function onKeydown(event) {
68
+ props.onKeydown?.(event, vm?.proxy?.$el);
69
+ }
50
70
  useRender(() => {
51
71
  return _createVNode("tr", {
52
72
  "class": ['y-data-table__row', {
53
73
  'y-data-table__row--selected': selected.value
54
74
  }],
55
- "onClick": props.onClick,
56
- "onContextmenu": props.onContextmenu,
57
- "onDblclick": props.onDblclick
75
+ "onClick": props.onClick && onClick,
76
+ "onContextmenu": props.onContextmenu && onContextmenu,
77
+ "onDblclick": props.onDblclick && onDblclick,
78
+ "onMousedown": props.onMousedown && onMousedown,
79
+ "onKeydown": props.onKeydown && onKeydown
58
80
  }, [props.item && columns.value.map((column, colIndex) => {
59
81
  const item = props.item;
60
82
  const slotProps = {
@@ -64,7 +86,8 @@ export const YDataTableRow = defineComponent({
64
86
  columns: columns.value,
65
87
  value: getPropertyFromItem(item.columns, column.key),
66
88
  selected: selected.value,
67
- toggleSelect
89
+ toggleSelect,
90
+ el: vm?.proxy?.$el
68
91
  };
69
92
  const classes = computed(() => {
70
93
  const ret = [];
@@ -88,8 +111,9 @@ export const YDataTableRow = defineComponent({
88
111
  }) : props.cellProps;
89
112
  return _createVNode(YDataTableCell, _mergeProps({
90
113
  "align": column.align,
91
- "fixed": column.fixed ? column.lastFixed ? 'last' : 'lead' : undefined,
114
+ "fixed": column.fixed ? (column.fixed === 'right' ? 'trail' : 'lead') + (column.lastFixed ? '-last' : '') : undefined,
92
115
  "fixedOffset": column.fixedOffset,
116
+ "rightOffset": column.rightOffset,
93
117
  "width": column.width,
94
118
  "maxWidth": column.maxWidth,
95
119
  "class": ['y-data-table-data', {
@@ -102,15 +126,19 @@ export const YDataTableRow = defineComponent({
102
126
  return slots[slotName]?.(slotProps);
103
127
  }
104
128
  if (column.key === 'data-table-select') {
105
- return slots['item.data-table-select']?.(slotProps) ?? _createVNode(YIconCheckbox, _mergeProps({
106
- "checked": isSelected(item),
107
- "disabled": !item.selectable
108
- }, {
109
- onClick: e => {
129
+ return slots['item.data-table-select']?.(slotProps) ?? _createVNode(YButton, {
130
+ "variation": 'text,small',
131
+ "disabled": !item.selectable,
132
+ "onClick": e => {
110
133
  e.stopPropagation();
111
134
  if (item.selectable) toggleSelect(item);
112
135
  }
113
- }), null);
136
+ }, {
137
+ default: () => [_createVNode(YIconCheckbox, {
138
+ "checked": isSelected(item),
139
+ "disabled": !item.selectable
140
+ }, null)]
141
+ });
114
142
  }
115
143
  return slotProps.value;
116
144
  }