{"version":3,"file":"validator_provider-9e88341e.js","sources":["../../../app/javascript/mints-components/cali-dynamic-form/stores/store.js","../../../app/javascript/helpers/validator_provider.js"],"sourcesContent":["import { defineStore } from 'pinia'\r\n\r\nexport const dynamicFormStore = defineStore('dynamicForm', {\r\n state: () => ({\r\n form: {}, answers: {},\r\n step: 1, status: {},\r\n password: null,\r\n productLine: null,\r\n products: []\r\n }),\r\n actions: {\r\n updatePassword(pass) {\r\n this.password = pass\r\n },\r\n updateAnswer({ key, value }) {\r\n if (key === 'password') this.password = value\r\n this.answers[key] = value\r\n },\r\n setFormData(payload) {\r\n this.form = payload\r\n },\r\n nextStep() {\r\n this.step ++;\r\n },\r\n resetStep() {\r\n this.step = 1\r\n },\r\n changeStatus({ key, value }) {\r\n this.status[key] = value\r\n },\r\n resetAnswers() {\r\n this.answers = {}\r\n },\r\n verifyPassword() {\r\n for (const answer in this.answers) {\r\n // console.log( typeof answer)\r\n }\r\n },\r\n verifyIfKeysHasValue() {\r\n return this.currentInputs.every(field => Boolean(this.answers[field.slug]))\r\n },\r\n updateProductLine(newValue) {\r\n this.productLine = newValue\r\n },\r\n productList(productLine) {\r\n let listaFiltrada = []\r\n\r\n // switch (productLine) {\r\n // case 'ACONDICIONADOR DE MANZANILLA':\r\n // listaFiltrada = ['ACONDICIONADOR DE MANZANILLA-ACONDICIONADOR DE MANZANILLA']\r\n // break;\r\n // case 'BODY WASH':\r\n // listaFiltrada = [\r\n // 'BODY WASH-JABÓN LÍQUIDO LAVANDA Y LECHUGA',\r\n // 'BODY WASH-JABÓN LÍQUIDO AVENA & VAINILLA',\r\n // 'BODY WASH-JABÓN LÍQUIDO MANZANILLA Y MIEL'\r\n // ]\r\n // break;\r\n // case 'CORPORALES':\r\n // listaFiltrada = [\r\n // 'CORPORALES-ACEITE CON ATOMIZADOR LAVANDA',\r\n // 'CORPORALES-AGUA DE COLONIA DULCES SUEÑOS',\r\n // 'CORPORALES-CREMA DE AVENA & VAINILLA',\r\n // 'CORPORALES-CREMA DE MIEL',\r\n // 'CORPORALES-SPRAY ANTI MOSCOS',\r\n // 'CORPORALES-AGUA DE COLONIA MANZANILLA',\r\n // 'CORPORALES-CREMA LAVANDA',\r\n // 'CORPORALES-LOCIÓN',\r\n // 'CORPORALES-RICITOS DE ORO BLOQUEADOR',\r\n // 'CORPORALES-POST MOSQUITO'\r\n // ]\r\n // break;\r\n // case 'JABONES':\r\n // listaFiltrada = [\r\n // 'JABONES-3PACK JABONES MIXTOS',\r\n // 'JABONES-AVENA',\r\n // 'JABONES-LAVANDA',\r\n // 'JABONES-MANZANILLA',\r\n // 'JABONES-MIEL',\r\n // 'JABONES-NEUTRO',\r\n // 'JABONES-BIO PURE'\r\n // ]\r\n // break;\r\n // case 'KIT RICITOS DE ORO':\r\n // listaFiltrada = [\r\n // 'KIT RICITOS DE ORO-MINI KIT DE LAVANDA 4PZS',\r\n // 'KIT RICITOS DE ORO-MINI KIT DE VIAJE MANZANILLA 4 PZAS'\r\n // ]\r\n // break;\r\n // case 'LÍNEA PEDIÁTRICA':\r\n // listaFiltrada = [\r\n // 'LÍNEA PEDIÁTRICA-RICITOS DE ORO MANZANILLA LUB',\r\n // 'LÍNEA PEDIÁTRICA-PASTA DE LASSAR'\r\n // ]\r\n // break;\r\n // case 'PRODUCTOS PARA PEINADO':\r\n // listaFiltrada = [\r\n // 'PRODUCTOS PARA PEINADO-GEL MANZANILLA',\r\n // 'PRODUCTOS PARA PEINADO-GEL MIEL',\r\n // 'PRODUCTOS PARA PEINADO-LOCIÓN ACLARANTE',\r\n // 'PRODUCTOS PARA PEINADO-SPRAY DESENREDANTE MIEL ARGÁN',\r\n // 'PRODUCTOS PARA PEINADO-GEL LÍQUIDO',\r\n // 'PRODUCTOS PARA PEINADO-GEL'\r\n // ]\r\n // break;\r\n // case 'SHAMPOO':\r\n // listaFiltrada = [\r\n // 'SHAMPOO-LAVANDA',\r\n // 'SHAMPOO-MANZANILLA',\r\n // 'SHAMPOO-MIEL',\r\n // 'SHAMPOO-NEUTRO',\r\n // 'SHAMPOO-BIO PURE'\r\n // ]\r\n // break;\r\n // default:\r\n // listaFiltrada = []\r\n // break;\r\n // }\r\n this.products = listaFiltrada\r\n return this.products\r\n },\r\n },\r\n getters: {\r\n // Global getters\r\n formType: (state) => state.form?.config_json?.is_progressive_form ? 'Progressive' : 'Static',\r\n isProgressive() { return this.formType === 'Progressive' },\r\n title: (state) => state.form?.config_json?.form_title,\r\n description: (state) => state.form?.description,\r\n fields: (state) => state.form?.config_json?.fields,\r\n inputFields() { return this.fields?.filter(f => f.data_type_enum !== 16) },\r\n labelFields() { return this.fields?.filter(f => f.data_type_enum === 16) || [] },\r\n buttonField() { return this.labelFields.find(f => f?.extra_parameters?.is_footer_button) },\r\n defaultApi: (state) => state.form?.slug ? '/api/v1/forms/' + state.form.slug : '',\r\n submitStatus: (state) => state.status?.submit,\r\n // Progressive form getters\r\n maxStep() {\r\n return this.inputFields?.reduce((carry, field) => {\r\n return field?.extra_parameters?.step > carry ? field.extra_parameters.step : carry\r\n }, 1)\r\n },\r\n currentInputs(state) { return this.inputFields.filter(field => field.extra_parameters?.step === state.step) },\r\n currentLabels(state) { return this.labelFields.filter(field => field.extra_parameters?.step === state.step) },\r\n disabledProductSelection(state) { return state.products.length === 0},\r\n filteredProducts(state) { return this.productList(state.productLine)}\r\n }\r\n});\r\n","import { computed, reactive } from 'vue'\r\nimport useVuelidate from \"@vuelidate/core\";\r\nimport {helpers, email, required, minLength, maxLength } from \"@vuelidate/validators\";\r\nimport moment from \"moment\";\r\n\r\nimport { dynamicFormStore } from \"@mints-components/cali-dynamic-form/stores/store\";\r\n\r\n\r\nexport const required$ = helpers.withMessage('Este campo no puede estar vacío', required)\r\n\r\nexport const email$ = helpers.withMessage('El valor no tiene formato de correo (ejemplo@mail.com)', email)\r\n\r\nexport function validName(name) {\r\n let validNamePattern = new RegExp(\"^[A-zÀ-ú]+(?:[-'.\\\\s][A-zÀ-ú]+)*[\\\\s]*$\");\r\n if (validNamePattern.test(name)) {\r\n return true;\r\n }\r\n}\r\n\r\nexport function checkBoxValidation(bool) { return bool === true }\r\n\r\nexport function confirmPassword(pass) {\r\n return dynamicFormStore().password === pass\r\n}\r\n\r\nexport function legalAge(date) {\r\n const givenDate = moment(date)\r\n const currentDate = moment();\r\n const eighteenYearsAgo = currentDate.subtract(18, 'years');\r\n return givenDate.isBefore(eighteenYearsAgo);\r\n}\r\n\r\nexport function validPhone(numberObject) {\r\n return numberObject.number.length === 10\r\n}\r\n\r\nexport function validPassword(password) {\r\n const passwordPattern = /^(?=.*[a-zA-Z0-9!@#$%^&*()_+,\\-.;?]).{6,16}$/;\r\n return passwordPattern.test(password);\r\n}\r\n\r\nexport function attachValidations(field) {\r\n let validation = {}\r\n\r\n if (field.required) {\r\n validation = {...validation, required$ }\r\n }\r\n\r\n if ((field.validations || []).includes('email')) {\r\n validation = {...validation, email$ }\r\n }\r\n\r\n if ((field.validations || []).includes('max:')) {\r\n let lengthMax = field.validations.find(x => x.includes('max:')).split(':')\r\n validation = {...validation, ...maxLength(lengthMax[lengthMax.length - 1]) }\r\n }\r\n\r\n if ((field.validations || []).includes('min:')) {\r\n let lengthMin = field.validations.find(x => x.includes('min:')).split(':')\r\n validation = {...validation, ...minLength(lengthMin[lengthMin.length - 1]) }\r\n }\r\n\r\n if ((field.validations || []).includes('password')) {\r\n validation = {...validation,\r\n ... {\r\n password: {\r\n $validator: validPassword,\r\n $message: 'La contraseña debe contener entre 6 y 16 caracteres'\r\n }\r\n }\r\n }\r\n }\r\n\r\n if ((field.validations || []).includes('confirmation')) {\r\n validation = {...validation,\r\n ... {\r\n confirmation: {\r\n $validator: confirmPassword,\r\n $message: 'Las contraseñas no coinciden'\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n if ((field.validations || []).includes('phone')) {\r\n validation = {...validation,\r\n ... {\r\n phone_valid: {\r\n $validator: validPhone,\r\n $message: 'Escribe tu número de teléfono (10 dígitos)'\r\n }\r\n }\r\n }\r\n }\r\n\r\n if ((field.validations || []).includes('terms')) {\r\n validation = {...validation,\r\n ... {\r\n checkbox: {\r\n $validator: checkBoxValidation,\r\n $message: 'Debes aceptar los términos y condiciones para registrarte'\r\n }\r\n }\r\n }\r\n }\r\n\r\n if ((field.validations || []).includes('date')) {\r\n validation = {...validation,\r\n ... {\r\n legal_age: {\r\n $validator: legalAge,\r\n $message: 'Debe ser mayor de edad para poder participar'\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (field.validName) {\r\n validation = {...validation,\r\n ... {\r\n name_validation: {\r\n $validator: validName,\r\n $message: 'Los nombres validos sólo contienen letras, guiones y espacios'\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n return validation\r\n}\r\n\r\nexport const generateValidatorInstance = (form) => {\r\n const fields = form && form.config_json ? form.config_json.fields : [];\r\n\r\n let validations = {}\r\n let formState = {}\r\n fields.forEach(field => {\r\n validations[field.slug] = attachValidations(field)\r\n formState[field.slug] = null\r\n });\r\n\r\n const rules = computed(() => ({\r\n formFilled: validations,\r\n }))\r\n\r\n const state = reactive({\r\n formFilled: formState\r\n })\r\n\r\n return useVuelidate(rules, state);\r\n};"],"names":["dynamicFormStore","defineStore","pass","key","value","payload","answer","field","newValue","productLine","listaFiltrada","state","_b","_a","f","carry","required$","helpers","required","email$","email","validName","name","checkBoxValidation","bool","confirmPassword","legalAge","date","givenDate","moment","eighteenYearsAgo","validPhone","numberObject","validPassword","password","attachValidations","validation","lengthMax","x","maxLength","lengthMin","minLength"],"mappings":"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"}