UNPKG

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