@formio/js 5.0.0-rc.42 → 5.0.0-rc.43
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/dist/formio.embed.js +1 -1
- package/dist/formio.embed.min.js +1 -1
- package/dist/formio.embed.min.js.LICENSE.txt +1 -1
- package/dist/formio.form.js +3687 -4873
- package/dist/formio.form.min.js +1 -1
- package/dist/formio.form.min.js.LICENSE.txt +2 -4
- package/dist/formio.full.js +4124 -5560
- package/dist/formio.full.min.js +1 -1
- package/dist/formio.full.min.js.LICENSE.txt +2 -4
- package/dist/formio.js +79 -89
- package/dist/formio.min.js +1 -1
- package/dist/formio.min.js.LICENSE.txt +1 -1
- package/dist/formio.utils.js +82 -146
- package/dist/formio.utils.min.js +1 -1
- package/dist/formio.utils.min.js.LICENSE.txt +2 -4
- package/lib/cjs/Webform.js +5 -7
- package/lib/cjs/components/_classes/component/Component.js +7 -3
- package/lib/cjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
- package/lib/cjs/components/_classes/nesteddata/NestedDataComponent.js +1 -1
- package/lib/cjs/components/editgrid/EditGrid.js +1 -0
- package/lib/cjs/components/form/Form.js +9 -6
- package/lib/cjs/widgets/CalendarWidget.js +3 -2
- package/lib/cjs/widgets/InputWidget.js +2 -2
- package/lib/mjs/Webform.js +5 -7
- package/lib/mjs/components/_classes/component/Component.js +7 -3
- package/lib/mjs/components/_classes/nestedarray/NestedArrayComponent.js +1 -1
- package/lib/mjs/components/_classes/nesteddata/NestedDataComponent.js +1 -1
- package/lib/mjs/components/editgrid/EditGrid.js +1 -0
- package/lib/mjs/components/form/Form.js +7 -4
- package/lib/mjs/widgets/CalendarWidget.js +3 -2
- package/lib/mjs/widgets/InputWidget.js +2 -2
- package/package.json +11 -11
| @@ -10,11 +10,9 @@ | |
| 10 10 | 
             
             * MIT licensed
         | 
| 11 11 | 
             
             */
         | 
| 12 12 |  | 
| 13 | 
            -
            /*! @license DOMPurify 3.0 | 
| 13 | 
            +
            /*! @license DOMPurify 3.1.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.0/LICENSE */
         | 
| 14 14 |  | 
| 15 | 
            -
            /*!  | 
| 16 | 
            -
             | 
| 17 | 
            -
            /*! formiojs v5.0.0-rc.42 | https://unpkg.com/formiojs@5.0.0-rc.42/LICENSE.txt */
         | 
| 15 | 
            +
            /*! formiojs v5.0.0-rc.43 | https://unpkg.com/formiojs@5.0.0-rc.43/LICENSE.txt */
         | 
| 18 16 |  | 
| 19 17 | 
             
            /**
         | 
| 20 18 | 
             
             * @license
         | 
    
        package/lib/cjs/Webform.js
    CHANGED
    
    | @@ -693,12 +693,13 @@ class Webform extends NestedDataComponent_1.default { | |
| 693 693 | 
             
                 * @param {userId} - The user id where we need to restore the draft from.
         | 
| 694 694 | 
             
                 */
         | 
| 695 695 | 
             
                restoreDraft(userId) {
         | 
| 696 | 
            -
                     | 
| 696 | 
            +
                    const formio = this.formio || this.options.formio;
         | 
| 697 | 
            +
                    if (!formio) {
         | 
| 697 698 | 
             
                        this.handleDraftError('restoreDraftInstanceError', null, true);
         | 
| 698 699 | 
             
                        return;
         | 
| 699 700 | 
             
                    }
         | 
| 700 701 | 
             
                    this.savingDraft = true;
         | 
| 701 | 
            -
                     | 
| 702 | 
            +
                    formio.loadSubmissions({
         | 
| 702 703 | 
             
                        params: {
         | 
| 703 704 | 
             
                            state: 'draft',
         | 
| 704 705 | 
             
                            owner: userId
         | 
| @@ -997,10 +998,7 @@ class Webform extends NestedDataComponent_1.default { | |
| 997 998 | 
             
                 * @returns {*}
         | 
| 998 999 | 
             
                 */
         | 
| 999 1000 | 
             
                /* eslint-disable no-unused-vars */
         | 
| 1000 | 
            -
                showErrors(errors, triggerEvent | 
| 1001 | 
            -
                    if (!errors) {
         | 
| 1002 | 
            -
                        return;
         | 
| 1003 | 
            -
                    }
         | 
| 1001 | 
            +
                showErrors(errors, triggerEvent) {
         | 
| 1004 1002 | 
             
                    this.loading = false;
         | 
| 1005 1003 | 
             
                    if (!Array.isArray(errors)) {
         | 
| 1006 1004 | 
             
                        errors = [errors];
         | 
| @@ -1153,7 +1151,7 @@ class Webform extends NestedDataComponent_1.default { | |
| 1153 1151 | 
             
                    if (this.submitted) {
         | 
| 1154 1152 | 
             
                        // show server errors while they are not cleaned/fixed
         | 
| 1155 1153 | 
             
                        const nonComponentServerErrors = lodash_1.default.filter(this.serverErrors || [], err => !err.component && !err.path);
         | 
| 1156 | 
            -
                        this.showErrors(nonComponentServerErrors.length ? nonComponentServerErrors :  | 
| 1154 | 
            +
                        this.showErrors(nonComponentServerErrors.length ? nonComponentServerErrors : errors);
         | 
| 1157 1155 | 
             
                    }
         | 
| 1158 1156 | 
             
                    // See if we need to save the draft of the form.
         | 
| 1159 1157 | 
             
                    if (modified && this.options.saveDraft) {
         | 
| @@ -2698,6 +2698,7 @@ class Component extends Element_1.default { | |
| 2698 2698 | 
             
                        component: this.component,
         | 
| 2699 2699 | 
             
                        data,
         | 
| 2700 2700 | 
             
                        row,
         | 
| 2701 | 
            +
                        value: this.validationValue,
         | 
| 2701 2702 | 
             
                        path: this.path || this.component.key,
         | 
| 2702 2703 | 
             
                        instance: this,
         | 
| 2703 2704 | 
             
                        scope: { errors: [] },
         | 
| @@ -2965,6 +2966,11 @@ class Component extends Element_1.default { | |
| 2965 2966 | 
             
                }
         | 
| 2966 2967 | 
             
                shouldSkipValidation(data, row, flags = {}) {
         | 
| 2967 2968 | 
             
                    const { validateWhenHidden = false } = this.component || {};
         | 
| 2969 | 
            +
                    const forceValidOnHidden = (!this.visible || !this.checkCondition(row, data)) && !validateWhenHidden;
         | 
| 2970 | 
            +
                    if (forceValidOnHidden) {
         | 
| 2971 | 
            +
                        // If this component is forced valid when it is hidden, then we also need to reset the errors for this component.
         | 
| 2972 | 
            +
                        this._errors = [];
         | 
| 2973 | 
            +
                    }
         | 
| 2968 2974 | 
             
                    const rules = [
         | 
| 2969 2975 | 
             
                        // Do not validate if the flags say not too.
         | 
| 2970 2976 | 
             
                        () => flags.noValidate,
         | 
| @@ -2975,9 +2981,7 @@ class Component extends Element_1.default { | |
| 2975 2981 | 
             
                        // Check to see if we are editing and if so, check component persistence.
         | 
| 2976 2982 | 
             
                        () => this.isValueHidden(),
         | 
| 2977 2983 | 
             
                        // Force valid if component is hidden.
         | 
| 2978 | 
            -
                        () =>  | 
| 2979 | 
            -
                        // Force valid if component is conditionally hidden.
         | 
| 2980 | 
            -
                        () => !this.checkCondition(row, data) && !validateWhenHidden
         | 
| 2984 | 
            +
                        () => forceValidOnHidden
         | 
| 2981 2985 | 
             
                    ];
         | 
| 2982 2986 | 
             
                    return rules.some(pred => pred());
         | 
| 2983 2987 | 
             
                }
         | 
| @@ -189,7 +189,7 @@ class NestedArrayComponent extends NestedDataComponent_1.default { | |
| 189 189 | 
             
                    return super.getValueAsString(value, options);
         | 
| 190 190 | 
             
                }
         | 
| 191 191 | 
             
                getComponents(rowIndex) {
         | 
| 192 | 
            -
                    if (rowIndex !== undefined) {
         | 
| 192 | 
            +
                    if (rowIndex !== undefined && rowIndex !== null) {
         | 
| 193 193 | 
             
                        if (!this.iteratableRows[rowIndex]) {
         | 
| 194 194 | 
             
                            return [];
         | 
| 195 195 | 
             
                        }
         | 
| @@ -66,7 +66,7 @@ class NestedDataComponent extends NestedComponent_1.default { | |
| 66 66 | 
             
                    <tbody>
         | 
| 67 67 | 
             
                `);
         | 
| 68 68 | 
             
                    const htmlTagRegExp = new RegExp('<(.*?)>');
         | 
| 69 | 
            -
                    this. | 
| 69 | 
            +
                    this.everyComponent((component) => {
         | 
| 70 70 | 
             
                        if (component.isInputComponent && component.visible && !component.skipInEmail) {
         | 
| 71 71 | 
             
                            const componentValue = component.getView(component.dataValue, options);
         | 
| 72 72 | 
             
                            result += (`
         | 
| @@ -143,6 +143,7 @@ class FormComponent extends Component_1.default { | |
| 143 143 | 
             
                        return this.subForm.getComponent(path, fn, originalPathStr);
         | 
| 144 144 | 
             
                    }
         | 
| 145 145 | 
             
                }
         | 
| 146 | 
            +
                /* eslint-disable max-statements */
         | 
| 146 147 | 
             
                getSubOptions(options = {}) {
         | 
| 147 148 | 
             
                    options.events = this.createEmitter();
         | 
| 148 149 | 
             
                    // Make sure to not show the submit button in wizards in the nested forms.
         | 
| @@ -200,12 +201,14 @@ class FormComponent extends Component_1.default { | |
| 200 201 | 
             
                    }
         | 
| 201 202 | 
             
                    if (this.options.saveDraft) {
         | 
| 202 203 | 
             
                        options.saveDraft = this.options.saveDraft;
         | 
| 204 | 
            +
                        options.formio = new Formio_1.Formio(this.formSrc);
         | 
| 203 205 | 
             
                    }
         | 
| 204 206 | 
             
                    if (this.options.saveDraftThrottle) {
         | 
| 205 207 | 
             
                        options.saveDraftThrottle = this.options.saveDraftThrottle;
         | 
| 206 208 | 
             
                    }
         | 
| 207 209 | 
             
                    return options;
         | 
| 208 210 | 
             
                }
         | 
| 211 | 
            +
                /* eslint-enable max-statements */
         | 
| 209 212 | 
             
                render() {
         | 
| 210 213 | 
             
                    if (this.builderMode) {
         | 
| 211 214 | 
             
                        return super.render(this.component.label || 'Nested form');
         | 
| @@ -403,10 +406,6 @@ class FormComponent extends Component_1.default { | |
| 403 406 | 
             
                            this.subForm.nosubmit = true;
         | 
| 404 407 | 
             
                            this.subForm.root = this.root;
         | 
| 405 408 | 
             
                            this.subForm.localRoot = this.isNestedWizard ? this.localRoot : this.subForm;
         | 
| 406 | 
            -
                            if (this.parent) {
         | 
| 407 | 
            -
                                this.subForm.draftEnabled = this.parent.draftEnabled;
         | 
| 408 | 
            -
                                this.subForm.savingDraft = this.parent.savingDraft;
         | 
| 409 | 
            -
                            }
         | 
| 410 409 | 
             
                            this.restoreValue();
         | 
| 411 410 | 
             
                            this.valueChanged = this.hasSetValue;
         | 
| 412 411 | 
             
                            this.onChange();
         | 
| @@ -571,11 +570,15 @@ class FormComponent extends Component_1.default { | |
| 571 570 | 
             
                 * Submit the form before the whole form is triggered.
         | 
| 572 571 | 
             
                 */
         | 
| 573 572 | 
             
                beforeSubmit() {
         | 
| 574 | 
            -
                    var _a;
         | 
| 573 | 
            +
                    var _a, _b, _c;
         | 
| 575 574 | 
             
                    const submission = this.dataValue;
         | 
| 575 | 
            +
                    // Cancel triggered saveDraft
         | 
| 576 | 
            +
                    if (((_a = this.subForm) === null || _a === void 0 ? void 0 : _a.draftEnabled) && ((_b = this.subForm.triggerSaveDraft) === null || _b === void 0 ? void 0 : _b.cancel)) {
         | 
| 577 | 
            +
                        this.subForm.triggerSaveDraft.cancel();
         | 
| 578 | 
            +
                    }
         | 
| 576 579 | 
             
                    const isAlreadySubmitted = submission && submission._id && submission.form;
         | 
| 577 580 | 
             
                    // This submission has already been submitted, so just return the reference data.
         | 
| 578 | 
            -
                    if (isAlreadySubmitted && !(( | 
| 581 | 
            +
                    if (isAlreadySubmitted && !((_c = this.subForm) === null || _c === void 0 ? void 0 : _c.wizard)) {
         | 
| 579 582 | 
             
                        this.dataValue = submission;
         | 
| 580 583 | 
             
                        return Promise.resolve(this.dataValue);
         | 
| 581 584 | 
             
                    }
         | 
| @@ -338,7 +338,8 @@ class CalendarWidget extends InputWidget_1.default { | |
| 338 338 | 
             
                        this.input.setAttribute('aria-invalid', 'false');
         | 
| 339 339 | 
             
                    }
         | 
| 340 340 | 
             
                }
         | 
| 341 | 
            -
                validationValue( | 
| 341 | 
            +
                get validationValue() {
         | 
| 342 | 
            +
                    const value = this.dataValue;
         | 
| 342 343 | 
             
                    if (typeof value === 'string') {
         | 
| 343 344 | 
             
                        return new Date(value);
         | 
| 344 345 | 
             
                    }
         | 
| @@ -357,7 +358,7 @@ class CalendarWidget extends InputWidget_1.default { | |
| 357 358 | 
             
                initFlatpickr(Flatpickr) {
         | 
| 358 359 | 
             
                    // Create a new flatpickr.
         | 
| 359 360 | 
             
                    this.calendar = new Flatpickr(this._input, Object.assign(Object.assign({}, this.settings), { disableMobile: true }));
         | 
| 360 | 
            -
                    this.calendar.altInput | 
| 361 | 
            +
                    this.addEventListener(this.calendar.altInput, 'input', (event) => {
         | 
| 361 362 | 
             
                        if (this.settings.allowInput && this.settings.currentValue !== event.target.value) {
         | 
| 362 363 | 
             
                            this.settings.manualInputValue = event.target.value;
         | 
| 363 364 | 
             
                            this.settings.isManuallyOverriddenValue = true;
         | 
    
        package/lib/mjs/Webform.js
    CHANGED
    
    | @@ -693,12 +693,13 @@ export default class Webform extends NestedDataComponent { | |
| 693 693 | 
             
                 * @param {userId} - The user id where we need to restore the draft from.
         | 
| 694 694 | 
             
                 */
         | 
| 695 695 | 
             
                restoreDraft(userId) {
         | 
| 696 | 
            -
                     | 
| 696 | 
            +
                    const formio = this.formio || this.options.formio;
         | 
| 697 | 
            +
                    if (!formio) {
         | 
| 697 698 | 
             
                        this.handleDraftError('restoreDraftInstanceError', null, true);
         | 
| 698 699 | 
             
                        return;
         | 
| 699 700 | 
             
                    }
         | 
| 700 701 | 
             
                    this.savingDraft = true;
         | 
| 701 | 
            -
                     | 
| 702 | 
            +
                    formio.loadSubmissions({
         | 
| 702 703 | 
             
                        params: {
         | 
| 703 704 | 
             
                            state: 'draft',
         | 
| 704 705 | 
             
                            owner: userId
         | 
| @@ -997,10 +998,7 @@ export default class Webform extends NestedDataComponent { | |
| 997 998 | 
             
                 * @returns {*}
         | 
| 998 999 | 
             
                 */
         | 
| 999 1000 | 
             
                /* eslint-disable no-unused-vars */
         | 
| 1000 | 
            -
                showErrors(errors, triggerEvent | 
| 1001 | 
            -
                    if (!errors) {
         | 
| 1002 | 
            -
                        return;
         | 
| 1003 | 
            -
                    }
         | 
| 1001 | 
            +
                showErrors(errors, triggerEvent) {
         | 
| 1004 1002 | 
             
                    this.loading = false;
         | 
| 1005 1003 | 
             
                    if (!Array.isArray(errors)) {
         | 
| 1006 1004 | 
             
                        errors = [errors];
         | 
| @@ -1151,7 +1149,7 @@ export default class Webform extends NestedDataComponent { | |
| 1151 1149 | 
             
                    if (this.submitted) {
         | 
| 1152 1150 | 
             
                        // show server errors while they are not cleaned/fixed
         | 
| 1153 1151 | 
             
                        const nonComponentServerErrors = _.filter(this.serverErrors || [], err => !err.component && !err.path);
         | 
| 1154 | 
            -
                        this.showErrors(nonComponentServerErrors.length ? nonComponentServerErrors :  | 
| 1152 | 
            +
                        this.showErrors(nonComponentServerErrors.length ? nonComponentServerErrors : errors);
         | 
| 1155 1153 | 
             
                    }
         | 
| 1156 1154 | 
             
                    // See if we need to save the draft of the form.
         | 
| 1157 1155 | 
             
                    if (modified && this.options.saveDraft) {
         | 
| @@ -2665,6 +2665,7 @@ export default class Component extends Element { | |
| 2665 2665 | 
             
                        component: this.component,
         | 
| 2666 2666 | 
             
                        data,
         | 
| 2667 2667 | 
             
                        row,
         | 
| 2668 | 
            +
                        value: this.validationValue,
         | 
| 2668 2669 | 
             
                        path: this.path || this.component.key,
         | 
| 2669 2670 | 
             
                        instance: this,
         | 
| 2670 2671 | 
             
                        scope: { errors: [] },
         | 
| @@ -2930,6 +2931,11 @@ export default class Component extends Element { | |
| 2930 2931 | 
             
                }
         | 
| 2931 2932 | 
             
                shouldSkipValidation(data, row, flags = {}) {
         | 
| 2932 2933 | 
             
                    const { validateWhenHidden = false } = this.component || {};
         | 
| 2934 | 
            +
                    const forceValidOnHidden = (!this.visible || !this.checkCondition(row, data)) && !validateWhenHidden;
         | 
| 2935 | 
            +
                    if (forceValidOnHidden) {
         | 
| 2936 | 
            +
                        // If this component is forced valid when it is hidden, then we also need to reset the errors for this component.
         | 
| 2937 | 
            +
                        this._errors = [];
         | 
| 2938 | 
            +
                    }
         | 
| 2933 2939 | 
             
                    const rules = [
         | 
| 2934 2940 | 
             
                        // Do not validate if the flags say not too.
         | 
| 2935 2941 | 
             
                        () => flags.noValidate,
         | 
| @@ -2940,9 +2946,7 @@ export default class Component extends Element { | |
| 2940 2946 | 
             
                        // Check to see if we are editing and if so, check component persistence.
         | 
| 2941 2947 | 
             
                        () => this.isValueHidden(),
         | 
| 2942 2948 | 
             
                        // Force valid if component is hidden.
         | 
| 2943 | 
            -
                        () =>  | 
| 2944 | 
            -
                        // Force valid if component is conditionally hidden.
         | 
| 2945 | 
            -
                        () => !this.checkCondition(row, data) && !validateWhenHidden
         | 
| 2949 | 
            +
                        () => forceValidOnHidden
         | 
| 2946 2950 | 
             
                    ];
         | 
| 2947 2951 | 
             
                    return rules.some(pred => pred());
         | 
| 2948 2952 | 
             
                }
         | 
| @@ -184,7 +184,7 @@ export default class NestedArrayComponent extends NestedDataComponent { | |
| 184 184 | 
             
                    return super.getValueAsString(value, options);
         | 
| 185 185 | 
             
                }
         | 
| 186 186 | 
             
                getComponents(rowIndex) {
         | 
| 187 | 
            -
                    if (rowIndex !== undefined) {
         | 
| 187 | 
            +
                    if (rowIndex !== undefined && rowIndex !== null) {
         | 
| 188 188 | 
             
                        if (!this.iteratableRows[rowIndex]) {
         | 
| 189 189 | 
             
                            return [];
         | 
| 190 190 | 
             
                        }
         | 
| @@ -65,7 +65,7 @@ export default class NestedDataComponent extends NestedComponent { | |
| 65 65 | 
             
                    <tbody>
         | 
| 66 66 | 
             
                `);
         | 
| 67 67 | 
             
                    const htmlTagRegExp = new RegExp('<(.*?)>');
         | 
| 68 | 
            -
                    this. | 
| 68 | 
            +
                    this.everyComponent((component) => {
         | 
| 69 69 | 
             
                        if (component.isInputComponent && component.visible && !component.skipInEmail) {
         | 
| 70 70 | 
             
                            const componentValue = component.getView(component.dataValue, options);
         | 
| 71 71 | 
             
                            result += (`
         | 
| @@ -137,6 +137,7 @@ export default class FormComponent extends Component { | |
| 137 137 | 
             
                        return this.subForm.getComponent(path, fn, originalPathStr);
         | 
| 138 138 | 
             
                    }
         | 
| 139 139 | 
             
                }
         | 
| 140 | 
            +
                /* eslint-disable max-statements */
         | 
| 140 141 | 
             
                getSubOptions(options = {}) {
         | 
| 141 142 | 
             
                    options.events = this.createEmitter();
         | 
| 142 143 | 
             
                    // Make sure to not show the submit button in wizards in the nested forms.
         | 
| @@ -194,12 +195,14 @@ export default class FormComponent extends Component { | |
| 194 195 | 
             
                    }
         | 
| 195 196 | 
             
                    if (this.options.saveDraft) {
         | 
| 196 197 | 
             
                        options.saveDraft = this.options.saveDraft;
         | 
| 198 | 
            +
                        options.formio = new Formio(this.formSrc);
         | 
| 197 199 | 
             
                    }
         | 
| 198 200 | 
             
                    if (this.options.saveDraftThrottle) {
         | 
| 199 201 | 
             
                        options.saveDraftThrottle = this.options.saveDraftThrottle;
         | 
| 200 202 | 
             
                    }
         | 
| 201 203 | 
             
                    return options;
         | 
| 202 204 | 
             
                }
         | 
| 205 | 
            +
                /* eslint-enable max-statements */
         | 
| 203 206 | 
             
                render() {
         | 
| 204 207 | 
             
                    if (this.builderMode) {
         | 
| 205 208 | 
             
                        return super.render(this.component.label || 'Nested form');
         | 
| @@ -399,10 +402,6 @@ export default class FormComponent extends Component { | |
| 399 402 | 
             
                            this.subForm.nosubmit = true;
         | 
| 400 403 | 
             
                            this.subForm.root = this.root;
         | 
| 401 404 | 
             
                            this.subForm.localRoot = this.isNestedWizard ? this.localRoot : this.subForm;
         | 
| 402 | 
            -
                            if (this.parent) {
         | 
| 403 | 
            -
                                this.subForm.draftEnabled = this.parent.draftEnabled;
         | 
| 404 | 
            -
                                this.subForm.savingDraft = this.parent.savingDraft;
         | 
| 405 | 
            -
                            }
         | 
| 406 405 | 
             
                            this.restoreValue();
         | 
| 407 406 | 
             
                            this.valueChanged = this.hasSetValue;
         | 
| 408 407 | 
             
                            this.onChange();
         | 
| @@ -566,6 +565,10 @@ export default class FormComponent extends Component { | |
| 566 565 | 
             
                 */
         | 
| 567 566 | 
             
                beforeSubmit() {
         | 
| 568 567 | 
             
                    const submission = this.dataValue;
         | 
| 568 | 
            +
                    // Cancel triggered saveDraft
         | 
| 569 | 
            +
                    if (this.subForm?.draftEnabled && this.subForm.triggerSaveDraft?.cancel) {
         | 
| 570 | 
            +
                        this.subForm.triggerSaveDraft.cancel();
         | 
| 571 | 
            +
                    }
         | 
| 569 572 | 
             
                    const isAlreadySubmitted = submission && submission._id && submission.form;
         | 
| 570 573 | 
             
                    // This submission has already been submitted, so just return the reference data.
         | 
| 571 574 | 
             
                    if (isAlreadySubmitted && !this.subForm?.wizard) {
         | 
| @@ -330,7 +330,8 @@ export default class CalendarWidget extends InputWidget { | |
| 330 330 | 
             
                        this.input.setAttribute('aria-invalid', 'false');
         | 
| 331 331 | 
             
                    }
         | 
| 332 332 | 
             
                }
         | 
| 333 | 
            -
                validationValue( | 
| 333 | 
            +
                get validationValue() {
         | 
| 334 | 
            +
                    const value = this.dataValue;
         | 
| 334 335 | 
             
                    if (typeof value === 'string') {
         | 
| 335 336 | 
             
                        return new Date(value);
         | 
| 336 337 | 
             
                    }
         | 
| @@ -348,7 +349,7 @@ export default class CalendarWidget extends InputWidget { | |
| 348 349 | 
             
                initFlatpickr(Flatpickr) {
         | 
| 349 350 | 
             
                    // Create a new flatpickr.
         | 
| 350 351 | 
             
                    this.calendar = new Flatpickr(this._input, { ...this.settings, disableMobile: true });
         | 
| 351 | 
            -
                    this.calendar.altInput | 
| 352 | 
            +
                    this.addEventListener(this.calendar.altInput, 'input', (event) => {
         | 
| 352 353 | 
             
                        if (this.settings.allowInput && this.settings.currentValue !== event.target.value) {
         | 
| 353 354 | 
             
                            this.settings.manualInputValue = event.target.value;
         | 
| 354 355 | 
             
                            this.settings.isManuallyOverriddenValue = true;
         | 
    
        package/package.json
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "@formio/js",
         | 
| 3 | 
            -
              "version": "5.0.0-rc. | 
| 3 | 
            +
              "version": "5.0.0-rc.43",
         | 
| 4 4 | 
             
              "description": "JavaScript powered Forms with JSON Form Builder",
         | 
| 5 5 | 
             
              "main": "lib/cjs/index.js",
         | 
| 6 6 | 
             
              "exports": {
         | 
| @@ -86,7 +86,7 @@ | |
| 86 86 | 
             
              "dependencies": {
         | 
| 87 87 | 
             
                "@formio/bootstrap": "^3.0.0-rc.22",
         | 
| 88 88 | 
             
                "@formio/choices.js": "^10.2.1",
         | 
| 89 | 
            -
                "@formio/core": "^2. | 
| 89 | 
            +
                "@formio/core": "^2.1.0-dev.tt.2",
         | 
| 90 90 | 
             
                "@formio/text-mask-addons": "^3.8.0-formio.2",
         | 
| 91 91 | 
             
                "@formio/vanilla-text-mask": "^5.1.1-formio.1",
         | 
| 92 92 | 
             
                "abortcontroller-polyfill": "^1.7.5",
         | 
| @@ -95,10 +95,10 @@ | |
| 95 95 | 
             
                "browser-cookies": "^1.2.0",
         | 
| 96 96 | 
             
                "browser-md5-file": "^1.1.1",
         | 
| 97 97 | 
             
                "compare-versions": "^6.0.0-rc.2",
         | 
| 98 | 
            -
                "core-js": "^3. | 
| 98 | 
            +
                "core-js": "^3.37.0",
         | 
| 99 99 | 
             
                "dialog-polyfill": "^0.5.6",
         | 
| 100 100 | 
             
                "dom-autoscroller": "^2.3.4",
         | 
| 101 | 
            -
                "dompurify": "^3.0 | 
| 101 | 
            +
                "dompurify": "^3.1.0",
         | 
| 102 102 | 
             
                "downloadjs": "^1.4.7",
         | 
| 103 103 | 
             
                "dragula": "^3.7.3",
         | 
| 104 104 | 
             
                "eventemitter3": "^5.0.1",
         | 
| @@ -122,9 +122,9 @@ | |
| 122 122 | 
             
                "vanilla-picker": "^2.12.3"
         | 
| 123 123 | 
             
              },
         | 
| 124 124 | 
             
              "devDependencies": {
         | 
| 125 | 
            -
                "@typescript-eslint/eslint-plugin": "^7. | 
| 126 | 
            -
                "@typescript-eslint/parser": "^7. | 
| 127 | 
            -
                "ace-builds": "1. | 
| 125 | 
            +
                "@typescript-eslint/eslint-plugin": "^7.6.0",
         | 
| 126 | 
            +
                "@typescript-eslint/parser": "^7.6.0",
         | 
| 127 | 
            +
                "ace-builds": "1.33.0",
         | 
| 128 128 | 
             
                "async-limiter": "^2.0.0",
         | 
| 129 129 | 
             
                "bootstrap-icons": "^1.10.5",
         | 
| 130 130 | 
             
                "bootswatch": "^5.3.3",
         | 
| @@ -154,7 +154,7 @@ | |
| 154 154 | 
             
                "gulp-sync": "^0.1.4",
         | 
| 155 155 | 
             
                "gulp-watch": "^5.0.1",
         | 
| 156 156 | 
             
                "hoek": "^6.1.3",
         | 
| 157 | 
            -
                "jsdom": " | 
| 157 | 
            +
                "jsdom": "22.1.0",
         | 
| 158 158 | 
             
                "jsdom-global": "^3.0.2",
         | 
| 159 159 | 
             
                "karma": "^6.4.3",
         | 
| 160 160 | 
             
                "karma-chrome-launcher": "^3.2.0",
         | 
| @@ -170,15 +170,15 @@ | |
| 170 170 | 
             
                "pretty": "^2.0.0",
         | 
| 171 171 | 
             
                "pygments-css": "^1.0.0",
         | 
| 172 172 | 
             
                "raw-loader": "^4.0.2",
         | 
| 173 | 
            -
                "sass": "^1. | 
| 173 | 
            +
                "sass": "^1.74.1",
         | 
| 174 174 | 
             
                "shortcut-buttons-flatpickr": "^0.4.0",
         | 
| 175 175 | 
             
                "sinon": "^17.0.1",
         | 
| 176 176 | 
             
                "string-replace-loader": "^3.1.0",
         | 
| 177 177 | 
             
                "ts-loader": "^9.4.4",
         | 
| 178 178 | 
             
                "ts-node": "^10.9.1",
         | 
| 179 | 
            -
                "typescript": "5.3. | 
| 179 | 
            +
                "typescript": "5.3.2",
         | 
| 180 180 | 
             
                "webpack": "^5.90.3",
         | 
| 181 | 
            -
                "webpack-bundle-analyzer": "^4. | 
| 181 | 
            +
                "webpack-bundle-analyzer": "^4.10.2",
         | 
| 182 182 | 
             
                "webpack-cli": "^5.1.1",
         | 
| 183 183 | 
             
                "webpack-node-externals": "^3.0.0",
         | 
| 184 184 | 
             
                "webpack-stream": "^7.0.0",
         |