yuyeon 0.3.2-rc.9 → 0.3.4-beta.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 (127) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +3414 -3201
  3. package/dist/yuyeon.umd.cjs +3 -3
  4. package/lib/components/draggable/YDraggable.js.map +1 -1
  5. package/lib/components/draggable/index.js +2 -0
  6. package/lib/components/draggable/index.js.map +1 -0
  7. package/lib/components/field-input/YFieldInput.js +4 -2
  8. package/lib/components/field-input/YFieldInput.js.map +1 -1
  9. package/lib/components/input/YInput.scss +1 -1
  10. package/lib/components/radio/YRadio.js +58 -0
  11. package/lib/components/radio/YRadio.js.map +1 -0
  12. package/lib/components/radio/YRadio.scss +38 -0
  13. package/lib/components/radio/YRadioIcon.js +33 -0
  14. package/lib/components/radio/YRadioIcon.js.map +1 -0
  15. package/lib/components/radio/YRadioIcon.scss +44 -0
  16. package/lib/components/radio/index.js +3 -0
  17. package/lib/components/radio/index.js.map +1 -0
  18. package/lib/components/select/YSelect.js +0 -1
  19. package/lib/components/select/YSelect.js.map +1 -1
  20. package/lib/components/table/YDataTable.js +26 -13
  21. package/lib/components/table/YDataTable.js.map +1 -1
  22. package/lib/components/table/YDataTableBody.js +14 -18
  23. package/lib/components/table/YDataTableBody.js.map +1 -1
  24. package/lib/components/table/YDataTableControl.js +8 -6
  25. package/lib/components/table/YDataTableControl.js.map +1 -1
  26. package/lib/components/table/YDataTableControl.scss +10 -0
  27. package/lib/components/table/YDataTableLayerRow.js +87 -0
  28. package/lib/components/table/YDataTableLayerRow.js.map +1 -0
  29. package/lib/components/table/YDataTableLayerRow.vue +7 -6
  30. package/lib/components/table/YDataTableLayerRows.js +60 -0
  31. package/lib/components/table/YDataTableLayerRows.js.map +1 -0
  32. package/lib/components/table/YDataTableLayerRows.scss +14 -0
  33. package/lib/components/table/YDataTableRow.js +13 -5
  34. package/lib/components/table/YDataTableRow.js.map +1 -1
  35. package/lib/components/table/YDataTableRows.scss +14 -0
  36. package/lib/components/table/YDataTableServer.js +20 -8
  37. package/lib/components/table/YDataTableServer.js.map +1 -1
  38. package/lib/components/table/composables/expand.js +49 -0
  39. package/lib/components/table/composables/expand.js.map +1 -0
  40. package/lib/components/table/composables/items.js +8 -2
  41. package/lib/components/table/composables/items.js.map +1 -1
  42. package/lib/components/table/index.js +2 -0
  43. package/lib/components/table/index.js.map +1 -1
  44. package/lib/components/table/types/item.js.map +1 -1
  45. package/lib/components/text-highlighter/YTextHighlighter.js +2 -1
  46. package/lib/components/text-highlighter/YTextHighlighter.js.map +1 -1
  47. package/lib/components/tree-view/YTreeViewNode.js +6 -2
  48. package/lib/components/tree-view/YTreeViewNode.js.map +1 -1
  49. package/lib/composables/style-color.js +1 -2
  50. package/lib/composables/style-color.js.map +1 -1
  51. package/lib/composables/theme/index.js +8 -1
  52. package/lib/composables/theme/index.js.map +1 -1
  53. package/lib/composables/validation.js +7 -4
  54. package/lib/composables/validation.js.map +1 -1
  55. package/lib/directives/index.js +3 -0
  56. package/lib/directives/index.js.map +1 -0
  57. package/lib/directives/plate-wave/index.js +2 -2
  58. package/lib/directives/plate-wave/index.js.map +1 -1
  59. package/lib/directives/theme-class/index.js +24 -0
  60. package/lib/directives/theme-class/index.js.map +1 -0
  61. package/lib/util/string.js +3 -0
  62. package/lib/util/string.js.map +1 -1
  63. package/package.json +13 -2
  64. package/types/abstract/items.d.ts +4 -4
  65. package/types/components/badge/YBadge.d.ts +4 -7
  66. package/types/components/button/YButton.d.ts +8 -8
  67. package/types/components/chip/YChip.d.ts +1 -4
  68. package/types/components/date-picker/YDateCalendar.d.ts +1 -1
  69. package/types/components/date-picker/YDatePicker.d.ts +1 -1
  70. package/types/components/date-picker/YDatePickerControl.d.ts +5 -5
  71. package/types/components/dialog/YDialog.d.ts +58 -58
  72. package/types/components/draggable/index.d.ts +1 -0
  73. package/types/components/dropdown/YDropdown.d.ts +55 -55
  74. package/types/components/field-input/YFieldInput.d.ts +19 -13
  75. package/types/components/hover/YHover.d.ts +3 -3
  76. package/types/components/icon/YIcon.d.ts +2 -2
  77. package/types/components/img/YImg.d.ts +5 -5
  78. package/types/components/input/YInput.d.ts +9 -9
  79. package/types/components/ip-field/YIpv4Field.d.ts +1 -1
  80. package/types/components/layer/YLayer.d.ts +26 -26
  81. package/types/components/layer/content.d.ts +1 -1
  82. package/types/components/layer/scroll-strategies.d.ts +1 -1
  83. package/types/components/list/YListItem.d.ts +1 -1
  84. package/types/components/menu/YMenu.d.ts +9 -9
  85. package/types/components/pagination/YPagination.d.ts +5 -5
  86. package/types/components/radio/YRadio.d.ts +25 -0
  87. package/types/components/radio/YRadioIcon.d.ts +6 -0
  88. package/types/components/radio/index.d.ts +2 -0
  89. package/types/components/select/YSelect.d.ts +68 -62
  90. package/types/components/snackbar/YSnackbar.d.ts +33 -33
  91. package/types/components/switch/YSwitch.d.ts +10 -10
  92. package/types/components/tab/YTab.d.ts +12 -12
  93. package/types/components/tab/YTabs.d.ts +4 -4
  94. package/types/components/table/YDataTable.d.ts +40 -15
  95. package/types/components/table/YDataTableBody.d.ts +3 -5
  96. package/types/components/table/YDataTableControl.d.ts +14 -2
  97. package/types/components/table/YDataTableHead.d.ts +2 -2
  98. package/types/components/table/YDataTableLayerRow.d.ts +22 -0
  99. package/types/components/table/YDataTableLayerRows.d.ts +9 -0
  100. package/types/components/table/YDataTableServer.d.ts +60 -26
  101. package/types/components/table/YTable.d.ts +4 -4
  102. package/types/components/table/composables/expand.d.ts +42 -0
  103. package/types/components/table/composables/header.d.ts +1 -1
  104. package/types/components/table/composables/items.d.ts +3 -3
  105. package/types/components/table/composables/pagination.d.ts +2 -2
  106. package/types/components/table/composables/selection.d.ts +3 -3
  107. package/types/components/table/composables/sorting.d.ts +1 -1
  108. package/types/components/table/index.d.ts +2 -0
  109. package/types/components/table/types/item.d.ts +1 -0
  110. package/types/components/textarea/YTextarea.d.ts +18 -18
  111. package/types/components/tooltip/YTooltip.d.ts +46 -46
  112. package/types/components/tree-view/YTreeView.d.ts +4 -4
  113. package/types/components/tree-view/YTreeViewNode.d.ts +8 -8
  114. package/types/composables/choice.d.ts +1 -1
  115. package/types/composables/coordinate/index.d.ts +8 -8
  116. package/types/composables/form.d.ts +2 -2
  117. package/types/composables/icon.d.ts +2 -2
  118. package/types/composables/list-items.d.ts +10 -10
  119. package/types/composables/style-color.d.ts +0 -1
  120. package/types/composables/theme/index.d.ts +1 -0
  121. package/types/composables/transition.d.ts +1 -1
  122. package/types/composables/validation.d.ts +3 -3
  123. package/types/directives/index.d.ts +2 -0
  124. package/types/directives/plate-wave/index.d.ts +7 -1
  125. package/types/shims.d.ts +64 -56
  126. package/types/util/string.d.ts +1 -0
  127. /package/types/directives/{theme-class.d.ts → theme-class/index.d.ts} +0 -0
@@ -1,22 +1,24 @@
1
1
  import { mergeProps as _mergeProps, createVNode as _createVNode, resolveDirective as _resolveDirective, Fragment as _Fragment } from "vue";
2
- import { computed, provide, ref, toRef } from 'vue';
2
+ import { Fragment, computed, provide, ref, toRef } from 'vue';
3
+ import { pressDataTableExpandProps, provideExpand } from "./composables/expand.js";
4
+ import { createHeader, pressDataTableHeader } from "./composables/header.js";
5
+ import { pressDataTableItemsProps, useItems } from "./composables/items.js";
6
+ import { useOptions } from "./composables/options.js";
7
+ import { createPagination, providePagination, usePaginatedItems } from "./composables/pagination.js";
8
+ import { YDataTableInjectionKey } from "./composables/provides.js";
9
+ import { pressDataTableSelectionProps, provideSelection } from "./composables/selection.js";
10
+ import { useSortedItems } from "./composables/sorted-items.js";
11
+ import { createSorting, pressDataTableSortProps, provideSorting } from "./composables/sorting.js";
3
12
  import { useRender } from "../../composables/component.js";
4
13
  import { useResizeObserver } from "../../composables/resize-observer.js";
14
+ import { omit } from "../../util/index.js";
5
15
  import { chooseProps, defineComponent, propsFactory } from "../../util/component/index.js";
6
16
  import { toStyleSizeValue } from "../../util/ui.js";
7
17
  import { YDataTableBody, pressYDataTableBodyProps } from "./YDataTableBody.js";
8
- import { YDataTableControl } from "./YDataTableControl.js";
18
+ import { YDataTableControl, pressYDataTableControlPropsOptions } from "./YDataTableControl.js";
9
19
  import { YDataTableHead, pressYDataTableHeadProps } from "./YDataTableHead.js";
10
20
  import { YDataTableLayer } from "./YDataTableLayer.js";
11
21
  import { YTable, pressYTableProps } from "./YTable.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";
20
22
  export const pressDataTableProps = propsFactory({
21
23
  ...pressYDataTableBodyProps(),
22
24
  width: [String, Number],
@@ -26,13 +28,14 @@ export const pressDataTableProps = propsFactory({
26
28
  ...pressDataTableItemsProps(),
27
29
  ...pressDataTableSortProps(),
28
30
  ...pressDataTableSelectionProps(),
31
+ ...pressDataTableExpandProps(),
29
32
  ...pressYDataTableHeadProps(),
30
33
  ...pressYTableProps()
31
34
  }, 'DataTable');
32
35
  export const YDataTable = defineComponent({
33
36
  name: 'YDataTable',
34
37
  props: {
35
- ...pressDataTablePaginationProps(),
38
+ ...omit(pressYDataTableControlPropsOptions(), ['setPage', 'setPageSize', 'pageLength']),
36
39
  ...pressDataTableProps()
37
40
  },
38
41
  emits: {
@@ -41,6 +44,7 @@ export const YDataTable = defineComponent({
41
44
  'update:pageSize': pageSize => true,
42
45
  'update:sortBy': sortBy => true,
43
46
  'update:options': options => true,
47
+ 'update:expanded': expanded => true,
44
48
  'click:row': (e, value) => true,
45
49
  scroll: e => true
46
50
  },
@@ -108,6 +112,10 @@ export const YDataTable = defineComponent({
108
112
  allItems: items,
109
113
  pageItems: items
110
114
  });
115
+ const {
116
+ isExpanded,
117
+ toggleExpand
118
+ } = provideExpand(props);
111
119
  const {
112
120
  resizeObservedRef: headObserveRef,
113
121
  contentRect: headRect
@@ -129,6 +137,9 @@ export const YDataTable = defineComponent({
129
137
  // sorting
130
138
  sortBy: sortBy.value,
131
139
  toggleSort,
140
+ // expand
141
+ isExpanded,
142
+ toggleExpand,
132
143
  // selection
133
144
  someSelected: someSelected.value,
134
145
  allSelected: allSelected.value,
@@ -136,7 +147,7 @@ export const YDataTable = defineComponent({
136
147
  select,
137
148
  selectAll,
138
149
  toggleSelect,
139
- //
150
+ // matrix
140
151
  items: paginatedItems.value,
141
152
  columns: columns.value,
142
153
  headers: headers.value,
@@ -174,7 +185,9 @@ export const YDataTable = defineComponent({
174
185
  "items": slotProps.value.items
175
186
  }), slots)]), slots.tbody?.(slotProps.value), slots.tfoot?.(slotProps.value)]),
176
187
  trailing: () => slots.trailing?.(slotProps.value),
177
- bottom: () => slots.bottom ? slots.bottom(slotProps.value) : _createVNode(YDataTableControl, null, {
188
+ bottom: () => slots.bottom ? slots.bottom(slotProps.value) : _createVNode(YDataTableControl, _mergeProps(chooseProps(slotProps.value, YDataTableControl.props), {
189
+ "paginationProps": props.paginationProps
190
+ }), {
178
191
  prepend: slots['control.prepend'],
179
192
  append: slots['control.append']
180
193
  })
@@ -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","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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"}
1
+ {"version":3,"file":"YDataTable.js","names":["Fragment","computed","provide","ref","toRef","pressDataTableExpandProps","provideExpand","createHeader","pressDataTableHeader","pressDataTableItemsProps","useItems","useOptions","createPagination","providePagination","usePaginatedItems","YDataTableInjectionKey","pressDataTableSelectionProps","provideSelection","useSortedItems","createSorting","pressDataTableSortProps","provideSorting","useRender","useResizeObserver","omit","chooseProps","defineComponent","propsFactory","toStyleSizeValue","YDataTableBody","pressYDataTableBodyProps","YDataTableControl","pressYDataTableControlPropsOptions","YDataTableHead","pressYDataTableHeadProps","YDataTableLayer","YTable","pressYTableProps","pressDataTableProps","width","String","Number","search","hideDefaultTbody","Boolean","YDataTable","name","props","emits","value","page","pageSize","sortBy","options","expanded","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","isExpanded","toggleExpand","resizeObservedRef","headObserveRef","contentRect","headRect","slotProps","yDataTableHeadProps","yDataTableBodyProps","yTableProps","_createVNode","_mergeProps","loading","hideNoData","height","top","leading","_Fragment","default","thead","tbody","tfoot","trailing","bottom","paginationProps","prepend","append"],"sources":["../../../src/components/table/YDataTable.tsx"],"sourcesContent":["import { Fragment, type PropType, computed, provide, ref, toRef } from 'vue';\n\nimport {\n pressDataTableExpandProps,\n provideExpand,\n} from '@/components/table/composables/expand';\nimport {\n createHeader,\n pressDataTableHeader,\n} from '@/components/table/composables/header';\nimport {\n pressDataTableItemsProps,\n useItems,\n} 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 { YDataTableInjectionKey } from '@/components/table/composables/provides';\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 { useRender } from '@/composables/component';\nimport { useResizeObserver } from '@/composables/resize-observer';\nimport { omit } from '@/util';\nimport { chooseProps, defineComponent, propsFactory } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nimport { YDataTableBody, pressYDataTableBodyProps } from './YDataTableBody';\nimport {\n YDataTableControl,\n pressYDataTableControlPropsOptions,\n} from './YDataTableControl';\nimport { YDataTableHead, pressYDataTableHeadProps } from './YDataTableHead';\nimport { YDataTableLayer } from './YDataTableLayer';\nimport { YTable, pressYTableProps } from './YTable';\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 ...pressDataTableExpandProps(),\n ...pressYDataTableHeadProps(),\n ...pressYTableProps(),\n },\n 'DataTable',\n);\n\nexport const YDataTable = defineComponent({\n name: 'YDataTable',\n props: {\n ...omit(pressYDataTableControlPropsOptions(), [\n 'setPage',\n 'setPageSize',\n 'pageLength',\n ]),\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 'update:expanded': (expanded: 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 const { isExpanded, toggleExpand } = provideExpand(props);\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 // expand\n isExpanded,\n toggleExpand,\n // selection\n someSelected: someSelected.value,\n allSelected: allSelected.value,\n isSelected,\n select,\n selectAll,\n toggleSelect,\n // matrix\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 <Fragment>\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 </Fragment>\n ),\n trailing: () => slots.trailing?.(slotProps.value),\n bottom: () =>\n slots.bottom ? (\n slots.bottom(slotProps.value)\n ) : (\n <YDataTableControl\n {...chooseProps(slotProps.value, YDataTableControl.props)}\n paginationProps={props.paginationProps}\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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"}
@@ -1,10 +1,11 @@
1
1
  import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from "vue";
2
- import { mergeProps, ref } from 'vue';
2
+ import { Fragment, mergeProps } from 'vue';
3
+ import { useExpand } from "./composables/expand.js";
4
+ import { useHeader } from "./composables/header.js";
5
+ import { useSelection } from "./composables/selection.js";
3
6
  import { useRender } from "../../composables/component.js";
4
7
  import { defineComponent, propsFactory } from "../../util/component/index.js";
5
8
  import { YDataTableRow } from "./YDataTableRow.js";
6
- import { useHeader } from "./composables/header.js";
7
- import { useSelection } from "./composables/selection.js";
8
9
  export const pressYDataTableBodyProps = propsFactory({
9
10
  items: {
10
11
  type: Array,
@@ -33,10 +34,8 @@ export const YDataTableBody = defineComponent({
33
34
  emits: ['click:row', 'dblclick:row', 'contextmenu:row', 'mousedown:row'],
34
35
  setup(props, _ref) {
35
36
  let {
36
- slots,
37
- expose
37
+ slots
38
38
  } = _ref;
39
- const rowRefs = ref([]);
40
39
  const {
41
40
  columns
42
41
  } = useHeader();
@@ -44,6 +43,10 @@ export const YDataTableBody = defineComponent({
44
43
  isSelected,
45
44
  toggleSelect
46
45
  } = useSelection();
46
+ const {
47
+ isExpanded,
48
+ toggleExpand
49
+ } = useExpand();
47
50
  useRender(() => {
48
51
  if (props.loading) {
49
52
  return _createVNode("tr", null, [_createVNode("td", {
@@ -66,7 +69,9 @@ export const YDataTableBody = defineComponent({
66
69
  internalItem: item,
67
70
  columns: columns.value,
68
71
  isSelected,
69
- toggleSelect
72
+ toggleSelect,
73
+ isExpanded,
74
+ toggleExpand
70
75
  };
71
76
  function onClick(event, el) {
72
77
  props['onClick:row']?.(event, {
@@ -117,8 +122,7 @@ export const YDataTableBody = defineComponent({
117
122
  };
118
123
  return _createVNode(_Fragment, null, [slots.item ? slots.item(slotProps) : _createVNode(YDataTableRow, _mergeProps({
119
124
  "ref": el => {
120
- rowRefs.value.push(el);
121
- item.rowRef = el;
125
+ item._bindRowRef(el);
122
126
  }
123
127
  }, slotProps.props, {
124
128
  "onClick": props['onClick:row'] && onClick,
@@ -126,17 +130,9 @@ export const YDataTableBody = defineComponent({
126
130
  "onDblclick": props['onDblclick:row'] && onDblclick,
127
131
  "onMousedown": props['onMousedown:row'] && onMousedown,
128
132
  "onKeydown": props['onKeydown:row'] && onKeydown
129
- }), slots)]);
133
+ }), slots), isExpanded(item) && slots['expanded-row']?.(slotProps)]);
130
134
  })]);
131
135
  });
132
- expose({
133
- rowRefs
134
- });
135
-
136
- // end
137
- return {
138
- rowRefs
139
- };
140
136
  }
141
137
  });
142
138
  //# sourceMappingURL=YDataTableBody.js.map
@@ -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 '@/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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"}
1
+ {"version":3,"file":"YDataTableBody.js","names":["Fragment","mergeProps","useExpand","useHeader","useSelection","useRender","defineComponent","propsFactory","YDataTableRow","pressYDataTableBodyProps","items","type","Array","default","loading","Boolean","String","loadingText","hideNoData","noDataText","rowProps","Function","Object","rowHeight","Number","YDataTableBody","name","props","emits","setup","_ref","slots","columns","isSelected","toggleSelect","isExpanded","toggleExpand","_createVNode","value","length","_Fragment","body","map","item","index","stateProps","raw","internalItem","onClick","event","el","onDblclick","onContextmenu","onMousedown","onKeydown","slotProps","key","_mergeProps","_bindRowRef"],"sources":["../../../src/components/table/YDataTableBody.tsx"],"sourcesContent":["import { Fragment, type PropType, mergeProps, ref } from 'vue';\n\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 { defineComponent, propsFactory } from '@/util/component';\n\nimport { YDataTableRow } from './YDataTableRow';\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 }) {\n const { columns } = useHeader();\n const { isSelected, toggleSelect } = useSelection();\n const { isExpanded, toggleExpand } = useExpand();\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 isExpanded,\n toggleExpand,\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 <Fragment>\n {slots.item ? (\n slots.item(slotProps)\n ) : (\n <YDataTableRow\n ref={(el) => {\n item._bindRowRef(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 {isExpanded(item) && slots['expanded-row']?.(slotProps)}\n </Fragment>\n );\n })}\n </>\n );\n });\n },\n});\n\nexport type YDataTableBody = InstanceType<typeof YDataTableBody>;\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { createVNode as _createVNode, Fragment as _Fragment } from "vue";
1
+ import { mergeProps as _mergeProps, createVNode as _createVNode, Fragment as _Fragment } from "vue";
2
+ import { pressDataTablePaginationProps } from "./composables/pagination.js";
2
3
  import { useRender } from "../../composables/component.js";
3
4
  import { propsFactory } from "../../util/index.js";
4
5
  import { defineComponent } from "../../util/component/index.js";
@@ -6,12 +7,14 @@ import { YButton } from "../button/index.js";
6
7
  import { YFieldInput } from "../field-input/index.js";
7
8
  import { YIconExpand, YIconPageControl } from "../icons/index.js";
8
9
  import { YPagination } from "../pagination/index.js";
9
- import { pressDataTablePaginationProps } from "./composables/pagination.js";
10
10
  import "./YDataTableControl.scss";
11
11
  export const pressYDataTableControlPropsOptions = propsFactory({
12
12
  pageLength: Number,
13
13
  setPageSize: Function,
14
14
  setPage: Function,
15
+ paginationProps: {
16
+ type: Object
17
+ },
15
18
  ...pressDataTablePaginationProps()
16
19
  }, 'YDataTableControl');
17
20
  export const YDataTableControl = defineComponent({
@@ -34,12 +37,11 @@ export const YDataTableControl = defineComponent({
34
37
  "class": "y-data-table-control__start"
35
38
  }, null), _createVNode("div", {
36
39
  "class": "y-data-table-control__end"
37
- }, [_createVNode(YPagination, {
40
+ }, [_createVNode(YPagination, _mergeProps(props.paginationProps, {
38
41
  "model-value": props.page,
39
42
  "onUpdate:modelValue": props.setPage,
40
- "length": props.pageLength,
41
- "totalVisible": 0
42
- }, null)])]), slots.append?.(props)]);
43
+ "length": props.pageLength
44
+ }), null)])]), slots.append?.(props)]);
43
45
  });
44
46
  }
45
47
  });
@@ -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 '@/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"}
1
+ {"version":3,"file":"YDataTableControl.js","names":["pressDataTablePaginationProps","useRender","propsFactory","defineComponent","YButton","YFieldInput","YIconExpand","YIconPageControl","YPagination","pressYDataTableControlPropsOptions","pageLength","Number","setPageSize","Function","setPage","paginationProps","type","Object","YDataTableControl","name","components","props","setup","_ref","slots","_createVNode","prepend","default","_Fragment","_mergeProps","page","append"],"sources":["../../../src/components/table/YDataTableControl.tsx"],"sourcesContent":["import { type PropType } from 'vue';\n\nimport { pressDataTablePaginationProps } from '@/components/table/composables/pagination';\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';\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 paginationProps: {\n type: Object,\n },\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 {...props.paginationProps}\n model-value={props.page}\n onUpdate:modelValue={props.setPage}\n length={props.pageLength}\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,6BAA6B;AAAA,SAC7BC,SAAS;AAAA,SACTC,YAAY;AAAA,SACZC,eAAe;AAAA,SAEfC,OAAO;AAAA,SACPC,WAAW;AAAA,SACXC,WAAW,EAAEC,gBAAgB;AAAA,SAC7BC,WAAW;AAEpB;AAEA,OAAO,MAAMC,kCAAkC,GAAGP,YAAY,CAC5D;EACEQ,UAAU,EAAEC,MAA0B;EACtCC,WAAW,EAAEC,QAAgD;EAC7DC,OAAO,EAAED,QAA4C;EACrDE,eAAe,EAAE;IACfC,IAAI,EAAEC;EACR,CAAC;EACD,GAAGjB,6BAA6B,CAAC;AACnC,CAAC,EACD,mBACF,CAAC;AAED,OAAO,MAAMkB,iBAAiB,GAAGf,eAAe,CAAC;EAC/CgB,IAAI,EAAE,mBAAmB;EACzBC,UAAU,EAAE;IACVhB,OAAO;IACPE,WAAW;IACXD,WAAW;IACXE;EACF,CAAC;EACDc,KAAK,EAAEZ,kCAAkC,CAAC,CAAC;EAC3Ca,KAAKA,CAACD,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACpBtB,SAAS,CAAC,MAAM;MACd,OAAAwB,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,CAAAjB,WAAA,EAAAqB,WAAA,CAMLR,KAAK,CAACN,eAAe;QAAA,eACZM,KAAK,CAACS,IAAI;QAAA,uBACFT,KAAK,CAACP,OAAO;QAAA,UAC1BO,KAAK,CAACX;MAAU,aAI/B,EACAc,KAAK,CAACO,MAAM,GAAGV,KAAK,CAAC;IAG5B,CAAC,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -4,4 +4,14 @@
4
4
  justify-content: space-between;
5
5
  padding: 8px 16px;
6
6
  gap: 8px;
7
+
8
+ &__start, &__end {
9
+ flex: 1 1;
10
+ }
11
+
12
+ &__end {
13
+ flex: 1 1;
14
+ display: flex;
15
+ justify-content: flex-end;
16
+ }
7
17
  }
@@ -0,0 +1,87 @@
1
+ import { withDirectives as _withDirectives, createVNode as _createVNode, vShow as _vShow } from "vue";
2
+ import { computed, onBeforeUnmount, ref, shallowRef, useTemplateRef, watch } from 'vue';
3
+ import { useRender } from "../../composables/component.js";
4
+ import { defineComponent } from "../../util/component/index.js";
5
+ import { toStyleSizeValue } from "../../util/ui.js";
6
+ export const YDataTableLayerRow = defineComponent({
7
+ name: 'YDataTableLayerRow',
8
+ props: {
9
+ layerProps: Object,
10
+ item: Object,
11
+ width: {
12
+ type: Number
13
+ },
14
+ scrollTop: {
15
+ type: Number,
16
+ default: 0
17
+ },
18
+ headRect: Object,
19
+ classes: Function,
20
+ styles: Object
21
+ },
22
+ slots: Object,
23
+ setup(props, _ref) {
24
+ let {
25
+ slots
26
+ } = _ref;
27
+ const observer = shallowRef(null);
28
+ const layerRowRef = useTemplateRef('layerRowRef');
29
+ const rect = shallowRef(null);
30
+ const show = shallowRef(false);
31
+ const rowEl = ref();
32
+ const computedStyles = computed(() => {
33
+ const propStyles = props.styles?.(props.item, {
34
+ width: props.width,
35
+ height: rect.value?.[0]?.height
36
+ }) ?? {};
37
+ return {
38
+ transform: `translateY(${props.scrollTop * -1 + (rowEl.value?.offsetTop ?? 0) - (props.headRect?.height ?? 40)}px)`,
39
+ width: toStyleSizeValue(propStyles?.width ?? props.width),
40
+ height: toStyleSizeValue(propStyles?.height ?? rect.value?.[0]?.height)
41
+ };
42
+ });
43
+ const computedClasses = computed(() => {
44
+ const propClassResult = props.classes?.(props.item);
45
+ return Array.isArray(propClassResult) ? propClassResult : [propClassResult];
46
+ });
47
+ watch(() => props.item?.rowRef.value, () => {
48
+ rowEl.value = props.item?.rowRef.value?.$el;
49
+ }, {
50
+ immediate: true
51
+ });
52
+ watch(rowEl, (neo, old) => {
53
+ if (neo) {
54
+ observer.value?.unobserve(neo);
55
+ observer.value = new ResizeObserver(() => {
56
+ rect.value = neo.getClientRects();
57
+ });
58
+ observer.value.observe(neo);
59
+ show.value = true;
60
+ } else {
61
+ show.value = false;
62
+ if (old && neo !== old) {
63
+ observer.value?.unobserve(old);
64
+ }
65
+ }
66
+ }, {
67
+ immediate: true
68
+ });
69
+ onBeforeUnmount(() => {
70
+ if (observer.value) {
71
+ observer.value.disconnect();
72
+ observer.value = null;
73
+ }
74
+ });
75
+ useRender(() => _withDirectives(_createVNode("div", {
76
+ "ref": layerRowRef,
77
+ "class": ['y-data-table-layer-row', ...computedClasses.value],
78
+ "style": computedStyles.value
79
+ }, [slots.default && slots.default({
80
+ item: props.item,
81
+ width: props.width,
82
+ height: rect.value?.[0]?.height,
83
+ scrollTop: props.scrollTop
84
+ })]), [[_vShow, show.value]]));
85
+ }
86
+ });
87
+ //# sourceMappingURL=YDataTableLayerRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YDataTableLayerRow.js","names":["computed","onBeforeUnmount","ref","shallowRef","useTemplateRef","watch","useRender","defineComponent","toStyleSizeValue","YDataTableLayerRow","name","props","layerProps","Object","item","width","type","Number","scrollTop","default","headRect","classes","Function","styles","slots","setup","_ref","observer","layerRowRef","rect","show","rowEl","computedStyles","propStyles","height","value","transform","offsetTop","computedClasses","propClassResult","Array","isArray","rowRef","$el","immediate","neo","old","unobserve","ResizeObserver","getClientRects","observe","disconnect","_withDirectives","_createVNode","_vShow"],"sources":["../../../src/components/table/YDataTableLayerRow.tsx"],"sourcesContent":["import {\n type PropType,\n SlotsType,\n computed,\n onBeforeUnmount,\n ref,\n shallowRef,\n useTemplateRef,\n watch,\n} from 'vue';\n\nimport { useRender } from '@/composables/component';\nimport { defineComponent } from '@/util/component';\nimport { toStyleSizeValue } from '@/util/ui';\n\nexport type YDataTableLayerRowDefaultSlotProps = {\n item: any;\n width: number | undefined;\n height: number | undefined;\n scrollTop: number;\n};\n\nexport const YDataTableLayerRow = defineComponent({\n name: 'YDataTableLayerRow',\n props: {\n layerProps: Object as PropType<any>,\n item: Object as PropType<any>,\n width: {\n type: Number as PropType<number>,\n },\n scrollTop: {\n type: Number as PropType<number>,\n default: 0,\n },\n headRect: Object as PropType<DOMRect>,\n classes: Function as PropType<(item: any) => string[] | string>,\n styles: Object as PropType<(item: any, originStyle: any) => any>,\n },\n slots: Object as SlotsType<{\n default: (slotProps: YDataTableLayerRowDefaultSlotProps) => any;\n }>,\n setup(props, { slots }) {\n const observer = shallowRef<ResizeObserver | null>(null);\n\n const layerRowRef = useTemplateRef<HTMLElement>('layerRowRef');\n const rect = shallowRef<DOMRectList | null>(null);\n const show = shallowRef(false);\n\n const rowEl = ref();\n\n const computedStyles = computed(() => {\n const propStyles =\n props.styles?.(props.item, {\n width: props.width,\n height: rect.value?.[0]?.height,\n }) ?? {};\n\n return {\n transform: `translateY(${props.scrollTop * -1 + (rowEl.value?.offsetTop ?? 0) - (props.headRect?.height ?? 40)}px)`,\n width: toStyleSizeValue(propStyles?.width ?? props.width),\n height: toStyleSizeValue(propStyles?.height ?? rect.value?.[0]?.height),\n };\n });\n\n const computedClasses = computed(() => {\n const propClassResult = props.classes?.(props.item);\n return Array.isArray(propClassResult)\n ? propClassResult\n : [propClassResult];\n });\n\n watch(\n () => props.item?.rowRef.value,\n () => {\n rowEl.value = props.item?.rowRef.value?.$el;\n },\n {\n immediate: true,\n },\n );\n\n watch(\n rowEl,\n (neo, old) => {\n if (neo) {\n observer.value?.unobserve(neo);\n observer.value = new ResizeObserver(() => {\n rect.value = neo.getClientRects();\n });\n observer.value.observe(neo);\n show.value = true;\n } else {\n show.value = false;\n if (old && neo !== old) {\n observer.value?.unobserve(old);\n }\n }\n },\n { immediate: true },\n );\n\n onBeforeUnmount(() => {\n if (observer.value) {\n observer.value.disconnect();\n observer.value = null;\n }\n });\n\n useRender(() => (\n <div\n ref={layerRowRef}\n v-show={show.value}\n class={['y-data-table-layer-row', ...computedClasses.value]}\n style={computedStyles.value}\n >\n {slots.default &&\n slots.default({\n item: props.item,\n width: props.width,\n height: rect.value?.[0]?.height,\n scrollTop: props.scrollTop,\n })}\n </div>\n ));\n },\n});\n"],"mappings":"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"}
@@ -66,11 +66,10 @@ watch(
66
66
  if (activeRowRef.value) {
67
67
  activeRowRef.value.classList.add('y-data-table-layer-row--change');
68
68
  }
69
- requestAnimationFrame(() => {
70
- setTimeout(() => {
71
- show.value = true;
72
- }, 300);
73
- });
69
+ // for wrapper transition end
70
+ setTimeout(() => {
71
+ show.value = true;
72
+ }, 300);
74
73
  } else {
75
74
  show.value = false;
76
75
  if (observer.value) {
@@ -90,7 +89,9 @@ watch(activeRowRef, (neo) => {
90
89
  });
91
90
 
92
91
  function onScrollWrapper() {
93
- scrollTop.value = wrapperEl.value?.scrollTop ?? 0;
92
+ requestAnimationFrame(() => {
93
+ scrollTop.value = wrapperEl.value?.scrollTop ?? 0;
94
+ });
94
95
  }
95
96
 
96
97
  function disconnectObserver() {
@@ -0,0 +1,60 @@
1
+ import { withDirectives as _withDirectives, createVNode as _createVNode, resolveDirective as _resolveDirective } from "vue";
2
+ import { computed, shallowRef, watch } from 'vue';
3
+ import { useRender } from "../../composables/index.js";
4
+ import { defineComponent } from "../../util/component/index.js";
5
+ import { YDataTableLayerRow } from "./YDataTableLayerRow.js";
6
+ import "./YDataTableLayerRows.scss";
7
+ export const YDataTableLayerRows = defineComponent({
8
+ name: 'YDataTableLayerRows',
9
+ props: {
10
+ layerProps: Object,
11
+ items: Array,
12
+ classes: Function,
13
+ styles: Object,
14
+ single: Boolean
15
+ },
16
+ slots: Object,
17
+ setup(props, _ref) {
18
+ let {
19
+ slots
20
+ } = _ref;
21
+ // wrapper
22
+ const wrapperObserver = shallowRef(null);
23
+ const wrapperOffsetTop = shallowRef(0);
24
+ const scrollTop = shallowRef(0);
25
+ const rowWidth = shallowRef(0);
26
+ const wrapperEl = computed(() => props.layerProps?.YTable?.wrapperRef.value);
27
+ const headRect = computed(() => props.layerProps?.YDataTable?.headRect.value);
28
+ watch(wrapperEl, neo => {
29
+ if (neo) {
30
+ onScrollWrapper();
31
+ neo.addEventListener('scroll', onScrollWrapper);
32
+ wrapperObserver.value = new ResizeObserver(() => {
33
+ wrapperOffsetTop.value = neo.offsetTop ?? 0;
34
+ rowWidth.value = neo?.clientWidth ?? 0;
35
+ });
36
+ wrapperObserver.value.observe(neo);
37
+ }
38
+ }, {
39
+ immediate: true
40
+ });
41
+ function onScrollWrapper() {
42
+ requestAnimationFrame(() => {
43
+ scrollTop.value = wrapperEl.value?.scrollTop ?? 0;
44
+ });
45
+ }
46
+ useRender(() => _createVNode("div", {
47
+ "class": "y-data-table-layer-rows"
48
+ }, [props.items?.map(item => {
49
+ return _withDirectives(_createVNode(YDataTableLayerRow, {
50
+ "item": item,
51
+ "head-rect": headRect,
52
+ "scroll-top": scrollTop.value,
53
+ "width": rowWidth.value,
54
+ "classes": props.classes,
55
+ "styles": props.styles
56
+ }, null), [[_resolveDirective("slot"), slots]]);
57
+ })]));
58
+ }
59
+ });
60
+ //# sourceMappingURL=YDataTableLayerRows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YDataTableLayerRows.js","names":["computed","shallowRef","watch","useRender","defineComponent","YDataTableLayerRow","YDataTableLayerRows","name","props","layerProps","Object","items","Array","classes","Function","styles","single","Boolean","slots","setup","_ref","wrapperObserver","wrapperOffsetTop","scrollTop","rowWidth","wrapperEl","YTable","wrapperRef","value","headRect","YDataTable","neo","onScrollWrapper","addEventListener","ResizeObserver","offsetTop","clientWidth","observe","immediate","requestAnimationFrame","_createVNode","map","item","_withDirectives","_resolveDirective"],"sources":["../../../src/components/table/YDataTableLayerRows.tsx"],"sourcesContent":["import { type PropType, SlotsType, computed, shallowRef, watch } from 'vue';\n\nimport { useRender } from '@/composables';\nimport { defineComponent } from '@/util/component';\n\nimport {\n YDataTableLayerRow,\n type YDataTableLayerRowDefaultSlotProps,\n} from './YDataTableLayerRow';\n\nimport './YDataTableLayerRows.scss';\n\nexport const YDataTableLayerRows = defineComponent({\n name: 'YDataTableLayerRows',\n props: {\n layerProps: Object as PropType<any>,\n items: Array as PropType<any[]>,\n classes: Function as PropType<(item: any) => string[] | string>,\n styles: Object as PropType<(item: any, originStyle: any) => any>,\n single: Boolean as PropType<boolean>,\n },\n slots: Object as SlotsType<{\n default: (slotProps: YDataTableLayerRowDefaultSlotProps) => any;\n }>,\n setup(props, { slots }) {\n // wrapper\n const wrapperObserver = shallowRef<ResizeObserver | null>(null);\n const wrapperOffsetTop = shallowRef(0);\n const scrollTop = shallowRef(0);\n const rowWidth = shallowRef(0);\n\n const wrapperEl = computed(\n () => props.layerProps?.YTable?.wrapperRef.value,\n );\n\n const headRect = computed(\n () => props.layerProps?.YDataTable?.headRect.value,\n );\n\n watch(\n wrapperEl,\n (neo) => {\n if (neo) {\n onScrollWrapper();\n neo.addEventListener('scroll', onScrollWrapper);\n wrapperObserver.value = new ResizeObserver(() => {\n wrapperOffsetTop.value = neo.offsetTop ?? 0;\n rowWidth.value = neo?.clientWidth ?? 0;\n });\n wrapperObserver.value.observe(neo);\n }\n },\n { immediate: true },\n );\n\n function onScrollWrapper() {\n requestAnimationFrame(() => {\n scrollTop.value = wrapperEl.value?.scrollTop ?? 0;\n });\n }\n\n useRender(() => (\n <div class=\"y-data-table-layer-rows\">\n {props.items?.map((item) => {\n return (\n <YDataTableLayerRow\n item={item}\n head-rect={headRect}\n scroll-top={scrollTop.value}\n width={rowWidth.value}\n classes={props.classes}\n styles={props.styles}\n v-slot={slots}\n ></YDataTableLayerRow>\n );\n })}\n </div>\n ));\n },\n});\n"],"mappings":";AAAA,SAAmCA,QAAQ,EAAEC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAC,SAEnEC,SAAS;AAAA,SACTC,eAAe;AAAA,SAGtBC,kBAAkB;AAIpB;AAEA,OAAO,MAAMC,mBAAmB,GAAGF,eAAe,CAAC;EACjDG,IAAI,EAAE,qBAAqB;EAC3BC,KAAK,EAAE;IACLC,UAAU,EAAEC,MAAuB;IACnCC,KAAK,EAAEC,KAAwB;IAC/BC,OAAO,EAAEC,QAAsD;IAC/DC,MAAM,EAAEL,MAAwD;IAChEM,MAAM,EAAEC;EACV,CAAC;EACDC,KAAK,EAAER,MAEL;EACFS,KAAKA,CAACX,KAAK,EAAAY,IAAA,EAAa;IAAA,IAAX;MAAEF;IAAM,CAAC,GAAAE,IAAA;IACpB;IACA,MAAMC,eAAe,GAAGpB,UAAU,CAAwB,IAAI,CAAC;IAC/D,MAAMqB,gBAAgB,GAAGrB,UAAU,CAAC,CAAC,CAAC;IACtC,MAAMsB,SAAS,GAAGtB,UAAU,CAAC,CAAC,CAAC;IAC/B,MAAMuB,QAAQ,GAAGvB,UAAU,CAAC,CAAC,CAAC;IAE9B,MAAMwB,SAAS,GAAGzB,QAAQ,CACxB,MAAMQ,KAAK,CAACC,UAAU,EAAEiB,MAAM,EAAEC,UAAU,CAACC,KAC7C,CAAC;IAED,MAAMC,QAAQ,GAAG7B,QAAQ,CACvB,MAAMQ,KAAK,CAACC,UAAU,EAAEqB,UAAU,EAAED,QAAQ,CAACD,KAC/C,CAAC;IAED1B,KAAK,CACHuB,SAAS,EACRM,GAAG,IAAK;MACP,IAAIA,GAAG,EAAE;QACPC,eAAe,CAAC,CAAC;QACjBD,GAAG,CAACE,gBAAgB,CAAC,QAAQ,EAAED,eAAe,CAAC;QAC/CX,eAAe,CAACO,KAAK,GAAG,IAAIM,cAAc,CAAC,MAAM;UAC/CZ,gBAAgB,CAACM,KAAK,GAAGG,GAAG,CAACI,SAAS,IAAI,CAAC;UAC3CX,QAAQ,CAACI,KAAK,GAAGG,GAAG,EAAEK,WAAW,IAAI,CAAC;QACxC,CAAC,CAAC;QACFf,eAAe,CAACO,KAAK,CAACS,OAAO,CAACN,GAAG,CAAC;MACpC;IACF,CAAC,EACD;MAAEO,SAAS,EAAE;IAAK,CACpB,CAAC;IAED,SAASN,eAAeA,CAAA,EAAG;MACzBO,qBAAqB,CAAC,MAAM;QAC1BhB,SAAS,CAACK,KAAK,GAAGH,SAAS,CAACG,KAAK,EAAEL,SAAS,IAAI,CAAC;MACnD,CAAC,CAAC;IACJ;IAEApB,SAAS,CAAC,MAAAqC,YAAA;MAAA;IAAA,IAELhC,KAAK,CAACG,KAAK,EAAE8B,GAAG,CAAEC,IAAI,IAAK;MAC1B,OAAAC,eAAA,CAAAH,YAAA,CAAAnC,kBAAA;QAAA,QAEUqC,IAAI;QAAA,aACCb,QAAQ;QAAA,cACPN,SAAS,CAACK,KAAK;QAAA,SACpBJ,QAAQ,CAACI,KAAK;QAAA,WACZpB,KAAK,CAACK,OAAO;QAAA,UACdL,KAAK,CAACO;MAAM,YAAA6B,iBAAA,UACZ1B,KAAK;IAGnB,CAAC,CAAC,EAEL,CAAC;EACJ;AACF,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ .y-data-table-layer-rows {
2
+ position: absolute;
3
+ top: 0;
4
+ left: 0;
5
+ right: 0;
6
+ bottom: 0;
7
+ clip-path: inset(0 -20px 0 -20px);
8
+ }
9
+
10
+ .y-data-table-layer-row {
11
+ pointer-events: none;
12
+ position: absolute;
13
+ left: 0;
14
+ }