@uzum-tech/ui 2.0.5 → 2.0.7

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 (136) hide show
  1. package/dist/index.js +1183 -573
  2. package/dist/index.mjs +1183 -573
  3. package/dist/index.prod.js +2 -2
  4. package/dist/index.prod.mjs +2 -2
  5. package/es/_internal/icons/DragHandleRound.mjs +16 -0
  6. package/es/_internal/icons/index.d.ts +1 -1
  7. package/es/_internal/icons/index.mjs +1 -1
  8. package/es/components.d.ts +99 -30
  9. package/es/data-table/src/DataTable.d.ts +24 -0
  10. package/es/data-table/src/DataTable.mjs +31 -0
  11. package/es/data-table/src/HeaderButton/FilterButton.d.ts +6 -0
  12. package/es/data-table/src/HeaderButton/FilterMenu.d.ts +6 -0
  13. package/es/data-table/src/TableParts/Body.d.ts +17 -9
  14. package/es/data-table/src/TableParts/Body.mjs +81 -274
  15. package/es/data-table/src/TableParts/BodyEmpty.d.ts +3 -0
  16. package/es/data-table/src/TableParts/BodyEmpty.mjs +22 -0
  17. package/es/data-table/src/TableParts/BodyRow.d.ts +3 -0
  18. package/es/data-table/src/TableParts/BodyRow.mjs +257 -0
  19. package/es/data-table/src/TableParts/BodySkeleton.mjs +5 -2
  20. package/es/data-table/src/TableParts/Header.d.ts +6 -0
  21. package/es/data-table/src/TableParts/Header.mjs +5 -1
  22. package/es/data-table/src/TableParts/VirtualListItemWrapper.d.ts +36 -0
  23. package/es/data-table/src/TableParts/VirtualListItemWrapper.mjs +46 -0
  24. package/es/data-table/src/interface.d.ts +161 -2
  25. package/es/data-table/src/styles/index.cssr.mjs +26 -3
  26. package/es/data-table/src/use-group-header.d.ts +3 -3
  27. package/es/data-table/src/use-row-drag.d.ts +2 -0
  28. package/es/data-table/src/use-row-drag.mjs +241 -0
  29. package/es/data-table/src/use-sorter.d.ts +4 -8
  30. package/es/data-table/src/use-sorter.mjs +14 -2
  31. package/es/data-table/src/use-table-data.d.ts +11 -14
  32. package/es/data-table/src/use-table-data.mjs +4 -2
  33. package/es/data-table/src/use-table-storage.d.ts +2 -2
  34. package/es/data-table/src/use-table-storage.mjs +1 -1
  35. package/es/data-table/src/utils/column-utils.d.ts +3 -2
  36. package/es/data-table/src/utils/column-utils.mjs +9 -1
  37. package/es/data-table/src/utils/csv-utils.mjs +1 -1
  38. package/es/data-table/src/utils/flatten-rows.d.ts +2 -0
  39. package/es/data-table/src/utils/flatten-rows.mjs +33 -0
  40. package/es/data-table/src/utils/index.d.ts +1 -0
  41. package/es/data-table/src/utils/index.mjs +1 -0
  42. package/es/data-table/src/utils/resize-orchestrator-utils.d.ts +3 -5
  43. package/es/data-table/src/utils/width-utils.d.ts +2 -2
  44. package/es/data-table/styles/light.d.ts +6 -0
  45. package/es/data-table/styles/light.mjs +3 -0
  46. package/es/mapping-card/src/MappingCard.d.ts +8 -0
  47. package/es/mapping-card/src/MappingCard.mjs +3 -1
  48. package/es/mapping-card/src/MappingCardParts/Header.mjs +31 -10
  49. package/es/mapping-card/src/interface.d.ts +8 -0
  50. package/es/mapping-card/src/interface.mjs +4 -0
  51. package/es/mapping-card/src/styles/index.cssr.mjs +8 -1
  52. package/es/tree/src/Tree.d.ts +49 -24
  53. package/es/tree/src/Tree.mjs +18 -13
  54. package/es/tree/src/TreeNodeCheckbox.d.ts +4 -0
  55. package/es/tree/src/TreeNodeSwitcher.mjs +24 -26
  56. package/es/tree/src/styles/index.cssr.mjs +11 -8
  57. package/es/tree/styles/light.d.ts +4 -0
  58. package/es/tree/styles/light.mjs +2 -0
  59. package/es/tree-select/index.d.ts +1 -1
  60. package/es/tree-select/src/TreeSelect.d.ts +43 -16
  61. package/es/tree-select/src/TreeSelect.mjs +65 -35
  62. package/es/tree-select/src/interface.d.ts +6 -1
  63. package/es/tree-select/src/scroll-option-end.d.ts +3 -0
  64. package/es/tree-select/src/scroll-option-end.mjs +28 -0
  65. package/es/tree-select/styles/light.d.ts +2 -0
  66. package/es/version.d.ts +1 -1
  67. package/es/version.mjs +1 -1
  68. package/lib/_internal/icons/DragHandleRound.js +10 -0
  69. package/lib/_internal/icons/index.d.ts +1 -1
  70. package/lib/_internal/icons/index.js +4 -4
  71. package/lib/components.d.ts +99 -30
  72. package/lib/data-table/src/DataTable.d.ts +24 -0
  73. package/lib/data-table/src/DataTable.js +19 -1
  74. package/lib/data-table/src/HeaderButton/FilterButton.d.ts +6 -0
  75. package/lib/data-table/src/HeaderButton/FilterMenu.d.ts +6 -0
  76. package/lib/data-table/src/TableParts/Body.d.ts +18 -10
  77. package/lib/data-table/src/TableParts/Body.js +65 -237
  78. package/lib/data-table/src/TableParts/BodyEmpty.d.ts +3 -0
  79. package/lib/data-table/src/TableParts/BodyEmpty.js +15 -0
  80. package/lib/data-table/src/TableParts/BodyRow.d.ts +3 -0
  81. package/lib/data-table/src/TableParts/BodyRow.js +210 -0
  82. package/lib/data-table/src/TableParts/BodySkeleton.js +8 -2
  83. package/lib/data-table/src/TableParts/Header.d.ts +6 -0
  84. package/lib/data-table/src/TableParts/Header.js +6 -0
  85. package/lib/data-table/src/TableParts/VirtualListItemWrapper.d.ts +36 -0
  86. package/lib/data-table/src/TableParts/VirtualListItemWrapper.js +29 -0
  87. package/lib/data-table/src/interface.d.ts +161 -2
  88. package/lib/data-table/src/styles/index.cssr.js +26 -3
  89. package/lib/data-table/src/use-group-header.d.ts +3 -3
  90. package/lib/data-table/src/use-row-drag.d.ts +2 -0
  91. package/lib/data-table/src/use-row-drag.js +270 -0
  92. package/lib/data-table/src/use-sorter.d.ts +4 -8
  93. package/lib/data-table/src/use-sorter.js +14 -0
  94. package/lib/data-table/src/use-table-data.d.ts +11 -14
  95. package/lib/data-table/src/use-table-data.js +5 -1
  96. package/lib/data-table/src/use-table-storage.d.ts +2 -2
  97. package/lib/data-table/src/use-table-storage.js +1 -0
  98. package/lib/data-table/src/utils/column-utils.d.ts +3 -2
  99. package/lib/data-table/src/utils/column-utils.js +11 -2
  100. package/lib/data-table/src/utils/csv-utils.js +1 -0
  101. package/lib/data-table/src/utils/flatten-rows.d.ts +2 -0
  102. package/lib/data-table/src/utils/flatten-rows.js +35 -0
  103. package/lib/data-table/src/utils/index.d.ts +1 -0
  104. package/lib/data-table/src/utils/index.js +1 -0
  105. package/lib/data-table/src/utils/resize-orchestrator-utils.d.ts +3 -5
  106. package/lib/data-table/src/utils/width-utils.d.ts +2 -2
  107. package/lib/data-table/styles/light.d.ts +6 -0
  108. package/lib/data-table/styles/light.js +3 -0
  109. package/lib/mapping-card/src/MappingCard.d.ts +8 -0
  110. package/lib/mapping-card/src/MappingCard.js +5 -1
  111. package/lib/mapping-card/src/MappingCardParts/Header.js +29 -5
  112. package/lib/mapping-card/src/interface.d.ts +8 -0
  113. package/lib/mapping-card/src/interface.js +4 -0
  114. package/lib/mapping-card/src/styles/index.cssr.js +8 -1
  115. package/lib/tree/src/Tree.d.ts +49 -24
  116. package/lib/tree/src/Tree.js +16 -15
  117. package/lib/tree/src/TreeNodeCheckbox.d.ts +4 -0
  118. package/lib/tree/src/TreeNodeSwitcher.js +11 -14
  119. package/lib/tree/src/styles/index.cssr.js +11 -8
  120. package/lib/tree/styles/light.d.ts +4 -0
  121. package/lib/tree/styles/light.js +2 -0
  122. package/lib/tree-select/index.d.ts +1 -1
  123. package/lib/tree-select/src/TreeSelect.d.ts +43 -16
  124. package/lib/tree-select/src/TreeSelect.js +66 -40
  125. package/lib/tree-select/src/interface.d.ts +6 -1
  126. package/lib/tree-select/src/scroll-option-end.d.ts +3 -0
  127. package/lib/tree-select/src/scroll-option-end.js +30 -0
  128. package/lib/tree-select/styles/light.d.ts +2 -0
  129. package/lib/version.d.ts +1 -1
  130. package/lib/version.js +1 -1
  131. package/package.json +2 -2
  132. package/web-types.json +21 -1
  133. package/es/_internal/icons/Switcher.mjs +0 -12
  134. package/lib/_internal/icons/Switcher.js +0 -10
  135. /package/es/_internal/icons/{Switcher.d.ts → DragHandleRound.d.ts} +0 -0
  136. /package/lib/_internal/icons/{Switcher.d.ts → DragHandleRound.d.ts} +0 -0
@@ -1,14 +1,7 @@
1
1
  import type { CSSProperties, PropType } from 'vue';
2
2
  import type { VirtualListInst } from 'vueuc';
3
3
  import type { ScrollbarInst } from '../../../_internal';
4
- import type { ColumnKey, RowKey, TmNode } from '../interface';
5
- import type { ColItem } from '../use-group-header';
6
- interface NormalRowRenderInfo {
7
- striped: boolean;
8
- tmNode: TmNode;
9
- key: RowKey;
10
- index: number;
11
- }
4
+ import type { ColumnKey, NormalRowRenderInfo, RowKey, TmNode } from '../interface';
12
5
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
13
6
  onEdit: PropType<(value: string, row: string, key: string) => void>;
14
7
  onResize: PropType<(e: ResizeObserverEntry) => void>;
@@ -103,6 +96,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
103
96
  thButtonColorHover: string;
104
97
  thIconColor: string;
105
98
  thIconColorActive: string;
99
+ dropMarkColor: string;
100
+ dragGhostOpacity: string;
101
+ dragGhostFilter: string;
106
102
  borderColorModal: string;
107
103
  tdColorHoverModal: string;
108
104
  tdColorStripedModal: string;
@@ -1497,6 +1493,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1497
1493
  thButtonColorHover: string;
1498
1494
  thIconColor: string;
1499
1495
  thIconColorActive: string;
1496
+ dropMarkColor: string;
1497
+ dragGhostOpacity: string;
1498
+ dragGhostFilter: string;
1500
1499
  borderColorModal: string;
1501
1500
  tdColorHoverModal: string;
1502
1501
  tdColorStripedModal: string;
@@ -2849,7 +2848,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
2849
2848
  };
2850
2849
  }>;
2851
2850
  scrollX: import("vue").Ref<string | number | undefined, string | number | undefined>;
2852
- cols: import("vue").Ref<ColItem[], ColItem[]>;
2851
+ cols: import("vue").Ref<import("../use-group-header").ColItem[], import("../use-group-header").ColItem[]>;
2853
2852
  loading: import("vue").Ref<boolean, boolean>;
2854
2853
  loadingSkeleton: import("vue").Ref<boolean, boolean>;
2855
2854
  bodyShowHeaderOnly: import("vue").ComputedRef<boolean>;
@@ -2910,6 +2909,15 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
2910
2909
  renderCell: import("vue").Ref<((value: any, rowData: object, column: import("../interface").TableBaseColumn) => import("vue").VNodeChild) | undefined, ((value: any, rowData: object, column: import("../interface").TableBaseColumn) => import("vue").VNodeChild) | undefined>;
2911
2910
  defaultEmptyValueRef: import("vue").Ref<string | (() => import("vue").VNodeChild) | undefined, string | (() => import("vue").VNodeChild) | undefined>;
2912
2911
  emptyPropsRef: import("vue").Ref<Partial<import("../../..").EmptyProps> | undefined, Partial<import("../../..").EmptyProps> | undefined>;
2912
+ draggableColumn: import("vue").Ref<import("../interface").TableDraggableColumn<import("../interface").InternalRowData> | null, import("../interface").TableDraggableColumn<import("../interface").InternalRowData> | null>;
2913
+ draggingRowKeySet: import("vue").Ref<Set<RowKey>, Set<RowKey>>;
2914
+ droppingRowKey: import("vue").Ref<RowKey | null, RowKey | null>;
2915
+ droppingPosition: import("vue").Ref<import("../interface").RowDropPosition | null, import("../interface").RowDropPosition | null>;
2916
+ handleRowDragStart: (event: DragEvent, rowKey: RowKey) => void;
2917
+ handleRowDragOver: (event: DragEvent, rowKey: RowKey) => void;
2918
+ handleRowDragLeave: (event: DragEvent, rowKey: RowKey) => void;
2919
+ handleRowDragEnd: () => void;
2920
+ handleRowDrop: (event: DragEvent, rowKey: RowKey) => void;
2913
2921
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "edit"[], "edit", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
2914
2922
  onEdit: PropType<(value: string, row: string, key: string) => void>;
2915
2923
  onResize: PropType<(e: ResizeObserverEntry) => void>;
@@ -1,106 +1,19 @@
1
- var __rest = this && this.__rest || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
4
- if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
5
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
6
- }
7
- return t;
8
- };
9
- import { depx, pxfy, repeat } from 'seemly';
1
+ import { depx, pxfy } from 'seemly';
10
2
  import { useMemo } from 'vooks';
11
3
  import { computed, defineComponent, Fragment, h, inject, onUnmounted, ref, watchEffect } from 'vue';
12
4
  import { VirtualList, VResizeObserver } from 'vueuc';
13
5
  import { UScrollbar } from "../../../_internal/index.mjs";
14
6
  import { cssrAnchorMetaName } from "../../../_mixins/common.mjs";
15
- import { formatLength, resolveSlot, warn } from "../../../_utils/index.mjs";
7
+ import { formatLength, warn } from "../../../_utils/index.mjs";
16
8
  import { c } from "../../../_utils/cssr/index.mjs";
17
9
  import { configProviderInjectionKey } from "../../../config-provider/src/context.mjs";
18
- import { UEmpty } from "../../../empty/index.mjs";
19
10
  import { dataTableInjectionKey } from "../interface.mjs";
20
- import { createRowClassName, getColKey, isColumnSorting } from "../utils/index.mjs";
21
- import RenderSafeCheckbox from "./BodyCheckbox.mjs";
22
- import RenderSafeRadio from "./BodyRadio.mjs";
11
+ import { flattenExpandedRows } from "../utils/index.mjs";
12
+ import { renderBodyEmpty } from "./BodyEmpty.mjs";
13
+ import { renderBodyRow } from "./BodyRow.mjs";
23
14
  import BodySkeleton from "./BodySkeleton.mjs";
24
- import Cell from "./Cell.mjs";
25
- import ExpandTrigger from "./ExpandTrigger.mjs";
26
15
  import TableHeader from "./Header.mjs";
27
- function flatten(rowInfos, expandedRowKeys) {
28
- const fRows = [];
29
- function traverse(rs, rootIndex) {
30
- rs.forEach(r => {
31
- if (r.children && expandedRowKeys.has(r.key)) {
32
- fRows.push({
33
- tmNode: r,
34
- striped: false,
35
- key: r.key,
36
- index: rootIndex
37
- });
38
- traverse(r.children, rootIndex);
39
- } else {
40
- fRows.push({
41
- key: r.key,
42
- tmNode: r,
43
- striped: false,
44
- index: rootIndex
45
- });
46
- }
47
- });
48
- }
49
- rowInfos.forEach(rowInfo => {
50
- fRows.push(rowInfo);
51
- const {
52
- children
53
- } = rowInfo.tmNode;
54
- if (children && expandedRowKeys.has(rowInfo.key)) {
55
- traverse(children, rowInfo.index);
56
- }
57
- });
58
- return fRows;
59
- }
60
- const VirtualListItemWrapper = defineComponent({
61
- props: {
62
- clsPrefix: {
63
- type: String,
64
- required: true
65
- },
66
- id: {
67
- type: String,
68
- required: true
69
- },
70
- cols: {
71
- type: Array,
72
- required: true
73
- },
74
- tableWidth: String,
75
- onMouseenter: Function,
76
- onMouseleave: Function
77
- },
78
- render() {
79
- const {
80
- clsPrefix,
81
- id,
82
- cols,
83
- tableWidth,
84
- onMouseenter,
85
- onMouseleave
86
- } = this;
87
- return h("table", {
88
- style: {
89
- tableLayout: 'fixed',
90
- width: tableWidth
91
- },
92
- class: `${clsPrefix}-data-table-table`,
93
- onMouseenter: onMouseenter,
94
- onMouseleave: onMouseleave
95
- }, h("colgroup", null, cols.map(col => h("col", {
96
- key: col.key,
97
- style: col.style
98
- }))), h("tbody", {
99
- "data-u-id": id,
100
- class: `${clsPrefix}-data-table-tbody`
101
- }, this.$slots));
102
- }
103
- });
16
+ import VirtualListItemWrapper from "./VirtualListItemWrapper.mjs";
104
17
  export default defineComponent({
105
18
  name: 'DataTableBody',
106
19
  emits: ['edit'],
@@ -160,7 +73,16 @@ export default defineComponent({
160
73
  doUncheck,
161
74
  renderCell,
162
75
  defaultEmptyValueRef,
163
- emptyPropsRef
76
+ emptyPropsRef,
77
+ draggableColumnRef,
78
+ draggingRowKeySetRef,
79
+ droppingRowKeyRef,
80
+ droppingPositionRef,
81
+ handleRowDragStart,
82
+ handleRowDragOver,
83
+ handleRowDragLeave,
84
+ handleRowDragEnd,
85
+ handleRowDrop
164
86
  } = inject(dataTableInjectionKey);
165
87
  const UConfigProvider = inject(configProviderInjectionKey, null);
166
88
  const scrollbarInstRef = ref(null);
@@ -467,7 +389,16 @@ export default defineComponent({
467
389
  handleUpdateExpanded,
468
390
  renderCell,
469
391
  defaultEmptyValueRef,
470
- emptyPropsRef
392
+ emptyPropsRef,
393
+ draggableColumn: draggableColumnRef,
394
+ draggingRowKeySet: draggingRowKeySetRef,
395
+ droppingRowKey: droppingRowKeyRef,
396
+ droppingPosition: droppingPositionRef,
397
+ handleRowDragStart,
398
+ handleRowDragOver,
399
+ handleRowDragLeave,
400
+ handleRowDragEnd,
401
+ handleRowDrop
471
402
  }, exposedMethods);
472
403
  },
473
404
  render() {
@@ -554,7 +485,7 @@ export default defineComponent({
554
485
  data: paginatedData,
555
486
  hasChildren
556
487
  } = paginatedDataAndInfo;
557
- const mergedPaginationData = hasChildren ? flatten(paginatedData, mergedExpandedRowKeySet) : paginatedData;
488
+ const mergedPaginationData = hasChildren ? flattenExpandedRows(paginatedData, mergedExpandedRowKeySet) : paginatedData;
558
489
  if (summary) {
559
490
  const summaryRows = summary(this.rawPaginatedData);
560
491
  if (Array.isArray(summaryRows)) {
@@ -612,177 +543,54 @@ export default defineComponent({
612
543
  });
613
544
  const bodyWidth = stickyExpandedRows ? this.bodyWidth : null;
614
545
  const bodyWidthPx = bodyWidth === null ? undefined : `${bodyWidth}px`;
615
- const renderRow = (rowInfo, displayedRowIndex, isVirtual) => {
616
- const {
617
- index: actualRowIndex
618
- } = rowInfo;
619
- if ('isExpandedRow' in rowInfo) {
620
- const {
621
- tmNode: {
622
- key,
623
- rawNode
624
- }
625
- } = rowInfo;
626
- return h("tr", {
627
- class: `${mergedClsPrefix}-data-table-tr ${mergedClsPrefix}-data-table-tr--expanded`,
628
- key: `${key}__expand`
629
- }, h("td", {
630
- class: [`${mergedClsPrefix}-data-table-td`, `${mergedClsPrefix}-data-table-td--last-col`, displayedRowIndex + 1 === rowCount && `${mergedClsPrefix}-data-table-td--last-row`],
631
- colspan: colCount
632
- }, stickyExpandedRows ? h("div", {
633
- class: `${mergedClsPrefix}-data-table-expand`,
634
- style: {
635
- width: bodyWidthPx
636
- }
637
- }, renderExpand(rawNode, actualRowIndex)) : renderExpand(rawNode, actualRowIndex)));
546
+ const renderContext = {
547
+ mergedClsPrefix,
548
+ cols,
549
+ colCount,
550
+ rowCount,
551
+ hasChildren,
552
+ childTriggerColIndex,
553
+ indentStyle,
554
+ rowClassName,
555
+ rowProps,
556
+ mergedSortState,
557
+ mergedExpandedRowKeySet,
558
+ fixedColumnLeftMap,
559
+ fixedColumnRightMap,
560
+ currentPage,
561
+ loadingKeySet,
562
+ stickyExpandedRows,
563
+ bodyWidthPx,
564
+ renderExpand,
565
+ renderExpandIcon: this.renderExpandIcon,
566
+ renderCell: this.renderCell,
567
+ defaultEmptyValue: this.defaultEmptyValueRef,
568
+ mergedTheme,
569
+ rowIndexToKey,
570
+ cordToPass,
571
+ cordKey,
572
+ draggableColumn: this.draggableColumn,
573
+ droppingRowKey: this.droppingRowKey,
574
+ droppingPosition: this.droppingPosition,
575
+ draggingRowKeySet: this.draggingRowKeySet,
576
+ hoverKey: this.hoverKey,
577
+ dataTableSlots: this.dataTableSlots,
578
+ setHoverKey: key => {
579
+ this.hoverKey = key;
580
+ },
581
+ handleCheckboxUpdateChecked,
582
+ handleRadioUpdateChecked,
583
+ handleUpdateExpanded,
584
+ handleRowDragStart: this.handleRowDragStart,
585
+ handleRowDragOver: this.handleRowDragOver,
586
+ handleRowDragLeave: this.handleRowDragLeave,
587
+ handleRowDragEnd: this.handleRowDragEnd,
588
+ handleRowDrop: this.handleRowDrop,
589
+ emitEdit: (value, row, key) => {
590
+ this.$emit('edit', value, row, key);
638
591
  }
639
- const isSummary = 'isSummaryRow' in rowInfo;
640
- const striped = !isSummary && rowInfo.striped;
641
- const {
642
- tmNode,
643
- key: rowKey
644
- } = rowInfo;
645
- const {
646
- rawNode: rowData
647
- } = tmNode;
648
- const expanded = mergedExpandedRowKeySet.has(rowKey);
649
- const props = rowProps ? rowProps(rowData, actualRowIndex) : undefined;
650
- const mergedRowClassName = typeof rowClassName === 'string' ? rowClassName : createRowClassName(rowData, actualRowIndex, rowClassName);
651
- const _a = props || {},
652
- {
653
- class: _class
654
- } = _a,
655
- restProps = __rest(_a, ["class"]);
656
- const row = h("tr", Object.assign({
657
- onMouseenter: () => {
658
- this.hoverKey = rowKey;
659
- },
660
- key: rowKey,
661
- class: [`${mergedClsPrefix}-data-table-tr`, rowInfo.tmNode.disabled && `${mergedClsPrefix}-data-table-tr--disabled`, isSummary && `${mergedClsPrefix}-data-table-tr--summary`, striped && `${mergedClsPrefix}-data-table-tr--striped`, expanded && `${mergedClsPrefix}-data-table-tr--expanded`, mergedRowClassName, _class]
662
- }, restProps), cols.map((col, colIndex) => {
663
- var _a, _b, _c, _d, _e;
664
- if (displayedRowIndex in cordToPass) {
665
- const cordOfRowToPass = cordToPass[displayedRowIndex];
666
- const indexInCordOfRowToPass = cordOfRowToPass.indexOf(colIndex);
667
- if (~indexInCordOfRowToPass) {
668
- cordOfRowToPass.splice(indexInCordOfRowToPass, 1);
669
- return null;
670
- }
671
- }
672
- // TODO: Simplify row calculation
673
- const {
674
- column
675
- } = col;
676
- const colKey = getColKey(col);
677
- const {
678
- rowSpan,
679
- colSpan
680
- } = column;
681
- const mergedColSpan = isSummary ? ((_a = rowInfo.tmNode.rawNode[colKey]) === null || _a === void 0 ? void 0 : _a.colSpan) || 1 // optional for #1276
682
- : colSpan ? colSpan(rowData, actualRowIndex) : 1;
683
- const mergedRowSpan = isSummary ? ((_b = rowInfo.tmNode.rawNode[colKey]) === null || _b === void 0 ? void 0 : _b.rowSpan) || 1 // optional for #1276
684
- : rowSpan ? rowSpan(rowData, actualRowIndex) : 1;
685
- const isLastCol = colIndex + mergedColSpan === colCount;
686
- const isLastRow = displayedRowIndex + mergedRowSpan === rowCount;
687
- const isCrossRowTd = mergedRowSpan > 1;
688
- if (isCrossRowTd) {
689
- cordKey[displayedRowIndex] = {
690
- [colIndex]: []
691
- };
692
- }
693
- if (mergedColSpan > 1 || isCrossRowTd) {
694
- for (let i = displayedRowIndex; i < displayedRowIndex + mergedRowSpan; ++i) {
695
- if (isCrossRowTd) {
696
- cordKey[displayedRowIndex][colIndex].push(rowIndexToKey[i]);
697
- }
698
- for (let j = colIndex; j < colIndex + mergedColSpan; ++j) {
699
- if (i === displayedRowIndex && j === colIndex) {
700
- continue;
701
- }
702
- if (!(i in cordToPass)) {
703
- cordToPass[i] = [j];
704
- } else {
705
- cordToPass[i].push(j);
706
- }
707
- }
708
- }
709
- }
710
- const hoverKey = isCrossRowTd ? this.hoverKey : null;
711
- const {
712
- cellProps
713
- } = column;
714
- const resolvedCellProps = cellProps === null || cellProps === void 0 ? void 0 : cellProps(rowData, actualRowIndex);
715
- const indentOffsetStyle = {
716
- '--indent-offset': ''
717
- };
718
- return h("td", Object.assign({}, resolvedCellProps, {
719
- key: colKey,
720
- style: [{
721
- textAlign: column.align || undefined,
722
- left: pxfy((_c = fixedColumnLeftMap[colKey]) === null || _c === void 0 ? void 0 : _c.start),
723
- right: pxfy((_d = fixedColumnRightMap[colKey]) === null || _d === void 0 ? void 0 : _d.start)
724
- }, indentOffsetStyle, (resolvedCellProps === null || resolvedCellProps === void 0 ? void 0 : resolvedCellProps.style) || ''],
725
- colspan: mergedColSpan,
726
- rowspan: isVirtual ? undefined : mergedRowSpan,
727
- "data-col-key": colKey,
728
- class: [`${mergedClsPrefix}-data-table-td`, column.className, resolvedCellProps === null || resolvedCellProps === void 0 ? void 0 : resolvedCellProps.class, isSummary && `${mergedClsPrefix}-data-table-td--summary`, (hoverKey !== null && cordKey[displayedRowIndex][colIndex].includes(hoverKey) || isColumnSorting(column, mergedSortState)) && `${mergedClsPrefix}-data-table-td--hover`, column.fixed && `${mergedClsPrefix}-data-table-td--fixed-${column.fixed}`, column.align && `${mergedClsPrefix}-data-table-td--${column.align}-align`, column.type === 'selection' && `${mergedClsPrefix}-data-table-td--selection`, column.type === 'expand' && `${mergedClsPrefix}-data-table-td--expand`, isLastCol && `${mergedClsPrefix}-data-table-td--last-col`, isLastRow && `${mergedClsPrefix}-data-table-td--last-row`, 'editable' in column && (typeof column.editable === 'function' ? column.editable(rowData) : column.editable) && !isSummary && `${mergedClsPrefix}-data-table-td--editable`]
729
- }), column.fixed && h("div", {
730
- class: `${mergedClsPrefix}-data-table-td__shadow-holder`
731
- }), hasChildren && colIndex === childTriggerColIndex ? [repeat(indentOffsetStyle['--indent-offset'] = isSummary ? 0 : rowInfo.tmNode.level, h("div", {
732
- class: `${mergedClsPrefix}-data-table-indent`,
733
- style: indentStyle
734
- })), isSummary || rowInfo.tmNode.isLeaf ? h("div", {
735
- class: `${mergedClsPrefix}-data-table-expand-placeholder`
736
- }) : h(ExpandTrigger, {
737
- class: `${mergedClsPrefix}-data-table-expand-trigger`,
738
- clsPrefix: mergedClsPrefix,
739
- expanded: expanded,
740
- renderExpandIcon: this.renderExpandIcon,
741
- loading: loadingKeySet.has(rowInfo.key),
742
- onClick: () => {
743
- handleUpdateExpanded(rowKey, rowInfo.tmNode);
744
- }
745
- })] : null, column.type === 'selection' ? !isSummary ? column.multiple === false ? h(RenderSafeRadio, {
746
- key: currentPage,
747
- rowKey: rowKey,
748
- disabled: rowInfo.tmNode.disabled,
749
- onClick: event => {
750
- event.stopPropagation();
751
- },
752
- onUpdateChecked: () => {
753
- handleRadioUpdateChecked(rowInfo.tmNode);
754
- }
755
- }) : h(RenderSafeCheckbox, {
756
- key: currentPage,
757
- rowKey: rowKey,
758
- disabled: rowInfo.tmNode.disabled,
759
- onUpdateChecked: (checked, event) => {
760
- event.stopPropagation();
761
- handleCheckboxUpdateChecked(rowInfo.tmNode, checked, event.shiftKey);
762
- }
763
- }) : null : column.type === 'expand' ? !isSummary ? !column.expandable || ((_e = column.expandable) === null || _e === void 0 ? void 0 : _e.call(column, rowData)) ? h(ExpandTrigger, {
764
- clsPrefix: mergedClsPrefix,
765
- expanded: expanded,
766
- renderExpandIcon: this.renderExpandIcon,
767
- onClick: () => {
768
- handleUpdateExpanded(rowKey, null);
769
- }
770
- }) : null : null : h(Cell, {
771
- clsPrefix: mergedClsPrefix,
772
- index: actualRowIndex,
773
- row: rowData,
774
- column: column,
775
- isSummary: isSummary,
776
- mergedTheme: mergedTheme,
777
- renderCell: this.renderCell,
778
- defaultEmptyValue: this.defaultEmptyValueRef,
779
- onEdit: (value, row, key) => {
780
- this.$emit('edit', value, row, key);
781
- }
782
- }));
783
- }));
784
- return row;
785
592
  };
593
+ const renderRow = (rowInfo, displayedRowIndex, isVirtual) => renderBodyRow(renderContext, rowInfo, displayedRowIndex, isVirtual);
786
594
  if (!virtualScroll) {
787
595
  return h("table", {
788
596
  class: `${mergedClsPrefix}-data-table-table`,
@@ -845,15 +653,14 @@ export default defineComponent({
845
653
  }
846
654
  });
847
655
  if (this.empty && !this.loadingSkeleton) {
848
- const createEmptyNode = () => h("div", {
849
- class: [`${mergedClsPrefix}-data-table-empty`, this.loading && `${mergedClsPrefix}-data-table-empty--hide`],
850
- style: this.bodyStyle,
851
- ref: "emptyElRef"
852
- }, resolveSlot(this.dataTableSlots.empty, () => [h(UEmpty, Object.assign({
853
- size: "large",
854
- theme: this.mergedTheme.peers.Empty,
855
- themeOverrides: this.mergedTheme.peerOverrides.Empty
856
- }, emptyPropsRef))]));
656
+ const createEmptyNode = () => renderBodyEmpty({
657
+ clsPrefix: mergedClsPrefix,
658
+ loading: this.loading,
659
+ bodyStyle: this.bodyStyle,
660
+ dataTableSlots: this.dataTableSlots,
661
+ mergedTheme: this.mergedTheme,
662
+ emptyProps: emptyPropsRef
663
+ });
857
664
  if (this.shouldDisplaySomeTablePart) {
858
665
  return h(Fragment, null, tableNode, createEmptyNode());
859
666
  } else {
@@ -0,0 +1,3 @@
1
+ import type { VNode } from 'vue';
2
+ import type { BodyEmptyDeps } from '../interface';
3
+ export declare function renderBodyEmpty(deps: BodyEmptyDeps): VNode;
@@ -0,0 +1,22 @@
1
+ import { h } from 'vue';
2
+ import { resolveSlot } from "../../../_utils/index.mjs";
3
+ import { UEmpty } from "../../../empty/index.mjs";
4
+ export function renderBodyEmpty(deps) {
5
+ const {
6
+ clsPrefix,
7
+ loading,
8
+ bodyStyle,
9
+ dataTableSlots,
10
+ mergedTheme,
11
+ emptyProps
12
+ } = deps;
13
+ return h("div", {
14
+ class: [`${clsPrefix}-data-table-empty`, loading && `${clsPrefix}-data-table-empty--hide`],
15
+ style: bodyStyle,
16
+ ref: "emptyElRef"
17
+ }, resolveSlot(dataTableSlots.empty, () => [h(UEmpty, Object.assign({
18
+ size: "large",
19
+ theme: mergedTheme.peers.Empty,
20
+ themeOverrides: mergedTheme.peerOverrides.Empty
21
+ }, emptyProps))]));
22
+ }
@@ -0,0 +1,3 @@
1
+ import type { VNode } from 'vue';
2
+ import type { BodyRowRenderContext, RowRenderInfo } from '../interface';
3
+ export declare function renderBodyRow(context: BodyRowRenderContext, rowInfo: RowRenderInfo, displayedRowIndex: number, isVirtual: boolean): VNode;