{"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 this.field.checked = false;\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 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":[]}