iglooform 2.5.49 → 2.5.51

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.
@@ -42,21 +42,18 @@ import emptyIcon from '../radio/style/empty.svg';
42
42
  import './style/index.less'; // add disabled attributes to checkbox options based on mutually exclusion config
43
43
 
44
44
  var addDisabledAttr = function addDisabledAttr(options, mutuallyExclusions, checkedValues) {
45
- if (!mutuallyExclusions || !checkedValues) return options;
46
- checkedValues = Array.isArray(checkedValues) ? checkedValues : [checkedValues];
45
+ if (!mutuallyExclusions || !Object.keys(mutuallyExclusions).length || !(checkedValues === null || checkedValues === void 0 ? void 0 : checkedValues.length)) return options;
47
46
  return options.map(function (_ref) {
48
- var _checkedValues;
49
-
50
47
  var value = _ref.value,
51
48
  rest = _objectWithoutProperties(_ref, _excluded);
52
49
 
53
50
  return _objectSpread(_objectSpread({}, rest), {}, {
54
51
  value: value,
55
- disabled: !!value && !!((_checkedValues = checkedValues) === null || _checkedValues === void 0 ? void 0 : _checkedValues.some(function (v) {
52
+ disabled: !!(value && (checkedValues === null || checkedValues === void 0 ? void 0 : checkedValues.some(function (v) {
56
53
  var _mutuallyExclusions$S, _mutuallyExclusions$v;
57
54
 
58
- return ((_mutuallyExclusions$S = mutuallyExclusions[String(v)]) === null || _mutuallyExclusions$S === void 0 ? void 0 : _mutuallyExclusions$S.includes(String(value))) || ((_mutuallyExclusions$v = mutuallyExclusions[value]) === null || _mutuallyExclusions$v === void 0 ? void 0 : _mutuallyExclusions$v.includes(String(v)));
59
- }))
55
+ return v !== value && (((_mutuallyExclusions$S = mutuallyExclusions[String(v)]) === null || _mutuallyExclusions$S === void 0 ? void 0 : _mutuallyExclusions$S.includes(String(value))) || ((_mutuallyExclusions$v = mutuallyExclusions[value]) === null || _mutuallyExclusions$v === void 0 ? void 0 : _mutuallyExclusions$v.includes(String(v))));
56
+ })))
60
57
  });
61
58
  });
62
59
  };
@@ -1,8 +1,11 @@
1
1
  import { DatePickerProps, RangePickerProps, MonthPickerProps, WeekPickerProps } from 'antd/es/date-picker';
2
2
  import { FC, IglooComponentProps } from '../types';
3
+ import { Moment } from 'moment';
3
4
  import './style/index.less';
4
5
  export { default as IglooBuddhistDatePicker } from './buddhist';
5
- declare type Props = DatePickerProps & IglooComponentProps;
6
+ declare type Props = Omit<DatePickerProps, 'value'> & IglooComponentProps & {
7
+ value?: Moment | null | 0;
8
+ };
6
9
  declare const IglooDatePicker: FC<Props>;
7
10
  export default IglooDatePicker;
8
11
  export declare const IglooRangePicker: FC<RangePickerProps & IglooComponentProps>;
@@ -62,7 +62,7 @@ var IglooDatePicker = function IglooDatePicker(_ref) {
62
62
  setFocus = _useState2[1];
63
63
 
64
64
  return _jsx(_DatePicker, _objectSpread(_objectSpread({}, omit(props, formMethods)), {}, {
65
- value: moment(value),
65
+ value: value || value === 0 ? moment(value) : undefined,
66
66
  placeholder: placeholder || dateFormater,
67
67
  format: format || dateFormater,
68
68
  inputReadOnly: true,
@@ -89,7 +89,7 @@ IglooDatePicker.formItemPropsHandler = function (_ref2) {
89
89
  return moment(value).format(format || dateFormater);
90
90
  },
91
91
  valueFormater: function valueFormater(value) {
92
- return +moment(value);
92
+ return value ? +moment(value) : value;
93
93
  },
94
94
  'element-allowClear': false
95
95
  };
@@ -91,7 +91,8 @@ var Element = function Element(_ref) {
91
91
  subscribedFields = config.subscribedFields,
92
92
  disabled = config.disabled,
93
93
  extraLabel = config.extraLabel,
94
- requiredAsserts = config.requiredAsserts;
94
+ requiredAsserts = config.requiredAsserts,
95
+ shouldRenderCode = config.shouldRenderCode;
95
96
  var dependentField = dependencies || [];
96
97
 
97
98
  if (Array.isArray(subscribedFields)) {
@@ -123,7 +124,7 @@ var Element = function Element(_ref) {
123
124
  });
124
125
  }
125
126
 
126
- if ((shouldRender || getOptions || typeof extraLabel === 'function') && !Array.isArray(subscribedFields)) {
127
+ if ((shouldRender || shouldRenderCode || getOptions || typeof extraLabel === 'function') && !Array.isArray(subscribedFields)) {
127
128
  dependentField.push('SUBSCRIBE_ALL');
128
129
  }
129
130
 
@@ -32,7 +32,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
32
32
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
33
33
  import { useState, useContext, useEffect, useReducer, useRef } from 'react';
34
34
  import HStep from '../hstep';
35
- import { calcNamePath, getRuleValidation } from '../../utils/form-utils';
35
+ import { calcNamePath, getRuleValidation, calcShouldRender } from '../../utils/form-utils';
36
36
  import FormContext from '../../form-context';
37
37
  import StepContext from '../../form-step-context';
38
38
  import './style/index.less';
@@ -105,26 +105,45 @@ var HSteps = function HSteps(_ref) {
105
105
  useEffect(function () {
106
106
  var subscribe = elements.some(function (_ref2) {
107
107
  var shouldRender = _ref2.shouldRender,
108
- getButtonDisabledState = _ref2.getButtonDisabledState;
109
- return Boolean(shouldRender) || Boolean(getButtonDisabledState);
108
+ getButtonDisabledState = _ref2.getButtonDisabledState,
109
+ shouldRenderCode = _ref2.shouldRenderCode;
110
+ return Boolean(shouldRender) || Boolean(getButtonDisabledState) || Boolean(shouldRenderCode);
110
111
  });
111
112
 
112
113
  if (subscribe) {
113
114
  Array.isArray(subscribedFields) ? registerDependencies(subscribedFields, dispatch) : registerDependencies('SUBSCRIBE_ALL', dispatch);
114
115
  }
116
+
117
+ var dependentField = [];
118
+ elements.forEach(function (_ref3) {
119
+ var asserts = _ref3.asserts;
120
+ if (!(asserts === null || asserts === void 0 ? void 0 : asserts.length)) return;
121
+ asserts.forEach(function (_ref4) {
122
+ var field = _ref4.field;
123
+ return dependentField.push(field);
124
+ });
125
+ });
126
+ dependentField.length && registerDependencies(dependentField, dispatch);
115
127
  }, []);
116
128
  useEffect(function () {
117
129
  if (currentStep === undefined || currentStep === current) return;
118
130
  setCurrent(currentStep);
119
131
  }, [currentStep]);
120
- var renderElements = elements.filter(function (step) {
121
- invariant(step.type === 'Step', 'Child of steps should be Step');
122
- invariant(!step.validationRule || getRuleValidationApi, 'Please provide getRuleValidationApi in Form props');
123
- return typeof step.shouldRender !== 'function' || step.shouldRender(form);
132
+ var renderElements = elements.filter(function (_ref5) {
133
+ var type = _ref5.type,
134
+ curName = _ref5.name,
135
+ validationRule = _ref5.validationRule,
136
+ dependencies = _ref5.dependencies,
137
+ asserts = _ref5.asserts,
138
+ shouldRender = _ref5.shouldRender,
139
+ shouldRenderCode = _ref5.shouldRenderCode;
140
+ invariant(type === 'Step', 'Child of steps should be Step');
141
+ invariant(!validationRule || getRuleValidationApi, 'Please provide getRuleValidationApi in Form props');
142
+ return calcShouldRender(calcNamePath(calcNamePath(parentName, name), curName), dependencies, asserts, shouldRender, shouldRenderCode, form);
124
143
  });
125
144
 
126
145
  var handleNext = /*#__PURE__*/function () {
127
- var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
146
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
128
147
  var _allFields$filter;
129
148
 
130
149
  var allFields, allValues, _renderElements$curre, currentName, handleNext, validationRule, namePath, fields, _iterator, _step, collapseSection, res, errors;
@@ -137,11 +156,11 @@ var HSteps = function HSteps(_ref) {
137
156
  allValues = form === null || form === void 0 ? void 0 : form.getFieldsValue(true);
138
157
  _renderElements$curre = renderElements[current], currentName = _renderElements$curre.name, handleNext = _renderElements$curre.handleNext, validationRule = _renderElements$curre.validationRule;
139
158
  namePath = calcNamePath(name, currentName);
140
- fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref4) {
141
- var name = _ref4.name;
159
+ fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref7) {
160
+ var name = _ref7.name;
142
161
  return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
143
- })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref5) {
144
- var name = _ref5.name;
162
+ })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref8) {
163
+ var name = _ref8.name;
145
164
  return name;
146
165
  });
147
166
  _context.prev = 5;
@@ -245,7 +264,7 @@ var HSteps = function HSteps(_ref) {
245
264
  }));
246
265
 
247
266
  return function handleNext() {
248
- return _ref3.apply(this, arguments);
267
+ return _ref6.apply(this, arguments);
249
268
  };
250
269
  }();
251
270
 
@@ -392,14 +411,14 @@ var HSteps = function HSteps(_ref) {
392
411
  margin: 0
393
412
  },
394
413
  children: _jsx(Confirmation, {})
395
- }), confirmations && Object.entries(confirmations).map(function (_ref6) {
396
- var _ref7 = _slicedToArray(_ref6, 2),
397
- key = _ref7[0],
398
- _ref7$ = _ref7[1],
399
- required = _ref7$.required,
400
- _ref7$$confirmation = _ref7$.confirmation,
401
- confirmation = _ref7$$confirmation === void 0 ? {} : _ref7$$confirmation,
402
- requiredMessage = _ref7$.requiredMessage;
414
+ }), confirmations && Object.entries(confirmations).map(function (_ref9) {
415
+ var _ref10 = _slicedToArray(_ref9, 2),
416
+ key = _ref10[0],
417
+ _ref10$ = _ref10[1],
418
+ required = _ref10$.required,
419
+ _ref10$$confirmation = _ref10$.confirmation,
420
+ confirmation = _ref10$$confirmation === void 0 ? {} : _ref10$$confirmation,
421
+ requiredMessage = _ref10$.requiredMessage;
403
422
 
404
423
  return _jsx(_Form.Item, {
405
424
  name: calcNamePath(parentName, key),
@@ -19,7 +19,7 @@ import { useState, useContext, useEffect, useReducer, useRef } from 'react';
19
19
  import invariant from 'invariant';
20
20
  import classnames from 'classnames';
21
21
  import Step from '../step';
22
- import { calcNamePath, getRuleValidation } from '../../utils/form-utils';
22
+ import { calcNamePath, getRuleValidation, calcShouldRender } from '../../utils/form-utils';
23
23
  import FormContext from '../../form-context';
24
24
  import StepContext from '../../form-step-context';
25
25
  import { LocaleContext } from '../../locale';
@@ -74,24 +74,41 @@ var Steps = function Steps(_ref) {
74
74
  useEffect(function () {
75
75
  var subscribe = elements.some(function (_ref2) {
76
76
  var shouldRender = _ref2.shouldRender,
77
- getButtonDisabledState = _ref2.getButtonDisabledState;
78
- return Boolean(shouldRender) || Boolean(getButtonDisabledState);
77
+ getButtonDisabledState = _ref2.getButtonDisabledState,
78
+ shouldRenderCode = _ref2.shouldRenderCode;
79
+ return Boolean(shouldRender) || Boolean(getButtonDisabledState) || Boolean(shouldRenderCode);
79
80
  });
80
81
 
81
82
  if (subscribe) {
82
83
  Array.isArray(subscribedFields) ? registerDependencies(subscribedFields, dispatch) : registerDependencies('SUBSCRIBE_ALL', dispatch);
83
84
  }
85
+
86
+ var dependentField = [];
87
+ elements.forEach(function (_ref3) {
88
+ var asserts = _ref3.asserts;
89
+ if (!(asserts === null || asserts === void 0 ? void 0 : asserts.length)) return;
90
+ asserts.forEach(function (_ref4) {
91
+ var field = _ref4.field;
92
+ return dependentField.push(field);
93
+ });
94
+ });
95
+ dependentField.length && registerDependencies(dependentField, dispatch);
84
96
  }, []);
85
97
  useEffect(function () {
86
98
  if (currentStep === undefined || currentStep === current) return;
87
99
  setCurrent(currentStep);
88
100
  }, [currentStep]);
89
- var renderElements = elements.filter(function (step) {
90
- return typeof step.shouldRender !== 'function' || step.shouldRender(form);
101
+ var renderElements = elements.filter(function (_ref5) {
102
+ var curName = _ref5.name,
103
+ dependencies = _ref5.dependencies,
104
+ asserts = _ref5.asserts,
105
+ shouldRender = _ref5.shouldRender,
106
+ shouldRenderCode = _ref5.shouldRenderCode;
107
+ return calcShouldRender(calcNamePath(calcNamePath(parentName, name), curName), dependencies, asserts, shouldRender, shouldRenderCode, form);
91
108
  });
92
109
 
93
110
  var handleNext = /*#__PURE__*/function () {
94
- var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
111
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
95
112
  var _allFields$filter;
96
113
 
97
114
  var allFields, allValues, _renderElements$curre, currentName, handleNext, validationRule, namePath, fields, res, errors;
@@ -104,11 +121,11 @@ var Steps = function Steps(_ref) {
104
121
  allValues = form === null || form === void 0 ? void 0 : form.getFieldsValue(true);
105
122
  _renderElements$curre = renderElements[current], currentName = _renderElements$curre.name, handleNext = _renderElements$curre.handleNext, validationRule = _renderElements$curre.validationRule;
106
123
  namePath = calcNamePath(name, currentName);
107
- fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref4) {
108
- var name = _ref4.name;
124
+ fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref7) {
125
+ var name = _ref7.name;
109
126
  return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
110
- })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref5) {
111
- var name = _ref5.name;
127
+ })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref8) {
128
+ var name = _ref8.name;
112
129
  return name;
113
130
  });
114
131
  _context.prev = 5;
@@ -199,7 +216,7 @@ var Steps = function Steps(_ref) {
199
216
  }));
200
217
 
201
218
  return function handleNext() {
202
- return _ref3.apply(this, arguments);
219
+ return _ref6.apply(this, arguments);
203
220
  };
204
221
  }();
205
222
 
@@ -16,7 +16,6 @@ export interface StepProps extends FormItemConfig {
16
16
  editButtonLabel?: string;
17
17
  disableEditButton?: boolean;
18
18
  buttonText?: string;
19
- validationRule?: string;
20
19
  }
21
20
  declare const Step: FC<StepProps>;
22
21
  export default Step;
@@ -33,7 +33,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
33
33
  import { useContext, useState, useRef, useEffect, useMemo, useReducer, cloneElement, isValidElement } from 'react';
34
34
  import { LocaleContext } from '../../locale';
35
35
  import Button from '../../button';
36
- import { calcNamePath, getRuleValidation } from '../../utils/form-utils';
36
+ import { calcNamePath, getRuleValidation, calcShouldRender } from '../../utils/form-utils';
37
37
  import FormContext from '../../form-context';
38
38
  import invariant from 'invariant';
39
39
  import './style/index.less';
@@ -63,7 +63,10 @@ var Step = function Step(_ref) {
63
63
  shouldRender = _ref.shouldRender,
64
64
  subscribedFields = _ref.subscribedFields,
65
65
  buttonText = _ref.buttonText,
66
- validationRule = _ref.validationRule;
66
+ validationRule = _ref.validationRule,
67
+ asserts = _ref.asserts,
68
+ dependencies = _ref.dependencies,
69
+ shouldRenderCode = _ref.shouldRenderCode;
67
70
 
68
71
  var _useContext = useContext(LocaleContext),
69
72
  formatMessage = _useContext.formatMessage,
@@ -98,6 +101,14 @@ var Step = function Step(_ref) {
98
101
  if (shouldRender || getButtonDisabledState) {
99
102
  registerDependencies(Array.isArray(subscribedFields) ? subscribedFields : 'SUBSCRIBE_ALL', dispatch);
100
103
  }
104
+
105
+ if (asserts === null || asserts === void 0 ? void 0 : asserts.length) {
106
+ var dependentField = asserts.map(function (_ref2) {
107
+ var field = _ref2.field;
108
+ return field;
109
+ });
110
+ registerDependencies(dependentField, dispatch);
111
+ }
101
112
  }, []);
102
113
  var pName = useMemo(function () {
103
114
  return calcNamePath(parentName, name);
@@ -150,7 +161,7 @@ var Step = function Step(_ref) {
150
161
  };
151
162
 
152
163
  var handleNext = /*#__PURE__*/function () {
153
- var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
164
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
154
165
  var _allFields$filter;
155
166
 
156
167
  var allFields, allValues, fields, res, errors;
@@ -160,11 +171,11 @@ var Step = function Step(_ref) {
160
171
  case 0:
161
172
  allFields = (form === null || form === void 0 ? void 0 : form.getFieldsError()) || [];
162
173
  allValues = form === null || form === void 0 ? void 0 : form.getFieldsValue(true);
163
- fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref3) {
164
- var name = _ref3.name;
165
- return name.join().startsWith(pName === null || pName === void 0 ? void 0 : pName.join());
166
- })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref4) {
174
+ fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref4) {
167
175
  var name = _ref4.name;
176
+ return name.join().startsWith(pName === null || pName === void 0 ? void 0 : pName.join());
177
+ })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref5) {
178
+ var name = _ref5.name;
168
179
  return name;
169
180
  });
170
181
  _context.prev = 3;
@@ -249,11 +260,11 @@ var Step = function Step(_ref) {
249
260
  }));
250
261
 
251
262
  return function handleNext() {
252
- return _ref2.apply(this, arguments);
263
+ return _ref3.apply(this, arguments);
253
264
  };
254
265
  }();
255
266
 
256
- if (typeof shouldRender === 'function' && !shouldRender(form)) {
267
+ if (!calcShouldRender(pName, dependencies, asserts, shouldRender, shouldRenderCode, form)) {
257
268
  return null;
258
269
  }
259
270
 
package/es/types.d.ts CHANGED
@@ -123,6 +123,7 @@ export interface FormItemExtraConfig extends FormItemProps {
123
123
  maxLength?: number;
124
124
  idType?: 'KTP' | 'NIK';
125
125
  validationRule?: string;
126
+ shouldRenderCode?: string;
126
127
  [key: string]: any;
127
128
  }
128
129
  export interface FormItemConfig extends FormItemExtraConfig {
@@ -50,7 +50,7 @@ export declare const calcFormItemProps: (config: FormItemConfig, extraProps: For
50
50
  elementProps: {
51
51
  [key: string]: any;
52
52
  };
53
- display: boolean;
53
+ display: any;
54
54
  previewFormater: ((value: any, form?: FormInstance<any> | undefined) => any) | undefined;
55
55
  };
56
56
  export declare const calcDisabled: (disabled?: boolean | FormItemAssert | FormItemAssert[] | undefined, form?: FormInstance<any> | undefined) => boolean;
@@ -72,5 +72,5 @@ export declare const calcSelectValue: (selectValue?: FormItemSelectValue[] | und
72
72
  value: any;
73
73
  disabled: boolean | undefined;
74
74
  };
75
- export declare const calcShouldRender: (dependencies?: NamePath[], asserts?: FormItemAssert[], shouldRender?: ((form?: FormInstance<any> | undefined) => boolean) | undefined, form?: FormInstance<any> | undefined) => boolean;
76
- export declare const getRuleValidation: (url: string, rule: string | string[], values?: any, lang?: string | undefined) => Promise<any>;
75
+ export declare const calcShouldRender: (name: NamePath, dependencies?: NamePath[], asserts?: FormItemAssert[], shouldRender?: ((form?: FormInstance<any> | undefined) => boolean) | undefined, shouldRenderCode?: string | undefined, form?: FormInstance<any> | undefined) => any;
76
+ export declare const getRuleValidation: (url: string, rule: string | string[], values?: any, lang?: string) => Promise<any>;
@@ -1,4 +1,4 @@
1
- var _excluded = ["type", "name", "required", "requiredAsserts", "showOptional", "rules", "initialValue", "normalize", "mergeRules", "getValueFromEvent", "getValueProps", "extra", "help", "label", "previewLabel", "extraLabel", "copyValue", "selectValue", "span", "halfRow", "fullRow", "valuePropName", "dependencies", "asserts", "messageVariables", "requiredMessage", "previewFormater", "disabled", "ignore", "shouldRender", "valueFormater", "antdDependencies", "dateLimitationType", "absoluteRangeEnd", "absoluteRangeStart", "relativeRangeStart", "relativeRangeEnd", "validationCode"],
1
+ var _excluded = ["type", "name", "required", "requiredAsserts", "showOptional", "rules", "initialValue", "normalize", "mergeRules", "getValueFromEvent", "getValueProps", "extra", "help", "label", "previewLabel", "extraLabel", "copyValue", "selectValue", "span", "halfRow", "fullRow", "valuePropName", "dependencies", "asserts", "messageVariables", "requiredMessage", "previewFormater", "disabled", "ignore", "shouldRender", "valueFormater", "antdDependencies", "dateLimitationType", "absoluteRangeEnd", "absoluteRangeStart", "relativeRangeStart", "relativeRangeEnd", "validationCode", "shouldRenderCode"],
2
2
  _excluded2 = ["initialValue", "normalize", "rules", "extra", "help", "getValueFromEvent", "span", "valuePropName", "fullRow", "halfRow", "messageVariables", "requiredMessage", "previewFormater", "valueFormater", "required", "requiredMark", "className"];
3
3
 
4
4
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
@@ -207,6 +207,7 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
207
207
  relativeRangeEnd = config.relativeRangeEnd,
208
208
  _config$validationCod = config.validationCode,
209
209
  validationCode = _config$validationCod === void 0 ? [] : _config$validationCod,
210
+ shouldRenderCode = config.shouldRenderCode,
210
211
  rest = _objectWithoutProperties(config, _excluded);
211
212
 
212
213
  invariant(nameProp !== undefined || type === 'Divider' || type === 'Section' || type === 'Typography' || !type, "name property is required for form item config (type: ".concat(type, ")"));
@@ -428,7 +429,7 @@ export var calcFormItemProps = function calcFormItemProps(config, extraProps, fo
428
429
  dependencies: antdDependencies
429
430
  },
430
431
  elementProps: elementProps,
431
- display: !ignore && calcShouldRender(dependencies, asserts, shouldRender, form),
432
+ display: !ignore && calcShouldRender(name, dependencies, asserts, shouldRender, shouldRenderCode, form),
432
433
  previewFormater: previewFormater || extraPreviewFormater
433
434
  };
434
435
  };
@@ -514,11 +515,12 @@ export var calcSelectValue = function calcSelectValue(selectValue, form) {
514
515
  selected: false
515
516
  };
516
517
  };
517
- export var calcShouldRender = function calcShouldRender() {
518
- var dependencies = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
519
- var asserts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
520
- var shouldRender = arguments.length > 2 ? arguments[2] : undefined;
521
- var form = arguments.length > 3 ? arguments[3] : undefined;
518
+ export var calcShouldRender = function calcShouldRender(name) {
519
+ var dependencies = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
520
+ var asserts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
521
+ var shouldRender = arguments.length > 3 ? arguments[3] : undefined;
522
+ var shouldRenderCode = arguments.length > 4 ? arguments[4] : undefined;
523
+ var form = arguments.length > 5 ? arguments[5] : undefined;
522
524
  if (!form) return true;
523
525
 
524
526
  var _iterator3 = _createForOfIteratorHelper(dependencies),
@@ -538,6 +540,26 @@ export var calcShouldRender = function calcShouldRender() {
538
540
  _iterator3.f();
539
541
  }
540
542
 
543
+ if (typeof shouldRender === 'function') {
544
+ return shouldRender(form);
545
+ }
546
+
547
+ if (shouldRenderCode) {
548
+ var fn = eval(shouldRenderCode);
549
+
550
+ if (typeof fn === 'function') {
551
+ try {
552
+ var value = form.getFieldValue(name);
553
+ var values = form.getFieldsValue(true);
554
+ return fn(value, values, {
555
+ moment: moment
556
+ });
557
+ } catch (_unused2) {
558
+ return false;
559
+ }
560
+ }
561
+ }
562
+
541
563
  var _iterator4 = _createForOfIteratorHelper(asserts),
542
564
  _step4;
543
565
 
@@ -553,23 +575,23 @@ export var calcShouldRender = function calcShouldRender() {
553
575
  _iterator4.f();
554
576
  }
555
577
 
556
- if (typeof shouldRender === 'function' && !shouldRender(form)) {
557
- return false;
558
- }
559
-
560
578
  return true;
561
579
  };
562
580
  export var getRuleValidation = /*#__PURE__*/function () {
563
- var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(url, rule, values, lang) {
564
- var _lang, _lang$split;
565
-
566
- var res, json, _ref4, conclusion, details;
581
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(url, rule, values) {
582
+ var lang,
583
+ res,
584
+ json,
585
+ _ref4,
586
+ conclusion,
587
+ details,
588
+ _args = arguments;
567
589
 
568
590
  return regeneratorRuntime.wrap(function _callee$(_context) {
569
591
  while (1) {
570
592
  switch (_context.prev = _context.next) {
571
593
  case 0:
572
- lang = ((_lang = lang) === null || _lang === void 0 ? void 0 : (_lang$split = _lang.split('-')) === null || _lang$split === void 0 ? void 0 : _lang$split[0]) || 'en';
594
+ lang = _args.length > 3 && _args[3] !== undefined ? _args[3] : 'en-US';
573
595
  _context.next = 3;
574
596
  return fetch("".concat(url, "?lang=").concat(lang), {
575
597
  method: 'post',
@@ -624,7 +646,7 @@ export var getRuleValidation = /*#__PURE__*/function () {
624
646
  }, _callee);
625
647
  }));
626
648
 
627
- return function getRuleValidation(_x, _x2, _x3, _x4) {
649
+ return function getRuleValidation(_x, _x2, _x3) {
628
650
  return _ref3.apply(this, arguments);
629
651
  };
630
652
  }();
@@ -67,21 +67,18 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
67
67
 
68
68
  // add disabled attributes to checkbox options based on mutually exclusion config
69
69
  var addDisabledAttr = function addDisabledAttr(options, mutuallyExclusions, checkedValues) {
70
- if (!mutuallyExclusions || !checkedValues) return options;
71
- checkedValues = Array.isArray(checkedValues) ? checkedValues : [checkedValues];
70
+ if (!mutuallyExclusions || !Object.keys(mutuallyExclusions).length || !(checkedValues === null || checkedValues === void 0 ? void 0 : checkedValues.length)) return options;
72
71
  return options.map(function (_ref) {
73
- var _checkedValues;
74
-
75
72
  var value = _ref.value,
76
73
  rest = _objectWithoutProperties(_ref, _excluded);
77
74
 
78
75
  return _objectSpread(_objectSpread({}, rest), {}, {
79
76
  value: value,
80
- disabled: !!value && !!((_checkedValues = checkedValues) === null || _checkedValues === void 0 ? void 0 : _checkedValues.some(function (v) {
77
+ disabled: !!(value && (checkedValues === null || checkedValues === void 0 ? void 0 : checkedValues.some(function (v) {
81
78
  var _mutuallyExclusions$S, _mutuallyExclusions$v;
82
79
 
83
- return ((_mutuallyExclusions$S = mutuallyExclusions[String(v)]) === null || _mutuallyExclusions$S === void 0 ? void 0 : _mutuallyExclusions$S.includes(String(value))) || ((_mutuallyExclusions$v = mutuallyExclusions[value]) === null || _mutuallyExclusions$v === void 0 ? void 0 : _mutuallyExclusions$v.includes(String(v)));
84
- }))
80
+ return v !== value && (((_mutuallyExclusions$S = mutuallyExclusions[String(v)]) === null || _mutuallyExclusions$S === void 0 ? void 0 : _mutuallyExclusions$S.includes(String(value))) || ((_mutuallyExclusions$v = mutuallyExclusions[value]) === null || _mutuallyExclusions$v === void 0 ? void 0 : _mutuallyExclusions$v.includes(String(v))));
81
+ })))
85
82
  });
86
83
  });
87
84
  };
@@ -1,8 +1,11 @@
1
1
  import { DatePickerProps, RangePickerProps, MonthPickerProps, WeekPickerProps } from 'antd/es/date-picker';
2
2
  import { FC, IglooComponentProps } from '../types';
3
+ import { Moment } from 'moment';
3
4
  import './style/index.less';
4
5
  export { default as IglooBuddhistDatePicker } from './buddhist';
5
- declare type Props = DatePickerProps & IglooComponentProps;
6
+ declare type Props = Omit<DatePickerProps, 'value'> & IglooComponentProps & {
7
+ value?: Moment | null | 0;
8
+ };
6
9
  declare const IglooDatePicker: FC<Props>;
7
10
  export default IglooDatePicker;
8
11
  export declare const IglooRangePicker: FC<RangePickerProps & IglooComponentProps>;
@@ -89,7 +89,7 @@ var IglooDatePicker = function IglooDatePicker(_ref) {
89
89
  setFocus = _useState2[1];
90
90
 
91
91
  return (0, _jsxRuntime.jsx)(_datePicker.default, _objectSpread(_objectSpread({}, (0, _omit.default)(props, _formMethods.default)), {}, {
92
- value: (0, _moment.default)(value),
92
+ value: value || value === 0 ? (0, _moment.default)(value) : undefined,
93
93
  placeholder: placeholder || dateFormater,
94
94
  format: format || dateFormater,
95
95
  inputReadOnly: true,
@@ -116,7 +116,7 @@ IglooDatePicker.formItemPropsHandler = function (_ref2) {
116
116
  return (0, _moment.default)(value).format(format || dateFormater);
117
117
  },
118
118
  valueFormater: function valueFormater(value) {
119
- return +(0, _moment.default)(value);
119
+ return value ? +(0, _moment.default)(value) : value;
120
120
  },
121
121
  'element-allowClear': false
122
122
  };
@@ -121,7 +121,8 @@ var Element = function Element(_ref) {
121
121
  subscribedFields = config.subscribedFields,
122
122
  disabled = config.disabled,
123
123
  extraLabel = config.extraLabel,
124
- requiredAsserts = config.requiredAsserts;
124
+ requiredAsserts = config.requiredAsserts,
125
+ shouldRenderCode = config.shouldRenderCode;
125
126
  var dependentField = dependencies || [];
126
127
 
127
128
  if (Array.isArray(subscribedFields)) {
@@ -153,7 +154,7 @@ var Element = function Element(_ref) {
153
154
  });
154
155
  }
155
156
 
156
- if ((shouldRender || getOptions || typeof extraLabel === 'function') && !Array.isArray(subscribedFields)) {
157
+ if ((shouldRender || shouldRenderCode || getOptions || typeof extraLabel === 'function') && !Array.isArray(subscribedFields)) {
157
158
  dependentField.push('SUBSCRIBE_ALL');
158
159
  }
159
160
 
@@ -134,26 +134,45 @@ var HSteps = function HSteps(_ref) {
134
134
  (0, _react.useEffect)(function () {
135
135
  var subscribe = elements.some(function (_ref2) {
136
136
  var shouldRender = _ref2.shouldRender,
137
- getButtonDisabledState = _ref2.getButtonDisabledState;
138
- return Boolean(shouldRender) || Boolean(getButtonDisabledState);
137
+ getButtonDisabledState = _ref2.getButtonDisabledState,
138
+ shouldRenderCode = _ref2.shouldRenderCode;
139
+ return Boolean(shouldRender) || Boolean(getButtonDisabledState) || Boolean(shouldRenderCode);
139
140
  });
140
141
 
141
142
  if (subscribe) {
142
143
  Array.isArray(subscribedFields) ? registerDependencies(subscribedFields, dispatch) : registerDependencies('SUBSCRIBE_ALL', dispatch);
143
144
  }
145
+
146
+ var dependentField = [];
147
+ elements.forEach(function (_ref3) {
148
+ var asserts = _ref3.asserts;
149
+ if (!(asserts === null || asserts === void 0 ? void 0 : asserts.length)) return;
150
+ asserts.forEach(function (_ref4) {
151
+ var field = _ref4.field;
152
+ return dependentField.push(field);
153
+ });
154
+ });
155
+ dependentField.length && registerDependencies(dependentField, dispatch);
144
156
  }, []);
145
157
  (0, _react.useEffect)(function () {
146
158
  if (currentStep === undefined || currentStep === current) return;
147
159
  setCurrent(currentStep);
148
160
  }, [currentStep]);
149
- var renderElements = elements.filter(function (step) {
150
- (0, _invariant.default)(step.type === 'Step', 'Child of steps should be Step');
151
- (0, _invariant.default)(!step.validationRule || getRuleValidationApi, 'Please provide getRuleValidationApi in Form props');
152
- return typeof step.shouldRender !== 'function' || step.shouldRender(form);
161
+ var renderElements = elements.filter(function (_ref5) {
162
+ var type = _ref5.type,
163
+ curName = _ref5.name,
164
+ validationRule = _ref5.validationRule,
165
+ dependencies = _ref5.dependencies,
166
+ asserts = _ref5.asserts,
167
+ shouldRender = _ref5.shouldRender,
168
+ shouldRenderCode = _ref5.shouldRenderCode;
169
+ (0, _invariant.default)(type === 'Step', 'Child of steps should be Step');
170
+ (0, _invariant.default)(!validationRule || getRuleValidationApi, 'Please provide getRuleValidationApi in Form props');
171
+ return (0, _formUtils.calcShouldRender)((0, _formUtils.calcNamePath)((0, _formUtils.calcNamePath)(parentName, name), curName), dependencies, asserts, shouldRender, shouldRenderCode, form);
153
172
  });
154
173
 
155
174
  var handleNext = /*#__PURE__*/function () {
156
- var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
175
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
157
176
  var _allFields$filter;
158
177
 
159
178
  var allFields, allValues, _renderElements$curre, currentName, handleNext, validationRule, namePath, fields, _iterator, _step, collapseSection, res, errors;
@@ -166,11 +185,11 @@ var HSteps = function HSteps(_ref) {
166
185
  allValues = form === null || form === void 0 ? void 0 : form.getFieldsValue(true);
167
186
  _renderElements$curre = renderElements[current], currentName = _renderElements$curre.name, handleNext = _renderElements$curre.handleNext, validationRule = _renderElements$curre.validationRule;
168
187
  namePath = (0, _formUtils.calcNamePath)(name, currentName);
169
- fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref4) {
170
- var name = _ref4.name;
188
+ fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref7) {
189
+ var name = _ref7.name;
171
190
  return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
172
- })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref5) {
173
- var name = _ref5.name;
191
+ })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref8) {
192
+ var name = _ref8.name;
174
193
  return name;
175
194
  });
176
195
  _context.prev = 5;
@@ -274,7 +293,7 @@ var HSteps = function HSteps(_ref) {
274
293
  }));
275
294
 
276
295
  return function handleNext() {
277
- return _ref3.apply(this, arguments);
296
+ return _ref6.apply(this, arguments);
278
297
  };
279
298
  }();
280
299
 
@@ -421,14 +440,14 @@ var HSteps = function HSteps(_ref) {
421
440
  margin: 0
422
441
  },
423
442
  children: (0, _jsxRuntime.jsx)(_confirmation.default, {})
424
- }), confirmations && Object.entries(confirmations).map(function (_ref6) {
425
- var _ref7 = _slicedToArray(_ref6, 2),
426
- key = _ref7[0],
427
- _ref7$ = _ref7[1],
428
- required = _ref7$.required,
429
- _ref7$$confirmation = _ref7$.confirmation,
430
- confirmation = _ref7$$confirmation === void 0 ? {} : _ref7$$confirmation,
431
- requiredMessage = _ref7$.requiredMessage;
443
+ }), confirmations && Object.entries(confirmations).map(function (_ref9) {
444
+ var _ref10 = _slicedToArray(_ref9, 2),
445
+ key = _ref10[0],
446
+ _ref10$ = _ref10[1],
447
+ required = _ref10$.required,
448
+ _ref10$$confirmation = _ref10$.confirmation,
449
+ confirmation = _ref10$$confirmation === void 0 ? {} : _ref10$$confirmation,
450
+ requiredMessage = _ref10$.requiredMessage;
432
451
 
433
452
  return (0, _jsxRuntime.jsx)(_form.default.Item, {
434
453
  name: (0, _formUtils.calcNamePath)(parentName, key),
@@ -92,24 +92,41 @@ var Steps = function Steps(_ref) {
92
92
  (0, _react.useEffect)(function () {
93
93
  var subscribe = elements.some(function (_ref2) {
94
94
  var shouldRender = _ref2.shouldRender,
95
- getButtonDisabledState = _ref2.getButtonDisabledState;
96
- return Boolean(shouldRender) || Boolean(getButtonDisabledState);
95
+ getButtonDisabledState = _ref2.getButtonDisabledState,
96
+ shouldRenderCode = _ref2.shouldRenderCode;
97
+ return Boolean(shouldRender) || Boolean(getButtonDisabledState) || Boolean(shouldRenderCode);
97
98
  });
98
99
 
99
100
  if (subscribe) {
100
101
  Array.isArray(subscribedFields) ? registerDependencies(subscribedFields, dispatch) : registerDependencies('SUBSCRIBE_ALL', dispatch);
101
102
  }
103
+
104
+ var dependentField = [];
105
+ elements.forEach(function (_ref3) {
106
+ var asserts = _ref3.asserts;
107
+ if (!(asserts === null || asserts === void 0 ? void 0 : asserts.length)) return;
108
+ asserts.forEach(function (_ref4) {
109
+ var field = _ref4.field;
110
+ return dependentField.push(field);
111
+ });
112
+ });
113
+ dependentField.length && registerDependencies(dependentField, dispatch);
102
114
  }, []);
103
115
  (0, _react.useEffect)(function () {
104
116
  if (currentStep === undefined || currentStep === current) return;
105
117
  setCurrent(currentStep);
106
118
  }, [currentStep]);
107
- var renderElements = elements.filter(function (step) {
108
- return typeof step.shouldRender !== 'function' || step.shouldRender(form);
119
+ var renderElements = elements.filter(function (_ref5) {
120
+ var curName = _ref5.name,
121
+ dependencies = _ref5.dependencies,
122
+ asserts = _ref5.asserts,
123
+ shouldRender = _ref5.shouldRender,
124
+ shouldRenderCode = _ref5.shouldRenderCode;
125
+ return (0, _formUtils.calcShouldRender)((0, _formUtils.calcNamePath)((0, _formUtils.calcNamePath)(parentName, name), curName), dependencies, asserts, shouldRender, shouldRenderCode, form);
109
126
  });
110
127
 
111
128
  var handleNext = /*#__PURE__*/function () {
112
- var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
129
+ var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
113
130
  var _allFields$filter;
114
131
 
115
132
  var allFields, allValues, _renderElements$curre, currentName, handleNext, validationRule, namePath, fields, res, errors;
@@ -122,11 +139,11 @@ var Steps = function Steps(_ref) {
122
139
  allValues = form === null || form === void 0 ? void 0 : form.getFieldsValue(true);
123
140
  _renderElements$curre = renderElements[current], currentName = _renderElements$curre.name, handleNext = _renderElements$curre.handleNext, validationRule = _renderElements$curre.validationRule;
124
141
  namePath = (0, _formUtils.calcNamePath)(name, currentName);
125
- fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref4) {
126
- var name = _ref4.name;
142
+ fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref7) {
143
+ var name = _ref7.name;
127
144
  return name.join().startsWith(namePath === null || namePath === void 0 ? void 0 : namePath.join());
128
- })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref5) {
129
- var name = _ref5.name;
145
+ })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref8) {
146
+ var name = _ref8.name;
130
147
  return name;
131
148
  });
132
149
  _context.prev = 5;
@@ -217,7 +234,7 @@ var Steps = function Steps(_ref) {
217
234
  }));
218
235
 
219
236
  return function handleNext() {
220
- return _ref3.apply(this, arguments);
237
+ return _ref6.apply(this, arguments);
221
238
  };
222
239
  }();
223
240
 
@@ -16,7 +16,6 @@ export interface StepProps extends FormItemConfig {
16
16
  editButtonLabel?: string;
17
17
  disableEditButton?: boolean;
18
18
  buttonText?: string;
19
- validationRule?: string;
20
19
  }
21
20
  declare const Step: FC<StepProps>;
22
21
  export default Step;
@@ -87,7 +87,10 @@ var Step = function Step(_ref) {
87
87
  shouldRender = _ref.shouldRender,
88
88
  subscribedFields = _ref.subscribedFields,
89
89
  buttonText = _ref.buttonText,
90
- validationRule = _ref.validationRule;
90
+ validationRule = _ref.validationRule,
91
+ asserts = _ref.asserts,
92
+ dependencies = _ref.dependencies,
93
+ shouldRenderCode = _ref.shouldRenderCode;
91
94
 
92
95
  var _useContext = (0, _react.useContext)(_locale.LocaleContext),
93
96
  formatMessage = _useContext.formatMessage,
@@ -122,6 +125,14 @@ var Step = function Step(_ref) {
122
125
  if (shouldRender || getButtonDisabledState) {
123
126
  registerDependencies(Array.isArray(subscribedFields) ? subscribedFields : 'SUBSCRIBE_ALL', dispatch);
124
127
  }
128
+
129
+ if (asserts === null || asserts === void 0 ? void 0 : asserts.length) {
130
+ var dependentField = asserts.map(function (_ref2) {
131
+ var field = _ref2.field;
132
+ return field;
133
+ });
134
+ registerDependencies(dependentField, dispatch);
135
+ }
125
136
  }, []);
126
137
  var pName = (0, _react.useMemo)(function () {
127
138
  return (0, _formUtils.calcNamePath)(parentName, name);
@@ -174,7 +185,7 @@ var Step = function Step(_ref) {
174
185
  };
175
186
 
176
187
  var handleNext = /*#__PURE__*/function () {
177
- var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
188
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
178
189
  var _allFields$filter;
179
190
 
180
191
  var allFields, allValues, fields, res, errors;
@@ -184,11 +195,11 @@ var Step = function Step(_ref) {
184
195
  case 0:
185
196
  allFields = (form === null || form === void 0 ? void 0 : form.getFieldsError()) || [];
186
197
  allValues = form === null || form === void 0 ? void 0 : form.getFieldsValue(true);
187
- fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref3) {
188
- var name = _ref3.name;
189
- return name.join().startsWith(pName === null || pName === void 0 ? void 0 : pName.join());
190
- })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref4) {
198
+ fields = allFields === null || allFields === void 0 ? void 0 : (_allFields$filter = allFields.filter(function (_ref4) {
191
199
  var name = _ref4.name;
200
+ return name.join().startsWith(pName === null || pName === void 0 ? void 0 : pName.join());
201
+ })) === null || _allFields$filter === void 0 ? void 0 : _allFields$filter.map(function (_ref5) {
202
+ var name = _ref5.name;
192
203
  return name;
193
204
  });
194
205
  _context.prev = 3;
@@ -273,11 +284,11 @@ var Step = function Step(_ref) {
273
284
  }));
274
285
 
275
286
  return function handleNext() {
276
- return _ref2.apply(this, arguments);
287
+ return _ref3.apply(this, arguments);
277
288
  };
278
289
  }();
279
290
 
280
- if (typeof shouldRender === 'function' && !shouldRender(form)) {
291
+ if (!(0, _formUtils.calcShouldRender)(pName, dependencies, asserts, shouldRender, shouldRenderCode, form)) {
281
292
  return null;
282
293
  }
283
294
 
package/lib/types.d.ts CHANGED
@@ -123,6 +123,7 @@ export interface FormItemExtraConfig extends FormItemProps {
123
123
  maxLength?: number;
124
124
  idType?: 'KTP' | 'NIK';
125
125
  validationRule?: string;
126
+ shouldRenderCode?: string;
126
127
  [key: string]: any;
127
128
  }
128
129
  export interface FormItemConfig extends FormItemExtraConfig {
@@ -50,7 +50,7 @@ export declare const calcFormItemProps: (config: FormItemConfig, extraProps: For
50
50
  elementProps: {
51
51
  [key: string]: any;
52
52
  };
53
- display: boolean;
53
+ display: any;
54
54
  previewFormater: ((value: any, form?: FormInstance<any> | undefined) => any) | undefined;
55
55
  };
56
56
  export declare const calcDisabled: (disabled?: boolean | FormItemAssert | FormItemAssert[] | undefined, form?: FormInstance<any> | undefined) => boolean;
@@ -72,5 +72,5 @@ export declare const calcSelectValue: (selectValue?: FormItemSelectValue[] | und
72
72
  value: any;
73
73
  disabled: boolean | undefined;
74
74
  };
75
- export declare const calcShouldRender: (dependencies?: NamePath[], asserts?: FormItemAssert[], shouldRender?: ((form?: FormInstance<any> | undefined) => boolean) | undefined, form?: FormInstance<any> | undefined) => boolean;
76
- export declare const getRuleValidation: (url: string, rule: string | string[], values?: any, lang?: string | undefined) => Promise<any>;
75
+ export declare const calcShouldRender: (name: NamePath, dependencies?: NamePath[], asserts?: FormItemAssert[], shouldRender?: ((form?: FormInstance<any> | undefined) => boolean) | undefined, shouldRenderCode?: string | undefined, form?: FormInstance<any> | undefined) => any;
76
+ export declare const getRuleValidation: (url: string, rule: string | string[], values?: any, lang?: string) => Promise<any>;
@@ -15,7 +15,7 @@ var _formattedMessage = _interopRequireDefault(require("../locale/formatted-mess
15
15
 
16
16
  var _moment = _interopRequireDefault(require("moment"));
17
17
 
18
- var _excluded = ["type", "name", "required", "requiredAsserts", "showOptional", "rules", "initialValue", "normalize", "mergeRules", "getValueFromEvent", "getValueProps", "extra", "help", "label", "previewLabel", "extraLabel", "copyValue", "selectValue", "span", "halfRow", "fullRow", "valuePropName", "dependencies", "asserts", "messageVariables", "requiredMessage", "previewFormater", "disabled", "ignore", "shouldRender", "valueFormater", "antdDependencies", "dateLimitationType", "absoluteRangeEnd", "absoluteRangeStart", "relativeRangeStart", "relativeRangeEnd", "validationCode"],
18
+ var _excluded = ["type", "name", "required", "requiredAsserts", "showOptional", "rules", "initialValue", "normalize", "mergeRules", "getValueFromEvent", "getValueProps", "extra", "help", "label", "previewLabel", "extraLabel", "copyValue", "selectValue", "span", "halfRow", "fullRow", "valuePropName", "dependencies", "asserts", "messageVariables", "requiredMessage", "previewFormater", "disabled", "ignore", "shouldRender", "valueFormater", "antdDependencies", "dateLimitationType", "absoluteRangeEnd", "absoluteRangeStart", "relativeRangeStart", "relativeRangeEnd", "validationCode", "shouldRenderCode"],
19
19
  _excluded2 = ["initialValue", "normalize", "rules", "extra", "help", "getValueFromEvent", "span", "valuePropName", "fullRow", "halfRow", "messageVariables", "requiredMessage", "previewFormater", "valueFormater", "required", "requiredMark", "className"];
20
20
 
21
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -226,6 +226,7 @@ var calcFormItemProps = function calcFormItemProps(config, extraProps, form, par
226
226
  relativeRangeEnd = config.relativeRangeEnd,
227
227
  _config$validationCod = config.validationCode,
228
228
  validationCode = _config$validationCod === void 0 ? [] : _config$validationCod,
229
+ shouldRenderCode = config.shouldRenderCode,
229
230
  rest = _objectWithoutProperties(config, _excluded);
230
231
 
231
232
  (0, _invariant.default)(nameProp !== undefined || type === 'Divider' || type === 'Section' || type === 'Typography' || !type, "name property is required for form item config (type: ".concat(type, ")"));
@@ -447,7 +448,7 @@ var calcFormItemProps = function calcFormItemProps(config, extraProps, form, par
447
448
  dependencies: antdDependencies
448
449
  },
449
450
  elementProps: elementProps,
450
- display: !ignore && calcShouldRender(dependencies, asserts, shouldRender, form),
451
+ display: !ignore && calcShouldRender(name, dependencies, asserts, shouldRender, shouldRenderCode, form),
451
452
  previewFormater: previewFormater || extraPreviewFormater
452
453
  };
453
454
  };
@@ -545,11 +546,12 @@ var calcSelectValue = function calcSelectValue(selectValue, form) {
545
546
 
546
547
  exports.calcSelectValue = calcSelectValue;
547
548
 
548
- var calcShouldRender = function calcShouldRender() {
549
- var dependencies = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
550
- var asserts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
551
- var shouldRender = arguments.length > 2 ? arguments[2] : undefined;
552
- var form = arguments.length > 3 ? arguments[3] : undefined;
549
+ var calcShouldRender = function calcShouldRender(name) {
550
+ var dependencies = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
551
+ var asserts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
552
+ var shouldRender = arguments.length > 3 ? arguments[3] : undefined;
553
+ var shouldRenderCode = arguments.length > 4 ? arguments[4] : undefined;
554
+ var form = arguments.length > 5 ? arguments[5] : undefined;
553
555
  if (!form) return true;
554
556
 
555
557
  var _iterator3 = _createForOfIteratorHelper(dependencies),
@@ -569,6 +571,26 @@ var calcShouldRender = function calcShouldRender() {
569
571
  _iterator3.f();
570
572
  }
571
573
 
574
+ if (typeof shouldRender === 'function') {
575
+ return shouldRender(form);
576
+ }
577
+
578
+ if (shouldRenderCode) {
579
+ var fn = eval(shouldRenderCode);
580
+
581
+ if (typeof fn === 'function') {
582
+ try {
583
+ var value = form.getFieldValue(name);
584
+ var values = form.getFieldsValue(true);
585
+ return fn(value, values, {
586
+ moment: _moment.default
587
+ });
588
+ } catch (_unused2) {
589
+ return false;
590
+ }
591
+ }
592
+ }
593
+
572
594
  var _iterator4 = _createForOfIteratorHelper(asserts),
573
595
  _step4;
574
596
 
@@ -584,26 +606,26 @@ var calcShouldRender = function calcShouldRender() {
584
606
  _iterator4.f();
585
607
  }
586
608
 
587
- if (typeof shouldRender === 'function' && !shouldRender(form)) {
588
- return false;
589
- }
590
-
591
609
  return true;
592
610
  };
593
611
 
594
612
  exports.calcShouldRender = calcShouldRender;
595
613
 
596
614
  var getRuleValidation = /*#__PURE__*/function () {
597
- var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(url, rule, values, lang) {
598
- var _lang, _lang$split;
599
-
600
- var res, json, _ref4, conclusion, details;
615
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(url, rule, values) {
616
+ var lang,
617
+ res,
618
+ json,
619
+ _ref4,
620
+ conclusion,
621
+ details,
622
+ _args = arguments;
601
623
 
602
624
  return regeneratorRuntime.wrap(function _callee$(_context) {
603
625
  while (1) {
604
626
  switch (_context.prev = _context.next) {
605
627
  case 0:
606
- lang = ((_lang = lang) === null || _lang === void 0 ? void 0 : (_lang$split = _lang.split('-')) === null || _lang$split === void 0 ? void 0 : _lang$split[0]) || 'en';
628
+ lang = _args.length > 3 && _args[3] !== undefined ? _args[3] : 'en-US';
607
629
  _context.next = 3;
608
630
  return fetch("".concat(url, "?lang=").concat(lang), {
609
631
  method: 'post',
@@ -658,7 +680,7 @@ var getRuleValidation = /*#__PURE__*/function () {
658
680
  }, _callee);
659
681
  }));
660
682
 
661
- return function getRuleValidation(_x, _x2, _x3, _x4) {
683
+ return function getRuleValidation(_x, _x2, _x3) {
662
684
  return _ref3.apply(this, arguments);
663
685
  };
664
686
  }();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iglooform",
3
- "version": "2.5.49",
3
+ "version": "2.5.51",
4
4
  "scripts": {
5
5
  "start": "dumi dev",
6
6
  "build-dev": "dumi build",