{"version":3,"file":"TextField.js","names":["TextField","a","setters","AbstractField","default","ajax","deepMerge","Validators","on","off","trigger","execute","constructor","element","options","arguments","length","limitItems","limitSeparator","charCounter","restoreValueOnError","isConvertToUpper","autofocus","serverValidationOnChange","serverValidationErrorMessage","serverValidationURL","forcedPattern","classNames","counter","bindEvents","field","onChangeText","bind","type","getAttribute","onMousedownReadonlyDate","initState","state","message","prevValue","value","ariaDescribedBy","hasAttribute","id","trim","maxLength","parseInt","afterInit","initFieldState","rules","_validators","maxitems","setAttribute","showCounter","selectors","countElement","querySelector","focus","onNativeError","e","preventDefault","RegExp","test","toUpperCase","substring","checkValidity","innerText","onValidation","errorElement","serverValidation","catch","onReset","setFieldState","classList","remove","classes","counterNode","document","createElement","add","innerHTML","dataset","customMessageCharcounter","appendChild","maxLengthElement","removeError","param","serverValidationUrl","Promise","reject","Error","separator","indexOf","url","encodeURIComponent","serverValidationCustomAssetId","data","errorMessage","errorKey","onLeave","updateMessageLength","maxMessageLength","bubbles","destroy"],"sources":["components/global/TextField.js"],"sourcesContent":["import AbstractField from 'components/global/AbstractField';\nimport { ajax } from 'toolbox/ajax';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport Validators from 'toolbox/validators';\nimport { on, off, trigger } from 'toolbox/event';\n\n/**\n * This is a description of the TextField constructor function.\n * @class\n * @classdesc This is a description of the TextField class.\n * @extends AbstractField\n */\nexport default class TextField extends AbstractField {\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 */\n constructor(element, options = {}) {\n super(element, deepMerge({\n limitItems: 0, // maximum items that can be introduced in the same field\n limitSeparator: ',', // default separator for items that can be introduced in the same field\n charCounter: false,\n restoreValueOnError: false,\n isConvertToUpper: false, // Convert input value to uppercase\n autofocus: false, // Focus on field after initialization\n serverValidationOnChange: false, // necessity of server-side validation on change\n serverValidationErrorMessage: null, // Error message of server-side validation\n serverValidationURL: null, // URL for server-side validation\n forcedPattern: null, // force pattern on input field, using to limit input value\n classNames: {\n counter: 'c-text-field__counter',\n },\n }, options));\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 super.bindEvents();\n if (this.options.charCounter || this.options.isConvertToUpper || this.options.forcedPattern) {\n on('input', this.field, this.onChangeText.bind(this));\n }\n // workaround to disable date picker on readonly date input on iOS devices\n if (this.field.type === 'date' && this.field.getAttribute('readonly')) {\n on('mousedown', this.field, this.onMousedownReadonlyDate.bind(this));\n }\n }\n\n /**\n * Init the different state of the component\n * It helps to avoid heavy DOM manipulation\n */\n initState() {\n super.initState();\n this.state.message = '';\n this.state.prevValue = this.field.value;\n\n this.state.ariaDescribedBy = this.field.hasAttribute('aria-describedby') ? this.field.getAttribute('aria-describedby') : '';\n if (this.options.charCounter) {\n this.state.ariaDescribedBy = `${this.state.ariaDescribedBy} ${this.field.id}-counter`.trim();\n this.state.maxLength = parseInt(this.field.getAttribute('maxlength'), 10);\n }\n }\n\n /**\n * After init\n * Run any script after the component is fully initialized\n */\n afterInit() {\n super.afterInit();\n this.initFieldState();\n\n const rules = {\n limitItems: this.options.limitItems,\n limitSeparator: this.options.limitSeparator,\n };\n\n this._validators = deepMerge(this._validators, {\n maxitems: field => Validators.maxitems(field, rules),\n });\n\n if (this.options.charCounter) {\n this.field.setAttribute('aria-describedby', this.state.ariaDescribedBy);\n this.showCounter();\n this.selectors.countElement = this.element.querySelector('[data-js-count]');\n this.onChangeText();\n }\n\n if (this.options.autofocus) {\n this.field.focus();\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 if (this.options.restoreValueOnError) {\n e.preventDefault();\n this.field.value = this.state.message;\n return true;\n }\n\n return super.onNativeError(e);\n }\n\n /* eslint-disable complexity */\n /**\n * Handler message input\n */\n onChangeText() {\n if (this.options.forcedPattern && !(new RegExp(this.options.forcedPattern)).test(this.field.value)) {\n this.field.value = this.state.prevValue;\n return;\n }\n\n if (this.options.isConvertToUpper && this.field.value) {\n this.field.value = this.field.value.toUpperCase();\n }\n\n if (this.options.charCounter && this.state.maxLength) {\n // Custom maxlength control to cover half-width symbols case\n this.field.value = this.field.value.substring(0, this.state.maxLength);\n }\n\n if (this.options.restoreValueOnError) {\n // native validation\n if (this.field.checkValidity()) {\n this.state.message = this.field.value;\n }\n } else {\n this.state.message = this.field.value;\n }\n\n if (this.options.charCounter) {\n this.selectors.countElement.innerText = this.field.value.length;\n }\n\n this.state.prevValue = this.field.value;\n }\n\n /**\n * Handler for native field validation\n */\n onValidation() {\n super.onValidation();\n\n if (!this.errorElement && this.options.serverValidationOnChange) {\n this.serverValidation().catch(() => {});\n }\n }\n\n /**\n * Reset the field to empty & remove custom focus class\n */\n onReset() {\n super.onReset();\n this.element.value = '';\n this.setFieldState(false);\n this.element.classList.remove(this.classes.focus);\n }\n\n /**\n * Set chars counter message\n */\n showCounter() {\n const counterNode = document.createElement('span');\n counterNode.classList.add(this.options.classNames.counter);\n counterNode.setAttribute('data-js-counter', '');\n counterNode.setAttribute('id', `${this.field.id}-counter`);\n counterNode.innerHTML = this.field.dataset.customMessageCharcounter;\n this.element.appendChild(counterNode);\n\n this.selectors.maxLengthElement = this.element.querySelector('[data-js-max]');\n }\n\n /**\n * remove error to the field\n * put back the initial aria-describedby value if necessary\n */\n removeError() {\n super.removeError();\n if (this.state.ariaDescribedBy) {\n this.field.setAttribute('aria-describedby', this.state.ariaDescribedBy);\n }\n }\n\n /**\n * Handler for server-side validation via ajax\n * @param {String} param param\n * @returns {Promise} Result\n */\n serverValidation(param) {\n const urlParam = param || 'message';\n const serverValidationURL = this.field.dataset.serverValidationUrl || this.options.serverValidationURL;\n\n if (!serverValidationURL) {\n return Promise.reject(new Error('URL for server-side validation is not configured'));\n }\n\n const separator = serverValidationURL.indexOf('?') === -1 ? '?' : '&';\n let url = `${serverValidationURL}${separator}${urlParam}=${encodeURIComponent(this.field.value)}`;\n\n if (this.field.dataset.serverValidationCustomAssetId) {\n url += `&customassetid=${this.field.dataset.serverValidationCustomAssetId}`;\n }\n\n return ajax(url).catch((e) => {\n const message = this.options.serverValidationErrorMessage || e.data.errorMessage;\n\n trigger('field.invalidate', this.field, {\n errorMessage: message,\n errorKey: 'customError',\n });\n return Promise.reject(e);\n });\n }\n\n /**\n * Set initial field state depending on content\n */\n initFieldState() {\n if (this.field.value !== '') {\n this.setFieldState(true);\n }\n }\n\n /**\n * Onleave event handler\n */\n onLeave() {\n this.trim();\n\n super.onLeave();\n }\n\n /**\n * Change max message length\n * @param {Number} maxMessageLength new maxLength value\n */\n updateMessageLength(maxMessageLength) {\n if (maxMessageLength <= 0) {\n maxMessageLength = 0;\n }\n\n if (this.state.message && this.state.message.length > maxMessageLength) {\n this.state.message = this.state.message.substring(0, maxMessageLength);\n this.field.value = this.state.message;\n\n if (this.selectors.countElement) {\n this.selectors.countElement.innerText = this.state.message ? this.state.message.length : 0;\n }\n\n trigger('change', this.field, { bubbles: true });\n }\n\n if (this.selectors.maxLengthElement) {\n this.selectors.maxLengthElement.innerText = maxMessageLength;\n this.field.setAttribute('maxlength', maxMessageLength);\n this.state.maxLength = maxMessageLength;\n }\n }\n\n /**\n * Handles the mousedown action for a readonly input date field\n * to prevent the device's system datepicker from opening\n * @param {Event} e - the mousedown event object\n * @returns {boolean} - always returns false to prevent default action\n */\n onMousedownReadonlyDate(e) {\n e.preventDefault();\n return false;\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 super.destroy();\n if (this.options.charCounter) {\n off('input', this.field);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}