yuyeon 0.3.2-rc.8 → 0.3.2-rc.9

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 (97) hide show
  1. package/dist/yuyeon.js +1564 -1540
  2. package/dist/yuyeon.umd.cjs +3 -3
  3. package/lib/components/table/YDataTable.js +13 -12
  4. package/lib/components/table/YDataTable.js.map +1 -1
  5. package/lib/components/table/YDataTableBody.js +2 -2
  6. package/lib/components/table/YDataTableBody.js.map +1 -1
  7. package/lib/components/table/YDataTableControl.js +1 -1
  8. package/lib/components/table/YDataTableControl.js.map +1 -1
  9. package/lib/components/table/YDataTableHead.js +3 -3
  10. package/lib/components/table/YDataTableHead.js.map +1 -1
  11. package/lib/components/table/YDataTableLayer.js +11 -4
  12. package/lib/components/table/YDataTableLayer.js.map +1 -1
  13. package/lib/components/table/YDataTableLayerRow.vue +145 -0
  14. package/lib/components/table/YDataTableRow.js +2 -2
  15. package/lib/components/table/YDataTableRow.js.map +1 -1
  16. package/lib/components/table/YDataTableServer.js +15 -14
  17. package/lib/components/table/YDataTableServer.js.map +1 -1
  18. package/lib/components/table/YTable.js +8 -3
  19. package/lib/components/table/YTable.js.map +1 -1
  20. package/lib/components/table/composables/header.js +127 -0
  21. package/lib/components/table/composables/header.js.map +1 -0
  22. package/lib/components/table/composables/items.js +52 -0
  23. package/lib/components/table/composables/items.js.map +1 -0
  24. package/lib/components/table/composables/measure.js +55 -0
  25. package/lib/components/table/composables/measure.js.map +1 -0
  26. package/lib/components/table/composables/options.js +33 -0
  27. package/lib/components/table/composables/options.js.map +1 -0
  28. package/lib/components/table/composables/pagination.js +99 -0
  29. package/lib/components/table/composables/pagination.js.map +1 -0
  30. package/lib/components/table/composables/provides.js +3 -0
  31. package/lib/components/table/composables/provides.js.map +1 -0
  32. package/lib/components/table/composables/selection.js +196 -0
  33. package/lib/components/table/composables/selection.js.map +1 -0
  34. package/lib/components/table/composables/sorted-items.js +50 -0
  35. package/lib/components/table/composables/sorted-items.js.map +1 -0
  36. package/lib/components/table/composables/sorting.js +73 -0
  37. package/lib/components/table/composables/sorting.js.map +1 -0
  38. package/lib/components/table/composibles/measure.js +21 -5
  39. package/lib/components/table/composibles/measure.js.map +1 -1
  40. package/lib/components/table/types/index.js.map +1 -1
  41. package/lib/components/table/types/item.js.map +1 -1
  42. package/package.json +1 -1
  43. package/types/abstract/items.d.ts +4 -4
  44. package/types/components/badge/YBadge.d.ts +4 -4
  45. package/types/components/button/YButton.d.ts +8 -8
  46. package/types/components/chip/YChip.d.ts +1 -1
  47. package/types/components/date-picker/YDateCalendar.d.ts +1 -1
  48. package/types/components/date-picker/YDatePicker.d.ts +1 -1
  49. package/types/components/date-picker/YDatePickerControl.d.ts +5 -5
  50. package/types/components/dialog/YDialog.d.ts +58 -58
  51. package/types/components/dropdown/YDropdown.d.ts +55 -55
  52. package/types/components/field-input/YFieldInput.d.ts +13 -13
  53. package/types/components/hover/YHover.d.ts +3 -3
  54. package/types/components/icon/YIcon.d.ts +2 -2
  55. package/types/components/img/YImg.d.ts +5 -5
  56. package/types/components/input/YInput.d.ts +9 -9
  57. package/types/components/ip-field/YIpv4Field.d.ts +1 -1
  58. package/types/components/layer/YLayer.d.ts +26 -26
  59. package/types/components/layer/content.d.ts +1 -1
  60. package/types/components/layer/scroll-strategies.d.ts +1 -1
  61. package/types/components/list/YListItem.d.ts +1 -1
  62. package/types/components/menu/YMenu.d.ts +9 -9
  63. package/types/components/pagination/YPagination.d.ts +5 -5
  64. package/types/components/select/YSelect.d.ts +62 -62
  65. package/types/components/snackbar/YSnackbar.d.ts +33 -33
  66. package/types/components/switch/YSwitch.d.ts +10 -10
  67. package/types/components/tab/YTab.d.ts +12 -12
  68. package/types/components/tab/YTabs.d.ts +4 -4
  69. package/types/components/table/YDataTable.d.ts +15 -15
  70. package/types/components/table/YDataTableBody.d.ts +2 -2
  71. package/types/components/table/YDataTableControl.d.ts +2 -2
  72. package/types/components/table/YDataTableHead.d.ts +2 -2
  73. package/types/components/table/YDataTableLayer.d.ts +4 -1
  74. package/types/components/table/YDataTableServer.d.ts +18 -18
  75. package/types/components/table/YTable.d.ts +4 -4
  76. package/types/components/table/composables/header.d.ts +207 -0
  77. package/types/components/table/composables/items.d.ts +55 -0
  78. package/types/components/table/composables/measure.d.ts +8 -0
  79. package/types/components/table/composables/options.d.ts +11 -0
  80. package/types/components/table/composables/pagination.d.ts +81 -0
  81. package/types/components/table/composables/provides.d.ts +15 -0
  82. package/types/components/table/composables/selection.d.ts +82 -0
  83. package/types/components/table/composables/sorted-items.d.ts +7 -0
  84. package/types/components/table/composables/sorting.d.ts +62 -0
  85. package/types/components/table/types/index.d.ts +1 -1
  86. package/types/components/table/types/item.d.ts +1 -1
  87. package/types/components/textarea/YTextarea.d.ts +18 -18
  88. package/types/components/tooltip/YTooltip.d.ts +46 -46
  89. package/types/components/tree-view/YTreeView.d.ts +4 -4
  90. package/types/components/tree-view/YTreeViewNode.d.ts +8 -8
  91. package/types/composables/choice.d.ts +1 -1
  92. package/types/composables/coordinate/index.d.ts +8 -8
  93. package/types/composables/form.d.ts +2 -2
  94. package/types/composables/icon.d.ts +2 -2
  95. package/types/composables/list-items.d.ts +10 -10
  96. package/types/composables/transition.d.ts +1 -1
  97. package/types/composables/validation.d.ts +3 -3
@@ -9,13 +9,14 @@ import { YDataTableControl } from "./YDataTableControl.js";
9
9
  import { YDataTableHead, pressYDataTableHeadProps } from "./YDataTableHead.js";
10
10
  import { YDataTableLayer } from "./YDataTableLayer.js";
11
11
  import { YTable, pressYTableProps } from "./YTable.js";
12
- import { createHeader, pressDataTableHeader } from "./composibles/header.js";
13
- import { pressDataTableItemsProps, useItems } from "./composibles/items.js";
14
- import { useOptions } from "./composibles/options.js";
15
- import { createPagination, pressDataTablePaginationProps, providePagination, usePaginatedItems } from "./composibles/pagination.js";
16
- import { pressDataTableSelectionProps, provideSelection } from "./composibles/selection.js";
17
- import { useSortedItems } from "./composibles/sorted-items.js";
18
- import { createSorting, pressDataTableSortProps, provideSorting } from "./composibles/sorting.js";
12
+ import { createHeader, pressDataTableHeader } from "./composables/header.js";
13
+ import { pressDataTableItemsProps, useItems } from "./composables/items.js";
14
+ import { useOptions } from "./composables/options.js";
15
+ import { createPagination, pressDataTablePaginationProps, providePagination, usePaginatedItems } from "./composables/pagination.js";
16
+ import { pressDataTableSelectionProps, provideSelection } from "./composables/selection.js";
17
+ import { useSortedItems } from "./composables/sorted-items.js";
18
+ import { createSorting, pressDataTableSortProps, provideSorting } from "./composables/sorting.js";
19
+ import { YDataTableInjectionKey } from "./composables/provides.js";
19
20
  export const pressDataTableProps = propsFactory({
20
21
  ...pressYDataTableBodyProps(),
21
22
  width: [String, Number],
@@ -117,11 +118,6 @@ export const YDataTable = defineComponent({
117
118
  search: toRef(props, 'search'),
118
119
  sortBy
119
120
  }, emit);
120
- provide('y-data-table', {
121
- toggleSort,
122
- sortBy,
123
- headRect
124
- });
125
121
  const slotProps = computed(() => {
126
122
  return {
127
123
  // pagination
@@ -148,6 +144,11 @@ export const YDataTable = defineComponent({
148
144
  TableBodyRef
149
145
  };
150
146
  });
147
+ provide(YDataTableInjectionKey, {
148
+ toggleSort,
149
+ sortBy,
150
+ headRect
151
+ });
151
152
  useRender(() => {
152
153
  const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);
153
154
  const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTable.js","names":["computed","provide","ref","toRef","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","toStyleSizeValue","YDataTableBody","pressYDataTableBodyProps","YDataTableControl","YDataTableHead","pressYDataTableHeadProps","YDataTableLayer","YTable","pressYTableProps","createHeader","pressDataTableHeader","pressDataTableItemsProps","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","usePaginatedItems","pressDataTableSelectionProps","provideSelection","useSortedItems","createSorting","pressDataTableSortProps","provideSorting","pressDataTableProps","width","String","Number","search","hideDefaultTbody","Boolean","YDataTable","name","props","emits","value","page","pageSize","sortBy","options","click:row","e","scroll","setup","_ref","slots","emit","TableBodyRef","multiSort","columns","headers","enableSelect","items","toggleSort","total","length","startIndex","endIndex","pageLength","setPageSize","setPage","sortedItems","paginatedItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","resizeObservedRef","headObserveRef","contentRect","headRect","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend","append"],"sources":["../../../src/components/table/YDataTable.tsx"],"sourcesContent":["import { type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YDataTableBody, pressYDataTableBodyProps } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead, pressYDataTableHeadProps } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable, pressYTableProps } from './YTable';\nimport { createHeader, pressDataTableHeader } from './composibles/header';\nimport { pressDataTableItemsProps, useItems } from './composibles/items';\nimport { useOptions } from './composibles/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n usePaginatedItems,\n} from './composibles/pagination';\nimport {\n pressDataTableSelectionProps,\n provideSelection,\n} from './composibles/selection';\nimport { useSortedItems } from './composibles/sorted-items';\nimport {\n createSorting,\n pressDataTableSortProps,\n provideSorting,\n} from './composibles/sorting';\nimport { YDataTableSlotProps } from './types';\n\nexport const pressDataTableProps = propsFactory(\n {\n ...pressYDataTableBodyProps(),\n width: [String, Number] as PropType<string | number>,\n search: String as PropType<string>,\n hideDefaultTbody: Boolean,\n ...pressDataTableHeader(),\n ...pressDataTableItemsProps(),\n ...pressDataTableSortProps(),\n ...pressDataTableSelectionProps(),\n ...pressYDataTableHeadProps(),\n ...pressYTableProps(),\n },\n 'DataTable',\n);\n\nexport const YDataTable = defineComponent({\n name: 'YDataTable',\n props: {\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n scroll: (e: Event) => true,\n },\n setup(props, { slots, emit }) {\n const TableBodyRef = ref();\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const total = computed(() => items.value.length);\n const { startIndex, endIndex, pageLength, setPageSize, setPage } =\n providePagination({\n page,\n pageSize,\n total,\n });\n const { sortedItems } = useSortedItems(props, items, sortBy);\n const { paginatedItems } = usePaginatedItems({\n items: sortedItems,\n startIndex,\n endIndex,\n pageSize,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n\n const { resizeObservedRef: headObserveRef, contentRect: headRect } =\n useResizeObserver();\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n provide('y-data-table', {\n toggleSort,\n sortBy,\n headRect,\n });\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n //\n items: paginatedItems.value,\n columns: columns.value,\n headers: headers.value,\n //\n TableBodyRef,\n };\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer\n v-slots={slots}\n slot-props={slotProps.value}\n ></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n {!props.hideDefaultTbody && (\n <tbody>\n <YDataTableBody\n ref={TableBodyRef}\n v-slots={slots}\n {...yDataTableBodyProps}\n items={slotProps.value.items}\n ></YDataTableBody>\n </tbody>\n )}\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n v-slots={{\n prepend: slots['control.prepend'],\n append: slots['control.append'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n return { paginatedItems };\n },\n});\n\nexport type YDataTable = InstanceType<typeof YDataTable>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"YDataTable.js","names":["computed","provide","ref","toRef","useRender","useResizeObserver","chooseProps","defineComponent","propsFactory","toStyleSizeValue","YDataTableBody","pressYDataTableBodyProps","YDataTableControl","YDataTableHead","pressYDataTableHeadProps","YDataTableLayer","YTable","pressYTableProps","createHeader","pressDataTableHeader","pressDataTableItemsProps","useItems","useOptions","createPagination","pressDataTablePaginationProps","providePagination","usePaginatedItems","pressDataTableSelectionProps","provideSelection","useSortedItems","createSorting","pressDataTableSortProps","provideSorting","YDataTableInjectionKey","pressDataTableProps","width","String","Number","search","hideDefaultTbody","Boolean","YDataTable","name","props","emits","value","page","pageSize","sortBy","options","click:row","e","scroll","setup","_ref","slots","emit","TableBodyRef","multiSort","columns","headers","enableSelect","items","toggleSort","total","length","startIndex","endIndex","pageLength","setPageSize","setPage","sortedItems","paginatedItems","isSelected","select","selectAll","toggleSelect","someSelected","allSelected","allItems","pageItems","resizeObservedRef","headObserveRef","contentRect","headRect","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","prepend","append"],"sources":["../../../src/components/table/YDataTable.tsx"],"sourcesContent":["import { type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YDataTableBody, pressYDataTableBodyProps } from './YDataTableBody';\nimport { YDataTableControl } from './YDataTableControl';\nimport { YDataTableHead, pressYDataTableHeadProps } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable, pressYTableProps } from './YTable';\nimport { createHeader, pressDataTableHeader } from '@/components/table/composables/header';\nimport { pressDataTableItemsProps, useItems } from '@/components/table/composables/items';\nimport { useOptions } from '@/components/table/composables/options';\nimport {\n createPagination,\n pressDataTablePaginationProps,\n providePagination,\n usePaginatedItems,\n} from '@/components/table/composables/pagination';\nimport {\n pressDataTableSelectionProps,\n provideSelection,\n} from '@/components/table/composables/selection';\nimport { useSortedItems } from '@/components/table/composables/sorted-items';\nimport {\n createSorting,\n pressDataTableSortProps,\n provideSorting,\n} from '@/components/table/composables/sorting';\nimport { YDataTableSlotProps } from './types';\nimport { YDataTableInjectionKey } from '@/components/table/composables/provides';\n\nexport const pressDataTableProps = propsFactory(\n {\n ...pressYDataTableBodyProps(),\n width: [String, Number] as PropType<string | number>,\n search: String as PropType<string>,\n hideDefaultTbody: Boolean,\n ...pressDataTableHeader(),\n ...pressDataTableItemsProps(),\n ...pressDataTableSortProps(),\n ...pressDataTableSelectionProps(),\n ...pressYDataTableHeadProps(),\n ...pressYTableProps(),\n },\n 'DataTable',\n);\n\nexport const YDataTable = defineComponent({\n name: 'YDataTable',\n props: {\n ...pressDataTablePaginationProps(),\n ...pressDataTableProps(),\n },\n emits: {\n 'update:modelValue': (value: any[]) => true,\n 'update:page': (page: number) => true,\n 'update:pageSize': (pageSize: number) => true,\n 'update:sortBy': (sortBy: any) => true,\n 'update:options': (options: any) => true,\n 'click:row': (e: Event, value: { row: any }) => true,\n scroll: (e: Event) => true,\n },\n setup(props, { slots, emit }) {\n const TableBodyRef = ref();\n const { page, pageSize } = createPagination(props);\n const { sortBy, multiSort } = createSorting(props);\n const { columns, headers } = createHeader(props, {\n enableSelect: toRef(props, 'enableSelect'),\n });\n const { items } = useItems(props, columns);\n const { toggleSort } = provideSorting({ sortBy, multiSort, page });\n const total = computed(() => items.value.length);\n const { startIndex, endIndex, pageLength, setPageSize, setPage } =\n providePagination({\n page,\n pageSize,\n total,\n });\n const { sortedItems } = useSortedItems(props, items, sortBy);\n const { paginatedItems } = usePaginatedItems({\n items: sortedItems,\n startIndex,\n endIndex,\n pageSize,\n });\n const {\n isSelected,\n select,\n selectAll,\n toggleSelect,\n someSelected,\n allSelected,\n } = provideSelection(props, { allItems: items, pageItems: items });\n\n const { resizeObservedRef: headObserveRef, contentRect: headRect } =\n useResizeObserver();\n\n useOptions(\n {\n page,\n pageSize,\n search: toRef(props, 'search'),\n sortBy,\n },\n emit,\n );\n\n const slotProps = computed<YDataTableSlotProps>(() => {\n return {\n // pagination\n page: page.value,\n pageSize: pageSize.value,\n pageLength: pageLength.value,\n setPageSize,\n setPage,\n // sorting\n sortBy: sortBy.value,\n toggleSort,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n //\n items: paginatedItems.value,\n columns: columns.value,\n headers: headers.value,\n //\n TableBodyRef,\n };\n });\n\n provide(YDataTableInjectionKey, {\n toggleSort,\n sortBy,\n headRect,\n });\n\n useRender(() => {\n const yDataTableHeadProps = chooseProps(props, YDataTableHead.props);\n const yDataTableBodyProps = chooseProps(props, YDataTableBody.props);\n const yTableProps = chooseProps(props, YTable.props);\n return (\n <YTable\n class={[\n 'y-data-table',\n {\n 'y-data-table--no-data':\n !props.loading && props.items.length < 1 && !props.hideNoData,\n },\n ]}\n {...yTableProps}\n style={{\n '--y-table-head-height': toStyleSizeValue(headRect.value?.height),\n }}\n >\n {{\n top: () => slots.top?.(slotProps.value),\n leading: () =>\n slots.leading ? (\n slots.leading(slotProps.value)\n ) : (\n <>\n <YDataTableLayer\n v-slots={slots}\n slot-props={slotProps.value}\n ></YDataTableLayer>\n </>\n ),\n default: () =>\n slots.default ? (\n slots.default(slotProps.value)\n ) : (\n <>\n <thead ref={headObserveRef}>\n <YDataTableHead\n v-slots={slots}\n {...yDataTableHeadProps}\n ></YDataTableHead>\n </thead>\n {slots.thead?.(slotProps.value)}\n {!props.hideDefaultTbody && (\n <tbody>\n <YDataTableBody\n ref={TableBodyRef}\n v-slots={slots}\n {...yDataTableBodyProps}\n items={slotProps.value.items}\n ></YDataTableBody>\n </tbody>\n )}\n {slots.tbody?.(slotProps.value)}\n {slots.tfoot?.(slotProps.value)}\n </>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n v-slots={{\n prepend: slots['control.prepend'],\n append: slots['control.append'],\n }}\n ></YDataTableControl>\n ),\n }}\n </YTable>\n );\n });\n\n return { paginatedItems };\n },\n});\n\nexport type YDataTable = InstanceType<typeof YDataTable>;\n"],"mappings":"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"}
@@ -3,8 +3,8 @@ import { mergeProps, ref } from 'vue';
3
3
  import { useRender } from "../../composables/component.js";
4
4
  import { defineComponent, propsFactory } from "../../util/component/index.js";
5
5
  import { YDataTableRow } from "./YDataTableRow.js";
6
- import { useHeader } from "./composibles/header.js";
7
- import { useSelection } from "./composibles/selection.js";
6
+ import { useHeader } from "./composables/header.js";
7
+ import { useSelection } from "./composables/selection.js";
8
8
  export const pressYDataTableBodyProps = propsFactory({
9
9
  items: {
10
10
  type: Array,
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableBody.js","names":["mergeProps","ref","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","expose","rowRefs","columns","isSelected","toggleSelect","_createVNode","value","length","_Fragment","body","map","item","index","stateProps","raw","internalItem","onClick","event","el","onDblclick","onContextmenu","onMousedown","onKeydown","slotProps","key","_mergeProps","push","rowRef"],"sources":["../../../src/components/table/YDataTableBody.tsx"],"sourcesContent":["import { type PropType, mergeProps, ref } 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, expose }) {\n const rowRefs = ref<any[]>([]);\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 ref={(el) => {\n rowRefs.value.push(el);\n item.rowRef = el;\n }}\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 expose({\n rowRefs,\n });\n\n // end\n return {\n rowRefs,\n };\n },\n});\n\nexport type YDataTableBody = InstanceType<typeof YDataTableBody>;\n"],"mappings":";AAAA,SAAwBA,UAAU,EAAEC,GAAG,QAAQ,KAAK;AAAC,SAE5CC,SAAS;AAAA,SACTC,eAAe,EAAEC,YAAY;AAAA,SAE7BC,aAAa;AAAA,SACbC,SAAS;AAAA,SACTC,YAAY;AAGrB,OAAO,MAAMC,wBAAwB,GAAGJ,YAAY,CAClD;EACEK,KAAK,EAAE;IACLC,IAAI,EAAEC,KAA2C;IACjDC,OAAO,EAAEA,CAAA,KAAM;EACjB,CAAC;EACDC,OAAO,EAAE,CAACC,OAAO,EAAEC,MAAM,CAAC;EAC1BC,WAAW,EAAED,MAAM;EACnBE,UAAU,EAAEH,OAAO;EACnBI,UAAU,EAAE;IACVR,IAAI,EAAEK,MAAM;IACZH,OAAO,EAAE;EACX,CAAC;EACDO,QAAQ,EAAE,CAACC,QAAQ,EAAEC,MAAM,CAA4B;EACvDC,SAAS,EAAEC,MAAM;EACjB,aAAa,EAAEH,QAAoD;EACnE,gBAAgB,EAAEA,QAAoD;EACtE,mBAAmB,EAAEA,QAAoD;EACzE,iBAAiB,EAAEA,QAAoD;EACvE,eAAe,EAAEA;AACnB,CAAC,EACD,gBACF,CAAC;AAED,OAAO,MAAMI,cAAc,GAAGrB,eAAe,CAAC;EAC5CsB,IAAI,EAAE,gBAAgB;EACtBC,KAAK,EAAE;IACL,GAAGlB,wBAAwB,CAAC;EAC9B,CAAC;EACDmB,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,CAAC;EACxEC,KAAKA,CAACF,KAAK,EAAAG,IAAA,EAAqB;IAAA,IAAnB;MAAEC,KAAK;MAAEC;IAAO,CAAC,GAAAF,IAAA;IAC5B,MAAMG,OAAO,GAAG/B,GAAG,CAAQ,EAAE,CAAC;IAC9B,MAAM;MAAEgC;IAAQ,CAAC,GAAG3B,SAAS,CAAC,CAAC;IAC/B,MAAM;MAAE4B,UAAU;MAAEC;IAAa,CAAC,GAAG5B,YAAY,CAAC,CAAC;IAEnDL,SAAS,CAAC,MAAM;MACd,IAAIwB,KAAK,CAACb,OAAO,EAAE;QACjB,OAAAuB,YAAA,cAAAA,YAAA;UAAA,WAEiBH,OAAO,CAACI,KAAK,CAACC,MAAM;UAAA,SAAS;QAAuB,IAC9DR,KAAK,CAACjB,OAAO,GAAGiB,KAAK,CAACjB,OAAO,CAAC,CAAC,GAAAuB,YAAA,eAASV,KAAK,CAACV,WAAW,EAAO;MAIzE;MACA,IAAI,CAACU,KAAK,CAACb,OAAO,IAAIa,KAAK,CAACjB,KAAK,CAAC6B,MAAM,GAAG,CAAC,IAAI,CAACZ,KAAK,CAACT,UAAU,EAAE;QACjE,OAAAmB,YAAA;UAAA;UAAA;QAAA,IAAAA,YAAA;UAAA,WAEiBH,OAAO,CAACI,KAAK,CAACC;QAAM,IAC9BR,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAIJ,KAAK,CAACR,UAAU;MAIjD;MACA,OAAAkB,YAAA,CAAAG,SAAA,SAEKT,KAAK,CAACU,IAAI,GACPV,KAAK,CAACU,IAAI,GAAGd,KAAK,CAAC,GACnBA,KAAK,CAACjB,KAAK,CAACgC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;QAC/B,MAAMC,UAAU,GAAG;UACjBD,KAAK;UACLD,IAAI,EAAEA,IAAI,CAACG,GAAG;UACdC,YAAY,EAAEJ,IAAI;UAClBT,OAAO,EAAEA,OAAO,CAACI,KAAK;UACtBH,UAAU;UACVC;QACF,CAAC;QAED,SAASY,OAAOA,CAACC,KAAY,EAAEC,EAAkB,EAAE;UACjDvB,KAAK,CAAC,aAAa,CAAC,GAAGsB,KAAK,EAAE;YAAE,GAAGJ,UAAU;YAAEK;UAAG,CAAC,CAAC;QACtD;QAEA,SAASC,UAAUA,CAACF,KAAY,EAAEC,EAAkB,EAAE;UACpDvB,KAAK,CAAC,gBAAgB,CAAC,GAAGsB,KAAK,EAAE;YAAE,GAAGJ,UAAU;YAAEK;UAAG,CAAC,CAAC;QACzD;QAEA,SAASE,aAAaA,CAACH,KAAY,EAAEC,EAAkB,EAAE;UACvDvB,KAAK,CAAC,mBAAmB,CAAC,GAAGsB,KAAK,EAAE;YAClC,GAAGJ,UAAU;YACbK;UACF,CAAC,CAAC;QACJ;QAEA,SAASG,WAAWA,CAACJ,KAAY,EAAEC,EAAkB,EAAE;UACrDvB,KAAK,CAAC,iBAAiB,CAAC,GAAGsB,KAAK,EAAE;YAAE,GAAGJ,UAAU;YAAEK;UAAG,CAAC,CAAC;QAC1D;QAEA,SAASI,SAASA,CAACL,KAAY,EAAEC,EAAkB,EAAE;UACnDvB,KAAK,CAAC,eAAe,CAAC,GAAGsB,KAAK,EAAE;YAAE,GAAGJ,UAAU;YAAEK;UAAG,CAAC,CAAC;QACxD;QAEA,MAAMK,SAAS,GAAG;UAChB,GAAGV,UAAU;UACblB,KAAK,EAAE1B,UAAU,CACf;YACEuD,GAAG,EAAG,SAAQb,IAAI,CAACa,GAAG,IAAIb,IAAI,CAACC,KAAM,EAAC;YACtCD,IAAI;YACJC;UACF,CAAC,EACD,OAAOjB,KAAK,CAACP,QAAQ,KAAK,UAAU,GAChCO,KAAK,CAACP,QAAQ,CAAC;YACbuB,IAAI,EAAEE,UAAU,CAACF,IAAI;YACrBC,KAAK,EAAEC,UAAU,CAACD,KAAK;YACvBG,YAAY,EAAEF,UAAU,CAACE;UAC3B,CAAC,CAAC,GACFpB,KAAK,CAACP,QACZ,CAAC;UACD4B,OAAO;UACPI,aAAa;UACbD,UAAU;UACVE,WAAW;UACXC;QACF,CAAC;QAED,OAAAjB,YAAA,CAAAG,SAAA,SAEKT,KAAK,CAACY,IAAI,GACTZ,KAAK,CAACY,IAAI,CAACY,SAAS,CAAC,GAAAlB,YAAA,CAAA/B,aAAA,EAAAmD,WAAA;UAAA,OAGbP,EAAE,IAAK;YACXjB,OAAO,CAACK,KAAK,CAACoB,IAAI,CAACR,EAAE,CAAC;YACtBP,IAAI,CAACgB,MAAM,GAAGT,EAAE;UAClB;QAAC,GAEGK,SAAS,CAAC5B,KAAK;UAAA,WACVA,KAAK,CAAC,aAAa,CAAC,IAAIqB,OAAO;UAAA,iBAEtCrB,KAAK,CAAC,mBAAmB,CAAC,IAAIyB,aAAa;UAAA,cAEjCzB,KAAK,CAAC,gBAAgB,CAAC,IAAIwB,UAAU;UAAA,eACpCxB,KAAK,CAAC,iBAAiB,CAAC,IAAI0B,WAAW;UAAA,aACzC1B,KAAK,CAAC,eAAe,CAAC,IAAI2B;QAAS,IARrCvB,KAAK,CAUjB;MAGP,CAAC,CAAC;IAGZ,CAAC,CAAC;IAEFC,MAAM,CAAC;MACLC;IACF,CAAC,CAAC;;IAEF;IACA,OAAO;MACLA;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableBody.js","names":["mergeProps","ref","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","expose","rowRefs","columns","isSelected","toggleSelect","_createVNode","value","length","_Fragment","body","map","item","index","stateProps","raw","internalItem","onClick","event","el","onDblclick","onContextmenu","onMousedown","onKeydown","slotProps","key","_mergeProps","push","rowRef"],"sources":["../../../src/components/table/YDataTableBody.tsx"],"sourcesContent":["import { type PropType, mergeProps, ref } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { defineComponent, propsFactory } from '@/util/component';\n\nimport { YDataTableRow } from './YDataTableRow';\nimport { useHeader } from '@/components/table/composables/header';\nimport { useSelection } from '@/components/table/composables/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, expose }) {\n const rowRefs = ref<any[]>([]);\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 ref={(el) => {\n rowRefs.value.push(el);\n item.rowRef = el;\n }}\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 expose({\n rowRefs,\n });\n\n // end\n return {\n rowRefs,\n };\n },\n});\n\nexport type YDataTableBody = InstanceType<typeof YDataTableBody>;\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { YButton } from "../button/index.js";
6
6
  import { YFieldInput } from "../field-input/index.js";
7
7
  import { YIconExpand, YIconPageControl } from "../icons/index.js";
8
8
  import { YPagination } from "../pagination/index.js";
9
- import { pressDataTablePaginationProps } from "./composibles/pagination.js";
9
+ import { pressDataTablePaginationProps } from "./composables/pagination.js";
10
10
  import "./YDataTableControl.scss";
11
11
  export const pressYDataTableControlPropsOptions = propsFactory({
12
12
  pageLength: Number,
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableControl.js","names":["useRender","propsFactory","defineComponent","YButton","YFieldInput","YIconExpand","YIconPageControl","YPagination","pressDataTablePaginationProps","pressYDataTableControlPropsOptions","pageLength","Number","setPageSize","Function","setPage","YDataTableControl","name","components","props","setup","_ref","slots","_createVNode","prepend","default","_Fragment","page","append"],"sources":["../../../src/components/table/YDataTableControl.tsx"],"sourcesContent":["import { type PropType } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { propsFactory } from '@/util';\nimport { defineComponent } from '@/util/component';\n\nimport { YButton } from '../button';\nimport { YFieldInput } from '../field-input';\nimport { YIconExpand, YIconPageControl } from '../icons';\nimport { YPagination } from '../pagination';\nimport { pressDataTablePaginationProps } from './composibles/pagination';\n\nimport './YDataTableControl.scss';\n\nexport const pressYDataTableControlPropsOptions = propsFactory(\n {\n pageLength: Number as PropType<number>,\n setPageSize: Function as PropType<(pageSize: number) => void>,\n setPage: Function as PropType<(page: number) => void>,\n ...pressDataTablePaginationProps(),\n },\n 'YDataTableControl',\n);\n\nexport const YDataTableControl = defineComponent({\n name: 'YDataTableControl',\n components: {\n YButton,\n YIconExpand,\n YFieldInput,\n YIconPageControl,\n },\n props: pressYDataTableControlPropsOptions(),\n setup(props, { slots }) {\n useRender(() => {\n return (\n <footer class={['y-data-table-control']}>\n {slots.prepend?.(props)}\n {slots.default ? (\n slots.default()\n ) : (\n <>\n <div class=\"y-data-table-control__start\"></div>\n <div class=\"y-data-table-control__end\">\n <YPagination\n model-value={props.page}\n onUpdate:modelValue={props.setPage}\n length={props.pageLength}\n totalVisible={0}\n ></YPagination>\n </div>\n </>\n )}\n {slots.append?.(props)}\n </footer>\n );\n });\n },\n});\n\nexport type YDataTableControl = InstanceType<typeof YDataTableControl>;\n"],"mappings":";SAESA,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,eAAe;AAAA,SAEfC,OAAO;AAAA,SACPC,WAAW;AAAA,SACXC,WAAW,EAAEC,gBAAgB;AAAA,SAC7BC,WAAW;AAAA,SACXC,6BAA6B;AAEtC;AAEA,OAAO,MAAMC,kCAAkC,GAAGR,YAAY,CAC5D;EACES,UAAU,EAAEC,MAA0B;EACtCC,WAAW,EAAEC,QAAgD;EAC7DC,OAAO,EAAED,QAA4C;EACrD,GAAGL,6BAA6B,CAAC;AACnC,CAAC,EACD,mBACF,CAAC;AAED,OAAO,MAAMO,iBAAiB,GAAGb,eAAe,CAAC;EAC/Cc,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVd,OAAO;IACPE,WAAW;IACXD,WAAW;IACXE;EACF,CAAC;EACDY,KAAK,EAAET,kCAAkC,CAAC,CAAC;EAC3CU,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBpB,SAAS,CAAC,MAAM;MACd,OAAAsB,YAAA;QAAA,SACiB,CAAC,sBAAsB;MAAC,IACpCD,KAAK,CAACE,OAAO,GAAGL,KAAK,CAAC,EACtBG,KAAK,CAACG,OAAO,GACZH,KAAK,CAACG,OAAO,CAAC,CAAC,GAAAF,YAAA,CAAAG,SAAA,SAAAH,YAAA;QAAA;MAAA,UAAAA,YAAA;QAAA;MAAA,IAAAA,YAAA,CAAAf,WAAA;QAAA,eAMIW,KAAK,CAACQ,IAAI;QAAA,uBACFR,KAAK,CAACJ,OAAO;QAAA,UAC1BI,KAAK,CAACR,UAAU;QAAA,gBACV;MAAC,YAItB,EACAW,KAAK,CAACM,MAAM,GAAGT,KAAK,CAAC;IAG5B,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableControl.js","names":["useRender","propsFactory","defineComponent","YButton","YFieldInput","YIconExpand","YIconPageControl","YPagination","pressDataTablePaginationProps","pressYDataTableControlPropsOptions","pageLength","Number","setPageSize","Function","setPage","YDataTableControl","name","components","props","setup","_ref","slots","_createVNode","prepend","default","_Fragment","page","append"],"sources":["../../../src/components/table/YDataTableControl.tsx"],"sourcesContent":["import { type PropType } from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { propsFactory } from '@/util';\nimport { defineComponent } from '@/util/component';\n\nimport { YButton } from '../button';\nimport { YFieldInput } from '../field-input';\nimport { YIconExpand, YIconPageControl } from '../icons';\nimport { YPagination } from '../pagination';\nimport { pressDataTablePaginationProps } from '@/components/table/composables/pagination';\n\nimport './YDataTableControl.scss';\n\nexport const pressYDataTableControlPropsOptions = propsFactory(\n {\n pageLength: Number as PropType<number>,\n setPageSize: Function as PropType<(pageSize: number) => void>,\n setPage: Function as PropType<(page: number) => void>,\n ...pressDataTablePaginationProps(),\n },\n 'YDataTableControl',\n);\n\nexport const YDataTableControl = defineComponent({\n name: 'YDataTableControl',\n components: {\n YButton,\n YIconExpand,\n YFieldInput,\n YIconPageControl,\n },\n props: pressYDataTableControlPropsOptions(),\n setup(props, { slots }) {\n useRender(() => {\n return (\n <footer class={['y-data-table-control']}>\n {slots.prepend?.(props)}\n {slots.default ? (\n slots.default()\n ) : (\n <>\n <div class=\"y-data-table-control__start\"></div>\n <div class=\"y-data-table-control__end\">\n <YPagination\n model-value={props.page}\n onUpdate:modelValue={props.setPage}\n length={props.pageLength}\n totalVisible={0}\n ></YPagination>\n </div>\n </>\n )}\n {slots.append?.(props)}\n </footer>\n );\n });\n },\n});\n\nexport type YDataTableControl = InstanceType<typeof YDataTableControl>;\n"],"mappings":";SAESA,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,eAAe;AAAA,SAEfC,OAAO;AAAA,SACPC,WAAW;AAAA,SACXC,WAAW,EAAEC,gBAAgB;AAAA,SAC7BC,WAAW;AAAA,SACXC,6BAA6B;AAEtC;AAEA,OAAO,MAAMC,kCAAkC,GAAGR,YAAY,CAC5D;EACES,UAAU,EAAEC,MAA0B;EACtCC,WAAW,EAAEC,QAAgD;EAC7DC,OAAO,EAAED,QAA4C;EACrD,GAAGL,6BAA6B,CAAC;AACnC,CAAC,EACD,mBACF,CAAC;AAED,OAAO,MAAMO,iBAAiB,GAAGb,eAAe,CAAC;EAC/Cc,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVd,OAAO;IACPE,WAAW;IACXD,WAAW;IACXE;EACF,CAAC;EACDY,KAAK,EAAET,kCAAkC,CAAC,CAAC;EAC3CU,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBpB,SAAS,CAAC,MAAM;MACd,OAAAsB,YAAA;QAAA,SACiB,CAAC,sBAAsB;MAAC,IACpCD,KAAK,CAACE,OAAO,GAAGL,KAAK,CAAC,EACtBG,KAAK,CAACG,OAAO,GACZH,KAAK,CAACG,OAAO,CAAC,CAAC,GAAAF,YAAA,CAAAG,SAAA,SAAAH,YAAA;QAAA;MAAA,UAAAA,YAAA;QAAA;MAAA,IAAAA,YAAA,CAAAf,WAAA;QAAA,eAMIW,KAAK,CAACQ,IAAI;QAAA,uBACFR,KAAK,CAACJ,OAAO;QAAA,UAC1BI,KAAK,CAACR,UAAU;QAAA,gBACV;MAAC,YAItB,EACAW,KAAK,CAACM,MAAM,GAAGT,KAAK,CAAC;IAG5B,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -7,9 +7,9 @@ import { YButton } from "../button/YButton.js";
7
7
  import { YIconCheckbox } from "../icons/YIconCheckbox.js";
8
8
  import { YIconSort } from "../icons/YIconSort.js";
9
9
  import { YDataTableCell } from "./YDataTableCell.js";
10
- import { useHeader } from "./composibles/header.js";
11
- import { useSelection } from "./composibles/selection.js";
12
- import { useSorting } from "./composibles/sorting.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: {
@@ -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';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { wrapInArray } from '@/util';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\nimport { toStyleSizeValue } from '@/util/ui';\r\n\r\nimport { YButton } from '../button/YButton';\r\nimport { YIconCheckbox } from '../icons/YIconCheckbox';\r\nimport { YIconSort } from '../icons/YIconSort';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from './composibles/header';\r\nimport { useSelection } from './composibles/selection';\r\nimport { useSorting } from './composibles/sorting';\r\nimport { type FixedPropType, InternalDataTableHeader } from './types';\r\n\r\nexport const pressYDataTableHeadProps = propsFactory(\r\n {\r\n multiSort: Boolean,\r\n sortAscIcon: {\r\n type: String,\r\n default: '@sortAsc',\r\n },\r\n sortDescIcon: {\r\n type: String,\r\n default: '@sortDesc',\r\n },\r\n dualSortIcon: Boolean,\r\n sticky: Boolean,\r\n },\r\n 'YDataTableHead',\r\n);\r\n\r\nexport const YDataTableHead = defineComponent({\r\n name: 'YDataTableHead',\r\n components: {\r\n YDataTableCell,\r\n },\r\n props: {\r\n ...pressYDataTableHeadProps(),\r\n },\r\n setup(props, { slots }) {\r\n const { toggleSort, sortBy, isSorted } = useSorting();\r\n const { someSelected, allSelected, selectAll, showSelectAll, selectables } =\r\n useSelection();\r\n const { columns, headers } = useHeader();\r\n\r\n const getFixedStyles = (\r\n column: InternalDataTableHeader,\r\n y: number,\r\n ): CSSProperties | undefined => {\r\n if (!props.sticky && !column.fixed) return undefined;\r\n let fixedOffset: any = {};\r\n if (column.fixed === true || column.fixed === 'left') {\r\n fixedOffset.left = toStyleSizeValue(column.fixedOffset);\r\n }\r\n if (column.fixed === 'right') {\r\n fixedOffset.right = toStyleSizeValue(column.rightOffset);\r\n }\r\n\r\n return {\r\n position: 'sticky',\r\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,\r\n top: props.sticky\r\n ? `calc(var(--v-table-header-height) * ${y})`\r\n : undefined,\r\n ...fixedOffset,\r\n };\r\n };\r\n\r\n function onClick(e: Event) {\r\n //\r\n }\r\n\r\n function getSortDirection(column: InternalDataTableHeader) {\r\n const found = sortBy.value.find((by) => by.key === column.key);\r\n if (!found) {\r\n return undefined;\r\n }\r\n if (found.order === 'asc') {\r\n return 'asc';\r\n }\r\n if (found.order === 'desc') {\r\n return 'desc';\r\n }\r\n }\r\n\r\n const YDataTableTh = ({\r\n column,\r\n x,\r\n y,\r\n }: {\r\n column: InternalDataTableHeader;\r\n x: number;\r\n y: number;\r\n }) => {\r\n return (\r\n <YDataTableCell\r\n type=\"head\"\r\n align={column.align}\r\n fixed={\r\n column.fixed\r\n ? (((column.fixed === 'right' ? 'trail' : 'lead') +\r\n (column.lastFixed ? '-last' : '')) as FixedPropType)\r\n : undefined\r\n }\r\n class={[\r\n 'y-data-table-header',\r\n {\r\n 'y-data-table-header--sortable': column.sortable,\r\n 'y-data-table-header--sorted': isSorted(column),\r\n 'y-data-table-header--select': column.key === 'data-table-select',\r\n },\r\n ...wrapInArray(column.headerClasses ?? []),\r\n ]}\r\n style={{\r\n width: toStyleSizeValue(column.width),\r\n minWidth: toStyleSizeValue(column.width),\r\n maxWidth: toStyleSizeValue(column.maxWidth),\r\n ...getFixedStyles(column, y),\r\n }}\r\n {...{ rowspan: column.rowspan, colspan: column.colspan }}\r\n onClick={onClick}\r\n >\r\n {{\r\n default: () => {\r\n const headerSlotName = `header.${column.key}` as const;\r\n const headerSlotProps = {\r\n column,\r\n selectAll,\r\n isSorted,\r\n toggleSort,\r\n sortBy: sortBy.value,\r\n someSelected: someSelected.value,\r\n allSelected: allSelected.value,\r\n selectables: selectables.value,\r\n getSortDirection,\r\n };\r\n\r\n if (slots[headerSlotName]) {\r\n return slots[headerSlotName]?.(headerSlotProps);\r\n }\r\n\r\n if (column.key === 'data-table-select') {\r\n return (\r\n slots['header.data-table-select']?.(headerSlotProps) ??\r\n (showSelectAll && (\r\n <YButton\r\n variation={'text,small'}\r\n disabled={selectables.value.length < 1}\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation();\r\n selectAll(!allSelected.value);\r\n }}\r\n >\r\n <YIconCheckbox\r\n checked={allSelected.value}\r\n indeterminate={!allSelected.value && someSelected.value}\r\n disabled={selectables.value.length < 1}\r\n ></YIconCheckbox>\r\n </YButton>\r\n ))\r\n );\r\n }\r\n\r\n return (\r\n <div class=\"y-data-table-header__content\">\r\n <span class=\"y-data-table-header__text\">\r\n {slots?.[`header-text.${column.key}`]?.(headerSlotProps) ??\r\n column.text}\r\n </span>\r\n <span\r\n class={[\r\n 'y-data-table-header__sorting-icon',\r\n {\r\n 'y-data-table-header__sorting-icon--disabled':\r\n !column.sortable,\r\n },\r\n ]}\r\n onClick={\r\n column.sortable\r\n ? (e) => {\r\n e.stopPropagation();\r\n toggleSort(column);\r\n }\r\n : undefined\r\n }\r\n >\r\n <YIconSort\r\n disabled={!column.sortable}\r\n direction={getSortDirection(column)}\r\n ></YIconSort>\r\n </span>\r\n </div>\r\n );\r\n },\r\n }}\r\n </YDataTableCell>\r\n );\r\n };\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n {slots.head\r\n ? slots.head?.(props)\r\n : headers.value.map((row, y) => (\r\n <tr>\r\n {row.map((column, x) => (\r\n <YDataTableTh column={column} x={x} y={y} />\r\n ))}\r\n </tr>\r\n ))}\r\n </>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableHead = InstanceType<typeof YDataTableHead>;\r\n"],"mappings":"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"}
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';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { wrapInArray } from '@/util';\r\nimport { defineComponent, propsFactory } from '@/util/component';\r\nimport { toStyleSizeValue } from '@/util/ui';\r\n\r\nimport { YButton } from '../button/YButton';\r\nimport { YIconCheckbox } from '../icons/YIconCheckbox';\r\nimport { YIconSort } from '../icons/YIconSort';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from '@/components/table/composables/header';\r\nimport { useSelection } from '@/components/table/composables/selection';\r\nimport { useSorting } from '@/components/table/composables/sorting';\r\nimport { type FixedPropType, InternalDataTableHeader } from './types';\r\n\r\nexport const pressYDataTableHeadProps = propsFactory(\r\n {\r\n multiSort: Boolean,\r\n sortAscIcon: {\r\n type: String,\r\n default: '@sortAsc',\r\n },\r\n sortDescIcon: {\r\n type: String,\r\n default: '@sortDesc',\r\n },\r\n dualSortIcon: Boolean,\r\n sticky: Boolean,\r\n },\r\n 'YDataTableHead',\r\n);\r\n\r\nexport const YDataTableHead = defineComponent({\r\n name: 'YDataTableHead',\r\n components: {\r\n YDataTableCell,\r\n },\r\n props: {\r\n ...pressYDataTableHeadProps(),\r\n },\r\n setup(props, { slots }) {\r\n const { toggleSort, sortBy, isSorted } = useSorting();\r\n const { someSelected, allSelected, selectAll, showSelectAll, selectables } =\r\n useSelection();\r\n const { columns, headers } = useHeader();\r\n\r\n const getFixedStyles = (\r\n column: InternalDataTableHeader,\r\n y: number,\r\n ): CSSProperties | undefined => {\r\n if (!props.sticky && !column.fixed) return undefined;\r\n let fixedOffset: any = {};\r\n if (column.fixed === true || column.fixed === 'left') {\r\n fixedOffset.left = toStyleSizeValue(column.fixedOffset);\r\n }\r\n if (column.fixed === 'right') {\r\n fixedOffset.right = toStyleSizeValue(column.rightOffset);\r\n }\r\n\r\n return {\r\n position: 'sticky',\r\n zIndex: column.fixed ? 4 : props.sticky ? 3 : undefined,\r\n top: props.sticky\r\n ? `calc(var(--v-table-header-height) * ${y})`\r\n : undefined,\r\n ...fixedOffset,\r\n };\r\n };\r\n\r\n function onClick(e: Event) {\r\n //\r\n }\r\n\r\n function getSortDirection(column: InternalDataTableHeader) {\r\n const found = sortBy.value.find((by) => by.key === column.key);\r\n if (!found) {\r\n return undefined;\r\n }\r\n if (found.order === 'asc') {\r\n return 'asc';\r\n }\r\n if (found.order === 'desc') {\r\n return 'desc';\r\n }\r\n }\r\n\r\n const YDataTableTh = ({\r\n column,\r\n x,\r\n y,\r\n }: {\r\n column: InternalDataTableHeader;\r\n x: number;\r\n y: number;\r\n }) => {\r\n return (\r\n <YDataTableCell\r\n type=\"head\"\r\n align={column.align}\r\n fixed={\r\n column.fixed\r\n ? (((column.fixed === 'right' ? 'trail' : 'lead') +\r\n (column.lastFixed ? '-last' : '')) as FixedPropType)\r\n : undefined\r\n }\r\n class={[\r\n 'y-data-table-header',\r\n {\r\n 'y-data-table-header--sortable': column.sortable,\r\n 'y-data-table-header--sorted': isSorted(column),\r\n 'y-data-table-header--select': column.key === 'data-table-select',\r\n },\r\n ...wrapInArray(column.headerClasses ?? []),\r\n ]}\r\n style={{\r\n width: toStyleSizeValue(column.width),\r\n minWidth: toStyleSizeValue(column.width),\r\n maxWidth: toStyleSizeValue(column.maxWidth),\r\n ...getFixedStyles(column, y),\r\n }}\r\n {...{ rowspan: column.rowspan, colspan: column.colspan }}\r\n onClick={onClick}\r\n >\r\n {{\r\n default: () => {\r\n const headerSlotName = `header.${column.key}` as const;\r\n const headerSlotProps = {\r\n column,\r\n selectAll,\r\n isSorted,\r\n toggleSort,\r\n sortBy: sortBy.value,\r\n someSelected: someSelected.value,\r\n allSelected: allSelected.value,\r\n selectables: selectables.value,\r\n getSortDirection,\r\n };\r\n\r\n if (slots[headerSlotName]) {\r\n return slots[headerSlotName]?.(headerSlotProps);\r\n }\r\n\r\n if (column.key === 'data-table-select') {\r\n return (\r\n slots['header.data-table-select']?.(headerSlotProps) ??\r\n (showSelectAll && (\r\n <YButton\r\n variation={'text,small'}\r\n disabled={selectables.value.length < 1}\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation();\r\n selectAll(!allSelected.value);\r\n }}\r\n >\r\n <YIconCheckbox\r\n checked={allSelected.value}\r\n indeterminate={!allSelected.value && someSelected.value}\r\n disabled={selectables.value.length < 1}\r\n ></YIconCheckbox>\r\n </YButton>\r\n ))\r\n );\r\n }\r\n\r\n return (\r\n <div class=\"y-data-table-header__content\">\r\n <span class=\"y-data-table-header__text\">\r\n {slots?.[`header-text.${column.key}`]?.(headerSlotProps) ??\r\n column.text}\r\n </span>\r\n <span\r\n class={[\r\n 'y-data-table-header__sorting-icon',\r\n {\r\n 'y-data-table-header__sorting-icon--disabled':\r\n !column.sortable,\r\n },\r\n ]}\r\n onClick={\r\n column.sortable\r\n ? (e) => {\r\n e.stopPropagation();\r\n toggleSort(column);\r\n }\r\n : undefined\r\n }\r\n >\r\n <YIconSort\r\n disabled={!column.sortable}\r\n direction={getSortDirection(column)}\r\n ></YIconSort>\r\n </span>\r\n </div>\r\n );\r\n },\r\n }}\r\n </YDataTableCell>\r\n );\r\n };\r\n\r\n useRender(() => {\r\n return (\r\n <>\r\n {slots.head\r\n ? slots.head?.(props)\r\n : headers.value.map((row, y) => (\r\n <tr>\r\n {row.map((column, x) => (\r\n <YDataTableTh column={column} x={x} y={y} />\r\n ))}\r\n </tr>\r\n ))}\r\n </>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableHead = InstanceType<typeof YDataTableHead>;\r\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
2
  import { inject } from 'vue';
3
+ import { YDataTableInjectionKey, YTableInjectionKey } from "./composables/provides.js";
3
4
  import { useRender } from "../../composables/component.js";
4
5
  import { defineComponent } from "../../util/component/index.js";
5
6
  export const YDataTableLayer = defineComponent({
@@ -11,15 +12,21 @@ export const YDataTableLayer = defineComponent({
11
12
  let {
12
13
  slots
13
14
  } = _ref;
14
- const YTableWire = inject('YTable');
15
+ const YTableWire = inject(YTableInjectionKey);
16
+ const YDataTableWire = inject(YDataTableInjectionKey);
15
17
  useRender(() => {
18
+ const scopedSlotProps = {
19
+ ...props.slotProps,
20
+ YTable: YTableWire,
21
+ YDataTable: YDataTableWire
22
+ };
16
23
  return _createVNode("div", {
17
24
  "class": ['y-data-table-layer']
18
- }, [slots.layer ? slots.layer?.(props.slotProps) : _createVNode(_Fragment, null, [_createVNode("div", {
25
+ }, [slots.layer ? slots.layer?.(scopedSlotProps) : _createVNode(_Fragment, null, [_createVNode("div", {
19
26
  "class": ['y-data-table-layer__head']
20
- }, [slots['layer-head']?.(props.slotProps)]), _createVNode("div", {
27
+ }, [slots['layer-head']?.(scopedSlotProps)]), _createVNode("div", {
21
28
  "class": ['y-data-table-layer__body']
22
- }, [slots['layer-body']?.(props.slotProps)])])]);
29
+ }, [slots['layer-body']?.(scopedSlotProps)])])]);
23
30
  });
24
31
  return {
25
32
  YTableWire
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableLayer.js","names":["inject","useRender","defineComponent","YDataTableLayer","name","props","slotProps","Object","setup","_ref","slots","YTableWire","_createVNode","layer","_Fragment"],"sources":["../../../src/components/table/YDataTableLayer.tsx"],"sourcesContent":["import { type PropType, type Ref, inject } from 'vue';\r\n\r\nimport { useRender } from '@/composables/component';\r\nimport { defineComponent } from '@/util/component';\r\n\r\nexport const YDataTableLayer = defineComponent({\r\n name: 'YDataTableLayer',\r\n props: {\r\n slotProps: Object as PropType<any>,\r\n },\r\n setup(props, { slots }) {\r\n const YTableWire = inject<{ containerRect: Ref<DOMRect> }>('YTable');\r\n\r\n useRender(() => {\r\n return (\r\n <div class={['y-data-table-layer']}>\r\n {slots.layer ? (\r\n slots.layer?.(props.slotProps)\r\n ) : (\r\n <>\r\n <div class={['y-data-table-layer__head']}>\r\n {slots['layer-head']?.(props.slotProps)}\r\n </div>\r\n <div class={['y-data-table-layer__body']}>\r\n {slots['layer-body']?.(props.slotProps)}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n });\r\n\r\n return {\r\n YTableWire,\r\n };\r\n },\r\n});\r\n\r\nexport type YDataTableLayer = InstanceType<typeof YDataTableLayer>;\r\n"],"mappings":";AAAA,SAAkCA,MAAM,QAAQ,KAAK;AAAC,SAE7CC,SAAS;AAAA,SACTC,eAAe;AAExB,OAAO,MAAMC,eAAe,GAAGD,eAAe,CAAC;EAC7CE,IAAI,EAAE,iBAAiB;EACvBC,KAAK,EAAE;IACLC,SAAS,EAAEC;EACb,CAAC;EACDC,KAAKA,CAACH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAME,UAAU,GAAGX,MAAM,CAAkC,QAAQ,CAAC;IAEpEC,SAAS,CAAC,MAAM;MACd,OAAAW,YAAA;QAAA,SACc,CAAC,oBAAoB;MAAC,IAC/BF,KAAK,CAACG,KAAK,GACVH,KAAK,CAACG,KAAK,GAAGR,KAAK,CAACC,SAAS,CAAC,GAAAM,YAAA,CAAAE,SAAA,SAAAF,YAAA;QAAA,SAGhB,CAAC,0BAA0B;MAAC,IACrCF,KAAK,CAAC,YAAY,CAAC,GAAGL,KAAK,CAACC,SAAS,CAAC,IAAAM,YAAA;QAAA,SAE7B,CAAC,0BAA0B;MAAC,IACrCF,KAAK,CAAC,YAAY,CAAC,GAAGL,KAAK,CAACC,SAAS,CAAC,IAG5C;IAGP,CAAC,CAAC;IAEF,OAAO;MACLK;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableLayer.js","names":["inject","YDataTableInjectionKey","YTableInjectionKey","useRender","defineComponent","YDataTableLayer","name","props","slotProps","Object","setup","_ref","slots","YTableWire","YDataTableWire","scopedSlotProps","YTable","YDataTable","_createVNode","layer","_Fragment"],"sources":["../../../src/components/table/YDataTableLayer.tsx"],"sourcesContent":["import { type PropType, type Ref, inject } from 'vue';\n\nimport {\n YDataTableInjectionKey,\n YTableInjectionKey,\n} from '@/components/table/composables/provides';\nimport { useRender } from '@/composables/component';\nimport { defineComponent } from '@/util/component';\n\nexport const YDataTableLayer = defineComponent({\n name: 'YDataTableLayer',\n props: {\n slotProps: Object as PropType<any>,\n },\n setup(props, { slots }) {\n const YTableWire = inject(YTableInjectionKey);\n const YDataTableWire = inject(YDataTableInjectionKey);\n\n useRender(() => {\n const scopedSlotProps = {\n ...props.slotProps,\n YTable: YTableWire,\n YDataTable: YDataTableWire,\n };\n\n return (\n <div class={['y-data-table-layer']}>\n {slots.layer ? (\n slots.layer?.(scopedSlotProps)\n ) : (\n <>\n <div class={['y-data-table-layer__head']}>\n {slots['layer-head']?.(scopedSlotProps)}\n </div>\n <div class={['y-data-table-layer__body']}>\n {slots['layer-body']?.(scopedSlotProps)}\n </div>\n </>\n )}\n </div>\n );\n });\n\n return {\n YTableWire,\n };\n },\n});\n\nexport type YDataTableLayer = InstanceType<typeof YDataTableLayer>;\n"],"mappings":";AAAA,SAAkCA,MAAM,QAAQ,KAAK;AAAC,SAGpDC,sBAAsB,EACtBC,kBAAkB;AAAA,SAEXC,SAAS;AAAA,SACTC,eAAe;AAExB,OAAO,MAAMC,eAAe,GAAGD,eAAe,CAAC;EAC7CE,IAAI,EAAE,iBAAiB;EACvBC,KAAK,EAAE;IACLC,SAAS,EAAEC;EACb,CAAC;EACDC,KAAKA,CAACH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpB,MAAME,UAAU,GAAGb,MAAM,CAACE,kBAAkB,CAAC;IAC7C,MAAMY,cAAc,GAAGd,MAAM,CAACC,sBAAsB,CAAC;IAErDE,SAAS,CAAC,MAAM;MACd,MAAMY,eAAe,GAAG;QACtB,GAAGR,KAAK,CAACC,SAAS;QAClBQ,MAAM,EAAEH,UAAU;QAClBI,UAAU,EAAEH;MACd,CAAC;MAED,OAAAI,YAAA;QAAA,SACc,CAAC,oBAAoB;MAAC,IAC/BN,KAAK,CAACO,KAAK,GACVP,KAAK,CAACO,KAAK,GAAGJ,eAAe,CAAC,GAAAG,YAAA,CAAAE,SAAA,SAAAF,YAAA;QAAA,SAGhB,CAAC,0BAA0B;MAAC,IACrCN,KAAK,CAAC,YAAY,CAAC,GAAGG,eAAe,CAAC,IAAAG,YAAA;QAAA,SAE7B,CAAC,0BAA0B;MAAC,IACrCN,KAAK,CAAC,YAAY,CAAC,GAAGG,eAAe,CAAC,IAG5C;IAGP,CAAC,CAAC;IAEF,OAAO;MACLF;IACF,CAAC;EACH;AACF,CAAC,CAAC"}
@@ -0,0 +1,145 @@
1
+ <script setup lang="ts">
2
+ import {
3
+ type PropType,
4
+ computed,
5
+ onBeforeUnmount,
6
+ shallowRef,
7
+ useTemplateRef,
8
+ watch,
9
+ } from 'vue';
10
+
11
+ import { toStyleSizeValue } from '@/util/ui';
12
+
13
+ const props = defineProps({
14
+ layerProps: Object as PropType<any>,
15
+ rowRef: Object as PropType<any>,
16
+ });
17
+
18
+ const activeRowRef = useTemplateRef<HTMLElement>('activeRowRef');
19
+ const observer = shallowRef<ResizeObserver | null>(null);
20
+ const rect = shallowRef<DOMRectList | null>(null);
21
+ const show = shallowRef(false);
22
+ const wrapperOffsetTop = shallowRef(0);
23
+ const scrollTop = shallowRef(0);
24
+
25
+ const rowEl = computed<HTMLElement | undefined>(() => {
26
+ return props.rowRef?.$el;
27
+ });
28
+
29
+ const tableProvides = computed(() => props.layerProps?.YTable);
30
+
31
+ const wrapperEl = computed(() => tableProvides.value?.wrapperRef.value);
32
+
33
+ const wrapperRect = computed(() => tableProvides.value?.wrapperRect.value);
34
+
35
+ const headRect = computed(() => props.layerProps?.YDataTable?.headRect.value);
36
+
37
+ const styles = computed(() => {
38
+ return {
39
+ transform: `translateY(${scrollTop.value * -1 + (rowEl.value?.offsetTop ?? 0) - (headRect.value?.height ?? 40)}px)`,
40
+ width: toStyleSizeValue(Number(wrapperRect.value?.clientWidth)),
41
+ height: toStyleSizeValue(rect.value?.[0]?.height),
42
+ };
43
+ });
44
+
45
+ watch(
46
+ wrapperEl,
47
+ (neo) => {
48
+ if (neo) {
49
+ onScrollWrapper();
50
+ neo.addEventListener('scroll', onScrollWrapper);
51
+ }
52
+ },
53
+ { immediate: true },
54
+ );
55
+
56
+ watch(
57
+ rowEl,
58
+ (neo) => {
59
+ if (neo) {
60
+ disconnectObserver();
61
+ observer.value = new ResizeObserver(() => {
62
+ rect.value = neo.getClientRects();
63
+ wrapperOffsetTop.value = neo.offsetTop ?? 0;
64
+ });
65
+ observer.value.observe(neo);
66
+ if (activeRowRef.value) {
67
+ activeRowRef.value.classList.add('y-data-table-layer-row--change');
68
+ }
69
+ requestAnimationFrame(() => {
70
+ setTimeout(() => {
71
+ show.value = true;
72
+ }, 300);
73
+ });
74
+ } else {
75
+ show.value = false;
76
+ if (observer.value) {
77
+ observer.value.disconnect();
78
+ }
79
+ }
80
+ },
81
+ { immediate: true },
82
+ );
83
+
84
+ watch(activeRowRef, (neo) => {
85
+ if (neo) {
86
+ neo.addEventListener('transitionend', () => {
87
+ neo?.classList.remove('y-data-table-layer-row--change');
88
+ });
89
+ }
90
+ });
91
+
92
+ function onScrollWrapper() {
93
+ scrollTop.value = wrapperEl.value?.scrollTop ?? 0;
94
+ }
95
+
96
+ function disconnectObserver() {
97
+ if (observer.value) {
98
+ observer.value.disconnect();
99
+ }
100
+ rect.value = null;
101
+ }
102
+
103
+ onBeforeUnmount(() => {
104
+ if (observer.value) {
105
+ observer.value.disconnect();
106
+ observer.value = null;
107
+ }
108
+ });
109
+ </script>
110
+
111
+ <template>
112
+ <div class="y-data-table-layer-row-layer">
113
+ <div
114
+ v-if="rowRef && show"
115
+ ref="activeRowRef"
116
+ class="y-data-table-layer-row"
117
+ :style="styles"
118
+ ></div>
119
+ </div>
120
+ </template>
121
+
122
+ <style scoped lang="scss">
123
+ .y-data-table-layer-row-layer {
124
+ position: absolute;
125
+ top: 0;
126
+ left: 0;
127
+ right: 0;
128
+ bottom: 0;
129
+ clip-path: inset(0 -20px 0 -20px);
130
+ }
131
+
132
+ .y-data-table-layer-row {
133
+ pointer-events: none;
134
+ position: absolute;
135
+ left: 0;
136
+ z-index: 40;
137
+ background: rgba(255, 255, 255, 0.1);
138
+ border: 1px solid var(--y-theme-primary);
139
+ box-shadow: 0 0 2px 1px var(--y-theme-primary);
140
+
141
+ &--change {
142
+ transition: all 0.2s ease-in-out;
143
+ }
144
+ }
145
+ </style>
@@ -7,8 +7,8 @@ import { defineComponent } from "../../util/component/index.js";
7
7
  import { propsFactory } from "../../util/component/index.js";
8
8
  import { YIconCheckbox } from "../icons/index.js";
9
9
  import { YDataTableCell } from "./YDataTableCell.js";
10
- import { useHeader } from "./composibles/header.js";
11
- import { useSelection } from "./composibles/selection.js";
10
+ import { useHeader } from "./composables/header.js";
11
+ import { useSelection } from "./composables/selection.js";
12
12
  export const pressYDataTableRowProps = propsFactory({
13
13
  index: Number,
14
14
  onHover: Function,
@@ -1 +1 @@
1
- {"version":3,"file":"YDataTableRow.js","names":["computed","getCurrentInstance","YButton","useRender","getPropertyFromItem","defineComponent","propsFactory","YIconCheckbox","YDataTableCell","useHeader","useSelection","pressYDataTableRowProps","index","Number","onHover","Function","onMousedown","onClick","onDblclick","onContextmenu","onKeydown","YDataTableRow","name","props","item","Object","cellProps","emits","setup","_ref","emit","slots","vm","isSelected","toggleSelect","columns","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","event","proxy","$el","_createVNode","value","map","column","colIndex","slotProps","raw","internalItem","key","el","result","call","_mergeProps","align","fixed","lastFixed","undefined","fixedOffset","rightOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { type PropType, computed, getCurrentInstance } from 'vue';\r\n\r\nimport { YButton } from '@/components/button/YButton';\r\nimport { useRender } from '@/composables/component';\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { defineComponent } from '@/util/component';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { YIconCheckbox } from '../icons';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from './composibles/header';\r\nimport { useSelection } from './composibles/selection';\r\nimport { CellProps, DataTableItem, type FixedPropType } from './types';\r\n\r\nexport const pressYDataTableRowProps = propsFactory(\r\n {\r\n index: Number as PropType<number>,\r\n onHover: Function as PropType<(...args: any[]) => void>,\r\n onMousedown: Function as PropType<(...args: any[]) => void>,\r\n onClick: Function as PropType<(...args: any[]) => void>,\r\n onDblclick: Function as PropType<(...args: any[]) => void>,\r\n onContextmenu: Function as PropType<(...args: any[]) => void>,\r\n onKeydown: Function as PropType<(...args: any[]) => void>,\r\n },\r\n 'YDataTableRow',\r\n);\r\n\r\nexport const YDataTableRow = defineComponent({\r\n name: 'YDataTableRow',\r\n props: {\r\n item: Object as PropType<DataTableItem>,\r\n cellProps: [Object, Function] as PropType<CellProps>,\r\n ...pressYDataTableRowProps(),\r\n },\r\n emits: ['hover', 'mousedown', 'click', 'dblclick', 'contextmenu'],\r\n setup(props, { emit, slots }) {\r\n const vm = getCurrentInstance();\r\n const { isSelected, toggleSelect } = useSelection();\r\n const { columns } = useHeader();\r\n\r\n const selected = computed(() => props.item && isSelected(props.item));\r\n\r\n function arrayClasses(classes: string | string[]) {\r\n const ret: string[] = [];\r\n if (typeof classes === 'string') {\r\n ret.push(classes);\r\n }\r\n if (Array.isArray(classes)) {\r\n classes.forEach((c) => {\r\n if (typeof c === 'string') ret.push(c);\r\n });\r\n }\r\n return ret;\r\n }\r\n\r\n function onMousedown(event: MouseEvent) {\r\n props.onMousedown?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onClick(event: MouseEvent) {\r\n props.onClick?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onContextmenu(event: MouseEvent) {\r\n props.onContextmenu?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onDblclick(event: MouseEvent) {\r\n props.onDblclick?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onKeydown(event: KeyboardEvent) {\r\n props.onKeydown?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n useRender(() => {\r\n return (\r\n <tr\r\n class={[\r\n 'y-data-table__row',\r\n { 'y-data-table__row--selected': selected.value },\r\n ]}\r\n onClick={props.onClick && onClick}\r\n onContextmenu={props.onContextmenu && onContextmenu}\r\n onDblclick={props.onDblclick && onDblclick}\r\n onMousedown={props.onMousedown && onMousedown}\r\n onKeydown={props.onKeydown && onKeydown}\r\n >\r\n {props.item &&\r\n columns.value.map((column, colIndex) => {\r\n const item = props.item!;\r\n const slotProps = {\r\n index: props.index!,\r\n item: props.item!.raw,\r\n internalItem: props.item!,\r\n columns: columns.value,\r\n value: getPropertyFromItem(item.columns, column.key),\r\n selected: selected.value,\r\n toggleSelect,\r\n el: vm?.proxy?.$el,\r\n };\r\n\r\n const classes = computed(() => {\r\n const ret: string[] = [];\r\n if (typeof column.classes === 'function') {\r\n const result = column.classes.call(\r\n null,\r\n slotProps.item,\r\n slotProps.index,\r\n column,\r\n );\r\n if (result) {\r\n ret.push(...arrayClasses(result));\r\n }\r\n } else if (column.classes) {\r\n ret.push(...arrayClasses(column.classes));\r\n }\r\n\r\n return ret;\r\n });\r\n\r\n const cellProps =\r\n typeof props.cellProps === 'function'\r\n ? props.cellProps({\r\n index: slotProps.index,\r\n column,\r\n internalItem: slotProps.internalItem,\r\n item: slotProps.item,\r\n value: slotProps.value,\r\n selected: slotProps.selected,\r\n })\r\n : props.cellProps;\r\n\r\n return (\r\n <YDataTableCell\r\n align={column.align}\r\n fixed={\r\n column.fixed\r\n ? (((column.fixed === 'right' ? 'trail' : 'lead') +\r\n (column.lastFixed ? '-last' : '')) as FixedPropType)\r\n : undefined\r\n }\r\n fixedOffset={column.fixedOffset}\r\n rightOffset={column.rightOffset}\r\n width={column.width}\r\n maxWidth={column.maxWidth}\r\n class={[\r\n 'y-data-table-data',\r\n {\r\n 'y-data-table-data--select':\r\n column.key === 'data-table-select',\r\n },\r\n ...classes.value,\r\n ]}\r\n {...cellProps}\r\n >\r\n {{\r\n default: () => {\r\n const slotName = `item.${column.key}`;\r\n\r\n if (slots[slotName]) {\r\n return slots[slotName]?.(slotProps);\r\n }\r\n\r\n if (column.key === 'data-table-select') {\r\n return (\r\n slots['item.data-table-select']?.(slotProps) ?? (\r\n <YButton\r\n variation={'text,small'}\r\n disabled={!item.selectable}\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation();\r\n if (item.selectable) toggleSelect(item);\r\n }}\r\n >\r\n <YIconCheckbox\r\n checked={isSelected(item)}\r\n disabled={!item.selectable}\r\n ></YIconCheckbox>\r\n </YButton>\r\n )\r\n );\r\n }\r\n\r\n return slotProps.value;\r\n },\r\n }}\r\n </YDataTableCell>\r\n );\r\n })}\r\n </tr>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\r\n"],"mappings":";AAAA,SAAwBA,QAAQ,EAAEC,kBAAkB,QAAQ,KAAK;AAAC,SAEzDC,OAAO;AAAA,SACPC,SAAS;AAAA,SACTC,mBAAmB;AAAA,SACnBC,eAAe;AAAA,SACfC,YAAY;AAAA,SAEZC,aAAa;AAAA,SACbC,cAAc;AAAA,SACdC,SAAS;AAAA,SACTC,YAAY;AAGrB,OAAO,MAAMC,uBAAuB,GAAGL,YAAY,CACjD;EACEM,KAAK,EAAEC,MAA0B;EACjCC,OAAO,EAAEC,QAA8C;EACvDC,WAAW,EAAED,QAA8C;EAC3DE,OAAO,EAAEF,QAA8C;EACvDG,UAAU,EAAEH,QAA8C;EAC1DI,aAAa,EAAEJ,QAA8C;EAC7DK,SAAS,EAAEL;AACb,CAAC,EACD,eACF,CAAC;AAED,OAAO,MAAMM,aAAa,GAAGhB,eAAe,CAAC;EAC3CiB,IAAI,EAAE,eAAe;EACrBC,KAAK,EAAE;IACLC,IAAI,EAAEC,MAAiC;IACvCC,SAAS,EAAE,CAACD,MAAM,EAAEV,QAAQ,CAAwB;IACpD,GAAGJ,uBAAuB,CAAC;EAC7B,CAAC;EACDgB,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC;EACjEC,KAAKA,CAACL,KAAK,EAAAM,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC1B,MAAMG,EAAE,GAAG/B,kBAAkB,CAAC,CAAC;IAC/B,MAAM;MAAEgC,UAAU;MAAEC;IAAa,CAAC,GAAGxB,YAAY,CAAC,CAAC;IACnD,MAAM;MAAEyB;IAAQ,CAAC,GAAG1B,SAAS,CAAC,CAAC;IAE/B,MAAM2B,QAAQ,GAAGpC,QAAQ,CAAC,MAAMuB,KAAK,CAACC,IAAI,IAAIS,UAAU,CAACV,KAAK,CAACC,IAAI,CAAC,CAAC;IAErE,SAASa,YAAYA,CAACC,OAA0B,EAAE;MAChD,MAAMC,GAAa,GAAG,EAAE;MACxB,IAAI,OAAOD,OAAO,KAAK,QAAQ,EAAE;QAC/BC,GAAG,CAACC,IAAI,CAACF,OAAO,CAAC;MACnB;MACA,IAAIG,KAAK,CAACC,OAAO,CAACJ,OAAO,CAAC,EAAE;QAC1BA,OAAO,CAACK,OAAO,CAAEC,CAAC,IAAK;UACrB,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAEL,GAAG,CAACC,IAAI,CAACI,CAAC,CAAC;QACxC,CAAC,CAAC;MACJ;MACA,OAAOL,GAAG;IACZ;IAEA,SAASvB,WAAWA,CAAC6B,KAAiB,EAAE;MACtCtB,KAAK,CAACP,WAAW,GAAG6B,KAAK,EAAEb,EAAE,EAAEc,KAAK,EAAEC,GAAG,CAAC;IAC5C;IAEA,SAAS9B,OAAOA,CAAC4B,KAAiB,EAAE;MAClCtB,KAAK,CAACN,OAAO,GAAG4B,KAAK,EAAEb,EAAE,EAAEc,KAAK,EAAEC,GAAG,CAAC;IACxC;IAEA,SAAS5B,aAAaA,CAAC0B,KAAiB,EAAE;MACxCtB,KAAK,CAACJ,aAAa,GAAG0B,KAAK,EAAEb,EAAE,EAAEc,KAAK,EAAEC,GAAG,CAAC;IAC9C;IAEA,SAAS7B,UAAUA,CAAC2B,KAAiB,EAAE;MACrCtB,KAAK,CAACL,UAAU,GAAG2B,KAAK,EAAEb,EAAE,EAAEc,KAAK,EAAEC,GAAG,CAAC;IAC3C;IAEA,SAAS3B,SAASA,CAACyB,KAAoB,EAAE;MACvCtB,KAAK,CAACH,SAAS,GAAGyB,KAAK,EAAEb,EAAE,EAAEc,KAAK,EAAEC,GAAG,CAAC;IAC1C;IAEA5C,SAAS,CAAC,MAAM;MACd,OAAA6C,YAAA;QAAA,SAEW,CACL,mBAAmB,EACnB;UAAE,6BAA6B,EAAEZ,QAAQ,CAACa;QAAM,CAAC,CAClD;QAAA,WACQ1B,KAAK,CAACN,OAAO,IAAIA,OAAO;QAAA,iBAClBM,KAAK,CAACJ,aAAa,IAAIA,aAAa;QAAA,cACvCI,KAAK,CAACL,UAAU,IAAIA,UAAU;QAAA,eAC7BK,KAAK,CAACP,WAAW,IAAIA,WAAW;QAAA,aAClCO,KAAK,CAACH,SAAS,IAAIA;MAAS,IAEtCG,KAAK,CAACC,IAAI,IACTW,OAAO,CAACc,KAAK,CAACC,GAAG,CAAC,CAACC,MAAM,EAAEC,QAAQ,KAAK;QACtC,MAAM5B,IAAI,GAAGD,KAAK,CAACC,IAAK;QACxB,MAAM6B,SAAS,GAAG;UAChBzC,KAAK,EAAEW,KAAK,CAACX,KAAM;UACnBY,IAAI,EAAED,KAAK,CAACC,IAAI,CAAE8B,GAAG;UACrBC,YAAY,EAAEhC,KAAK,CAACC,IAAK;UACzBW,OAAO,EAAEA,OAAO,CAACc,KAAK;UACtBA,KAAK,EAAE7C,mBAAmB,CAACoB,IAAI,CAACW,OAAO,EAAEgB,MAAM,CAACK,GAAG,CAAC;UACpDpB,QAAQ,EAAEA,QAAQ,CAACa,KAAK;UACxBf,YAAY;UACZuB,EAAE,EAAEzB,EAAE,EAAEc,KAAK,EAAEC;QACjB,CAAC;QAED,MAAMT,OAAO,GAAGtC,QAAQ,CAAC,MAAM;UAC7B,MAAMuC,GAAa,GAAG,EAAE;UACxB,IAAI,OAAOY,MAAM,CAACb,OAAO,KAAK,UAAU,EAAE;YACxC,MAAMoB,MAAM,GAAGP,MAAM,CAACb,OAAO,CAACqB,IAAI,CAChC,IAAI,EACJN,SAAS,CAAC7B,IAAI,EACd6B,SAAS,CAACzC,KAAK,EACfuC,MACF,CAAC;YACD,IAAIO,MAAM,EAAE;cACVnB,GAAG,CAACC,IAAI,CAAC,GAAGH,YAAY,CAACqB,MAAM,CAAC,CAAC;YACnC;UACF,CAAC,MAAM,IAAIP,MAAM,CAACb,OAAO,EAAE;YACzBC,GAAG,CAACC,IAAI,CAAC,GAAGH,YAAY,CAACc,MAAM,CAACb,OAAO,CAAC,CAAC;UAC3C;UAEA,OAAOC,GAAG;QACZ,CAAC,CAAC;QAEF,MAAMb,SAAS,GACb,OAAOH,KAAK,CAACG,SAAS,KAAK,UAAU,GACjCH,KAAK,CAACG,SAAS,CAAC;UACdd,KAAK,EAAEyC,SAAS,CAACzC,KAAK;UACtBuC,MAAM;UACNI,YAAY,EAAEF,SAAS,CAACE,YAAY;UACpC/B,IAAI,EAAE6B,SAAS,CAAC7B,IAAI;UACpByB,KAAK,EAAEI,SAAS,CAACJ,KAAK;UACtBb,QAAQ,EAAEiB,SAAS,CAACjB;QACtB,CAAC,CAAC,GACFb,KAAK,CAACG,SAAS;QAErB,OAAAsB,YAAA,CAAAxC,cAAA,EAAAoD,WAAA;UAAA,SAEWT,MAAM,CAACU,KAAK;UAAA,SAEjBV,MAAM,CAACW,KAAK,GACN,CAACX,MAAM,CAACW,KAAK,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM,KAC3CX,MAAM,CAACY,SAAS,GAAG,OAAO,GAAG,EAAE,CAAC,GACnCC,SAAS;UAAA,eAEFb,MAAM,CAACc,WAAW;UAAA,eAClBd,MAAM,CAACe,WAAW;UAAA,SACxBf,MAAM,CAACgB,KAAK;UAAA,YACThB,MAAM,CAACiB,QAAQ;UAAA,SAClB,CACL,mBAAmB,EACnB;YACE,2BAA2B,EACzBjB,MAAM,CAACK,GAAG,KAAK;UACnB,CAAC,EACD,GAAGlB,OAAO,CAACW,KAAK;QACjB,GACGvB,SAAS;UAGX2C,OAAO,EAAEA,CAAA,KAAM;YACb,MAAMC,QAAQ,GAAI,QAAOnB,MAAM,CAACK,GAAI,EAAC;YAErC,IAAIzB,KAAK,CAACuC,QAAQ,CAAC,EAAE;cACnB,OAAOvC,KAAK,CAACuC,QAAQ,CAAC,GAAGjB,SAAS,CAAC;YACrC;YAEA,IAAIF,MAAM,CAACK,GAAG,KAAK,mBAAmB,EAAE;cACtC,OACEzB,KAAK,CAAC,wBAAwB,CAAC,GAAGsB,SAAS,CAAC,IAAAL,YAAA,CAAA9C,OAAA;gBAAA,aAE7B,YAAY;gBAAA,YACb,CAACsB,IAAI,CAAC+C,UAAU;gBAAA,WAChBC,CAAa,IAAK;kBAC1BA,CAAC,CAACC,eAAe,CAAC,CAAC;kBACnB,IAAIjD,IAAI,CAAC+C,UAAU,EAAErC,YAAY,CAACV,IAAI,CAAC;gBACzC;cAAC;gBAAA6C,OAAA,EAAAA,CAAA,MAAArB,YAAA,CAAAzC,aAAA;kBAAA,WAGU0B,UAAU,CAACT,IAAI,CAAC;kBAAA,YACf,CAACA,IAAI,CAAC+C;gBAAU;cAAA,EAG/B;YAEL;YAEA,OAAOlB,SAAS,CAACJ,KAAK;UACxB;QAAC;MAIT,CAAC,CAAC;IAGV,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"YDataTableRow.js","names":["computed","getCurrentInstance","YButton","useRender","getPropertyFromItem","defineComponent","propsFactory","YIconCheckbox","YDataTableCell","useHeader","useSelection","pressYDataTableRowProps","index","Number","onHover","Function","onMousedown","onClick","onDblclick","onContextmenu","onKeydown","YDataTableRow","name","props","item","Object","cellProps","emits","setup","_ref","emit","slots","vm","isSelected","toggleSelect","columns","selected","arrayClasses","classes","ret","push","Array","isArray","forEach","c","event","proxy","$el","_createVNode","value","map","column","colIndex","slotProps","raw","internalItem","key","el","result","call","_mergeProps","align","fixed","lastFixed","undefined","fixedOffset","rightOffset","width","maxWidth","default","slotName","selectable","e","stopPropagation"],"sources":["../../../src/components/table/YDataTableRow.tsx"],"sourcesContent":["import { type PropType, computed, getCurrentInstance } from 'vue';\r\n\r\nimport { YButton } from '@/components/button/YButton';\r\nimport { useRender } from '@/composables/component';\r\nimport { getPropertyFromItem } from '@/util/common';\r\nimport { defineComponent } from '@/util/component';\r\nimport { propsFactory } from '@/util/component';\r\n\r\nimport { YIconCheckbox } from '../icons';\r\nimport { YDataTableCell } from './YDataTableCell';\r\nimport { useHeader } from '@/components/table/composables/header';\r\nimport { useSelection } from '@/components/table/composables/selection';\r\nimport { CellProps, DataTableItem, type FixedPropType } from './types';\r\n\r\nexport const pressYDataTableRowProps = propsFactory(\r\n {\r\n index: Number as PropType<number>,\r\n onHover: Function as PropType<(...args: any[]) => void>,\r\n onMousedown: Function as PropType<(...args: any[]) => void>,\r\n onClick: Function as PropType<(...args: any[]) => void>,\r\n onDblclick: Function as PropType<(...args: any[]) => void>,\r\n onContextmenu: Function as PropType<(...args: any[]) => void>,\r\n onKeydown: Function as PropType<(...args: any[]) => void>,\r\n },\r\n 'YDataTableRow',\r\n);\r\n\r\nexport const YDataTableRow = defineComponent({\r\n name: 'YDataTableRow',\r\n props: {\r\n item: Object as PropType<DataTableItem>,\r\n cellProps: [Object, Function] as PropType<CellProps>,\r\n ...pressYDataTableRowProps(),\r\n },\r\n emits: ['hover', 'mousedown', 'click', 'dblclick', 'contextmenu'],\r\n setup(props, { emit, slots }) {\r\n const vm = getCurrentInstance();\r\n const { isSelected, toggleSelect } = useSelection();\r\n const { columns } = useHeader();\r\n\r\n const selected = computed(() => props.item && isSelected(props.item));\r\n\r\n function arrayClasses(classes: string | string[]) {\r\n const ret: string[] = [];\r\n if (typeof classes === 'string') {\r\n ret.push(classes);\r\n }\r\n if (Array.isArray(classes)) {\r\n classes.forEach((c) => {\r\n if (typeof c === 'string') ret.push(c);\r\n });\r\n }\r\n return ret;\r\n }\r\n\r\n function onMousedown(event: MouseEvent) {\r\n props.onMousedown?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onClick(event: MouseEvent) {\r\n props.onClick?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onContextmenu(event: MouseEvent) {\r\n props.onContextmenu?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onDblclick(event: MouseEvent) {\r\n props.onDblclick?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n function onKeydown(event: KeyboardEvent) {\r\n props.onKeydown?.(event, vm?.proxy?.$el);\r\n }\r\n\r\n useRender(() => {\r\n return (\r\n <tr\r\n class={[\r\n 'y-data-table__row',\r\n { 'y-data-table__row--selected': selected.value },\r\n ]}\r\n onClick={props.onClick && onClick}\r\n onContextmenu={props.onContextmenu && onContextmenu}\r\n onDblclick={props.onDblclick && onDblclick}\r\n onMousedown={props.onMousedown && onMousedown}\r\n onKeydown={props.onKeydown && onKeydown}\r\n >\r\n {props.item &&\r\n columns.value.map((column, colIndex) => {\r\n const item = props.item!;\r\n const slotProps = {\r\n index: props.index!,\r\n item: props.item!.raw,\r\n internalItem: props.item!,\r\n columns: columns.value,\r\n value: getPropertyFromItem(item.columns, column.key),\r\n selected: selected.value,\r\n toggleSelect,\r\n el: vm?.proxy?.$el,\r\n };\r\n\r\n const classes = computed(() => {\r\n const ret: string[] = [];\r\n if (typeof column.classes === 'function') {\r\n const result = column.classes.call(\r\n null,\r\n slotProps.item,\r\n slotProps.index,\r\n column,\r\n );\r\n if (result) {\r\n ret.push(...arrayClasses(result));\r\n }\r\n } else if (column.classes) {\r\n ret.push(...arrayClasses(column.classes));\r\n }\r\n\r\n return ret;\r\n });\r\n\r\n const cellProps =\r\n typeof props.cellProps === 'function'\r\n ? props.cellProps({\r\n index: slotProps.index,\r\n column,\r\n internalItem: slotProps.internalItem,\r\n item: slotProps.item,\r\n value: slotProps.value,\r\n selected: slotProps.selected,\r\n })\r\n : props.cellProps;\r\n\r\n return (\r\n <YDataTableCell\r\n align={column.align}\r\n fixed={\r\n column.fixed\r\n ? (((column.fixed === 'right' ? 'trail' : 'lead') +\r\n (column.lastFixed ? '-last' : '')) as FixedPropType)\r\n : undefined\r\n }\r\n fixedOffset={column.fixedOffset}\r\n rightOffset={column.rightOffset}\r\n width={column.width}\r\n maxWidth={column.maxWidth}\r\n class={[\r\n 'y-data-table-data',\r\n {\r\n 'y-data-table-data--select':\r\n column.key === 'data-table-select',\r\n },\r\n ...classes.value,\r\n ]}\r\n {...cellProps}\r\n >\r\n {{\r\n default: () => {\r\n const slotName = `item.${column.key}`;\r\n\r\n if (slots[slotName]) {\r\n return slots[slotName]?.(slotProps);\r\n }\r\n\r\n if (column.key === 'data-table-select') {\r\n return (\r\n slots['item.data-table-select']?.(slotProps) ?? (\r\n <YButton\r\n variation={'text,small'}\r\n disabled={!item.selectable}\r\n onClick={(e: MouseEvent) => {\r\n e.stopPropagation();\r\n if (item.selectable) toggleSelect(item);\r\n }}\r\n >\r\n <YIconCheckbox\r\n checked={isSelected(item)}\r\n disabled={!item.selectable}\r\n ></YIconCheckbox>\r\n </YButton>\r\n )\r\n );\r\n }\r\n\r\n return slotProps.value;\r\n },\r\n }}\r\n </YDataTableCell>\r\n );\r\n })}\r\n </tr>\r\n );\r\n });\r\n },\r\n});\r\n\r\nexport type YDataTableRow = InstanceType<typeof YDataTableRow>;\r\n"],"mappings":"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"}