{"version":3,"file":"AbstractField.js","names":["AbstractField","a","setters","Component","default","on","off","trigger","animate","ajax","debounce","tryParseJSON","deepMerge","Event","Validators","Registry","stringify","execute","constructor","element","options","arguments","length","store","classNames","error","shake","requirements","requirementsInner","requirementsTitle","requirementsList","validationEvent","triggerName","triggerAction","disableCopyPaste","stateDependencies","showValidState","shakeFieldOnError","disableValidation","updateInvalidValue","showErrorMessage","fieldRequirements","requirementsSuccessMessage","jumpTo","pattern","prerequisite","initCache","classes","focus","active","valid","success","onValidate","errorMessage","field","hasAttribute","querySelector","form","closest","Error","id","label","document","querySelectorAll","type","selectors","stateTargets","name","hasErrorKey","customValidators","dataset","customvalidation","remoteValidator","remotevalidation","statesTriggersMap","checked","unchecked","selected","empty","filled","stateTriggers","getStateTriggers","validators","_validators","afterInit","getValidators","then","afterRegistered","triggerStateEvents","focusField","initState","state","initialValue","value","triggerStateEventsOnInitDone","fieldState","customFieldState","classList","contains","errorElement","bindEvents","onFocus","bind","onLeave","onReset","removeError","onCustomError","handleDependencyAction","onInitInitialValue","onNativeError","onValidation","customValidation","triggerBubblingEvent","forEach","onChangeForFieldRequirements","prerequisiteEvent","event","onPrerequisiteCheck","eventSuffix","Object","keys","reduce","prev","split","events","concat","map","join","filter","elem","pos","arr","indexOf","newState","dependentActions","processSelfActions","bubbles","masterField","triggerCustomStateEvents","data","entry","fieldName","fieldAction","fieldActionCondition","checkDependencyCondition","action","actionParams","detail","sendAnalyticsBlock","e","analyticsBlock","analytics","emit","dependencyCondition","updateValue","updateMaxLength","newMaxLength","dependencyNewMaxLength","setAttribute","updatePattern","isUpdatePattern","clearInvalidContent","CustomEvent","masterValue","clearOnError","\"data-error-pattern\"","removeAttribute","checkValidity","show","remove","hide","add","enable","enabled","disabled","disable","check","uncheck","require","unrequire","setFieldState","activate","elmt","target","activeClass","createFieldRequirements","isValidated","reset","removeValidationClass","trim","setValue","preventDefault","removeChild","setTimeout","addError","errorKey","counterNode","errorID","getAttribute","createElement","innerHTML","insertBefore","appendChild","validate","remoteValidation","setCustomValidity","every","validatorId","call","formData","FormData","append","getCSRFToken","url","method","body","remoteValidationSuccess","dependencyState","badInput","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing","customError","key","validity","validationMessage","shakeField","errKey","charAt","toUpperCase","slice","metaCsrf","newValue","title","requirementsRules","rules","ruleId","rule","ruleItem","ruleContent","isAllValid","prerequisiteValid","stopImmediatePropagation","onPrerequisiteUpdated","modal","openModal","destroy"],"sources":["components/global/AbstractField.js"],"sourcesContent":["/* eslint-disable max-lines */\nimport Component from 'core/Component';\nimport { on, off, trigger } from 'toolbox/event';\nimport { animate } from 'toolbox/animate';\nimport { ajax } from 'toolbox/ajax';\nimport { debounce } from 'toolbox/debounce';\nimport { tryParseJSON } from 'toolbox/object';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport { Event } from 'services/EventEmitter';\nimport Validators from 'toolbox/validators';\nimport Registry from 'core/ComponentRegistry';\nimport { stringify } from 'toolbox/queryString';\n\n/**\n * This is a description of the AbstractField constructor function.\n * @class\n * @classdesc This is a description of the AbstractField class.\n * @extends Component\n */\nexport default class AbstractField extends Component {\n    /**\n     * Constructor of the class that mainly merge the options of the components\n     * @param {HTMLElement} element HTMLElement of the component\n     * @param {Object} options options that belongs to the component\n     * @param {Object} store Store\n     */\n    constructor(element, options = {}, store) {\n        super(element, deepMerge({\n            classNames: {\n                error: null, // Array\n                shake: 'h-shake',\n                requirements: 'c-alert',\n                requirementsInner: 'c-alert__message',\n                requirementsTitle: '',\n                requirementsList: '',\n            },\n            validationEvent: 'change',\n            triggerName: null, // if set, on this event additional bubbling event will be fired (defined in 'triggerAction')\n            triggerAction: null, // additional event that will be fired on event defined in 'triggerName'\n            disableCopyPaste: false, // disable copy\\paste for this field\n            stateDependencies: null, // field state dependencies, other fields can be dependent on current field state\n            showValidState: false, // highlight valid state for field\n            shakeFieldOnError: false, // shake animation for invalid field\n            disableValidation: false, // disable client-side validation for the field\n            updateInvalidValue: false, // update the field with a new value if invalid\n            showErrorMessage: true, // Show default error message under a field\n            // The parameters for displaying a table with requirements of all validations for this field;\n            // if null, the table is not displayed\n            fieldRequirements: null,\n            requirementsSuccessMessage: 'Requirements met successfully.',\n            jumpTo: '',\n            pattern: null, // patterns map\n            prerequisite: null, // object with prerequisite params, set it if you need check some condition before use\n        }, options), store);\n    }\n\n    /**\n     * All selectors must be cached. Never cache elements that are out of the component scope\n     */\n    initCache() {\n        this.classes = {\n            focus: 'm-focus',\n            active: 'm-active',\n            error: 'm-error',\n            valid: 'm-valid',\n            success: 'm-success',\n            onValidate: 'm-on-validate',\n            errorMessage: 'c-field__error-message',\n        };\n\n        this.field = this.element.hasAttribute('data-js-field') ? this.element : this.element.querySelector('[data-js-field]');\n        this.form = this.element.closest('form');\n        this.jumpTo = this.options.jumpTo ? this.form.querySelector(this.options.jumpTo) : null;\n\n        if (!this.field) {\n            throw new Error('Please add data-js-field attribute on your field (input, textarea, select)');\n        }\n        if (this.field.id) {\n            this.label = document.querySelectorAll(`[for=\"${this.field.id}\"], [data-label-for=\"${this.field.id}\"]`);\n        }\n        if (this.field.type === 'radio') {\n            const form = this.element.closest('form');\n            this.selectors.stateTargets = form && form.querySelectorAll(`[name=\"${this.field.name}\"]`);\n        }\n        this.hasErrorKey = false;\n        this.customValidators = tryParseJSON(this.field.dataset.customvalidation);\n        this.remoteValidator = tryParseJSON(this.field.dataset.remotevalidation);\n        // Defines which field events could cause each state change\n        this.statesTriggersMap = {\n            checked: 'change click keyup paste input', // for checkbox fields\n            unchecked: 'change click keyup paste input', // for checkbox fields\n            selected: 'change', // only for select fields\n            empty: 'change click keyup paste input', // for text or textarea fields\n            filled: 'change click keyup paste input', // for text or textarea fields\n        };\n        if (this.options.stateDependencies) {\n            this.stateTriggers = this.getStateTriggers();\n        }\n    }\n\n    /**\n     * Custom validator getter\n     * @returns {Object} custom validator functions\n     */\n    get validators() {\n        return this._validators;\n    }\n\n    /**\n     * After init\n     * Run any script after the component is fully initialized\n     */\n    afterInit() {\n        Validators.getValidators(this.customValidators).then((validators) => {\n            this._validators = validators;\n        });\n\n        // if other fileds dependent on this field state - fire state change initially\n        // to synchronize initial states (usually this synch is done on server already)\n        if (this.options.stateDependencies && this.form) {\n            Registry.afterRegistered(this.form).then(() => {\n                this.triggerStateEvents();\n            });\n        }\n    }\n\n    /**\n     * Focus field\n     * @param {Object} field field DOM element\n     *\n     */\n    focusField(field) {\n        if (field) {\n            field.focus();\n        }\n    }\n\n    /**\n     * Init the different state of the component\n     * It helps to avoid heavy DOM manipulation\n     */\n    initState() {\n        this.state.initialValue = this.field.value;\n        this.state.triggerStateEventsOnInitDone = false;\n        this.state.fieldState = null;\n        this.state.customFieldState = null;\n\n        // initialize error state\n        this.hasErrorKey = this.element.classList.contains(this.classes.error);\n        if (this.hasErrorKey) {\n            this.errorElement = this.element.querySelector(`.${this.classes.errorMessage}`);\n        }\n    }\n\n    /**\n     * Should contain only event listeners and nothing else\n     * All the event handlers should be into a separated function. No usage of anonyous function\n     */\n    bindEvents() {\n        on('focus', this.field, this.onFocus.bind(this));\n        on('blur', this.field, this.onLeave.bind(this));\n        on('field.reset', this.field, this.onReset.bind(this));\n        on('error.reset', this.field, this.removeError.bind(this));\n        on('field.invalidate', this.field, this.onCustomError.bind(this));\n        on('field.dependency.action', this.field, this.handleDependencyAction.bind(this));\n        on('field.initInitialValue', this.element, this.onInitInitialValue.bind(this));\n\n        // Added condition to skip client validation\n        if (!this.options.disableValidation) {\n            on('invalid', this.field, this.onNativeError.bind(this));\n            on(this.options.validationEvent, this.field, debounce(this.onValidation.bind(this)));\n            on('field.customvalidation', this.field, this.customValidation.bind(this));\n        }\n\n\n        if (this.options.disableCopyPaste) {\n            on('copy paste drag drop', this.field, this.disableCopyPaste.bind(this));\n        }\n        if (this.options.triggerName) {\n            on(this.options.triggerName, this.field, this.triggerBubblingEvent.bind(this));\n        }\n        (this.stateTriggers || []).forEach((state) => {\n            on(state, this.selectors.stateTargets || this.field, this.triggerStateEvents.bind(this));\n        });\n\n        if (this.options.fieldRequirements) {\n            on('keyup.fieldrequirements', this.field, this.onChangeForFieldRequirements.bind(this));\n            on('paste.fieldrequirements', this.field, this.onChangeForFieldRequirements.bind(this));\n        }\n\n        if (this.options.prerequisite) {\n            const prerequisiteEvent = this.options.prerequisite.event || 'click';\n            on(`${prerequisiteEvent}.prerequisite`, this.field, this.onPrerequisiteCheck.bind(this), true);\n        }\n    }\n\n    /**\n     * Get event names which could be the triggers for state change events.\n     * Triggers for each state defined in stateDependencies collected by statesTriggersMap.\n     * @returns {Array} array of strings with event names\n     */\n    getStateTriggers() {\n        const eventSuffix = this.field.type === 'radio' ? this.field.id : '';\n\n        return Object.keys(this.options.stateDependencies || {})\n            .reduce((prev, state) => {\n                [state] = state.split('#');\n                const events = this.statesTriggersMap[state];\n                return events ? prev.concat([events]) : prev;\n            }, [])\n            // modify event names to make them unique and stateTriggers dependent\n            .map(events => events.split(' ')\n                .map(event => `${event}.stateTriggers${eventSuffix}`)\n                .join(' '))\n            // remove duplicates\n            .filter((elem, pos, arr) => arr.indexOf(elem) === pos);\n    }\n\n    /* eslint-disable complexity, max-lines */\n    /**\n     * Handle state events triggering\n     */\n    triggerStateEvents() {\n        let newState;\n        switch (this.field.type) {\n        case 'tel':\n        case 'text':\n        case 'textarea':\n        case 'file':\n            if ('witherror' in this.options.stateDependencies || 'withouterror' in this.options.stateDependencies) {\n                newState = this.errorElement ? 'witherror' : 'withouterror';\n            } else {\n                newState = this.field.value === '' ? 'empty' : 'filled';\n            }\n            break;\n        case 'radio':\n        case 'checkbox':\n            newState = this.field.checked ? 'checked' : 'unchecked';\n            break;\n        default:\n        }\n        if (this.state.fieldState !== newState && newState in this.options.stateDependencies) {\n            this.state.fieldState = newState;\n            const dependentActions = this.processSelfActions(this.options.stateDependencies[newState]);\n            trigger('field.dependency.state.changed', this.field, { bubbles: true, dependentActions, masterField: this.field });\n            this.state.triggerStateEventsOnInitDone = true;\n        }\n    }\n\n    /**\n     * Handle custom state events triggering\n     * @param {String} newState custom state\n     * @param {Object} data data object\n     */\n    triggerCustomStateEvents(newState, data) {\n        if (this.state.customFieldState !== newState && newState in this.options.stateDependencies) {\n            this.state.customFieldState = newState;\n            const dependentActions = this.processSelfActions(this.options.stateDependencies[newState]);\n            trigger('field.dependency.state.changed', this.field, {\n                bubbles: true,\n                dependentActions,\n                masterField: this.field,\n                data,\n            });\n        }\n    }\n\n    /**\n     * Process actions related to current field (self)\n     * and filter out such actions from the passed array\n     * @param {Array} dependentActions dependent actions\n     * @returns {Array} filtered dependent actions\n     */\n    processSelfActions(dependentActions) {\n        return dependentActions.filter((entry) => {\n            const [fieldName, fieldAction, fieldActionCondition] = entry.split(':');\n            if (fieldName === 'self') {\n                if (this.checkDependencyCondition(fieldActionCondition)) {\n                    const [action, ...actionParams] = fieldAction.split('-');\n                    this.handleDependencyAction({\n                        detail: {\n                            action,\n                            actionParams,\n                            masterField: this.field,\n                        },\n                    });\n                }\n                return false;\n            }\n            return true;\n        });\n    }\n\n    /**\n     * Send state-dependent analytics.\n     * @param {Object} e event object\n     */\n    sendAnalyticsBlock(e) {\n        const analyticsBlock = e && e.detail && e.detail.actionParams[0];\n        if (analyticsBlock && this.analytics && this.analytics[analyticsBlock]) {\n            Event.emit('analytics.event', this.analytics[analyticsBlock]);\n        }\n    }\n\n    /**\n     * Check field dependency condition. Returns true if condition is eligible.\n     * @param {String} dependencyCondition dependent analytics key\n     * @returns {Boolean} true, if condition is eligible\n     */\n    checkDependencyCondition(dependencyCondition) {\n        return dependencyCondition === 'ifNotOnInit' ? this.state.triggerStateEventsOnInitDone : true;\n    }\n\n    /**\n     * Handle action communicated by the event from the master field.\n     * This means that current field state/action was specified as dependent form another field state change in json schema.\n     * @param {Object} e event data\n     *\n     */\n    handleDependencyAction(e) {\n        if (e.detail.action && typeof this[e.detail.action] === 'function') {\n            this[e.detail.action](e);\n        }\n    }\n\n    /**\n     * Update field values based on master values\n     * Could have different implementations based on field type, so usually overloaded.\n     * @param {Event} e - event data\n     */\n    updateValue() {\n        // should be extended in the child class\n    }\n\n    /**\n     * Update field maxLength based on master values\n     * @param {Event} e - event data\n     */\n    updateMaxLength(e) {\n        const newMaxLength = e.detail && e.detail.masterField && e.detail.masterField.dataset.dependencyNewMaxLength;\n        if (newMaxLength) {\n            this.field.setAttribute('maxlength', newMaxLength);\n        }\n    }\n\n    /**\n     * Update dependent fields pattern attribute based on master values\n     * Could have different implementations based on field type, so usually overloaded.\n     * @param {Event|Object} e - event data\n     */\n    updatePattern(e) {\n        let isUpdatePattern = false;\n        let pattern = null;\n        let clearInvalidContent = false;\n\n        if (e instanceof CustomEvent) {\n            isUpdatePattern = !!this.options.pattern;\n            const masterValue = e.detail && e.detail.masterField && e.detail.masterField.value;\n            pattern = (this.options.pattern && this.options.pattern[masterValue]);\n        } else {\n            const data = e || {};\n            isUpdatePattern = true;\n            clearInvalidContent = data.clearOnError;\n            pattern = data.pattern && {\n                pattern: data.pattern.value,\n                'data-error-pattern': data.pattern.error,\n            };\n        }\n\n\n        if (isUpdatePattern) {\n            if (pattern) {\n                this.field.setAttribute('pattern', pattern.pattern);\n                this.field.setAttribute('data-error-pattern', pattern['data-error-pattern']);\n            } else {\n                this.field.removeAttribute('pattern');\n                this.field.removeAttribute('data-error-pattern');\n            }\n\n            if (this.field.value) {\n                if (this.field.checkValidity()) {\n                    this.removeError();\n                } else if (clearInvalidContent) {\n                    this.field.value = '';\n                    trigger('change', this.field, { bubbles: true });\n                }\n            }\n        }\n    }\n\n    /**\n     * Show field\n     */\n    show() {\n        this.element.classList.remove('h-hidden');\n        if (this.label) {\n            this.label.forEach((element) => {\n                element.classList.remove('h-hidden');\n            });\n        }\n    }\n\n    /**\n     * Hide field\n     */\n    hide() {\n        this.element.classList.add('h-hidden');\n        if (this.label) {\n            this.label.forEach((element) => {\n                element.classList.add('h-hidden');\n            });\n        }\n    }\n\n    /**\n     * Enable field\n     */\n    enable() {\n        this.field.enabled = true;\n        this.field.disabled = false;\n    }\n\n    /**\n     * Disable field\n     */\n    disable() {\n        this.field.enabled = false;\n        this.field.disabled = true;\n    }\n\n    /**\n     * Check field\n     */\n    check() {\n        this.field.checked = true;\n        trigger('click', this.field);\n    }\n\n    /**\n     * Uncheck field\n     */\n    uncheck() {\n        this.field.checked = false;\n        trigger('click', this.field);\n    }\n\n    /**\n     * Make field required\n     */\n    require() {\n        this.field.setAttribute('required', 'required');\n        this.field.setAttribute('aria-required', 'true');\n    }\n\n    /**\n     * Make field unrequired\n     */\n    unrequire() {\n        this.field.removeAttribute('required');\n        this.field.setAttribute('aria-required', 'false');\n\n        if (this.field.checkValidity()) {\n            this.removeError();\n        }\n    }\n\n    /**\n     * Set or remove active field state\n     * @param {Boolean} activate whether to activate field or deactivate\n     * @param {HTMLNode} elmt HTMLNode\n     */\n    setFieldState(activate, elmt) {\n        const target = elmt || this.element;\n        const activeClass = this.classes.active;\n\n        if (activate) {\n            target.classList.add(activeClass);\n        } else {\n            target.classList.remove(activeClass);\n        }\n    }\n\n    /**\n     * Triggers an event that bubbles up through the parent DOM nodes\n     */\n    triggerBubblingEvent() {\n        trigger(this.options.triggerAction, this.field, { bubbles: true });\n    }\n\n    /**\n     * On focus event handler\n     */\n    onFocus() {\n        this.element.classList.add(this.classes.focus);\n\n        if (this.field.value !== '') {\n            this.setFieldState(true);\n        }\n\n        if (this.options.fieldRequirements && !this.selectors.requirements) {\n            this.createFieldRequirements();\n        }\n    }\n\n    /**\n     * On leave event handler\n     */\n    onLeave() {\n        this.element.classList.remove(this.classes.focus);\n\n        if (this.field.value === '') {\n            this.setFieldState(false);\n        } else {\n            this.setFieldState(true);\n        }\n\n        if (!this.state.isValidated && this.field.value !== '' && this.selectors.requirementsList) {\n            this.state.isValidated = true;\n            this.selectors.requirementsList.classList.remove(this.classes.onValidate);\n        }\n    }\n\n    /**\n     * on reset event handler\n     */\n    onReset() {\n        this.reset();\n        this.removeError();\n        this.removeValidationClass();\n    }\n\n    /**\n     * Reset the field to empty\n     */\n    reset() {\n        if (this.field.type === 'checkbox') {\n            this.field.checked = false;\n        } else {\n            this.field.value = '';\n        }\n    }\n\n    /**\n    * Trim spaces for field\n    */\n    trim() {\n        this.field.value = this.field.value.trim();\n    }\n\n    /**\n    * Set value\n    * @param {String} value value\n    */\n    setValue(value) {\n        this.field.value = value;\n    }\n\n    /**\n     * Prevents default events handler to disable copypaste\n     * @param {Event} e event data\n     * @returns {Boolean} always returns false\n     */\n    disableCopyPaste(e) {\n        e.preventDefault();\n        return false;\n    }\n\n    /**\n     * Removes class used for validation\n     */\n    removeValidationClass() {\n        this.element.classList.remove(this.classes.valid);\n    }\n\n    /**\n     * Handler for native field validation\n     */\n    removeError() {\n        this.element.classList.remove(this.classes.error);\n        this.field.removeAttribute('aria-invalid');\n        if (this.options.showErrorMessage) {\n            this.field.removeAttribute('aria-describedby');\n        }\n        if (this.hasErrorKey) {\n            this.element.removeChild(this.errorElement);\n            this.errorElement = null;\n            this.hasErrorKey = false;\n        }\n\n        if (this.options.stateDependencies && this.form) {\n            // using timeout to trigger state dependencies after form reset\n            setTimeout(() => {\n                if (this.options.stateDependencies && this.form) {\n                    this.triggerStateEvents();\n                }\n            }, 0);\n        }\n    }\n\n    /**\n     * Add error to the field\n     * @param {string} errorMessage - error message to show near to field\n     * @param {string} errorKey - type of error (minlength, maxlength, required etc...)\n     */\n    addError(errorMessage, errorKey) {\n        this.element.classList.remove(this.classes.valid);\n        this.element.classList.add(this.classes.error);\n\n        if (!this.options.fieldRequirements || this.options.showErrorMessage) {\n            const counterNode = this.element.querySelector('[data-js-counter]');\n\n            if (!this.errorElement) {\n                const errorID = `error-${this.field.getAttribute('id')}`;\n\n                this.errorElement = document.createElement('div');\n                this.errorElement.classList.add(this.classes.errorMessage);\n                this.errorElement.setAttribute('id', errorID);\n                this.errorElement.setAttribute('role', 'alert');\n                this.errorElement.innerHTML = errorMessage;\n\n                if (counterNode) {\n                    this.element.insertBefore(this.errorElement, counterNode);\n                } else {\n                    this.element.appendChild(this.errorElement);\n                }\n\n                this.field.setAttribute('aria-invalid', true);\n                this.field.setAttribute('aria-describedby', errorID);\n            } else {\n                this.errorElement.innerHTML = errorMessage;\n            }\n            this.hasErrorKey = errorKey;\n        }\n\n        if (this.options.stateDependencies && this.form) {\n            this.triggerStateEvents();\n        }\n    }\n\n    /**\n     * Handler for native field validation\n     */\n    onValidation() {\n        this.validate();\n\n        // remote validation\n        // TODO: Currently this is not real validation, just async call on validation event\n        if (this.remoteValidator) {\n            this.remoteValidation();\n        }\n    }\n\n    /**\n     * Process field validation\n     * @returns {Boolean} validation status\n     */\n    validate() {\n        this.field.setCustomValidity(''); // makes field natively valid\n\n        // native validation\n        let valid = this.field.checkValidity();\n\n        // custom validation\n        valid = this.customValidation() && valid;\n\n        if (valid) {\n            this.removeError();\n            if (this.jumpTo) {\n                this.focusField(this.jumpTo);\n            }\n            if (this.options.showValidState && this.field.value.trim() !== '') {\n                this.element.classList.add(this.classes.valid);\n            } else {\n                this.element.classList.remove(this.classes.valid);\n            }\n        }\n        return valid;\n    }\n\n    /**\n     * Handler for custom field validation. If 'customValidators' defined\n     * @returns {Boolean} custom validation status\n     */\n    customValidation() {\n        if (this.customValidators) {\n            return Object.keys(this.customValidators).every(validatorId =>\n                !(validatorId in this.validators)\n                || this.validators[validatorId].call(this, this.field, this.customValidators[validatorId]));\n        }\n        return true;\n    }\n\n    /**\n     * Handler for remote field validation (via API call). If 'remoteValidator' defined\n     */\n    remoteValidation() {\n        if (!this.remoteValidator) {\n            return;\n        }\n        const formData = new FormData();\n        if (this.field.type !== 'checkbox' || this.field.checked) {\n            formData.append(this.field.name, this.field.value);\n        }\n        formData.append('csrf_token', this.getCSRFToken());\n        ajax(this.remoteValidator.url, {\n            method: 'POST',\n            body: formData,\n        }).then(this.remoteValidationSuccess.bind(this));\n    }\n\n    /**\n     * Handler for successful remote validation call\n     * @param {Object} data result of remote validation\n     */\n    remoteValidationSuccess(data) {\n        if (data.dependencyState) {\n            this.triggerCustomStateEvents(data.dependencyState, data);\n        } else {\n            trigger('field.remote.validation.success', this.field, { bubbles: true, data });\n        }\n    }\n\n    /**\n     * Handler of 'invalid' field event\n     * @param {Event} e event data\n     * @returns {Boolean} false if field is alredy showing the same error, true otherwise\n     */\n    onNativeError(e) {\n        e.preventDefault();\n        let errorKey;\n\n        //  HTML5 ValidityState <-> jsonschema\n        const map = {\n            badInput: 'format',\n            patternMismatch: 'pattern',\n            rangeOverflow: 'maximum', // and exclusiveMaximum\n            rangeUnderflow: 'minimum', // and exclusiveMinimum\n            stepMismatch: '',\n            tooLong: 'maxlength',\n            tooShort: 'minlength',\n            typeMismatch: 'format', // when type is \"email\" or \"url\"\n            valueMissing: 'required',\n            customError: 'customError',\n        };\n        Object.keys(map).forEach((key) => {\n            if (this.field.validity[key]) {\n                errorKey = map[key];\n            }\n        });\n        // in case if field invalidated with custom error programmatically\n        if (errorKey === 'customError') {\n            errorKey = this.field.validationMessage;\n        }\n        if (this.options.shakeFieldOnError) {\n            this.shakeField();\n        }\n        // Field already showing same error\n        if (this.hasErrorKey && this.hasErrorKey === errorKey) {\n            return false;\n        }\n        const errKey = `error${errorKey.charAt(0).toUpperCase()}${errorKey.slice(1)}`;\n        const errorMessage = this.field.dataset[errKey] || `[Native] ${this.field.validationMessage}`;\n        this.removeError();\n        this.addError(errorMessage, errorKey);\n\n        return true;\n    }\n\n    /**\n     * Shake animation for invalid field\n     * @returns {promise} animation promise\n     */\n    shakeField() {\n        return animate(this.options.classNames.shake, this.element);\n    }\n\n    /**\n    * Get the CSRF token value generated in the <meta> tag.\n    *\n    * @returns {String} CSRF token value\n    */\n    getCSRFToken() {\n        const metaCsrf = document.querySelector('meta[name=\"csrf\"]');\n        if (!metaCsrf) {\n            return '';\n        }\n        return metaCsrf.getAttribute('content').split('||')[1];\n    }\n\n    /**\n     * Handler of custom event 'field.invalidate'\n     * @param {CustomEvent} event event.data structure: {errorMessage: 'string', errorKey: 'string'}\n     */\n    onCustomError(event) {\n        const data = event.detail;\n        this.addError(data.errorMessage, data.errorKey);\n        if (this.options.updateInvalidValue && (data.newValue || data.newValue === '')) {\n            this.setValue(data.newValue);\n        }\n    }\n\n    /**\n     * Init initial value event handler\n     */\n    onInitInitialValue() {\n        this.field.value = this.state.initialValue;\n        trigger(this.options.validationEvent, this.field);\n    }\n\n    /**\n     * Create requirements block\n     */\n    createFieldRequirements() {\n        this.selectors.requirements = document.createElement('div');\n\n        if (!this.options.showErrorMessage) {\n            this.field.setAttribute('aria-describedby', `${this.field.id}-requirements`);\n            this.selectors.requirements.setAttribute('id', `${this.field.id}-requirements`);\n        }\n\n        this.selectors.requirements.setAttribute('class', `${this.options.classNames.requirements}`);\n\n        const requirementsInner = document.createElement('div');\n        requirementsInner.setAttribute('class', `${this.options.classNames.requirementsInner}`);\n\n        const requirementsTitle = document.createElement('p');\n        requirementsTitle.setAttribute('class', `c-text-field__requirements-title ${this.options.classNames.requirementsTitle}`);\n        requirementsTitle.innerHTML = this.options.fieldRequirements.title;\n        requirementsInner.appendChild(requirementsTitle);\n\n        this.selectors.requirementsList = document.createElement('ul');\n        this.selectors.requirementsList.setAttribute('class', `c-text-field__requirements-list ${this.options.classNames.requirementsList} ${this.classes.onValidate}`);\n\n        this.selectors.requirementsRules = {};\n\n        Object.keys(this.options.fieldRequirements.rules).forEach((ruleId) => {\n            const rule = this.options.fieldRequirements.rules[ruleId];\n            const ruleItem = document.createElement('li');\n            const ruleContent = document.createElement('div');\n\n            ruleItem.setAttribute('class', 'c-text-field__requirements-item');\n            ruleContent.setAttribute('class', 'c-text-field__requirements-content');\n            ruleContent.innerHTML = rule.title;\n            ruleItem.appendChild(ruleContent);\n\n            this.selectors.requirementsList.appendChild(ruleItem);\n            this.selectors.requirementsRules[ruleId] = ruleItem;\n        });\n\n        requirementsInner.appendChild(this.selectors.requirementsList);\n        this.selectors.requirements.appendChild(requirementsInner);\n        this.element.appendChild(this.selectors.requirements);\n    }\n\n    /**\n     * Change event handler\n     * @param {Object} event data\n     */\n    onChangeForFieldRequirements(event) {\n        const { target } = event;\n        this.state.isAllValid = true; // Assume all validations are initially valid\n\n        if (!target.value) {\n            this.state.isValidated = false;\n            this.state.isAllValid = false;\n            this.selectors.requirements.removeAttribute('aria-label');\n            this.selectors.requirementsList.classList.add(this.classes.onValidate);\n\n            Object.keys(this.customValidators).forEach((validatorId) => {\n                if (validatorId in this.validators) {\n                    this.selectors.requirementsRules[validatorId].classList.remove(this.classes.error);\n                    this.selectors.requirementsRules[validatorId].classList.remove(this.classes.success);\n                    this.selectors.requirementsRules[validatorId].removeAttribute('aria-hidden');\n                }\n            });\n        } else if (this.customValidators) {\n            Object.keys(this.customValidators).forEach((validatorId) => {\n                if (validatorId in this.validators) {\n                    const valid = this.validators[validatorId].call(this, this.field, this.customValidators[validatorId]);\n\n                    this.selectors.requirementsRules[validatorId].classList.remove(this.classes.error);\n                    this.selectors.requirementsRules[validatorId].classList.remove(this.classes.success);\n                    this.selectors.requirementsRules[validatorId].removeAttribute('aria-hidden');\n\n                    if (!valid) {\n                        this.selectors.requirementsRules[validatorId].classList.add(this.classes.error);\n                        this.selectors.requirements.removeAttribute('aria-label');\n                        this.state.isAllValid = false;\n                    } else {\n                        this.selectors.requirementsRules[validatorId].classList.add(this.classes.success);\n                        this.selectors.requirementsRules[validatorId].setAttribute('aria-hidden', 'true');\n                    }\n                }\n            });\n        }\n\n        if (this.state.isAllValid) {\n            this.selectors.requirements.setAttribute('aria-label', this.options.requirementsSuccessMessage);\n        }\n    }\n\n    /**\n     * Process prerequisite check\n     * Can be used to do external pre validation on some action\n     * @param {Object} e event data\n     */\n    onPrerequisiteCheck(e) {\n        if (this.state.prerequisiteValid) {\n            return;\n        }\n\n        e.preventDefault();\n        e.stopImmediatePropagation();\n\n        const { url, data } = this.options.prerequisite;\n        ajax(url, {\n            method: 'POST',\n            body: stringify(data || {}),\n        }).then(this.onPrerequisiteUpdated.bind(this));\n    }\n\n    /**\n     * Callback for ajax data request\n     * Do prerequisite actions or continue flow\n     * @param {Object} data json models data\n     */\n    onPrerequisiteUpdated(data) {\n        const { valid, modal } = data;\n\n        this.state.prerequisiteValid = valid;\n\n        if (valid) {\n            const event = this.options.prerequisite.event || 'click';\n            if (typeof this.field[event] === 'function') {\n                this.field[event]();\n            } else {\n                trigger(event, this.field);\n            }\n            return;\n        }\n\n        if (modal) {\n            this.openModal(modal);\n        }\n    }\n\n    /**\n     * Open modal\n     *\n     * @param {Object} options Modal settings\n     */\n    openModal(options) {\n        Event.emit('modal.open', {\n            options,\n        });\n    }\n\n    /**\n     * Destroy is called automatically after the component is being removed from the DOM\n     * You must always destroy the listeners attached to an element to avoid any memory leaks\n     */\n    destroy() {\n        off(this.field);\n        off(this.element);\n    }\n}\n"],"mappings":"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","ignoreList":[]}