@v-c/table 1.1.9 → 1.2.0
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.
- package/dist/Body/BodyRow.d.ts +201 -1
- package/dist/Body/BodyRow.js +3 -2
- package/dist/Cell/index.d.ts +1 -0
- package/dist/Table.js +1 -0
- package/dist/VirtualTable/BodyLine.js +6 -2
- package/dist/context/TableContext.d.ts +1 -0
- package/dist/hooks/useColumns/index.js +16 -8
- package/dist/hooks/useFixedInfo.d.ts +1 -1
- package/dist/hooks/useRowInfo.d.ts +1 -1
- package/dist/interface.d.ts +1 -0
- package/dist/sugar/Column.js +0 -9
- package/dist/sugar/ColumnGroup.js +0 -9
- package/package.json +3 -3
package/dist/Body/BodyRow.d.ts
CHANGED
|
@@ -26,7 +26,207 @@ export declare function getCellProps<RecordType>(rowInfo: ReturnType<typeof useR
|
|
|
26
26
|
key: import('../interface').Key;
|
|
27
27
|
fixedInfo: import('../utils/fixUtil').FixedInfo;
|
|
28
28
|
appendCellNode: any;
|
|
29
|
-
additionalCellProps:
|
|
29
|
+
additionalCellProps: {
|
|
30
|
+
innerHTML?: string | undefined;
|
|
31
|
+
class?: import('vue').ClassValue | undefined;
|
|
32
|
+
style?: import('vue').StyleValue | undefined;
|
|
33
|
+
accesskey?: string | undefined;
|
|
34
|
+
contenteditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
|
|
35
|
+
contextmenu?: string | undefined;
|
|
36
|
+
dir?: string | undefined;
|
|
37
|
+
draggable?: (boolean | "true" | "false") | undefined;
|
|
38
|
+
enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
|
|
39
|
+
enterKeyHint?: import('vue').HTMLAttributes["enterkeyhint"];
|
|
40
|
+
hidden?: (boolean | "true" | "false") | "" | "hidden" | "until-found" | undefined;
|
|
41
|
+
id?: string | undefined;
|
|
42
|
+
inert?: (boolean | "true" | "false") | undefined;
|
|
43
|
+
lang?: string | undefined;
|
|
44
|
+
placeholder?: string | undefined;
|
|
45
|
+
spellcheck?: (boolean | "true" | "false") | undefined;
|
|
46
|
+
tabindex?: (string | number) | undefined;
|
|
47
|
+
title?: string | undefined;
|
|
48
|
+
translate?: "yes" | "no" | undefined;
|
|
49
|
+
radiogroup?: string | undefined;
|
|
50
|
+
role?: string | undefined;
|
|
51
|
+
about?: string | undefined;
|
|
52
|
+
datatype?: string | undefined;
|
|
53
|
+
inlist?: any;
|
|
54
|
+
prefix?: string | undefined;
|
|
55
|
+
property?: string | undefined;
|
|
56
|
+
resource?: string | undefined;
|
|
57
|
+
typeof?: string | undefined;
|
|
58
|
+
vocab?: string | undefined;
|
|
59
|
+
autocapitalize?: string | undefined;
|
|
60
|
+
autocorrect?: string | undefined;
|
|
61
|
+
autosave?: string | undefined;
|
|
62
|
+
color?: string | undefined;
|
|
63
|
+
itemprop?: string | undefined;
|
|
64
|
+
itemscope?: (boolean | "true" | "false") | undefined;
|
|
65
|
+
itemtype?: string | undefined;
|
|
66
|
+
itemid?: string | undefined;
|
|
67
|
+
itemref?: string | undefined;
|
|
68
|
+
results?: (string | number) | undefined;
|
|
69
|
+
security?: string | undefined;
|
|
70
|
+
unselectable?: "on" | "off" | undefined;
|
|
71
|
+
inputmode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
|
|
72
|
+
is?: string | undefined;
|
|
73
|
+
exportparts?: string;
|
|
74
|
+
part?: string;
|
|
75
|
+
'aria-activedescendant'?: string | undefined;
|
|
76
|
+
'aria-atomic'?: (boolean | "true" | "false") | undefined;
|
|
77
|
+
'aria-autocomplete'?: "none" | "inline" | "list" | "both" | undefined;
|
|
78
|
+
'aria-busy'?: (boolean | "true" | "false") | undefined;
|
|
79
|
+
'aria-checked'?: (boolean | "true" | "false") | "mixed" | undefined;
|
|
80
|
+
'aria-colcount'?: (string | number) | undefined;
|
|
81
|
+
'aria-colindex'?: (string | number) | undefined;
|
|
82
|
+
'aria-colspan'?: (string | number) | undefined;
|
|
83
|
+
'aria-controls'?: string | undefined;
|
|
84
|
+
'aria-current'?: (boolean | "true" | "false") | "page" | "step" | "location" | "date" | "time" | undefined;
|
|
85
|
+
'aria-describedby'?: string | undefined;
|
|
86
|
+
'aria-details'?: string | undefined;
|
|
87
|
+
'aria-disabled'?: (boolean | "true" | "false") | undefined;
|
|
88
|
+
'aria-dropeffect'?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
|
|
89
|
+
'aria-errormessage'?: string | undefined;
|
|
90
|
+
'aria-expanded'?: (boolean | "true" | "false") | undefined;
|
|
91
|
+
'aria-flowto'?: string | undefined;
|
|
92
|
+
'aria-grabbed'?: (boolean | "true" | "false") | undefined;
|
|
93
|
+
'aria-haspopup'?: (boolean | "true" | "false") | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
|
|
94
|
+
'aria-hidden'?: (boolean | "true" | "false") | undefined;
|
|
95
|
+
'aria-invalid'?: (boolean | "true" | "false") | "grammar" | "spelling" | undefined;
|
|
96
|
+
'aria-keyshortcuts'?: string | undefined;
|
|
97
|
+
'aria-label'?: string | undefined;
|
|
98
|
+
'aria-labelledby'?: string | undefined;
|
|
99
|
+
'aria-level'?: (string | number) | undefined;
|
|
100
|
+
'aria-live'?: "off" | "assertive" | "polite" | undefined;
|
|
101
|
+
'aria-modal'?: (boolean | "true" | "false") | undefined;
|
|
102
|
+
'aria-multiline'?: (boolean | "true" | "false") | undefined;
|
|
103
|
+
'aria-multiselectable'?: (boolean | "true" | "false") | undefined;
|
|
104
|
+
'aria-orientation'?: "horizontal" | "vertical" | undefined;
|
|
105
|
+
'aria-owns'?: string | undefined;
|
|
106
|
+
'aria-placeholder'?: string | undefined;
|
|
107
|
+
'aria-posinset'?: (string | number) | undefined;
|
|
108
|
+
'aria-pressed'?: (boolean | "true" | "false") | "mixed" | undefined;
|
|
109
|
+
'aria-readonly'?: (boolean | "true" | "false") | undefined;
|
|
110
|
+
'aria-relevant'?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
|
|
111
|
+
'aria-required'?: (boolean | "true" | "false") | undefined;
|
|
112
|
+
'aria-roledescription'?: string | undefined;
|
|
113
|
+
'aria-rowcount'?: (string | number) | undefined;
|
|
114
|
+
'aria-rowindex'?: (string | number) | undefined;
|
|
115
|
+
'aria-rowspan'?: (string | number) | undefined;
|
|
116
|
+
'aria-selected'?: (boolean | "true" | "false") | undefined;
|
|
117
|
+
'aria-setsize'?: (string | number) | undefined;
|
|
118
|
+
'aria-sort'?: "none" | "ascending" | "descending" | "other" | undefined;
|
|
119
|
+
'aria-valuemax'?: (string | number) | undefined;
|
|
120
|
+
'aria-valuemin'?: (string | number) | undefined;
|
|
121
|
+
'aria-valuenow'?: (string | number) | undefined;
|
|
122
|
+
'aria-valuetext'?: string | undefined;
|
|
123
|
+
onCopy?: ((payload: ClipboardEvent) => void) | undefined;
|
|
124
|
+
onCut?: ((payload: ClipboardEvent) => void) | undefined;
|
|
125
|
+
onPaste?: ((payload: ClipboardEvent) => void) | undefined;
|
|
126
|
+
onCompositionend?: ((payload: CompositionEvent) => void) | undefined;
|
|
127
|
+
onCompositionstart?: ((payload: CompositionEvent) => void) | undefined;
|
|
128
|
+
onCompositionupdate?: ((payload: CompositionEvent) => void) | undefined;
|
|
129
|
+
onDrag?: ((payload: DragEvent) => void) | undefined;
|
|
130
|
+
onDragend?: ((payload: DragEvent) => void) | undefined;
|
|
131
|
+
onDragenter?: ((payload: DragEvent) => void) | undefined;
|
|
132
|
+
onDragexit?: ((payload: DragEvent) => void) | undefined;
|
|
133
|
+
onDragleave?: ((payload: DragEvent) => void) | undefined;
|
|
134
|
+
onDragover?: ((payload: DragEvent) => void) | undefined;
|
|
135
|
+
onDragstart?: ((payload: DragEvent) => void) | undefined;
|
|
136
|
+
onDrop?: ((payload: DragEvent) => void) | undefined;
|
|
137
|
+
onFocus?: ((payload: FocusEvent) => void) | undefined;
|
|
138
|
+
onFocusin?: ((payload: FocusEvent) => void) | undefined;
|
|
139
|
+
onFocusout?: ((payload: FocusEvent) => void) | undefined;
|
|
140
|
+
onBlur?: ((payload: FocusEvent) => void) | undefined;
|
|
141
|
+
onChange?: ((payload: Event) => void) | undefined;
|
|
142
|
+
onBeforeinput?: ((payload: InputEvent) => void) | undefined;
|
|
143
|
+
onFormdata?: ((payload: FormDataEvent) => void) | undefined;
|
|
144
|
+
onInput?: ((payload: InputEvent) => void) | undefined;
|
|
145
|
+
onReset?: ((payload: Event) => void) | undefined;
|
|
146
|
+
onSubmit?: ((payload: SubmitEvent) => void) | undefined;
|
|
147
|
+
onInvalid?: ((payload: Event) => void) | undefined;
|
|
148
|
+
onFullscreenchange?: ((payload: Event) => void) | undefined;
|
|
149
|
+
onFullscreenerror?: ((payload: Event) => void) | undefined;
|
|
150
|
+
onLoad?: ((payload: Event) => void) | undefined;
|
|
151
|
+
onError?: ((payload: Event) => void) | undefined;
|
|
152
|
+
onKeydown?: ((payload: KeyboardEvent) => void) | undefined;
|
|
153
|
+
onKeypress?: ((payload: KeyboardEvent) => void) | undefined;
|
|
154
|
+
onKeyup?: ((payload: KeyboardEvent) => void) | undefined;
|
|
155
|
+
onDblclick?: ((payload: MouseEvent) => void) | undefined;
|
|
156
|
+
onMousedown?: ((payload: MouseEvent) => void) | undefined;
|
|
157
|
+
onMouseenter?: ((payload: MouseEvent) => void) | undefined;
|
|
158
|
+
onMouseleave?: ((payload: MouseEvent) => void) | undefined;
|
|
159
|
+
onMousemove?: ((payload: MouseEvent) => void) | undefined;
|
|
160
|
+
onMouseout?: ((payload: MouseEvent) => void) | undefined;
|
|
161
|
+
onMouseover?: ((payload: MouseEvent) => void) | undefined;
|
|
162
|
+
onMouseup?: ((payload: MouseEvent) => void) | undefined;
|
|
163
|
+
onAbort?: ((payload: UIEvent) => void) | undefined;
|
|
164
|
+
onCanplay?: ((payload: Event) => void) | undefined;
|
|
165
|
+
onCanplaythrough?: ((payload: Event) => void) | undefined;
|
|
166
|
+
onDurationchange?: ((payload: Event) => void) | undefined;
|
|
167
|
+
onEmptied?: ((payload: Event) => void) | undefined;
|
|
168
|
+
onEncrypted?: ((payload: MediaEncryptedEvent) => void) | undefined;
|
|
169
|
+
onEnded?: ((payload: Event) => void) | undefined;
|
|
170
|
+
onLoadeddata?: ((payload: Event) => void) | undefined;
|
|
171
|
+
onLoadedmetadata?: ((payload: Event) => void) | undefined;
|
|
172
|
+
onLoadstart?: ((payload: Event) => void) | undefined;
|
|
173
|
+
onPause?: ((payload: Event) => void) | undefined;
|
|
174
|
+
onPlay?: ((payload: Event) => void) | undefined;
|
|
175
|
+
onPlaying?: ((payload: Event) => void) | undefined;
|
|
176
|
+
onProgress?: ((payload: ProgressEvent<EventTarget>) => void) | undefined;
|
|
177
|
+
onRatechange?: ((payload: Event) => void) | undefined;
|
|
178
|
+
onSeeked?: ((payload: Event) => void) | undefined;
|
|
179
|
+
onSeeking?: ((payload: Event) => void) | undefined;
|
|
180
|
+
onStalled?: ((payload: Event) => void) | undefined;
|
|
181
|
+
onSuspend?: ((payload: Event) => void) | undefined;
|
|
182
|
+
onTimeupdate?: ((payload: Event) => void) | undefined;
|
|
183
|
+
onVolumechange?: ((payload: Event) => void) | undefined;
|
|
184
|
+
onWaiting?: ((payload: Event) => void) | undefined;
|
|
185
|
+
onSelect?: ((payload: Event) => void) | undefined;
|
|
186
|
+
onScroll?: ((payload: Event) => void) | undefined;
|
|
187
|
+
onScrollend?: ((payload: Event) => void) | undefined;
|
|
188
|
+
onTouchcancel?: ((payload: TouchEvent) => void) | undefined;
|
|
189
|
+
onTouchend?: ((payload: TouchEvent) => void) | undefined;
|
|
190
|
+
onTouchmove?: ((payload: TouchEvent) => void) | undefined;
|
|
191
|
+
onTouchstart?: ((payload: TouchEvent) => void) | undefined;
|
|
192
|
+
onAuxclick?: ((payload: PointerEvent) => void) | undefined;
|
|
193
|
+
onClick?: ((payload: PointerEvent) => void) | undefined;
|
|
194
|
+
onContextmenu?: ((payload: PointerEvent) => void) | undefined;
|
|
195
|
+
onGotpointercapture?: ((payload: PointerEvent) => void) | undefined;
|
|
196
|
+
onLostpointercapture?: ((payload: PointerEvent) => void) | undefined;
|
|
197
|
+
onPointerdown?: ((payload: PointerEvent) => void) | undefined;
|
|
198
|
+
onPointermove?: ((payload: PointerEvent) => void) | undefined;
|
|
199
|
+
onPointerup?: ((payload: PointerEvent) => void) | undefined;
|
|
200
|
+
onPointercancel?: ((payload: PointerEvent) => void) | undefined;
|
|
201
|
+
onPointerenter?: ((payload: PointerEvent) => void) | undefined;
|
|
202
|
+
onPointerleave?: ((payload: PointerEvent) => void) | undefined;
|
|
203
|
+
onPointerover?: ((payload: PointerEvent) => void) | undefined;
|
|
204
|
+
onPointerout?: ((payload: PointerEvent) => void) | undefined;
|
|
205
|
+
onBeforetoggle?: ((payload: ToggleEvent) => void) | undefined;
|
|
206
|
+
onToggle?: ((payload: ToggleEvent) => void) | undefined;
|
|
207
|
+
onWheel?: ((payload: WheelEvent) => void) | undefined;
|
|
208
|
+
onAnimationcancel?: ((payload: AnimationEvent) => void) | undefined;
|
|
209
|
+
onAnimationstart?: ((payload: AnimationEvent) => void) | undefined;
|
|
210
|
+
onAnimationend?: ((payload: AnimationEvent) => void) | undefined;
|
|
211
|
+
onAnimationiteration?: ((payload: AnimationEvent) => void) | undefined;
|
|
212
|
+
onSecuritypolicyviolation?: ((payload: SecurityPolicyViolationEvent) => void) | undefined;
|
|
213
|
+
onTransitioncancel?: ((payload: TransitionEvent) => void) | undefined;
|
|
214
|
+
onTransitionend?: ((payload: TransitionEvent) => void) | undefined;
|
|
215
|
+
onTransitionrun?: ((payload: TransitionEvent) => void) | undefined;
|
|
216
|
+
onTransitionstart?: ((payload: TransitionEvent) => void) | undefined;
|
|
217
|
+
align?: "left" | "center" | "right" | "justify" | "char" | undefined;
|
|
218
|
+
colspan?: number | undefined;
|
|
219
|
+
headers?: string | undefined;
|
|
220
|
+
rowspan?: number | undefined;
|
|
221
|
+
scope?: string | undefined;
|
|
222
|
+
abbr?: string | undefined;
|
|
223
|
+
height?: (string | number) | undefined;
|
|
224
|
+
width?: (string | number) | undefined;
|
|
225
|
+
valign?: "top" | "middle" | "bottom" | "baseline" | undefined;
|
|
226
|
+
colSpan?: number;
|
|
227
|
+
rowSpan?: number;
|
|
228
|
+
className?: string;
|
|
229
|
+
};
|
|
30
230
|
hoverRowSpan: number | undefined;
|
|
31
231
|
};
|
|
32
232
|
declare const BodyRow: import('vue').DefineComponent<BodyRowProps<any>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<BodyRowProps<any>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
package/dist/Body/BodyRow.js
CHANGED
|
@@ -24,7 +24,7 @@ function getCellProps(rowInfo, record, column, colIndex, indent, index, rowKeys
|
|
|
24
24
|
record,
|
|
25
25
|
onExpand: onTriggerExpand
|
|
26
26
|
})]);
|
|
27
|
-
const additionalCellProps = column.onCell?.(record, index)
|
|
27
|
+
const additionalCellProps = { ...column.onCell?.(record, index) };
|
|
28
28
|
let hoverRowSpan;
|
|
29
29
|
if (expandedRowOffset && expandable.value && colIndex < expandedRowOffset) {
|
|
30
30
|
const { rowSpan = 1 } = additionalCellProps;
|
|
@@ -75,6 +75,7 @@ var BodyRow = /* @__PURE__ */ defineComponent({
|
|
|
75
75
|
const flattenColumns = tableContext.flattenColumns;
|
|
76
76
|
const expandedRowClassName = tableContext.expandedRowClassName;
|
|
77
77
|
const expandedRowRender = tableContext.expandedRowRender;
|
|
78
|
+
const forceRender = tableContext.forceRender;
|
|
78
79
|
const expandedClsName = computedExpandedClassName(expandedRowClassName, record, index, indent);
|
|
79
80
|
const rowPropsStyle = rowProps.value?.style;
|
|
80
81
|
const mergedRowStyle = {
|
|
@@ -116,7 +117,7 @@ var BodyRow = /* @__PURE__ */ defineComponent({
|
|
|
116
117
|
}), null);
|
|
117
118
|
})) ? _slot : { default: () => [_slot] });
|
|
118
119
|
let expandRowNode;
|
|
119
|
-
if (rowSupportExpand.value && (expandedRef.value || expanded.value)) {
|
|
120
|
+
if (rowSupportExpand.value && (forceRender || expandedRef.value || expanded.value)) {
|
|
120
121
|
const expandContent = expandedRowRender(record, index, indent + 1, expanded.value);
|
|
121
122
|
const computedExpandedRowClassName = computedExpandedClassName(expandedRowClassName, record, index, indent);
|
|
122
123
|
expandRowNode = createVNode(ExpandedRow, {
|
package/dist/Cell/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export interface CellProps<RecordType extends DefaultRecordType> {
|
|
|
17
17
|
children?: any;
|
|
18
18
|
colSpan?: number;
|
|
19
19
|
rowSpan?: number;
|
|
20
|
+
/** @private Original rowSpan before patching it for expanded rows */
|
|
20
21
|
hoverRowSpan?: number;
|
|
21
22
|
scope?: ScopeType;
|
|
22
23
|
ellipsis?: CellEllipsisType;
|
package/dist/Table.js
CHANGED
|
@@ -337,6 +337,7 @@ var ImmutableTable = /* @__PURE__ */ defineComponent((props, { attrs, slots, exp
|
|
|
337
337
|
tableContext.expandableType = expandableType.value;
|
|
338
338
|
tableContext.expandRowByClick = expandableConfig.value.expandRowByClick;
|
|
339
339
|
tableContext.expandedRowRender = expandableConfig.value.expandedRowRender;
|
|
340
|
+
tableContext.forceRender = expandableConfig.value.forceRender ?? false;
|
|
340
341
|
tableContext.expandedRowOffset = expandableConfig.value.expandedRowOffset;
|
|
341
342
|
tableContext.onTriggerExpand = onTriggerExpand;
|
|
342
343
|
tableContext.expandIconColumnIndex = expandableConfig.value.expandIconColumnIndex;
|
|
@@ -33,14 +33,18 @@ var BodyLine = /* @__PURE__ */ defineComponent({
|
|
|
33
33
|
const { rowSupportExpand, expanded, rowProps } = rowInfo;
|
|
34
34
|
const expandedRowRender = tableContext.expandedRowRender;
|
|
35
35
|
const expandedRowClassName = tableContext.expandedRowClassName;
|
|
36
|
+
const forceRender = tableContext.forceRender;
|
|
36
37
|
let expandRowNode;
|
|
37
|
-
if (rowSupportExpand.value && expanded.value) {
|
|
38
|
+
if (!extra && rowSupportExpand.value && (forceRender || expanded.value)) {
|
|
38
39
|
const expandContent = expandedRowRender(record, index, indent + 1, expanded.value);
|
|
39
40
|
const expandedClsName = computedExpandedClassName(expandedRowClassName, record, index, indent);
|
|
40
41
|
let additionalProps = {};
|
|
41
42
|
if (tableContext.fixColumn) additionalProps = { style: { ["--virtual-width"]: `${tableContext.componentWidth}px` } };
|
|
42
43
|
const rowCellCls = `${tableContext.prefixCls}-expanded-row-cell`;
|
|
43
|
-
expandRowNode = createVNode(RowComponent, {
|
|
44
|
+
expandRowNode = createVNode(RowComponent, {
|
|
45
|
+
"class": clsx(`${tableContext.prefixCls}-expanded-row`, `${tableContext.prefixCls}-expanded-row-level-${indent + 1}`, expandedClsName),
|
|
46
|
+
"style": { display: expanded.value ? void 0 : "none" }
|
|
47
|
+
}, { default: () => [createVNode(Cell, {
|
|
44
48
|
"component": CellComponent,
|
|
45
49
|
"prefixCls": tableContext.prefixCls,
|
|
46
50
|
"className": clsx(rowCellCls, { [`${rowCellCls}-fixed`]: tableContext.fixColumn }),
|
|
@@ -28,6 +28,7 @@ export interface TableContextProps<RecordType = any> {
|
|
|
28
28
|
expandableType: ExpandableType;
|
|
29
29
|
expandRowByClick: boolean;
|
|
30
30
|
expandedRowRender: ExpandedRowRender<RecordType>;
|
|
31
|
+
forceRender: boolean;
|
|
31
32
|
expandIcon: RenderExpandIcon<RecordType>;
|
|
32
33
|
onTriggerExpand: TriggerEventHandler<RecordType>;
|
|
33
34
|
expandIconColumnIndex: number;
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
import { INTERNAL_COL_DEFINE } from "../../utils/legacyUtil.js";
|
|
2
2
|
import { EXPAND_COLUMN } from "../../constant.js";
|
|
3
3
|
import useWidthColumns from "./useWidthColumns.js";
|
|
4
|
-
import { computed, createVNode, isVNode, unref } from "vue";
|
|
4
|
+
import { computed, createVNode, isVNode, toRaw, unref } from "vue";
|
|
5
5
|
import { warning } from "@v-c/util";
|
|
6
6
|
import { flattenChildren } from "@v-c/util/dist/props-util";
|
|
7
7
|
//#region src/hooks/useColumns/index.tsx
|
|
8
|
+
/**
|
|
9
|
+
* `EXPAND_COLUMN` is a sentinel matched by reference. When `columns` comes from a deep
|
|
10
|
+
* reactive source (component props, `reactive()` or `ref()`), every entry is handed out
|
|
11
|
+
* as a proxy, so the raw value must be unwrapped before comparing identity.
|
|
12
|
+
*/
|
|
13
|
+
function isExpandColumn(column) {
|
|
14
|
+
return toRaw(column) === EXPAND_COLUMN;
|
|
15
|
+
}
|
|
8
16
|
function convertChildrenToColumns(children) {
|
|
9
17
|
return flattenChildren(children).filter((node) => isVNode(node)).map((node) => {
|
|
10
18
|
const { key, props, children: nodeChildren } = node;
|
|
@@ -52,15 +60,15 @@ function useColumns(options, transformColumns) {
|
|
|
52
60
|
let cloneColumns = baseColumns.value.slice();
|
|
53
61
|
const expandIconColumnIndex = unref(options.expandIconColumnIndex);
|
|
54
62
|
if (process.env.NODE_ENV !== "production" && expandIconColumnIndex !== void 0) warning(false, "`expandIconColumnIndex` is deprecated. Please use `Table.EXPAND_COLUMN` in `columns` instead.");
|
|
55
|
-
if (!cloneColumns.
|
|
63
|
+
if (!cloneColumns.some(isExpandColumn)) {
|
|
56
64
|
const expandColIndex = expandIconColumnIndex || 0;
|
|
57
65
|
const fixed = unref(options.fixed);
|
|
58
66
|
const insertIndex = expandColIndex === 0 && (fixed === "right" || fixed === "end") ? baseColumns.value.length : expandColIndex;
|
|
59
67
|
if (insertIndex >= 0) cloneColumns.splice(insertIndex, 0, EXPAND_COLUMN);
|
|
60
68
|
}
|
|
61
|
-
if (process.env.NODE_ENV !== "production" && cloneColumns.filter((c) => c
|
|
62
|
-
const expandColumnIndex = cloneColumns.
|
|
63
|
-
cloneColumns = cloneColumns.filter((column, index) => column
|
|
69
|
+
if (process.env.NODE_ENV !== "production" && cloneColumns.filter((c) => isExpandColumn(c)).length > 1) warning(false, "There exist more than one `EXPAND_COLUMN` in `columns`.");
|
|
70
|
+
const expandColumnIndex = cloneColumns.findIndex(isExpandColumn);
|
|
71
|
+
cloneColumns = cloneColumns.filter((column, index) => !isExpandColumn(column) || index === expandColumnIndex);
|
|
64
72
|
const prevColumn = baseColumns.value[expandColumnIndex];
|
|
65
73
|
let fixedColumn;
|
|
66
74
|
const fixed = unref(options.fixed);
|
|
@@ -94,7 +102,7 @@ function useColumns(options, transformColumns) {
|
|
|
94
102
|
}
|
|
95
103
|
};
|
|
96
104
|
return cloneColumns.map((col, index) => {
|
|
97
|
-
const column = col
|
|
105
|
+
const column = isExpandColumn(col) ? expandColumn : col;
|
|
98
106
|
if ((options.expandedRowOffset || 0) && index < (options.expandedRowOffset || 0)) return {
|
|
99
107
|
...column,
|
|
100
108
|
fixed: column.fixed || "start"
|
|
@@ -102,8 +110,8 @@ function useColumns(options, transformColumns) {
|
|
|
102
110
|
return column;
|
|
103
111
|
});
|
|
104
112
|
}
|
|
105
|
-
if (process.env.NODE_ENV !== "production" && baseColumns.value.
|
|
106
|
-
return baseColumns.value.filter((col) => col
|
|
113
|
+
if (process.env.NODE_ENV !== "production" && baseColumns.value.some(isExpandColumn)) warning(false, "`expandable` is not config but there exist `EXPAND_COLUMN` in `columns`.");
|
|
114
|
+
return baseColumns.value.filter((col) => !isExpandColumn(col));
|
|
107
115
|
});
|
|
108
116
|
const mergedColumns = computed(() => {
|
|
109
117
|
let finalColumns = withExpandColumns.value;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Ref } from 'vue';
|
|
2
2
|
import { ColumnType, StickyOffsets } from '../interface';
|
|
3
|
-
export default function useFixedInfo<RecordType>(flattenColumns: Ref<readonly ColumnType<RecordType>[]> | readonly ColumnType<RecordType>[], stickyOffsets: Ref<StickyOffsets> | StickyOffsets):
|
|
3
|
+
export default function useFixedInfo<RecordType>(flattenColumns: Ref<readonly ColumnType<RecordType>[]> | readonly ColumnType<RecordType>[], stickyOffsets: Ref<StickyOffsets> | StickyOffsets): any;
|
|
@@ -8,7 +8,7 @@ export default function useRowInfo<RecordType>(record: Ref<RecordType> | RecordT
|
|
|
8
8
|
rowSupportExpand: import('vue').ComputedRef<boolean>;
|
|
9
9
|
expandable: import('vue').ComputedRef<boolean>;
|
|
10
10
|
rowProps: import('vue').ComputedRef<{
|
|
11
|
-
className:
|
|
11
|
+
className: any;
|
|
12
12
|
onClick: (event: MouseEvent) => void;
|
|
13
13
|
innerHTML?: string | undefined | undefined;
|
|
14
14
|
class?: import('vue').ClassValue;
|
package/dist/interface.d.ts
CHANGED
|
@@ -173,6 +173,7 @@ export interface ExpandableConfig<RecordType> {
|
|
|
173
173
|
expandedRowKeys?: readonly Key[];
|
|
174
174
|
defaultExpandedRowKeys?: readonly Key[];
|
|
175
175
|
expandedRowRender?: ExpandedRowRender<RecordType>;
|
|
176
|
+
forceRender?: boolean;
|
|
176
177
|
columnTitle?: VueNode;
|
|
177
178
|
expandRowByClick?: boolean;
|
|
178
179
|
expandIcon?: RenderExpandIcon<RecordType>;
|
package/dist/sugar/Column.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@v-c/table",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.2.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/antdv-next/vue-components/tree/next/packages/table",
|
|
7
7
|
"repository": {
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@v-c/resize-observer": "^1.1.3",
|
|
30
|
-
"@v-c/
|
|
31
|
-
"@v-c/
|
|
30
|
+
"@v-c/virtual-list": "^1.1.1",
|
|
31
|
+
"@v-c/util": "^1.1.0"
|
|
32
32
|
},
|
|
33
33
|
"publishConfig": {
|
|
34
34
|
"access": "public"
|