@v-c/table 1.0.0 → 1.0.2

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 (50) hide show
  1. package/dist/Table.js +1 -1
  2. package/package.json +5 -5
  3. package/dist/Body/BodyRow.cjs +0 -143
  4. package/dist/Body/ExpandedRow.cjs +0 -55
  5. package/dist/Body/MeasureCell.cjs +0 -39
  6. package/dist/Body/MeasureRow.cjs +0 -68
  7. package/dist/Body/index.cjs +0 -82
  8. package/dist/Cell/index.cjs +0 -202
  9. package/dist/Cell/useHoverState.cjs +0 -18
  10. package/dist/ColGroup.cjs +0 -51
  11. package/dist/FixedHolder/index.cjs +0 -142
  12. package/dist/Footer/Cell.cjs +0 -51
  13. package/dist/Footer/Row.cjs +0 -23
  14. package/dist/Footer/Summary.cjs +0 -19
  15. package/dist/Footer/SummaryContext.cjs +0 -12
  16. package/dist/Footer/index.cjs +0 -39
  17. package/dist/Header/Header.cjs +0 -89
  18. package/dist/Header/HeaderRow.cjs +0 -66
  19. package/dist/Panel/index.cjs +0 -13
  20. package/dist/Table.cjs +0 -739
  21. package/dist/VirtualTable/BodyGrid.cjs +0 -180
  22. package/dist/VirtualTable/BodyLine.cjs +0 -92
  23. package/dist/VirtualTable/VirtualCell.cjs +0 -87
  24. package/dist/VirtualTable/context.cjs +0 -21
  25. package/dist/VirtualTable/index.cjs +0 -337
  26. package/dist/_virtual/rolldown_runtime.cjs +0 -21
  27. package/dist/constant.cjs +0 -5
  28. package/dist/context/PerfContext.cjs +0 -14
  29. package/dist/context/TableContext.cjs +0 -21
  30. package/dist/hooks/useColumns/index.cjs +0 -127
  31. package/dist/hooks/useColumns/useWidthColumns.cjs +0 -57
  32. package/dist/hooks/useExpand.cjs +0 -56
  33. package/dist/hooks/useFixedInfo.cjs +0 -20
  34. package/dist/hooks/useFlattenRecords.cjs +0 -38
  35. package/dist/hooks/useFrame.cjs +0 -49
  36. package/dist/hooks/useHover.cjs +0 -20
  37. package/dist/hooks/useRowInfo.cjs +0 -53
  38. package/dist/hooks/useSticky.cjs +0 -27
  39. package/dist/hooks/useStickyOffsets.cjs +0 -41
  40. package/dist/index.cjs +0 -24
  41. package/dist/interface.cjs +0 -1
  42. package/dist/namePathType.cjs +0 -1
  43. package/dist/stickyScrollBar.cjs +0 -173
  44. package/dist/sugar/Column.cjs +0 -109
  45. package/dist/sugar/ColumnGroup.cjs +0 -109
  46. package/dist/utils/expandUtil.cjs +0 -38
  47. package/dist/utils/fixUtil.cjs +0 -49
  48. package/dist/utils/legacyUtil.cjs +0 -35
  49. package/dist/utils/offsetUtil.cjs +0 -12
  50. package/dist/utils/valueUtil.cjs +0 -28
package/dist/Table.cjs DELETED
@@ -1,739 +0,0 @@
1
- Object.defineProperties(exports, {
2
- __esModule: { value: true },
3
- [Symbol.toStringTag]: { value: "Module" }
4
- });
5
- const require_rolldown_runtime = require("./_virtual/rolldown_runtime.cjs");
6
- const require_TableContext = require("./context/TableContext.cjs");
7
- const require_ColGroup = require("./ColGroup.cjs");
8
- const require_valueUtil = require("./utils/valueUtil.cjs");
9
- const require_index = require("./Body/index.cjs");
10
- const require_constant = require("./constant.cjs");
11
- const require_index$1 = require("./FixedHolder/index.cjs");
12
- const require_index$2 = require("./Footer/index.cjs");
13
- const require_Header = require("./Header/Header.cjs");
14
- const require_index$3 = require("./hooks/useColumns/index.cjs");
15
- const require_useExpand = require("./hooks/useExpand.cjs");
16
- const require_useFixedInfo = require("./hooks/useFixedInfo.cjs");
17
- const require_useFrame = require("./hooks/useFrame.cjs");
18
- const require_useHover = require("./hooks/useHover.cjs");
19
- const require_useSticky = require("./hooks/useSticky.cjs");
20
- const require_useStickyOffsets = require("./hooks/useStickyOffsets.cjs");
21
- const require_index$4 = require("./Panel/index.cjs");
22
- const require_stickyScrollBar = require("./stickyScrollBar.cjs");
23
- const require_Column = require("./sugar/Column.cjs");
24
- const require_ColumnGroup = require("./sugar/ColumnGroup.cjs");
25
- let vue = require("vue");
26
- let _v_c_resize_observer = require("@v-c/resize-observer");
27
- _v_c_resize_observer = require_rolldown_runtime.__toESM(_v_c_resize_observer);
28
- let _v_c_util = require("@v-c/util");
29
- let _v_c_util_dist_Dom_canUseDom = require("@v-c/util/dist/Dom/canUseDom");
30
- _v_c_util_dist_Dom_canUseDom = require_rolldown_runtime.__toESM(_v_c_util_dist_Dom_canUseDom);
31
- let _v_c_util_dist_Dom_findDOMNode = require("@v-c/util/dist/Dom/findDOMNode");
32
- let _v_c_util_dist_getScrollBarSize = require("@v-c/util/dist/getScrollBarSize");
33
- let _v_c_util_dist_isEqual = require("@v-c/util/dist/isEqual");
34
- _v_c_util_dist_isEqual = require_rolldown_runtime.__toESM(_v_c_util_dist_isEqual);
35
- let _v_c_util_dist_pickAttrs = require("@v-c/util/dist/pickAttrs");
36
- _v_c_util_dist_pickAttrs = require_rolldown_runtime.__toESM(_v_c_util_dist_pickAttrs);
37
- let _v_c_util_dist_props_util = require("@v-c/util/dist/props-util");
38
- function _isSlot(s) {
39
- return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !(0, vue.isVNode)(s);
40
- }
41
- const DEFAULT_PREFIX = "vc-table";
42
- var EMPTY_DATA = [];
43
- var EMPTY_SCROLL_TARGET = {};
44
- function defaultEmpty() {
45
- return "No Data";
46
- }
47
- var defaults = {
48
- rowKey: "key",
49
- prefixCls: DEFAULT_PREFIX,
50
- emptyText: defaultEmpty,
51
- rowHoverable: true
52
- };
53
- var ImmutableTable = /* @__PURE__ */ (0, vue.defineComponent)((props, { attrs, slots, expose }) => {
54
- const mergedData = (0, vue.shallowRef)(props.data || EMPTY_DATA);
55
- (0, vue.watch)(() => props.data, () => {
56
- mergedData.value = props.data || EMPTY_DATA;
57
- });
58
- const hasData = (0, vue.computed)(() => !!mergedData.value.length);
59
- const useInternalHooks = (0, vue.computed)(() => props.internalHooks === require_constant.INTERNAL_HOOKS);
60
- const mergedPrefixCls = (0, vue.computed)(() => props.prefixCls || "vc-table");
61
- const mergedRowHoverable = (0, vue.computed)(() => props.rowHoverable !== void 0 ? props.rowHoverable : true);
62
- const mergedEmptyText = (0, vue.computed)(() => props.emptyText ?? defaultEmpty);
63
- const mergedDirection = (0, vue.computed)(() => props.direction || "ltr");
64
- const getComponent = (path, defaultComponent) => {
65
- return (0, _v_c_util.get)(props.components, path) || defaultComponent;
66
- };
67
- const getRowKey = (0, vue.computed)(() => {
68
- if (typeof props.rowKey === "function") return props.rowKey;
69
- const rowKey = props.rowKey ?? "key";
70
- return (record) => {
71
- const key = record && record[rowKey];
72
- if (process.env.NODE_ENV !== "production") (0, _v_c_util.warning)(key !== void 0, "Each record in table should have a unique `key` prop, or set `rowKey` to an unique primary key.");
73
- return key;
74
- };
75
- });
76
- const customizeScrollBody = (0, vue.computed)(() => getComponent(["body"]));
77
- const [startRow, endRow, onHover] = require_useHover.default();
78
- const [expandableConfig, expandableType, mergedExpandedKeys, mergedExpandIcon, mergedChildrenColumnName, onTriggerExpand] = require_useExpand.default(props, mergedData, getRowKey);
79
- const componentWidth = (0, vue.ref)(0);
80
- const slotChildren = (0, vue.shallowRef)(null);
81
- const [columns, flattenColumns, flattenScrollX] = require_index$3.default({
82
- prefixCls: mergedPrefixCls,
83
- columns: (0, vue.computed)(() => props.columns),
84
- children: slotChildren,
85
- expandable: (0, vue.computed)(() => !!expandableConfig.value.expandedRowRender),
86
- columnTitle: (0, vue.computed)(() => expandableConfig.value.columnTitle),
87
- expandedKeys: mergedExpandedKeys,
88
- getRowKey,
89
- onTriggerExpand,
90
- expandIcon: mergedExpandIcon,
91
- rowExpandable: (0, vue.computed)(() => expandableConfig.value.rowExpandable),
92
- expandIconColumnIndex: (0, vue.computed)(() => expandableConfig.value.expandIconColumnIndex),
93
- expandedRowOffset: expandableConfig.value.expandedRowOffset,
94
- direction: mergedDirection,
95
- expandRowByClick: (0, vue.computed)(() => expandableConfig.value.expandRowByClick),
96
- columnWidth: (0, vue.computed)(() => expandableConfig.value.columnWidth),
97
- fixed: (0, vue.computed)(() => expandableConfig.value.fixed),
98
- scrollWidth: (0, vue.computed)(() => useInternalHooks.value && props.tailor && typeof props.scroll?.x === "number" ? props.scroll?.x : null),
99
- clientWidth: componentWidth
100
- }, (0, vue.computed)(() => useInternalHooks.value ? props.transformColumns || null : null));
101
- const mergedScrollX = (0, vue.computed)(() => flattenScrollX.value ?? props.scroll?.x);
102
- const fullTableRef = (0, vue.ref)(null);
103
- const scrollHeaderRef = (0, vue.ref)(null);
104
- const scrollBodyRef = (0, vue.ref)(null);
105
- const scrollBodyContainerRef = (0, vue.ref)(null);
106
- expose({
107
- get nativeElement() {
108
- return fullTableRef.value;
109
- },
110
- scrollTo: (config) => {
111
- const targetRef = scrollBodyRef.value;
112
- const targetElement = (0, _v_c_util_dist_Dom_findDOMNode.getDOM)(targetRef);
113
- if (targetElement instanceof HTMLElement) {
114
- const { index, top, key, offset } = config || {};
115
- if (require_valueUtil.validNumberValue(top)) targetElement.scrollTo({ top });
116
- else {
117
- const mergedKey = key ?? getRowKey.value(mergedData.value[index]);
118
- const rowElement = targetElement.querySelector(`[data-row-key="${mergedKey}"]`);
119
- if (rowElement) if (!offset) rowElement.scrollIntoView();
120
- else targetElement.scrollTo({ top: rowElement.offsetTop + offset });
121
- }
122
- } else if (targetRef?.scrollTo) targetRef.scrollTo(config);
123
- }
124
- });
125
- const scrollSummaryRef = (0, vue.ref)(null);
126
- const shadowStart = (0, vue.ref)(false);
127
- const shadowEnd = (0, vue.ref)(false);
128
- const colsWidths = (0, vue.ref)(/* @__PURE__ */ new Map());
129
- const colsKeys = (0, vue.computed)(() => require_valueUtil.getColumnsKey(flattenColumns.value));
130
- const colWidths = (0, vue.computed)(() => colsKeys.value.map((columnKey) => colsWidths.value.get(columnKey)));
131
- const stickyRef = (0, vue.ref)(null);
132
- const stickyConfig = require_useSticky.default((0, vue.computed)(() => props.sticky), mergedPrefixCls);
133
- const stickyOffsets = require_useStickyOffsets.default(colWidths, flattenColumns);
134
- const mergedStickyOffsets = (0, vue.computed)(() => ({
135
- ...stickyOffsets.value,
136
- isSticky: stickyConfig.value.isSticky
137
- }));
138
- const fixHeader = (0, vue.computed)(() => !!(props.scroll && require_valueUtil.validateValue(props.scroll.y)));
139
- const horizonScroll = (0, vue.computed)(() => !!(props.scroll && require_valueUtil.validateValue(mergedScrollX.value)) || !!expandableConfig.value.fixed);
140
- const fixColumn = (0, vue.computed)(() => horizonScroll.value && flattenColumns.value.some(({ fixed }) => fixed));
141
- const summaryNode = (0, vue.computed)(() => props.summary?.(mergedData.value));
142
- const fixFooter = (0, vue.computed)(() => {
143
- const node = Array.isArray(summaryNode.value) ? (0, _v_c_util_dist_props_util.filterEmpty)(summaryNode.value)?.[0] : summaryNode.value;
144
- if (!node || !(0, vue.isVNode)(node)) return false;
145
- const fixed = node.props?.fixed;
146
- return (fixHeader.value || stickyConfig.value.isSticky) && node?.type?.name === "TableSummary" && (fixed || fixed === "");
147
- });
148
- const scrollXStyle = (0, vue.computed)(() => {
149
- if (horizonScroll.value) return { overflowX: "auto" };
150
- });
151
- const scrollYStyle = (0, vue.computed)(() => {
152
- if (fixHeader.value) return {
153
- overflowY: hasData.value ? "scroll" : "auto",
154
- maxHeight: typeof props.scroll?.y === "number" ? `${props.scroll?.y}px` : props.scroll?.y
155
- };
156
- if (horizonScroll.value && !fixHeader.value) return { overflowY: "hidden" };
157
- });
158
- const scrollTableStyle = (0, vue.computed)(() => {
159
- if (!horizonScroll.value) return;
160
- return {
161
- width: mergedScrollX.value === true ? "auto" : typeof mergedScrollX.value === "number" ? `${mergedScrollX.value}px` : mergedScrollX.value,
162
- minWidth: "100%"
163
- };
164
- });
165
- const onColumnResize = (columnKey, width) => {
166
- if (colsWidths.value.get(columnKey) !== width) {
167
- const newWidths = new Map(colsWidths.value);
168
- newWidths.set(columnKey, width);
169
- colsWidths.value = newWidths;
170
- }
171
- };
172
- const [setScrollTarget, getScrollTarget] = require_useFrame.useTimeoutLock(null);
173
- function forceScroll(scrollLeft, target) {
174
- if (!target) return;
175
- if (typeof target === "function") {
176
- target(scrollLeft);
177
- return;
178
- }
179
- const element = target.nativeElement ? (0, _v_c_util_dist_Dom_findDOMNode.getDOM)(target.nativeElement) : (0, _v_c_util_dist_Dom_findDOMNode.getDOM)(target);
180
- if (element && element.scrollLeft !== scrollLeft) {
181
- element.scrollLeft = scrollLeft;
182
- if (element.scrollLeft !== scrollLeft) setTimeout(() => {
183
- element.scrollLeft = scrollLeft;
184
- }, 0);
185
- }
186
- }
187
- const scrollInfo = (0, vue.ref)([0, 0]);
188
- const onInternalScroll = (info) => {
189
- const currentTarget = info.currentTarget || scrollBodyRef.value;
190
- const mergedScrollLeft = typeof info.scrollLeft === "number" ? info.scrollLeft : currentTarget?.scrollLeft || 0;
191
- const compareTarget = currentTarget || EMPTY_SCROLL_TARGET;
192
- if (!getScrollTarget() || getScrollTarget() === compareTarget) {
193
- setScrollTarget(compareTarget);
194
- forceScroll(mergedScrollLeft, scrollHeaderRef.value);
195
- forceScroll(mergedScrollLeft, scrollBodyRef.value);
196
- forceScroll(mergedScrollLeft, scrollSummaryRef.value);
197
- forceScroll(mergedScrollLeft, stickyRef.value?.setScrollLeft);
198
- }
199
- const measureTarget = currentTarget || (0, _v_c_util_dist_Dom_findDOMNode.getDOM)(scrollHeaderRef.value);
200
- if (measureTarget) {
201
- const scrollWidth = useInternalHooks.value && props.tailor && typeof mergedScrollX.value === "number" ? mergedScrollX.value : measureTarget.scrollWidth;
202
- const clientWidth = measureTarget.clientWidth;
203
- const absScrollStart = Math.abs(mergedScrollLeft);
204
- const nextScrollInfo = [absScrollStart, scrollWidth - clientWidth];
205
- scrollInfo.value = (0, _v_c_util_dist_isEqual.default)(scrollInfo.value, nextScrollInfo) ? scrollInfo.value : nextScrollInfo;
206
- if (scrollWidth === clientWidth) {
207
- shadowStart.value = false;
208
- shadowEnd.value = false;
209
- return;
210
- }
211
- shadowStart.value = absScrollStart > 0;
212
- shadowEnd.value = absScrollStart < scrollWidth - clientWidth - 1;
213
- }
214
- };
215
- const onBodyScroll = (event) => {
216
- onInternalScroll({ currentTarget: event.currentTarget });
217
- props.onScroll?.(event);
218
- };
219
- const triggerOnScroll = () => {
220
- if (horizonScroll.value && scrollBodyRef.value) {
221
- const bodyElement = (0, _v_c_util_dist_Dom_findDOMNode.getDOM)(scrollBodyRef.value);
222
- onInternalScroll({
223
- currentTarget: bodyElement,
224
- scrollLeft: bodyElement?.scrollLeft
225
- });
226
- } else {
227
- shadowStart.value = false;
228
- shadowEnd.value = false;
229
- }
230
- };
231
- const onFullTableResize = (offsetWidth) => {
232
- stickyRef.value?.checkScrollBarVisible?.();
233
- let mergedWidth = offsetWidth ?? fullTableRef.value?.offsetWidth ?? 0;
234
- if (useInternalHooks.value && props.getContainerWidth && fullTableRef.value) mergedWidth = props.getContainerWidth(fullTableRef.value, mergedWidth) || mergedWidth;
235
- if (mergedWidth !== componentWidth.value) {
236
- triggerOnScroll();
237
- componentWidth.value = mergedWidth;
238
- }
239
- };
240
- (0, vue.watch)(horizonScroll, () => {
241
- if (horizonScroll.value) onFullTableResize();
242
- }, {
243
- immediate: true,
244
- flush: "post"
245
- });
246
- const mounted = (0, vue.ref)(false);
247
- (0, vue.watch)(() => [
248
- horizonScroll.value,
249
- props.data,
250
- columns.value.length
251
- ], async () => {
252
- if (mounted.value) {
253
- await (0, vue.nextTick)();
254
- triggerOnScroll();
255
- }
256
- });
257
- (0, vue.onMounted)(() => {
258
- mounted.value = true;
259
- });
260
- const scrollbarSize = (0, vue.ref)(0);
261
- (0, vue.onMounted)(() => {
262
- if (!props.tailor || !useInternalHooks.value) if (scrollBodyRef.value instanceof Element) scrollbarSize.value = (0, _v_c_util_dist_getScrollBarSize.getTargetScrollBarSize)(scrollBodyRef.value).width;
263
- else scrollbarSize.value = (0, _v_c_util_dist_getScrollBarSize.getTargetScrollBarSize)(scrollBodyContainerRef.value).width;
264
- });
265
- (0, vue.watchEffect)(() => {
266
- if (!(0, _v_c_util_dist_Dom_canUseDom.default)()) return;
267
- if (useInternalHooks.value && props.internalRefs?.body) props.internalRefs.body.value = (0, _v_c_util_dist_Dom_findDOMNode.getDOM)(scrollBodyRef.value);
268
- });
269
- const TableComponent = (0, vue.computed)(() => getComponent(["table"], "table"));
270
- const mergedTableLayout = (0, vue.computed)(() => {
271
- if (props.tableLayout) return props.tableLayout;
272
- if (fixColumn.value) return mergedScrollX.value === "max-content" ? "auto" : "fixed";
273
- if (fixHeader.value || stickyConfig.value.isSticky || flattenColumns.value.some(({ ellipsis }) => ellipsis)) return "fixed";
274
- return "auto";
275
- });
276
- const headerProps = (0, vue.computed)(() => ({
277
- colWidths: colWidths.value,
278
- columCount: flattenColumns.value.length,
279
- stickyOffsets: mergedStickyOffsets.value,
280
- onHeaderRow: props.onHeaderRow,
281
- fixHeader: fixHeader.value,
282
- scroll: props.scroll
283
- }));
284
- const emptyNode = (0, vue.computed)(() => {
285
- if (hasData.value) return null;
286
- const emptyText = mergedEmptyText.value;
287
- if (typeof emptyText === "function") return emptyText();
288
- return emptyText;
289
- });
290
- const dataProps = (0, _v_c_util_dist_pickAttrs.default)(attrs, { data: true });
291
- const ariaProps = (0, _v_c_util_dist_pickAttrs.default)(attrs, { aria: true });
292
- const fixedInfoList = require_useFixedInfo.default(flattenColumns, mergedStickyOffsets);
293
- const tableContext = (0, vue.reactive)({});
294
- require_TableContext.useProvideTableContext(tableContext);
295
- (0, vue.watchEffect)(() => {
296
- tableContext.scrollX = mergedScrollX.value;
297
- tableContext.scrollInfo = scrollInfo.value;
298
- tableContext.classNames = props.classNames;
299
- tableContext.styles = props.styles;
300
- tableContext.prefixCls = mergedPrefixCls.value;
301
- tableContext.getComponent = getComponent;
302
- tableContext.scrollbarSize = scrollbarSize.value;
303
- tableContext.direction = mergedDirection.value;
304
- tableContext.fixedInfoList = fixedInfoList.value;
305
- tableContext.isSticky = stickyConfig.value.isSticky;
306
- tableContext.componentWidth = componentWidth.value;
307
- tableContext.fixHeader = fixHeader.value;
308
- tableContext.fixColumn = fixColumn.value;
309
- tableContext.horizonScroll = horizonScroll.value;
310
- tableContext.tableLayout = mergedTableLayout.value;
311
- tableContext.rowClassName = props.rowClassName;
312
- tableContext.expandedRowClassName = expandableConfig.value.expandedRowClassName;
313
- tableContext.expandIcon = mergedExpandIcon.value;
314
- tableContext.expandableType = expandableType.value;
315
- tableContext.expandRowByClick = expandableConfig.value.expandRowByClick;
316
- tableContext.expandedRowRender = expandableConfig.value.expandedRowRender;
317
- tableContext.expandedRowOffset = expandableConfig.value.expandedRowOffset;
318
- tableContext.onTriggerExpand = onTriggerExpand;
319
- tableContext.expandIconColumnIndex = expandableConfig.value.expandIconColumnIndex;
320
- tableContext.indentSize = expandableConfig.value.indentSize ?? 15;
321
- tableContext.allColumnsFixedLeft = flattenColumns.value.every((col) => col.fixed === "start");
322
- tableContext.emptyNode = emptyNode.value;
323
- tableContext.columns = columns.value;
324
- tableContext.flattenColumns = flattenColumns.value;
325
- tableContext.onColumnResize = onColumnResize;
326
- tableContext.colWidths = colWidths.value;
327
- tableContext.hoverStartRow = startRow.value;
328
- tableContext.hoverEndRow = endRow.value;
329
- tableContext.onHover = onHover;
330
- tableContext.rowExpandable = expandableConfig.value.rowExpandable;
331
- tableContext.onRow = props.onRow;
332
- tableContext.getRowKey = getRowKey.value;
333
- tableContext.expandedKeys = mergedExpandedKeys.value;
334
- tableContext.childrenColumnName = mergedChildrenColumnName.value;
335
- tableContext.rowHoverable = mergedRowHoverable.value;
336
- tableContext.measureRowRender = props.measureRowRender;
337
- tableContext.headerCell = props.headerCell;
338
- tableContext.bodyCell = props.bodyCell;
339
- });
340
- const setScrollBodyRef = (el) => {
341
- scrollBodyRef.value = el;
342
- };
343
- return () => {
344
- let _slot, _slot2;
345
- slotChildren.value = slots.default?.();
346
- const renderFixedHeaderTable = (fixedHolderPassProps) => {
347
- return (0, vue.createVNode)(vue.Fragment, null, [(0, vue.createVNode)(require_Header.default, fixedHolderPassProps, null), fixFooter.value === "top" && (0, vue.createVNode)(require_index$2.default, fixedHolderPassProps, { default: () => [summaryNode.value] })]);
348
- };
349
- const renderFixedFooterTable = (fixedHolderPassProps) => (0, vue.createVNode)(require_index$2.default, fixedHolderPassProps, { default: () => [summaryNode.value] });
350
- const bodyTableNode = (0, vue.createVNode)(require_index.default, {
351
- "data": mergedData.value,
352
- "measureColumnWidth": fixHeader.value || horizonScroll.value || stickyConfig.value.isSticky
353
- }, null);
354
- const bodyColGroupNode = (0, vue.createVNode)(require_ColGroup.default, {
355
- "colWidths": flattenColumns.value.map(({ width }) => width),
356
- "columns": flattenColumns.value
357
- }, null);
358
- const captionElement = props.caption !== null && props.caption !== void 0 ? (0, vue.createVNode)("caption", { "class": `${mergedPrefixCls.value}-caption` }, [props.caption]) : void 0;
359
- let groupTableNode;
360
- if (fixHeader.value || stickyConfig.value.isSticky) {
361
- let bodyContent;
362
- if (typeof customizeScrollBody.value === "function") bodyContent = customizeScrollBody.value(mergedData.value, {
363
- scrollbarSize: scrollbarSize.value,
364
- ref: setScrollBodyRef,
365
- onScroll: onInternalScroll
366
- });
367
- else {
368
- const TableComp = TableComponent.value;
369
- bodyContent = (0, vue.createVNode)("div", {
370
- "style": {
371
- ...scrollXStyle.value,
372
- ...scrollYStyle.value
373
- },
374
- "onScroll": onBodyScroll,
375
- "ref": setScrollBodyRef,
376
- "class": `${mergedPrefixCls.value}-body`
377
- }, [(0, vue.createVNode)(TableComp, (0, vue.mergeProps)({ "style": {
378
- ...scrollTableStyle.value,
379
- tableLayout: mergedTableLayout.value
380
- } }, ariaProps), { default: () => [
381
- captionElement,
382
- bodyColGroupNode,
383
- bodyTableNode,
384
- !fixFooter.value && summaryNode.value && (0, vue.createVNode)(require_index$2.default, {
385
- "stickyOffsets": mergedStickyOffsets.value,
386
- "flattenColumns": flattenColumns.value
387
- }, { default: () => [summaryNode.value] })
388
- ] })]);
389
- }
390
- const fixedHolderProps = {
391
- noData: !mergedData.value.length,
392
- maxContentScroll: horizonScroll.value && mergedScrollX.value === "max-content",
393
- ...headerProps.value,
394
- columns: columns.value,
395
- flattenColumns: flattenColumns.value,
396
- direction: mergedDirection.value,
397
- stickyClassName: stickyConfig.value.stickyClassName,
398
- scrollX: mergedScrollX.value,
399
- tableLayout: mergedTableLayout.value,
400
- onScroll: onInternalScroll
401
- };
402
- groupTableNode = (0, vue.createVNode)(vue.Fragment, null, [
403
- props.showHeader !== false && (0, vue.createVNode)(require_index$1.default, (0, vue.mergeProps)(fixedHolderProps, {
404
- "stickyTopOffset": stickyConfig.value.offsetHeader,
405
- "className": `${mergedPrefixCls.value}-header`,
406
- "ref": scrollHeaderRef,
407
- "colGroup": bodyColGroupNode
408
- }), { default: renderFixedHeaderTable }),
409
- bodyContent,
410
- fixFooter.value && fixFooter.value !== "top" && (0, vue.createVNode)(require_index$1.default, (0, vue.mergeProps)(fixedHolderProps, {
411
- "stickyBottomOffset": stickyConfig.value.offsetSummary,
412
- "className": `${mergedPrefixCls.value}-summary`,
413
- "ref": scrollSummaryRef,
414
- "colGroup": bodyColGroupNode
415
- }), { default: renderFixedFooterTable }),
416
- stickyConfig.value.isSticky && scrollBodyRef.value instanceof Element && (0, vue.createVNode)(require_stickyScrollBar.default, {
417
- "ref": stickyRef,
418
- "offsetScroll": stickyConfig.value.offsetScroll,
419
- "scrollBodyRef": scrollBodyRef,
420
- "onScroll": onInternalScroll,
421
- "container": stickyConfig.value.container,
422
- "direction": mergedDirection.value
423
- }, null)
424
- ]);
425
- } else {
426
- const TableComp = TableComponent.value;
427
- groupTableNode = (0, vue.createVNode)("div", {
428
- "style": {
429
- ...scrollXStyle.value,
430
- ...scrollYStyle.value,
431
- ...props.styles?.content
432
- },
433
- "class": (0, _v_c_util.clsx)(`${mergedPrefixCls.value}-content`, props.classNames?.content),
434
- "onScroll": onBodyScroll,
435
- "ref": scrollBodyRef
436
- }, [(0, vue.createVNode)(TableComp, (0, vue.mergeProps)({ "style": {
437
- ...scrollTableStyle.value,
438
- tableLayout: mergedTableLayout.value
439
- } }, ariaProps), { default: () => [
440
- captionElement,
441
- bodyColGroupNode,
442
- props.showHeader !== false && (0, vue.createVNode)(require_Header.default, (0, vue.mergeProps)(headerProps.value, {
443
- "columns": columns.value,
444
- "flattenColumns": flattenColumns.value
445
- }), null),
446
- bodyTableNode,
447
- !fixFooter.value && summaryNode.value && (0, vue.createVNode)(require_index$2.default, {
448
- "stickyOffsets": mergedStickyOffsets.value,
449
- "flattenColumns": flattenColumns.value
450
- }, { default: () => [summaryNode.value] })
451
- ] })]);
452
- }
453
- const tableStyle = { ...props.style };
454
- if (stickyConfig.value.isSticky) tableStyle["--columns-count"] = flattenColumns.value.length;
455
- const fullTable = (0, vue.createVNode)("div", (0, vue.mergeProps)({
456
- "class": (0, _v_c_util.clsx)(mergedPrefixCls.value, props.className, {
457
- [`${mergedPrefixCls.value}-rtl`]: mergedDirection.value === "rtl",
458
- [`${mergedPrefixCls.value}-fix-start-shadow`]: horizonScroll.value,
459
- [`${mergedPrefixCls.value}-fix-end-shadow`]: horizonScroll.value,
460
- [`${mergedPrefixCls.value}-fix-start-shadow-show`]: horizonScroll.value && shadowStart.value,
461
- [`${mergedPrefixCls.value}-fix-end-shadow-show`]: horizonScroll.value && shadowEnd.value,
462
- [`${mergedPrefixCls.value}-layout-fixed`]: props.tableLayout === "fixed",
463
- [`${mergedPrefixCls.value}-fixed-header`]: fixHeader.value,
464
- [`${mergedPrefixCls.value}-fixed-column`]: fixColumn.value,
465
- [`${mergedPrefixCls.value}-scroll-horizontal`]: horizonScroll.value,
466
- [`${mergedPrefixCls.value}-has-fix-start`]: flattenColumns.value[0]?.fixed,
467
- [`${mergedPrefixCls.value}-has-fix-end`]: flattenColumns.value[flattenColumns.value.length - 1]?.fixed === "end"
468
- }),
469
- "style": tableStyle,
470
- "id": props.id,
471
- "ref": fullTableRef
472
- }, dataProps), [
473
- props.title && (0, vue.createVNode)(require_index$4.default, {
474
- "className": (0, _v_c_util.clsx)(`${mergedPrefixCls.value}-title`, props.classNames?.title),
475
- "style": props.styles?.title
476
- }, _isSlot(_slot = props.title(mergedData.value)) ? _slot : { default: () => [_slot] }),
477
- (0, vue.createVNode)("div", {
478
- "ref": scrollBodyContainerRef,
479
- "class": (0, _v_c_util.clsx)(`${mergedPrefixCls.value}-container`, props.classNames?.section),
480
- "style": props.styles?.section
481
- }, [groupTableNode]),
482
- props.footer && (0, vue.createVNode)(require_index$4.default, {
483
- "className": (0, _v_c_util.clsx)(`${mergedPrefixCls.value}-footer`, props.classNames?.footer),
484
- "style": props.styles?.footer
485
- }, _isSlot(_slot2 = props.footer(mergedData.value)) ? _slot2 : { default: () => [_slot2] })
486
- ]);
487
- if (horizonScroll.value) return (0, vue.createVNode)(_v_c_resize_observer.default, { "onResize": ({ offsetWidth }) => onFullTableResize(offsetWidth) }, _isSlot(fullTable) ? fullTable : { default: () => [fullTable] });
488
- return fullTable;
489
- };
490
- }, { props: /* @__PURE__ */ (0, vue.mergeDefaults)({
491
- prefixCls: {
492
- type: String,
493
- required: false,
494
- default: void 0
495
- },
496
- className: {
497
- type: String,
498
- required: false,
499
- default: void 0
500
- },
501
- style: {
502
- type: Object,
503
- required: false,
504
- default: void 0
505
- },
506
- classNames: {
507
- type: Object,
508
- required: false,
509
- default: void 0
510
- },
511
- styles: {
512
- type: Object,
513
- required: false,
514
- default: void 0
515
- },
516
- data: {
517
- type: Array,
518
- required: false,
519
- default: void 0
520
- },
521
- columns: {
522
- type: Array,
523
- required: false,
524
- default: void 0
525
- },
526
- rowKey: {
527
- type: [String, Function],
528
- required: false,
529
- default: void 0
530
- },
531
- tableLayout: {
532
- type: String,
533
- required: false,
534
- default: void 0
535
- },
536
- scroll: {
537
- type: Object,
538
- required: false,
539
- default: void 0
540
- },
541
- expandable: {
542
- type: Object,
543
- required: false,
544
- default: void 0
545
- },
546
- indentSize: {
547
- type: Number,
548
- required: false,
549
- default: void 0
550
- },
551
- rowClassName: {
552
- type: [String, Function],
553
- required: false,
554
- default: void 0
555
- },
556
- title: {
557
- type: Function,
558
- required: false,
559
- default: void 0
560
- },
561
- footer: {
562
- type: Function,
563
- required: false,
564
- default: void 0
565
- },
566
- summary: {
567
- type: Function,
568
- required: false,
569
- default: void 0
570
- },
571
- headerCell: {
572
- type: Function,
573
- required: false,
574
- default: void 0
575
- },
576
- bodyCell: {
577
- type: Function,
578
- required: false,
579
- default: void 0
580
- },
581
- caption: {
582
- required: false,
583
- default: void 0
584
- },
585
- id: {
586
- type: String,
587
- required: false,
588
- default: void 0
589
- },
590
- showHeader: {
591
- type: Boolean,
592
- required: false,
593
- default: void 0
594
- },
595
- components: {
596
- type: Object,
597
- required: false,
598
- default: void 0
599
- },
600
- onRow: {
601
- type: Function,
602
- required: false,
603
- default: void 0
604
- },
605
- onHeaderRow: {
606
- type: Function,
607
- required: false,
608
- default: void 0
609
- },
610
- emptyText: {
611
- type: Function,
612
- required: false,
613
- skipCheck: true,
614
- default: void 0
615
- },
616
- direction: {
617
- type: String,
618
- required: false,
619
- default: void 0
620
- },
621
- sticky: {
622
- type: [Boolean, Object],
623
- required: false,
624
- default: void 0
625
- },
626
- rowHoverable: {
627
- type: Boolean,
628
- required: false,
629
- default: void 0
630
- },
631
- onScroll: {
632
- type: Function,
633
- required: false,
634
- default: void 0
635
- },
636
- internalHooks: {
637
- type: String,
638
- required: false,
639
- default: void 0
640
- },
641
- transformColumns: {
642
- type: Function,
643
- required: false,
644
- default: void 0
645
- },
646
- tailor: {
647
- type: Boolean,
648
- required: false,
649
- default: void 0
650
- },
651
- getContainerWidth: {
652
- type: Function,
653
- required: false,
654
- default: void 0
655
- },
656
- internalRefs: {
657
- type: Object,
658
- required: false,
659
- default: void 0
660
- },
661
- measureRowRender: {
662
- type: Function,
663
- required: false,
664
- default: void 0
665
- },
666
- getPopupContainer: {
667
- type: Function,
668
- required: false,
669
- default: void 0
670
- },
671
- "onUpdate:expandedRowKeys": {
672
- type: Function,
673
- required: false,
674
- default: void 0
675
- },
676
- expandedRowKeys: {
677
- type: Array,
678
- required: false,
679
- default: void 0
680
- },
681
- defaultExpandedRowKeys: {
682
- type: Array,
683
- required: false,
684
- default: void 0
685
- },
686
- expandedRowRender: {
687
- type: Function,
688
- required: false,
689
- default: void 0
690
- },
691
- expandRowByClick: {
692
- type: Boolean,
693
- required: false,
694
- default: void 0
695
- },
696
- expandIcon: {
697
- type: Function,
698
- required: false,
699
- default: void 0
700
- },
701
- onExpand: {
702
- type: Function,
703
- required: false,
704
- default: void 0
705
- },
706
- onExpandedRowsChange: {
707
- type: Function,
708
- required: false,
709
- default: void 0
710
- },
711
- defaultExpandAllRows: {
712
- type: Boolean,
713
- required: false,
714
- default: void 0
715
- },
716
- expandIconColumnIndex: {
717
- type: Number,
718
- required: false,
719
- default: void 0
720
- },
721
- expandedRowClassName: {
722
- type: Function,
723
- required: false,
724
- default: void 0
725
- },
726
- childrenColumnName: {
727
- type: String,
728
- required: false,
729
- default: void 0
730
- }
731
- }, defaults) });
732
- ImmutableTable.EXPAND_COLUMN = require_constant.EXPAND_COLUMN;
733
- ImmutableTable.INTERNAL_HOOKS = require_constant.INTERNAL_HOOKS;
734
- ImmutableTable.Column = require_Column.default;
735
- ImmutableTable.ColumnGroup = require_ColumnGroup.default;
736
- ImmutableTable.Summary = require_index$2.FooterComponents;
737
- var Table_default = ImmutableTable;
738
- exports.DEFAULT_PREFIX = DEFAULT_PREFIX;
739
- exports.default = Table_default;