amis-core 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Root.js +94 -0
- package/dist/RootRenderer.js +288 -0
- package/dist/SchemaRenderer.js +323 -0
- package/dist/Scoped.js +252 -0
- package/dist/WithRootStore.js +44 -0
- package/dist/WithStore.js +179 -0
- package/dist/__tests__/compat.test.d.ts +1 -0
- package/dist/__tests__/factory.test.d.ts +1 -0
- package/dist/__tests__/filter.test.d.ts +1 -0
- package/dist/__tests__/helper.d.ts +13 -0
- package/dist/__tests__/tokenize.test.d.ts +1 -0
- package/dist/actions/Action.js +119 -0
- package/dist/actions/AjaxAction.js +96 -0
- package/dist/actions/BreakAction.js +35 -0
- package/dist/actions/BroadcastAction.js +49 -0
- package/dist/actions/CmptAction.js +60 -0
- package/dist/actions/ContinueAction.js +35 -0
- package/dist/actions/CopyAction.js +43 -0
- package/dist/actions/CustomAction.js +49 -0
- package/dist/actions/DialogAction.js +104 -0
- package/dist/actions/DrawerAction.js +66 -0
- package/dist/actions/EmailAction.js +48 -0
- package/dist/actions/LinkAction.js +52 -0
- package/dist/actions/LoopAction.js +107 -0
- package/dist/actions/PageAction.js +80 -0
- package/dist/actions/ParallelAction.js +40 -0
- package/dist/actions/SwitchAction.js +52 -0
- package/dist/actions/ToastAction.js +35 -0
- package/dist/components/LazyComponent.js +99 -0
- package/dist/env.js +20 -0
- package/dist/envOverwrite.js +43 -0
- package/dist/factory.js +308 -0
- package/dist/index.js +218 -0
- package/dist/index2.js +255 -0
- package/dist/locale.js +114 -0
- package/dist/renderers/Form.js +1162 -0
- package/dist/renderers/Item.js +636 -0
- package/dist/renderers/Options.js +881 -0
- package/dist/renderers/Placeholder.js +31 -0
- package/dist/renderers/builtin.js +27 -0
- package/dist/renderers/wrapControl.js +507 -0
- package/dist/src/Root.d.ts +37 -0
- package/dist/src/RootRenderer.d.ts +27 -0
- package/dist/src/SchemaRenderer.d.ts +37 -0
- package/dist/src/Scoped.d.ts +38 -0
- package/dist/src/WithRootStore.d.ts +737 -0
- package/dist/src/WithStore.d.ts +5 -0
- package/dist/src/actions/Action.d.ts +38 -0
- package/dist/src/actions/AjaxAction.d.ts +25 -0
- package/dist/src/actions/BreakAction.d.ts +15 -0
- package/dist/src/actions/BroadcastAction.d.ts +16 -0
- package/dist/src/actions/CmptAction.d.ts +20 -0
- package/dist/src/actions/ContinueAction.d.ts +15 -0
- package/dist/src/actions/CopyAction.d.ts +20 -0
- package/dist/src/actions/CustomAction.d.ts +17 -0
- package/dist/src/actions/Decorators.d.ts +25 -0
- package/dist/src/actions/DialogAction.d.ts +57 -0
- package/dist/src/actions/DrawerAction.d.ts +30 -0
- package/dist/src/actions/EmailAction.d.ts +23 -0
- package/dist/src/actions/LinkAction.d.ts +24 -0
- package/dist/src/actions/LoopAction.d.ts +19 -0
- package/dist/src/actions/PageAction.d.ts +39 -0
- package/dist/src/actions/ParallelAction.d.ts +8 -0
- package/dist/src/actions/SwitchAction.d.ts +11 -0
- package/dist/src/actions/ToastAction.d.ts +19 -0
- package/dist/src/actions/index.d.ts +21 -0
- package/dist/src/components/LazyComponent.d.ts +32 -0
- package/dist/src/env.d.ts +172 -0
- package/dist/src/envOverwrite.d.ts +4 -0
- package/dist/src/factory.d.ts +78 -0
- package/dist/src/index.d.ts +25 -0
- package/dist/src/locale.d.ts +82 -0
- package/dist/src/renderers/Form.d.ts +352 -0
- package/dist/src/renderers/Item.d.ts +795 -0
- package/dist/src/renderers/Options.d.ts +150 -0
- package/dist/src/renderers/Placeholder.d.ts +6 -0
- package/dist/src/renderers/builtin.d.ts +1 -0
- package/dist/src/renderers/wrapControl.d.ts +446 -0
- package/dist/src/schema.d.ts +369 -0
- package/dist/src/store/app.d.ts +89 -0
- package/dist/src/store/combo.d.ts +8504 -0
- package/dist/src/store/crud.d.ts +124 -0
- package/dist/src/store/form.d.ts +3394 -0
- package/dist/src/store/formItem.d.ts +130 -0
- package/dist/src/store/iRenderer.d.ts +46 -0
- package/dist/src/store/index.d.ts +105 -0
- package/dist/src/store/list.d.ts +270 -0
- package/dist/src/store/manager.d.ts +115 -0
- package/dist/src/store/modal.d.ts +84 -0
- package/dist/src/store/node.d.ts +22 -0
- package/dist/src/store/pagination.d.ts +58 -0
- package/dist/src/store/root.d.ts +79 -0
- package/dist/src/store/service.d.ts +71 -0
- package/dist/src/store/table-v2.d.ts +309 -0
- package/dist/src/store/table.d.ts +8334 -0
- package/dist/src/theme.d.ts +83 -0
- package/dist/src/types.d.ts +217 -0
- package/dist/src/utils/Animation.d.ts +22 -0
- package/dist/src/utils/ColorScale.d.ts +19 -0
- package/dist/src/utils/DataSchema.d.ts +25 -0
- package/dist/src/utils/DataScope.d.ts +23 -0
- package/dist/src/utils/RootClose.d.ts +4 -0
- package/dist/src/utils/SimpleMap.d.ts +8 -0
- package/dist/src/utils/api.d.ts +27 -0
- package/dist/src/utils/attachmentAdpator.d.ts +7 -0
- package/dist/src/utils/autobind.d.ts +7 -0
- package/dist/src/utils/columnsSplit.d.ts +1 -0
- package/dist/src/utils/dataMapping.d.ts +3 -0
- package/dist/src/utils/date.d.ts +4 -0
- package/dist/src/utils/debug.d.ts +26 -0
- package/dist/src/utils/dom.d.ts +13 -0
- package/dist/src/utils/errors.d.ts +6 -0
- package/dist/src/utils/escapeHtml.d.ts +1 -0
- package/dist/src/utils/filter-schema.d.ts +12 -0
- package/dist/src/utils/filter.d.ts +1 -0
- package/dist/src/utils/formatDuration.d.ts +1 -0
- package/dist/src/utils/formula.d.ts +16 -0
- package/dist/src/utils/getVariable.d.ts +3 -0
- package/dist/src/utils/grammar.d.ts +4 -0
- package/dist/src/utils/handleAction.d.ts +6 -0
- package/dist/src/utils/helper.d.ts +286 -0
- package/dist/src/utils/icon.d.ts +12 -0
- package/dist/src/utils/image.d.ts +17 -0
- package/dist/src/utils/index.d.ts +12 -0
- package/dist/src/utils/isPureVariable.d.ts +1 -0
- package/dist/src/utils/json-schema-2-amis-schema.d.ts +6 -0
- package/dist/src/utils/keyToPath.d.ts +6 -0
- package/dist/src/utils/makeSorter.d.ts +1 -0
- package/dist/src/utils/markdown.d.ts +5 -0
- package/dist/src/utils/normalizeLink.d.ts +1 -0
- package/dist/src/utils/normalizeOptions.d.ts +7 -0
- package/dist/src/utils/object.d.ts +15 -0
- package/dist/src/utils/offset.d.ts +14 -0
- package/dist/src/utils/offsetParent.d.ts +4 -0
- package/dist/src/utils/optionValueCompare.d.ts +3 -0
- package/dist/src/utils/position.d.ts +15 -0
- package/dist/src/utils/prettyBytes.d.ts +1 -0
- package/dist/src/utils/renderer-event.d.ts +44 -0
- package/dist/src/utils/replaceText.d.ts +6 -0
- package/dist/src/utils/resize-sensor.d.ts +6 -0
- package/dist/src/utils/resolveVariable.d.ts +1 -0
- package/dist/src/utils/resolveVariableAndFilter.d.ts +1 -0
- package/dist/src/utils/scrollPosition.d.ts +6 -0
- package/dist/src/utils/string2regExp.d.ts +1 -0
- package/dist/src/utils/stripNumber.d.ts +1 -0
- package/dist/src/utils/style.d.ts +10 -0
- package/dist/src/utils/tokenize.d.ts +1 -0
- package/dist/src/utils/tpl-builtin.d.ts +18 -0
- package/dist/src/utils/tpl-lodash.d.ts +4 -0
- package/dist/src/utils/tpl.d.ts +11 -0
- package/dist/src/utils/validations.d.ts +39 -0
- package/dist/store/app.js +190 -0
- package/dist/store/combo.js +154 -0
- package/dist/store/crud.js +413 -0
- package/dist/store/form.js +579 -0
- package/dist/store/formItem.js +846 -0
- package/dist/store/iRenderer.js +189 -0
- package/dist/store/index.js +103 -0
- package/dist/store/list.js +248 -0
- package/dist/store/manager.js +56 -0
- package/dist/store/modal.js +54 -0
- package/dist/store/node.js +93 -0
- package/dist/store/pagination.js +60 -0
- package/dist/store/root.js +45 -0
- package/dist/store/service.js +415 -0
- package/dist/store/table-v2.js +471 -0
- package/dist/store/table.js +1105 -0
- package/dist/theme.js +93 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/Animation.js +290 -0
- package/dist/utils/DataSchema.js +120 -0
- package/dist/utils/DataScope.js +151 -0
- package/dist/utils/SimpleMap.js +46 -0
- package/dist/utils/api.js +555 -0
- package/dist/utils/autobind.js +94 -0
- package/dist/utils/dataMapping.js +136 -0
- package/dist/utils/date.js +90 -0
- package/dist/utils/debug.js +343 -0
- package/dist/utils/errors.js +23 -0
- package/dist/utils/escapeHtml.js +24 -0
- package/dist/utils/filter-schema.js +75 -0
- package/dist/utils/filter.js +481 -0
- package/dist/utils/formatDuration.js +27 -0
- package/dist/utils/formula.js +165 -0
- package/dist/utils/getVariable.js +29 -0
- package/dist/utils/grammar.js +54 -0
- package/dist/utils/helper.js +1283 -0
- package/dist/utils/isPureVariable.js +16 -0
- package/dist/utils/keyToPath.js +34 -0
- package/dist/utils/makeSorter.js +30 -0
- package/dist/utils/normalizeLink.js +47 -0
- package/dist/utils/normalizeOptions.js +92 -0
- package/dist/utils/object.js +156 -0
- package/dist/utils/offset.js +36 -0
- package/dist/utils/offsetParent.js +27 -0
- package/dist/utils/optionValueCompare.js +25 -0
- package/dist/utils/position.js +50 -0
- package/dist/utils/prettyBytes.js +28 -0
- package/dist/utils/renderer-event.js +131 -0
- package/dist/utils/replaceText.js +35 -0
- package/dist/utils/resize-sensor.js +177 -0
- package/dist/utils/resolveVariable.js +39 -0
- package/dist/utils/resolveVariableAndFilter.js +37 -0
- package/dist/utils/string2regExp.js +18 -0
- package/dist/utils/stripNumber.js +20 -0
- package/dist/utils/tokenize.js +33 -0
- package/dist/utils/tpl-builtin.js +71 -0
- package/dist/utils/tpl-lodash.js +71 -0
- package/dist/utils/tpl.js +140 -0
- package/dist/utils/validations.js +377 -0
- package/package.json +121 -0
|
@@ -0,0 +1,1105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* amis-core v1.0.0-beta.0
|
|
3
|
+
* Copyright 2018-2022 fex
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
'use strict';
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
9
|
+
|
|
10
|
+
var tslib = require('tslib');
|
|
11
|
+
var mobxStateTree = require('mobx-state-tree');
|
|
12
|
+
var iRenderer = require('./iRenderer.js');
|
|
13
|
+
require('amis-formula');
|
|
14
|
+
require('moment');
|
|
15
|
+
var object = require('../utils/object.js');
|
|
16
|
+
var resolveVariable = require('../utils/resolveVariable.js');
|
|
17
|
+
var resolveVariableAndFilter = require('../utils/resolveVariableAndFilter.js');
|
|
18
|
+
require('lodash/isPlainObject');
|
|
19
|
+
require('../utils/filter.js');
|
|
20
|
+
var isEqual = require('lodash/isEqual');
|
|
21
|
+
var find = require('lodash/find');
|
|
22
|
+
var sortBy = require('lodash/sortBy');
|
|
23
|
+
var helper = require('../utils/helper.js');
|
|
24
|
+
var tpl = require('../utils/tpl.js');
|
|
25
|
+
var manager = require('./manager.js');
|
|
26
|
+
|
|
27
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
28
|
+
|
|
29
|
+
var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
|
|
30
|
+
var find__default = /*#__PURE__*/_interopDefaultLegacy(find);
|
|
31
|
+
var sortBy__default = /*#__PURE__*/_interopDefaultLegacy(sortBy);
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* 内部列的数量 '__checkme' | '__dragme' | '__expandme'
|
|
35
|
+
*/
|
|
36
|
+
var PARTITION_INDEX = 3;
|
|
37
|
+
var Column = mobxStateTree.types
|
|
38
|
+
.model('Column', {
|
|
39
|
+
label: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
|
|
40
|
+
type: mobxStateTree.types.optional(mobxStateTree.types.string, 'plain'),
|
|
41
|
+
name: mobxStateTree.types.maybe(mobxStateTree.types.string),
|
|
42
|
+
value: mobxStateTree.types.frozen(),
|
|
43
|
+
groupName: '',
|
|
44
|
+
toggled: false,
|
|
45
|
+
toggable: true,
|
|
46
|
+
expandable: false,
|
|
47
|
+
checkdisable: false,
|
|
48
|
+
isPrimary: false,
|
|
49
|
+
searchable: mobxStateTree.types.maybe(mobxStateTree.types.frozen()),
|
|
50
|
+
enableSearch: true,
|
|
51
|
+
sortable: false,
|
|
52
|
+
filterable: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
|
|
53
|
+
fixed: '',
|
|
54
|
+
index: 0,
|
|
55
|
+
rawIndex: 0,
|
|
56
|
+
breakpoint: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
|
|
57
|
+
pristine: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
|
|
58
|
+
remark: mobxStateTree.types.optional(mobxStateTree.types.frozen(), undefined),
|
|
59
|
+
className: mobxStateTree.types.union(mobxStateTree.types.string, mobxStateTree.types.frozen())
|
|
60
|
+
})
|
|
61
|
+
.actions(function (self) { return ({
|
|
62
|
+
toggleToggle: function () {
|
|
63
|
+
self.toggled = !self.toggled;
|
|
64
|
+
var table = mobxStateTree.getParent(self, 2);
|
|
65
|
+
if (!table.activeToggaleColumns.length) {
|
|
66
|
+
self.toggled = true;
|
|
67
|
+
}
|
|
68
|
+
table.persistSaveToggledColumns();
|
|
69
|
+
},
|
|
70
|
+
setToggled: function (value) {
|
|
71
|
+
self.toggled = value;
|
|
72
|
+
},
|
|
73
|
+
setEnableSearch: function (value) {
|
|
74
|
+
self.enableSearch = value;
|
|
75
|
+
var table = mobxStateTree.getParent(self, 2);
|
|
76
|
+
table.persistSaveToggledColumns();
|
|
77
|
+
}
|
|
78
|
+
}); });
|
|
79
|
+
var Row = mobxStateTree.types
|
|
80
|
+
.model('Row', {
|
|
81
|
+
storeType: 'Row',
|
|
82
|
+
id: mobxStateTree.types.identifier,
|
|
83
|
+
parentId: '',
|
|
84
|
+
key: mobxStateTree.types.string,
|
|
85
|
+
pristine: mobxStateTree.types.frozen({}),
|
|
86
|
+
data: mobxStateTree.types.frozen({}),
|
|
87
|
+
rowSpans: mobxStateTree.types.frozen({}),
|
|
88
|
+
index: mobxStateTree.types.number,
|
|
89
|
+
newIndex: mobxStateTree.types.number,
|
|
90
|
+
path: '',
|
|
91
|
+
expandable: false,
|
|
92
|
+
checkdisable: false,
|
|
93
|
+
isHover: false,
|
|
94
|
+
children: mobxStateTree.types.optional(mobxStateTree.types.array(mobxStateTree.types.late(function () { return Row; })), []),
|
|
95
|
+
depth: mobxStateTree.types.number // 当前children位于第几层,便于使用getParent获取最顶层TableStore
|
|
96
|
+
})
|
|
97
|
+
.views(function (self) { return ({
|
|
98
|
+
get checked() {
|
|
99
|
+
return mobxStateTree.getParent(self, self.depth * 2).isSelected(self);
|
|
100
|
+
},
|
|
101
|
+
get modified() {
|
|
102
|
+
if (!self.data) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
return Object.keys(self.data).some(function (key) { return !isEqual__default["default"](self.data[key], self.pristine[key]); });
|
|
106
|
+
},
|
|
107
|
+
getDataWithModifiedChilden: function () {
|
|
108
|
+
var data = tslib.__assign({}, self.data);
|
|
109
|
+
if (data.children && self.children) {
|
|
110
|
+
data.children = self.children.map(function (item) {
|
|
111
|
+
return item.getDataWithModifiedChilden();
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
return data;
|
|
115
|
+
},
|
|
116
|
+
get collapsed() {
|
|
117
|
+
var table = mobxStateTree.getParent(self, self.depth * 2);
|
|
118
|
+
if (table.dragging) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
var from = self;
|
|
122
|
+
while (from && from !== table) {
|
|
123
|
+
if (!table.isExpanded(from)) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
from = mobxStateTree.getParent(from, 2);
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
129
|
+
},
|
|
130
|
+
get expanded() {
|
|
131
|
+
return !this.collapsed;
|
|
132
|
+
},
|
|
133
|
+
get moved() {
|
|
134
|
+
return self.index !== self.newIndex;
|
|
135
|
+
},
|
|
136
|
+
get locals() {
|
|
137
|
+
var children = null;
|
|
138
|
+
if (self.children.length) {
|
|
139
|
+
children = self.children.map(function (item) { return item.locals; });
|
|
140
|
+
}
|
|
141
|
+
var parent = mobxStateTree.getParent(self, 2);
|
|
142
|
+
return object.createObject(object.extendObject(mobxStateTree.getParent(self, self.depth * 2).data, {
|
|
143
|
+
index: self.index,
|
|
144
|
+
// todo 以后再支持多层,目前先一层
|
|
145
|
+
parent: parent.storeType === Row.name ? parent.data : undefined
|
|
146
|
+
}), children
|
|
147
|
+
? tslib.__assign(tslib.__assign({}, self.data), { children: children }) : self.data);
|
|
148
|
+
},
|
|
149
|
+
get checkable() {
|
|
150
|
+
var table = mobxStateTree.getParent(self, self.depth * 2);
|
|
151
|
+
return table && table.itemCheckableOn
|
|
152
|
+
? tpl.evalExpression(table.itemCheckableOn, self.locals)
|
|
153
|
+
: true;
|
|
154
|
+
},
|
|
155
|
+
get draggable() {
|
|
156
|
+
var table = mobxStateTree.getParent(self, self.depth * 2);
|
|
157
|
+
return table && table.itemDraggableOn
|
|
158
|
+
? tpl.evalExpression(table.itemDraggableOn, self.locals)
|
|
159
|
+
: true;
|
|
160
|
+
}
|
|
161
|
+
}); })
|
|
162
|
+
.actions(function (self) { return ({
|
|
163
|
+
toggle: function () {
|
|
164
|
+
mobxStateTree.getParent(self, self.depth * 2).toggle(self);
|
|
165
|
+
},
|
|
166
|
+
toggleExpanded: function () {
|
|
167
|
+
mobxStateTree.getParent(self, self.depth * 2).toggleExpanded(self);
|
|
168
|
+
},
|
|
169
|
+
change: function (values, savePristine) {
|
|
170
|
+
self.data = helper.immutableExtends(self.data, values);
|
|
171
|
+
savePristine && (self.pristine = self.data);
|
|
172
|
+
},
|
|
173
|
+
reset: function () {
|
|
174
|
+
self.newIndex = self.index;
|
|
175
|
+
self.data = self.pristine;
|
|
176
|
+
},
|
|
177
|
+
setCheckdisable: function (bool) {
|
|
178
|
+
self.checkdisable = bool;
|
|
179
|
+
},
|
|
180
|
+
setIsHover: function (value) {
|
|
181
|
+
self.isHover = value;
|
|
182
|
+
},
|
|
183
|
+
replaceWith: function (data) {
|
|
184
|
+
Object.keys(data).forEach(function (key) {
|
|
185
|
+
if (key !== 'id') {
|
|
186
|
+
self[key] = data[key];
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
if (Array.isArray(data.children)) {
|
|
190
|
+
var arr = data.children;
|
|
191
|
+
var pool = arr.concat();
|
|
192
|
+
// 把多的删了先
|
|
193
|
+
if (self.children.length > arr.length) {
|
|
194
|
+
self.children.splice(arr.length, self.children.length - arr.length);
|
|
195
|
+
}
|
|
196
|
+
var index = 0;
|
|
197
|
+
var len = self.children.length;
|
|
198
|
+
while (pool.length) {
|
|
199
|
+
// 因为父级id未更新,所以需要将子级的parentId正确指向父级id
|
|
200
|
+
var item = tslib.__assign(tslib.__assign({}, pool.shift()), { parentId: self.id });
|
|
201
|
+
if (index < len) {
|
|
202
|
+
self.children[index].replaceWith(item);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
var row = Row.create(item);
|
|
206
|
+
self.children.push(row);
|
|
207
|
+
}
|
|
208
|
+
index++;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}); });
|
|
213
|
+
var TableStore = iRenderer.iRendererStore
|
|
214
|
+
.named('TableStore')
|
|
215
|
+
.props({
|
|
216
|
+
columns: mobxStateTree.types.array(Column),
|
|
217
|
+
rows: mobxStateTree.types.array(Row),
|
|
218
|
+
selectedRows: mobxStateTree.types.array(mobxStateTree.types.reference(Row)),
|
|
219
|
+
expandedRows: mobxStateTree.types.array(mobxStateTree.types.string),
|
|
220
|
+
primaryField: 'id',
|
|
221
|
+
orderBy: '',
|
|
222
|
+
orderDir: mobxStateTree.types.optional(mobxStateTree.types.union(mobxStateTree.types.literal('asc'), mobxStateTree.types.literal('desc')), 'asc'),
|
|
223
|
+
draggable: false,
|
|
224
|
+
dragging: false,
|
|
225
|
+
selectable: false,
|
|
226
|
+
multiple: true,
|
|
227
|
+
footable: mobxStateTree.types.frozen(),
|
|
228
|
+
expandConfig: mobxStateTree.types.frozen(),
|
|
229
|
+
isNested: false,
|
|
230
|
+
columnsTogglable: mobxStateTree.types.optional(mobxStateTree.types.union(mobxStateTree.types.boolean, mobxStateTree.types.literal('auto')), 'auto'),
|
|
231
|
+
itemCheckableOn: '',
|
|
232
|
+
itemDraggableOn: '',
|
|
233
|
+
hideCheckToggler: false,
|
|
234
|
+
combineNum: 0,
|
|
235
|
+
combineFromIndex: 0,
|
|
236
|
+
formsRef: mobxStateTree.types.optional(mobxStateTree.types.array(mobxStateTree.types.frozen()), []),
|
|
237
|
+
maxKeepItemSelectionLength: 0,
|
|
238
|
+
keepItemSelectionOnPageChange: false
|
|
239
|
+
})
|
|
240
|
+
.views(function (self) {
|
|
241
|
+
function getColumnsExceptBuiltinTypes() {
|
|
242
|
+
return self.columns.filter(function (item) { return !/^__/.test(item.type); });
|
|
243
|
+
}
|
|
244
|
+
function getForms() {
|
|
245
|
+
return self.formsRef.map(function (item) { return ({
|
|
246
|
+
store: manager.getStoreById(item.id),
|
|
247
|
+
rowIndex: item.rowIndex
|
|
248
|
+
}); });
|
|
249
|
+
}
|
|
250
|
+
function getExportedColumns() {
|
|
251
|
+
return self.columns.filter(function (item) {
|
|
252
|
+
return (item &&
|
|
253
|
+
helper.isVisible(item.pristine, helper.hasVisibleExpression(item.pristine) ? self.data : {}) &&
|
|
254
|
+
(item.type === '__checkme'
|
|
255
|
+
? self.selectable &&
|
|
256
|
+
!self.dragging &&
|
|
257
|
+
!self.hideCheckToggler &&
|
|
258
|
+
self.rows.length
|
|
259
|
+
: item.type === '__dragme'
|
|
260
|
+
? self.dragging
|
|
261
|
+
: item.type === '__expandme'
|
|
262
|
+
? (getFootableColumns().length || self.isNested) && !self.dragging
|
|
263
|
+
: item.toggled || !item.toggable));
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
function getFilteredColumns() {
|
|
267
|
+
return self.columns.filter(function (item) {
|
|
268
|
+
return item &&
|
|
269
|
+
helper.isVisible(item.pristine, helper.hasVisibleExpression(item.pristine) ? self.data : {}) &&
|
|
270
|
+
(item.type === '__checkme'
|
|
271
|
+
? self.selectable &&
|
|
272
|
+
!self.dragging &&
|
|
273
|
+
!self.hideCheckToggler &&
|
|
274
|
+
self.rows.length
|
|
275
|
+
: item.type === '__dragme'
|
|
276
|
+
? self.dragging
|
|
277
|
+
: item.type === '__expandme'
|
|
278
|
+
? (getFootableColumns().length || self.isNested) && !self.dragging
|
|
279
|
+
: (item.toggled || !item.toggable) &&
|
|
280
|
+
(!self.footable ||
|
|
281
|
+
!item.breakpoint ||
|
|
282
|
+
!helper.isBreakpoint(item.breakpoint)));
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
function getFootableColumns() {
|
|
286
|
+
return self.columns.filter(function (item) {
|
|
287
|
+
return item.type === '__checkme' ||
|
|
288
|
+
item.type === '__dragme' ||
|
|
289
|
+
item.type === '__expandme'
|
|
290
|
+
? false
|
|
291
|
+
: (item.toggled || !item.toggable) &&
|
|
292
|
+
self.footable &&
|
|
293
|
+
item.breakpoint &&
|
|
294
|
+
helper.isBreakpoint(item.breakpoint);
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
function getLeftFixedColumns() {
|
|
298
|
+
if (self.dragging) {
|
|
299
|
+
return [];
|
|
300
|
+
}
|
|
301
|
+
var columns = getFilteredColumns().filter(function (item) { return item.fixed === 'left'; });
|
|
302
|
+
// 有才带过去,没有就不带了
|
|
303
|
+
if (columns.length) {
|
|
304
|
+
columns = getFilteredColumns().filter(function (item) { return item.fixed === 'left' || /^__/.test(item.type); });
|
|
305
|
+
}
|
|
306
|
+
return columns;
|
|
307
|
+
}
|
|
308
|
+
function getRightFixedColumns() {
|
|
309
|
+
if (self.dragging) {
|
|
310
|
+
return [];
|
|
311
|
+
}
|
|
312
|
+
return getFilteredColumns().filter(function (item) { return item.fixed === 'right'; });
|
|
313
|
+
}
|
|
314
|
+
function isSelected(row) {
|
|
315
|
+
return !!~self.selectedRows.indexOf(row);
|
|
316
|
+
}
|
|
317
|
+
function isExpanded(row) {
|
|
318
|
+
return self.expandedRows.includes(row.id);
|
|
319
|
+
}
|
|
320
|
+
function getTogglable() {
|
|
321
|
+
if (self.columnsTogglable === 'auto') {
|
|
322
|
+
return self.columns.filter(function (item) { return !/^__/.test(item.type); }).length > 5;
|
|
323
|
+
}
|
|
324
|
+
return self.columnsTogglable;
|
|
325
|
+
}
|
|
326
|
+
function getToggableColumns() {
|
|
327
|
+
return self.columns.filter(function (item) { return helper.isVisible(item.pristine, self.data) && item.toggable !== false; });
|
|
328
|
+
}
|
|
329
|
+
function getActiveToggableColumns() {
|
|
330
|
+
return getToggableColumns().filter(function (item) { return item.toggled; });
|
|
331
|
+
}
|
|
332
|
+
function getModifiedRows(rows, modifiedRows) {
|
|
333
|
+
if (rows === void 0) { rows = []; }
|
|
334
|
+
if (modifiedRows === void 0) { modifiedRows = []; }
|
|
335
|
+
rows = rows && rows.length ? rows : self.rows;
|
|
336
|
+
rows.forEach(function (item) {
|
|
337
|
+
if (item.children && item.children.length) {
|
|
338
|
+
getModifiedRows(item.children, modifiedRows);
|
|
339
|
+
}
|
|
340
|
+
var diff = helper.difference(item.data, item.pristine);
|
|
341
|
+
var hasDifference = Object.keys(diff).length;
|
|
342
|
+
if (hasDifference) {
|
|
343
|
+
modifiedRows.push(item);
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
return modifiedRows;
|
|
347
|
+
}
|
|
348
|
+
function getModified() {
|
|
349
|
+
return getModifiedRows().length;
|
|
350
|
+
}
|
|
351
|
+
function getMovedRows() {
|
|
352
|
+
return helper.flattenTree(self.rows).filter(function (item) { return item.moved; });
|
|
353
|
+
}
|
|
354
|
+
function getMoved() {
|
|
355
|
+
return getMovedRows().length;
|
|
356
|
+
}
|
|
357
|
+
function getHovedRow() {
|
|
358
|
+
return helper.flattenTree(self.rows).find(function (item) { return item.isHover; });
|
|
359
|
+
}
|
|
360
|
+
function getUnSelectedRows() {
|
|
361
|
+
return helper.flattenTree(self.rows).filter(function (item) { return !item.checked; });
|
|
362
|
+
}
|
|
363
|
+
function getData(superData) {
|
|
364
|
+
return object.createObject(superData, {
|
|
365
|
+
items: self.rows.map(function (item) { return item.data; }),
|
|
366
|
+
selectedItems: self.selectedRows.map(function (item) { return item.data; }),
|
|
367
|
+
unSelectedItems: getUnSelectedRows().map(function (item) { return item.data; })
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
function hasColumnHidden() {
|
|
371
|
+
return self.columns.findIndex(function (column) { return !column.toggled; }) !== -1;
|
|
372
|
+
}
|
|
373
|
+
function getColumnGroup() {
|
|
374
|
+
var columns = getFilteredColumns();
|
|
375
|
+
var len = columns.length;
|
|
376
|
+
if (!len) {
|
|
377
|
+
return [];
|
|
378
|
+
}
|
|
379
|
+
var groups = [
|
|
380
|
+
{
|
|
381
|
+
label: columns[0].groupName,
|
|
382
|
+
colSpan: 1,
|
|
383
|
+
rowSpan: 1,
|
|
384
|
+
index: columns[0].index,
|
|
385
|
+
has: [columns[0]]
|
|
386
|
+
}
|
|
387
|
+
];
|
|
388
|
+
// 如果是勾选栏,让它和下一列合并。
|
|
389
|
+
if (columns[0].type === '__checkme' && columns[1]) {
|
|
390
|
+
groups[0].label = columns[1].groupName;
|
|
391
|
+
}
|
|
392
|
+
// 用户是否启用了 groupName
|
|
393
|
+
var hasGroupName = columns.some(function (column) { return column.groupName; });
|
|
394
|
+
for (var i = 1; i < len; i++) {
|
|
395
|
+
var prev = groups[groups.length - 1];
|
|
396
|
+
var current = columns[i];
|
|
397
|
+
var groupNameIsSame = current.groupName === prev.label ||
|
|
398
|
+
resolveVariableAndFilter.resolveVariableAndFilter(current.groupName, self.data) ===
|
|
399
|
+
resolveVariableAndFilter.resolveVariableAndFilter(prev.label, self.data);
|
|
400
|
+
if (groupNameIsSame &&
|
|
401
|
+
((hasGroupName && current.groupName) || !hasGroupName)) {
|
|
402
|
+
prev.colSpan++;
|
|
403
|
+
prev.has.push(current);
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
groups.push({
|
|
407
|
+
label: current.groupName || current.label || ' ',
|
|
408
|
+
colSpan: 1,
|
|
409
|
+
rowSpan: 1,
|
|
410
|
+
index: current.index,
|
|
411
|
+
has: [current]
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
if (groups.length === 1 && !groups[0].label) {
|
|
416
|
+
groups.pop();
|
|
417
|
+
}
|
|
418
|
+
return groups.map(function (item) {
|
|
419
|
+
var rowSpan = !item.label ||
|
|
420
|
+
(item.has.length === 1 && item.label === item.has[0].label)
|
|
421
|
+
? 2
|
|
422
|
+
: 1;
|
|
423
|
+
return tslib.__assign(tslib.__assign({}, item), { rowSpan: rowSpan, label: rowSpan === 2 ? item.label || item.has[0].label : item.label });
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
function getFirstToggledColumnIndex() {
|
|
427
|
+
var column = self.columns.find(function (column) { return !/^__/.test(column.type) && column.toggled; });
|
|
428
|
+
return column == null ? null : column.index;
|
|
429
|
+
}
|
|
430
|
+
function getSearchableColumns() {
|
|
431
|
+
return self.columns.filter(function (column) { return column.searchable; });
|
|
432
|
+
}
|
|
433
|
+
return {
|
|
434
|
+
get columnsData() {
|
|
435
|
+
return getColumnsExceptBuiltinTypes();
|
|
436
|
+
},
|
|
437
|
+
get forms() {
|
|
438
|
+
return getForms();
|
|
439
|
+
},
|
|
440
|
+
get searchableColumns() {
|
|
441
|
+
return getSearchableColumns();
|
|
442
|
+
},
|
|
443
|
+
get activedSearchableColumns() {
|
|
444
|
+
return getSearchableColumns().filter(function (column) { return column.enableSearch; });
|
|
445
|
+
},
|
|
446
|
+
/** 导出excel列(包含breakpoint列) */
|
|
447
|
+
get exportColumns() {
|
|
448
|
+
return getExportedColumns();
|
|
449
|
+
},
|
|
450
|
+
get filteredColumns() {
|
|
451
|
+
return getFilteredColumns();
|
|
452
|
+
},
|
|
453
|
+
get footableColumns() {
|
|
454
|
+
return getFootableColumns();
|
|
455
|
+
},
|
|
456
|
+
get leftFixedColumns() {
|
|
457
|
+
return getLeftFixedColumns();
|
|
458
|
+
},
|
|
459
|
+
get rightFixedColumns() {
|
|
460
|
+
return getRightFixedColumns();
|
|
461
|
+
},
|
|
462
|
+
get toggableColumns() {
|
|
463
|
+
return getToggableColumns();
|
|
464
|
+
},
|
|
465
|
+
get activeToggaleColumns() {
|
|
466
|
+
return getActiveToggableColumns();
|
|
467
|
+
},
|
|
468
|
+
get someChecked() {
|
|
469
|
+
return !!self.selectedRows.length;
|
|
470
|
+
},
|
|
471
|
+
get allChecked() {
|
|
472
|
+
return !!(self.selectedRows.length ===
|
|
473
|
+
self.checkableRows.length &&
|
|
474
|
+
self.checkableRows.length);
|
|
475
|
+
},
|
|
476
|
+
isSelected: isSelected,
|
|
477
|
+
get allExpanded() {
|
|
478
|
+
return !!(self.expandedRows.length === this.expandableRows.length &&
|
|
479
|
+
this.expandableRows.length);
|
|
480
|
+
},
|
|
481
|
+
isExpanded: isExpanded,
|
|
482
|
+
get toggable() {
|
|
483
|
+
return getTogglable();
|
|
484
|
+
},
|
|
485
|
+
get modified() {
|
|
486
|
+
return getModified();
|
|
487
|
+
},
|
|
488
|
+
get modifiedRows() {
|
|
489
|
+
return getModifiedRows();
|
|
490
|
+
},
|
|
491
|
+
get unSelectedRows() {
|
|
492
|
+
return getUnSelectedRows();
|
|
493
|
+
},
|
|
494
|
+
get checkableRows() {
|
|
495
|
+
return helper.flattenTree(self.rows).filter(function (item) { return item.checkable; });
|
|
496
|
+
},
|
|
497
|
+
get expandableRows() {
|
|
498
|
+
return self.rows.filter(function (item) { return item.expandable; });
|
|
499
|
+
},
|
|
500
|
+
get moved() {
|
|
501
|
+
return getMoved();
|
|
502
|
+
},
|
|
503
|
+
get movedRows() {
|
|
504
|
+
return getMovedRows();
|
|
505
|
+
},
|
|
506
|
+
get hoverRow() {
|
|
507
|
+
return getHovedRow();
|
|
508
|
+
},
|
|
509
|
+
get disabledHeadCheckbox() {
|
|
510
|
+
var _a, _b;
|
|
511
|
+
var selectedLength = (_b = (_a = self.data) === null || _a === void 0 ? void 0 : _a.selectedItems) === null || _b === void 0 ? void 0 : _b.length;
|
|
512
|
+
var maxLength = self.maxKeepItemSelectionLength;
|
|
513
|
+
if (!self.data || !self.keepItemSelectionOnPageChange || !maxLength) {
|
|
514
|
+
return false;
|
|
515
|
+
}
|
|
516
|
+
return maxLength === selectedLength;
|
|
517
|
+
},
|
|
518
|
+
get firstToggledColumnIndex() {
|
|
519
|
+
return getFirstToggledColumnIndex();
|
|
520
|
+
},
|
|
521
|
+
getData: getData,
|
|
522
|
+
get columnGroup() {
|
|
523
|
+
return getColumnGroup();
|
|
524
|
+
},
|
|
525
|
+
getRowById: function (id) {
|
|
526
|
+
return helper.findTree(self.rows, function (item) { return item.id === id; });
|
|
527
|
+
},
|
|
528
|
+
getItemsByName: function (name) {
|
|
529
|
+
return this.forms
|
|
530
|
+
.filter(function (form) { return form.rowIndex === parseInt(name, 10); })
|
|
531
|
+
.map(function (item) { return item.store; });
|
|
532
|
+
},
|
|
533
|
+
// 是否隐藏了某列
|
|
534
|
+
hasColumnHidden: function () {
|
|
535
|
+
return hasColumnHidden();
|
|
536
|
+
},
|
|
537
|
+
getExpandedRows: function () {
|
|
538
|
+
var list = [];
|
|
539
|
+
helper.eachTree(self.rows, function (i) {
|
|
540
|
+
if (self.expandedRows.includes(i.id)) {
|
|
541
|
+
list.push(i);
|
|
542
|
+
}
|
|
543
|
+
});
|
|
544
|
+
return list;
|
|
545
|
+
}
|
|
546
|
+
};
|
|
547
|
+
})
|
|
548
|
+
.actions(function (self) {
|
|
549
|
+
function update(config) {
|
|
550
|
+
config.primaryField !== void 0 &&
|
|
551
|
+
(self.primaryField = config.primaryField);
|
|
552
|
+
config.selectable !== void 0 && (self.selectable = config.selectable);
|
|
553
|
+
config.columnsTogglable !== void 0 &&
|
|
554
|
+
(self.columnsTogglable = config.columnsTogglable);
|
|
555
|
+
config.draggable !== void 0 && (self.draggable = config.draggable);
|
|
556
|
+
if (typeof config.orderBy === 'string') {
|
|
557
|
+
setOrderByInfo(config.orderBy, config.orderDir === 'desc' ? 'desc' : 'asc');
|
|
558
|
+
}
|
|
559
|
+
config.multiple !== void 0 && (self.multiple = config.multiple);
|
|
560
|
+
config.footable !== void 0 && (self.footable = config.footable);
|
|
561
|
+
config.expandConfig !== void 0 &&
|
|
562
|
+
(self.expandConfig = config.expandConfig);
|
|
563
|
+
config.itemCheckableOn !== void 0 &&
|
|
564
|
+
(self.itemCheckableOn = config.itemCheckableOn);
|
|
565
|
+
config.itemDraggableOn !== void 0 &&
|
|
566
|
+
(self.itemDraggableOn = config.itemDraggableOn);
|
|
567
|
+
config.hideCheckToggler !== void 0 &&
|
|
568
|
+
(self.hideCheckToggler = !!config.hideCheckToggler);
|
|
569
|
+
config.combineNum !== void 0 &&
|
|
570
|
+
(self.combineNum = parseInt(config.combineNum, 10) || 0);
|
|
571
|
+
config.combineFromIndex !== void 0 &&
|
|
572
|
+
(self.combineFromIndex =
|
|
573
|
+
parseInt(config.combineFromIndex, 10) || 0);
|
|
574
|
+
config.maxKeepItemSelectionLength !== void 0 &&
|
|
575
|
+
(self.maxKeepItemSelectionLength = config.maxKeepItemSelectionLength);
|
|
576
|
+
config.keepItemSelectionOnPageChange !== void 0 &&
|
|
577
|
+
(self.keepItemSelectionOnPageChange =
|
|
578
|
+
config.keepItemSelectionOnPageChange);
|
|
579
|
+
if (config.columns && Array.isArray(config.columns)) {
|
|
580
|
+
var columns = config.columns
|
|
581
|
+
.filter(function (column) { return column; })
|
|
582
|
+
.concat();
|
|
583
|
+
if (!columns.length) {
|
|
584
|
+
columns.push({
|
|
585
|
+
type: 'text',
|
|
586
|
+
label: '空'
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
// 更新列顺序,afterCreate生命周期中更新columns不会触发组件的render
|
|
590
|
+
var key = getPersistDataKey(columns);
|
|
591
|
+
var data = localStorage.getItem(key);
|
|
592
|
+
var tableMetaData = null;
|
|
593
|
+
if (data) {
|
|
594
|
+
try {
|
|
595
|
+
tableMetaData = JSON.parse(data);
|
|
596
|
+
}
|
|
597
|
+
catch (error) { }
|
|
598
|
+
var order_1 = tableMetaData === null || tableMetaData === void 0 ? void 0 : tableMetaData.columnOrder;
|
|
599
|
+
if (Array.isArray(order_1) && order_1.length != 0) {
|
|
600
|
+
columns = sortBy__default["default"](columns, function (item, index) {
|
|
601
|
+
return order_1.indexOf(item.name || item.label || index);
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
columns.unshift({
|
|
606
|
+
type: '__expandme',
|
|
607
|
+
toggable: false,
|
|
608
|
+
className: 'Table-expandCell'
|
|
609
|
+
});
|
|
610
|
+
columns.unshift({
|
|
611
|
+
type: '__checkme',
|
|
612
|
+
fixed: 'left',
|
|
613
|
+
toggable: false,
|
|
614
|
+
className: 'Table-checkCell'
|
|
615
|
+
});
|
|
616
|
+
columns.unshift({
|
|
617
|
+
type: '__dragme',
|
|
618
|
+
toggable: false,
|
|
619
|
+
className: 'Table-dragCell'
|
|
620
|
+
});
|
|
621
|
+
columns = columns.map(function (item, index) { return (tslib.__assign(tslib.__assign({}, item), { index: index, rawIndex: index - PARTITION_INDEX, type: item.type || 'plain', pristine: item, toggled: item.toggled !== false, breakpoint: item.breakpoint, isPrimary: index === PARTITION_INDEX, className: item.className || '' })); });
|
|
622
|
+
self.columns.replace(columns);
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
function updateColumns(columns) {
|
|
626
|
+
if (columns && Array.isArray(columns)) {
|
|
627
|
+
columns = columns.filter(function (column) { return column; }).concat();
|
|
628
|
+
if (!columns.length) {
|
|
629
|
+
columns.push({
|
|
630
|
+
type: 'text',
|
|
631
|
+
label: '空'
|
|
632
|
+
});
|
|
633
|
+
}
|
|
634
|
+
columns.unshift({
|
|
635
|
+
type: '__expandme',
|
|
636
|
+
toggable: false,
|
|
637
|
+
className: 'Table-expandCell'
|
|
638
|
+
});
|
|
639
|
+
columns.unshift({
|
|
640
|
+
type: '__checkme',
|
|
641
|
+
fixed: 'left',
|
|
642
|
+
toggable: false,
|
|
643
|
+
className: 'Table-checkCell'
|
|
644
|
+
});
|
|
645
|
+
columns.unshift({
|
|
646
|
+
type: '__dragme',
|
|
647
|
+
toggable: false,
|
|
648
|
+
className: 'Table-dragCell'
|
|
649
|
+
});
|
|
650
|
+
columns = columns.map(function (item, index) { return (tslib.__assign(tslib.__assign({}, item), { index: index, rawIndex: index - PARTITION_INDEX, type: item.type || 'plain', pristine: item.pristine || item, toggled: item.toggled !== false, breakpoint: item.breakpoint, isPrimary: index === PARTITION_INDEX })); });
|
|
651
|
+
self.columns.replace(columns);
|
|
652
|
+
persistSaveToggledColumns();
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
function combineCell(arr, keys) {
|
|
656
|
+
if (!keys.length || !arr.length) {
|
|
657
|
+
return arr;
|
|
658
|
+
}
|
|
659
|
+
var key = keys.shift();
|
|
660
|
+
var rowIndex = 0;
|
|
661
|
+
var row = arr[rowIndex];
|
|
662
|
+
row.rowSpans[key] = 1;
|
|
663
|
+
var value = resolveVariable.resolveVariable(key, row.data);
|
|
664
|
+
for (var i = 1, len = arr.length; i < len; i++) {
|
|
665
|
+
var current = arr[i];
|
|
666
|
+
if (isEqual__default["default"](resolveVariable.resolveVariable(key, current.data), value)) {
|
|
667
|
+
row.rowSpans[key] += 1;
|
|
668
|
+
current.rowSpans[key] = 0;
|
|
669
|
+
}
|
|
670
|
+
else {
|
|
671
|
+
if (row.rowSpans[key] > 1) {
|
|
672
|
+
combineCell(arr.slice(rowIndex, i), keys.concat());
|
|
673
|
+
}
|
|
674
|
+
rowIndex = i;
|
|
675
|
+
row = current;
|
|
676
|
+
row.rowSpans[key] = 1;
|
|
677
|
+
value = resolveVariable.resolveVariable(key, row.data);
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
if (row.rowSpans[key] > 1 && keys.length) {
|
|
681
|
+
combineCell(arr.slice(rowIndex, arr.length), keys.concat());
|
|
682
|
+
}
|
|
683
|
+
return arr;
|
|
684
|
+
}
|
|
685
|
+
function autoCombineCell(arr, columns, maxCount, fromIndex) {
|
|
686
|
+
if (fromIndex === void 0) { fromIndex = 0; }
|
|
687
|
+
if (!columns.length || !maxCount || !arr.length) {
|
|
688
|
+
return arr;
|
|
689
|
+
}
|
|
690
|
+
// 如果是嵌套模式,通常第一列都是存在差异的,所以从第二列开始。
|
|
691
|
+
fromIndex =
|
|
692
|
+
fromIndex ||
|
|
693
|
+
(arr.some(function (item) { return Array.isArray(item.children) && item.children.length; })
|
|
694
|
+
? 1
|
|
695
|
+
: 0);
|
|
696
|
+
var keys = [];
|
|
697
|
+
var len = columns.length;
|
|
698
|
+
for (var i = 0; i < len; i++) {
|
|
699
|
+
var column = columns[i];
|
|
700
|
+
// maxCount 可能比实际配置的 columns 还有多。
|
|
701
|
+
if (!column) {
|
|
702
|
+
break;
|
|
703
|
+
}
|
|
704
|
+
if ('__' === column.type.substring(0, 2)) {
|
|
705
|
+
maxCount++;
|
|
706
|
+
continue;
|
|
707
|
+
}
|
|
708
|
+
var key = column.name;
|
|
709
|
+
if (!key) {
|
|
710
|
+
break;
|
|
711
|
+
}
|
|
712
|
+
keys.push(key);
|
|
713
|
+
}
|
|
714
|
+
while (fromIndex--) {
|
|
715
|
+
keys.shift();
|
|
716
|
+
}
|
|
717
|
+
while (keys.length > maxCount) {
|
|
718
|
+
keys.pop();
|
|
719
|
+
}
|
|
720
|
+
return combineCell(arr, keys);
|
|
721
|
+
}
|
|
722
|
+
function initChildren(children, depth, pindex, parentId, path) {
|
|
723
|
+
if (path === void 0) { path = ''; }
|
|
724
|
+
depth += 1;
|
|
725
|
+
return children.map(function (item, index) {
|
|
726
|
+
var _a;
|
|
727
|
+
item = object.isObject(item)
|
|
728
|
+
? item
|
|
729
|
+
: {
|
|
730
|
+
item: item
|
|
731
|
+
};
|
|
732
|
+
var id = (_a = item.__id) !== null && _a !== void 0 ? _a : helper.guid();
|
|
733
|
+
return {
|
|
734
|
+
// id: String(item && (item as any)[self.primaryField] || `${pindex}-${depth}-${key}`),
|
|
735
|
+
id: String(id),
|
|
736
|
+
parentId: String(parentId),
|
|
737
|
+
key: String("".concat(pindex, "-").concat(depth, "-").concat(index)),
|
|
738
|
+
path: "".concat(path).concat(index),
|
|
739
|
+
depth: depth,
|
|
740
|
+
index: index,
|
|
741
|
+
newIndex: index,
|
|
742
|
+
pristine: item,
|
|
743
|
+
data: item,
|
|
744
|
+
rowSpans: {},
|
|
745
|
+
children: item && Array.isArray(item.children)
|
|
746
|
+
? initChildren(item.children, depth, index, id, "".concat(path).concat(index, "."))
|
|
747
|
+
: [],
|
|
748
|
+
expandable: !!((item && Array.isArray(item.children) && item.children.length) ||
|
|
749
|
+
(self.footable && self.footableColumns.length))
|
|
750
|
+
};
|
|
751
|
+
});
|
|
752
|
+
}
|
|
753
|
+
function initRows(rows, getEntryId, reUseRow) {
|
|
754
|
+
self.selectedRows.clear();
|
|
755
|
+
// self.expandedRows.clear();
|
|
756
|
+
var arr = rows.map(function (item, index) {
|
|
757
|
+
var _a;
|
|
758
|
+
if (!object.isObject(item)) {
|
|
759
|
+
item = {
|
|
760
|
+
item: item
|
|
761
|
+
};
|
|
762
|
+
}
|
|
763
|
+
var id = String(getEntryId ? getEntryId(item, index) : (_a = item.__id) !== null && _a !== void 0 ? _a : helper.guid());
|
|
764
|
+
return {
|
|
765
|
+
// id: getEntryId ? getEntryId(item, key) : String(item && (item as any)[self.primaryField] || `${key}-1-${key}`),
|
|
766
|
+
id: id,
|
|
767
|
+
key: String("".concat(index, "-1-").concat(index)),
|
|
768
|
+
depth: 1,
|
|
769
|
+
index: index,
|
|
770
|
+
newIndex: index,
|
|
771
|
+
pristine: item,
|
|
772
|
+
path: "".concat(index),
|
|
773
|
+
data: item,
|
|
774
|
+
rowSpans: {},
|
|
775
|
+
children: item && Array.isArray(item.children)
|
|
776
|
+
? initChildren(item.children, 1, index, id, "".concat(index, "."))
|
|
777
|
+
: [],
|
|
778
|
+
expandable: !!((item && Array.isArray(item.children) && item.children.length) ||
|
|
779
|
+
(self.footable && self.footableColumns.length))
|
|
780
|
+
};
|
|
781
|
+
});
|
|
782
|
+
if (self.combineNum) {
|
|
783
|
+
arr = autoCombineCell(arr, self.columns, self.combineNum, self.combineFromIndex);
|
|
784
|
+
}
|
|
785
|
+
replaceRow(arr, reUseRow);
|
|
786
|
+
self.isNested = self.rows.some(function (item) { return item.children.length; });
|
|
787
|
+
var expand = self.footable && self.footable.expand;
|
|
788
|
+
if (expand === 'first' ||
|
|
789
|
+
(self.expandConfig && self.expandConfig.expand === 'first')) {
|
|
790
|
+
self.rows.length && self.expandedRows.push(self.rows[0].id);
|
|
791
|
+
}
|
|
792
|
+
else if ((expand === 'all' && !self.footable.accordion) ||
|
|
793
|
+
(self.expandConfig &&
|
|
794
|
+
self.expandConfig.expand === 'all' &&
|
|
795
|
+
!self.expandConfig.accordion)) {
|
|
796
|
+
self.expandedRows.replace(self.rows.map(function (item) { return item.id; }));
|
|
797
|
+
}
|
|
798
|
+
self.dragging = false;
|
|
799
|
+
}
|
|
800
|
+
// 尽可能的复用 row
|
|
801
|
+
function replaceRow(arr, reUseRow) {
|
|
802
|
+
if (reUseRow === false) {
|
|
803
|
+
self.rows.replace(arr.map(function (item) { return Row.create(item); }));
|
|
804
|
+
return;
|
|
805
|
+
}
|
|
806
|
+
var pool = arr.concat();
|
|
807
|
+
// 把多的删了先
|
|
808
|
+
if (self.rows.length > arr.length) {
|
|
809
|
+
self.rows.splice(arr.length, self.rows.length - arr.length);
|
|
810
|
+
}
|
|
811
|
+
var index = 0;
|
|
812
|
+
var len = self.rows.length;
|
|
813
|
+
while (pool.length) {
|
|
814
|
+
var item = pool.shift();
|
|
815
|
+
if (index < len) {
|
|
816
|
+
self.rows[index].replaceWith(item);
|
|
817
|
+
}
|
|
818
|
+
else {
|
|
819
|
+
var row = Row.create(item);
|
|
820
|
+
self.rows.push(row);
|
|
821
|
+
}
|
|
822
|
+
index++;
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
function updateSelected(selected, valueField) {
|
|
826
|
+
self.selectedRows.clear();
|
|
827
|
+
helper.eachTree(self.rows, function (item) {
|
|
828
|
+
if (~selected.indexOf(item.pristine)) {
|
|
829
|
+
self.selectedRows.push(item.id);
|
|
830
|
+
}
|
|
831
|
+
else if (find__default["default"](selected, function (a) {
|
|
832
|
+
return a[valueField || 'value'] &&
|
|
833
|
+
a[valueField || 'value'] == item.pristine[valueField || 'value'];
|
|
834
|
+
})) {
|
|
835
|
+
self.selectedRows.push(item.id);
|
|
836
|
+
}
|
|
837
|
+
});
|
|
838
|
+
updateCheckDisable();
|
|
839
|
+
}
|
|
840
|
+
function getSelectedRows() {
|
|
841
|
+
var _a;
|
|
842
|
+
var maxLength = self.maxKeepItemSelectionLength;
|
|
843
|
+
var keep = self.keepItemSelectionOnPageChange;
|
|
844
|
+
var selectedItems = (_a = self.data) === null || _a === void 0 ? void 0 : _a.selectedItems;
|
|
845
|
+
if (keep &&
|
|
846
|
+
maxLength &&
|
|
847
|
+
selectedItems &&
|
|
848
|
+
maxLength >= selectedItems.length) {
|
|
849
|
+
var restCheckableRows = self.checkableRows.filter(function (item) { return !item.checked; });
|
|
850
|
+
var checkableRows = restCheckableRows.filter(function (item, i) { return i < maxLength - selectedItems.length; });
|
|
851
|
+
return tslib.__spreadArray(tslib.__spreadArray([], self.selectedRows, true), checkableRows, true);
|
|
852
|
+
}
|
|
853
|
+
else {
|
|
854
|
+
return self.checkableRows;
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
function toggleAll() {
|
|
858
|
+
if (self.allChecked) {
|
|
859
|
+
self.selectedRows.clear();
|
|
860
|
+
}
|
|
861
|
+
else {
|
|
862
|
+
self.selectedRows.replace(getSelectedRows());
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
// 记录最近一次点击的多选框,主要用于 shift 多选时判断上一个选的是什么
|
|
866
|
+
var lastCheckedRow = null;
|
|
867
|
+
function toggle(row) {
|
|
868
|
+
if (!row.checkable) {
|
|
869
|
+
return;
|
|
870
|
+
}
|
|
871
|
+
lastCheckedRow = row;
|
|
872
|
+
var idx = self.selectedRows.indexOf(row);
|
|
873
|
+
if (self.multiple) {
|
|
874
|
+
~idx ? self.selectedRows.splice(idx, 1) : self.selectedRows.push(row);
|
|
875
|
+
}
|
|
876
|
+
else {
|
|
877
|
+
~idx
|
|
878
|
+
? self.selectedRows.splice(idx, 1)
|
|
879
|
+
: self.selectedRows.replace([row]);
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
// 按住 shift 的时候点击选项
|
|
883
|
+
function toggleShift(row) {
|
|
884
|
+
// 如果是同一个或非 multiple 模式下就和不用 shift 一样
|
|
885
|
+
if (!lastCheckedRow || row === lastCheckedRow || !self.multiple) {
|
|
886
|
+
toggle(row);
|
|
887
|
+
return;
|
|
888
|
+
}
|
|
889
|
+
var maxLength = self.maxKeepItemSelectionLength;
|
|
890
|
+
var checkableRows = self.checkableRows;
|
|
891
|
+
var lastCheckedRowIndex = checkableRows.findIndex(function (row) { return row === lastCheckedRow; });
|
|
892
|
+
var rowIndex = checkableRows.findIndex(function (rowItem) { return row === rowItem; });
|
|
893
|
+
var minIndex = lastCheckedRowIndex > rowIndex ? rowIndex : lastCheckedRowIndex;
|
|
894
|
+
var maxIndex = lastCheckedRowIndex > rowIndex ? lastCheckedRowIndex : rowIndex;
|
|
895
|
+
var rows = checkableRows.slice(minIndex, maxIndex);
|
|
896
|
+
rows.push(row); // 将当前行也加入进行判断
|
|
897
|
+
for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {
|
|
898
|
+
var rowItem = rows_1[_i];
|
|
899
|
+
var idx = self.selectedRows.indexOf(rowItem);
|
|
900
|
+
if (idx === -1) {
|
|
901
|
+
// 如果上一个是选中状态,则将之间的所有 check 都变成可选
|
|
902
|
+
if (lastCheckedRow.checked) {
|
|
903
|
+
if (maxLength) {
|
|
904
|
+
if (self.selectedRows.length < maxLength) {
|
|
905
|
+
self.selectedRows.push(rowItem);
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
else {
|
|
909
|
+
self.selectedRows.push(rowItem);
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
else {
|
|
914
|
+
if (!lastCheckedRow.checked) {
|
|
915
|
+
self.selectedRows.splice(idx, 1);
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
lastCheckedRow = row;
|
|
920
|
+
}
|
|
921
|
+
function updateCheckDisable() {
|
|
922
|
+
if (!self.data) {
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
925
|
+
var maxLength = self.maxKeepItemSelectionLength;
|
|
926
|
+
var selectedItems = self.data.selectedItems;
|
|
927
|
+
self.selectedRows.map(function (item) { return item.setCheckdisable(false); });
|
|
928
|
+
if (maxLength && maxLength <= selectedItems.length) {
|
|
929
|
+
self.unSelectedRows.map(function (item) { return !item.checked && item.setCheckdisable(true); });
|
|
930
|
+
}
|
|
931
|
+
else {
|
|
932
|
+
self.unSelectedRows.map(function (item) { return item.checkdisable && item.setCheckdisable(false); });
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
function clear() {
|
|
936
|
+
self.selectedRows.clear();
|
|
937
|
+
}
|
|
938
|
+
function toggleExpandAll() {
|
|
939
|
+
if (self.allExpanded) {
|
|
940
|
+
self.expandedRows.clear();
|
|
941
|
+
}
|
|
942
|
+
else {
|
|
943
|
+
self.expandedRows.replace(self.rows.filter(function (item) { return item.expandable; }).map(function (item) { return item.id; }));
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
function toggleExpanded(row) {
|
|
947
|
+
var idx = self.expandedRows.indexOf(row.id);
|
|
948
|
+
if (~idx) {
|
|
949
|
+
self.expandedRows.splice(idx, 1);
|
|
950
|
+
}
|
|
951
|
+
else if (self.footable && self.footable.accordion) {
|
|
952
|
+
self.expandedRows.replace([row.id]);
|
|
953
|
+
}
|
|
954
|
+
else if (self.expandConfig && self.expandConfig.accordion) {
|
|
955
|
+
var rows = self
|
|
956
|
+
.getExpandedRows()
|
|
957
|
+
.filter(function (item) { return item.depth !== row.depth; });
|
|
958
|
+
rows.push(row);
|
|
959
|
+
self.expandedRows.replace(rows.map(function (item) { return item.id; }));
|
|
960
|
+
}
|
|
961
|
+
else {
|
|
962
|
+
self.expandedRows.push(row.id);
|
|
963
|
+
}
|
|
964
|
+
}
|
|
965
|
+
function collapseAllAtDepth(depth) {
|
|
966
|
+
var rows = self.getExpandedRows().filter(function (item) { return item.depth !== depth; });
|
|
967
|
+
self.expandedRows.replace(rows.map(function (item) { return item.id; }));
|
|
968
|
+
}
|
|
969
|
+
function setOrderByInfo(key, direction) {
|
|
970
|
+
self.orderBy = key;
|
|
971
|
+
self.orderDir = direction;
|
|
972
|
+
}
|
|
973
|
+
function reset() {
|
|
974
|
+
self.rows.forEach(function (item) { return item.reset(); });
|
|
975
|
+
var rows = self.rows.concat();
|
|
976
|
+
helper.eachTree(rows, function (item) {
|
|
977
|
+
if (item.children) {
|
|
978
|
+
var rows_2 = item.children.concat().sort(function (a, b) { return a.index - b.index; });
|
|
979
|
+
rows_2.forEach(function (item) { return item.reset(); });
|
|
980
|
+
item.children.replace(rows_2);
|
|
981
|
+
}
|
|
982
|
+
});
|
|
983
|
+
rows.forEach(function (item) { return item.reset(); });
|
|
984
|
+
rows = rows.sort(function (a, b) { return a.index - b.index; });
|
|
985
|
+
self.rows.replace(rows);
|
|
986
|
+
self.dragging = false;
|
|
987
|
+
}
|
|
988
|
+
function toggleDragging() {
|
|
989
|
+
self.dragging = !self.dragging;
|
|
990
|
+
}
|
|
991
|
+
function stopDragging() {
|
|
992
|
+
self.dragging = false;
|
|
993
|
+
}
|
|
994
|
+
function exchange(fromIndex, toIndex, item) {
|
|
995
|
+
item = item || self.rows[fromIndex];
|
|
996
|
+
if (item.parentId) {
|
|
997
|
+
var parent_1 = self.getRowById(item.parentId);
|
|
998
|
+
var offset = parent_1.children.indexOf(item) - fromIndex;
|
|
999
|
+
toIndex += offset;
|
|
1000
|
+
fromIndex += offset;
|
|
1001
|
+
var newRows_1 = parent_1.children.concat();
|
|
1002
|
+
newRows_1.splice(fromIndex, 1);
|
|
1003
|
+
newRows_1.splice(toIndex, 0, item);
|
|
1004
|
+
newRows_1.forEach(function (item, index) { return (item.newIndex = index); });
|
|
1005
|
+
parent_1.children.replace(newRows_1);
|
|
1006
|
+
return;
|
|
1007
|
+
}
|
|
1008
|
+
var newRows = self.rows.concat();
|
|
1009
|
+
newRows.splice(fromIndex, 1);
|
|
1010
|
+
newRows.splice(toIndex, 0, item);
|
|
1011
|
+
newRows.forEach(function (item, index) { return (item.newIndex = index); });
|
|
1012
|
+
self.rows.replace(newRows);
|
|
1013
|
+
}
|
|
1014
|
+
/**
|
|
1015
|
+
* 前端持久化记录列排序,查询字段,显示列信息
|
|
1016
|
+
*/
|
|
1017
|
+
function persistSaveToggledColumns() {
|
|
1018
|
+
var key = getPersistDataKey(self.columnsData);
|
|
1019
|
+
localStorage.setItem(key, JSON.stringify({
|
|
1020
|
+
// 可显示列index
|
|
1021
|
+
toggledColumnIndex: self.activeToggaleColumns.map(function (item) { return item.index; }),
|
|
1022
|
+
// 列排序,name,label可能不存在
|
|
1023
|
+
columnOrder: self.columnsData.map(function (item) { return item.name || item.label || item.rawIndex; }),
|
|
1024
|
+
// 已激活的可查询列
|
|
1025
|
+
enabledSearchableColumn: self.activedSearchableColumns.map(function (item) { return item.name; })
|
|
1026
|
+
}));
|
|
1027
|
+
}
|
|
1028
|
+
function addForm(form, rowIndex) {
|
|
1029
|
+
self.formsRef.push({
|
|
1030
|
+
id: form.id,
|
|
1031
|
+
rowIndex: rowIndex
|
|
1032
|
+
});
|
|
1033
|
+
}
|
|
1034
|
+
function toggleAllColumns() {
|
|
1035
|
+
if (self.activeToggaleColumns.length) {
|
|
1036
|
+
if (self.activeToggaleColumns.length === self.toggableColumns.length) {
|
|
1037
|
+
self.toggableColumns.map(function (column) { return column.setToggled(false); });
|
|
1038
|
+
}
|
|
1039
|
+
else {
|
|
1040
|
+
self.toggableColumns.map(function (column) { return column.setToggled(true); });
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
1043
|
+
else {
|
|
1044
|
+
// 如果没有一个激活的,那就改成全选
|
|
1045
|
+
self.toggableColumns.map(function (column) { return column.setToggled(true); });
|
|
1046
|
+
}
|
|
1047
|
+
persistSaveToggledColumns();
|
|
1048
|
+
}
|
|
1049
|
+
function getPersistDataKey(columns) {
|
|
1050
|
+
// 这里的columns使用除了__开头的所有列
|
|
1051
|
+
// sort保证存储和读取的key值保持一致
|
|
1052
|
+
return (location.pathname +
|
|
1053
|
+
self.path +
|
|
1054
|
+
sortBy__default["default"](columns.map(function (item, index) { return item.name || item.label || index; })).join('-'));
|
|
1055
|
+
}
|
|
1056
|
+
return {
|
|
1057
|
+
update: update,
|
|
1058
|
+
updateColumns: updateColumns,
|
|
1059
|
+
initRows: initRows,
|
|
1060
|
+
updateSelected: updateSelected,
|
|
1061
|
+
toggleAll: toggleAll,
|
|
1062
|
+
getSelectedRows: getSelectedRows,
|
|
1063
|
+
toggle: toggle,
|
|
1064
|
+
toggleShift: toggleShift,
|
|
1065
|
+
toggleExpandAll: toggleExpandAll,
|
|
1066
|
+
toggleExpanded: toggleExpanded,
|
|
1067
|
+
collapseAllAtDepth: collapseAllAtDepth,
|
|
1068
|
+
clear: clear,
|
|
1069
|
+
setOrderByInfo: setOrderByInfo,
|
|
1070
|
+
reset: reset,
|
|
1071
|
+
toggleDragging: toggleDragging,
|
|
1072
|
+
stopDragging: stopDragging,
|
|
1073
|
+
exchange: exchange,
|
|
1074
|
+
addForm: addForm,
|
|
1075
|
+
toggleAllColumns: toggleAllColumns,
|
|
1076
|
+
persistSaveToggledColumns: persistSaveToggledColumns,
|
|
1077
|
+
// events
|
|
1078
|
+
afterCreate: function () {
|
|
1079
|
+
setTimeout(function () {
|
|
1080
|
+
if (!mobxStateTree.isAlive(self)) {
|
|
1081
|
+
return;
|
|
1082
|
+
}
|
|
1083
|
+
var key = getPersistDataKey(self.columnsData);
|
|
1084
|
+
var data = localStorage.getItem(key);
|
|
1085
|
+
if (data) {
|
|
1086
|
+
var tableMetaData_1 = JSON.parse(data);
|
|
1087
|
+
var toggledColumns_1 = object.isObject(tableMetaData_1)
|
|
1088
|
+
? tableMetaData_1 === null || tableMetaData_1 === void 0 ? void 0 : tableMetaData_1.toggledColumnIndex
|
|
1089
|
+
: tableMetaData_1; // 兼容之前的类型
|
|
1090
|
+
self.toggableColumns.forEach(function (item) {
|
|
1091
|
+
return item.setToggled(!!~toggledColumns_1.indexOf(item.index));
|
|
1092
|
+
});
|
|
1093
|
+
self.searchableColumns.forEach(function (item) {
|
|
1094
|
+
var _a;
|
|
1095
|
+
item.setEnableSearch(!!~((_a = tableMetaData_1 === null || tableMetaData_1 === void 0 ? void 0 : tableMetaData_1.enabledSearchableColumn) !== null && _a !== void 0 ? _a : []).indexOf(item.name));
|
|
1096
|
+
});
|
|
1097
|
+
}
|
|
1098
|
+
}, 200);
|
|
1099
|
+
}
|
|
1100
|
+
};
|
|
1101
|
+
});
|
|
1102
|
+
|
|
1103
|
+
exports.Column = Column;
|
|
1104
|
+
exports.Row = Row;
|
|
1105
|
+
exports.TableStore = TableStore;
|