@formio/js 5.1.0-dev.6109.79f22ad → 5.1.0-dev.6112.1314654
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 +7 -0
- package/dist/formio.builder.css +1 -0
- package/dist/formio.builder.min.css +1 -1
- package/dist/formio.form.css +1 -0
- package/dist/formio.form.js +119 -152
- package/dist/formio.form.min.css +1 -1
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.full.css +1 -0
- package/dist/formio.full.js +126 -159
- package/dist/formio.full.min.css +1 -1
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.js +66 -55
- package/dist/formio.min.js +1 -1
- package/dist/formio.utils.js +76 -76
- package/dist/formio.utils.min.js +1 -1
- package/lib/cjs/Element.d.ts +2 -1
- package/lib/cjs/Element.js +18 -39
- package/lib/cjs/EventEmitter.js +2 -25
- package/lib/cjs/Form.js +2 -25
- package/lib/cjs/PDF.js +1 -1
- package/lib/cjs/PDFBuilder.d.ts +1 -0
- package/lib/cjs/PDFBuilder.js +10 -11
- package/lib/cjs/Webform.d.ts +2 -2
- package/lib/cjs/Webform.js +10 -10
- package/lib/cjs/WebformBuilder.d.ts +1 -1
- package/lib/cjs/WebformBuilder.js +45 -21
- package/lib/cjs/Wizard.d.ts +1 -2
- package/lib/cjs/Wizard.js +18 -24
- package/lib/cjs/WizardBuilder.js +1 -1
- package/lib/cjs/components/Components.js +7 -1
- package/lib/cjs/components/_classes/component/Component.d.ts +0 -1
- package/lib/cjs/components/_classes/component/Component.js +70 -64
- package/lib/cjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
- package/lib/cjs/components/_classes/component/editForm/Component.edit.data.d.ts +7 -0
- package/lib/cjs/components/_classes/component/editForm/Component.edit.data.js +1 -0
- package/lib/cjs/components/_classes/component/editForm/Component.edit.logic.js +1 -1
- package/lib/cjs/components/_classes/componentModal/ComponentModal.js +1 -1
- package/lib/cjs/components/_classes/input/Input.d.ts +1 -1
- package/lib/cjs/components/_classes/input/Input.js +3 -3
- package/lib/cjs/components/_classes/list/ListComponent.js +1 -1
- package/lib/cjs/components/_classes/nested/NestedComponent.d.ts +1 -0
- package/lib/cjs/components/_classes/nested/NestedComponent.js +19 -9
- package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
- package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +1 -1
- package/lib/cjs/components/address/Address.js +2 -2
- package/lib/cjs/components/alert/Alert.js +1 -1
- package/lib/cjs/components/button/Button.js +1 -1
- package/lib/cjs/components/checkbox/Checkbox.js +1 -1
- package/lib/cjs/components/container/Container.js +1 -1
- package/lib/cjs/components/currency/Currency.js +1 -1
- package/lib/cjs/components/datagrid/DataGrid.js +5 -1
- package/lib/cjs/components/datamap/DataMap.js +7 -2
- package/lib/cjs/components/datetime/DateTime.d.ts +1 -1
- package/lib/cjs/components/datetime/DateTime.js +15 -13
- package/lib/cjs/components/day/Day.js +2 -2
- package/lib/cjs/components/editgrid/EditGrid.d.ts +0 -1
- package/lib/cjs/components/editgrid/EditGrid.js +1 -9
- package/lib/cjs/components/editgrid/editForm/EditGrid.edit.display.js +1 -1
- package/lib/cjs/components/fieldset/Fieldset.js +1 -0
- package/lib/cjs/components/file/File.js +1 -1
- package/lib/cjs/components/form/Form.js +14 -2
- package/lib/cjs/components/form/editForm/Form.edit.form.js +4 -3
- package/lib/cjs/components/number/Number.js +1 -1
- package/lib/cjs/components/panel/Panel.js +1 -1
- package/lib/cjs/components/radio/Radio.d.ts +9 -0
- package/lib/cjs/components/radio/Radio.js +20 -10
- package/lib/cjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +1 -1
- package/lib/cjs/components/select/Select.js +7 -3
- package/lib/cjs/components/select/editForm/Select.edit.data.js +1 -1
- package/lib/cjs/components/selectboxes/SelectBoxes.d.ts +6 -0
- package/lib/cjs/components/selectboxes/SelectBoxes.js +1 -1
- package/lib/cjs/components/signature/Signature.js +1 -1
- package/lib/cjs/components/survey/Survey.js +1 -1
- package/lib/cjs/components/tags/Tags.js +1 -1
- package/lib/cjs/components/textarea/TextArea.js +9 -4
- package/lib/cjs/components/textfield/TextField.js +13 -31
- package/lib/cjs/components/time/Time.js +1 -1
- package/lib/cjs/formio.form.js +5 -5
- package/lib/cjs/providers/storage/uploadAdapter.js +1 -1
- package/lib/cjs/providers/storage/url.js +7 -3
- package/lib/cjs/translations/en.d.ts +1 -232
- package/lib/cjs/translations/en.js +4 -2
- package/lib/cjs/utils/Evaluator.d.ts +20 -6
- package/lib/cjs/utils/Evaluator.js +38 -15
- package/lib/cjs/utils/builder.js +5 -5
- package/lib/cjs/utils/conditionOperators/IsEqualTo.js +3 -3
- package/lib/cjs/utils/formUtils.d.ts +2 -2
- package/lib/cjs/utils/index.d.ts +169 -2
- package/lib/cjs/utils/index.js +22 -2
- package/lib/cjs/utils/utils.d.ts +22 -37
- package/lib/cjs/utils/utils.js +63 -138
- package/lib/cjs/widgets/CalendarWidget.d.ts +1 -8
- package/lib/cjs/widgets/CalendarWidget.js +17 -43
- package/lib/mjs/Element.d.ts +2 -1
- package/lib/mjs/Element.js +11 -9
- package/lib/mjs/EventEmitter.js +2 -2
- package/lib/mjs/Form.js +1 -1
- package/lib/mjs/PDF.js +1 -1
- package/lib/mjs/PDFBuilder.d.ts +1 -0
- package/lib/mjs/PDFBuilder.js +9 -10
- package/lib/mjs/Webform.d.ts +2 -2
- package/lib/mjs/Webform.js +8 -8
- package/lib/mjs/WebformBuilder.d.ts +1 -1
- package/lib/mjs/WebformBuilder.js +36 -13
- package/lib/mjs/Wizard.d.ts +1 -2
- package/lib/mjs/Wizard.js +17 -23
- package/lib/mjs/WizardBuilder.js +1 -1
- package/lib/mjs/components/Components.js +7 -1
- package/lib/mjs/components/_classes/component/Component.d.ts +0 -1
- package/lib/mjs/components/_classes/component/Component.js +42 -13
- package/lib/mjs/components/_classes/component/editForm/Component.edit.conditional.js +1 -1
- package/lib/mjs/components/_classes/component/editForm/Component.edit.data.d.ts +7 -0
- package/lib/mjs/components/_classes/component/editForm/Component.edit.data.js +1 -0
- package/lib/mjs/components/_classes/component/editForm/Component.edit.logic.js +1 -1
- package/lib/mjs/components/_classes/componentModal/ComponentModal.js +1 -1
- package/lib/mjs/components/_classes/input/Input.d.ts +1 -1
- package/lib/mjs/components/_classes/input/Input.js +3 -3
- package/lib/mjs/components/_classes/list/ListComponent.js +1 -1
- package/lib/mjs/components/_classes/nested/NestedComponent.d.ts +1 -0
- package/lib/mjs/components/_classes/nested/NestedComponent.js +19 -9
- package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
- package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +1 -1
- package/lib/mjs/components/address/Address.js +2 -2
- package/lib/mjs/components/alert/Alert.js +1 -1
- package/lib/mjs/components/button/Button.js +1 -1
- package/lib/mjs/components/checkbox/Checkbox.js +1 -1
- package/lib/mjs/components/container/Container.js +1 -1
- package/lib/mjs/components/currency/Currency.js +1 -1
- package/lib/mjs/components/datagrid/DataGrid.js +5 -1
- package/lib/mjs/components/datamap/DataMap.js +7 -2
- package/lib/mjs/components/datetime/DateTime.d.ts +1 -1
- package/lib/mjs/components/datetime/DateTime.js +15 -13
- package/lib/mjs/components/day/Day.js +2 -2
- package/lib/mjs/components/editgrid/EditGrid.d.ts +0 -1
- package/lib/mjs/components/editgrid/EditGrid.js +1 -9
- package/lib/mjs/components/editgrid/editForm/EditGrid.edit.display.js +1 -1
- package/lib/mjs/components/fieldset/Fieldset.js +1 -0
- package/lib/mjs/components/file/File.js +1 -1
- package/lib/mjs/components/form/Form.js +13 -2
- package/lib/mjs/components/form/editForm/Form.edit.form.js +3 -2
- package/lib/mjs/components/number/Number.js +1 -1
- package/lib/mjs/components/panel/Panel.js +1 -1
- package/lib/mjs/components/radio/Radio.d.ts +9 -0
- package/lib/mjs/components/radio/Radio.js +20 -10
- package/lib/mjs/components/recaptcha/editForm/ReCaptcha.edit.display.js +1 -1
- package/lib/mjs/components/select/Select.js +7 -3
- package/lib/mjs/components/select/editForm/Select.edit.data.js +1 -1
- package/lib/mjs/components/selectboxes/SelectBoxes.d.ts +6 -0
- package/lib/mjs/components/selectboxes/SelectBoxes.js +1 -1
- package/lib/mjs/components/signature/Signature.js +1 -1
- package/lib/mjs/components/survey/Survey.js +1 -1
- package/lib/mjs/components/tags/Tags.js +1 -1
- package/lib/mjs/components/textarea/TextArea.js +9 -4
- package/lib/mjs/components/textfield/TextField.js +7 -2
- package/lib/mjs/components/time/Time.js +1 -1
- package/lib/mjs/formio.form.js +3 -3
- package/lib/mjs/providers/storage/uploadAdapter.js +1 -1
- package/lib/mjs/providers/storage/url.js +7 -3
- package/lib/mjs/translations/en.d.ts +1 -232
- package/lib/mjs/translations/en.js +8 -47
- package/lib/mjs/utils/Evaluator.d.ts +20 -6
- package/lib/mjs/utils/Evaluator.js +31 -13
- package/lib/mjs/utils/builder.js +1 -1
- package/lib/mjs/utils/conditionOperators/IsEqualTo.js +1 -1
- package/lib/mjs/utils/formUtils.d.ts +2 -2
- package/lib/mjs/utils/index.d.ts +169 -2
- package/lib/mjs/utils/index.js +18 -1
- package/lib/mjs/utils/utils.d.ts +22 -37
- package/lib/mjs/utils/utils.js +57 -113
- package/lib/mjs/widgets/CalendarWidget.d.ts +1 -8
- package/lib/mjs/widgets/CalendarWidget.js +17 -43
- package/package.json +5 -3
- package/lib/cjs/i18n.d.ts +0 -13
- package/lib/cjs/i18n.js +0 -19
- package/lib/cjs/utils/i18n.d.ts +0 -19
- package/lib/cjs/utils/i18n.js +0 -120
- package/lib/mjs/i18n.d.ts +0 -13
- package/lib/mjs/i18n.js +0 -14
- package/lib/mjs/utils/i18n.d.ts +0 -19
- package/lib/mjs/utils/i18n.js +0 -112
|
@@ -3,7 +3,7 @@ import _ from 'lodash';
|
|
|
3
3
|
import Field from '../field/Field';
|
|
4
4
|
import Components from '../../Components';
|
|
5
5
|
'';
|
|
6
|
-
import
|
|
6
|
+
import FormioUtils from '../../../utils';
|
|
7
7
|
import { process as processAsync, processSync } from '@formio/core/process';
|
|
8
8
|
/**
|
|
9
9
|
* NestedComponent class.
|
|
@@ -204,7 +204,7 @@ export default class NestedComponent extends Field {
|
|
|
204
204
|
*/
|
|
205
205
|
set rowIndex(value) {
|
|
206
206
|
this._rowIndex = value;
|
|
207
|
-
this.paths = getComponentPaths(this.component, this.parent?.component, {
|
|
207
|
+
this.paths = FormioUtils.getComponentPaths(this.component, this.parent?.component, {
|
|
208
208
|
...(this.parent?.paths || {}),
|
|
209
209
|
...{ dataIndex: value }
|
|
210
210
|
});
|
|
@@ -308,7 +308,14 @@ export default class NestedComponent extends Field {
|
|
|
308
308
|
* @returns {any} - The component that is located.
|
|
309
309
|
*/
|
|
310
310
|
getComponent(path) {
|
|
311
|
-
|
|
311
|
+
// If the component is found
|
|
312
|
+
if (!this.componentMatches) {
|
|
313
|
+
this.componentMatches = {};
|
|
314
|
+
}
|
|
315
|
+
if (this.componentMatches && this.componentMatches[path]) {
|
|
316
|
+
return this.componentMatches[path];
|
|
317
|
+
}
|
|
318
|
+
path = FormioUtils.getStringFromComponentPath(path);
|
|
312
319
|
const matches = {
|
|
313
320
|
path: undefined,
|
|
314
321
|
fullPath: undefined,
|
|
@@ -320,7 +327,7 @@ export default class NestedComponent extends Field {
|
|
|
320
327
|
};
|
|
321
328
|
this.everyComponent((component) => {
|
|
322
329
|
// All searches are relative to this component so replace this path from the child paths.
|
|
323
|
-
componentMatches(component.component, {
|
|
330
|
+
FormioUtils.componentMatches(component.component, {
|
|
324
331
|
path: component.paths?.path?.replace(new RegExp(`^${this.paths?.path}\\.?`), ''),
|
|
325
332
|
fullPath: component.paths?.fullPath?.replace(new RegExp(`^${this.paths?.fullPath}\\.?`), ''),
|
|
326
333
|
localPath: component.paths?.localPath?.replace(new RegExp(`^${this.paths?.localPath}\\.?`), ''),
|
|
@@ -332,7 +339,8 @@ export default class NestedComponent extends Field {
|
|
|
332
339
|
return match;
|
|
333
340
|
});
|
|
334
341
|
});
|
|
335
|
-
|
|
342
|
+
this.componentMatches[path] = FormioUtils.getBestMatch(matches)?.instance;
|
|
343
|
+
return this.componentMatches[path];
|
|
336
344
|
}
|
|
337
345
|
/**
|
|
338
346
|
* Return a component provided the Id of the component.
|
|
@@ -374,7 +382,7 @@ export default class NestedComponent extends Field {
|
|
|
374
382
|
options.localRoot = this.localRoot;
|
|
375
383
|
options.skipInit = true;
|
|
376
384
|
if (!(options.display === 'pdf' && this.builderMode)) {
|
|
377
|
-
component.id = getRandomComponentId();
|
|
385
|
+
component.id = FormioUtils.getRandomComponentId();
|
|
378
386
|
}
|
|
379
387
|
const comp = Components.create(component, options, data, true);
|
|
380
388
|
comp.init();
|
|
@@ -659,7 +667,7 @@ export default class NestedComponent extends Field {
|
|
|
659
667
|
}
|
|
660
668
|
validationProcessor({ scope, data, row, instance, paths }, flags) {
|
|
661
669
|
const { dirty } = flags;
|
|
662
|
-
if (this.root.
|
|
670
|
+
if (this.root && this.root.hasSubWizards && this.page !== this.root.page) {
|
|
663
671
|
instance = this.componentsMap?.hasOwnProperty(paths.dataPath)
|
|
664
672
|
? this.componentsMap[paths.dataPath]
|
|
665
673
|
: this.getComponent(paths.dataPath);
|
|
@@ -795,8 +803,10 @@ export default class NestedComponent extends Field {
|
|
|
795
803
|
return this.data;
|
|
796
804
|
}
|
|
797
805
|
resetValue() {
|
|
798
|
-
|
|
806
|
+
// Reset values of child components first, then reset the parent one, otherwise it will restore the default
|
|
807
|
+
// value of parent component and clear it one by one while resetting child components
|
|
799
808
|
this.getComponents().forEach((comp) => comp.resetValue());
|
|
809
|
+
super.resetValue();
|
|
800
810
|
this.setPristine(true);
|
|
801
811
|
}
|
|
802
812
|
get dataReady() {
|
|
@@ -808,7 +818,7 @@ export default class NestedComponent extends Field {
|
|
|
808
818
|
return false;
|
|
809
819
|
}
|
|
810
820
|
if (component.type === 'components') {
|
|
811
|
-
if (component.tree && component.hasValue(value)) {
|
|
821
|
+
if ((component.tree || component.hasInput) && component.hasValue(value)) {
|
|
812
822
|
return component.setValue(_.get(value, component.key), flags);
|
|
813
823
|
}
|
|
814
824
|
return component.setValue(value, flags);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import _ from 'lodash';
|
|
3
3
|
import { Utils } from '@formio/core/utils';
|
|
4
4
|
const { getComponentPaths } = Utils;
|
|
5
|
-
import { componentValueTypes, isLayoutComponent } from '../../../utils
|
|
5
|
+
import { componentValueTypes, isLayoutComponent } from '../../../utils';
|
|
6
6
|
import Component from '../component/Component';
|
|
7
7
|
import NestedDataComponent from '../nesteddata/NestedDataComponent';
|
|
8
8
|
export default class NestedArrayComponent extends NestedDataComponent {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import Component from '../component/Component';
|
|
3
3
|
import NestedComponent from '../nested/NestedComponent';
|
|
4
4
|
import _ from 'lodash';
|
|
5
|
-
import { componentValueTypes, getComponentSavedTypes } from '../../../utils
|
|
5
|
+
import { componentValueTypes, getComponentSavedTypes } from '../../../utils';
|
|
6
6
|
export default class NestedDataComponent extends NestedComponent {
|
|
7
7
|
hasChanged(newValue, oldValue) {
|
|
8
8
|
// If we do not have a value and are getting set to anything other than undefined or null, then we changed.
|
|
@@ -5,7 +5,7 @@ import { GoogleAddressProvider } from '../../providers/address/GoogleAddressProv
|
|
|
5
5
|
import Field from '../_classes/field/Field';
|
|
6
6
|
import NestedComponent from '../_classes/nested/NestedComponent';
|
|
7
7
|
import ContainerComponent from '../container/Container';
|
|
8
|
-
import { componentValueTypes, getComponentSavedTypes } from '../../utils
|
|
8
|
+
import { componentValueTypes, getComponentSavedTypes } from '../../utils';
|
|
9
9
|
export const AddressComponentMode = {
|
|
10
10
|
Autocomplete: 'autocomplete',
|
|
11
11
|
Manual: 'manual',
|
|
@@ -245,7 +245,7 @@ export default class AddressComponent extends ContainerComponent {
|
|
|
245
245
|
if (this.manualMode) {
|
|
246
246
|
this.restoreComponentsContext();
|
|
247
247
|
}
|
|
248
|
-
if (changed || !_.isEmpty(value) && flags.fromSubmission) {
|
|
248
|
+
if (changed || !_.isEmpty(value) && flags.fromSubmission || flags.resetValue) {
|
|
249
249
|
this.redraw();
|
|
250
250
|
}
|
|
251
251
|
return changed;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import Field from '../_classes/field/Field';
|
|
3
3
|
import Input from '../_classes/input/Input';
|
|
4
|
-
import { componentValueTypes, eachComponent, getArrayFromComponentPath, getComponentSavedTypes } from '../../utils
|
|
4
|
+
import { componentValueTypes, eachComponent, getArrayFromComponentPath, getComponentSavedTypes } from '../../utils';
|
|
5
5
|
export default class ButtonComponent extends Field {
|
|
6
6
|
static schema(...extend) {
|
|
7
7
|
return Input.schema({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { componentValueTypes, getComponentSavedTypes } from '../../utils
|
|
2
|
+
import { componentValueTypes, getComponentSavedTypes } from '../../utils';
|
|
3
3
|
import Field from '../_classes/field/Field';
|
|
4
4
|
export default class CheckBoxComponent extends Field {
|
|
5
5
|
static schema(...extend) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { componentValueTypes, getComponentSavedTypes, getFocusableElements } from '../../utils
|
|
2
|
+
import { componentValueTypes, getComponentSavedTypes, getFocusableElements } from '../../utils';
|
|
3
3
|
import Component from '../_classes/component/Component';
|
|
4
4
|
import Field from '../_classes/field/Field';
|
|
5
5
|
import NestedDataComponent from '../_classes/nesteddata/NestedDataComponent';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createNumberMask } from '@formio/text-mask-addons';
|
|
2
2
|
import { maskInput } from '@formio/vanilla-text-mask';
|
|
3
3
|
import _ from 'lodash';
|
|
4
|
-
import { getCurrencyAffixes } from '../../utils
|
|
4
|
+
import { getCurrencyAffixes } from '../../utils';
|
|
5
5
|
import NumberComponent from '../number/Number';
|
|
6
6
|
export default class CurrencyComponent extends NumberComponent {
|
|
7
7
|
static schema(...extend) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import NestedArrayComponent from '../_classes/nestedarray/NestedArrayComponent';
|
|
3
|
-
import { fastCloneDeep, getFocusableElements, getComponent } from '../../utils
|
|
3
|
+
import { fastCloneDeep, getFocusableElements, getComponent } from '../../utils';
|
|
4
4
|
export default class DataGridComponent extends NestedArrayComponent {
|
|
5
5
|
static schema(...extend) {
|
|
6
6
|
return NestedArrayComponent.schema({
|
|
@@ -415,12 +415,16 @@ export default class DataGridComponent extends NestedArrayComponent {
|
|
|
415
415
|
}
|
|
416
416
|
updateComponentsRowIndex(components, rowIndex) {
|
|
417
417
|
components.forEach((component, colIndex) => {
|
|
418
|
+
if (this.componentsMap[component.paths.dataPath]) {
|
|
419
|
+
delete this.componentsMap[component.paths.dataPath];
|
|
420
|
+
}
|
|
418
421
|
if (component.options?.name) {
|
|
419
422
|
const newName = `[${this.key}][${rowIndex}]`;
|
|
420
423
|
component.options.name = component.options.name.replace(`[${this.key}][${component.rowIndex}]`, newName);
|
|
421
424
|
}
|
|
422
425
|
component.rowIndex = rowIndex;
|
|
423
426
|
component.row = `${rowIndex}-${colIndex}`;
|
|
427
|
+
this.componentsMap[component.paths.dataPath] = component;
|
|
424
428
|
});
|
|
425
429
|
}
|
|
426
430
|
updateRowsComponents(rowIndex) {
|
|
@@ -223,6 +223,9 @@ export default class DataMapComponent extends DataGridComponent {
|
|
|
223
223
|
options.name += `[${rowIndex}]`;
|
|
224
224
|
options.row = `${rowIndex}`;
|
|
225
225
|
options.rowIndex = rowIndex;
|
|
226
|
+
options.onChange = (flags, changed, modified) => {
|
|
227
|
+
this.triggerChange({ modified });
|
|
228
|
+
};
|
|
226
229
|
const components = {};
|
|
227
230
|
components['__key'] = this.createComponent(this.keySchema, options, { __key: this.builderMode ? this.defaultRowKey : key });
|
|
228
231
|
components['__key'].on('componentChange', (event) => {
|
|
@@ -238,7 +241,9 @@ export default class DataMapComponent extends DataGridComponent {
|
|
|
238
241
|
valueComponent.key = key;
|
|
239
242
|
const componentOptions = this.options;
|
|
240
243
|
componentOptions.row = options.row;
|
|
241
|
-
|
|
244
|
+
const componentOptionsCloned = _.clone(componentOptions);
|
|
245
|
+
componentOptionsCloned.onChange = options.onChange;
|
|
246
|
+
components[this.valueKey] = this.createComponent(valueComponent, componentOptionsCloned, this.dataValue);
|
|
242
247
|
return components;
|
|
243
248
|
}
|
|
244
249
|
get canAddColumn() {
|
|
@@ -261,7 +266,7 @@ export default class DataMapComponent extends DataGridComponent {
|
|
|
261
266
|
const index = this.rows.length;
|
|
262
267
|
this.rows[index] = this.createRowComponents(this.dataValue, index);
|
|
263
268
|
this.redraw();
|
|
264
|
-
this.triggerChange();
|
|
269
|
+
this.triggerChange({ modified: true });
|
|
265
270
|
}
|
|
266
271
|
removeRow(index) {
|
|
267
272
|
const keys = Object.keys(this.dataValue);
|
|
@@ -17,7 +17,7 @@ export default class DateTimeComponent extends Input {
|
|
|
17
17
|
};
|
|
18
18
|
static savedValueTypes(schema: any): string[];
|
|
19
19
|
get emptyValue(): string;
|
|
20
|
-
get
|
|
20
|
+
get dayjsFormat(): string;
|
|
21
21
|
createWrapper(): boolean;
|
|
22
22
|
checkValidity(data: any, dirty: any, rowData: any): boolean;
|
|
23
23
|
getValueAsString(value: any, options: any): any;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
3
|
import FormioUtils from '../../utils';
|
|
4
|
-
import { componentValueTypes, fastCloneDeep, getComponentSavedTypes } from '../../utils
|
|
4
|
+
import { componentValueTypes, fastCloneDeep, getComponentSavedTypes } from '../../utils';
|
|
5
5
|
import Input from '../_classes/input/Input';
|
|
6
6
|
export default class DateTimeComponent extends Input {
|
|
7
7
|
static schema(...extend) {
|
|
@@ -147,8 +147,8 @@ export default class DateTimeComponent extends Input {
|
|
|
147
147
|
get emptyValue() {
|
|
148
148
|
return '';
|
|
149
149
|
}
|
|
150
|
-
get
|
|
151
|
-
return FormioUtils.
|
|
150
|
+
get dayjsFormat() {
|
|
151
|
+
return FormioUtils.convertFormatToDayjs(this.component.format);
|
|
152
152
|
}
|
|
153
153
|
isEmpty(value = this.dataValue) {
|
|
154
154
|
if (value && (value.toString() === 'Invalid Date')) {
|
|
@@ -157,12 +157,14 @@ export default class DateTimeComponent extends Input {
|
|
|
157
157
|
return super.isEmpty(value);
|
|
158
158
|
}
|
|
159
159
|
formatValue(input) {
|
|
160
|
-
|
|
161
|
-
|
|
160
|
+
if (dayjs(input).isValid()) {
|
|
161
|
+
return dayjs.utc(input).toISOString();
|
|
162
|
+
}
|
|
163
|
+
return input;
|
|
162
164
|
}
|
|
163
165
|
isEqual(valueA, valueB = this.dataValue) {
|
|
164
166
|
return (this.isEmpty(valueA) && this.isEmpty(valueB))
|
|
165
|
-
||
|
|
167
|
+
|| dayjs.utc(valueA).format(this.dayjsFormat) === dayjs.utc(valueB).format(this.dayjsFormat);
|
|
166
168
|
}
|
|
167
169
|
createWrapper() {
|
|
168
170
|
return false;
|
|
@@ -178,18 +180,18 @@ export default class DateTimeComponent extends Input {
|
|
|
178
180
|
return super.checkValidity(data, dirty, rowData);
|
|
179
181
|
}
|
|
180
182
|
getValueAsString(value, options) {
|
|
181
|
-
let format = FormioUtils.
|
|
182
|
-
format += format.match(/z$/) ? '' : ' z';
|
|
183
|
+
let format = FormioUtils.convertFormatToDayjs(this.component.format);
|
|
183
184
|
const timezone = this.timezone;
|
|
184
185
|
if (value && !this.attached && timezone) {
|
|
186
|
+
format += format.match(/z$/) ? '' : ' z';
|
|
185
187
|
if (Array.isArray(value) && this.component.multiple) {
|
|
186
|
-
return value.map(item => _.trim(FormioUtils.
|
|
188
|
+
return value.map(item => _.trim(FormioUtils.dayjsDate(item, format, timezone, options).format(format))).join(', ');
|
|
187
189
|
}
|
|
188
|
-
return _.trim(FormioUtils.
|
|
190
|
+
return _.trim(FormioUtils.dayjsDate(value, format, timezone, options).format(format));
|
|
189
191
|
}
|
|
190
192
|
if (Array.isArray(value) && this.component.multiple) {
|
|
191
|
-
return value.map(item => _.trim(
|
|
193
|
+
return value.map(item => _.trim(dayjs(item).format(format))).join(', ');
|
|
192
194
|
}
|
|
193
|
-
return (value ? _.trim(
|
|
195
|
+
return (value ? _.trim(dayjs(value).format(format)) : value) || '';
|
|
194
196
|
}
|
|
195
197
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import moment from 'moment';
|
|
3
3
|
import Field from '../_classes/field/Field';
|
|
4
|
-
import { boolValue, componentValueTypes, getComponentSavedTypes, getLocaleDateFormatInfo } from '../../utils
|
|
4
|
+
import { boolValue, componentValueTypes, getComponentSavedTypes, getLocaleDateFormatInfo } from '../../utils';
|
|
5
5
|
import { getDayFormat } from '@formio/core';
|
|
6
6
|
export default class DayComponent extends Field {
|
|
7
7
|
static schema(...extend) {
|
|
@@ -53,7 +53,7 @@ export default class DayComponent extends Field {
|
|
|
53
53
|
// Empty value used before 9.3.x
|
|
54
54
|
static oldEmptyValue = '00/00/0000';
|
|
55
55
|
constructor(component, options, data) {
|
|
56
|
-
if (!options.inFormBuilder && !options.building) {
|
|
56
|
+
if (options && !options.inFormBuilder && !options.building) {
|
|
57
57
|
if (component.maxDate && component.maxDate.indexOf('moment(') === -1) {
|
|
58
58
|
component.maxDate = moment(component.maxDate, 'YYYY-MM-DD').toISOString();
|
|
59
59
|
}
|
|
@@ -101,7 +101,6 @@ export default class EditGridComponent extends NestedArrayComponent {
|
|
|
101
101
|
changeState(changed: any, flags: any): void;
|
|
102
102
|
openWhenEmpty(): void;
|
|
103
103
|
restoreRowContext(editRow: any, flags?: {}): void;
|
|
104
|
-
emptyRows(): void;
|
|
105
104
|
hasChanged: (newValue: any, oldValue: any) => boolean;
|
|
106
105
|
}
|
|
107
106
|
import NestedArrayComponent from '../_classes/nestedarray/NestedArrayComponent';
|
|
@@ -4,7 +4,7 @@ import { editgrid as templates } from '@formio/bootstrap/components';
|
|
|
4
4
|
import NestedArrayComponent from '../_classes/nestedarray/NestedArrayComponent';
|
|
5
5
|
import Component from '../_classes/component/Component';
|
|
6
6
|
import Alert from '../alert/Alert';
|
|
7
|
-
import { fastCloneDeep, Evaluator, getArrayFromComponentPath, eachComponent } from '../../utils
|
|
7
|
+
import { fastCloneDeep, Evaluator, getArrayFromComponentPath, eachComponent } from '../../utils';
|
|
8
8
|
const EditRowState = {
|
|
9
9
|
New: 'new',
|
|
10
10
|
Editing: 'editing',
|
|
@@ -1192,13 +1192,5 @@ export default class EditGridComponent extends NestedArrayComponent {
|
|
|
1192
1192
|
this.setNestedValue(component, editRow.data, flags);
|
|
1193
1193
|
});
|
|
1194
1194
|
}
|
|
1195
|
-
emptyRows() {
|
|
1196
|
-
this.editRows.forEach((editRow, index) => this.destroyComponents(false, index));
|
|
1197
|
-
this.editRows = [];
|
|
1198
|
-
}
|
|
1199
|
-
resetValue() {
|
|
1200
|
-
super.resetValue();
|
|
1201
|
-
this.emptyRows();
|
|
1202
|
-
}
|
|
1203
1195
|
}
|
|
1204
1196
|
EditGridComponent.prototype.hasChanged = Component.prototype.hasChanged;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Field from '../_classes/field/Field';
|
|
2
|
-
import { componentValueTypes, getComponentSavedTypes, uniqueName } from '../../utils
|
|
2
|
+
import { componentValueTypes, getComponentSavedTypes, uniqueName } from '../../utils';
|
|
3
3
|
import download from 'downloadjs';
|
|
4
4
|
import _ from 'lodash';
|
|
5
5
|
import fileProcessor from '../../providers/processor/fileProcessor';
|
|
@@ -3,7 +3,7 @@ import _ from 'lodash';
|
|
|
3
3
|
import Component from '../_classes/component/Component';
|
|
4
4
|
import ComponentModal from '../_classes/componentModal/ComponentModal';
|
|
5
5
|
import EventEmitter from 'eventemitter3';
|
|
6
|
-
import { isMongoId, eachComponent, componentValueTypes } from '../../utils
|
|
6
|
+
import { isMongoId, eachComponent, componentValueTypes } from '../../utils';
|
|
7
7
|
import { Formio } from '../../Formio';
|
|
8
8
|
import Form from '../../Form';
|
|
9
9
|
export default class FormComponent extends Component {
|
|
@@ -274,6 +274,9 @@ export default class FormComponent extends Component {
|
|
|
274
274
|
if (this.isSubFormLazyLoad() && !this.hasLoadedForm && !this.subFormLoading) {
|
|
275
275
|
this.createSubForm(true);
|
|
276
276
|
}
|
|
277
|
+
if (!this.subFormReady) {
|
|
278
|
+
return Promise.resolve();
|
|
279
|
+
}
|
|
277
280
|
return this.subFormReady.then(() => {
|
|
278
281
|
this.empty(element);
|
|
279
282
|
if (this.options.builder) {
|
|
@@ -408,7 +411,8 @@ export default class FormComponent extends Component {
|
|
|
408
411
|
const componentsMap = this.componentsMap;
|
|
409
412
|
const formComponentsMap = this.subForm.componentsMap;
|
|
410
413
|
_.assign(componentsMap, formComponentsMap);
|
|
411
|
-
this.component.components = this.subForm.components
|
|
414
|
+
this.component.components = this.subForm._form?.components;
|
|
415
|
+
this.component.display = this.subForm._form?.display;
|
|
412
416
|
this.subForm.on('change', () => {
|
|
413
417
|
if (this.subForm && !this.shouldConditionallyClear()) {
|
|
414
418
|
this.dataValue = this.subForm.getValue();
|
|
@@ -688,6 +692,13 @@ export default class FormComponent extends Component {
|
|
|
688
692
|
}
|
|
689
693
|
return errors;
|
|
690
694
|
}
|
|
695
|
+
conditionallyHidden() {
|
|
696
|
+
const conditionallyHidden = super.conditionallyHidden();
|
|
697
|
+
if (this.subForm) {
|
|
698
|
+
this.subForm._conditionallyHidden = conditionallyHidden;
|
|
699
|
+
}
|
|
700
|
+
return conditionallyHidden;
|
|
701
|
+
}
|
|
691
702
|
updateSubFormVisibility() {
|
|
692
703
|
if (this.subForm) {
|
|
693
704
|
this.subForm.parentVisible = this.visible;
|
|
@@ -30,9 +30,10 @@ export default [
|
|
|
30
30
|
tooltip: 'if it is checked, the subform is loaded after navigation to the page with this component within the wizard.',
|
|
31
31
|
input: true,
|
|
32
32
|
customConditional({ instance, data }) {
|
|
33
|
-
const
|
|
33
|
+
const formComp = instance.root?.getComponent('form');
|
|
34
|
+
const formInfo = formComp?.defaultDownloadedResources.find(res => res._id === data.form);
|
|
34
35
|
const displayMode = 'wizard';
|
|
35
|
-
return instance.options?.editForm?.display === displayMode && formInfo && formInfo.display !== displayMode;
|
|
36
|
+
return instance.options?.editForm?.display === displayMode && ((data.form && !formInfo) || (formInfo && formInfo.display !== displayMode));
|
|
36
37
|
},
|
|
37
38
|
},
|
|
38
39
|
{
|
|
@@ -2,7 +2,7 @@ import { createNumberMask } from '@formio/text-mask-addons';
|
|
|
2
2
|
import { conformToMask, maskInput } from '@formio/vanilla-text-mask';
|
|
3
3
|
import _ from 'lodash';
|
|
4
4
|
import Input from '../_classes/input/Input';
|
|
5
|
-
import { getNumberSeparators, getNumberDecimalLimit, componentValueTypes, getComponentSavedTypes } from '../../utils/
|
|
5
|
+
import { getNumberSeparators, getNumberDecimalLimit, componentValueTypes, getComponentSavedTypes } from '../../utils/';
|
|
6
6
|
export default class NumberComponent extends Input {
|
|
7
7
|
static schema(...extend) {
|
|
8
8
|
return Input.schema({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import NestedComponent from '../_classes/nested/NestedComponent';
|
|
2
|
-
import { isChildOf } from '../../utils
|
|
2
|
+
import { isChildOf } from '../../utils';
|
|
3
3
|
export default class PanelComponent extends NestedComponent {
|
|
4
4
|
static schema(...extend) {
|
|
5
5
|
return NestedComponent.schema({
|
|
@@ -16,6 +16,7 @@ export default class RadioComponent extends ListComponent {
|
|
|
16
16
|
static savedValueTypes(schema: any): any[];
|
|
17
17
|
constructor(component: any, options: any, data: any);
|
|
18
18
|
previousValue: any;
|
|
19
|
+
uncheckValue(flags?: {}): void;
|
|
19
20
|
get inputInfo(): any;
|
|
20
21
|
get emptyValue(): string;
|
|
21
22
|
get isRadio(): boolean;
|
|
@@ -28,6 +29,7 @@ export default class RadioComponent extends ListComponent {
|
|
|
28
29
|
optionsLoaded: boolean | undefined;
|
|
29
30
|
loadedOptions: any[] | undefined;
|
|
30
31
|
beforeSubmit(): Promise<any>;
|
|
32
|
+
convertValues(values: any): any;
|
|
31
33
|
render(): string;
|
|
32
34
|
attach(element: any): Promise<void>;
|
|
33
35
|
detach(element: any): void;
|
|
@@ -41,5 +43,12 @@ export default class RadioComponent extends ListComponent {
|
|
|
41
43
|
setSelectedClasses(): void;
|
|
42
44
|
updateValue(value: any, flags: any): boolean;
|
|
43
45
|
currentValue: any;
|
|
46
|
+
/**
|
|
47
|
+
* Normalize values coming into updateValue. For example, depending on the configuration, string value `"true"` will be normalized to boolean `true`.
|
|
48
|
+
* @param {*} value - The value to normalize
|
|
49
|
+
* @returns {*} - Returns the normalized value
|
|
50
|
+
*/
|
|
51
|
+
convertByDataType(value: any): any;
|
|
52
|
+
normalizeValue(value: any): any;
|
|
44
53
|
}
|
|
45
54
|
import ListComponent from '../_classes/list/ListComponent';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import ListComponent from '../_classes/list/ListComponent';
|
|
3
3
|
import { Formio } from '../../Formio';
|
|
4
|
-
import { boolValue, componentValueTypes, getComponentSavedTypes } from '../../utils
|
|
4
|
+
import { boolValue, componentValueTypes, getComponentSavedTypes } from '../../utils';
|
|
5
5
|
export default class RadioComponent extends ListComponent {
|
|
6
6
|
static schema(...extend) {
|
|
7
7
|
return ListComponent.schema({
|
|
@@ -80,13 +80,15 @@ export default class RadioComponent extends ListComponent {
|
|
|
80
80
|
}
|
|
81
81
|
return defaultValue;
|
|
82
82
|
}
|
|
83
|
-
|
|
83
|
+
uncheckValue(flags = {}) {
|
|
84
84
|
this.unset();
|
|
85
85
|
this.setValue(this.emptyValue, {
|
|
86
86
|
noUpdateEvent: true,
|
|
87
87
|
noValidate: true,
|
|
88
88
|
resetValue: true
|
|
89
89
|
});
|
|
90
|
+
this.triggerChange(flags);
|
|
91
|
+
this.setSelectedClasses();
|
|
90
92
|
}
|
|
91
93
|
get inputInfo() {
|
|
92
94
|
const info = super.elementInfo();
|
|
@@ -153,6 +155,12 @@ export default class RadioComponent extends ListComponent {
|
|
|
153
155
|
this.dataReady.then(() => res(true));
|
|
154
156
|
});
|
|
155
157
|
}
|
|
158
|
+
convertValues(values) {
|
|
159
|
+
if (this.options.renderMode === 'html' && this.type === 'radio') {
|
|
160
|
+
return values.map(x => ({ ...x, value: this.convertByDataType(x.value) }));
|
|
161
|
+
}
|
|
162
|
+
return values;
|
|
163
|
+
}
|
|
156
164
|
render() {
|
|
157
165
|
if (!this.optionsLoaded) {
|
|
158
166
|
return super.render(this.renderTemplate('loader'));
|
|
@@ -160,7 +168,7 @@ export default class RadioComponent extends ListComponent {
|
|
|
160
168
|
return super.render(this.renderTemplate('radio', {
|
|
161
169
|
input: this.inputInfo,
|
|
162
170
|
inline: this.component.inline,
|
|
163
|
-
values: this.component.dataSrc === 'values' ? this.component.values : this.loadedOptions,
|
|
171
|
+
values: this.component.dataSrc === 'values' ? this.convertValues(this.component.values) : this.loadedOptions,
|
|
164
172
|
value: this.dataValue,
|
|
165
173
|
row: this.row,
|
|
166
174
|
}));
|
|
@@ -394,9 +402,7 @@ export default class RadioComponent extends ListComponent {
|
|
|
394
402
|
this.currentValue = this.dataValue;
|
|
395
403
|
const shouldResetValue = flags && flags.modified && !flags.noUpdateEvent && this.previousValue === this.currentValue;
|
|
396
404
|
if (shouldResetValue) {
|
|
397
|
-
this.
|
|
398
|
-
this.triggerChange(flags);
|
|
399
|
-
this.setSelectedClasses();
|
|
405
|
+
this.uncheckValue(flags);
|
|
400
406
|
}
|
|
401
407
|
this.previousValue = this.dataValue;
|
|
402
408
|
return changed;
|
|
@@ -406,7 +412,7 @@ export default class RadioComponent extends ListComponent {
|
|
|
406
412
|
* @param {*} value - The value to normalize
|
|
407
413
|
* @returns {*} - Returns the normalized value
|
|
408
414
|
*/
|
|
409
|
-
|
|
415
|
+
convertByDataType(value) {
|
|
410
416
|
const dataType = this.component.dataType || 'auto';
|
|
411
417
|
if (value === this.emptyValue) {
|
|
412
418
|
return value;
|
|
@@ -438,13 +444,17 @@ export default class RadioComponent extends ListComponent {
|
|
|
438
444
|
value = !(!value || value.toString() === 'false');
|
|
439
445
|
break;
|
|
440
446
|
}
|
|
441
|
-
|
|
447
|
+
return value;
|
|
448
|
+
}
|
|
449
|
+
normalizeValue(value) {
|
|
450
|
+
const valueConverted = this.convertByDataType(value);
|
|
451
|
+
if (this.isSelectURL && this.templateData && this.templateData[valueConverted]) {
|
|
442
452
|
const submission = this.root.submission;
|
|
443
453
|
if (!submission.metadata.selectData) {
|
|
444
454
|
submission.metadata.selectData = {};
|
|
445
455
|
}
|
|
446
|
-
_.set(submission.metadata.selectData, this.path, this.templateData[
|
|
456
|
+
_.set(submission.metadata.selectData, this.path, this.templateData[valueConverted]);
|
|
447
457
|
}
|
|
448
|
-
return super.normalizeValue(
|
|
458
|
+
return super.normalizeValue(valueConverted);
|
|
449
459
|
}
|
|
450
460
|
}
|
|
@@ -2,7 +2,7 @@ import _ from 'lodash';
|
|
|
2
2
|
import { Formio } from '../../Formio';
|
|
3
3
|
import ListComponent from '../_classes/list/ListComponent';
|
|
4
4
|
import Form from '../../Form';
|
|
5
|
-
import { getRandomComponentId, boolValue, isPromise, componentValueTypes, getComponentSavedTypes, isSelectResourceWithObjectValue, removeHTML } from '../../utils
|
|
5
|
+
import { getRandomComponentId, boolValue, isPromise, componentValueTypes, getComponentSavedTypes, isSelectResourceWithObjectValue, removeHTML } from '../../utils';
|
|
6
6
|
import Choices from '../../utils/ChoicesWrapper';
|
|
7
7
|
export default class SelectComponent extends ListComponent {
|
|
8
8
|
static schema(...extend) {
|
|
@@ -947,8 +947,9 @@ export default class SelectComponent extends ListComponent {
|
|
|
947
947
|
});
|
|
948
948
|
}
|
|
949
949
|
// Add value options.
|
|
950
|
+
const value = this.undoValueTyping(this.dataValue);
|
|
950
951
|
this.addValueOptions();
|
|
951
|
-
this.setChoicesValue(
|
|
952
|
+
this.setChoicesValue(value);
|
|
952
953
|
if (this.isSelectResource && this.refs.addResource) {
|
|
953
954
|
this.addEventListener(this.refs.addResource, 'click', (event) => {
|
|
954
955
|
event.preventDefault();
|
|
@@ -1260,7 +1261,7 @@ export default class SelectComponent extends ListComponent {
|
|
|
1260
1261
|
}
|
|
1261
1262
|
_.set(submission.metadata.selectData, this.path, templateData);
|
|
1262
1263
|
}
|
|
1263
|
-
if (flags.resetValue && this.root?.submission && !this.options.readOnly) {
|
|
1264
|
+
if (flags.resetValue && !flags.fromSubmission && this.root?.submission && !this.options.readOnly) {
|
|
1264
1265
|
const submission = this.root.submission;
|
|
1265
1266
|
if (!submission.metadata) {
|
|
1266
1267
|
submission.metadata = {};
|
|
@@ -1324,6 +1325,9 @@ export default class SelectComponent extends ListComponent {
|
|
|
1324
1325
|
this.lazyLoadInit = true;
|
|
1325
1326
|
const searchProperty = this.component.searchField || this.component.valueProperty;
|
|
1326
1327
|
this.triggerUpdate(_.get(value.data || value, searchProperty, value), true);
|
|
1328
|
+
this.itemsLoaded.then(() => {
|
|
1329
|
+
this.setChoicesValue(value, hasPreviousValue, flags);
|
|
1330
|
+
});
|
|
1327
1331
|
return changed;
|
|
1328
1332
|
}
|
|
1329
1333
|
// Add the value options.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { eachComponent } from '../../../utils
|
|
2
|
+
import { eachComponent } from '../../../utils';
|
|
3
3
|
const calculateSingleSelectData = (context, defaultValue) => {
|
|
4
4
|
const { instance, data } = context;
|
|
5
5
|
const rawDefaultValue = instance.downloadedResources.find(resource => _.get(resource, data.valueProperty) === defaultValue);
|
|
@@ -8,6 +8,12 @@ export default class SelectBoxesComponent extends RadioComponent {
|
|
|
8
8
|
* @returns {boolean} - If the value is empty.
|
|
9
9
|
*/
|
|
10
10
|
isEmpty(value?: any): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Normalize values coming into updateValue.
|
|
13
|
+
* @param {any} value - The value to normalize.
|
|
14
|
+
* @returns {*} - The normalized value
|
|
15
|
+
*/
|
|
16
|
+
normalizeValue(value: any): any;
|
|
11
17
|
setInputsDisabled(value: any, onlyUnchecked: any): void;
|
|
12
18
|
checkComponentValidity(data: any, dirty: any, rowData: any, options: any, errors?: any[]): boolean;
|
|
13
19
|
}
|