{"version":3,"sources":["webpack:///./src/client/default/js/components/paybackBadgeComponent.js","webpack:///./src/client/default/js/base/baseComponent.js","webpack:///./src/client/default/js/utilities/SerializeForm.js","webpack:///./src/client/default/js/utilities/formErrors.js","webpack:///./src/client/default/js/base/baseFormComponent.js"],"names":["PaybackBadgeComponent","element","readCookie","SHOW","HIDE","paybackPointsValue","cntNoCard","pbPointsCookieValue","Cookies","get","document","querySelectorAll","this","SELECTORS","forEach","el","classList","replace","CLASSES","add","setPointsDisplay","length","innerHTML","BaseFormComponent","BaseComponent","_componentElement","setAttribute","_checkMessages","compOptions","options","$el","dataset","Object","keys","filter","entry","includes","optionValue","cleanEntry","cleanOptionKey","JSON","parse","convertType","deepFreeze","getAttribute","events","cb","elements","Bean","on","e","stopPropagation","one","off","fire","container","message","_loading","EMIT","CUSTOM_MESSAGES","LOADER_EVENTS","show","body","error","icon","setTimeout","hide","option","optionReturn","key","str","charAt","toLocaleLowerCase","slice","BaseGiaComponent","SerializeForm","form","serialize","dataType","getFormDataArray","getFormDataObject","join","map","data","tempData","split","name","value","formData","fieldKey","fieldVale","encodeURIComponent","newArrayString","decodeURIComponent","nodeName","disabled","BLACK_LIST","type","isValidForm","isvalidElement","opt","selected","push","checked","scrollConfig","behavior","block","inline","formErrorsConfig","HAS_ERRORS","GROUP_ERROR","ERROR_MESSAGE","JS_ERROR_MESSAGE","JS_FORM_WARNING","FORM_GROUP_FEEDBACK","BTN_SUBMIT","MODAL_ACTIONS","showFieldsErrors","errors","entries","querySelector","parent","closest","appendChild","messageEl","createElement","scrollIntoView","showGlobalError","button","parentNode","modalActions","modalParent","errorEl","insertBefore","setState","valid","$on","a","preventDefault","stopImmediatePropagation","formButton","currentTarget","action","cleanCustomError","res","handleRes","errorFields","errorMessage","globaError","err","parentElement","removeChild","remove","removeAttribute","Serialize"],"mappings":"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","file":"js/component-paybackBadgeComponent-js.chunks.js","sourcesContent":["import BaseFormComponent from '../base/baseFormComponent';\nimport Cookies from 'js-cookie';\n\nexport default class PaybackBadgeComponent extends BaseFormComponent {\n get CLASSES() {\n return {\n SHOW: 'visible',\n HIDE: 'hidden'\n };\n }\n\n get SELECTORS() {\n return {\n paybackPointsValue: '.js-payback__points',\n cntNoCard: '.js-pb-cnt-nocard'\n };\n }\n\n constructor(element) {\n super(element);\n this.readCookie();\n }\n\n readCookie() {\n var pbPointsCookieValue = Cookies.get('pbPoints');\n\n if (pbPointsCookieValue == null || pbPointsCookieValue == '') {\n document.querySelectorAll(this.SELECTORS.cntNoCard)?.forEach((el) => el.classList.replace(this.CLASSES.HIDE, this.CLASSES.SHOW));\n document.querySelectorAll('.js-pb-cnt')?.forEach((el) => el.classList.add(this.CLASSES.HIDE));\n } else if (pbPointsCookieValue === '1') {\n this.setPointsDisplay();\n document.querySelectorAll('.js-pb-cnt-point')?.forEach((el) => el.classList.replace(this.CLASSES.HIDE, this.CLASSES.SHOW));\n } else {\n this.setPointsDisplay(pbPointsCookieValue);\n document.querySelectorAll('.js-pb-cnt-points')?.forEach((el) => el.classList.replace(this.CLASSES.HIDE, this.CLASSES.SHOW));\n }\n }\n\n setPointsDisplay(pbPointsCookieValue) {\n document.querySelectorAll(this.SELECTORS.cntNoCard)?.forEach((el) => el.classList.replace(this.CLASSES.SHOW, this.CLASSES.HIDE));\n const paybackPointsValue = document.querySelectorAll(this.SELECTORS.paybackPointsValue);\n if (paybackPointsValue.length > 0) {\n paybackPointsValue.forEach((el) => el.innerHTML = pbPointsCookieValue);\n }\n }\n}\n","/* eslint-disable new-cap */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable no-underscore-dangle */\n\nimport Bean from 'bean';\nimport deepFreeze from '../utilities/freeze';\nimport BaseGiaComponent from './baseGiaComponent';\n\nexport default class BaseComponent extends BaseGiaComponent {\n /**\n * @returns {HTMLElement}\n */\n get $el() {\n return /** @type {HTMLElement} */ (this._componentElement);\n }\n\n get $options() {\n const compOptions = {};\n const options = { ...this.$el.dataset };\n const optionsEntires = Object.keys(options).filter((entry) => entry.includes('option'));\n optionsEntires.forEach((entry) => {\n const cleanEntry = BaseComponent.cleanOptionKey(entry);\n let optionValue;\n if (options[entry].includes('{') && options[entry].includes('}')) {\n optionValue = JSON.parse(options[entry].replace(/'/g, '\"'));\n } else {\n optionValue = BaseComponent.convertType(options[entry]);\n }\n compOptions[cleanEntry] = optionValue;\n });\n return deepFreeze(compOptions);\n }\n\n get COMPONENT_NAME() {\n return this.$el.getAttribute('data-component');\n }\n\n /**\n *\n * constructor\n *\n * @param {Element} element\n */\n constructor(element) {\n super(element);\n this._componentElement = element;\n this._componentElement.setAttribute('data-component-init', 'true');\n this._checkMessages();\n }\n\n static convertType(option) {\n let optionReturn;\n switch (option) {\n case 'false':\n optionReturn = false;\n break;\n case 'true':\n optionReturn = true;\n break;\n case 'null':\n optionReturn = null;\n break;\n default:\n optionReturn = option;\n break;\n }\n\n return optionReturn;\n }\n\n static cleanOptionKey(key) {\n const str = key.replace('option', '');\n return `${str.charAt(0).toLocaleLowerCase()}${str.slice(1)}`;\n }\n\n /**\n *\n * $on\n *\n * @param {String} events\n * @param {Function} cb\n * @param {Element} [element = this.$el]\n * @param {Array|String|Element} [elements = null]\n */\n $on(events, cb, element = this.$el, elements = null) {\n if (!element || !events || !cb) return;\n if (!elements) {\n Bean.on(element, events, (e) => {\n if (e) e.stopPropagation();\n cb(e);\n });\n } else {\n Bean.on(element, events, elements, (e) => {\n if (e) e.stopPropagation();\n cb(e);\n });\n }\n }\n\n /**\n *\n * $one\n *\n * @param {String} events\n * @param {Function} cb\n * @param {Element} [element = this.$el]\n */\n $one(events, cb, element = this.$el) {\n Bean.one(element, events, cb);\n }\n\n /**\n *\n * $off\n *\n * @param {String} events\n * @param {Element} [element = this.$el]\n */\n $off(events, element = this.$el) {\n Bean.off(element, events);\n }\n\n /**\n *\n * $fire\n *\n * @param {String} events\n * @param {Element} [element = this.$el]\n */\n $fire(events, element = this.$el) {\n Bean.fire(element, events);\n }\n\n /**\n *\n * Activate loader\n *\n * @param {HTMLElement} [container]\n * @param {String} [message]\n */\n loading(container, message) {\n this._loading = true;\n this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.show, {\n container: container || document.body,\n message: message ?? null\n });\n }\n\n /**\n *\n * Deactivate loader\n *\n * @param {HTMLElement} [container]\n * @param {String} [message]\n * @param {Boolean} [error=false]\n * @param {String} [icon]\n */\n endLoading(container, message, error = false, icon) {\n this._loading = false;\n setTimeout(() => {\n if (!this._loading) {\n this.EMIT(this.CUSTOM_MESSAGES.LOADER_EVENTS.hide, {\n container: container || document.body,\n message,\n error,\n icon\n });\n }\n }, 400);\n }\n}\n","class SerializeForm {\n static get BLACK_LIST() {\n return {\n elements: ['button', 'file', 'reset', 'submit']\n };\n }\n\n /**\n *\n * @param {HTMLFormElement} form\n */\n constructor(form) {\n this.form = SerializeForm.serialize(form);\n }\n\n /**\n * Get the form serialization data by format\n *\n * @param {String} [dataType] The data type to return ('array', 'object' or empty to return string)\n * @returns {*}\n */\n getData(dataType) {\n switch (dataType) {\n case 'array':\n return SerializeForm.getFormDataArray(this.form);\n case 'object':\n return SerializeForm.getFormDataObject(this.form);\n default:\n return this.form.join('&').replace(/%20/g, '+');\n }\n }\n\n /**\n * Get the form serialization data string\n *\n * @returns {String}\n */\n toString() {\n return this.form.join('&').replace(/%20/g, '+');\n }\n\n /**\n * Get the form serialization data array\n *\n * @returns {Array}\n */\n toArray() {\n return SerializeForm.getFormDataArray(this.form);\n }\n\n /**\n * Get the form serialization data object\n *\n * @returns {Object}\n */\n toObject() {\n return SerializeForm.getFormDataObject(this.form);\n }\n\n /**\n *\n * @param {HTMLFormElement} form\n * @return {Array}\n */\n static getFormDataArray(form) {\n return [\n ...form.map((data) => {\n const tempData = data.split('=');\n return {\n name: tempData[0],\n value: tempData.slice(1).join('=')\n };\n })\n ];\n }\n\n /**\n *\n * @param {HTMLFormElement} form\n */\n static getFormDataObject(form) {\n const formData = {};\n form.forEach((data) => {\n const tempData = data.split('=');\n let fieldKey = tempData[0];\n let fieldVale = tempData.slice(1).join('=');\n if (formData[fieldKey]) {\n fieldVale = encodeURIComponent(fieldVale);\n const newArrayString = `${\n typeof formData[fieldKey] === 'object' ? formData[fieldKey].map(encodeURIComponent).join('&') : encodeURIComponent(formData[fieldKey])\n }&${fieldVale}`;\n formData[fieldKey] = newArrayString.split('&').map(decodeURIComponent);\n } else {\n formData[fieldKey] = fieldVale;\n }\n });\n\n return formData;\n }\n\n /**\n *\n * @param {HTMLFormElement} form\n * @return {boolean}\n */\n static isValidForm(form) {\n return typeof form === 'object' && form.nodeName === 'FORM';\n }\n\n /**\n *\n * @param {HTMLElement} el\n * @return {boolean}\n */\n static isvalidElement(el) {\n return el.name && !el.disabled && !SerializeForm.BLACK_LIST.elements.includes(el.type);\n }\n\n /**\n *\n * @param {HTMLFormElement} form\n * @return {Array}\n */\n static serialize(form) {\n const data = [];\n if (SerializeForm.isValidForm(form)) {\n [...form.elements].forEach((el) => {\n if (SerializeForm.isvalidElement(el)) {\n if (el.type === 'select-multiple') {\n el.options.forEach((opt) => {\n if (opt.selected) data.push(`${el.name}=${opt.value}`);\n });\n } else if ((el.type !== 'checkbox' && el.type !== 'radio') || el.checked) {\n data.push(`${el.name}=${el.value}`);\n }\n }\n });\n }\n return data;\n }\n}\n\nexport default SerializeForm;\n","/**\n * @type {ScrollIntoViewOptions}\n */\nconst scrollConfig = {\n behavior: 'smooth',\n block: 'center',\n inline: 'center'\n};\n\nexport const formErrorsConfig = {\n CLASSES: {\n HAS_ERRORS: 'error',\n GROUP_ERROR: 'form-group-error',\n ERROR_MESSAGE: 'error-message',\n JS_ERROR_MESSAGE: 'js-error-message',\n JS_FORM_WARNING: 'js-form-warning'\n },\n SELECTORS: {\n ERROR_MESSAGE: '.error-message',\n FORM_GROUP_FEEDBACK: '.form-group',\n JS_ERROR_MESSAGE: '.js-error-message',\n JS_FORM_WARNING: '.js-form-warning',\n BTN_SUBMIT: 'button[type=\"submit\"]',\n MODAL_ACTIONS: '.modal-actions'\n }\n};\n\n/**\n * @param {string} message\n * @returns {HTMLDivElement}\n */\nconst inputErrorMsg = (message) => {\n const messageEl = document.createElement('div');\n messageEl.classList.add(formErrorsConfig.CLASSES.ERROR_MESSAGE, formErrorsConfig.CLASSES.JS_ERROR_MESSAGE);\n messageEl.innerHTML = message;\n messageEl.closest(formErrorsConfig.SELECTORS.FORM_GROUP_FEEDBACK)?.classList.add(formErrorsConfig.CLASSES.GROUP_ERROR);\n return messageEl;\n};\n\n/**\n * @param {string} message\n * @returns {HTMLSpanElement}\n */\nconst formErroMessage = (message) => {\n const messageEl = document.createElement('span');\n messageEl.classList.add(formErrorsConfig.CLASSES.HAS_ERRORS, formErrorsConfig.CLASSES.JS_FORM_WARNING);\n messageEl.innerHTML += message;\n return messageEl;\n};\n\n/**\n * @param {HTMLFormElement} form\n * @param {Function} cb\n */\nexport const cleanInputs = (form, cb) => {\n const inputs = form.querySelectorAll('input, select');\n [...inputs].forEach(\n /**\n * @param {HTMLInputElement | HTMLSelectElement} el\n */\n (el) => {\n const error = el.parentElement.querySelector(formErrorsConfig.SELECTORS.ERROR_MESSAGE);\n const parent = error.parentElement;\n el.closest(formErrorsConfig.SELECTORS.FORM_GROUP_FEEDBACK)?.classList.add(formErrorsConfig.CLASSES.GROUP_ERROR);\n el.classList.remove(formErrorsConfig.CLASSES.HAS_ERRORS);\n el.removeAttribute('aria-invalid');\n parent.removeChild(error);\n }\n );\n};\n\n/**\n * @param {HTMLFormElement} form\n * @param {Object} errors\n */\nexport const showFieldsErrors = (form, errors) => {\n for (const [key, value] of Object.entries(errors)) {\n const el = form.querySelector(`[name=\"${key}\"]`);\n const parent = el.closest(formErrorsConfig.SELECTORS.FORM_GROUP_FEEDBACK);\n el.classList.add(formErrorsConfig.CLASSES.HAS_ERRORS);\n el.setAttribute('aria-invalid', 'true');\n parent.appendChild(inputErrorMsg(value));\n }\n const error = form.querySelector(formErrorsConfig.SELECTORS.ERROR_MESSAGE);\n if (error) {\n error.scrollIntoView(scrollConfig);\n }\n};\n\n/**\n * @param {HTMLFormElement} form\n * @param {string} error\n */\nexport const showGlobalError = (form, error) => {\n const button = form.querySelector(formErrorsConfig.SELECTORS.BTN_SUBMIT);\n const parent = button.parentNode;\n const modalActions = form.querySelector(formErrorsConfig.SELECTORS.MODAL_ACTIONS);\n const modalParent = modalActions ? modalActions.parentNode : '';\n const errorEl = formErroMessage(error);\n modalActions ? modalParent.appendChild(errorEl, button) : parent.insertBefore(errorEl, button);\n};\n","/* eslint-disable sonarjs/no-redundant-boolean */\n// import SerializeAll from 'form-serialize-all';\nimport Serialize from '../utilities/SerializeForm';\nimport BaseComponent from './baseComponent';\nimport { showFieldsErrors, showGlobalError, formErrorsConfig } from '../utilities/formErrors';\n\nexport default class BaseFormComponent extends BaseComponent {\n /**\n * @param {Element} element\n */\n constructor(element) {\n super(element);\n this.setState({ valid: false });\n }\n\n /**\n * @returns {HTMLFormElement}\n */\n get $el() {\n return /** @type {HTMLFormElement} */ (super.$el);\n }\n\n /**\n * @param {CallableFunction} cb - The callback function\n */\n onSubmit(cb) {\n this.$on('bouncerFormValid', async (e) => {\n e.preventDefault();\n e.stopImmediatePropagation();\n const formButton = e.currentTarget.querySelector(formErrorsConfig.SELECTORS.BTN_SUBMIT);\n const action = e.currentTarget.getAttribute('action');\n this.cleanCustomError();\n const res = await cb(e, action, formButton);\n if (res) this.handleRes(res);\n });\n }\n\n /**\n * @param {{ error: any; errorFields: any; errorMessage: any; }} res\n */\n handleRes(res) {\n const { error, errorFields, errorMessage } = res;\n if (error == 'PASSWORD_ORCKESTRA_MISMATCH') {\n return;\n }\n if (errorFields) {\n showFieldsErrors(this.$el, errorFields);\n }\n if (errorMessage) {\n showGlobalError(this.$el, errorMessage);\n } else if (error && error != true) {\n showGlobalError(this.$el, error);\n }\n }\n\n cleanCustomError() {\n const errorFields = this.$el.querySelectorAll(formErrorsConfig.SELECTORS.JS_ERROR_MESSAGE); //.js-input-error-message\n const globaError = this.$el.querySelectorAll(formErrorsConfig.SELECTORS.JS_FORM_WARNING); // .js-form-error-message\n\n if (globaError.length > 0) {\n [...globaError].forEach((err) => {\n const parent = err.parentElement;\n parent.removeChild(err);\n });\n }\n if (errorFields.length > 0) {\n [...errorFields].forEach((err) => {\n try {\n const parent = err.parentElement;\n parent.removeChild(err);\n // TODO: use a clean function to do this\n parent.querySelector('input').classList.remove(formErrorsConfig.CLASSES.HAS_ERRORS);\n err.classList.remove(formErrorsConfig.CLASSES.HAS_ERRORS);\n err.removeAttribute('aria-describedby');\n err.removeAttribute('aria-invalid');\n } catch (e) {\n // TODO: error...\n }\n });\n }\n }\n\n /**\n *\n * @param {HTMLFormElement} form\n * @return {Object} form data in json format\n */\n serializeForm(form) {\n return new Serialize(form);\n }\n}\n"],"sourceRoot":""}