UNPKG

3.33 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4exports.getRules = getRules;
5exports.getFieldInitCfg = getFieldInitCfg;
6function getCfgFromProps(props, type) {
7 if (type in props) {
8 return props[type];
9 }
10
11 return undefined;
12}
13
14function getRule(ruleName, props) {
15 var _ref;
16
17 return _ref = {}, _ref[ruleName] = props[ruleName], _ref.message = getCfgFromProps(props, ruleName + 'Message'), _ref.trigger = getCfgFromProps(props, ruleName + 'Trigger'), _ref;
18}
19
20function getValueName(props, displayName) {
21 if (props.valueName) {
22 return props.valueName;
23 }
24
25 if (typeof displayName === 'string') {
26 // Next Components are all wrappered by configProvider
27 var componentName = displayName.replace(/Config\(/g, '').replace(/\)/g, '');
28 if (['Switch', 'Checkbox', 'Radio'].indexOf(componentName) !== -1) {
29 return 'checked';
30 }
31 }
32
33 return 'value';
34}
35
36function getRules(props, labelForErrorMessage) {
37 var result = [];
38
39 // required
40 if (props.required) {
41 result.push(getRule('required', props));
42 }
43
44 var maxLength = Number(props.maxLength);
45 var minLength = Number(props.minLength);
46 if (minLength || maxLength) {
47 result.push({
48 minLength: minLength,
49 maxLength: maxLength,
50 // minLengthMessage maxLengthMessage had been deprected, please use minmaxLength. TODO: removed in 2.0
51 message: getCfgFromProps(props, 'minmaxLengthMessage') || getCfgFromProps(props, 'minLengthMessage') || getCfgFromProps(props, 'maxLengthMessage'),
52 trigger: getCfgFromProps(props, 'minmaxLengthTrigger') || getCfgFromProps(props, 'minLengthTrigger') || getCfgFromProps(props, 'maxLengthTrigger')
53 });
54 }
55
56 // length
57 if (props.length) {
58 result.push(getRule('length', props));
59 }
60
61 // pattern
62 if (props.pattern) {
63 result.push(getRule('pattern', props));
64 }
65
66 // format
67 if (['number', 'tel', 'url', 'email'].indexOf(props.format) > -1) {
68 result.push(getRule('format', props));
69 }
70
71 var max = Number(props.max);
72 var min = Number(props.min);
73 // max min
74 if (max || min) {
75 result.push({
76 min: min,
77 max: max,
78 // minMessage maxMessage had been deprected, please use minmaxLength. TODO: removed in 2.0
79 message: getCfgFromProps(props, 'minmaxMessage') || getCfgFromProps(props, 'minMessage') || getCfgFromProps(props, 'maxMessage'),
80 trigger: getCfgFromProps(props, 'minmaxTrigger') || getCfgFromProps(props, 'minTrigger') || getCfgFromProps(props, 'maxTrigger')
81 });
82 }
83
84 if (props.validator && typeof props.validator === 'function') {
85 result.push({
86 validator: props.validator,
87 trigger: getCfgFromProps(props, 'validatorTrigger')
88 });
89 }
90
91 if (labelForErrorMessage) {
92 result.forEach(function (r) {
93 r.aliasName = labelForErrorMessage;
94 });
95 }
96
97 return result;
98}
99
100function getFieldInitCfg(props, displayName, labelForErrorMessage) {
101 return {
102 valueName: getValueName(props, displayName),
103 trigger: props.trigger ? props.trigger : 'onChange',
104 autoValidate: props.autoValidate,
105 rules: getRules(props, labelForErrorMessage)
106 };
107}
\No newline at end of file