vxe-table 3.9.0-rc.9 → 3.9.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/README.md +1 -1
- package/es/grid/src/grid.js +120 -66
- package/es/grid/style.css +0 -1
- package/es/grid/style.min.css +1 -1
- package/es/index.esm.js +22 -3
- package/es/locale/lang/en-US.js +2 -1
- package/es/locale/lang/es-ES.js +2 -1
- package/es/locale/lang/hu-HU.js +2 -1
- package/es/locale/lang/ja-JP.js +2 -1
- package/es/locale/lang/ko-KR.js +2 -1
- package/es/locale/lang/pt-BR.js +2 -1
- package/es/locale/lang/ru-RU.js +2 -1
- package/es/locale/lang/uk-UA.js +2 -1
- package/es/locale/lang/vi-VN.js +2 -1
- package/es/locale/lang/zh-CHT.js +2 -1
- package/es/locale/lang/zh-CN.js +2 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/custom/panel.js +183 -173
- package/es/table/module/edit/mixin.js +33 -24
- package/es/table/module/export/export-panel.js +32 -4
- package/es/table/module/export/import-panel.js +25 -6
- package/es/table/module/export/mixin.js +11 -11
- package/es/table/module/menu/mixin.js +2 -2
- package/es/table/module/validator/mixin.js +4 -4
- package/es/table/render/index.js +17 -11
- package/es/table/src/body.js +1 -0
- package/es/table/src/columnInfo.js +3 -3
- package/es/table/src/methods.js +54 -42
- package/es/table/src/props.js +65 -15
- package/es/table/src/table.js +91 -57
- package/es/table/src/util.js +3 -2
- package/es/table/style.css +37 -48
- package/es/table/style.min.css +1 -1
- package/es/toolbar/src/toolbar.js +21 -7
- package/es/toolbar/style.css +0 -1
- package/es/toolbar/style.min.css +1 -1
- package/es/ui/index.js +5 -3
- package/es/ui/src/log.js +1 -1
- package/es/vxe-grid/style.css +0 -1
- package/es/vxe-grid/style.min.css +1 -1
- package/es/vxe-table/style.css +37 -48
- package/es/vxe-table/style.min.css +1 -1
- package/es/vxe-toolbar/style.css +0 -1
- package/es/vxe-toolbar/style.min.css +1 -1
- package/lib/colgroup/index.js +3 -3
- package/lib/colgroup/index.min.js +1 -1
- package/lib/column/index.js +3 -3
- package/lib/column/index.min.js +1 -1
- package/lib/components.js +9 -11
- package/lib/components.min.js +1 -1
- package/lib/grid/index.js +3 -3
- package/lib/grid/index.min.js +1 -1
- package/lib/grid/src/grid.js +581 -491
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/grid/style/style.css +0 -1
- package/lib/grid/style/style.min.css +1 -1
- package/lib/index.common.js +3 -4
- package/lib/index.umd.js +9174 -17260
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/en-US.js +2 -1
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +2 -1
- package/lib/locale/lang/es-ES.js +2 -1
- package/lib/locale/lang/es-ES.min.js +1 -1
- package/lib/locale/lang/es-ES.umd.js +2 -1
- package/lib/locale/lang/hu-HU.js +2 -1
- package/lib/locale/lang/hu-HU.min.js +1 -1
- package/lib/locale/lang/hu-HU.umd.js +2 -1
- package/lib/locale/lang/ja-JP.js +2 -1
- package/lib/locale/lang/ja-JP.min.js +1 -1
- package/lib/locale/lang/ja-JP.umd.js +2 -1
- package/lib/locale/lang/ko-KR.js +2 -1
- package/lib/locale/lang/ko-KR.min.js +1 -1
- package/lib/locale/lang/ko-KR.umd.js +2 -1
- package/lib/locale/lang/pt-BR.js +2 -1
- package/lib/locale/lang/pt-BR.min.js +1 -1
- package/lib/locale/lang/pt-BR.umd.js +2 -1
- package/lib/locale/lang/ru-RU.js +2 -1
- package/lib/locale/lang/ru-RU.min.js +1 -1
- package/lib/locale/lang/ru-RU.umd.js +2 -1
- package/lib/locale/lang/uk-UA.js +2 -1
- package/lib/locale/lang/uk-UA.min.js +1 -1
- package/lib/locale/lang/uk-UA.umd.js +2 -1
- package/lib/locale/lang/vi-VN.js +2 -1
- package/lib/locale/lang/vi-VN.min.js +1 -1
- package/lib/locale/lang/zh-CHT.js +2 -1
- package/lib/locale/lang/zh-CHT.min.js +1 -1
- package/lib/locale/lang/zh-CHT.umd.js +2 -1
- package/lib/locale/lang/zh-CN.js +2 -1
- package/lib/locale/lang/zh-CN.min.js +1 -1
- package/lib/locale/lang/zh-CN.umd.js +2 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/index.js +4 -4
- package/lib/table/index.min.js +1 -1
- package/lib/table/module/custom/mixin.js +53 -44
- package/lib/table/module/custom/mixin.min.js +1 -1
- package/lib/table/module/custom/panel.js +310 -239
- package/lib/table/module/custom/panel.min.js +1 -1
- package/lib/table/module/edit/mixin.js +436 -371
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/export/export-panel.js +136 -106
- package/lib/table/module/export/export-panel.min.js +1 -1
- package/lib/table/module/export/import-panel.js +75 -54
- package/lib/table/module/export/import-panel.min.js +1 -1
- package/lib/table/module/export/mixin.js +592 -597
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/module/export/util.js +6 -4
- package/lib/table/module/export/util.min.js +1 -1
- package/lib/table/module/filter/mixin.js +147 -118
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/module/filter/panel.js +86 -65
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/module/keyboard/mixin.js +163 -151
- package/lib/table/module/keyboard/mixin.min.js +1 -1
- package/lib/table/module/menu/mixin.js +125 -114
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/module/menu/panel.js +36 -34
- package/lib/table/module/menu/panel.min.js +1 -1
- package/lib/table/module/validator/mixin.js +225 -214
- package/lib/table/module/validator/mixin.min.js +1 -1
- package/lib/table/render/index.js +401 -297
- package/lib/table/render/index.min.js +1 -1
- package/lib/table/src/body.js +411 -349
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +470 -344
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/column.js +10 -10
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +46 -55
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/footer.js +157 -132
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/group.js +1 -1
- package/lib/table/src/group.min.js +1 -1
- package/lib/table/src/header.js +170 -153
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +2758 -2478
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +33 -74
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/table.js +465 -424
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +143 -131
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +37 -48
- package/lib/table/style/style.min.css +1 -1
- package/lib/toolbar/index.js +3 -3
- package/lib/toolbar/index.min.js +1 -1
- package/lib/toolbar/src/toolbar.js +332 -284
- package/lib/toolbar/src/toolbar.min.js +1 -1
- package/lib/toolbar/style/style.css +0 -1
- package/lib/toolbar/style/style.min.css +1 -1
- package/lib/ui/index.js +50 -41
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/comp.js +2 -3
- package/lib/ui/src/comp.min.js +1 -1
- package/lib/ui/src/dom.js +29 -28
- package/lib/ui/src/dom.min.js +1 -1
- package/lib/ui/src/log.js +6 -4
- package/lib/ui/src/log.min.js +1 -1
- package/lib/ui/src/utils.js +7 -7
- package/lib/v-x-e-table/index.js +3 -4
- package/lib/v-x-e-table/index.min.js +1 -1
- package/lib/vxe-colgroup/index.js +3 -4
- package/lib/vxe-colgroup/index.min.js +1 -1
- package/lib/vxe-column/index.js +3 -4
- package/lib/vxe-column/index.min.js +1 -1
- package/lib/vxe-grid/index.js +3 -4
- package/lib/vxe-grid/index.min.js +1 -1
- package/lib/vxe-grid/style/style.css +0 -1
- package/lib/vxe-grid/style/style.min.css +1 -1
- package/lib/vxe-table/index.js +3 -4
- package/lib/vxe-table/index.min.js +1 -1
- package/lib/vxe-table/style/style.css +37 -48
- package/lib/vxe-table/style/style.min.css +1 -1
- package/lib/vxe-toolbar/index.js +3 -4
- package/lib/vxe-toolbar/index.min.js +1 -1
- package/lib/vxe-toolbar/style/style.css +0 -1
- package/lib/vxe-toolbar/style/style.min.css +1 -1
- package/lib/vxe-ui/index.js +3 -4
- package/lib/vxe-ui/index.min.js +1 -1
- package/lib/vxe-v-x-e-table/index.js +3 -4
- package/lib/vxe-v-x-e-table/index.min.js +1 -1
- package/package.json +5 -4
- package/packages/grid/src/grid.ts +127 -65
- package/packages/locale/lang/en-US.ts +2 -1
- package/packages/locale/lang/es-ES.ts +2 -1
- package/packages/locale/lang/hu-HU.ts +2 -1
- package/packages/locale/lang/ja-JP.ts +2 -1
- package/packages/locale/lang/ko-KR.ts +2 -1
- package/packages/locale/lang/pt-BR.ts +2 -1
- package/packages/locale/lang/ru-RU.ts +2 -1
- package/packages/locale/lang/uk-UA.ts +2 -1
- package/packages/locale/lang/vi-VN.ts +2 -1
- package/packages/locale/lang/zh-CHT.ts +2 -1
- package/packages/locale/lang/zh-CN.ts +2 -1
- package/packages/table/module/custom/panel.ts +186 -175
- package/packages/table/module/edit/mixin.ts +32 -23
- package/packages/table/module/export/export-panel.ts +36 -4
- package/packages/table/module/export/import-panel.ts +29 -6
- package/packages/table/module/export/mixin.ts +11 -11
- package/packages/table/module/menu/mixin.ts +2 -2
- package/packages/table/module/validator/mixin.ts +4 -4
- package/packages/table/render/index.ts +20 -11
- package/packages/table/src/body.ts +1 -0
- package/packages/table/src/columnInfo.ts +3 -3
- package/packages/table/src/methods.ts +53 -42
- package/packages/table/src/props.ts +68 -15
- package/packages/table/src/table.ts +99 -54
- package/packages/table/src/util.ts +3 -2
- package/packages/toolbar/src/toolbar.ts +21 -7
- package/packages/ui/index.ts +3 -1
- package/styles/components/table.scss +82 -17
- package/types/all.d.ts +1 -0
- /package/es/{iconfont.1726453742001.ttf → iconfont.1728348263835.ttf} +0 -0
- /package/es/{iconfont.1726453742001.woff → iconfont.1728348263835.woff} +0 -0
- /package/es/{iconfont.1726453742001.woff2 → iconfont.1728348263835.woff2} +0 -0
- /package/lib/{iconfont.1726453742001.ttf → iconfont.1728348263835.ttf} +0 -0
- /package/lib/{iconfont.1726453742001.woff → iconfont.1728348263835.woff} +0 -0
- /package/lib/{iconfont.1726453742001.woff2 → iconfont.1728348263835.woff2} +0 -0
|
@@ -11,21 +11,15 @@ var _dom = require("../../../ui/src/dom");
|
|
|
11
11
|
var _util = require("../../src/util");
|
|
12
12
|
var _log = require("../../../ui/src/log");
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
19
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
20
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
21
|
-
var getConfig = _ui.VxeUI.getConfig,
|
|
22
|
-
validators = _ui.VxeUI.validators;
|
|
14
|
+
const {
|
|
15
|
+
getConfig,
|
|
16
|
+
validators
|
|
17
|
+
} = _ui.VxeUI;
|
|
23
18
|
/**
|
|
24
19
|
* 校验规则
|
|
25
20
|
*/
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
_classCallCheck(this, Rule);
|
|
21
|
+
class Rule {
|
|
22
|
+
constructor(rule) {
|
|
29
23
|
Object.defineProperty(this, "$options", {
|
|
30
24
|
enumerable: true,
|
|
31
25
|
configurable: true,
|
|
@@ -48,25 +42,22 @@ var Rule = /*#__PURE__*/function () {
|
|
|
48
42
|
* 获取校验不通过的消息
|
|
49
43
|
* 支持国际化翻译
|
|
50
44
|
*/
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
get: function get() {
|
|
59
|
-
return this.content;
|
|
60
|
-
}
|
|
61
|
-
}]);
|
|
62
|
-
}();
|
|
45
|
+
get content() {
|
|
46
|
+
return (0, _utils.getFuncText)(this.$options.content || this.$options.message);
|
|
47
|
+
}
|
|
48
|
+
get message() {
|
|
49
|
+
return this.content;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
63
52
|
function validErrorRuleValue(rule, val) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
53
|
+
const {
|
|
54
|
+
type,
|
|
55
|
+
min,
|
|
56
|
+
max,
|
|
57
|
+
pattern
|
|
58
|
+
} = rule;
|
|
59
|
+
const isNumType = type === 'number';
|
|
60
|
+
const numVal = isNumType ? _xeUtils.default.toNumber(val) : _xeUtils.default.getSize(val);
|
|
70
61
|
// 判断数值
|
|
71
62
|
if (isNumType && isNaN(val)) {
|
|
72
63
|
return true;
|
|
@@ -90,8 +81,8 @@ var _default = exports.default = {
|
|
|
90
81
|
/**
|
|
91
82
|
* 完整校验,和 validate 的区别就是会给有效数据中的每一行进行校验
|
|
92
83
|
*/
|
|
93
|
-
_fullValidate
|
|
94
|
-
if (process.env.
|
|
84
|
+
_fullValidate(rows, cb) {
|
|
85
|
+
if (process.env.NODE_ENV === 'development') {
|
|
95
86
|
if (_xeUtils.default.isFunction(cb)) {
|
|
96
87
|
(0, _log.warnLog)('vxe.error.notValidators', ['fullValidate(rows, callback)', 'fullValidate(rows)']);
|
|
97
88
|
}
|
|
@@ -101,8 +92,8 @@ var _default = exports.default = {
|
|
|
101
92
|
/**
|
|
102
93
|
* 快速校验,如果存在记录不通过的记录,则返回不再继续校验(异步校验除外)
|
|
103
94
|
*/
|
|
104
|
-
_validate
|
|
105
|
-
if (process.env.
|
|
95
|
+
_validate(rows, cb) {
|
|
96
|
+
if (process.env.NODE_ENV === 'development') {
|
|
106
97
|
if (_xeUtils.default.isFunction(cb)) {
|
|
107
98
|
(0, _log.warnLog)('vxe.error.notValidators', ['validate(rows, callback)', 'validate(rows)']);
|
|
108
99
|
}
|
|
@@ -112,32 +103,35 @@ var _default = exports.default = {
|
|
|
112
103
|
/**
|
|
113
104
|
* 聚焦到校验通过的单元格并弹出校验错误提示
|
|
114
105
|
*/
|
|
115
|
-
handleValidError
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
106
|
+
handleValidError(params) {
|
|
107
|
+
const {
|
|
108
|
+
validOpts
|
|
109
|
+
} = this;
|
|
110
|
+
return new Promise(resolve => {
|
|
119
111
|
if (validOpts.autoPos === false) {
|
|
120
|
-
|
|
112
|
+
this.emitEvent('valid-error', params);
|
|
121
113
|
resolve();
|
|
122
114
|
} else {
|
|
123
|
-
|
|
115
|
+
this.handleEdit(params, {
|
|
124
116
|
type: 'valid-error',
|
|
125
117
|
trigger: 'call'
|
|
126
|
-
}).then(
|
|
127
|
-
setTimeout(
|
|
128
|
-
resolve(
|
|
118
|
+
}).then(() => {
|
|
119
|
+
setTimeout(() => {
|
|
120
|
+
resolve(this.showValidTooltip(params));
|
|
129
121
|
}, 10);
|
|
130
122
|
});
|
|
131
123
|
}
|
|
132
124
|
});
|
|
133
125
|
},
|
|
134
|
-
handleErrMsgMode
|
|
135
|
-
|
|
126
|
+
handleErrMsgMode(validErrMaps) {
|
|
127
|
+
const {
|
|
128
|
+
validOpts
|
|
129
|
+
} = this;
|
|
136
130
|
if (validOpts.msgMode === 'single') {
|
|
137
|
-
|
|
138
|
-
|
|
131
|
+
const keys = Object.keys(validErrMaps);
|
|
132
|
+
const resMaps = validErrMaps;
|
|
139
133
|
if (keys.length) {
|
|
140
|
-
|
|
134
|
+
const firstKey = keys[0];
|
|
141
135
|
resMaps[firstKey] = validErrMaps[firstKey];
|
|
142
136
|
}
|
|
143
137
|
return resMaps;
|
|
@@ -153,16 +147,17 @@ var _default = exports.default = {
|
|
|
153
147
|
* 如果只传 callback 否则默认验证整个表格数据
|
|
154
148
|
* 返回 Promise 对象,或者使用回调方式
|
|
155
149
|
*/
|
|
156
|
-
beginValidate
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
afterFullData
|
|
161
|
-
visibleColumn
|
|
162
|
-
treeConfig
|
|
163
|
-
treeOpts
|
|
164
|
-
|
|
165
|
-
|
|
150
|
+
beginValidate(rows, cb, isFull) {
|
|
151
|
+
const validRest = {};
|
|
152
|
+
const {
|
|
153
|
+
editRules,
|
|
154
|
+
afterFullData,
|
|
155
|
+
visibleColumn,
|
|
156
|
+
treeConfig,
|
|
157
|
+
treeOpts
|
|
158
|
+
} = this;
|
|
159
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
160
|
+
let validList;
|
|
166
161
|
if (rows === true) {
|
|
167
162
|
validList = afterFullData;
|
|
168
163
|
} else if (rows) {
|
|
@@ -175,43 +170,44 @@ var _default = exports.default = {
|
|
|
175
170
|
if (!validList) {
|
|
176
171
|
validList = this.getInsertRecords().concat(this.getUpdateRecords());
|
|
177
172
|
}
|
|
178
|
-
|
|
173
|
+
const rowValidErrs = [];
|
|
179
174
|
this.lastCallTime = Date.now();
|
|
180
175
|
this.validRuleErr = false; // 如果为快速校验,当存在某列校验不通过时将终止执行
|
|
181
176
|
this.clearValidate();
|
|
182
|
-
|
|
177
|
+
const validErrMaps = {};
|
|
183
178
|
if (editRules) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (isFull || !
|
|
187
|
-
|
|
188
|
-
columns.forEach(
|
|
189
|
-
if ((isFull || !
|
|
190
|
-
colVailds.push(
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
179
|
+
const columns = this.getColumns();
|
|
180
|
+
const handleVaild = row => {
|
|
181
|
+
if (isFull || !this.validRuleErr) {
|
|
182
|
+
const colVailds = [];
|
|
183
|
+
columns.forEach(column => {
|
|
184
|
+
if ((isFull || !this.validRuleErr) && _xeUtils.default.has(editRules, column.property)) {
|
|
185
|
+
colVailds.push(this.validCellRules('all', row, column).catch(({
|
|
186
|
+
rule,
|
|
187
|
+
rules
|
|
188
|
+
}) => {
|
|
189
|
+
const rest = {
|
|
190
|
+
rule,
|
|
191
|
+
rules,
|
|
192
|
+
rowIndex: this.getRowIndex(row),
|
|
193
|
+
row,
|
|
194
|
+
columnIndex: this.getColumnIndex(column),
|
|
195
|
+
column,
|
|
200
196
|
field: column.property,
|
|
201
|
-
$table:
|
|
197
|
+
$table: this
|
|
202
198
|
};
|
|
203
199
|
if (!validRest[column.property]) {
|
|
204
200
|
validRest[column.property] = [];
|
|
205
201
|
}
|
|
206
|
-
validErrMaps[
|
|
207
|
-
column
|
|
208
|
-
row
|
|
209
|
-
rule
|
|
202
|
+
validErrMaps[`${(0, _util.getRowid)(this, row)}:${column.id}`] = {
|
|
203
|
+
column,
|
|
204
|
+
row,
|
|
205
|
+
rule,
|
|
210
206
|
content: rule.content
|
|
211
207
|
};
|
|
212
208
|
validRest[column.property].push(rest);
|
|
213
209
|
if (!isFull) {
|
|
214
|
-
|
|
210
|
+
this.validRuleErr = true;
|
|
215
211
|
return Promise.reject(rest);
|
|
216
212
|
}
|
|
217
213
|
}));
|
|
@@ -227,10 +223,10 @@ var _default = exports.default = {
|
|
|
227
223
|
} else {
|
|
228
224
|
validList.forEach(handleVaild);
|
|
229
225
|
}
|
|
230
|
-
return Promise.all(rowValidErrs).then(
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
return
|
|
226
|
+
return Promise.all(rowValidErrs).then(() => {
|
|
227
|
+
const ruleProps = Object.keys(validRest);
|
|
228
|
+
this.validErrorMaps = this.handleErrMsgMode(validErrMaps);
|
|
229
|
+
return this.$nextTick().then(() => {
|
|
234
230
|
if (ruleProps.length) {
|
|
235
231
|
return Promise.reject(validRest[ruleProps[0]][0]);
|
|
236
232
|
}
|
|
@@ -238,10 +234,10 @@ var _default = exports.default = {
|
|
|
238
234
|
cb();
|
|
239
235
|
}
|
|
240
236
|
});
|
|
241
|
-
}).catch(
|
|
242
|
-
return new Promise(
|
|
243
|
-
|
|
244
|
-
|
|
237
|
+
}).catch(firstErrParams => {
|
|
238
|
+
return new Promise((resolve, reject) => {
|
|
239
|
+
const finish = () => {
|
|
240
|
+
this.$nextTick(() => {
|
|
245
241
|
if (cb) {
|
|
246
242
|
cb(validRest);
|
|
247
243
|
resolve();
|
|
@@ -255,46 +251,48 @@ var _default = exports.default = {
|
|
|
255
251
|
}
|
|
256
252
|
});
|
|
257
253
|
};
|
|
258
|
-
|
|
259
|
-
firstErrParams.cell =
|
|
254
|
+
const posAndFinish = () => {
|
|
255
|
+
firstErrParams.cell = this.getCellElement(firstErrParams.row, firstErrParams.column);
|
|
260
256
|
(0, _dom.scrollToView)(firstErrParams.cell);
|
|
261
|
-
|
|
257
|
+
this.handleValidError(firstErrParams).then(finish);
|
|
262
258
|
};
|
|
263
259
|
/**
|
|
264
260
|
* 当校验不通过时
|
|
265
261
|
* 将表格滚动到可视区
|
|
266
262
|
* 由于提示信息至少需要占一行,定位向上偏移一行
|
|
267
263
|
*/
|
|
268
|
-
if (
|
|
264
|
+
if (this.validOpts.autoPos === false) {
|
|
269
265
|
finish();
|
|
270
266
|
} else {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
267
|
+
const row = firstErrParams.row;
|
|
268
|
+
const column = firstErrParams.column;
|
|
269
|
+
const rowIndex = afterFullData.indexOf(row);
|
|
270
|
+
const columnIndex = visibleColumn.indexOf(column);
|
|
271
|
+
const targetRow = rowIndex > 0 ? afterFullData[rowIndex - 1] : row;
|
|
272
|
+
const targetColumn = columnIndex > 0 ? visibleColumn[columnIndex - 1] : column;
|
|
273
|
+
this.scrollToRow(targetRow, targetColumn).then(posAndFinish);
|
|
278
274
|
}
|
|
279
275
|
});
|
|
280
276
|
});
|
|
281
277
|
} else {
|
|
282
278
|
this.validErrorMaps = {};
|
|
283
279
|
}
|
|
284
|
-
return this.$nextTick().then(
|
|
280
|
+
return this.$nextTick().then(() => {
|
|
285
281
|
if (cb) {
|
|
286
282
|
cb();
|
|
287
283
|
}
|
|
288
284
|
});
|
|
289
285
|
},
|
|
290
|
-
hasCellRules
|
|
291
|
-
|
|
292
|
-
|
|
286
|
+
hasCellRules(type, row, column) {
|
|
287
|
+
const {
|
|
288
|
+
editRules
|
|
289
|
+
} = this;
|
|
290
|
+
const {
|
|
291
|
+
property
|
|
292
|
+
} = column;
|
|
293
293
|
if (property && editRules) {
|
|
294
|
-
|
|
295
|
-
return rules && _xeUtils.default.find(rules,
|
|
296
|
-
return type === 'all' || !rule.trigger || type === rule.trigger;
|
|
297
|
-
});
|
|
294
|
+
const rules = _xeUtils.default.get(editRules, property);
|
|
295
|
+
return rules && _xeUtils.default.find(rules, rule => type === 'all' || !rule.trigger || type === rule.trigger);
|
|
298
296
|
}
|
|
299
297
|
return false;
|
|
300
298
|
},
|
|
@@ -312,47 +310,52 @@ var _default = exports.default = {
|
|
|
312
310
|
* validator=Function({ cellValue, rule, rules, row, column, rowIndex, columnIndex }) 自定义校验,接收一个 Promise
|
|
313
311
|
* trigger=blur|change 触发方式(除非特殊场景,否则默认为空就行)
|
|
314
312
|
*/
|
|
315
|
-
validCellRules
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
313
|
+
validCellRules(validType, row, column, val) {
|
|
314
|
+
const {
|
|
315
|
+
editRules
|
|
316
|
+
} = this;
|
|
317
|
+
const {
|
|
318
|
+
property
|
|
319
|
+
} = column;
|
|
320
|
+
const errorRules = [];
|
|
321
|
+
const syncValidList = [];
|
|
321
322
|
if (property && editRules) {
|
|
322
|
-
|
|
323
|
+
const rules = _xeUtils.default.get(editRules, property);
|
|
323
324
|
if (rules) {
|
|
324
|
-
|
|
325
|
-
rules.forEach(
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
325
|
+
const cellValue = _xeUtils.default.isUndefined(val) ? _xeUtils.default.get(row, property) : val;
|
|
326
|
+
rules.forEach(rule => {
|
|
327
|
+
const {
|
|
328
|
+
type,
|
|
329
|
+
trigger,
|
|
330
|
+
required,
|
|
331
|
+
validator
|
|
332
|
+
} = rule;
|
|
330
333
|
if (validType === 'all' || !trigger || validType === trigger) {
|
|
331
334
|
if (validator) {
|
|
332
|
-
|
|
333
|
-
cellValue
|
|
334
|
-
rule
|
|
335
|
-
rules
|
|
336
|
-
row
|
|
337
|
-
rowIndex:
|
|
338
|
-
column
|
|
339
|
-
columnIndex:
|
|
335
|
+
const validParams = {
|
|
336
|
+
cellValue,
|
|
337
|
+
rule,
|
|
338
|
+
rules,
|
|
339
|
+
row,
|
|
340
|
+
rowIndex: this.getRowIndex(row),
|
|
341
|
+
column,
|
|
342
|
+
columnIndex: this.getColumnIndex(column),
|
|
340
343
|
field: column.property,
|
|
341
|
-
$table:
|
|
344
|
+
$table: this
|
|
342
345
|
};
|
|
343
|
-
|
|
346
|
+
let customValid;
|
|
344
347
|
if (_xeUtils.default.isString(validator)) {
|
|
345
|
-
|
|
348
|
+
const gvItem = validators.get(validator);
|
|
346
349
|
if (gvItem) {
|
|
347
350
|
if (gvItem.cellValidatorMethod) {
|
|
348
351
|
customValid = gvItem.cellValidatorMethod(validParams);
|
|
349
352
|
} else {
|
|
350
|
-
if (process.env.
|
|
353
|
+
if (process.env.NODE_ENV === 'development') {
|
|
351
354
|
(0, _log.warnLog)('vxe.error.notValidators', [validator]);
|
|
352
355
|
}
|
|
353
356
|
}
|
|
354
357
|
} else {
|
|
355
|
-
if (process.env.
|
|
358
|
+
if (process.env.NODE_ENV === 'development') {
|
|
356
359
|
(0, _log.errLog)('vxe.error.notValidators', [validator]);
|
|
357
360
|
}
|
|
358
361
|
}
|
|
@@ -361,20 +364,20 @@ var _default = exports.default = {
|
|
|
361
364
|
}
|
|
362
365
|
if (customValid) {
|
|
363
366
|
if (_xeUtils.default.isError(customValid)) {
|
|
364
|
-
|
|
367
|
+
this.validRuleErr = true;
|
|
365
368
|
errorRules.push(new Rule({
|
|
366
369
|
type: 'custom',
|
|
367
|
-
trigger
|
|
370
|
+
trigger,
|
|
368
371
|
content: customValid.message,
|
|
369
372
|
rule: new Rule(rule)
|
|
370
373
|
}));
|
|
371
374
|
} else if (customValid.catch) {
|
|
372
375
|
// 如果为异步校验(注:异步校验是并发无序的)
|
|
373
|
-
syncValidList.push(customValid.catch(
|
|
374
|
-
|
|
376
|
+
syncValidList.push(customValid.catch(e => {
|
|
377
|
+
this.validRuleErr = true;
|
|
375
378
|
errorRules.push(new Rule({
|
|
376
379
|
type: 'custom',
|
|
377
|
-
trigger
|
|
380
|
+
trigger,
|
|
378
381
|
content: e && e.message ? e.message : rule.content || rule.message,
|
|
379
382
|
rule: new Rule(rule)
|
|
380
383
|
}));
|
|
@@ -382,9 +385,9 @@ var _default = exports.default = {
|
|
|
382
385
|
}
|
|
383
386
|
}
|
|
384
387
|
} else {
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
+
const isArrType = type === 'array';
|
|
389
|
+
const isArrVal = _xeUtils.default.isArray(cellValue);
|
|
390
|
+
let hasEmpty = true;
|
|
388
391
|
if (isArrType || isArrVal) {
|
|
389
392
|
hasEmpty = !isArrVal || !cellValue.length;
|
|
390
393
|
} else if (_xeUtils.default.isString(cellValue)) {
|
|
@@ -393,7 +396,7 @@ var _default = exports.default = {
|
|
|
393
396
|
hasEmpty = (0, _utils.eqEmptyValue)(cellValue);
|
|
394
397
|
}
|
|
395
398
|
if (required ? hasEmpty || validErrorRuleValue(rule, cellValue) : !hasEmpty && validErrorRuleValue(rule, cellValue)) {
|
|
396
|
-
|
|
399
|
+
this.validRuleErr = true;
|
|
397
400
|
errorRules.push(new Rule(rule));
|
|
398
401
|
}
|
|
399
402
|
}
|
|
@@ -401,9 +404,9 @@ var _default = exports.default = {
|
|
|
401
404
|
});
|
|
402
405
|
}
|
|
403
406
|
}
|
|
404
|
-
return Promise.all(syncValidList).then(
|
|
407
|
+
return Promise.all(syncValidList).then(() => {
|
|
405
408
|
if (errorRules.length) {
|
|
406
|
-
|
|
409
|
+
const rest = {
|
|
407
410
|
rules: errorRules,
|
|
408
411
|
rule: errorRules[0]
|
|
409
412
|
};
|
|
@@ -411,16 +414,15 @@ var _default = exports.default = {
|
|
|
411
414
|
}
|
|
412
415
|
});
|
|
413
416
|
},
|
|
414
|
-
_clearValidate
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
validErrorMaps
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
}
|
|
423
|
-
var validErrMaps = {};
|
|
417
|
+
_clearValidate(rows, fieldOrColumn) {
|
|
418
|
+
const {
|
|
419
|
+
validOpts,
|
|
420
|
+
validErrorMaps
|
|
421
|
+
} = this;
|
|
422
|
+
const validTip = this.$refs.validTip;
|
|
423
|
+
const rowList = _xeUtils.default.isArray(rows) ? rows : rows ? [rows] : [];
|
|
424
|
+
const colList = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : (fieldOrColumn ? [fieldOrColumn] : []).map(column => (0, _util.handleFieldOrColumn)(this, column));
|
|
425
|
+
let validErrMaps = {};
|
|
424
426
|
if (validTip && validTip.visible) {
|
|
425
427
|
validTip.close();
|
|
426
428
|
}
|
|
@@ -431,28 +433,24 @@ var _default = exports.default = {
|
|
|
431
433
|
}
|
|
432
434
|
if (rowList.length && colList.length) {
|
|
433
435
|
validErrMaps = Object.assign({}, validErrorMaps);
|
|
434
|
-
rowList.forEach(
|
|
435
|
-
colList.forEach(
|
|
436
|
-
|
|
436
|
+
rowList.forEach(row => {
|
|
437
|
+
colList.forEach(column => {
|
|
438
|
+
const validKey = `${(0, _util.getRowid)(this, row)}:${column.id}`;
|
|
437
439
|
if (validErrMaps[validKey]) {
|
|
438
440
|
delete validErrMaps[validKey];
|
|
439
441
|
}
|
|
440
442
|
});
|
|
441
443
|
});
|
|
442
444
|
} else if (rowList.length) {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
});
|
|
446
|
-
_xeUtils.default.each(validErrorMaps, function (item, key) {
|
|
445
|
+
const rowIdList = rowList.map(row => `${(0, _util.getRowid)(this, row)}`);
|
|
446
|
+
_xeUtils.default.each(validErrorMaps, (item, key) => {
|
|
447
447
|
if (rowIdList.indexOf(key.split(':')[0]) > -1) {
|
|
448
448
|
validErrMaps[key] = item;
|
|
449
449
|
}
|
|
450
450
|
});
|
|
451
451
|
} else if (colList.length) {
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
});
|
|
455
|
-
_xeUtils.default.each(validErrorMaps, function (item, key) {
|
|
452
|
+
const colidList = colList.map(column => `${column.id}`);
|
|
453
|
+
_xeUtils.default.each(validErrorMaps, (item, key) => {
|
|
456
454
|
if (colidList.indexOf(key.split(':')[1]) > -1) {
|
|
457
455
|
validErrMaps[key] = item;
|
|
458
456
|
}
|
|
@@ -464,40 +462,45 @@ var _default = exports.default = {
|
|
|
464
462
|
/**
|
|
465
463
|
* 触发校验
|
|
466
464
|
*/
|
|
467
|
-
triggerValidate
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
editStore
|
|
471
|
-
editRules
|
|
472
|
-
editOpts
|
|
473
|
-
validOpts
|
|
474
|
-
|
|
465
|
+
triggerValidate(type) {
|
|
466
|
+
const {
|
|
467
|
+
editConfig,
|
|
468
|
+
editStore,
|
|
469
|
+
editRules,
|
|
470
|
+
editOpts,
|
|
471
|
+
validOpts
|
|
472
|
+
} = this;
|
|
473
|
+
const {
|
|
474
|
+
actived
|
|
475
|
+
} = editStore;
|
|
475
476
|
// 检查清除校验消息
|
|
476
477
|
if (editRules && validOpts.msgMode === 'single') {
|
|
477
478
|
this.validErrorMaps = {};
|
|
478
479
|
}
|
|
479
480
|
// 校验单元格
|
|
480
481
|
if (editConfig && editRules && actived.row) {
|
|
481
|
-
|
|
482
|
-
row
|
|
483
|
-
column
|
|
484
|
-
cell
|
|
482
|
+
const {
|
|
483
|
+
row,
|
|
484
|
+
column,
|
|
485
|
+
cell
|
|
486
|
+
} = actived.args;
|
|
485
487
|
if (this.hasCellRules(type, row, column)) {
|
|
486
|
-
return this.validCellRules(type, row, column).then(
|
|
488
|
+
return this.validCellRules(type, row, column).then(() => {
|
|
487
489
|
if (editOpts.mode === 'row') {
|
|
488
|
-
|
|
490
|
+
this.clearValidate(row, column);
|
|
489
491
|
}
|
|
490
|
-
}).catch(
|
|
491
|
-
|
|
492
|
+
}).catch(({
|
|
493
|
+
rule
|
|
494
|
+
}) => {
|
|
492
495
|
// 如果校验不通过与触发方式一致,则聚焦提示错误,否则跳过并不作任何处理
|
|
493
496
|
if (!rule.trigger || type === rule.trigger) {
|
|
494
|
-
|
|
495
|
-
rule
|
|
496
|
-
row
|
|
497
|
-
column
|
|
498
|
-
cell
|
|
497
|
+
const rest = {
|
|
498
|
+
rule,
|
|
499
|
+
row,
|
|
500
|
+
column,
|
|
501
|
+
cell
|
|
499
502
|
};
|
|
500
|
-
|
|
503
|
+
this.showValidTooltip(rest);
|
|
501
504
|
return Promise.reject(rest);
|
|
502
505
|
}
|
|
503
506
|
return Promise.resolve();
|
|
@@ -509,34 +512,42 @@ var _default = exports.default = {
|
|
|
509
512
|
/**
|
|
510
513
|
* 弹出校验错误提示
|
|
511
514
|
*/
|
|
512
|
-
showValidTooltip
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
515
|
+
showValidTooltip(params) {
|
|
516
|
+
const {
|
|
517
|
+
$refs,
|
|
518
|
+
height,
|
|
519
|
+
validStore,
|
|
520
|
+
validErrorMaps,
|
|
521
|
+
tableData,
|
|
522
|
+
validOpts
|
|
523
|
+
} = this;
|
|
524
|
+
const {
|
|
525
|
+
rule,
|
|
526
|
+
row,
|
|
527
|
+
column,
|
|
528
|
+
cell
|
|
529
|
+
} = params;
|
|
530
|
+
const validTip = $refs.validTip;
|
|
531
|
+
const content = rule.content;
|
|
525
532
|
validStore.visible = true;
|
|
526
533
|
if (validOpts.msgMode === 'single') {
|
|
527
|
-
this.validErrorMaps =
|
|
528
|
-
column:
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
534
|
+
this.validErrorMaps = {
|
|
535
|
+
[`${(0, _util.getRowid)(this, row)}:${column.id}`]: {
|
|
536
|
+
column,
|
|
537
|
+
row,
|
|
538
|
+
rule,
|
|
539
|
+
content
|
|
540
|
+
}
|
|
541
|
+
};
|
|
533
542
|
} else {
|
|
534
|
-
this.validErrorMaps = Object.assign({}, validErrorMaps,
|
|
535
|
-
column:
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
543
|
+
this.validErrorMaps = Object.assign({}, validErrorMaps, {
|
|
544
|
+
[`${(0, _util.getRowid)(this, row)}:${column.id}`]: {
|
|
545
|
+
column,
|
|
546
|
+
row,
|
|
547
|
+
rule,
|
|
548
|
+
content
|
|
549
|
+
}
|
|
550
|
+
});
|
|
540
551
|
}
|
|
541
552
|
this.emitEvent('valid-error', params, null);
|
|
542
553
|
if (validTip) {
|