@v-c/table 0.0.4 → 1.0.1

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