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