vxe-pc-ui 4.15.11 → 4.15.13
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/all.esm.js +1597 -236
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/collapse/src/collapse.js +73 -40
- package/es/components.js +6 -0
- package/es/date-picker/src/date-picker.js +1 -0
- package/es/icon/style.css +1 -1
- package/es/image/src/image.js +14 -14
- package/es/language/ar-EG.js +4 -0
- package/es/language/de-DE.js +4 -0
- package/es/language/en-US.js +5 -1
- package/es/language/es-ES.js +4 -0
- package/es/language/fr-FR.js +4 -0
- package/es/language/hu-HU.js +4 -0
- package/es/language/hy-AM.js +4 -0
- package/es/language/id-ID.js +4 -0
- package/es/language/it-IT.js +4 -0
- package/es/language/ja-JP.js +4 -0
- package/es/language/ko-KR.js +4 -0
- package/es/language/ms-MY.js +4 -0
- package/es/language/nb-NO.js +4 -0
- package/es/language/pt-BR.js +4 -0
- package/es/language/ru-RU.js +4 -0
- package/es/language/th-TH.js +4 -0
- package/es/language/ug-CN.js +4 -0
- package/es/language/uk-UA.js +4 -0
- package/es/language/uz-UZ.js +4 -0
- package/es/language/vi-VN.js +4 -0
- package/es/language/zh-CHT.js +4 -0
- package/es/language/zh-CN.js +4 -0
- package/es/list/src/list.js +1163 -32
- package/es/list/src/store.js +8 -0
- package/es/list/style.css +328 -0
- package/es/list/style.min.css +1 -1
- package/es/print/src/util.js +1 -1
- package/es/pulldown/src/pulldown.js +4 -4
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table-transfer/index.js +12 -0
- package/es/table-transfer/src/table-transfer.js +65 -0
- package/es/table-transfer/style.css +0 -0
- package/es/table-transfer/style.min.css +0 -0
- package/es/transfer/index.js +12 -0
- package/es/transfer/src/transfer.js +91 -0
- package/es/transfer/style.css +4 -0
- package/es/transfer/style.min.css +1 -0
- package/es/tree/src/tree.js +20 -26
- package/es/tree/src/util.js +0 -7
- package/es/tree-select/src/tree-select.js +8 -7
- package/es/ui/index.js +14 -2
- package/es/ui/src/log.js +1 -1
- package/es/ui/src/utils.js +12 -0
- package/es/vxe-list/style.css +328 -0
- package/es/vxe-list/style.min.css +1 -1
- package/es/vxe-table-transfer/index.js +3 -0
- package/es/vxe-table-transfer/style.css +0 -0
- package/es/vxe-table-transfer/style.min.css +0 -0
- package/es/vxe-transfer/index.js +3 -0
- package/es/vxe-transfer/style.css +4 -0
- package/es/vxe-transfer/style.min.css +1 -0
- package/lib/collapse/src/collapse.js +89 -47
- package/lib/collapse/src/collapse.min.js +1 -1
- package/lib/components.js +25 -1
- package/lib/components.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +1 -0
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/image/src/image.js +17 -17
- package/lib/image/src/image.min.js +1 -1
- package/lib/index.umd.js +1753 -188
- package/lib/index.umd.min.js +1 -1
- package/lib/language/ar-EG.js +4 -0
- package/lib/language/ar-EG.min.js +1 -1
- package/lib/language/ar-EG.umd.js +4 -0
- package/lib/language/de-DE.js +4 -0
- package/lib/language/de-DE.min.js +1 -1
- package/lib/language/de-DE.umd.js +4 -0
- package/lib/language/en-US.js +5 -1
- package/lib/language/en-US.min.js +1 -1
- package/lib/language/en-US.umd.js +5 -1
- package/lib/language/es-ES.js +4 -0
- package/lib/language/es-ES.min.js +1 -1
- package/lib/language/es-ES.umd.js +4 -0
- package/lib/language/fr-FR.js +4 -0
- package/lib/language/fr-FR.min.js +1 -1
- package/lib/language/fr-FR.umd.js +4 -0
- package/lib/language/hu-HU.js +4 -0
- package/lib/language/hu-HU.min.js +1 -1
- package/lib/language/hu-HU.umd.js +4 -0
- package/lib/language/hy-AM.js +4 -0
- package/lib/language/hy-AM.min.js +1 -1
- package/lib/language/hy-AM.umd.js +4 -0
- package/lib/language/id-ID.js +4 -0
- package/lib/language/id-ID.min.js +1 -1
- package/lib/language/id-ID.umd.js +4 -0
- package/lib/language/it-IT.js +4 -0
- package/lib/language/it-IT.min.js +1 -1
- package/lib/language/it-IT.umd.js +4 -0
- package/lib/language/ja-JP.js +4 -0
- package/lib/language/ja-JP.min.js +1 -1
- package/lib/language/ja-JP.umd.js +4 -0
- package/lib/language/ko-KR.js +4 -0
- package/lib/language/ko-KR.min.js +1 -1
- package/lib/language/ko-KR.umd.js +4 -0
- package/lib/language/ms-MY.js +4 -0
- package/lib/language/ms-MY.min.js +1 -1
- package/lib/language/ms-MY.umd.js +4 -0
- package/lib/language/nb-NO.js +4 -0
- package/lib/language/nb-NO.min.js +1 -1
- package/lib/language/nb-NO.umd.js +4 -0
- package/lib/language/pt-BR.js +4 -0
- package/lib/language/pt-BR.min.js +1 -1
- package/lib/language/pt-BR.umd.js +4 -0
- package/lib/language/ru-RU.js +4 -0
- package/lib/language/ru-RU.min.js +1 -1
- package/lib/language/ru-RU.umd.js +4 -0
- package/lib/language/th-TH.js +4 -0
- package/lib/language/th-TH.min.js +1 -1
- package/lib/language/th-TH.umd.js +4 -0
- package/lib/language/ug-CN.js +4 -0
- package/lib/language/ug-CN.min.js +1 -1
- package/lib/language/ug-CN.umd.js +4 -0
- package/lib/language/uk-UA.js +4 -0
- package/lib/language/uk-UA.min.js +1 -1
- package/lib/language/uk-UA.umd.js +4 -0
- package/lib/language/uz-UZ.js +4 -0
- package/lib/language/uz-UZ.min.js +1 -1
- package/lib/language/uz-UZ.umd.js +4 -0
- package/lib/language/vi-VN.js +4 -0
- package/lib/language/vi-VN.min.js +1 -1
- package/lib/language/vi-VN.umd.js +4 -0
- package/lib/language/zh-CHT.js +4 -0
- package/lib/language/zh-CHT.min.js +1 -1
- package/lib/language/zh-CHT.umd.js +4 -0
- package/lib/language/zh-CN.js +4 -0
- package/lib/language/zh-CN.min.js +1 -1
- package/lib/language/zh-CN.umd.js +4 -0
- package/lib/list/src/list.js +1319 -30
- package/lib/list/src/list.min.js +1 -1
- package/lib/list/src/store.js +15 -0
- package/lib/list/src/store.min.js +1 -0
- package/lib/list/style/style.css +328 -0
- package/lib/list/style/style.min.css +1 -1
- package/lib/print/src/util.js +1 -1
- package/lib/print/src/util.min.js +1 -1
- package/lib/pulldown/src/pulldown.js +4 -0
- package/lib/pulldown/src/pulldown.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table-transfer/index.js +19 -0
- package/lib/table-transfer/index.min.js +1 -0
- package/lib/table-transfer/src/table-transfer.js +76 -0
- package/lib/table-transfer/src/table-transfer.min.js +1 -0
- package/lib/table-transfer/style/index.js +1 -0
- package/lib/table-transfer/style/style.css +0 -0
- package/lib/table-transfer/style/style.min.css +0 -0
- package/lib/transfer/index.js +19 -0
- package/lib/transfer/index.min.js +1 -0
- package/lib/transfer/src/transfer.js +95 -0
- package/lib/transfer/src/transfer.min.js +1 -0
- package/lib/transfer/style/index.js +1 -0
- package/lib/transfer/style/style.css +4 -0
- package/lib/transfer/style/style.min.css +1 -0
- package/lib/tree/src/tree.js +18 -24
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree/src/util.js +0 -10
- package/lib/tree/src/util.min.js +1 -1
- package/lib/tree-select/src/tree-select.js +9 -6
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/ui/index.js +14 -2
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/ui/src/utils.js +15 -0
- package/lib/ui/src/utils.min.js +1 -1
- package/lib/vxe-list/style/style.css +328 -0
- package/lib/vxe-list/style/style.min.css +1 -1
- package/lib/vxe-table-transfer/index.js +21 -0
- package/lib/vxe-table-transfer/index.min.js +1 -0
- package/lib/vxe-table-transfer/style/index.js +1 -0
- package/lib/vxe-table-transfer/style/style.css +0 -0
- package/lib/vxe-table-transfer/style/style.min.css +0 -0
- package/lib/vxe-transfer/index.js +21 -0
- package/lib/vxe-transfer/index.min.js +1 -0
- package/lib/vxe-transfer/style/index.js +1 -0
- package/lib/vxe-transfer/style/style.css +4 -0
- package/lib/vxe-transfer/style/style.min.css +1 -0
- package/package.json +1 -1
- package/packages/collapse/src/collapse.ts +81 -42
- package/packages/components.ts +6 -0
- package/packages/date-picker/src/date-picker.ts +1 -0
- package/packages/image/src/image.ts +14 -14
- package/packages/language/ar-EG.ts +4 -0
- package/packages/language/de-DE.ts +4 -0
- package/packages/language/en-US.ts +5 -1
- package/packages/language/es-ES.ts +4 -0
- package/packages/language/fr-FR.ts +4 -0
- package/packages/language/hu-HU.ts +4 -0
- package/packages/language/hy-AM.ts +4 -0
- package/packages/language/id-ID.ts +4 -0
- package/packages/language/it-IT.ts +4 -0
- package/packages/language/ja-JP.ts +4 -0
- package/packages/language/ko-KR.ts +4 -0
- package/packages/language/ms-MY.ts +4 -0
- package/packages/language/nb-NO.ts +4 -0
- package/packages/language/pt-BR.ts +4 -0
- package/packages/language/ru-RU.ts +4 -0
- package/packages/language/th-TH.ts +4 -0
- package/packages/language/ug-CN.ts +4 -0
- package/packages/language/uk-UA.ts +4 -0
- package/packages/language/uz-UZ.ts +4 -0
- package/packages/language/vi-VN.ts +4 -0
- package/packages/language/zh-CHT.ts +4 -0
- package/packages/language/zh-CN.ts +4 -0
- package/packages/list/src/list.ts +1276 -37
- package/packages/list/src/store.ts +14 -0
- package/packages/print/src/util.ts +1 -2
- package/packages/pulldown/src/pulldown.ts +4 -4
- package/packages/table-transfer/index.ts +16 -0
- package/packages/table-transfer/src/table-transfer.ts +91 -0
- package/packages/transfer/index.ts +16 -0
- package/packages/transfer/src/transfer.ts +117 -0
- package/packages/tree/src/tree.ts +20 -26
- package/packages/tree/src/util.ts +0 -10
- package/packages/tree-select/src/tree-select.ts +8 -7
- package/packages/ui/index.ts +14 -1
- package/packages/ui/src/utils.ts +15 -0
- package/styles/all.scss +2 -0
- package/styles/components/list.scss +245 -0
- package/styles/components/table-transfer.scss +0 -0
- package/styles/components/transfer.scss +4 -0
- package/styles/components/tree.scss +1 -0
- package/styles/theme/base.scss +3 -0
- package/styles/theme/dark.scss +10 -0
- package/styles/theme/light.scss +10 -0
- package/styles/variable.scss +11 -1
- package/types/all.d.ts +6 -0
- package/types/components/collapse.d.ts +4 -2
- package/types/components/list.d.ts +349 -17
- package/types/components/pulldown.d.ts +1 -0
- package/types/components/table-transfer.d.ts +84 -0
- package/types/components/table.d.ts +4 -0
- package/types/components/transfer.d.ts +84 -0
- package/types/components/tree-select.d.ts +4 -0
- package/types/components/tree.d.ts +1 -1
- package/types/ui/global-config.d.ts +4 -0
- package/types/ui/global-icon.d.ts +6 -1
- /package/es/icon/{iconfont.1782358507268.ttf → iconfont.1782658269305.ttf} +0 -0
- /package/es/icon/{iconfont.1782358507268.woff → iconfont.1782658269305.woff} +0 -0
- /package/es/icon/{iconfont.1782358507268.woff2 → iconfont.1782658269305.woff2} +0 -0
- /package/es/{iconfont.1782358507268.ttf → iconfont.1782658269305.ttf} +0 -0
- /package/es/{iconfont.1782358507268.woff → iconfont.1782658269305.woff} +0 -0
- /package/es/{iconfont.1782358507268.woff2 → iconfont.1782658269305.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1782358507268.ttf → iconfont.1782658269305.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1782358507268.woff → iconfont.1782658269305.woff} +0 -0
- /package/lib/icon/style/{iconfont.1782358507268.woff2 → iconfont.1782658269305.woff2} +0 -0
- /package/lib/{iconfont.1782358507268.ttf → iconfont.1782658269305.ttf} +0 -0
- /package/lib/{iconfont.1782358507268.woff → iconfont.1782658269305.woff} +0 -0
- /package/lib/{iconfont.1782358507268.woff2 → iconfont.1782658269305.woff2} +0 -0
package/lib/list/src/list.js
CHANGED
|
@@ -8,24 +8,51 @@ var _vue = require("vue");
|
|
|
8
8
|
var _comp = require("../../ui/src/comp");
|
|
9
9
|
var _xeUtils = _interopRequireDefault(require("xe-utils"));
|
|
10
10
|
var _ui = require("../../ui");
|
|
11
|
+
var _store = require("./store");
|
|
11
12
|
var _dom = require("../../ui/src/dom");
|
|
13
|
+
var _utils = require("../../ui/src/utils");
|
|
14
|
+
var _log = require("../../ui/src/log");
|
|
15
|
+
var _anime = require("../../ui/src/anime");
|
|
12
16
|
var _loading = _interopRequireDefault(require("../../loading/src/loading"));
|
|
13
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
|
+
const {
|
|
19
|
+
errLog
|
|
20
|
+
} = (0, _log.createComponentLog)('tree');
|
|
21
|
+
function getRowKeyByField(row, keyField) {
|
|
22
|
+
return row ? '' + (row[keyField] || '') : '';
|
|
23
|
+
}
|
|
24
|
+
function getRowIdByField(row, keyField) {
|
|
25
|
+
if (!row) {
|
|
26
|
+
return '';
|
|
27
|
+
}
|
|
28
|
+
const rowKey = getRowKeyByField(row, keyField);
|
|
29
|
+
return (0, _utils.enModelValue)(rowKey);
|
|
30
|
+
}
|
|
14
31
|
function createReactData() {
|
|
15
32
|
return {
|
|
16
33
|
scrollYLoad: false,
|
|
17
34
|
bodyHeight: 0,
|
|
35
|
+
headHeight: 0,
|
|
36
|
+
footHeight: 0,
|
|
18
37
|
customHeight: 0,
|
|
19
38
|
customMaxHeight: 0,
|
|
20
39
|
parentHeight: 0,
|
|
21
40
|
topSpaceHeight: 0,
|
|
22
|
-
|
|
41
|
+
rowList: [],
|
|
42
|
+
selectRadioRow: null,
|
|
43
|
+
currRowFlag: 1,
|
|
44
|
+
updateCheckboxFlag: 1,
|
|
45
|
+
isAllChecked: false,
|
|
46
|
+
isAllIndeterminate: false,
|
|
47
|
+
dragRow: null,
|
|
48
|
+
dragTipText: ''
|
|
23
49
|
};
|
|
24
50
|
}
|
|
25
51
|
function createInternalData() {
|
|
26
52
|
return {
|
|
27
53
|
resizeObserver: undefined,
|
|
28
54
|
fullData: [],
|
|
55
|
+
fullKeyMaps: {},
|
|
29
56
|
lastScrollLeft: 0,
|
|
30
57
|
lastScrollTop: 0,
|
|
31
58
|
scrollYStore: {
|
|
@@ -34,7 +61,11 @@ function createInternalData() {
|
|
|
34
61
|
visibleSize: 0,
|
|
35
62
|
offsetSize: 0,
|
|
36
63
|
rowHeight: 0
|
|
37
|
-
}
|
|
64
|
+
},
|
|
65
|
+
currentRow: null,
|
|
66
|
+
selectCheckboxMaps: {}
|
|
67
|
+
// prevDragRow: null,
|
|
68
|
+
// prevDragPos: ''
|
|
38
69
|
};
|
|
39
70
|
}
|
|
40
71
|
var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
@@ -54,10 +85,24 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
54
85
|
default: () => (0, _ui.getConfig)().list.autoResize
|
|
55
86
|
},
|
|
56
87
|
syncResize: [Boolean, String, Number],
|
|
88
|
+
showRadio: {
|
|
89
|
+
type: Boolean,
|
|
90
|
+
default: () => (0, _ui.getConfig)().list.showRadio
|
|
91
|
+
},
|
|
92
|
+
checkRowKey: [String, Number],
|
|
93
|
+
radioConfig: Object,
|
|
94
|
+
showCheckbox: {
|
|
95
|
+
type: Boolean,
|
|
96
|
+
default: () => (0, _ui.getConfig)().list.showCheckbox
|
|
97
|
+
},
|
|
98
|
+
checkRowKeys: Array,
|
|
99
|
+
checkboxConfig: Object,
|
|
100
|
+
rowConfig: Object,
|
|
101
|
+
dragConfig: Object,
|
|
57
102
|
virtualYConfig: Object,
|
|
58
103
|
scrollY: Object
|
|
59
104
|
},
|
|
60
|
-
emits: ['scroll'],
|
|
105
|
+
emits: ['update:checkRowKey', 'update:checkRowKeys', 'row-click', 'row-dblclick', 'current-change', 'radio-change', 'checkbox-change', 'checkbox-all', 'scroll', 'row-dragstart', 'row-dragover', 'row-dragend'],
|
|
61
106
|
setup(props, context) {
|
|
62
107
|
const {
|
|
63
108
|
slots,
|
|
@@ -70,9 +115,14 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
70
115
|
} = (0, _ui.useSize)(props);
|
|
71
116
|
const reactData = (0, _vue.reactive)(createReactData());
|
|
72
117
|
const internalData = createInternalData();
|
|
118
|
+
const crossListDragRowInfo = (0, _store.getCrossListDragRowInfo)();
|
|
73
119
|
const refElem = (0, _vue.ref)();
|
|
120
|
+
const refHeaderElem = (0, _vue.ref)();
|
|
121
|
+
const refFooterElem = (0, _vue.ref)();
|
|
74
122
|
const refVirtualWrapper = (0, _vue.ref)();
|
|
75
123
|
const refVirtualBody = (0, _vue.ref)();
|
|
124
|
+
const refDragRowLineElem = (0, _vue.ref)();
|
|
125
|
+
const refDragTipElem = (0, _vue.ref)();
|
|
76
126
|
const refMaps = {
|
|
77
127
|
refElem
|
|
78
128
|
};
|
|
@@ -84,24 +134,71 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
84
134
|
internalData,
|
|
85
135
|
getRefMaps: () => refMaps
|
|
86
136
|
};
|
|
137
|
+
const computeRowOpts = (0, _vue.computed)(() => {
|
|
138
|
+
return Object.assign({}, (0, _ui.getConfig)().list.rowConfig, props.rowConfig);
|
|
139
|
+
});
|
|
140
|
+
const computeDragOpts = (0, _vue.computed)(() => {
|
|
141
|
+
return Object.assign({}, (0, _ui.getConfig)().list.dragConfig, props.dragConfig);
|
|
142
|
+
});
|
|
87
143
|
const computeSYOpts = (0, _vue.computed)(() => {
|
|
88
144
|
return Object.assign({}, (0, _ui.getConfig)().list.virtualYConfig || (0, _ui.getConfig)().list.scrollY, props.virtualYConfig || props.scrollY);
|
|
89
145
|
});
|
|
90
|
-
const
|
|
146
|
+
const computeKeyField = (0, _vue.computed)(() => {
|
|
147
|
+
const rowOpts = computeRowOpts.value;
|
|
148
|
+
const {
|
|
149
|
+
keyField
|
|
150
|
+
} = rowOpts;
|
|
151
|
+
return keyField || '';
|
|
152
|
+
});
|
|
153
|
+
const computeIsDrag = (0, _vue.computed)(() => {
|
|
154
|
+
const {
|
|
155
|
+
dragConfig
|
|
156
|
+
} = props;
|
|
157
|
+
const dragOpts = computeDragOpts.value;
|
|
158
|
+
return dragConfig && (0, _utils.isEnableConf)(dragOpts);
|
|
159
|
+
});
|
|
160
|
+
const computeRowHeight = (0, _vue.computed)(() => {
|
|
161
|
+
const rowOpts = computeRowOpts.value;
|
|
162
|
+
const {
|
|
163
|
+
height
|
|
164
|
+
} = rowOpts;
|
|
165
|
+
return height;
|
|
166
|
+
});
|
|
167
|
+
const computeRadioOpts = (0, _vue.computed)(() => {
|
|
168
|
+
return Object.assign({
|
|
169
|
+
showIcon: true
|
|
170
|
+
}, (0, _ui.getConfig)().list.radioConfig, props.radioConfig);
|
|
171
|
+
});
|
|
172
|
+
const computeCheckboxOpts = (0, _vue.computed)(() => {
|
|
173
|
+
return Object.assign({
|
|
174
|
+
showIcon: true
|
|
175
|
+
}, (0, _ui.getConfig)().list.checkboxConfig, props.checkboxConfig);
|
|
176
|
+
});
|
|
177
|
+
const computeWrapperStyles = (0, _vue.computed)(() => {
|
|
178
|
+
const rowHeight = computeRowHeight.value;
|
|
179
|
+
const style = {};
|
|
180
|
+
if (rowHeight) {
|
|
181
|
+
style['--vxe-ui-list-row-height'] = (0, _dom.toCssUnit)(rowHeight);
|
|
182
|
+
}
|
|
183
|
+
return style;
|
|
184
|
+
});
|
|
185
|
+
const computeVirtualStyles = (0, _vue.computed)(() => {
|
|
91
186
|
const {
|
|
92
187
|
height,
|
|
93
188
|
maxHeight
|
|
94
189
|
} = props;
|
|
95
190
|
const {
|
|
96
191
|
customHeight,
|
|
97
|
-
customMaxHeight
|
|
192
|
+
customMaxHeight,
|
|
193
|
+
headHeight,
|
|
194
|
+
footHeight
|
|
98
195
|
} = reactData;
|
|
99
196
|
const style = {};
|
|
100
197
|
if (height) {
|
|
101
|
-
style.height =
|
|
198
|
+
style.height = (0, _dom.toCssUnit)(Math.max(20, customHeight - headHeight - footHeight));
|
|
102
199
|
} else if (maxHeight) {
|
|
103
200
|
style.height = 'auto';
|
|
104
|
-
style.maxHeight =
|
|
201
|
+
style.maxHeight = (0, _dom.toCssUnit)(Math.max(20, customMaxHeight - headHeight - footHeight));
|
|
105
202
|
}
|
|
106
203
|
return style;
|
|
107
204
|
});
|
|
@@ -110,6 +207,16 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
110
207
|
$list: $xeList
|
|
111
208
|
}, params));
|
|
112
209
|
};
|
|
210
|
+
const emitCheckboxMode = value => {
|
|
211
|
+
emit('update:checkRowKeys', value);
|
|
212
|
+
};
|
|
213
|
+
const emitRadioMode = value => {
|
|
214
|
+
emit('update:checkRowKey', value);
|
|
215
|
+
};
|
|
216
|
+
const getRowId = row => {
|
|
217
|
+
const keyField = computeKeyField.value;
|
|
218
|
+
return getRowIdByField(row, keyField);
|
|
219
|
+
};
|
|
113
220
|
const calcTableHeight = key => {
|
|
114
221
|
const {
|
|
115
222
|
parentHeight
|
|
@@ -131,6 +238,10 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
131
238
|
return num;
|
|
132
239
|
};
|
|
133
240
|
const updateHeight = () => {
|
|
241
|
+
const headEl = refHeaderElem.value;
|
|
242
|
+
const footEl = refFooterElem.value;
|
|
243
|
+
reactData.headHeight = headEl ? Math.floor(headEl.offsetHeight) : 0;
|
|
244
|
+
reactData.footHeight = footEl ? Math.floor(footEl.offsetHeight) : 0;
|
|
134
245
|
reactData.customHeight = calcTableHeight('height');
|
|
135
246
|
reactData.customMaxHeight = calcTableHeight('maxHeight');
|
|
136
247
|
};
|
|
@@ -153,7 +264,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
153
264
|
fullData,
|
|
154
265
|
scrollYStore
|
|
155
266
|
} = internalData;
|
|
156
|
-
reactData.
|
|
267
|
+
reactData.rowList = scrollYLoad ? fullData.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullData.slice(0);
|
|
157
268
|
return (0, _vue.nextTick)();
|
|
158
269
|
};
|
|
159
270
|
const updateYData = () => {
|
|
@@ -171,17 +282,17 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
171
282
|
const virtualBodyElem = refVirtualBody.value;
|
|
172
283
|
const sYOpts = computeSYOpts.value;
|
|
173
284
|
let rowHeight = 0;
|
|
174
|
-
let
|
|
285
|
+
let firstRowElem;
|
|
175
286
|
if (virtualBodyElem) {
|
|
176
287
|
if (sYOpts.sItem) {
|
|
177
|
-
|
|
288
|
+
firstRowElem = virtualBodyElem.querySelector(sYOpts.sItem);
|
|
178
289
|
}
|
|
179
|
-
if (!
|
|
180
|
-
|
|
290
|
+
if (!firstRowElem) {
|
|
291
|
+
firstRowElem = virtualBodyElem.children[0];
|
|
181
292
|
}
|
|
182
293
|
}
|
|
183
|
-
if (
|
|
184
|
-
rowHeight =
|
|
294
|
+
if (firstRowElem) {
|
|
295
|
+
rowHeight = firstRowElem.offsetHeight;
|
|
185
296
|
}
|
|
186
297
|
rowHeight = Math.max(12, rowHeight);
|
|
187
298
|
scrollYStore.rowHeight = rowHeight;
|
|
@@ -310,6 +421,53 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
310
421
|
isY
|
|
311
422
|
}, evnt);
|
|
312
423
|
};
|
|
424
|
+
const updateRadioModeValue = () => {
|
|
425
|
+
const {
|
|
426
|
+
checkRowKey
|
|
427
|
+
} = props;
|
|
428
|
+
const {
|
|
429
|
+
fullKeyMaps
|
|
430
|
+
} = internalData;
|
|
431
|
+
if (checkRowKey) {
|
|
432
|
+
const row = fullKeyMaps[checkRowKey];
|
|
433
|
+
reactData.selectRadioRow = row || null;
|
|
434
|
+
} else {
|
|
435
|
+
reactData.selectRadioRow = null;
|
|
436
|
+
}
|
|
437
|
+
};
|
|
438
|
+
const updateCheckboxModeValue = () => {
|
|
439
|
+
const {
|
|
440
|
+
checkRowKeys
|
|
441
|
+
} = props;
|
|
442
|
+
const {
|
|
443
|
+
fullKeyMaps
|
|
444
|
+
} = internalData;
|
|
445
|
+
const keyField = computeKeyField.value;
|
|
446
|
+
const selectMaps = {};
|
|
447
|
+
if (checkRowKeys && checkRowKeys.length) {
|
|
448
|
+
for (const rowKey of checkRowKeys) {
|
|
449
|
+
const row = fullKeyMaps[rowKey];
|
|
450
|
+
if (row) {
|
|
451
|
+
const rowid = getRowIdByField(row, keyField);
|
|
452
|
+
selectMaps[rowid] = row;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
internalData.selectCheckboxMaps = selectMaps;
|
|
457
|
+
updateCheckboxStatus();
|
|
458
|
+
};
|
|
459
|
+
const cacheRowMap = () => {
|
|
460
|
+
const {
|
|
461
|
+
fullData
|
|
462
|
+
} = internalData;
|
|
463
|
+
const keyField = computeKeyField.value;
|
|
464
|
+
const keyMaps = {};
|
|
465
|
+
fullData.forEach(row => {
|
|
466
|
+
const rowKey = getRowKeyByField(row, keyField);
|
|
467
|
+
keyMaps[rowKey] = row;
|
|
468
|
+
});
|
|
469
|
+
internalData.fullKeyMaps = keyMaps;
|
|
470
|
+
};
|
|
313
471
|
/**
|
|
314
472
|
* 加载数据
|
|
315
473
|
* @param {Array} datas 数据
|
|
@@ -328,11 +486,790 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
328
486
|
internalData.fullData = fullData;
|
|
329
487
|
// 如果gt为0,则总是启用
|
|
330
488
|
reactData.scrollYLoad = !!sYOpts.enabled && sYOpts.gt > -1 && (sYOpts.gt === 0 || sYOpts.gt <= fullData.length);
|
|
489
|
+
cacheRowMap();
|
|
331
490
|
handleData();
|
|
491
|
+
updateRadioModeValue();
|
|
492
|
+
updateCheckboxModeValue();
|
|
332
493
|
return computeScrollLoad().then(() => {
|
|
333
494
|
refreshScroll();
|
|
334
495
|
});
|
|
335
496
|
};
|
|
497
|
+
const clearRowDropOrigin = () => {
|
|
498
|
+
const el = refElem.value;
|
|
499
|
+
if (el) {
|
|
500
|
+
const clss = 'row--drag-origin';
|
|
501
|
+
_xeUtils.default.arrayEach(el.querySelectorAll(`.${clss}`), elem => {
|
|
502
|
+
elem.draggable = false;
|
|
503
|
+
(0, _dom.removeClass)(elem, clss);
|
|
504
|
+
});
|
|
505
|
+
}
|
|
506
|
+
};
|
|
507
|
+
const updateRowDropOrigin = row => {
|
|
508
|
+
const sYOpts = computeSYOpts.value;
|
|
509
|
+
const {
|
|
510
|
+
sItem
|
|
511
|
+
} = sYOpts;
|
|
512
|
+
const el = refElem.value;
|
|
513
|
+
if (el) {
|
|
514
|
+
const clss = 'row--drag-origin';
|
|
515
|
+
const rowid = getRowId(row);
|
|
516
|
+
_xeUtils.default.arrayEach(el.querySelectorAll(`.vxe-list--row[rowid="${rowid}"]` + (sItem ? `${sItem}[rowid="${rowid}"]` : '')), elem => {
|
|
517
|
+
(0, _dom.addClass)(elem, clss);
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
};
|
|
521
|
+
const updateRowDropTipContent = rowEl => {
|
|
522
|
+
const {
|
|
523
|
+
dragRow
|
|
524
|
+
} = reactData;
|
|
525
|
+
const dragOpts = computeDragOpts.value;
|
|
526
|
+
const {
|
|
527
|
+
tooltipMethod
|
|
528
|
+
} = dragOpts;
|
|
529
|
+
const rTooltipMethod = tooltipMethod;
|
|
530
|
+
let tipContent = '';
|
|
531
|
+
if (rTooltipMethod) {
|
|
532
|
+
const rtParams = {
|
|
533
|
+
$list: $xeList,
|
|
534
|
+
row: dragRow
|
|
535
|
+
};
|
|
536
|
+
tipContent = `${rTooltipMethod(rtParams) || ''}`;
|
|
537
|
+
} else {
|
|
538
|
+
tipContent = (0, _ui.getI18n)('vxe.list.dragTip', [rowEl.textContent || '']);
|
|
539
|
+
}
|
|
540
|
+
reactData.dragTipText = tipContent;
|
|
541
|
+
};
|
|
542
|
+
const hideDropTip = () => {
|
|
543
|
+
const rdTipEl = refDragTipElem.value;
|
|
544
|
+
const rdLineEl = refDragRowLineElem.value;
|
|
545
|
+
if (rdTipEl) {
|
|
546
|
+
rdTipEl.style.display = '';
|
|
547
|
+
}
|
|
548
|
+
if (rdLineEl) {
|
|
549
|
+
rdLineEl.style.display = '';
|
|
550
|
+
}
|
|
551
|
+
};
|
|
552
|
+
const clearCrossListDragStatus = () => {
|
|
553
|
+
// crossListDragRowObj = null
|
|
554
|
+
crossListDragRowInfo.row = null;
|
|
555
|
+
};
|
|
556
|
+
const clearDragStatus = () => {
|
|
557
|
+
const {
|
|
558
|
+
dragRow
|
|
559
|
+
} = reactData;
|
|
560
|
+
if (dragRow) {
|
|
561
|
+
hideDropTip();
|
|
562
|
+
clearRowDropOrigin();
|
|
563
|
+
clearCrossListDragStatus();
|
|
564
|
+
reactData.dragRow = null;
|
|
565
|
+
}
|
|
566
|
+
};
|
|
567
|
+
const handleRowDragMousedownEvent = (evnt, params) => {
|
|
568
|
+
evnt.stopPropagation();
|
|
569
|
+
const {
|
|
570
|
+
row
|
|
571
|
+
} = params;
|
|
572
|
+
const dragConfig = computeDragOpts.value;
|
|
573
|
+
const {
|
|
574
|
+
trigger,
|
|
575
|
+
dragStartMethod
|
|
576
|
+
} = dragConfig;
|
|
577
|
+
const dragEl = evnt.currentTarget;
|
|
578
|
+
const rowEl = trigger === 'row' ? dragEl : dragEl.parentElement.parentElement;
|
|
579
|
+
clearRowDropOrigin();
|
|
580
|
+
if (dragStartMethod && !dragStartMethod(params)) {
|
|
581
|
+
rowEl.draggable = false;
|
|
582
|
+
reactData.dragRow = null;
|
|
583
|
+
hideDropTip();
|
|
584
|
+
return;
|
|
585
|
+
}
|
|
586
|
+
const dragstartEventParams = {
|
|
587
|
+
row
|
|
588
|
+
};
|
|
589
|
+
reactData.dragRow = row;
|
|
590
|
+
rowEl.draggable = true;
|
|
591
|
+
updateRowDropOrigin(row);
|
|
592
|
+
updateRowDropTipContent(rowEl);
|
|
593
|
+
dispatchEvent('row-dragstart', dragstartEventParams, evnt);
|
|
594
|
+
};
|
|
595
|
+
const handleRowDragMouseupEvent = () => {
|
|
596
|
+
clearDragStatus();
|
|
597
|
+
};
|
|
598
|
+
const showDropTip = (evnt, rowEl, showLine, dragPos) => {
|
|
599
|
+
const wrapperEl = refElem.value;
|
|
600
|
+
if (!wrapperEl) {
|
|
601
|
+
return;
|
|
602
|
+
}
|
|
603
|
+
const wrapperRect = wrapperEl.getBoundingClientRect();
|
|
604
|
+
const wrapperHeight = wrapperEl.clientHeight;
|
|
605
|
+
if (rowEl) {
|
|
606
|
+
const rdLineEl = refDragRowLineElem.value;
|
|
607
|
+
if (rdLineEl) {
|
|
608
|
+
if (showLine) {
|
|
609
|
+
const trRect = rowEl.getBoundingClientRect();
|
|
610
|
+
let rowHeight = rowEl.clientHeight;
|
|
611
|
+
const offsetTop = Math.max(1, trRect.y - wrapperRect.y);
|
|
612
|
+
if (offsetTop + rowHeight > wrapperHeight) {
|
|
613
|
+
rowHeight = wrapperHeight - offsetTop;
|
|
614
|
+
}
|
|
615
|
+
rdLineEl.style.display = 'block';
|
|
616
|
+
rdLineEl.style.top = `${offsetTop}px`;
|
|
617
|
+
rdLineEl.style.height = `${rowHeight}px`;
|
|
618
|
+
rdLineEl.setAttribute('drag-pos', dragPos);
|
|
619
|
+
} else {
|
|
620
|
+
rdLineEl.style.display = '';
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
const rdTipEl = refDragTipElem.value;
|
|
625
|
+
if (rdTipEl) {
|
|
626
|
+
rdTipEl.style.display = 'block';
|
|
627
|
+
rdTipEl.style.top = `${Math.min(wrapperEl.clientHeight - wrapperEl.scrollTop - rdTipEl.clientHeight, evnt.clientY - wrapperRect.y)}px`;
|
|
628
|
+
rdTipEl.style.left = `${Math.min(wrapperEl.clientWidth - wrapperEl.scrollLeft - rdTipEl.clientWidth - 1, evnt.clientX - wrapperRect.x)}px`;
|
|
629
|
+
rdTipEl.setAttribute('drag-status', showLine ? 'normal' : 'disabled');
|
|
630
|
+
}
|
|
631
|
+
};
|
|
632
|
+
const clearRowDragData = () => {
|
|
633
|
+
const wrapperEl = refElem.value;
|
|
634
|
+
const dtClss = ['.vxe-list--row'];
|
|
635
|
+
hideDropTip();
|
|
636
|
+
clearRowDropOrigin();
|
|
637
|
+
(0, _anime.clearRowAnimate)(wrapperEl, dtClss);
|
|
638
|
+
reactData.dragRow = null;
|
|
639
|
+
};
|
|
640
|
+
const handleRowDragSwapEvent = (evnt, dragRow, prevDragRow, prevDragPos) => {
|
|
641
|
+
const {
|
|
642
|
+
fullData
|
|
643
|
+
} = internalData;
|
|
644
|
+
const dragConfig = computeDragOpts.value;
|
|
645
|
+
const {
|
|
646
|
+
animation,
|
|
647
|
+
dragEndMethod
|
|
648
|
+
} = dragConfig;
|
|
649
|
+
const dEndMethod = dragEndMethod || (dragConfig ? dragConfig.dragEndMethod : null);
|
|
650
|
+
const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
|
|
651
|
+
const el = refElem.value;
|
|
652
|
+
const errRest = {
|
|
653
|
+
status: false
|
|
654
|
+
};
|
|
655
|
+
if (!(el && prevDragRow && dragRow)) {
|
|
656
|
+
return Promise.resolve(errRest);
|
|
657
|
+
}
|
|
658
|
+
// 判断是否有拖动
|
|
659
|
+
if (prevDragRow !== dragRow) {
|
|
660
|
+
const dragParams = {
|
|
661
|
+
oldRow: dragRow,
|
|
662
|
+
newRow: prevDragRow,
|
|
663
|
+
dragRow,
|
|
664
|
+
dragPos: prevDragPos,
|
|
665
|
+
offsetIndex: dragOffsetIndex
|
|
666
|
+
};
|
|
667
|
+
const dragRowid = getRowId(dragRow);
|
|
668
|
+
const _dragRowIndex = findRowIndexOfByKey(fullData, dragRowid);
|
|
669
|
+
const newRowid = getRowKey(prevDragRow);
|
|
670
|
+
let dragRowHeight = 0;
|
|
671
|
+
let dragOffsetTop = -1;
|
|
672
|
+
if (animation) {
|
|
673
|
+
const prevRowEl = el.querySelector(`.vxe-list--row[rowid="${newRowid}"]`);
|
|
674
|
+
const oldRowEl = el.querySelector(`.vxe-list--row[rowid="${dragRowid}"]`);
|
|
675
|
+
const targetRowEl = prevRowEl || oldRowEl;
|
|
676
|
+
if (targetRowEl) {
|
|
677
|
+
dragRowHeight = targetRowEl.offsetHeight;
|
|
678
|
+
}
|
|
679
|
+
if (oldRowEl) {
|
|
680
|
+
dragOffsetTop = oldRowEl.offsetTop;
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
let oafIndex = -1;
|
|
684
|
+
let nafIndex = -1;
|
|
685
|
+
return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then(status => {
|
|
686
|
+
if (!status) {
|
|
687
|
+
return errRest;
|
|
688
|
+
}
|
|
689
|
+
// 移出
|
|
690
|
+
oafIndex = findRowIndexOf(fullData, dragRow);
|
|
691
|
+
fullData.splice(oafIndex, 1);
|
|
692
|
+
// 插入
|
|
693
|
+
const pafIndex = findRowIndexOf(fullData, prevDragRow);
|
|
694
|
+
nafIndex = pafIndex + dragOffsetIndex;
|
|
695
|
+
fullData.splice(nafIndex, 0, dragRow);
|
|
696
|
+
handleData();
|
|
697
|
+
if (reactData.scrollYLoad) {
|
|
698
|
+
updateYSpace();
|
|
699
|
+
}
|
|
700
|
+
if (evnt) {
|
|
701
|
+
const dragendEventParams = {
|
|
702
|
+
oldRow: dragRow,
|
|
703
|
+
newRow: prevDragRow,
|
|
704
|
+
dragRow,
|
|
705
|
+
dragPos: prevDragPos,
|
|
706
|
+
offsetIndex: dragOffsetIndex,
|
|
707
|
+
_index: {
|
|
708
|
+
newIndex: nafIndex,
|
|
709
|
+
oldIndex: oafIndex
|
|
710
|
+
}
|
|
711
|
+
};
|
|
712
|
+
dispatchEvent('row-dragend', dragendEventParams, evnt);
|
|
713
|
+
}
|
|
714
|
+
return (0, _vue.nextTick)().then(() => {
|
|
715
|
+
if (animation) {
|
|
716
|
+
const {
|
|
717
|
+
rowList
|
|
718
|
+
} = reactData;
|
|
719
|
+
const {
|
|
720
|
+
fullData
|
|
721
|
+
} = internalData;
|
|
722
|
+
const _newRowIndex = findRowIndexOfByKey(fullData, dragRowid);
|
|
723
|
+
const firstRow = fullData[0];
|
|
724
|
+
const _firstRowIndex = findRowIndexOf(fullData, firstRow);
|
|
725
|
+
const wrapperEl = el;
|
|
726
|
+
if (_firstRowIndex > -1) {
|
|
727
|
+
const _lastRowIndex = _firstRowIndex + fullData.length;
|
|
728
|
+
let rsIndex = -1;
|
|
729
|
+
let reIndex = -1;
|
|
730
|
+
let offsetRate = 1;
|
|
731
|
+
if (_dragRowIndex < _firstRowIndex) {
|
|
732
|
+
// 从上往下虚拟拖拽
|
|
733
|
+
rsIndex = 0;
|
|
734
|
+
reIndex = _newRowIndex - _firstRowIndex;
|
|
735
|
+
} else if (_dragRowIndex > _lastRowIndex) {
|
|
736
|
+
// 从下往上虚拟拖拽
|
|
737
|
+
const $newRowIndex = findRowIndexOfByKey(rowList, dragRowid);
|
|
738
|
+
rsIndex = $newRowIndex + 1;
|
|
739
|
+
reIndex = fullData.length;
|
|
740
|
+
offsetRate = -1;
|
|
741
|
+
} else {
|
|
742
|
+
if (_newRowIndex > _dragRowIndex) {
|
|
743
|
+
// 从上往下拖拽
|
|
744
|
+
rsIndex = _dragRowIndex - _firstRowIndex;
|
|
745
|
+
reIndex = rsIndex + _newRowIndex - _dragRowIndex;
|
|
746
|
+
} else {
|
|
747
|
+
// 从下往上拖拽
|
|
748
|
+
rsIndex = _newRowIndex - _firstRowIndex;
|
|
749
|
+
reIndex = rsIndex + _dragRowIndex - _newRowIndex + 1;
|
|
750
|
+
offsetRate = -1;
|
|
751
|
+
}
|
|
752
|
+
}
|
|
753
|
+
const dragRangeList = fullData.slice(rsIndex, reIndex);
|
|
754
|
+
if (dragRangeList.length) {
|
|
755
|
+
const dtClss = [];
|
|
756
|
+
dragRangeList.forEach(obj => {
|
|
757
|
+
const rowid = getRowId(obj);
|
|
758
|
+
dtClss.push(`.vxe-list--row[rowid="${rowid}"]`);
|
|
759
|
+
});
|
|
760
|
+
const dtTrList = wrapperEl.querySelectorAll(dtClss.join(','));
|
|
761
|
+
(0, _anime.moveRowAnimateToTb)(dtTrList, offsetRate * dragRowHeight);
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
const drClss = [`.vxe-list--row[rowid="${dragRowid}"]`];
|
|
765
|
+
const newDtTrList = wrapperEl.querySelectorAll(drClss.join(','));
|
|
766
|
+
const newTrEl = newDtTrList[0];
|
|
767
|
+
if (dragOffsetTop > -1 && newTrEl) {
|
|
768
|
+
(0, _anime.moveRowAnimateToTb)(newDtTrList, dragOffsetTop - newTrEl.offsetTop);
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
recalculate();
|
|
772
|
+
}).then(() => {
|
|
773
|
+
return {
|
|
774
|
+
status: true
|
|
775
|
+
};
|
|
776
|
+
});
|
|
777
|
+
}).catch(() => {
|
|
778
|
+
return errRest;
|
|
779
|
+
}).then(rest => {
|
|
780
|
+
clearRowDragData();
|
|
781
|
+
clearCrossListDragStatus();
|
|
782
|
+
return rest;
|
|
783
|
+
});
|
|
784
|
+
}
|
|
785
|
+
clearRowDragData();
|
|
786
|
+
clearCrossListDragStatus();
|
|
787
|
+
return Promise.resolve(errRest);
|
|
788
|
+
};
|
|
789
|
+
const handleRowDragDragstartEvent = evnt => {
|
|
790
|
+
if (evnt.dataTransfer) {
|
|
791
|
+
evnt.dataTransfer.setDragImage((0, _dom.getTpImg)(), 0, 0);
|
|
792
|
+
}
|
|
793
|
+
};
|
|
794
|
+
const handleRowDragDragendEvent = evnt => {
|
|
795
|
+
const {
|
|
796
|
+
dragRow
|
|
797
|
+
} = reactData;
|
|
798
|
+
const {
|
|
799
|
+
prevDragRow,
|
|
800
|
+
prevDragPos
|
|
801
|
+
} = internalData;
|
|
802
|
+
handleRowDragSwapEvent(evnt, dragRow, prevDragRow, prevDragPos);
|
|
803
|
+
};
|
|
804
|
+
const handleRowDragDragoverEvent = evnt => {
|
|
805
|
+
const {
|
|
806
|
+
dragRow
|
|
807
|
+
} = reactData;
|
|
808
|
+
const {
|
|
809
|
+
fullData
|
|
810
|
+
} = internalData;
|
|
811
|
+
if (!dragRow) {
|
|
812
|
+
evnt.preventDefault();
|
|
813
|
+
}
|
|
814
|
+
const rowEl = evnt.currentTarget;
|
|
815
|
+
const rowid = rowEl.getAttribute('rowid') || '';
|
|
816
|
+
const row = findRowByKey(fullData, rowid);
|
|
817
|
+
if (row) {
|
|
818
|
+
evnt.preventDefault();
|
|
819
|
+
const offsetY = evnt.clientY - rowEl.getBoundingClientRect().y;
|
|
820
|
+
const dragPos = offsetY < rowEl.clientHeight / 2 ? 'top' : 'bottom';
|
|
821
|
+
internalData.prevDragRow = row;
|
|
822
|
+
internalData.prevDragPos = dragPos;
|
|
823
|
+
if (dragRow && getRowId(dragRow) === rowid) {
|
|
824
|
+
showDropTip(evnt, rowEl, false, dragPos);
|
|
825
|
+
return;
|
|
826
|
+
}
|
|
827
|
+
const dragOffsetIndex = dragPos === 'bottom' ? 1 : 0;
|
|
828
|
+
const offsetIndex = dragOffsetIndex;
|
|
829
|
+
const dragoverEventParams = {
|
|
830
|
+
oldRow: dragRow,
|
|
831
|
+
targetRow: row,
|
|
832
|
+
dragPos,
|
|
833
|
+
dragRow,
|
|
834
|
+
offsetIndex
|
|
835
|
+
};
|
|
836
|
+
showDropTip(evnt, rowEl, true, dragPos);
|
|
837
|
+
dispatchEvent('row-dragover', dragoverEventParams, evnt);
|
|
838
|
+
}
|
|
839
|
+
};
|
|
840
|
+
const handleRowMousedownEvent = (evnt, row) => {
|
|
841
|
+
const dragConfig = computeDragOpts.value;
|
|
842
|
+
const isDrag = computeIsDrag.value;
|
|
843
|
+
const {
|
|
844
|
+
trigger,
|
|
845
|
+
disabledMethod
|
|
846
|
+
} = dragConfig;
|
|
847
|
+
let isRowDrag = false;
|
|
848
|
+
if (isDrag) {
|
|
849
|
+
isRowDrag = trigger === 'row';
|
|
850
|
+
}
|
|
851
|
+
const params = {
|
|
852
|
+
row,
|
|
853
|
+
$list: $xeList
|
|
854
|
+
};
|
|
855
|
+
if (isRowDrag && !(disabledMethod && disabledMethod(params))) {
|
|
856
|
+
handleRowDragMousedownEvent(evnt, params);
|
|
857
|
+
}
|
|
858
|
+
};
|
|
859
|
+
const handleRowClickEvent = (evnt, row) => {
|
|
860
|
+
const {
|
|
861
|
+
currentRow
|
|
862
|
+
} = internalData;
|
|
863
|
+
const rowOpts = computeRowOpts.value;
|
|
864
|
+
const {
|
|
865
|
+
isCurrent
|
|
866
|
+
} = rowOpts;
|
|
867
|
+
let triggerCurrent = false;
|
|
868
|
+
if (isCurrent) {
|
|
869
|
+
triggerCurrent = true;
|
|
870
|
+
changeCurrentEvent(evnt, row);
|
|
871
|
+
} else if (currentRow) {
|
|
872
|
+
internalData.currentRow = null;
|
|
873
|
+
reactData.currRowFlag++;
|
|
874
|
+
}
|
|
875
|
+
dispatchEvent('row-click', {
|
|
876
|
+
row,
|
|
877
|
+
triggerCurrent
|
|
878
|
+
}, evnt);
|
|
879
|
+
};
|
|
880
|
+
const handleRowDblclickEvent = (evnt, row) => {
|
|
881
|
+
dispatchEvent('row-dblclick', {
|
|
882
|
+
row
|
|
883
|
+
}, evnt);
|
|
884
|
+
};
|
|
885
|
+
const getRowKey = row => {
|
|
886
|
+
const keyField = computeKeyField.value;
|
|
887
|
+
return getRowKeyByField(row, keyField);
|
|
888
|
+
};
|
|
889
|
+
const eqRowKey = (rowKey1, rowKey2) => {
|
|
890
|
+
return '' + rowKey1 === '' + rowKey2;
|
|
891
|
+
};
|
|
892
|
+
const eqRow = (row1, row2) => {
|
|
893
|
+
if (row1 && row2) {
|
|
894
|
+
if (row1 === row2) {
|
|
895
|
+
return true;
|
|
896
|
+
}
|
|
897
|
+
return eqRowKey(getRowId(row1), getRowId(row2));
|
|
898
|
+
}
|
|
899
|
+
return false;
|
|
900
|
+
};
|
|
901
|
+
const eqRowByKey = (row, rowKey) => {
|
|
902
|
+
return row && eqRowKey(getRowKey(row), rowKey);
|
|
903
|
+
};
|
|
904
|
+
const findRow = (list, row) => {
|
|
905
|
+
return row ? _xeUtils.default.find(list, obj => eqRow(obj, row)) : null;
|
|
906
|
+
};
|
|
907
|
+
const findRowByKey = (list, rowKey) => {
|
|
908
|
+
const keyField = computeKeyField.value;
|
|
909
|
+
return _xeUtils.default.find(list, obj => eqRowKey(getRowIdByField(obj, keyField), rowKey));
|
|
910
|
+
};
|
|
911
|
+
const findRowIndexOf = (list, row) => {
|
|
912
|
+
return row ? _xeUtils.default.findIndexOf(list, obj => eqRow(obj, row)) : -1;
|
|
913
|
+
};
|
|
914
|
+
const findRowIndexOfByKey = (list, rowKey) => {
|
|
915
|
+
const keyField = computeKeyField.value;
|
|
916
|
+
return _xeUtils.default.findIndexOf(list, obj => eqRowKey(getRowIdByField(obj, keyField), rowKey));
|
|
917
|
+
};
|
|
918
|
+
const isCheckedByRadioRowKey = rowKey => {
|
|
919
|
+
const {
|
|
920
|
+
selectRadioRow
|
|
921
|
+
} = reactData;
|
|
922
|
+
return getRowKey(selectRadioRow) === rowKey;
|
|
923
|
+
};
|
|
924
|
+
const isCheckedByRadioRow = row => {
|
|
925
|
+
return isCheckedByRadioRowKey(getRowKey(row));
|
|
926
|
+
};
|
|
927
|
+
const isCheckedByCheckboxRowKey = rowid => {
|
|
928
|
+
const {
|
|
929
|
+
updateCheckboxFlag
|
|
930
|
+
} = reactData;
|
|
931
|
+
const {
|
|
932
|
+
selectCheckboxMaps
|
|
933
|
+
} = internalData;
|
|
934
|
+
return !!(updateCheckboxFlag && selectCheckboxMaps[rowid]);
|
|
935
|
+
};
|
|
936
|
+
const isCheckedByCheckboxRow = row => {
|
|
937
|
+
return isCheckedByCheckboxRowKey(getRowKey(row));
|
|
938
|
+
};
|
|
939
|
+
const setCurrentRow = row => {
|
|
940
|
+
internalData.currentRow = row;
|
|
941
|
+
reactData.currRowFlag++;
|
|
942
|
+
return (0, _vue.nextTick)();
|
|
943
|
+
};
|
|
944
|
+
const setCurrentRowByKey = rowKey => {
|
|
945
|
+
const {
|
|
946
|
+
fullData
|
|
947
|
+
} = internalData;
|
|
948
|
+
internalData.currentRow = findRowByKey(fullData, rowKey);
|
|
949
|
+
reactData.currRowFlag++;
|
|
950
|
+
return (0, _vue.nextTick)();
|
|
951
|
+
};
|
|
952
|
+
const getCurrentRow = () => {
|
|
953
|
+
const {
|
|
954
|
+
currentRow
|
|
955
|
+
} = internalData;
|
|
956
|
+
return currentRow;
|
|
957
|
+
};
|
|
958
|
+
const getCurrentRowKey = () => {
|
|
959
|
+
const {
|
|
960
|
+
currentRow
|
|
961
|
+
} = internalData;
|
|
962
|
+
return currentRow ? getRowKey(currentRow) : null;
|
|
963
|
+
};
|
|
964
|
+
const clearCurrentRow = () => {
|
|
965
|
+
internalData.currentRow = null;
|
|
966
|
+
reactData.currRowFlag++;
|
|
967
|
+
return (0, _vue.nextTick)();
|
|
968
|
+
};
|
|
969
|
+
const setRadioRow = row => {
|
|
970
|
+
reactData.selectRadioRow = row;
|
|
971
|
+
const value = getRowKey(row);
|
|
972
|
+
emitRadioMode(value);
|
|
973
|
+
return (0, _vue.nextTick)();
|
|
974
|
+
};
|
|
975
|
+
const setRadioRowByKey = rowKey => {
|
|
976
|
+
const {
|
|
977
|
+
fullData
|
|
978
|
+
} = internalData;
|
|
979
|
+
reactData.selectRadioRow = findRowByKey(fullData, rowKey);
|
|
980
|
+
const value = rowKey;
|
|
981
|
+
emitRadioMode(value);
|
|
982
|
+
return (0, _vue.nextTick)();
|
|
983
|
+
};
|
|
984
|
+
const getRadioRow = () => {
|
|
985
|
+
const {
|
|
986
|
+
selectRadioRow
|
|
987
|
+
} = reactData;
|
|
988
|
+
return selectRadioRow;
|
|
989
|
+
};
|
|
990
|
+
const getRadioRowKey = () => {
|
|
991
|
+
const {
|
|
992
|
+
selectRadioRow
|
|
993
|
+
} = reactData;
|
|
994
|
+
return selectRadioRow ? getRowKey(selectRadioRow) : null;
|
|
995
|
+
};
|
|
996
|
+
const clearRadioRow = () => {
|
|
997
|
+
const value = null;
|
|
998
|
+
reactData.selectRadioRow = value;
|
|
999
|
+
emitRadioMode(value);
|
|
1000
|
+
return (0, _vue.nextTick)();
|
|
1001
|
+
};
|
|
1002
|
+
const setCheckboxRow = (row, checked) => {
|
|
1003
|
+
const {
|
|
1004
|
+
selectCheckboxMaps
|
|
1005
|
+
} = internalData;
|
|
1006
|
+
const keyField = computeKeyField.value;
|
|
1007
|
+
const rowList = row ? _xeUtils.default.isArray(row) ? row : [row] : [];
|
|
1008
|
+
rowList.forEach(checked ? obj => {
|
|
1009
|
+
const rowid = getRowIdByField(obj, keyField);
|
|
1010
|
+
if (!selectCheckboxMaps[rowid]) {
|
|
1011
|
+
selectCheckboxMaps[rowid] = obj;
|
|
1012
|
+
}
|
|
1013
|
+
} : obj => {
|
|
1014
|
+
const rowid = getRowIdByField(obj, keyField);
|
|
1015
|
+
if (selectCheckboxMaps[rowid]) {
|
|
1016
|
+
delete selectCheckboxMaps[rowid];
|
|
1017
|
+
}
|
|
1018
|
+
});
|
|
1019
|
+
const value = getCheckboxRowKeys();
|
|
1020
|
+
emitCheckboxMode(value);
|
|
1021
|
+
return updateCheckboxStatus();
|
|
1022
|
+
};
|
|
1023
|
+
const setCheckboxRowByKey = (rowKey, checked) => {
|
|
1024
|
+
const {
|
|
1025
|
+
selectCheckboxMaps,
|
|
1026
|
+
fullKeyMaps
|
|
1027
|
+
} = internalData;
|
|
1028
|
+
const keyField = computeKeyField.value;
|
|
1029
|
+
const rowKeys = rowKey ? _xeUtils.default.isArray(rowKey) ? rowKey : [rowKey] : [];
|
|
1030
|
+
rowKeys.forEach(checked ? key => {
|
|
1031
|
+
const row = fullKeyMaps[key || ''];
|
|
1032
|
+
if (row) {
|
|
1033
|
+
const rowid = getRowIdByField(row, keyField);
|
|
1034
|
+
if (row && !selectCheckboxMaps[rowid]) {
|
|
1035
|
+
selectCheckboxMaps[rowid] = row;
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
} : key => {
|
|
1039
|
+
const row = fullKeyMaps[key || ''];
|
|
1040
|
+
if (row) {
|
|
1041
|
+
const rowid = getRowIdByField(row, keyField);
|
|
1042
|
+
if (selectCheckboxMaps[rowid]) {
|
|
1043
|
+
delete selectCheckboxMaps[rowid];
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
});
|
|
1047
|
+
const value = getCheckboxRowKeys();
|
|
1048
|
+
emitCheckboxMode(value);
|
|
1049
|
+
return updateCheckboxStatus();
|
|
1050
|
+
};
|
|
1051
|
+
const getCheckboxRows = () => {
|
|
1052
|
+
const {
|
|
1053
|
+
updateCheckboxFlag
|
|
1054
|
+
} = reactData;
|
|
1055
|
+
const {
|
|
1056
|
+
selectCheckboxMaps
|
|
1057
|
+
} = internalData;
|
|
1058
|
+
const rowList = [];
|
|
1059
|
+
if (updateCheckboxFlag) {
|
|
1060
|
+
_xeUtils.default.each(selectCheckboxMaps, row => {
|
|
1061
|
+
if (row) {
|
|
1062
|
+
rowList.push(row);
|
|
1063
|
+
}
|
|
1064
|
+
});
|
|
1065
|
+
}
|
|
1066
|
+
return rowList;
|
|
1067
|
+
};
|
|
1068
|
+
const getCheckboxRowKeys = () => {
|
|
1069
|
+
const {
|
|
1070
|
+
updateCheckboxFlag
|
|
1071
|
+
} = reactData;
|
|
1072
|
+
const {
|
|
1073
|
+
selectCheckboxMaps
|
|
1074
|
+
} = internalData;
|
|
1075
|
+
const keyField = computeKeyField.value;
|
|
1076
|
+
const rowKeys = [];
|
|
1077
|
+
if (updateCheckboxFlag) {
|
|
1078
|
+
_xeUtils.default.each(selectCheckboxMaps, row => {
|
|
1079
|
+
if (row) {
|
|
1080
|
+
const rowKey = getRowKeyByField(row, keyField);
|
|
1081
|
+
rowKeys.push(rowKey);
|
|
1082
|
+
}
|
|
1083
|
+
});
|
|
1084
|
+
}
|
|
1085
|
+
return rowKeys;
|
|
1086
|
+
};
|
|
1087
|
+
const clearCheckboxRow = () => {
|
|
1088
|
+
internalData.selectCheckboxMaps = {};
|
|
1089
|
+
reactData.updateCheckboxFlag++;
|
|
1090
|
+
reactData.isAllChecked = false;
|
|
1091
|
+
reactData.isAllIndeterminate = false;
|
|
1092
|
+
const value = [];
|
|
1093
|
+
emitCheckboxMode(value);
|
|
1094
|
+
return (0, _vue.nextTick)();
|
|
1095
|
+
};
|
|
1096
|
+
const setAllCheckboxRow = checked => {
|
|
1097
|
+
const {
|
|
1098
|
+
fullData,
|
|
1099
|
+
selectCheckboxMaps
|
|
1100
|
+
} = internalData;
|
|
1101
|
+
const keyField = computeKeyField.value;
|
|
1102
|
+
if (checked) {
|
|
1103
|
+
const value = [];
|
|
1104
|
+
for (const row of fullData) {
|
|
1105
|
+
const rowKey = getRowKeyByField(row, keyField);
|
|
1106
|
+
const rowid = getRowIdByField(row, keyField);
|
|
1107
|
+
selectCheckboxMaps[rowid] = row;
|
|
1108
|
+
value.push(rowKey);
|
|
1109
|
+
}
|
|
1110
|
+
emitCheckboxMode(value);
|
|
1111
|
+
return updateCheckboxStatus();
|
|
1112
|
+
}
|
|
1113
|
+
return clearCheckboxRow();
|
|
1114
|
+
};
|
|
1115
|
+
const updateCheckboxStatus = () => {
|
|
1116
|
+
const {
|
|
1117
|
+
selectCheckboxMaps,
|
|
1118
|
+
fullData
|
|
1119
|
+
} = internalData;
|
|
1120
|
+
const keyField = computeKeyField.value;
|
|
1121
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
1122
|
+
const {
|
|
1123
|
+
checkMethod
|
|
1124
|
+
} = checkboxOpts;
|
|
1125
|
+
let hasChecked = false;
|
|
1126
|
+
let hasUnchecked = false;
|
|
1127
|
+
if (checkMethod) {
|
|
1128
|
+
for (const row of fullData) {
|
|
1129
|
+
if (checkMethod({
|
|
1130
|
+
row,
|
|
1131
|
+
$list: $xeList
|
|
1132
|
+
})) {
|
|
1133
|
+
const rowid = getRowIdByField(row, keyField);
|
|
1134
|
+
if (selectCheckboxMaps[rowid]) {
|
|
1135
|
+
hasChecked = true;
|
|
1136
|
+
} else {
|
|
1137
|
+
hasUnchecked = true;
|
|
1138
|
+
if (hasChecked) {
|
|
1139
|
+
break;
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
} else {
|
|
1145
|
+
for (const row of fullData) {
|
|
1146
|
+
const rowid = getRowIdByField(row, keyField);
|
|
1147
|
+
if (selectCheckboxMaps[rowid]) {
|
|
1148
|
+
hasChecked = true;
|
|
1149
|
+
} else {
|
|
1150
|
+
hasUnchecked = true;
|
|
1151
|
+
if (hasChecked) {
|
|
1152
|
+
break;
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
reactData.isAllChecked = hasChecked && !hasUnchecked;
|
|
1158
|
+
reactData.isAllIndeterminate = hasChecked && hasUnchecked;
|
|
1159
|
+
reactData.updateCheckboxFlag++;
|
|
1160
|
+
return (0, _vue.nextTick)();
|
|
1161
|
+
};
|
|
1162
|
+
const changeCheckboxAllEvent = evnt => {
|
|
1163
|
+
const {
|
|
1164
|
+
isAllChecked
|
|
1165
|
+
} = reactData;
|
|
1166
|
+
const isChecked = !isAllChecked;
|
|
1167
|
+
if (isChecked) {
|
|
1168
|
+
setAllCheckboxRow(true);
|
|
1169
|
+
} else {
|
|
1170
|
+
clearCheckboxRow();
|
|
1171
|
+
}
|
|
1172
|
+
dispatchEvent('checkbox-all', {
|
|
1173
|
+
checked: isChecked
|
|
1174
|
+
}, evnt);
|
|
1175
|
+
};
|
|
1176
|
+
const changeCheckboxEvent = (evnt, row) => {
|
|
1177
|
+
evnt.preventDefault();
|
|
1178
|
+
evnt.stopPropagation();
|
|
1179
|
+
const {
|
|
1180
|
+
selectCheckboxMaps
|
|
1181
|
+
} = internalData;
|
|
1182
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
1183
|
+
const {
|
|
1184
|
+
checkMethod
|
|
1185
|
+
} = checkboxOpts;
|
|
1186
|
+
const rowid = getRowId(row);
|
|
1187
|
+
const isDisabled = checkMethod ? !checkMethod({
|
|
1188
|
+
$list: $xeList,
|
|
1189
|
+
row
|
|
1190
|
+
}) : false;
|
|
1191
|
+
if (isDisabled) {
|
|
1192
|
+
return;
|
|
1193
|
+
}
|
|
1194
|
+
let isChecked = false;
|
|
1195
|
+
if (selectCheckboxMaps[rowid]) {
|
|
1196
|
+
delete selectCheckboxMaps[rowid];
|
|
1197
|
+
} else {
|
|
1198
|
+
isChecked = true;
|
|
1199
|
+
selectCheckboxMaps[rowid] = row;
|
|
1200
|
+
}
|
|
1201
|
+
reactData.updateCheckboxFlag++;
|
|
1202
|
+
updateCheckboxStatus();
|
|
1203
|
+
const rowids = _xeUtils.default.keys(selectCheckboxMaps);
|
|
1204
|
+
const value = rowids.map(_utils.deModelValue);
|
|
1205
|
+
emitCheckboxMode(value);
|
|
1206
|
+
dispatchEvent('checkbox-change', {
|
|
1207
|
+
row,
|
|
1208
|
+
value,
|
|
1209
|
+
checked: isChecked
|
|
1210
|
+
}, evnt);
|
|
1211
|
+
};
|
|
1212
|
+
const changeCurrentEvent = (evnt, row) => {
|
|
1213
|
+
evnt.preventDefault();
|
|
1214
|
+
const rowOpts = computeRowOpts.value;
|
|
1215
|
+
const {
|
|
1216
|
+
currentMethod
|
|
1217
|
+
} = rowOpts;
|
|
1218
|
+
let isDisabled = false;
|
|
1219
|
+
if (currentMethod) {
|
|
1220
|
+
isDisabled = !currentMethod({
|
|
1221
|
+
row
|
|
1222
|
+
});
|
|
1223
|
+
}
|
|
1224
|
+
if (isDisabled) {
|
|
1225
|
+
return;
|
|
1226
|
+
}
|
|
1227
|
+
const isChecked = true;
|
|
1228
|
+
internalData.currentRow = row;
|
|
1229
|
+
reactData.currRowFlag++;
|
|
1230
|
+
dispatchEvent('current-change', {
|
|
1231
|
+
row,
|
|
1232
|
+
checked: isChecked
|
|
1233
|
+
}, evnt);
|
|
1234
|
+
};
|
|
1235
|
+
const changeRadioEvent = (evnt, row) => {
|
|
1236
|
+
evnt.preventDefault();
|
|
1237
|
+
evnt.stopPropagation();
|
|
1238
|
+
const {
|
|
1239
|
+
selectRadioRow
|
|
1240
|
+
} = reactData;
|
|
1241
|
+
const radioOpts = computeRadioOpts.value;
|
|
1242
|
+
const {
|
|
1243
|
+
strict,
|
|
1244
|
+
checkMethod
|
|
1245
|
+
} = radioOpts;
|
|
1246
|
+
const rowKey = getRowKey(row);
|
|
1247
|
+
const isDisabled = checkMethod ? !checkMethod({
|
|
1248
|
+
$list: $xeList,
|
|
1249
|
+
row
|
|
1250
|
+
}) : false;
|
|
1251
|
+
if (isDisabled) {
|
|
1252
|
+
return;
|
|
1253
|
+
}
|
|
1254
|
+
const value = rowKey;
|
|
1255
|
+
let isChecked = true;
|
|
1256
|
+
if (strict) {
|
|
1257
|
+
if (selectRadioRow && rowKey === getRowKey(selectRadioRow)) {
|
|
1258
|
+
isChecked = false;
|
|
1259
|
+
reactData.selectRadioRow = null;
|
|
1260
|
+
} else {
|
|
1261
|
+
reactData.selectRadioRow = row;
|
|
1262
|
+
}
|
|
1263
|
+
} else {
|
|
1264
|
+
reactData.selectRadioRow = row;
|
|
1265
|
+
}
|
|
1266
|
+
emitRadioMode(value);
|
|
1267
|
+
dispatchEvent('radio-change', {
|
|
1268
|
+
row,
|
|
1269
|
+
value,
|
|
1270
|
+
checked: isChecked
|
|
1271
|
+
}, evnt);
|
|
1272
|
+
};
|
|
336
1273
|
const listMethods = {
|
|
337
1274
|
dispatchEvent,
|
|
338
1275
|
loadData,
|
|
@@ -344,37 +1281,330 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
344
1281
|
clearScroll();
|
|
345
1282
|
return loadData(datas);
|
|
346
1283
|
},
|
|
1284
|
+
getFullData() {
|
|
1285
|
+
const {
|
|
1286
|
+
fullData
|
|
1287
|
+
} = internalData;
|
|
1288
|
+
return fullData;
|
|
1289
|
+
},
|
|
347
1290
|
recalculate,
|
|
348
1291
|
scrollTo,
|
|
349
1292
|
refreshScroll,
|
|
350
|
-
clearScroll
|
|
1293
|
+
clearScroll,
|
|
1294
|
+
getRowKey,
|
|
1295
|
+
eqRowKey,
|
|
1296
|
+
eqRow,
|
|
1297
|
+
eqRowByKey,
|
|
1298
|
+
findRow,
|
|
1299
|
+
findRowByKey,
|
|
1300
|
+
findRowIndexOf,
|
|
1301
|
+
findRowIndexOfByKey,
|
|
1302
|
+
isCheckedByRadioRowKey,
|
|
1303
|
+
isCheckedByRadioRow,
|
|
1304
|
+
isCheckedByCheckboxRowKey,
|
|
1305
|
+
isCheckedByCheckboxRow,
|
|
1306
|
+
setCurrentRow,
|
|
1307
|
+
setCurrentRowByKey,
|
|
1308
|
+
getCurrentRow,
|
|
1309
|
+
getCurrentRowKey,
|
|
1310
|
+
clearCurrentRow,
|
|
1311
|
+
setRadioRow,
|
|
1312
|
+
setRadioRowByKey,
|
|
1313
|
+
getRadioRow,
|
|
1314
|
+
getRadioRowKey,
|
|
1315
|
+
clearRadioRow,
|
|
1316
|
+
setCheckboxRow,
|
|
1317
|
+
setCheckboxRowByKey,
|
|
1318
|
+
getCheckboxRows,
|
|
1319
|
+
getCheckboxRowKeys,
|
|
1320
|
+
clearCheckboxRow,
|
|
1321
|
+
setAllCheckboxRow
|
|
1322
|
+
};
|
|
1323
|
+
const listPrivateMethods = {};
|
|
1324
|
+
Object.assign($xeList, listMethods, listPrivateMethods);
|
|
1325
|
+
const renderDragTip = () => {
|
|
1326
|
+
const {
|
|
1327
|
+
dragRow,
|
|
1328
|
+
dragTipText
|
|
1329
|
+
} = reactData;
|
|
1330
|
+
const dragOpts = computeDragOpts.value;
|
|
1331
|
+
const isDrag = computeIsDrag.value;
|
|
1332
|
+
const dRow = dragRow;
|
|
1333
|
+
if (isDrag) {
|
|
1334
|
+
return (0, _vue.h)('div', {
|
|
1335
|
+
class: 'vxe-list--drag-wrapper'
|
|
1336
|
+
}, [(0, _vue.h)('div', {
|
|
1337
|
+
ref: refDragRowLineElem,
|
|
1338
|
+
class: ['vxe-list--drag-row-line', {
|
|
1339
|
+
'is--guides': dragOpts.showGuidesStatus
|
|
1340
|
+
}]
|
|
1341
|
+
}), dRow && dragOpts.showDragTip ? (0, _vue.h)('div', {
|
|
1342
|
+
ref: refDragTipElem,
|
|
1343
|
+
class: 'vxe-list--drag-sort-tip'
|
|
1344
|
+
}, [(0, _vue.h)('div', {
|
|
1345
|
+
class: 'vxe-list--drag-sort-tip-wrapper'
|
|
1346
|
+
}, [(0, _vue.h)('div', {
|
|
1347
|
+
class: 'vxe-list--drag-sort-tip-status'
|
|
1348
|
+
}, [(0, _vue.h)('span', {
|
|
1349
|
+
class: ['vxe-list--drag-sort-tip-normal-status', (0, _ui.getIcon)().LIST_DRAG_STATUS_NODE]
|
|
1350
|
+
}), (0, _vue.h)('span', {
|
|
1351
|
+
class: ['vxe-list--drag-sort-tip-disabled-status', (0, _ui.getIcon)().LIST_DRAG_DISABLED]
|
|
1352
|
+
})]), (0, _vue.h)('div', {
|
|
1353
|
+
class: 'vxe-list--drag-sort-tip-content'
|
|
1354
|
+
}, dragTipText)])]) : (0, _ui.renderEmptyElement)($xeList)]);
|
|
1355
|
+
}
|
|
1356
|
+
return (0, _ui.renderEmptyElement)($xeList);
|
|
1357
|
+
};
|
|
1358
|
+
const renderRadio = (row, rowid, isChecked) => {
|
|
1359
|
+
const {
|
|
1360
|
+
showRadio
|
|
1361
|
+
} = props;
|
|
1362
|
+
const radioOpts = computeRadioOpts.value;
|
|
1363
|
+
const {
|
|
1364
|
+
showIcon,
|
|
1365
|
+
checkMethod,
|
|
1366
|
+
visibleMethod
|
|
1367
|
+
} = radioOpts;
|
|
1368
|
+
const isVisible = !visibleMethod || visibleMethod({
|
|
1369
|
+
$list: $xeList,
|
|
1370
|
+
row
|
|
1371
|
+
});
|
|
1372
|
+
if (showRadio && showIcon && isVisible) {
|
|
1373
|
+
const isDisabled = checkMethod ? !checkMethod({
|
|
1374
|
+
$list: $xeList,
|
|
1375
|
+
row
|
|
1376
|
+
}) : false;
|
|
1377
|
+
return (0, _vue.h)('div', {
|
|
1378
|
+
key: 'ct2',
|
|
1379
|
+
class: ['vxe-list--radio-option', {
|
|
1380
|
+
'is--checked': isChecked,
|
|
1381
|
+
'is--disabled': isDisabled
|
|
1382
|
+
}],
|
|
1383
|
+
onClick(evnt) {
|
|
1384
|
+
if (!isDisabled) {
|
|
1385
|
+
changeRadioEvent(evnt, row);
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
}, [(0, _vue.h)('span', {
|
|
1389
|
+
class: ['vxe-radio--icon', isChecked ? (0, _ui.getIcon)().RADIO_CHECKED : (0, _ui.getIcon)().RADIO_UNCHECKED]
|
|
1390
|
+
})]);
|
|
1391
|
+
}
|
|
1392
|
+
return (0, _ui.renderEmptyElement)($xeList);
|
|
1393
|
+
};
|
|
1394
|
+
const renderCheckbox = (row, rowid, isChecked) => {
|
|
1395
|
+
const {
|
|
1396
|
+
showCheckbox
|
|
1397
|
+
} = props;
|
|
1398
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
1399
|
+
const {
|
|
1400
|
+
showIcon,
|
|
1401
|
+
checkMethod,
|
|
1402
|
+
visibleMethod
|
|
1403
|
+
} = checkboxOpts;
|
|
1404
|
+
const isVisible = !visibleMethod || visibleMethod({
|
|
1405
|
+
$list: $xeList,
|
|
1406
|
+
row
|
|
1407
|
+
});
|
|
1408
|
+
if (showCheckbox && showIcon && isVisible) {
|
|
1409
|
+
const isDisabled = checkMethod ? !checkMethod({
|
|
1410
|
+
$list: $xeList,
|
|
1411
|
+
row
|
|
1412
|
+
}) : false;
|
|
1413
|
+
return (0, _vue.h)('div', {
|
|
1414
|
+
key: 'ct3',
|
|
1415
|
+
class: ['vxe-list--checkbox-option', {
|
|
1416
|
+
'is--checked': isChecked,
|
|
1417
|
+
'is--disabled': isDisabled
|
|
1418
|
+
}],
|
|
1419
|
+
onClick(evnt) {
|
|
1420
|
+
if (!isDisabled) {
|
|
1421
|
+
changeCheckboxEvent(evnt, row);
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1424
|
+
}, [(0, _vue.h)('span', {
|
|
1425
|
+
class: ['vxe-checkbox--icon', isChecked ? (0, _ui.getIcon)().CHECKBOX_CHECKED : (0, _ui.getIcon)().CHECKBOX_UNCHECKED]
|
|
1426
|
+
})]);
|
|
1427
|
+
}
|
|
1428
|
+
return (0, _ui.renderEmptyElement)($xeList);
|
|
1429
|
+
};
|
|
1430
|
+
const renderRow = (row, rowIndex) => {
|
|
1431
|
+
const {
|
|
1432
|
+
showRadio,
|
|
1433
|
+
showCheckbox
|
|
1434
|
+
} = props;
|
|
1435
|
+
const {
|
|
1436
|
+
selectRadioRow,
|
|
1437
|
+
currRowFlag,
|
|
1438
|
+
updateCheckboxFlag
|
|
1439
|
+
} = reactData;
|
|
1440
|
+
const {
|
|
1441
|
+
selectCheckboxMaps,
|
|
1442
|
+
currentRow
|
|
1443
|
+
} = internalData;
|
|
1444
|
+
const contentSlot = slots.content;
|
|
1445
|
+
const dragOpts = computeDragOpts.value;
|
|
1446
|
+
const {
|
|
1447
|
+
trigger,
|
|
1448
|
+
icon,
|
|
1449
|
+
disabledMethod,
|
|
1450
|
+
visibleMethod
|
|
1451
|
+
} = dragOpts;
|
|
1452
|
+
const rowOpts = computeRowOpts.value;
|
|
1453
|
+
const {
|
|
1454
|
+
useKey,
|
|
1455
|
+
contentField,
|
|
1456
|
+
className: rowClassName,
|
|
1457
|
+
isCurrent
|
|
1458
|
+
} = rowOpts;
|
|
1459
|
+
const isDrag = computeIsDrag.value;
|
|
1460
|
+
const keyField = computeKeyField.value;
|
|
1461
|
+
const isRowFnCls = rowClassName && _xeUtils.default.isFunction(rowClassName);
|
|
1462
|
+
const hasKey = keyField || useKey || isDrag || isCurrent || showRadio || showCheckbox;
|
|
1463
|
+
const rowKey = hasKey && keyField ? getRowIdByField(row, keyField) : '';
|
|
1464
|
+
const rowid = (0, _utils.enModelValue)(rowKey);
|
|
1465
|
+
const rowParams = {
|
|
1466
|
+
row,
|
|
1467
|
+
$list: $xeList
|
|
1468
|
+
};
|
|
1469
|
+
let isRadioChecked = false;
|
|
1470
|
+
if (showRadio) {
|
|
1471
|
+
isRadioChecked = selectRadioRow && (row === selectRadioRow || eqRowByKey(selectRadioRow, rowKey));
|
|
1472
|
+
}
|
|
1473
|
+
let isCheckboxChecked = false;
|
|
1474
|
+
if (showCheckbox) {
|
|
1475
|
+
isCheckboxChecked = !!(updateCheckboxFlag && selectCheckboxMaps[rowid]);
|
|
1476
|
+
}
|
|
1477
|
+
const ctVNs = [];
|
|
1478
|
+
let isDragDisabled = false;
|
|
1479
|
+
if (isDrag && keyField && (!visibleMethod || visibleMethod(rowParams))) {
|
|
1480
|
+
const handleOns = {};
|
|
1481
|
+
if (trigger !== 'row') {
|
|
1482
|
+
isDragDisabled = !!(disabledMethod && disabledMethod(rowParams));
|
|
1483
|
+
handleOns.onMousedown = evnt => {
|
|
1484
|
+
if (!isDragDisabled) {
|
|
1485
|
+
handleRowDragMousedownEvent(evnt, rowParams);
|
|
1486
|
+
}
|
|
1487
|
+
};
|
|
1488
|
+
handleOns.onMouseup = handleRowDragMouseupEvent;
|
|
1489
|
+
}
|
|
1490
|
+
ctVNs.push((0, _vue.h)('div', {
|
|
1491
|
+
key: 'ct1',
|
|
1492
|
+
class: 'vxe-list--row-drag'
|
|
1493
|
+
}, [(0, _vue.h)('span', Object.assign({
|
|
1494
|
+
class: 'vxe-list--drag-handle'
|
|
1495
|
+
}, handleOns), [(0, _vue.h)('i', {
|
|
1496
|
+
class: icon || (0, _ui.getIcon)().LIST_DRAG
|
|
1497
|
+
})])]));
|
|
1498
|
+
}
|
|
1499
|
+
if (showRadio) {
|
|
1500
|
+
ctVNs.push(renderRadio(row, rowid, isRadioChecked));
|
|
1501
|
+
}
|
|
1502
|
+
if (showCheckbox) {
|
|
1503
|
+
ctVNs.push(renderCheckbox(row, rowid, isCheckboxChecked));
|
|
1504
|
+
}
|
|
1505
|
+
ctVNs.push((0, _vue.h)('div', {
|
|
1506
|
+
key: 'ct5',
|
|
1507
|
+
class: 'vxe-list--row-content'
|
|
1508
|
+
}, contentSlot ? contentSlot(rowParams) : contentField ? (0, _utils.getText)(row[contentField]) : ''));
|
|
1509
|
+
const rowOns = {
|
|
1510
|
+
onMousedown(evnt) {
|
|
1511
|
+
handleRowMousedownEvent(evnt, row);
|
|
1512
|
+
},
|
|
1513
|
+
onMouseup: handleRowDragMouseupEvent,
|
|
1514
|
+
onClick(evnt) {
|
|
1515
|
+
handleRowClickEvent(evnt, row);
|
|
1516
|
+
},
|
|
1517
|
+
onDblclick(evnt) {
|
|
1518
|
+
handleRowDblclickEvent(evnt, row);
|
|
1519
|
+
}
|
|
1520
|
+
};
|
|
1521
|
+
// 拖拽行事件
|
|
1522
|
+
if (isDrag) {
|
|
1523
|
+
rowOns.onDragstart = handleRowDragDragstartEvent;
|
|
1524
|
+
rowOns.onDragend = handleRowDragDragendEvent;
|
|
1525
|
+
rowOns.onDragover = handleRowDragDragoverEvent;
|
|
1526
|
+
}
|
|
1527
|
+
return (0, _vue.h)('div', Object.assign({
|
|
1528
|
+
key: hasKey && keyField ? rowid : rowIndex,
|
|
1529
|
+
class: ['vxe-list--row', isRowFnCls ? rowClassName(rowParams) : rowClassName || '', {
|
|
1530
|
+
'is--drag-disabled': isDragDisabled,
|
|
1531
|
+
'is--current': currRowFlag && currentRow && eqRowByKey(currentRow, rowKey),
|
|
1532
|
+
'is-radio--checked': isRadioChecked,
|
|
1533
|
+
'is-checkbox--checked': isCheckboxChecked
|
|
1534
|
+
}],
|
|
1535
|
+
rowid: hasKey && keyField ? rowid : undefined
|
|
1536
|
+
}, rowOns), ctVNs);
|
|
351
1537
|
};
|
|
352
|
-
Object.assign($xeList, listMethods);
|
|
353
1538
|
const renderVN = () => {
|
|
354
1539
|
const {
|
|
1540
|
+
showCheckbox,
|
|
355
1541
|
className,
|
|
356
1542
|
loading
|
|
357
1543
|
} = props;
|
|
358
1544
|
const {
|
|
359
1545
|
bodyHeight,
|
|
360
1546
|
topSpaceHeight,
|
|
361
|
-
|
|
1547
|
+
rowList,
|
|
1548
|
+
isAllChecked,
|
|
1549
|
+
isAllIndeterminate
|
|
362
1550
|
} = reactData;
|
|
363
1551
|
const defaultSlot = slots.default;
|
|
1552
|
+
const headerSlot = slots.header;
|
|
1553
|
+
const footerSlot = slots.footer;
|
|
364
1554
|
const vSize = computeSize.value;
|
|
365
|
-
const
|
|
1555
|
+
const wrapperStyles = computeWrapperStyles.value;
|
|
1556
|
+
const virtualStyles = computeVirtualStyles.value;
|
|
1557
|
+
const radioOpts = computeRadioOpts.value;
|
|
1558
|
+
const checkboxOpts = computeCheckboxOpts.value;
|
|
1559
|
+
const {
|
|
1560
|
+
showHeader,
|
|
1561
|
+
headerTitle
|
|
1562
|
+
} = checkboxOpts;
|
|
1563
|
+
const dragOpts = computeDragOpts.value;
|
|
1564
|
+
const {
|
|
1565
|
+
trigger
|
|
1566
|
+
} = dragOpts;
|
|
1567
|
+
const rowOpts = computeRowOpts.value;
|
|
1568
|
+
const {
|
|
1569
|
+
isHover,
|
|
1570
|
+
padding
|
|
1571
|
+
} = rowOpts;
|
|
1572
|
+
const isDrag = computeIsDrag.value;
|
|
1573
|
+
const showDefChekboxHead = showCheckbox && showHeader !== false;
|
|
366
1574
|
return (0, _vue.h)('div', {
|
|
367
1575
|
ref: refElem,
|
|
368
1576
|
class: ['vxe-list', className ? _xeUtils.default.isFunction(className) ? className({
|
|
369
1577
|
$list: $xeList
|
|
370
1578
|
}) : className : '', {
|
|
371
1579
|
[`size--${vSize}`]: vSize,
|
|
1580
|
+
'is--drag': isDrag,
|
|
372
1581
|
'is--loading': loading
|
|
373
|
-
}]
|
|
1582
|
+
}],
|
|
1583
|
+
style: wrapperStyles
|
|
1584
|
+
}, [headerSlot || showDefChekboxHead ? (0, _vue.h)('div', {
|
|
1585
|
+
ref: refHeaderElem,
|
|
1586
|
+
class: 'vxe-list--header-wrapper'
|
|
1587
|
+
}, [showDefChekboxHead ? (0, _vue.h)('div', {
|
|
1588
|
+
class: 'vxe-list--header-left'
|
|
374
1589
|
}, [(0, _vue.h)('div', {
|
|
1590
|
+
class: ['vxe-list--checkbox-header', {
|
|
1591
|
+
'is--checked': isAllChecked,
|
|
1592
|
+
'is--indeterminate': isAllIndeterminate
|
|
1593
|
+
}],
|
|
1594
|
+
onClick: changeCheckboxAllEvent
|
|
1595
|
+
}, [(0, _vue.h)('span', {
|
|
1596
|
+
class: ['vxe-checkbox--icon', isAllChecked ? (0, _ui.getIcon)().CHECKBOX_CHECKED : isAllIndeterminate ? (0, _ui.getIcon)().CHECKBOX_INDETERMINATE : (0, _ui.getIcon)().CHECKBOX_UNCHECKED]
|
|
1597
|
+
}), (0, _vue.h)('span', {
|
|
1598
|
+
class: 'vxe-checkbox--label'
|
|
1599
|
+
}, _xeUtils.default.eqNull(headerTitle) ? (0, _ui.getI18n)('vxe.list.allChecked') : (0, _utils.getText)(headerTitle))])]) : (0, _ui.renderEmptyElement)($xeList), headerSlot ? (0, _vue.h)('div', {
|
|
1600
|
+
class: 'vxe-list--header-content'
|
|
1601
|
+
}, headerSlot({
|
|
1602
|
+
items: rowList,
|
|
1603
|
+
$list: $xeList
|
|
1604
|
+
})) : (0, _ui.renderEmptyElement)($xeList)]) : (0, _ui.renderEmptyElement)($xeList), (0, _vue.h)('div', {
|
|
375
1605
|
ref: refVirtualWrapper,
|
|
376
1606
|
class: 'vxe-list--virtual-wrapper',
|
|
377
|
-
style:
|
|
1607
|
+
style: virtualStyles,
|
|
378
1608
|
onScroll: scrollEvent
|
|
379
1609
|
}, [(0, _vue.h)('div', {
|
|
380
1610
|
class: 'vxe-list--y-space',
|
|
@@ -383,14 +1613,30 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
383
1613
|
}
|
|
384
1614
|
}), (0, _vue.h)('div', {
|
|
385
1615
|
ref: refVirtualBody,
|
|
386
|
-
class: 'vxe-list--body',
|
|
1616
|
+
class: ['vxe-list--body', {
|
|
1617
|
+
'trigger--row': trigger === 'row',
|
|
1618
|
+
'checkbox--highlight': checkboxOpts.highlight,
|
|
1619
|
+
'radio--highlight': radioOpts.highlight,
|
|
1620
|
+
'row--hover': isHover,
|
|
1621
|
+
'is--padding': padding
|
|
1622
|
+
}],
|
|
387
1623
|
style: {
|
|
388
1624
|
marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
|
|
389
1625
|
}
|
|
390
1626
|
}, defaultSlot ? defaultSlot({
|
|
391
|
-
items,
|
|
1627
|
+
items: rowList,
|
|
1628
|
+
$list: $xeList
|
|
1629
|
+
}) : rowList.map((row, i) => renderRow(row, i)))]), footerSlot ? (0, _vue.h)('div', {
|
|
1630
|
+
ref: refFooterElem,
|
|
1631
|
+
class: 'vxe-list--footer-wrapper'
|
|
1632
|
+
}, footerSlot({
|
|
1633
|
+
items: rowList,
|
|
392
1634
|
$list: $xeList
|
|
393
|
-
}) :
|
|
1635
|
+
})) : (0, _ui.renderEmptyElement)($xeList),
|
|
1636
|
+
/**
|
|
1637
|
+
* 拖拽提示
|
|
1638
|
+
*/
|
|
1639
|
+
renderDragTip(),
|
|
394
1640
|
/**
|
|
395
1641
|
* 加载中
|
|
396
1642
|
*/
|
|
@@ -409,17 +1655,36 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
409
1655
|
(0, _vue.watch)(dataFlag, () => {
|
|
410
1656
|
loadData(props.data || []);
|
|
411
1657
|
});
|
|
1658
|
+
const reFlag = (0, _vue.ref)(0);
|
|
412
1659
|
(0, _vue.watch)(() => props.height, () => {
|
|
413
|
-
|
|
1660
|
+
reFlag.value++;
|
|
414
1661
|
});
|
|
415
1662
|
(0, _vue.watch)(() => props.maxHeight, () => {
|
|
416
|
-
|
|
1663
|
+
reFlag.value++;
|
|
1664
|
+
});
|
|
1665
|
+
(0, _vue.watch)(() => props.syncResize, () => {
|
|
1666
|
+
reFlag.value++;
|
|
417
1667
|
});
|
|
418
|
-
(0, _vue.watch)(() =>
|
|
419
|
-
|
|
1668
|
+
(0, _vue.watch)(computeRowHeight, () => {
|
|
1669
|
+
reFlag.value++;
|
|
1670
|
+
});
|
|
1671
|
+
(0, _vue.watch)(reFlag, () => {
|
|
1672
|
+
(0, _vue.nextTick)(() => {
|
|
420
1673
|
recalculate();
|
|
421
|
-
|
|
422
|
-
|
|
1674
|
+
});
|
|
1675
|
+
});
|
|
1676
|
+
(0, _vue.watch)(() => props.checkRowKey, () => {
|
|
1677
|
+
updateRadioModeValue();
|
|
1678
|
+
});
|
|
1679
|
+
const checkKeyFlag = (0, _vue.ref)(0);
|
|
1680
|
+
(0, _vue.watch)(() => props.checkRowKeys ? props.checkRowKeys.length : -1, () => {
|
|
1681
|
+
checkKeyFlag.value++;
|
|
1682
|
+
});
|
|
1683
|
+
(0, _vue.watch)(() => props.checkRowKeys, () => {
|
|
1684
|
+
checkKeyFlag.value++;
|
|
1685
|
+
});
|
|
1686
|
+
(0, _vue.watch)(checkKeyFlag, () => {
|
|
1687
|
+
updateCheckboxModeValue();
|
|
423
1688
|
});
|
|
424
1689
|
(0, _vue.onActivated)(() => {
|
|
425
1690
|
recalculate().then(() => refreshScroll());
|
|
@@ -428,7 +1693,30 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
428
1693
|
loadData(props.data || []);
|
|
429
1694
|
});
|
|
430
1695
|
(0, _vue.onMounted)(() => {
|
|
431
|
-
|
|
1696
|
+
const {
|
|
1697
|
+
showRadio,
|
|
1698
|
+
showCheckbox
|
|
1699
|
+
} = props;
|
|
1700
|
+
const rowOpts = computeRowOpts.value;
|
|
1701
|
+
const {
|
|
1702
|
+
useKey
|
|
1703
|
+
} = rowOpts;
|
|
1704
|
+
const isDrag = computeIsDrag.value;
|
|
1705
|
+
const keyField = computeKeyField.value;
|
|
1706
|
+
if (!keyField) {
|
|
1707
|
+
if (showRadio) {
|
|
1708
|
+
errLog('vxe.error.reqSupportProp', ['show-radio', 'row-config.keyField']);
|
|
1709
|
+
}
|
|
1710
|
+
if (showCheckbox) {
|
|
1711
|
+
errLog('vxe.error.reqSupportProp', ['show-checkbox', 'row-config.keyField']);
|
|
1712
|
+
}
|
|
1713
|
+
if (isDrag) {
|
|
1714
|
+
errLog('vxe.error.reqSupportProp', ['drag-config', 'row-config.keyField']);
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
if (useKey && !keyField) {
|
|
1718
|
+
errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField']);
|
|
1719
|
+
}
|
|
432
1720
|
if (props.autoResize) {
|
|
433
1721
|
const el = refElem.value;
|
|
434
1722
|
const resizeObserver = _ui.globalResize.create(() => recalculate());
|
|
@@ -438,6 +1726,7 @@ var _default = exports.default = (0, _comp.defineVxeComponent)({
|
|
|
438
1726
|
}
|
|
439
1727
|
internalData.resizeObserver = resizeObserver;
|
|
440
1728
|
}
|
|
1729
|
+
recalculate();
|
|
441
1730
|
_ui.globalEvents.on($xeList, 'resize', recalculate);
|
|
442
1731
|
});
|
|
443
1732
|
(0, _vue.onBeforeUnmount)(() => {
|