yuyeon 0.3.6-beta.0 → 0.3.6-beta.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 (73) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +3945 -4297
  3. package/dist/yuyeon.umd.cjs +3 -3
  4. package/lib/components/date-picker/index.js +2 -1
  5. package/lib/components/date-picker/index.js.map +1 -1
  6. package/lib/components/dialog/YDialog.js +11 -2
  7. package/lib/components/dialog/YDialog.js.map +1 -1
  8. package/lib/components/layer/YLayer.js +7 -2
  9. package/lib/components/layer/YLayer.js.map +1 -1
  10. package/lib/components/pagination/YPagination.js +10 -10
  11. package/lib/components/pagination/YPagination.js.map +1 -1
  12. package/lib/components/snackbar/YSnackbar.js +25 -17
  13. package/lib/components/snackbar/YSnackbar.js.map +1 -1
  14. package/lib/components/table/YDataTableHead.js +4 -4
  15. package/lib/components/table/YDataTableHead.js.map +1 -1
  16. package/lib/components/table/YDataTableRow.js +0 -1
  17. package/lib/components/table/YDataTableRow.js.map +1 -1
  18. package/lib/components/table/composables/items.js.map +1 -1
  19. package/lib/components/table/composables/selection.js.map +1 -1
  20. package/lib/components/time-select/TimeSelect.vue +344 -0
  21. package/lib/components/tree-view/YTreeView.js +8 -8
  22. package/lib/components/tree-view/YTreeView.js.map +1 -1
  23. package/lib/components/tree-view/YTreeView.scss +5 -0
  24. package/lib/components/tree-view/YTreeViewNode.js +34 -4
  25. package/lib/components/tree-view/YTreeViewNode.js.map +1 -1
  26. package/lib/components/tree-view/tree-view.js +2 -2
  27. package/lib/components/tree-view/tree-view.js.map +1 -1
  28. package/lib/util/animation/index.js +19 -0
  29. package/lib/util/animation/index.js.map +1 -0
  30. package/lib/util/date/adapters/yuyeon-date-adapter.js +5 -2
  31. package/lib/util/date/adapters/yuyeon-date-adapter.js.map +1 -1
  32. package/lib/util/date/built-in.js +58 -4
  33. package/lib/util/date/built-in.js.map +1 -1
  34. package/lib/util/date/index.js +3 -0
  35. package/lib/util/date/index.js.map +1 -1
  36. package/lib/util/date/types.js.map +1 -1
  37. package/package.json +2 -5
  38. package/types/components/badge/YBadge.d.ts +2 -2
  39. package/types/components/checkbox/YCheckbox.d.ts +1 -1
  40. package/types/components/checkbox/YInputCheckbox.d.ts +1 -1
  41. package/types/components/date-picker/YDateCalendar.d.ts +4 -4
  42. package/types/components/date-picker/YDatePicker.d.ts +12 -12
  43. package/types/components/date-picker/YDatePickerControl.d.ts +2 -2
  44. package/types/components/date-picker/YMonthPicker.d.ts +2 -2
  45. package/types/components/date-picker/YYearPicker.d.ts +2 -2
  46. package/types/components/date-picker/index.d.ts +2 -1
  47. package/types/components/dialog/YDialog.d.ts +63 -61
  48. package/types/components/dropdown/YDropdown.d.ts +41 -41
  49. package/types/components/field-input/YFieldInput.d.ts +3 -3
  50. package/types/components/icon/YIcon.d.ts +3 -3
  51. package/types/components/input/YInput.d.ts +3 -3
  52. package/types/components/ip-field/YIpv4Field.d.ts +1 -1
  53. package/types/components/layer/YLayer.d.ts +4 -3
  54. package/types/components/menu/YMenu.d.ts +6 -4
  55. package/types/components/pagination/YPagination.d.ts +19 -13
  56. package/types/components/select/YSelect.d.ts +87 -87
  57. package/types/components/snackbar/YSnackbar.d.ts +3 -3
  58. package/types/components/switch/YSwitch.d.ts +1 -1
  59. package/types/components/table/YDataTable.d.ts +4 -4
  60. package/types/components/table/YDataTableBody.d.ts +2 -2
  61. package/types/components/table/YDataTableServer.d.ts +4 -4
  62. package/types/components/table/composables/selection.d.ts +2 -2
  63. package/types/components/textarea/YTextarea.d.ts +24 -24
  64. package/types/components/tooltip/YTooltip.d.ts +3 -3
  65. package/types/components/tree-view/YTreeView.d.ts +16 -4
  66. package/types/components/tree-view/YTreeViewNode.d.ts +18 -0
  67. package/types/composables/coordinate/index.d.ts +2 -2
  68. package/types/shims.d.ts +2 -1
  69. package/types/util/animation/index.d.ts +1 -0
  70. package/types/util/date/adapters/yuyeon-date-adapter.d.ts +5 -1
  71. package/types/util/date/built-in.d.ts +19 -1
  72. package/types/util/date/index.d.ts +1 -0
  73. package/types/util/date/types.d.ts +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"YSnackbar.js","names":["animate","computed","ref","toRef","watch","withModifiers","useModelDuplex","useRender","useTimer","omit","bindClasses","chooseProps","defineComponent","propsFactory","YLayer","pressYLayerProps","YPlate","defaultSnackbarTransition","name","onBeforeEnter","direction","el","getAttribute","cache","style","getPropertyValue","setAttribute","setProperty","onEnter","done","motion","transform","replace","duration","finished","then","removeAttribute","pressYSnackbarPropsOptions","scrollStrategy","position","modelValue","type","Boolean","contentClasses","Array","String","Object","transition","default","Number","closeClickContent","YSnackbar","components","emits","props","setup","_ref","emit","slots","active","hover","classes","computedContentClasses","boundClasses","computedInset","first","second","split","y","x","ret","dismiss","value","start","stop","reset","setTimer","neo","isNaN","immediate","onClickContent","event","proxyTransition","includes","_createVNode","_mergeProps","v","_Fragment","onMouseenter","onMouseleave"],"sources":["../../../src/components/snackbar/YSnackbar.tsx"],"sourcesContent":["import { animate } from 'motion';\nimport { type PropType, computed, ref, toRef, watch, withModifiers } from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { useTimer } from '@/composables/timing';\nimport { omit } from '@/util/common';\nimport {\n bindClasses,\n chooseProps,\n defineComponent,\n propsFactory,\n} from '@/util/component';\n\nimport { YLayer, pressYLayerProps } from '../layer';\nimport { YPlate } from '../plate';\n\nimport './YSnackbar.scss';\n\nconst defaultSnackbarTransition = {\n name: 'y-snackbar',\n onBeforeEnter: (direction: 'top' | 'bottom') => (el: HTMLElement) => {\n if (!el.getAttribute('data-transform')) {\n const cache = el.style.getPropertyValue('transform');\n el.setAttribute('data-transform', cache);\n el.style.setProperty(\n 'transform',\n `${cache} translateY(${direction === 'top' ? '-' : ''}40px)`,\n );\n }\n },\n onEnter(el: HTMLElement, done: () => void) {\n const cache = el.getAttribute('data-transform');\n const motion = el.getAttribute('data-motion');\n if (motion || !cache) {\n return;\n }\n el.setAttribute('data-motion', 'true');\n animate(\n el,\n {\n transform: `${cache.replace(/translateY(.+)/, 'translateY(0)')}`,\n },\n { duration: 0.1 },\n ).finished.then(() => {\n el.removeAttribute('data-transform');\n el.removeAttribute('data-motion');\n done();\n });\n },\n};\n\nexport const pressYSnackbarPropsOptions = propsFactory(\n {\n ...pressYLayerProps({\n scrollStrategy: 'none' as const,\n position: 'top center',\n }),\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n contentClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n transition: {\n type: [String, Object] as PropType<string | any>,\n default: () => ({ ...defaultSnackbarTransition }),\n },\n /**\n * @property Number\n *\n * The amount of time the snackbar should be displayed.\n * @default 4000\n */\n duration: {\n type: Number as PropType<number>,\n default: 4000,\n },\n closeClickContent: {\n type: Boolean,\n default: true,\n },\n },\n 'YSnackbar',\n);\n\nexport const YSnackbar = defineComponent({\n name: 'YSnackbar',\n components: { YPlate, YLayer },\n emits: ['update:modelValue', 'click'],\n props: {\n ...pressYSnackbarPropsOptions(),\n },\n setup(props, { emit, slots }) {\n const active = useModelDuplex(props);\n const hover = ref(false);\n const duration = toRef(props, 'duration');\n\n const classes = computed(() => {\n return {\n 'y-snackbar': true,\n };\n });\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n 'y-snackbar__display': true,\n };\n });\n\n const computedInset = computed(() => {\n const [first, second] = props.position?.split(' ');\n let y = 'top';\n let x = 'left';\n if (second) {\n x = second;\n y = first;\n } else if (first === 'bottom') {\n y = 'bottom';\n } else {\n x = first;\n }\n const ret = {\n [x === 'center' ? 'left' : x]: x === 'center' ? `50%` : 0,\n [y]: 0,\n } as any;\n if (x === 'center') {\n ret.transform = 'translateX(-50%)';\n }\n return ret;\n });\n\n function dismiss() {\n active.value = false;\n }\n\n const { start, stop, reset } = useTimer(dismiss, duration);\n function setTimer() {\n if (props.duration > 0) {\n start();\n }\n }\n\n watch(hover, (neo: boolean) => {\n if (neo) {\n stop();\n } else {\n setTimer();\n }\n });\n\n watch(\n () => props.duration,\n (neo) => {\n if (!isNaN(neo) && active.value) {\n reset();\n if (!hover.value) {\n setTimer();\n }\n }\n },\n );\n\n watch(\n active,\n (neo: boolean) => {\n if (neo) {\n setTimer();\n } else {\n reset();\n }\n },\n { immediate: true },\n );\n\n function onClickContent(event: Event) {\n emit('click', event);\n if (props.closeClickContent) {\n active.value = false;\n }\n }\n\n const proxyTransition = computed(() => {\n const { transition, position } = props;\n if (transition?.name === 'y-snackbar') {\n transition.onBeforeEnter = defaultSnackbarTransition.onBeforeEnter(\n position.includes('top') ? 'top' : 'bottom',\n );\n return { ...transition };\n }\n return props.transition;\n });\n\n useRender(() => {\n return (\n <YLayer\n ref=\"layer\"\n {...omit(chooseProps(props, YLayer.props), [\n 'scrim',\n 'transition',\n 'content-classes',\n 'classes',\n ])}\n modelValue={active.value}\n onUpdate:modelValue={(v) => (active.value = v)}\n classes={classes.value}\n content-classes={computedContentClasses.value}\n scrim={false}\n content-styles={computedInset.value}\n transition={proxyTransition.value as any}\n >\n {{\n default: () => (\n <>\n <YPlate></YPlate>\n <div\n class=\"y-snackbar__content\"\n onClick={withModifiers(onClickContent, ['exact'])}\n onMouseenter={() => (hover.value = true)}\n onMouseleave={() => (hover.value = false)}\n >\n {slots.default?.()}\n </div>\n </>\n ),\n }}\n </YLayer>\n );\n });\n\n return {\n active,\n hover,\n classes,\n computedContentClasses,\n computedInset,\n proxyTransition,\n onClickContent,\n };\n },\n});\n\nexport type YSnackbar = InstanceType<typeof YSnackbar>;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"YSnackbar.js","names":["computed","ref","toRef","watch","withModifiers","Fragment","_Fragment","createVNode","_createVNode","mergeProps","_mergeProps","useModelDuplex","useRender","useTimer","animate","omit","bindClasses","chooseProps","defineComponent","propsFactory","pressYLayerProps","YLayer","YPlate","defaultSnackbarTransition","name","onBeforeEnter","direction","el","getAttribute","cache","style","getPropertyValue","setAttribute","setProperty","onEnter","done","transform","replace","duration","easing","then","removeAttribute","pressYSnackbarPropsOptions","scrollStrategy","position","modelValue","type","Boolean","contentClasses","Array","String","Object","transition","default","Number","closeClickContent","YSnackbar","components","emits","props","setup","_ref","emit","slots","active","hover","classes","computedContentClasses","boundClasses","computedInset","first","second","split","y","x","ret","dismiss","value","start","stop","reset","setTimer","neo","isNaN","immediate","onClickContent","event","proxyTransition","includes","v","onMouseenter","onMouseleave"],"sources":["../../../src/components/snackbar/YSnackbar.tsx"],"sourcesContent":["import { computed, type PropType, ref, toRef, watch, withModifiers } from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { useRender } from '@/composables/component';\nimport { useTimer } from '@/composables/timing';\nimport { animate } from '@/util/animation';\nimport { omit } from '@/util/common';\nimport {\n bindClasses,\n chooseProps,\n defineComponent,\n propsFactory,\n} from '@/util/component';\n\nimport { pressYLayerProps, YLayer } from '../layer';\nimport { YPlate } from '../plate';\n\nimport './YSnackbar.scss';\n\nconst defaultSnackbarTransition = {\n name: 'y-snackbar',\n onBeforeEnter: (direction: 'top' | 'bottom') => (el: HTMLElement) => {\n if (!el.getAttribute('data-transform')) {\n const cache = el.style.getPropertyValue('transform');\n el.setAttribute('data-transform', cache);\n el.setAttribute('data-direction', direction);\n el.style.setProperty(\n 'transform',\n `${cache} translateY(${direction === 'top' ? '-' : ''}40px)`,\n );\n }\n },\n onEnter(el: HTMLElement, done: () => void) {\n const cache = el.getAttribute('data-transform');\n const direction = el.getAttribute('data-direction');\n if (!direction || !cache) {\n return;\n }\n animate(\n el,\n [\n {\n transform: `${cache} translateY(${direction === 'top' ? '-' : ''}40px)`,\n },\n {\n transform: `${cache.replace(/translateY(.+)/, 'translateY(0)')}`,\n },\n ],\n { duration: 300 , easing: 'cubic-bezier(0.25, 0.8, 0.5, 1)' },\n ).then(() => {\n el.removeAttribute('data-transform');\n el.removeAttribute('data-direction');\n done();\n });\n },\n};\n\nexport const pressYSnackbarPropsOptions = propsFactory(\n {\n ...pressYLayerProps({\n scrollStrategy: 'none' as const,\n position: 'top center',\n }),\n modelValue: {\n type: Boolean as PropType<boolean>,\n },\n contentClasses: {\n type: [Array, String, Object] as PropType<\n string[] | string | Record<string, any>\n >,\n },\n transition: {\n type: [String, Object] as PropType<string | any>,\n default: () => ({ ...defaultSnackbarTransition }),\n },\n /**\n * @property Number\n *\n * The amount of time the snackbar should be displayed.\n * @default 4000\n */\n duration: {\n type: Number as PropType<number>,\n default: 4000,\n },\n closeClickContent: {\n type: Boolean,\n default: true,\n },\n },\n 'YSnackbar',\n);\n\nexport const YSnackbar = defineComponent({\n name: 'YSnackbar',\n components: { YPlate, YLayer },\n emits: ['update:modelValue', 'click'],\n props: {\n ...pressYSnackbarPropsOptions(),\n },\n setup(props, { emit, slots }) {\n const active = useModelDuplex(props);\n const hover = ref(false);\n const duration = toRef(props, 'duration');\n\n const classes = computed(() => {\n return {\n 'y-snackbar': true,\n };\n });\n\n const computedContentClasses = computed<Record<string, boolean>>(() => {\n const boundClasses = bindClasses(props.contentClasses);\n return {\n ...boundClasses,\n 'y-snackbar__display': true,\n };\n });\n\n const computedInset = computed(() => {\n const [first, second] = props.position?.split(' ') ?? [];\n let y = 'top';\n let x = 'left';\n if (second) {\n x = second;\n y = first;\n } else if (first === 'bottom') {\n y = 'bottom';\n } else {\n x = first;\n }\n const ret = {\n [x === 'center' ? 'left' : x]: x === 'center' ? `50%` : 0,\n [y]: 0,\n } as any;\n if (x === 'center') {\n ret.transform = 'translateX(-50%)';\n }\n return ret;\n });\n\n function dismiss() {\n active.value = false;\n }\n\n const { start, stop, reset } = useTimer(dismiss, duration);\n function setTimer() {\n if (props.duration > 0) {\n start();\n }\n }\n\n watch(hover, (neo: boolean) => {\n if (neo) {\n stop();\n } else {\n setTimer();\n }\n });\n\n watch(\n () => props.duration,\n (neo) => {\n if (!Number.isNaN(neo) && active.value) {\n reset();\n if (!hover.value) {\n setTimer();\n }\n }\n },\n );\n\n watch(\n active,\n (neo: boolean) => {\n if (neo) {\n setTimer();\n } else {\n reset();\n }\n },\n { immediate: true },\n );\n\n function onClickContent(event: Event) {\n emit('click', event);\n if (props.closeClickContent) {\n active.value = false;\n }\n }\n\n const proxyTransition = computed(() => {\n const { transition, position } = props;\n if (transition?.name === 'y-snackbar') {\n transition.onBeforeEnter = defaultSnackbarTransition.onBeforeEnter(\n position.includes('top') ? 'top' : 'bottom',\n );\n return { ...transition };\n }\n return props.transition;\n });\n\n useRender(() => {\n return (\n <YLayer\n ref=\"layer\"\n {...omit(chooseProps(props, YLayer.props), [\n 'scrim',\n 'transition',\n 'content-classes',\n 'classes',\n ])}\n modelValue={active.value}\n onUpdate:modelValue={(v) => {\n (active.value = v);\n }}\n classes={classes.value}\n content-classes={computedContentClasses.value}\n scrim={false}\n content-styles={computedInset.value}\n transition={proxyTransition.value as any}\n >\n {{\n default: () => (\n <>\n <YPlate></YPlate>\n <div\n class=\"y-snackbar__content\"\n onClick={withModifiers(onClickContent, ['exact'])}\n onMouseenter={() => {\n (hover.value = true);\n }}\n onMouseleave={() => {\n (hover.value = false);\n }}\n >\n {slots.default?.()}\n </div>\n </>\n ),\n }}\n </YLayer>\n );\n });\n\n return {\n active,\n hover,\n classes,\n computedContentClasses,\n computedInset,\n proxyTransition,\n onClickContent,\n };\n },\n});\n\nexport type YSnackbar = InstanceType<typeof YSnackbar>;\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,7 @@
1
1
  import { createVNode as _createVNode, mergeProps as _mergeProps, Fragment as _Fragment } from "vue";
2
+ import { useHeader } from "./composables/header.js";
3
+ import { useSelection } from "./composables/selection.js";
4
+ import { useSorting } from "./composables/sorting.js";
2
5
  import { useRender } from "../../composables/component.js";
3
6
  import { wrapInArray } from "../../util/index.js";
4
7
  import { defineComponent, propsFactory } from "../../util/component/index.js";
@@ -7,9 +10,6 @@ import { YButton } from "../button/YButton.js";
7
10
  import { YIconCheckbox } from "../icons/YIconCheckbox.js";
8
11
  import { YIconSort } from "../icons/YIconSort.js";
9
12
  import { YDataTableCell } from "./YDataTableCell.js";
10
- import { useHeader } from "./composables/header.js";
11
- import { useSelection } from "./composables/selection.js";
12
- import { useSorting } from "./composables/sorting.js";
13
13
  export const pressYDataTableHeadProps = propsFactory({
14
14
  multiSort: Boolean,
15
15
  sortAscIcon: {
@@ -53,7 +53,7 @@ export const YDataTableHead = defineComponent({
53
53
  } = useHeader();
54
54
  const getFixedStyles = (column, y) => {
55
55
  if (!props.sticky && !column.fixed) return undefined;
56
- let fixedOffset = {};
56
+ const fixedOffset = {};
57
57
  if (column.fixed === true || column.fixed === 'left') {
58
58
  fixedOffset.left = toStyleSizeValue(column.fixedOffset);
59
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableHead.js","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 '@/components/table/composables/header';\nimport { useSelection } from '@/components/table/composables/selection';\nimport { useSorting } from '@/components/table/composables/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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","ignoreList":[]}
1
+ {"version":3,"file":"YDataTableHead.js","names":["useHeader","useSelection","useSorting","useRender","wrapInArray","defineComponent","propsFactory","toStyleSizeValue","YButton","YIconCheckbox","YIconSort","YDataTableCell","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 { useHeader } from '@/components/table/composables/header';\nimport { useSelection } from '@/components/table/composables/selection';\nimport { useSorting } from '@/components/table/composables/sorting';\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 type { FixedPropType, InternalDataTableHeader } from './types';\nimport { YDataTableCell } from './YDataTableCell';\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 const 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":";SAESA,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,UAAU;AAAA,SACVC,SAAS;AAAA,SACTC,WAAW;AAAA,SACXC,eAAe,EAAEC,YAAY;AAAA,SAC7BC,gBAAgB;AAAA,SAEhBC,OAAO;AAAA,SACPC,aAAa;AAAA,SACbC,SAAS;AAAA,SAETC,cAAc;AAEvB,OAAO,MAAMC,wBAAwB,GAAGN,YAAY,CAClD;EACEO,SAAS,EAAEC,OAAO;EAClBC,WAAW,EAAE;IACXC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,YAAY,EAAE;IACZH,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDE,YAAY,EAAEN,OAAO;EACrBO,MAAM,EAAEP;AACV,CAAC,EACD,gBACF,CAAC;AAED,OAAO,MAAMQ,cAAc,GAAGjB,eAAe,CAAC;EAC5CkB,IAAI,EAAE,gBAAgB;EACtBC,UAAU,EAAE;IACVb;EACF,CAAC;EACDc,KAAK,EAAE;IACL,GAAGb,wBAAwB,CAAC;EAC9B,CAAC;EACDc,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAM;MAAEE,UAAU;MAAEC,MAAM;MAAEC;IAAS,CAAC,GAAG7B,UAAU,CAAC,CAAC;IACrD,MAAM;MAAE8B,YAAY;MAAEC,WAAW;MAAEC,SAAS;MAAEC,aAAa;MAAEC;IAAY,CAAC,GACxEnC,YAAY,CAAC,CAAC;IAChB,MAAM;MAAEoC,OAAO;MAAEC;IAAQ,CAAC,GAAGtC,SAAS,CAAC,CAAC;IAExC,MAAMuC,cAAc,GAAGA,CACrBC,MAA+B,EAC/BC,CAAS,KACqB;MAC9B,IAAI,CAAChB,KAAK,CAACJ,MAAM,IAAI,CAACmB,MAAM,CAACE,KAAK,EAAE,OAAOC,SAAS;MACpD,MAAMC,WAAgB,GAAG,CAAC,CAAC;MAC3B,IAAIJ,MAAM,CAACE,KAAK,KAAK,IAAI,IAAIF,MAAM,CAACE,KAAK,KAAK,MAAM,EAAE;QACpDE,WAAW,CAACC,IAAI,GAAGtC,gBAAgB,CAACiC,MAAM,CAACI,WAAW,CAAC;MACzD;MACA,IAAIJ,MAAM,CAACE,KAAK,KAAK,OAAO,EAAE;QAC5BE,WAAW,CAACE,KAAK,GAAGvC,gBAAgB,CAACiC,MAAM,CAACO,WAAW,CAAC;MAC1D;MAEA,OAAO;QACLC,QAAQ,EAAE,QAAQ;QAClBC,MAAM,EAAET,MAAM,CAACE,KAAK,GAAG,CAAC,GAAGjB,KAAK,CAACJ,MAAM,GAAG,CAAC,GAAGsB,SAAS;QACvDO,GAAG,EAAEzB,KAAK,CAACJ,MAAM,GACb,uCAAuCoB,CAAC,GAAG,GAC3CE,SAAS;QACb,GAAGC;MACL,CAAC;IACH,CAAC;IAED,SAASO,OAAOA,CAACC,CAAQ,EAAE;MACzB;IAAA;IAGF,SAASC,gBAAgBA,CAACb,MAA+B,EAAE;MACzD,MAAMc,KAAK,GAAGxB,MAAM,CAACyB,KAAK,CAACC,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACC,GAAG,KAAKlB,MAAM,CAACkB,GAAG,CAAC;MAC9D,IAAI,CAACJ,KAAK,EAAE;QACV,OAAOX,SAAS;MAClB;MACA,IAAIW,KAAK,CAACK,KAAK,KAAK,KAAK,EAAE;QACzB,OAAO,KAAK;MACd;MACA,IAAIL,KAAK,CAACK,KAAK,KAAK,MAAM,EAAE;QAC1B,OAAO,MAAM;MACf;IACF;IAEA,MAAMC,YAAY,GAAGC,KAAA,IAQf;MAAA,IARgB;QACpBrB,MAAM;QACNsB,CAAC;QACDrB;MAKF,CAAC,GAAAoB,KAAA;MACC,OAAAE,YAAA,CAAApD,cAAA,EAAAqD,WAAA;QAAA;QAAA,SAGWxB,MAAM,CAACyB,KAAK;QAAA,SAEjBzB,MAAM,CAACE,KAAK,GACN,CAACF,MAAM,CAACE,KAAK,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM,KAC3CF,MAAM,CAAC0B,SAAS,GAAG,OAAO,GAAG,EAAE,CAAC,GACnCvB,SAAS;QAAA,SAER,CACL,qBAAqB,EACrB;UACE,+BAA+B,EAAEH,MAAM,CAAC2B,QAAQ;UAChD,6BAA6B,EAAEpC,QAAQ,CAACS,MAAM,CAAC;UAC/C,6BAA6B,EAAEA,MAAM,CAACkB,GAAG,KAAK;QAChD,CAAC,EACD,GAAGtD,WAAW,CAACoC,MAAM,CAAC4B,aAAa,IAAI,EAAE,CAAC,CAC3C;QAAA,SACM;UACLC,KAAK,EAAE9D,gBAAgB,CAACiC,MAAM,CAAC6B,KAAK,CAAC;UACrCC,QAAQ,EAAE/D,gBAAgB,CAACiC,MAAM,CAAC6B,KAAK,CAAC;UACxCE,QAAQ,EAAEhE,gBAAgB,CAACiC,MAAM,CAAC+B,QAAQ,CAAC;UAC3C,GAAGhC,cAAc,CAACC,MAAM,EAAEC,CAAC;QAC7B;MAAC;QACK+B,OAAO,EAAEhC,MAAM,CAACgC,OAAO;QAAEC,OAAO,EAAEjC,MAAM,CAACiC;MAAO;QAAA,WAC7CtB;MAAO;QAGdjC,OAAO,EAAEA,CAAA,KAAM;UACb,MAAMwD,cAAc,GAAG,UAAUlC,MAAM,CAACkB,GAAG,EAAW;UACtD,MAAMiB,eAAe,GAAG;YACtBnC,MAAM;YACNN,SAAS;YACTH,QAAQ;YACRF,UAAU;YACVC,MAAM,EAAEA,MAAM,CAACyB,KAAK;YACpBvB,YAAY,EAAEA,YAAY,CAACuB,KAAK;YAChCtB,WAAW,EAAEA,WAAW,CAACsB,KAAK;YAC9BnB,WAAW,EAAEA,WAAW,CAACmB,KAAK;YAC9BF;UACF,CAAC;UAED,IAAIzB,KAAK,CAAC8C,cAAc,CAAC,EAAE;YACzB,OAAO9C,KAAK,CAAC8C,cAAc,CAAC,GAAGC,eAAe,CAAC;UACjD;UAEA,IAAInC,MAAM,CAACkB,GAAG,KAAK,mBAAmB,EAAE;YACtC,OACE9B,KAAK,CAAC,0BAA0B,CAAC,GAAG+C,eAAe,CAAC,KACnDxC,aAAa,IAAA4B,YAAA,CAAAvD,OAAA;cAAA,aAEC,YAAY;cAAA,YACb4B,WAAW,CAACmB,KAAK,CAACqB,MAAM,GAAG,CAAC;cAAA,WAC5BxB,CAAa,IAAK;gBAC1BA,CAAC,CAACyB,eAAe,CAAC,CAAC;gBACnB3C,SAAS,CAAC,CAACD,WAAW,CAACsB,KAAK,CAAC;cAC/B;YAAC;cAAArC,OAAA,EAAAA,CAAA,MAAA6C,YAAA,CAAAtD,aAAA;gBAAA,WAGUwB,WAAW,CAACsB,KAAK;gBAAA,iBACX,CAACtB,WAAW,CAACsB,KAAK,IAAIvB,YAAY,CAACuB,KAAK;gBAAA,YAC7CnB,WAAW,CAACmB,KAAK,CAACqB,MAAM,GAAG;cAAC;YAAA,EAG3C,CAAC;UAEN;UAEA,OAAAb,YAAA;YAAA;UAAA,IAAAA,YAAA;YAAA;UAAA,IAGOnC,KAAK,GAAG,eAAeY,MAAM,CAACkB,GAAG,EAAE,CAAC,GAAGiB,eAAe,CAAC,IACtDnC,MAAM,CAACsC,IAAI,IAAAf,YAAA;YAAA,SAGN,CACL,mCAAmC,EACnC;cACE,6CAA6C,EAC3C,CAACvB,MAAM,CAAC2B;YACZ,CAAC,CACF;YAAA,WAEC3B,MAAM,CAAC2B,QAAQ,GACVf,CAAC,IAAK;cACLA,CAAC,CAACyB,eAAe,CAAC,CAAC;cACnBhD,UAAU,CAACW,MAAM,CAAC;YACpB,CAAC,GACDG;UAAS,IAAAoB,YAAA,CAAArD,SAAA;YAAA,YAIH,CAAC8B,MAAM,CAAC2B,QAAQ;YAAA,aACfd,gBAAgB,CAACb,MAAM;UAAC;QAK7C;MAAC;IAIT,CAAC;IAEDrC,SAAS,CAAC,MAAM;MACd,OAAA4D,YAAA,CAAAgB,SAAA,SAEKnD,KAAK,CAACoD,IAAI,GACPpD,KAAK,CAACoD,IAAI,GAAGvD,KAAK,CAAC,GACnBa,OAAO,CAACiB,KAAK,CAAC0B,GAAG,CAAC,CAACC,GAAG,EAAEzC,CAAC,KAAAsB,YAAA,cAEpBmB,GAAG,CAACD,GAAG,CAAC,CAACzC,MAAM,EAAEsB,CAAC,KAAAC,YAAA,CAAAH,YAAA;QAAA,UACKpB,MAAM;QAAA,KAAKsB,CAAC;QAAA,KAAKrB;MAAC,QACzC,CAAC,EAEL,CAAC;IAGZ,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
@@ -28,7 +28,6 @@ export const YDataTableRow = defineComponent({
28
28
  emits: ['hover', 'mousedown', 'click', 'dblclick', 'contextmenu'],
29
29
  setup(props, _ref) {
30
30
  let {
31
- emit,
32
31
  slots
33
32
  } = _ref;
34
33
  const vm = getCurrentInstance();
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableRow.js","names":["computed","getCurrentInstance","createVNode","_createVNode","mergeProps","_mergeProps","YButton","useExpand","useHeader","useSelection","useRender","getPropertyFromItem","defineComponent","propsFactory","YIconCheckbox","YDataTableCell","pressYDataTableRowProps","index","Number","onHover","Function","onMousedown","onClick","onDblclick","onContextmenu","onKeydown","YDataTableRow","name","props","item","Object","cellProps","emits","setup","_ref","emit","slots","vm","columns","isSelected","toggleSelect","isExpanded","toggleExpand","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","event","proxy","$el","value","map","column","colIndex","slotProps","raw","internalItem","key","el","result","call","align","fixed","lastFixed","undefined","fixedOffset","rightOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { type PropType, computed, getCurrentInstance } from 'vue';\n\nimport { YButton } from '@/components/button/YButton';\nimport { useExpand } from '@/components/table/composables/expand';\nimport { useHeader } from '@/components/table/composables/header';\nimport { useSelection } from '@/components/table/composables/selection';\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 { CellProps, DataTableItem, type FixedPropType } 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 { columns } = useHeader();\n const { isSelected, toggleSelect } = useSelection();\n const { isExpanded, toggleExpand } = useExpand();\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 {\n 'y-data-table__row--selected': selected.value,\n 'y-data-table__row--expanded': isExpanded(props.item!),\n },\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 isExpanded,\n toggleExpand,\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.fixed === 'right' ? 'trail' : 'lead') +\n (column.lastFixed ? '-last' : '')) as FixedPropType)\n : undefined\n }\n fixedOffset={column.fixedOffset}\n rightOffset={column.rightOffset}\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 <YButton\n variation={'text,small'}\n disabled={!item.selectable}\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n if (item.selectable) toggleSelect(item);\n }}\n >\n <YIconCheckbox\n checked={isSelected(item)}\n disabled={!item.selectable}\n ></YIconCheckbox>\n </YButton>\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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","ignoreList":[]}
1
+ {"version":3,"file":"YDataTableRow.js","names":["computed","getCurrentInstance","createVNode","_createVNode","mergeProps","_mergeProps","YButton","useExpand","useHeader","useSelection","useRender","getPropertyFromItem","defineComponent","propsFactory","YIconCheckbox","YDataTableCell","pressYDataTableRowProps","index","Number","onHover","Function","onMousedown","onClick","onDblclick","onContextmenu","onKeydown","YDataTableRow","name","props","item","Object","cellProps","emits","setup","_ref","slots","vm","columns","isSelected","toggleSelect","isExpanded","toggleExpand","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","event","proxy","$el","value","map","column","colIndex","slotProps","raw","internalItem","key","el","result","call","align","fixed","lastFixed","undefined","fixedOffset","rightOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { type PropType, computed, getCurrentInstance } from 'vue';\n\nimport { YButton } from '@/components/button/YButton';\nimport { useExpand } from '@/components/table/composables/expand';\nimport { useHeader } from '@/components/table/composables/header';\nimport { useSelection } from '@/components/table/composables/selection';\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 { CellProps, DataTableItem, type FixedPropType } 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, { slots }) {\n const vm = getCurrentInstance();\n const { columns } = useHeader();\n const { isSelected, toggleSelect } = useSelection();\n const { isExpanded, toggleExpand } = useExpand();\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 {\n 'y-data-table__row--selected': selected.value,\n 'y-data-table__row--expanded': isExpanded(props.item!),\n },\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 isExpanded,\n toggleExpand,\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.fixed === 'right' ? 'trail' : 'lead') +\n (column.lastFixed ? '-last' : '')) as FixedPropType)\n : undefined\n }\n fixedOffset={column.fixedOffset}\n rightOffset={column.rightOffset}\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 <YButton\n variation={'text,small'}\n disabled={!item.selectable}\n onClick={(e: MouseEvent) => {\n e.stopPropagation();\n if (item.selectable) toggleSelect(item);\n }}\n >\n <YIconCheckbox\n checked={isSelected(item)}\n disabled={!item.selectable}\n ></YIconCheckbox>\n </YButton>\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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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"items.js","names":["computed","ref","getPropertyFromItem","propsFactory","pressDataTableItemsProps","items","type","Array","default","itemKey","String","Function","itemSelectable","returnItem","Boolean","updateItem","props","item","index","columns","rowRef","key","value","selectable","itemColumns","reduce","acc","column","_bindRowRef","el","raw","updateItems","map","useItems"],"sources":["../../../../src/components/table/composables/items.ts"],"sourcesContent":["import { computed, type PropType, type Ref, ref } from 'vue';\r\n\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { DataTableItem, InternalDataTableHeader } from '../types';\r\n\r\nexport type DataTableItemsProps = {\r\n items: any[];\r\n itemKey: any;\r\n itemSelectable: any;\r\n returnItem: boolean;\r\n};\r\n\r\nexport const pressDataTableItemsProps = propsFactory(\r\n {\r\n items: {\r\n type: Array as PropType<DataTableItemsProps['items']>,\r\n default: () => [],\r\n },\r\n itemKey: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: 'id',\r\n },\r\n itemSelectable: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: null,\r\n },\r\n returnItem: Boolean,\r\n },\r\n 'YDataTable--items',\r\n);\r\n\r\nexport function updateItem(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n item: any,\r\n index: number,\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem {\r\n const rowRef = ref<any | null>(null);\r\n const key = getPropertyFromItem(item, props.itemKey);\r\n const value = props.returnItem ? item : key;\r\n let selectable;\r\n if (typeof props.itemSelectable === 'function') {\r\n selectable = !!props.itemSelectable(item);\r\n } else {\r\n selectable = getPropertyFromItem(item, props.itemSelectable, true);\r\n }\r\n\r\n const itemColumns = columns.reduce(\r\n (acc, column) => {\r\n acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);\r\n return acc;\r\n },\r\n {} as Record<string, unknown>,\r\n );\r\n\r\n function _bindRowRef(el: any | null) {\r\n rowRef.value = el;\r\n }\r\n\r\n return {\r\n index,\r\n key,\r\n value,\r\n selectable,\r\n columns: itemColumns,\r\n raw: item,\r\n rowRef,\r\n _bindRowRef,\r\n };\r\n}\r\n\r\nexport function updateItems(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n items: DataTableItemsProps['items'],\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem[] {\r\n return items.map((item, index) => updateItem(props, item, index, columns));\r\n}\r\n\r\nexport function useItems(\r\n props: DataTableItemsProps,\r\n columns: Ref<InternalDataTableHeader[]>,\r\n) {\r\n const items = computed(() => {\r\n return updateItems(props, props.items, columns.value);\r\n });\r\n return { items };\r\n}\r\n"],"mappings":"AAAA,SAASA,QAAQ,EAA2BC,GAAG,QAAQ,KAAK;AAAC,SAEpDC,mBAAmB;AAAA,SACnBC,YAAY;AAWrB,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAClD;EACEE,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA+C;IACrDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE;IACPH,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDI,cAAc,EAAE;IACdN,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAEC;AACd,CAAC,EACD,mBACF,CAAC;AAED,OAAO,SAASC,UAAUA,CACxBC,KAAyC,EACzCC,IAAS,EACTC,KAAa,EACbC,OAAkC,EACnB;EACf,MAAMC,MAAM,GAAGnB,GAAG,CAAa,IAAI,CAAC;EACpC,MAAMoB,GAAG,GAAGnB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACP,OAAO,CAAC;EACpD,MAAMa,KAAK,GAAGN,KAAK,CAACH,UAAU,GAAGI,IAAI,GAAGI,GAAG;EAC3C,IAAIE,UAAU;EACd,IAAI,OAAOP,KAAK,CAACJ,cAAc,KAAK,UAAU,EAAE;IAC9CW,UAAU,GAAG,CAAC,CAACP,KAAK,CAACJ,cAAc,CAACK,IAAI,CAAC;EAC3C,CAAC,MAAM;IACLM,UAAU,GAAGrB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACpE;EAEA,MAAMY,WAAW,GAAGL,OAAO,CAACM,MAAM,CAChC,CAACC,GAAG,EAAEC,MAAM,KAAK;IACfD,GAAG,CAACC,MAAM,CAACN,GAAG,CAAC,GAAGnB,mBAAmB,CAACe,IAAI,EAAEU,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACN,GAAG,CAAC;IACvE,OAAOK,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;EAED,SAASE,WAAWA,CAACC,EAAc,EAAE;IACnCT,MAAM,CAACE,KAAK,GAAGO,EAAE;EACnB;EAEA,OAAO;IACLX,KAAK;IACLG,GAAG;IACHC,KAAK;IACLC,UAAU;IACVJ,OAAO,EAAEK,WAAW;IACpBM,GAAG,EAAEb,IAAI;IACTG,MAAM;IACNQ;EACF,CAAC;AACH;AAEA,OAAO,SAASG,WAAWA,CACzBf,KAAyC,EACzCX,KAAmC,EACnCc,OAAkC,EACjB;EACjB,OAAOd,KAAK,CAAC2B,GAAG,CAAC,CAACf,IAAI,EAAEC,KAAK,KAAKH,UAAU,CAACC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;AAC5E;AAEA,OAAO,SAASc,QAAQA,CACtBjB,KAA0B,EAC1BG,OAAuC,EACvC;EACA,MAAMd,KAAK,GAAGL,QAAQ,CAAC,MAAM;IAC3B,OAAO+B,WAAW,CAACf,KAAK,EAAEA,KAAK,CAACX,KAAK,EAAEc,OAAO,CAACG,KAAK,CAAC;EACvD,CAAC,CAAC;EACF,OAAO;IAAEjB;EAAM,CAAC;AAClB","ignoreList":[]}
1
+ {"version":3,"file":"items.js","names":["computed","ref","getPropertyFromItem","propsFactory","pressDataTableItemsProps","items","type","Array","default","itemKey","String","Function","itemSelectable","returnItem","Boolean","updateItem","props","item","index","columns","rowRef","key","value","selectable","itemColumns","reduce","acc","column","_bindRowRef","el","raw","updateItems","map","useItems"],"sources":["../../../../src/components/table/composables/items.ts"],"sourcesContent":["import { computed, type PropType, type Ref, ref } from 'vue';\r\n\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { DataTableItem, InternalDataTableHeader } from '../types';\r\n\r\nexport type DataTableItemsProps = {\r\n items: any[];\r\n itemKey: any;\r\n itemSelectable: any;\r\n returnItem: boolean;\r\n};\r\n\r\nexport const pressDataTableItemsProps = propsFactory(\r\n {\r\n items: {\r\n type: Array as PropType<DataTableItemsProps['items']>,\r\n default: () => [],\r\n },\r\n itemKey: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: 'id',\r\n },\r\n itemSelectable: {\r\n type: [String, Array, Function] as PropType<any>,\r\n default: null,\r\n },\r\n returnItem: Boolean,\r\n },\r\n 'YDataTable--items',\r\n);\r\n\r\nexport function updateItem(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n item: any,\r\n index: number,\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem {\r\n const rowRef = ref<any | null>(null);\r\n const key = getPropertyFromItem(item, props.itemKey);\r\n const value = props.returnItem ? item : key;\r\n let selectable: boolean;\r\n if (typeof props.itemSelectable === 'function') {\r\n selectable = !!props.itemSelectable(item);\r\n } else {\r\n selectable = getPropertyFromItem(item, props.itemSelectable, true);\r\n }\r\n\r\n const itemColumns = columns.reduce(\r\n (acc, column) => {\r\n acc[column.key] = getPropertyFromItem(item, column.value ?? column.key);\r\n return acc;\r\n },\r\n {} as Record<string, unknown>,\r\n );\r\n\r\n function _bindRowRef(el: any | null) {\r\n rowRef.value = el;\r\n }\r\n\r\n return {\r\n index,\r\n key,\r\n value,\r\n selectable,\r\n columns: itemColumns,\r\n raw: item,\r\n rowRef,\r\n _bindRowRef,\r\n };\r\n}\r\n\r\nexport function updateItems(\r\n props: Omit<DataTableItemsProps, 'items'>,\r\n items: DataTableItemsProps['items'],\r\n columns: InternalDataTableHeader[],\r\n): DataTableItem[] {\r\n return items.map((item, index) => updateItem(props, item, index, columns));\r\n}\r\n\r\nexport function useItems(\r\n props: DataTableItemsProps,\r\n columns: Ref<InternalDataTableHeader[]>,\r\n) {\r\n const items = computed(() => {\r\n return updateItems(props, props.items, columns.value);\r\n });\r\n return { items };\r\n}\r\n"],"mappings":"AAAA,SAASA,QAAQ,EAA2BC,GAAG,QAAQ,KAAK;AAAC,SAEpDC,mBAAmB;AAAA,SACnBC,YAAY;AAWrB,OAAO,MAAMC,wBAAwB,GAAGD,YAAY,CAClD;EACEE,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA+C;IACrDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE;IACPH,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDI,cAAc,EAAE;IACdN,IAAI,EAAE,CAACI,MAAM,EAAEH,KAAK,EAAEI,QAAQ,CAAkB;IAChDH,OAAO,EAAE;EACX,CAAC;EACDK,UAAU,EAAEC;AACd,CAAC,EACD,mBACF,CAAC;AAED,OAAO,SAASC,UAAUA,CACxBC,KAAyC,EACzCC,IAAS,EACTC,KAAa,EACbC,OAAkC,EACnB;EACf,MAAMC,MAAM,GAAGnB,GAAG,CAAa,IAAI,CAAC;EACpC,MAAMoB,GAAG,GAAGnB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACP,OAAO,CAAC;EACpD,MAAMa,KAAK,GAAGN,KAAK,CAACH,UAAU,GAAGI,IAAI,GAAGI,GAAG;EAC3C,IAAIE,UAAmB;EACvB,IAAI,OAAOP,KAAK,CAACJ,cAAc,KAAK,UAAU,EAAE;IAC9CW,UAAU,GAAG,CAAC,CAACP,KAAK,CAACJ,cAAc,CAACK,IAAI,CAAC;EAC3C,CAAC,MAAM;IACLM,UAAU,GAAGrB,mBAAmB,CAACe,IAAI,EAAED,KAAK,CAACJ,cAAc,EAAE,IAAI,CAAC;EACpE;EAEA,MAAMY,WAAW,GAAGL,OAAO,CAACM,MAAM,CAChC,CAACC,GAAG,EAAEC,MAAM,KAAK;IACfD,GAAG,CAACC,MAAM,CAACN,GAAG,CAAC,GAAGnB,mBAAmB,CAACe,IAAI,EAAEU,MAAM,CAACL,KAAK,IAAIK,MAAM,CAACN,GAAG,CAAC;IACvE,OAAOK,GAAG;EACZ,CAAC,EACD,CAAC,CACH,CAAC;EAED,SAASE,WAAWA,CAACC,EAAc,EAAE;IACnCT,MAAM,CAACE,KAAK,GAAGO,EAAE;EACnB;EAEA,OAAO;IACLX,KAAK;IACLG,GAAG;IACHC,KAAK;IACLC,UAAU;IACVJ,OAAO,EAAEK,WAAW;IACpBM,GAAG,EAAEb,IAAI;IACTG,MAAM;IACNQ;EACF,CAAC;AACH;AAEA,OAAO,SAASG,WAAWA,CACzBf,KAAyC,EACzCX,KAAmC,EACnCc,OAAkC,EACjB;EACjB,OAAOd,KAAK,CAAC2B,GAAG,CAAC,CAACf,IAAI,EAAEC,KAAK,KAAKH,UAAU,CAACC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAEC,OAAO,CAAC,CAAC;AAC5E;AAEA,OAAO,SAASc,QAAQA,CACtBjB,KAA0B,EAC1BG,OAAuC,EACvC;EACA,MAAMd,KAAK,GAAGL,QAAQ,CAAC,MAAM;IAC3B,OAAO+B,WAAW,CAACf,KAAK,EAAEA,KAAK,CAACX,KAAK,EAAEc,OAAO,CAACG,KAAK,CAAC;EACvD,CAAC,CAAC;EACF,OAAO;IAAEjB;EAAM,CAAC;AAClB","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"selection.js","names":["computed","inject","provide","useModelDuplex","wrapInArray","deepEqual","getPropertyFromItem","propsFactory","pressDataTableSelectionProps","enableSelect","Boolean","selectStrategy","type","String","Object","default","modelValue","Array","itemComparator","Function","singleSelectStrategy","showSelectAll","allSelected","select","_ref","items","value","Set","selectAll","_ref2","selected","pageSelectStrategy","_ref3","pageItems","_ref4","item","add","delete","_ref5","allSelectStrategy","_ref6","allItems","_ref7","_ref8","Y_DATA_TABLE_SELECTION_KEY","Symbol","for","provideSelection","props","_ref9","v","map","find","itemKey","key","values","allSelectables","filter","selectable","pageSelectables","isSelected","every","has","isSomeSelected","some","toggleSelect","selectables","someSelected","data","useSelection","Error","description"],"sources":["../../../../src/components/table/composables/selection.ts"],"sourcesContent":["import {\n type InjectionKey,\n type PropType,\n type Ref,\n computed,\n inject,\n provide,\n} from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { wrapInArray } from '@/util/array';\nimport { deepEqual, getPropertyFromItem } from '@/util/common';\nimport { propsFactory } from '@/util/component';\n\nimport { DataTableProvideSelectionData } from '../types';\nimport { DataTableItemsProps } from './items';\n\nexport interface SelectableItem {\n key: string;\n value: any;\n selectable: boolean;\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean;\n allSelected: (data: {\n allItems: SelectableItem[];\n pageItems: SelectableItem[];\n }) => SelectableItem[];\n select: (data: {\n items: SelectableItem[];\n value: boolean;\n selected: Set<unknown>;\n }) => Set<unknown>;\n selectAll: (data: {\n value: boolean;\n allItems: SelectableItem[];\n pageItems: SelectableItem[];\n selected: Set<unknown>;\n }) => Set<unknown>;\n}\n\nexport const pressDataTableSelectionProps = propsFactory(\n {\n enableSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType<readonly any[]>,\n default: () => [],\n },\n itemComparator: {\n type: [Function, String] as PropType<typeof deepEqual | string>,\n default: () => deepEqual,\n },\n },\n 'YDataTable--selection',\n);\n\ntype DataTableSelectionProps = Pick<DataTableItemsProps, 'itemKey'> & {\n modelValue: readonly any[];\n selectStrategy: 'single' | 'page' | 'all';\n 'onUpdate:modelValue': ((value: any[]) => void) | undefined;\n itemComparator: ((a: any, b: any) => boolean) | string;\n};\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items, value }) => {\n return new Set(value ? [items[0]?.value] : []);\n },\n selectAll: ({ selected }) => selected,\n};\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ pageItems }) => pageItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value);\n else selected.delete(item.value);\n }\n\n return selected;\n },\n selectAll: ({ value, pageItems, selected }) =>\n pageSelectStrategy.select({ items: pageItems, value, selected }),\n};\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value);\n else selected.delete(item.value);\n }\n\n return selected;\n },\n selectAll: ({ value, allItems, selected }) =>\n allSelectStrategy.select({ items: allItems, value, selected }),\n};\n\nexport const Y_DATA_TABLE_SELECTION_KEY: InjectionKey<\n ReturnType<typeof provideSelection>\n> = Symbol.for('yuyeon.data-table.selection');\n\nexport function provideSelection(\n props: DataTableSelectionProps,\n {\n allItems,\n pageItems,\n }: { allItems: Ref<SelectableItem[]>; pageItems: Ref<SelectableItem[]> },\n) {\n const selected = useModelDuplex(\n props,\n 'modelValue',\n props.modelValue,\n (v) => {\n return new Set(\n wrapInArray(v).map((v) => {\n return (\n allItems.value.find((item) => {\n const { itemComparator } = props;\n if (typeof itemComparator === 'function') {\n itemComparator(v, item.value);\n }\n return getPropertyFromItem(v, props.itemKey) === item.key;\n })?.value ?? v\n );\n }),\n );\n },\n (v) => {\n return [...v.values()];\n },\n );\n\n const allSelectables = computed(() =>\n allItems.value.filter((item) => item.selectable),\n );\n\n const pageSelectables = computed(() =>\n pageItems.value.filter((item) => item.selectable),\n );\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') {\n return props.selectStrategy;\n }\n switch (props.selectStrategy) {\n case 'single':\n return singleSelectStrategy;\n case 'all':\n return allSelectStrategy;\n case 'page':\n default:\n return pageSelectStrategy;\n }\n });\n\n function isSelected(items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every((item) => selected.value.has(item.value));\n }\n\n function isSomeSelected(items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some((item) => selected.value.has(item.value));\n }\n\n function select(items: SelectableItem[], value: boolean) {\n selected.value = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n });\n }\n\n function toggleSelect(item: SelectableItem) {\n select([item], !isSelected([item]));\n }\n\n function selectAll(value: boolean) {\n selected.value = selectStrategy.value.selectAll({\n value,\n allItems: allSelectables.value,\n pageItems: pageSelectables.value,\n selected: new Set(selected.value),\n });\n }\n\n const selectables = computed(() => {\n return selectStrategy.value.allSelected({\n allItems: allSelectables.value,\n pageItems: pageSelectables.value,\n });\n });\n\n const someSelected = computed(() => {\n return isSomeSelected(pageSelectables.value);\n });\n\n const allSelected = computed(() => {\n return isSelected(selectables.value);\n });\n\n const data: DataTableProvideSelectionData = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll: selectStrategy.value.showSelectAll,\n selectables,\n };\n\n provide(Y_DATA_TABLE_SELECTION_KEY, data);\n\n return data;\n}\n\nexport function useSelection() {\n const data = inject(Y_DATA_TABLE_SELECTION_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_SELECTION_KEY.description}`);\n }\n\n return data;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"selection.js","names":["computed","inject","provide","useModelDuplex","wrapInArray","deepEqual","getPropertyFromItem","propsFactory","pressDataTableSelectionProps","enableSelect","Boolean","selectStrategy","type","String","Object","default","modelValue","Array","itemComparator","Function","singleSelectStrategy","showSelectAll","allSelected","select","_ref","items","value","Set","selectAll","_ref2","selected","pageSelectStrategy","_ref3","pageItems","_ref4","item","add","delete","_ref5","allSelectStrategy","_ref6","allItems","_ref7","_ref8","Y_DATA_TABLE_SELECTION_KEY","Symbol","for","provideSelection","props","_ref9","v","map","find","itemKey","key","values","allSelectables","filter","selectable","pageSelectables","isSelected","every","has","isSomeSelected","some","toggleSelect","selectables","someSelected","data","useSelection","Error","description"],"sources":["../../../../src/components/table/composables/selection.ts"],"sourcesContent":["import {\n computed,\n type InjectionKey,\n inject,\n type PropType,\n provide,\n type Ref,\n} from 'vue';\n\nimport { useModelDuplex } from '@/composables/communication';\nimport { wrapInArray } from '@/util/array';\nimport { deepEqual, getPropertyFromItem } from '@/util/common';\nimport { propsFactory } from '@/util/component';\n\nimport type { DataTableProvideSelectionData } from '../types';\nimport type { DataTableItemsProps } from './items';\n\nexport interface SelectableItem {\n key: string;\n value: any;\n selectable: boolean;\n}\n\nexport interface DataTableSelectStrategy {\n showSelectAll: boolean;\n allSelected: (data: {\n allItems: SelectableItem[];\n pageItems: SelectableItem[];\n }) => SelectableItem[];\n select: (data: {\n items: SelectableItem[];\n value: boolean;\n selected: Set<unknown>;\n }) => Set<unknown>;\n selectAll: (data: {\n value: boolean;\n allItems: SelectableItem[];\n pageItems: SelectableItem[];\n selected: Set<unknown>;\n }) => Set<unknown>;\n}\n\nexport const pressDataTableSelectionProps = propsFactory(\n {\n enableSelect: Boolean,\n selectStrategy: {\n type: [String, Object] as PropType<'single' | 'page' | 'all'>,\n default: 'page',\n },\n modelValue: {\n type: Array as PropType<readonly any[]>,\n default: () => [],\n },\n itemComparator: {\n type: [Function, String] as PropType<typeof deepEqual | string>,\n default: () => deepEqual,\n },\n },\n 'YDataTable--selection',\n);\n\ntype DataTableSelectionProps = Pick<DataTableItemsProps, 'itemKey'> & {\n modelValue: readonly any[];\n selectStrategy: 'single' | 'page' | 'all';\n 'onUpdate:modelValue': ((value: any[]) => void) | undefined;\n itemComparator: ((a: any, b: any) => boolean) | string;\n};\n\nconst singleSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: false,\n allSelected: () => [],\n select: ({ items, value }) => {\n return new Set(value ? [items[0]?.value] : []);\n },\n selectAll: ({ selected }) => selected,\n};\n\nconst pageSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ pageItems }) => pageItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value);\n else selected.delete(item.value);\n }\n\n return selected;\n },\n selectAll: ({ value, pageItems, selected }) =>\n pageSelectStrategy.select({ items: pageItems, value, selected }),\n};\n\nconst allSelectStrategy: DataTableSelectStrategy = {\n showSelectAll: true,\n allSelected: ({ allItems }) => allItems,\n select: ({ items, value, selected }) => {\n for (const item of items) {\n if (value) selected.add(item.value);\n else selected.delete(item.value);\n }\n\n return selected;\n },\n selectAll: ({ value, allItems, selected }) =>\n allSelectStrategy.select({ items: allItems, value, selected }),\n};\n\nexport const Y_DATA_TABLE_SELECTION_KEY: InjectionKey<\n ReturnType<typeof provideSelection>\n> = Symbol.for('yuyeon.data-table.selection');\n\nexport function provideSelection(\n props: DataTableSelectionProps,\n {\n allItems,\n pageItems,\n }: { allItems: Ref<SelectableItem[]>; pageItems: Ref<SelectableItem[]> },\n) {\n const selected = useModelDuplex(\n props,\n 'modelValue',\n props.modelValue,\n (v) => {\n return new Set(\n wrapInArray(v).map((v) => {\n return (\n allItems.value.find((item) => {\n const { itemComparator } = props;\n if (typeof itemComparator === 'function') {\n itemComparator(v, item.value);\n }\n return getPropertyFromItem(v, props.itemKey) === item.key;\n })?.value ?? v\n );\n }),\n );\n },\n (v) => {\n return [...v.values()];\n },\n );\n\n const allSelectables = computed(() =>\n allItems.value.filter((item) => item.selectable),\n );\n\n const pageSelectables = computed(() =>\n pageItems.value.filter((item) => item.selectable),\n );\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') {\n return props.selectStrategy;\n }\n switch (props.selectStrategy) {\n case 'single':\n return singleSelectStrategy;\n case 'all':\n return allSelectStrategy;\n case 'page':\n default:\n return pageSelectStrategy;\n }\n });\n\n function isSelected(items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).every((item) => selected.value.has(item.value));\n }\n\n function isSomeSelected(items: SelectableItem | SelectableItem[]) {\n return wrapInArray(items).some((item) => selected.value.has(item.value));\n }\n\n function select(items: SelectableItem[], value: boolean) {\n selected.value = selectStrategy.value.select({\n items,\n value,\n selected: new Set(selected.value),\n });\n }\n\n function toggleSelect(item: SelectableItem) {\n select([item], !isSelected([item]));\n }\n\n function selectAll(value: boolean) {\n selected.value = selectStrategy.value.selectAll({\n value,\n allItems: allSelectables.value,\n pageItems: pageSelectables.value,\n selected: new Set(selected.value),\n });\n }\n\n const selectables = computed(() => {\n return selectStrategy.value.allSelected({\n allItems: allSelectables.value,\n pageItems: pageSelectables.value,\n });\n });\n\n const someSelected = computed(() => {\n return isSomeSelected(pageSelectables.value);\n });\n\n const allSelected = computed(() => {\n return isSelected(selectables.value);\n });\n\n const data: DataTableProvideSelectionData = {\n toggleSelect,\n select,\n selectAll,\n isSelected,\n isSomeSelected,\n someSelected,\n allSelected,\n showSelectAll: selectStrategy.value.showSelectAll,\n selectables,\n };\n\n provide(Y_DATA_TABLE_SELECTION_KEY, data);\n\n return data;\n}\n\nexport function useSelection() {\n const data = inject(Y_DATA_TABLE_SELECTION_KEY);\n if (!data) {\n throw new Error(`Not provided: ${Y_DATA_TABLE_SELECTION_KEY.description}`);\n }\n\n return data;\n}\n"],"mappings":"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","ignoreList":[]}