ctt-puro 0.43.5 → 0.44.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2935,137 +2935,250 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2935
2935
  }] } });
2936
2936
 
2937
2937
  class PuroEventsFormComponent {
2938
- constructor(fb, cdr) {
2938
+ constructor(fb, cdr, ngZone) {
2939
2939
  this.fb = fb;
2940
2940
  this.cdr = cdr;
2941
+ this.ngZone = ngZone;
2941
2942
  this.submitFormValue = new EventEmitter();
2942
2943
  this.formReady$ = signal(false);
2944
+ this.activeTimepicker = null;
2945
+ this.hours = [];
2943
2946
  }
2947
+ // ---------------------------------------------------
2948
+ // INIT
2949
+ // ---------------------------------------------------
2944
2950
  ngOnInit() {
2945
- this.initializeForm();
2951
+ this.buildForm();
2952
+ this.generateHours();
2953
+ }
2954
+ // ---------------------------------------------------
2955
+ // HOURS
2956
+ // ---------------------------------------------------
2957
+ generateHours() {
2958
+ const list = [];
2959
+ for (let h = 0; h < 24; h++) {
2960
+ for (let m of [0, 15, 30, 45]) {
2961
+ list.push(`${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}`);
2962
+ }
2963
+ }
2964
+ this.hours = list;
2946
2965
  }
2947
- initializeForm() {
2966
+ openTimepicker(id, event) {
2967
+ event.stopPropagation();
2968
+ this.activeTimepicker = id;
2969
+ this.cdr.markForCheck();
2970
+ this.registerOutsideClick();
2971
+ }
2972
+ registerOutsideClick() {
2973
+ if (this.removeOutsideListener) {
2974
+ this.removeOutsideListener();
2975
+ }
2976
+ this.ngZone.runOutsideAngular(() => {
2977
+ const handler = (event) => {
2978
+ const target = event.target;
2979
+ if (target.closest('.puro-timepicker') ||
2980
+ target.closest('.timepicker-trigger')) {
2981
+ return;
2982
+ }
2983
+ this.ngZone.run(() => {
2984
+ this.activeTimepicker = null;
2985
+ this.cdr.markForCheck();
2986
+ });
2987
+ if (this.removeOutsideListener)
2988
+ this.removeOutsideListener();
2989
+ };
2990
+ document.addEventListener('click', handler);
2991
+ this.removeOutsideListener = () => {
2992
+ document.removeEventListener('click', handler);
2993
+ this.removeOutsideListener = undefined;
2994
+ };
2995
+ });
2996
+ }
2997
+ selectHour(target, hour) {
2998
+ const input = target === 'sHourInput' ? this.sHourInput : this.fHourInput;
2999
+ if (input?.name) {
3000
+ this.form.get(input.name)?.setValue(hour);
3001
+ input.value = hour;
3002
+ }
3003
+ this.activeTimepicker = null;
3004
+ this.cdr.markForCheck();
3005
+ if (this.removeOutsideListener)
3006
+ this.removeOutsideListener();
3007
+ }
3008
+ // ---------------------------------------------------
3009
+ // FORM
3010
+ // ---------------------------------------------------
3011
+ buildForm() {
2948
3012
  const controls = {};
2949
- // Checkboxes
2950
3013
  if (this.conditionsLink)
2951
3014
  controls['conditions'] = [false, Validators.requiredTrue];
2952
3015
  if (this.others)
2953
3016
  controls['others'] = [false];
2954
- // Selects
2955
3017
  if (this.neDropdown)
2956
3018
  controls['neDropdown'] = ['', Validators.required];
2957
3019
  if (this.othersDropdown)
2958
3020
  controls['othersDropdown'] = ['', Validators.required];
2959
3021
  if (this.prefix)
2960
3022
  controls['prefix'] = ['', Validators.required];
2961
- // Textareas
2962
- if (this.howTextarea?.name) {
2963
- controls[this.howTextarea.name] = [
2964
- '',
2965
- this.howTextarea.validators || [],
2966
- ];
2967
- }
2968
- if (this.infoTextarea?.name) {
2969
- controls[this.infoTextarea.name] = [
2970
- '',
2971
- this.infoTextarea.validators || [],
2972
- ];
2973
- }
2974
- // Inputs
2975
- if (this.nameInput?.name) {
3023
+ if (this.nameInput?.name)
2976
3024
  controls[this.nameInput.name] = [
2977
3025
  '',
2978
3026
  this.nameInput.validators || [Validators.required],
2979
3027
  ];
2980
- }
2981
- if (this.surnameInput?.name) {
3028
+ if (this.surnameInput?.name)
2982
3029
  controls[this.surnameInput.name] = [
2983
3030
  '',
2984
3031
  this.surnameInput.validators || [Validators.required],
2985
3032
  ];
2986
- }
2987
- if (this.phoneInput?.name) {
2988
- controls[this.phoneInput.name] = [
3033
+ if (this.phoneInput)
3034
+ controls['phone'] = [
2989
3035
  '',
2990
- this.phoneInput.validators || [Validators.required],
3036
+ [...(this.phoneInput.validators || []), this.phoneValidator()],
2991
3037
  ];
2992
- }
2993
- if (this.companyNameInput?.name) {
3038
+ if (this.companyNameInput?.name)
2994
3039
  controls[this.companyNameInput.name] = [
2995
3040
  '',
2996
- this.companyNameInput.validators || [Validators.required],
3041
+ this.companyNameInput.validators || [],
2997
3042
  ];
2998
- }
2999
- if (this.npInput?.name) {
3000
- controls[this.npInput.name] = [
3043
+ if (this.emailInput)
3044
+ controls['email'] = [
3001
3045
  '',
3002
- this.npInput.validators || [Validators.required],
3046
+ this.emailInput.validators || [
3047
+ Validators.required,
3048
+ Validators.email,
3049
+ ],
3003
3050
  ];
3004
- }
3005
- if (this.dateInput?.name) {
3051
+ if (this.npInput?.name)
3052
+ controls[this.npInput.name] = ['', this.npInput.validators || []];
3053
+ if (this.dateInput?.name)
3006
3054
  controls[this.dateInput.name] = [
3007
3055
  '',
3008
3056
  this.dateInput.validators || [Validators.required],
3009
3057
  ];
3010
- }
3011
- if (this.sHourInput?.name) {
3058
+ if (this.sHourInput?.name)
3012
3059
  controls[this.sHourInput.name] = [
3013
3060
  '',
3014
3061
  this.sHourInput.validators || [Validators.required],
3015
3062
  ];
3016
- }
3017
- if (this.fHourInput?.name) {
3063
+ if (this.fHourInput?.name)
3018
3064
  controls[this.fHourInput.name] = [
3019
3065
  '',
3020
3066
  this.fHourInput.validators || [Validators.required],
3021
3067
  ];
3022
- }
3023
- // email input
3024
- if (this.emailInput?.name) {
3025
- controls[this.emailInput.name] = [
3068
+ if (this.howTextarea?.name)
3069
+ controls[this.howTextarea.name] = [
3026
3070
  '',
3027
- this.emailInput.validators || [
3028
- Validators.required,
3029
- Validators.email,
3030
- ],
3071
+ this.howTextarea.validators || [],
3072
+ ];
3073
+ if (this.infoTextarea?.name)
3074
+ controls[this.infoTextarea.name] = [
3075
+ '',
3076
+ this.infoTextarea.validators || [],
3031
3077
  ];
3032
- }
3033
3078
  this.form = this.fb.group(controls);
3034
3079
  this.formReady$.set(true);
3035
3080
  this.cdr.markForCheck();
3036
3081
  }
3082
+ // ---------------------------------------------------
3083
+ // SUBMIT
3084
+ // ---------------------------------------------------
3037
3085
  submitForm(e) {
3038
3086
  e?.preventDefault?.();
3039
- if (this.form.valid) {
3040
- this.submitFormValue.emit(this.form.value);
3041
- this.resetForm();
3087
+ this.form.updateValueAndValidity();
3088
+ if (this.form.invalid) {
3089
+ Object.values(this.form.controls).forEach((c) => {
3090
+ c.markAsTouched();
3091
+ c.updateValueAndValidity({ emitEvent: false });
3092
+ });
3093
+ [
3094
+ this.emailInput,
3095
+ this.nameInput,
3096
+ this.surnameInput,
3097
+ this.phoneInput,
3098
+ this.companyNameInput,
3099
+ this.dateInput,
3100
+ this.npInput,
3101
+ this.fHourInput,
3102
+ this.sHourInput,
3103
+ this.howTextarea,
3104
+ this.infoTextarea,
3105
+ ].forEach((i) => i && this.validateInput(i));
3106
+ return;
3042
3107
  }
3108
+ this.submitFormValue.emit(this.form.value);
3109
+ this.resetForm();
3043
3110
  }
3111
+ // ---------------------------------------------------
3112
+ // INPUT HANDLING
3113
+ // ---------------------------------------------------
3044
3114
  validateInput(input) {
3045
- if (input && input.name) {
3046
- const control = this.form.get(input.name);
3047
- if (control) {
3048
- control.setValue(input.value, { emitEvent: true });
3049
- }
3050
- control?.updateValueAndValidity();
3051
- input.valid?.set(this.form.get(input.name)?.errors === null);
3052
- }
3115
+ if (!input?.name)
3116
+ return;
3117
+ const ctrl = this.form.get(input.name);
3118
+ if (!ctrl)
3119
+ return;
3120
+ input.valid?.set(ctrl.errors === null);
3053
3121
  }
3054
3122
  inputChange(event, input) {
3055
- const inputElement = event.target;
3123
+ const el = event.target;
3056
3124
  if (input.type === 'tel') {
3057
- inputElement.value = inputElement.value.replace(/[^0-9+]/g, '');
3125
+ el.value = el.value.replace(/[^0-9+]/g, '');
3126
+ }
3127
+ const value = el.value.trim();
3128
+ input.value = value;
3129
+ if (input.name) {
3130
+ const ctrl = this.form.get(input.name);
3131
+ if (ctrl) {
3132
+ ctrl.setValue(value, { emitEvent: true });
3133
+ ctrl.markAsDirty();
3134
+ ctrl.updateValueAndValidity({ emitEvent: true });
3135
+ }
3058
3136
  }
3059
- input.value = inputElement.value;
3060
3137
  }
3138
+ // ---------------------------------------------------
3139
+ // RESET
3140
+ // ---------------------------------------------------
3061
3141
  resetForm() {
3062
3142
  this.form?.reset();
3063
- if (this.howTextarea) {
3064
- this.howTextarea.value = '';
3065
- }
3143
+ [this.howTextarea, this.infoTextarea].forEach((i) => {
3144
+ if (i)
3145
+ i.value = '';
3146
+ });
3147
+ [
3148
+ this.emailInput,
3149
+ this.nameInput,
3150
+ this.surnameInput,
3151
+ this.phoneInput,
3152
+ this.companyNameInput,
3153
+ this.dateInput,
3154
+ this.npInput,
3155
+ this.fHourInput,
3156
+ this.sHourInput,
3157
+ ].forEach((i) => {
3158
+ if (i)
3159
+ i.value = '';
3160
+ });
3161
+ Object.values(this.form.controls).forEach((c) => {
3162
+ c.markAsPristine();
3163
+ c.markAsUntouched();
3164
+ });
3165
+ this.cdr.markForCheck();
3166
+ }
3167
+ // ---------------------------------------------------
3168
+ // VALIDATORS
3169
+ // ---------------------------------------------------
3170
+ phoneValidator() {
3171
+ return (control) => {
3172
+ if (!control.value)
3173
+ return null;
3174
+ const phoneRegex = /^(?:[+ ]?)[\d -]{7,15}$/;
3175
+ return phoneRegex.test(control.value)
3176
+ ? null
3177
+ : { invalidPhone: true };
3178
+ };
3066
3179
  }
3067
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroEventsFormComponent, deps: [{ token: i1$3.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3068
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroEventsFormComponent, isStandalone: true, selector: "lib-puro-events-form", inputs: { title: "title", description: "description", ciTitle: "ciTitle", dTitle: "dTitle", howTitle: "howTitle", neDropdown: "neDropdown", othersDropdown: "othersDropdown", nameInput: "nameInput", surnameInput: "surnameInput", prefix: "prefix", phoneInput: "phoneInput", emailInput: "emailInput", companyNameInput: "companyNameInput", howTextarea: "howTextarea", infoTextarea: "infoTextarea", npInput: "npInput", dateInput: "dateInput", sHourInput: "sHourInput", fHourInput: "fHourInput", others: "others", requiredLabel: "requiredLabel", img: "img", conditionsLink: "conditionsLink", applyButton: "applyButton", seeAllButton: "seeAllButton", tags: "tags", textColors: "textColors" }, outputs: { submitFormValue: "submitFormValue" }, ngImport: i0, template: "<section class=\"eventsForm\">\n <div class=\"eventsForm__inner\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"eventsForm__title corp-color\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"eventsForm__graphic\">\n <div class=\"eventsForm__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"467\"\n height=\"551\"\n class=\"eventsForm__graphicInner--img\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n <div class=\"eventsForm__content\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"eventsForm__title corp-color\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (description) {\n <div class=\"eventsForm__paragraph\">\n {{ description }}\n </div>\n }\n @if (formReady$()) {\n <form [formGroup]=\"form\" class=\"form\" (ngSubmit)=\"submitForm()\">\n <div class=\"eventsForm__section\">\n <div class=\"form__group\">\n @if (ciTitle) {\n <span\n class=\"eventsForm__section--title form__group\"\n >\n {{ ciTitle }}\n </span>\n }\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (nameInput) {\n <div class=\"form__group withIcon\">\n <input\n type=\"text\"\n class=\"form__control\"\n name=\"name\"\n id=\"name\"\n [placeholder]=\"\n nameInput.placeholder\n \"\n [formControlName]=\"nameInput.name!\"\n (blur)=\"validateInput(nameInput)\"\n (input)=\"\n inputChange($event, nameInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"18\"\n height=\"20\"\n >\n <use href=\"#user\"></use>\n </svg>\n </span>\n </div>\n @if (!nameInput.valid()) {\n <span class=\"form-error\">{{\n nameInput.error\n }}</span>\n }\n }\n </div>\n <div class=\"eventsForm__col\">\n @if (surnameInput && surnameInput.name) {\n <div class=\"form__group withIcon\">\n <input\n type=\"text\"\n class=\"form__control\"\n name=\"surname\"\n id=\"surname\"\n [placeholder]=\"\n surnameInput.placeholder\n \"\n [formControlName]=\"\n surnameInput.name!\n \"\n (blur)=\"validateInput(surnameInput)\"\n (input)=\"\n inputChange(\n $event,\n surnameInput\n )\n \"\n />\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"18\"\n height=\"20\"\n >\n <use href=\"#user\"></use>\n </svg>\n </span>\n </div>\n @if (!surnameInput.valid()) {\n <span class=\"form-error\">{{\n surnameInput.error\n }}</span>\n }\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (prefix) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n name=\"prefix\"\n formControlName=\"prefix\"\n >\n @if (prefix.placeholder) {\n <option\n value=\"\"\n disabled\n selected\n >\n {{ prefix.placeholder }}\n </option>\n }\n @for (\n item of prefix.options || [];\n track $index\n ) {\n <option [value]=\"item.code\">\n {{ item.name }}\n </option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n <div class=\"eventsForm__col\">\n @if (phoneInput) {\n <div class=\"form__group withIcon\">\n <input\n type=\"text\"\n class=\"form__control\"\n name=\"phone\"\n id=\"phone\"\n [placeholder]=\"\n phoneInput.placeholder\n \"\n (blur)=\"validateInput(phoneInput)\"\n (input)=\"\n inputChange($event, phoneInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"17\"\n height=\"17\"\n >\n <use href=\"#phone\"></use>\n </svg>\n </span>\n </div>\n @if (!phoneInput.valid()) {\n <span class=\"form-error\">{{\n phoneInput.error\n }}</span>\n }\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (emailInput) {\n <div class=\"form__group withIcon\">\n <input\n type=\"email\"\n class=\"form__control\"\n name=\"email\"\n [placeholder]=\"\n emailInput.placeholder\n \"\n (blur)=\"validateInput(emailInput)\"\n (input)=\"\n inputChange($event, emailInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"17\"\n height=\"17\"\n >\n <use href=\"#email\"></use>\n </svg>\n </span>\n </div>\n @if (!emailInput.valid()) {\n <span class=\"form-error\">{{\n emailInput.error\n }}</span>\n }\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (\n companyNameInput && companyNameInput.name\n ) {\n <div class=\"form__group withIcon\">\n <input\n type=\"text\"\n class=\"form__control\"\n name=\"companyname\"\n id=\"companyname\"\n [placeholder]=\"\n companyNameInput.placeholder\n \"\n [formControlName]=\"\n companyNameInput.name!\n \"\n (blur)=\"\n validateInput(companyNameInput)\n \"\n (input)=\"\n inputChange(\n $event,\n companyNameInput\n )\n \"\n />\n <span class=\"icon-right corp-color\">\n <div>\n <i class=\"icon-99\"></i>\n </div>\n </span>\n </div>\n @if (!companyNameInput.valid()) {\n <span class=\"form-error\">{{\n companyNameInput.error\n }}</span>\n }\n }\n </div>\n </div>\n </div>\n\n <div class=\"eventsForm__section\">\n <div class=\"form__group\">\n @if (dTitle) {\n <span\n class=\"eventsForm__section--title form__group\"\n >\n {{ dTitle }}\n </span>\n }\n </div>\n <div class=\"careersForm__row\">\n <div class=\"careersForm__col\">\n @if (neDropdown) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"neDropdown\"\n >\n <option value=\"\" disabled selected>\n {{ neDropdown.placeholder }}\n </option>\n @for (\n option of neDropdown.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (npInput) {\n <div class=\"form__group withIcon\">\n <input\n type=\"number\"\n class=\"form__control\"\n name=\"npInput\"\n id=\"npInput\"\n [placeholder]=\"npInput.placeholder\"\n [formControlName]=\"npInput.name!\"\n (blur)=\"validateInput(npInput)\"\n (input)=\"\n inputChange($event, npInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"18\"\n height=\"20\"\n >\n <use href=\"#user\"></use>\n </svg>\n </span>\n </div>\n @if (!npInput.valid()) {\n <span class=\"form-error\">{{\n npInput.error\n }}</span>\n }\n }\n </div>\n <div class=\"eventsForm__col\">\n @if (dateInput && dateInput.name) {\n <div class=\"form__group withIcon\">\n <input\n type=\"date\"\n class=\"form__control\"\n name=\"dateInput\"\n id=\"dateInput\"\n [placeholder]=\"\n dateInput.placeholder\n \"\n [formControlName]=\"dateInput.name!\"\n (blur)=\"validateInput(dateInput)\"\n (input)=\"\n inputChange($event, dateInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <div>\n <i class=\"icon-89\"></i>\n </div>\n </span>\n </div>\n @if (!dateInput.valid()) {\n <span class=\"form-error\">{{\n dateInput.error\n }}</span>\n }\n }\n </div>\n </div>\n\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (sHourInput && sHourInput.name) {\n <div class=\"form__group withIcon\">\n <input\n type=\"hour\"\n class=\"form__control\"\n name=\"sHourInput\"\n id=\"sHourInput\"\n [placeholder]=\"\n sHourInput.placeholder\n \"\n [formControlName]=\"sHourInput.name!\"\n (blur)=\"validateInput(sHourInput)\"\n (input)=\"\n inputChange($event, sHourInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <div>\n <i class=\"icon-100\"></i>\n </div>\n </span>\n </div>\n @if (!sHourInput.valid()) {\n <span class=\"form-error\">{{\n sHourInput.error\n }}</span>\n }\n }\n </div>\n <div class=\"eventsForm__col\">\n @if (fHourInput && fHourInput.name) {\n <div class=\"form__group withIcon\">\n <input\n type=\"hour\"\n class=\"form__control\"\n name=\"fHourInput\"\n id=\"fHourInput\"\n [placeholder]=\"\n fHourInput.placeholder\n \"\n [formControlName]=\"fHourInput.name!\"\n (blur)=\"validateInput(fHourInput)\"\n (input)=\"\n inputChange($event, fHourInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <div>\n <i class=\"icon-100\"></i>\n </div>\n </span>\n </div>\n @if (!fHourInput.valid()) {\n <span class=\"form-error\">{{\n fHourInput.error\n }}</span>\n }\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (infoTextarea) {\n <div class=\"form__group no-dot\">\n <textarea\n class=\"form__control\"\n [placeholder]=\"\n infoTextarea.placeholder\n \"\n [formControlName]=\"\n infoTextarea.name!\n \"\n ></textarea>\n </div>\n }\n </div>\n </div>\n </div>\n\n <div class=\"eventsForm__section\">\n <div class=\"form__group\">\n @if (howTitle) {\n <span\n class=\"eventsForm__section--title form__group\"\n >\n {{ howTitle }}\n </span>\n }\n </div>\n <div class=\"careersForm__row\">\n <div class=\"careersForm__col\">\n @if (othersDropdown) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"othersDropdown\"\n >\n <option value=\"\" disabled selected>\n {{ othersDropdown.placeholder }}\n </option>\n @for (\n option of othersDropdown.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (howTextarea) {\n <div class=\"form__group no-dot\">\n <textarea\n class=\"form__control\"\n [placeholder]=\"\n howTextarea.placeholder\n \"\n [formControlName]=\"\n howTextarea.name!\n \"\n ></textarea>\n </div>\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n <div class=\"block-checkbox\">\n @if (requiredLabel) {\n <span class=\"required-label\">{{\n requiredLabel\n }}</span>\n }\n @if (conditionsLink) {\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n checked\n class=\"checkbox\"\n formControlName=\"conditions\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use\n href=\"#checkbox-tick\"\n ></use>\n </svg>\n </span>\n <span [innerHTML]=\"conditionsLink\">\n </span>\n </label>\n }\n @if (others) {\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"others\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use\n href=\"#checkbox-tick\"\n ></use>\n </svg>\n </span>\n <span>{{ others }}</span>\n </label>\n }\n </div>\n </div>\n </div>\n\n <div class=\"btn__group\">\n @if (applyButton) {\n <button\n class=\"btn btn__primary--outline js-active-modal\"\n data-modal_name=\"thankyou\"\n [attr.aria-label]=\"applyButton.label\"\n [disabled]=\"!form.valid\"\n (click)=\"submitForm()\"\n >\n <span>{{ applyButton.label }}</span>\n </button>\n }\n @if (seeAllButton) {\n <a\n class=\"btn btn__primary--outline js-active-modal\"\n [attr.aria-label]=\"seeAllButton.label\"\n [attr.href]=\"seeAllButton.url\"\n >\n <span>{{ seeAllButton.label }}</span>\n </a>\n }\n </div>\n </div>\n </form>\n }\n </div>\n </div>\n</section>\n", styles: [".eventsForm{padding-block:3.5rem;padding-inline:4.5rem;padding-inline:auto}@media (min-width: 768px){.eventsForm{padding-block:3.9rem 4.664rem;padding-inline:10.7rem 10.689rem}}@media (min-width: 1280px){.eventsForm{padding-block:5.117rem 5.7rem;padding-inline:8.2rem 9.4rem}}@media (min-width: 1680px){.eventsForm{padding-block:10.1rem 7.4rem;padding-inline:14.7rem}}.eventsForm__title{margin-bottom:2rem;display:block;text-align:center;text-transform:uppercase;color:#1e1e1e;opacity:.8;padding-inline:2rem;font-size:1.8rem;line-height:1.213;letter-spacing:.18rem}@media (min-width: 768px){.eventsForm__title{font-size:2rem;line-height:1.213;letter-spacing:.2rem}}@media (min-width: 1024px){.eventsForm__title{margin-bottom:3rem;display:none;text-align:start}}.eventsForm__inner{display:flex;flex-direction:column;row-gap:3.125rem;margin-inline:auto}@media (min-width: 1024px){.eventsForm__inner{column-gap:4rem;flex-direction:row-reverse}}@media (min-width: 1280px){.eventsForm__inner{column-gap:8.269rem}}@media (min-width: 1680px){.eventsForm__inner{column-gap:16.689rem;max-width:189.933rem}}.eventsForm__graphic{width:46.72rem;max-width:85%;position:relative}@media (min-width: 1024px){.eventsForm__graphic{order:2;max-width:45%}}@media (min-width: 1680px){.eventsForm__graphic{width:90.5rem}}@media (max-width: 1023.98px){.eventsForm__graphic{margin-inline:auto}}.eventsForm__graphicInner{width:100%;aspect-ratio:467.2/550.83}@media (min-width: 1024px){.eventsForm__graphicInner{position:sticky;top:17rem;max-height:calc(100svh - 17rem)}}@media (min-width: 1680px){.eventsForm__graphicInner{aspect-ratio:905/1067}}.eventsForm__graphicInner--img{width:100%;height:100%;object-fit:cover}.eventsForm__section--title{text-transform:uppercase;padding-inline:2rem;color:var(--reservar-filter-bg);display:block;font-size:1.6rem;line-height:1.364625;letter-spacing:.16rem}@media (min-width: 768px){.eventsForm__section--title{font-size:1.8rem;line-height:1.3477777778;letter-spacing:.18rem}}@media (min-width: 1024px){.eventsForm__content{order:1;flex:1 1 0%}}.eventsForm__content .btn__group{margin-top:4rem;justify-content:center}.eventsForm__content .eventsForm__title{display:none;font-size:1.4rem;line-height:1.7;letter-spacing:.06rem}@media (min-width: 768px){.eventsForm__content .eventsForm__title{font-size:1.6rem;line-height:1.7;letter-spacing:.072rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__title{font-size:3rem;line-height:1.02;letter-spacing:.09rem}}@media (min-width: 1024px){.eventsForm__content .eventsForm__title{display:block;text-align:start}}.eventsForm__content .eventsForm__paragraph{color:var(--cl-text-dark);min-height:7.6rem;text-align:start;margin-bottom:3rem;padding-inline:2rem;font-size:1.6rem;line-height:1.4875;letter-spacing:.048rem}@media (min-width: 768px){.eventsForm__content .eventsForm__paragraph{font-size:1.8rem;line-height:1.5111111111;letter-spacing:.054rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__paragraph{text-align:start;font-size:2rem;line-height:1.53;letter-spacing:.06rem}}.eventsForm__content .eventsForm__row{display:flex;flex-wrap:wrap;margin:0 -.75rem}@media (min-width: 768px){.eventsForm__content .eventsForm__row{margin:0 -1.5rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__row{margin:0 -2.1rem}}.eventsForm__content .eventsForm__row .btn__link:not(:hover):after{background:var(--bg-primary)}.eventsForm__content .eventsForm__col{flex:1 0 100%;width:100%;max-width:100%;padding-inline:.75rem}@media (min-width: 768px){.eventsForm__content .eventsForm__col{flex:1 0 0%;padding-inline:1.5rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__col{padding-inline:2.1rem}}.eventsForm__content .eventsForm__col .block-checkbox{display:flex;flex-direction:column;row-gap:1rem}.eventsForm__placeholder span{color:#1e1e1e;opacity:.6}.eventsForm .form-error{color:var(--grey);z-index:1}.eventsForm .icon-right i{font-size:2rem}.eventsForm .file-name{text-overflow:ellipsis;color:var(--grey);font-size:1.4rem;line-height:1.9428571429;letter-spacing:.042rem}@media (min-width: 768px){.eventsForm .file-name{font-size:1.6rem;line-height:1.51625;letter-spacing:.16rem}}input[type=file]{background-color:#fff;line-height:3.2}input[type=file]::-webkit-file-upload-button{visibility:hidden}input[type=file]:before{content:attr(placeholder);background:#fff;color:#1e1e1e;opacity:.6;display:inline-block;cursor:pointer;width:100%;overflow-x:hidden}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}:host ::ng-deep .eventsForm__title.corp-color{margin-bottom:2rem;display:block;text-align:center;text-transform:uppercase;color:#1e1e1e;opacity:.8;padding-inline:2rem;font-size:1.8rem;line-height:1.213;letter-spacing:.18rem}@media (min-width: 768px){:host ::ng-deep .eventsForm__title.corp-color{font-size:2rem;line-height:1.213;letter-spacing:.2rem}}@media (min-width: 1024px){:host ::ng-deep .eventsForm__title.corp-color{margin-bottom:3rem;display:none;text-align:start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3180
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroEventsFormComponent, deps: [{ token: i1$3.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
3181
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroEventsFormComponent, isStandalone: true, selector: "lib-puro-events-form", inputs: { title: "title", description: "description", ciTitle: "ciTitle", dTitle: "dTitle", howTitle: "howTitle", neDropdown: "neDropdown", othersDropdown: "othersDropdown", nameInput: "nameInput", surnameInput: "surnameInput", prefix: "prefix", phoneInput: "phoneInput", emailInput: "emailInput", companyNameInput: "companyNameInput", howTextarea: "howTextarea", infoTextarea: "infoTextarea", npInput: "npInput", dateInput: "dateInput", sHourInput: "sHourInput", fHourInput: "fHourInput", others: "others", requiredLabel: "requiredLabel", img: "img", conditionsLink: "conditionsLink", applyButton: "applyButton", tags: "tags", textColors: "textColors" }, outputs: { submitFormValue: "submitFormValue" }, ngImport: i0, template: "<section class=\"eventsForm\">\n <div class=\"eventsForm__inner\">\n\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"eventsForm__title corp-color\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n\n <!-- Imagen -->\n <div class=\"eventsForm__graphic\">\n <div class=\"eventsForm__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"467\"\n height=\"551\"\n class=\"eventsForm__graphicInner--img\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n\n <div class=\"eventsForm__content\">\n\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"eventsForm__title corp-color\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n\n @if (description) {\n <div class=\"eventsForm__paragraph\">{{ description }}</div>\n }\n\n @if (formReady$()) {\n\n <form [formGroup]=\"form\" class=\"form\" (ngSubmit)=\"submitForm()\" scriptLoader [dataLoaded]=\"true\">\n\n <!-- SECTION 1 -->\n <div class=\"eventsForm__section\">\n @if (ciTitle) {\n <span class=\"eventsForm__section--title\">{{ ciTitle }}</span>\n }\n\n <!-- Nombre + Apellidos -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (nameInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control\"\n [placeholder]=\"nameInput.placeholder\"\n [formControlName]=\"nameInput.name!\"\n (blur)=\"validateInput(nameInput)\"\n (input)=\"inputChange($event, nameInput)\"\n />\n <span class=\"icon-right corp-color\">\n <svg width=\"18\" height=\"20\"><use href=\"#user\"></use></svg>\n </span>\n </div>\n @if (!nameInput.valid()) {\n <span class=\"form-error\">{{ nameInput.error }}</span>\n }\n }\n </div>\n\n <div class=\"eventsForm__col\">\n @if (surnameInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control\"\n [placeholder]=\"surnameInput.placeholder\"\n [formControlName]=\"surnameInput.name!\"\n (blur)=\"validateInput(surnameInput)\"\n (input)=\"inputChange($event, surnameInput)\"\n />\n <span class=\"icon-right corp-color\">\n <svg width=\"18\" height=\"20\"><use href=\"#user\"></use></svg>\n </span>\n </div>\n @if (!surnameInput.valid()) {\n <span class=\"form-error\">{{ surnameInput.error }}</span>\n }\n }\n </div>\n </div>\n\n <!-- Prefijo + Tel\u00E9fono -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (prefix) {\n <div class=\"form__group withIcon\">\n <select class=\"form__control\" formControlName=\"prefix\">\n @if (prefix.placeholder) {\n <option value=\"\">\n {{ prefix.placeholder }}\n </option>\n }\n @for (item of prefix.options || []; track $index) {\n <option [value]=\"item.code\">{{ item.name }}</option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg width=\"15\" height=\"8\"><use href=\"#select-arrow\"></use></svg>\n </span>\n </div>\n }\n </div>\n\n <div class=\"eventsForm__col\">\n @if (phoneInput) {\n <div class=\"form__group withIcon\">\n <input type=\"tel\"\n class=\"form__control\"\n [placeholder]=\"phoneInput.placeholder\"\n formControlName=\"phone\"\n (blur)=\"validateInput(phoneInput)\"\n (input)=\"inputChange($event, phoneInput)\"\n />\n <span class=\"icon-right corp-color\">\n <svg width=\"17\" height=\"17\"><use href=\"#phone\"></use></svg>\n </span>\n </div>\n @if (!phoneInput.valid()) {\n <span class=\"form-error\">{{ phoneInput.error }}</span>\n }\n }\n </div>\n </div>\n\n <!-- Email -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (emailInput) {\n <div class=\"form__group withIcon\">\n <input type=\"email\"\n class=\"form__control\"\n [placeholder]=\"emailInput.placeholder\"\n formControlName=\"email\"\n (blur)=\"validateInput(emailInput)\"\n (input)=\"inputChange($event, emailInput)\"\n />\n <span class=\"icon-right corp-color\">\n <svg width=\"17\" height=\"17\"><use href=\"#email\"></use></svg>\n </span>\n </div>\n @if (!emailInput.valid()) {\n <span class=\"form-error\">{{ emailInput.error }}</span>\n }\n }\n </div>\n </div>\n\n <!-- Empresa -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (companyNameInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control\"\n [placeholder]=\"companyNameInput.placeholder\"\n [formControlName]=\"companyNameInput.name!\"\n (blur)=\"validateInput(companyNameInput)\"\n (input)=\"inputChange($event, companyNameInput)\"\n />\n <span class=\"icon-right corp-color\">\n <i class=\"icon-99\"></i>\n </span>\n </div>\n @if (!companyNameInput.valid()) {\n <span class=\"form-error\">{{ companyNameInput.error }}</span>\n }\n }\n </div>\n </div>\n\n </div>\n\n <!-- SECTION 2 -->\n <div class=\"eventsForm__section\">\n @if (dTitle) {\n <span class=\"eventsForm__section--title\">{{ dTitle }}</span>\n }\n\n <!-- Dropdown N\u00BA personas -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (neDropdown) {\n <div class=\"form__group withIcon\">\n <select class=\"form__control\" formControlName=\"neDropdown\">\n <option value=\"\">{{ neDropdown.placeholder }}</option>\n @for (option of neDropdown.options; track $index) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg width=\"15\" height=\"8\"><use href=\"#select-arrow\"></use></svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <!-- N\u00BA personas + Fecha -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (npInput) {\n <div class=\"form__group withIcon\">\n <input type=\"number\"\n class=\"form__control\"\n [placeholder]=\"npInput.placeholder\"\n [formControlName]=\"npInput.name!\"\n (blur)=\"validateInput(npInput)\"\n (input)=\"inputChange($event, npInput)\"\n />\n <span class=\"icon-right corp-color\">\n <svg width=\"18\" height=\"20\"><use href=\"#user\"></use></svg>\n </span>\n </div>\n @if (!npInput.valid()) {\n <span class=\"form-error\">{{ npInput.error }}</span>\n }\n }\n </div>\n\n <div class=\"eventsForm__col\">\n @if (dateInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control\"\n [placeholder]=\"dateInput.placeholder\"\n [formControlName]=\"dateInput.name!\"\n />\n <span class=\"icon-right corp-color\">\n <i class=\"icon-89\"></i>\n </span>\n </div>\n @if (!dateInput.valid()) {\n <span class=\"form-error\">{{ dateInput.error }}</span>\n }\n }\n </div>\n </div>\n\n <!-- Horas -->\n <div class=\"eventsForm__row\">\n\n <!-- Start Hour -->\n <div class=\"eventsForm__col\" style=\"position: relative\">\n @if (sHourInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control timepicker-trigger\"\n readonly\n autocomplete=\"off\"\n [placeholder]=\"sHourInput.placeholder\"\n [formControlName]=\"sHourInput.name!\"\n (click)=\"openTimepicker('sHourInput', $event)\"\n />\n <span class=\"icon-right corp-color timepicker-trigger\"\n (click)=\"openTimepicker('sHourInput', $event)\">\n <i class=\"icon-100\"></i>\n </span>\n </div>\n\n @if (!sHourInput.valid()) {\n <span class=\"form-error\">{{ sHourInput.error }}</span>\n }\n\n <ul class=\"puro-timepicker\"\n *ngIf=\"activeTimepicker === 'sHourInput'\">\n <li *ngFor=\"let h of hours\"\n (click)=\"selectHour('sHourInput', h)\">\n {{ h }}\n </li>\n </ul>\n }\n </div>\n\n <!-- End Hour -->\n <div class=\"eventsForm__col\" style=\"position: relative\">\n @if (fHourInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control timepicker-trigger\"\n readonly\n autocomplete=\"off\"\n [placeholder]=\"fHourInput.placeholder\"\n [formControlName]=\"fHourInput.name!\"\n (click)=\"openTimepicker('fHourInput', $event)\"\n />\n <span class=\"icon-right corp-color timepicker-trigger\"\n (click)=\"openTimepicker('fHourInput', $event)\">\n <i class=\"icon-100\"></i>\n </span>\n </div>\n\n @if (!fHourInput.valid()) {\n <span class=\"form-error\">{{ fHourInput.error }}</span>\n }\n\n <ul class=\"puro-timepicker\"\n *ngIf=\"activeTimepicker === 'fHourInput'\">\n <li *ngFor=\"let h of hours\"\n (click)=\"selectHour('fHourInput', h)\">\n {{ h }}\n </li>\n </ul>\n }\n </div>\n </div>\n\n <!-- Mensaje info -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (infoTextarea) {\n <div class=\"form__group no-dot\">\n <textarea class=\"form__control\"\n [placeholder]=\"infoTextarea.placeholder\"\n [formControlName]=\"infoTextarea.name!\">\n </textarea>\n </div>\n }\n </div>\n </div>\n\n </div>\n\n <!-- SECTION 3 -->\n <div class=\"eventsForm__section\">\n @if (howTitle) {\n <span class=\"eventsForm__section--title\">{{ howTitle }}</span>\n }\n\n <!-- Dropdown -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (othersDropdown) {\n <div class=\"form__group withIcon\">\n <select class=\"form__control\"\n formControlName=\"othersDropdown\">\n <option value=\"\">\n {{ othersDropdown.placeholder }}\n </option>\n @for (option of othersDropdown.options; track $index) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg width=\"15\" height=\"8\"><use href=\"#select-arrow\"></use></svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <!-- Textarea -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (howTextarea) {\n <div class=\"form__group no-dot\">\n <textarea class=\"form__control\"\n [placeholder]=\"howTextarea.placeholder\"\n [formControlName]=\"howTextarea.name!\">\n </textarea>\n </div>\n }\n </div>\n </div>\n\n <!-- Checkboxes -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n <div class=\"block-checkbox\">\n\n @if (requiredLabel) {\n <span class=\"required-label\">{{ requiredLabel }}</span>\n }\n\n @if (conditionsLink) {\n <label class=\"form__checkbox\">\n <input type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"conditions\"\n />\n <span class=\"box\">\n <svg width=\"9\" height=\"7\"><use href=\"#checkbox-tick\"></use></svg>\n </span>\n <span [innerHTML]=\"conditionsLink\"></span>\n </label>\n }\n\n @if (others) {\n <label class=\"form__checkbox\">\n <input type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"others\"\n />\n <span class=\"box\">\n <svg width=\"9\" height=\"7\"><use href=\"#checkbox-tick\"></use></svg>\n </span>\n <span>{{ others }}</span>\n </label>\n }\n\n </div>\n </div>\n </div>\n\n <!-- Bot\u00F3n -->\n <div class=\"btn__group\">\n @if (applyButton) {\n <button\n type=\"submit\"\n class=\"btn btn__primary--outline btn__events-form\"\n [attr.aria-label]=\"applyButton.label\"\n [disabled]=\"form.invalid\"\n >\n <span>{{ applyButton.label }}</span>\n </button>\n }\n </div>\n\n </div>\n </form>\n\n }\n </div>\n\n </div>\n</section>\n", styles: [".eventsForm{padding-block:3.5rem;padding-inline:4.5rem}@media (min-width: 768px){.eventsForm{padding-block:3.9rem 4.664rem;padding-inline:10.7rem 10.689rem}}@media (min-width: 1280px){.eventsForm{padding-block:5.117rem 5.7rem;padding-inline:8.2rem 9.4rem}}@media (min-width: 1680px){.eventsForm{padding-block:10.1rem 7.4rem;padding-inline:14.7rem}}.eventsForm__title{margin-bottom:2rem;display:block;text-align:center;text-transform:uppercase;color:#1e1e1e;opacity:.8;padding-inline:2rem;font-size:1.8rem;line-height:1.213;letter-spacing:.18rem}@media (min-width: 768px){.eventsForm__title{font-size:2rem;line-height:1.213;letter-spacing:.2rem}}@media (min-width: 1024px){.eventsForm__title{margin-bottom:3rem;display:none;text-align:start}}.eventsForm__inner{display:flex;flex-direction:column;row-gap:3.125rem;margin-inline:auto}@media (min-width: 1024px){.eventsForm__inner{column-gap:4rem;flex-direction:row-reverse}}@media (min-width: 1280px){.eventsForm__inner{column-gap:8.269rem}}@media (min-width: 1680px){.eventsForm__inner{column-gap:16.689rem;max-width:189.933rem}}.eventsForm__graphic{width:46.72rem;max-width:85%;position:relative}@media (min-width: 1024px){.eventsForm__graphic{order:2;max-width:45%}}@media (min-width: 1680px){.eventsForm__graphic{width:90.5rem}}@media (max-width: 1023.98px){.eventsForm__graphic{margin-inline:auto}}.eventsForm__graphicInner{width:100%;aspect-ratio:467.2/550.83}@media (min-width: 1024px){.eventsForm__graphicInner{position:sticky;top:17rem;max-height:calc(100svh - 17rem)}}@media (min-width: 1680px){.eventsForm__graphicInner{aspect-ratio:905/1067}}.eventsForm__graphicInner--img{width:100%;height:100%;object-fit:cover}.eventsForm__section--title{text-transform:uppercase;padding-inline:2rem;color:var(--reservar-filter-bg);display:block;font-size:1.6rem;line-height:1.364625;letter-spacing:.16rem}@media (min-width: 768px){.eventsForm__section--title{font-size:1.8rem;line-height:1.3477777778;letter-spacing:.18rem}}@media (min-width: 1024px){.eventsForm__content{order:1;flex:1 1 0%}}.eventsForm__content .btn__group{margin-top:4rem;justify-content:center}.eventsForm__content .eventsForm__title{display:none;font-size:1.4rem;line-height:1.7;letter-spacing:.06rem}@media (min-width: 768px){.eventsForm__content .eventsForm__title{font-size:1.6rem;line-height:1.7;letter-spacing:.072rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__title{font-size:3rem;line-height:1.02;letter-spacing:.09rem}}@media (min-width: 1024px){.eventsForm__content .eventsForm__title{display:block;text-align:start}}.eventsForm__content .eventsForm__paragraph{color:var(--cl-text-dark);min-height:7.6rem;text-align:start;margin-bottom:3rem;padding-inline:2rem;font-size:1.6rem;line-height:1.4875;letter-spacing:.048rem}@media (min-width: 768px){.eventsForm__content .eventsForm__paragraph{font-size:1.8rem;line-height:1.5111111111;letter-spacing:.054rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__paragraph{text-align:start;font-size:2rem;line-height:1.53;letter-spacing:.06rem}}.eventsForm__content .eventsForm__row{display:flex;flex-wrap:wrap;margin:0 -.75rem}@media (min-width: 768px){.eventsForm__content .eventsForm__row{margin:0 -1.5rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__row{margin:0 -2.1rem}}.eventsForm__content .eventsForm__row .btn__link:not(:hover):after{background:var(--bg-primary)}.eventsForm__content .eventsForm__col{flex:1 0 100%;width:100%;max-width:100%;padding-inline:.75rem}@media (min-width: 768px){.eventsForm__content .eventsForm__col{flex:1 0 0%;padding-inline:1.5rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__col{padding-inline:2.1rem}}.eventsForm__content .eventsForm__col .block-checkbox{display:flex;flex-direction:column;row-gap:1rem}.eventsForm__placeholder span{color:#1e1e1e;opacity:.6}.eventsForm .form-error{color:var(--grey);z-index:1}.eventsForm .icon-right i{font-size:2rem}.eventsForm .file-name{text-overflow:ellipsis;color:var(--grey);font-size:1.4rem;line-height:1.9428571429;letter-spacing:.042rem}@media (min-width: 768px){.eventsForm .file-name{font-size:1.6rem;line-height:1.51625;letter-spacing:.16rem}}input[type=file]{background-color:#fff;line-height:3.2}input[type=file]::-webkit-file-upload-button{visibility:hidden}input[type=file]:before{content:attr(placeholder);background:#fff;color:#1e1e1e;opacity:.6;display:inline-block;cursor:pointer;width:100%;overflow-x:hidden}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}:host ::ng-deep .eventsForm__title.corp-color{margin-bottom:2rem;display:block;text-align:center;text-transform:uppercase;color:#1e1e1e;opacity:.8;padding-inline:2rem;font-size:1.8rem;line-height:1.213;letter-spacing:.18rem}@media (min-width: 768px){:host ::ng-deep .eventsForm__title.corp-color{font-size:2rem;line-height:1.213;letter-spacing:.2rem}}@media (min-width: 1024px){:host ::ng-deep .eventsForm__title.corp-color{margin-bottom:3rem;display:none;text-align:start}}input[type=time]::-webkit-calendar-picker-indicator{opacity:0;display:none}.puro-timepicker{position:absolute;width:86%;max-height:20rem;overflow-y:auto;background:#fff;border:1px solid #ddd;border-radius:.4rem;z-index:9999;padding:0;margin:0;list-style:none;box-shadow:0 4px 12px #0000001a}.puro-timepicker li{padding:1rem 1.4rem;font-size:1.4rem;cursor:pointer;border-bottom:1px solid #f2f2f2}.puro-timepicker li:last-child{border-bottom:none}.puro-timepicker li:hover{background:#f5f5f5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "directive", type: PuroScriptDirective, selector: "[scriptLoader]", inputs: ["dataLoaded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3069
3182
  }
3070
3183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroEventsFormComponent, decorators: [{
3071
3184
  type: Component,
@@ -3074,9 +3187,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3074
3187
  FormsModule,
3075
3188
  ReactiveFormsModule,
3076
3189
  PuroDynamicHeadingComponent,
3077
- NgOptimizedImage
3078
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"eventsForm\">\n <div class=\"eventsForm__inner\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"eventsForm__title corp-color\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"eventsForm__graphic\">\n <div class=\"eventsForm__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"467\"\n height=\"551\"\n class=\"eventsForm__graphicInner--img\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n <div class=\"eventsForm__content\">\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"eventsForm__title corp-color\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n @if (description) {\n <div class=\"eventsForm__paragraph\">\n {{ description }}\n </div>\n }\n @if (formReady$()) {\n <form [formGroup]=\"form\" class=\"form\" (ngSubmit)=\"submitForm()\">\n <div class=\"eventsForm__section\">\n <div class=\"form__group\">\n @if (ciTitle) {\n <span\n class=\"eventsForm__section--title form__group\"\n >\n {{ ciTitle }}\n </span>\n }\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (nameInput) {\n <div class=\"form__group withIcon\">\n <input\n type=\"text\"\n class=\"form__control\"\n name=\"name\"\n id=\"name\"\n [placeholder]=\"\n nameInput.placeholder\n \"\n [formControlName]=\"nameInput.name!\"\n (blur)=\"validateInput(nameInput)\"\n (input)=\"\n inputChange($event, nameInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"18\"\n height=\"20\"\n >\n <use href=\"#user\"></use>\n </svg>\n </span>\n </div>\n @if (!nameInput.valid()) {\n <span class=\"form-error\">{{\n nameInput.error\n }}</span>\n }\n }\n </div>\n <div class=\"eventsForm__col\">\n @if (surnameInput && surnameInput.name) {\n <div class=\"form__group withIcon\">\n <input\n type=\"text\"\n class=\"form__control\"\n name=\"surname\"\n id=\"surname\"\n [placeholder]=\"\n surnameInput.placeholder\n \"\n [formControlName]=\"\n surnameInput.name!\n \"\n (blur)=\"validateInput(surnameInput)\"\n (input)=\"\n inputChange(\n $event,\n surnameInput\n )\n \"\n />\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"18\"\n height=\"20\"\n >\n <use href=\"#user\"></use>\n </svg>\n </span>\n </div>\n @if (!surnameInput.valid()) {\n <span class=\"form-error\">{{\n surnameInput.error\n }}</span>\n }\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (prefix) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n name=\"prefix\"\n formControlName=\"prefix\"\n >\n @if (prefix.placeholder) {\n <option\n value=\"\"\n disabled\n selected\n >\n {{ prefix.placeholder }}\n </option>\n }\n @for (\n item of prefix.options || [];\n track $index\n ) {\n <option [value]=\"item.code\">\n {{ item.name }}\n </option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n <div class=\"eventsForm__col\">\n @if (phoneInput) {\n <div class=\"form__group withIcon\">\n <input\n type=\"text\"\n class=\"form__control\"\n name=\"phone\"\n id=\"phone\"\n [placeholder]=\"\n phoneInput.placeholder\n \"\n (blur)=\"validateInput(phoneInput)\"\n (input)=\"\n inputChange($event, phoneInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"17\"\n height=\"17\"\n >\n <use href=\"#phone\"></use>\n </svg>\n </span>\n </div>\n @if (!phoneInput.valid()) {\n <span class=\"form-error\">{{\n phoneInput.error\n }}</span>\n }\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (emailInput) {\n <div class=\"form__group withIcon\">\n <input\n type=\"email\"\n class=\"form__control\"\n name=\"email\"\n [placeholder]=\"\n emailInput.placeholder\n \"\n (blur)=\"validateInput(emailInput)\"\n (input)=\"\n inputChange($event, emailInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"17\"\n height=\"17\"\n >\n <use href=\"#email\"></use>\n </svg>\n </span>\n </div>\n @if (!emailInput.valid()) {\n <span class=\"form-error\">{{\n emailInput.error\n }}</span>\n }\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (\n companyNameInput && companyNameInput.name\n ) {\n <div class=\"form__group withIcon\">\n <input\n type=\"text\"\n class=\"form__control\"\n name=\"companyname\"\n id=\"companyname\"\n [placeholder]=\"\n companyNameInput.placeholder\n \"\n [formControlName]=\"\n companyNameInput.name!\n \"\n (blur)=\"\n validateInput(companyNameInput)\n \"\n (input)=\"\n inputChange(\n $event,\n companyNameInput\n )\n \"\n />\n <span class=\"icon-right corp-color\">\n <div>\n <i class=\"icon-99\"></i>\n </div>\n </span>\n </div>\n @if (!companyNameInput.valid()) {\n <span class=\"form-error\">{{\n companyNameInput.error\n }}</span>\n }\n }\n </div>\n </div>\n </div>\n\n <div class=\"eventsForm__section\">\n <div class=\"form__group\">\n @if (dTitle) {\n <span\n class=\"eventsForm__section--title form__group\"\n >\n {{ dTitle }}\n </span>\n }\n </div>\n <div class=\"careersForm__row\">\n <div class=\"careersForm__col\">\n @if (neDropdown) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"neDropdown\"\n >\n <option value=\"\" disabled selected>\n {{ neDropdown.placeholder }}\n </option>\n @for (\n option of neDropdown.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (npInput) {\n <div class=\"form__group withIcon\">\n <input\n type=\"number\"\n class=\"form__control\"\n name=\"npInput\"\n id=\"npInput\"\n [placeholder]=\"npInput.placeholder\"\n [formControlName]=\"npInput.name!\"\n (blur)=\"validateInput(npInput)\"\n (input)=\"\n inputChange($event, npInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"18\"\n height=\"20\"\n >\n <use href=\"#user\"></use>\n </svg>\n </span>\n </div>\n @if (!npInput.valid()) {\n <span class=\"form-error\">{{\n npInput.error\n }}</span>\n }\n }\n </div>\n <div class=\"eventsForm__col\">\n @if (dateInput && dateInput.name) {\n <div class=\"form__group withIcon\">\n <input\n type=\"date\"\n class=\"form__control\"\n name=\"dateInput\"\n id=\"dateInput\"\n [placeholder]=\"\n dateInput.placeholder\n \"\n [formControlName]=\"dateInput.name!\"\n (blur)=\"validateInput(dateInput)\"\n (input)=\"\n inputChange($event, dateInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <div>\n <i class=\"icon-89\"></i>\n </div>\n </span>\n </div>\n @if (!dateInput.valid()) {\n <span class=\"form-error\">{{\n dateInput.error\n }}</span>\n }\n }\n </div>\n </div>\n\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (sHourInput && sHourInput.name) {\n <div class=\"form__group withIcon\">\n <input\n type=\"hour\"\n class=\"form__control\"\n name=\"sHourInput\"\n id=\"sHourInput\"\n [placeholder]=\"\n sHourInput.placeholder\n \"\n [formControlName]=\"sHourInput.name!\"\n (blur)=\"validateInput(sHourInput)\"\n (input)=\"\n inputChange($event, sHourInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <div>\n <i class=\"icon-100\"></i>\n </div>\n </span>\n </div>\n @if (!sHourInput.valid()) {\n <span class=\"form-error\">{{\n sHourInput.error\n }}</span>\n }\n }\n </div>\n <div class=\"eventsForm__col\">\n @if (fHourInput && fHourInput.name) {\n <div class=\"form__group withIcon\">\n <input\n type=\"hour\"\n class=\"form__control\"\n name=\"fHourInput\"\n id=\"fHourInput\"\n [placeholder]=\"\n fHourInput.placeholder\n \"\n [formControlName]=\"fHourInput.name!\"\n (blur)=\"validateInput(fHourInput)\"\n (input)=\"\n inputChange($event, fHourInput)\n \"\n />\n <span class=\"icon-right corp-color\">\n <div>\n <i class=\"icon-100\"></i>\n </div>\n </span>\n </div>\n @if (!fHourInput.valid()) {\n <span class=\"form-error\">{{\n fHourInput.error\n }}</span>\n }\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (infoTextarea) {\n <div class=\"form__group no-dot\">\n <textarea\n class=\"form__control\"\n [placeholder]=\"\n infoTextarea.placeholder\n \"\n [formControlName]=\"\n infoTextarea.name!\n \"\n ></textarea>\n </div>\n }\n </div>\n </div>\n </div>\n\n <div class=\"eventsForm__section\">\n <div class=\"form__group\">\n @if (howTitle) {\n <span\n class=\"eventsForm__section--title form__group\"\n >\n {{ howTitle }}\n </span>\n }\n </div>\n <div class=\"careersForm__row\">\n <div class=\"careersForm__col\">\n @if (othersDropdown) {\n <div class=\"form__group withIcon\">\n <select\n class=\"form__control\"\n formControlName=\"othersDropdown\"\n >\n <option value=\"\" disabled selected>\n {{ othersDropdown.placeholder }}\n </option>\n @for (\n option of othersDropdown.options;\n track $index\n ) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"15\"\n height=\"8\"\n >\n <use href=\"#select-arrow\"></use>\n </svg>\n </span>\n </div>\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (howTextarea) {\n <div class=\"form__group no-dot\">\n <textarea\n class=\"form__control\"\n [placeholder]=\"\n howTextarea.placeholder\n \"\n [formControlName]=\"\n howTextarea.name!\n \"\n ></textarea>\n </div>\n }\n </div>\n </div>\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n <div class=\"block-checkbox\">\n @if (requiredLabel) {\n <span class=\"required-label\">{{\n requiredLabel\n }}</span>\n }\n @if (conditionsLink) {\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n checked\n class=\"checkbox\"\n formControlName=\"conditions\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use\n href=\"#checkbox-tick\"\n ></use>\n </svg>\n </span>\n <span [innerHTML]=\"conditionsLink\">\n </span>\n </label>\n }\n @if (others) {\n <label class=\"form__checkbox\">\n <input\n type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"others\"\n />\n <span class=\"box\">\n <svg\n aria-hidden=\"true\"\n focusable=\"false\"\n width=\"9\"\n height=\"7\"\n >\n <use\n href=\"#checkbox-tick\"\n ></use>\n </svg>\n </span>\n <span>{{ others }}</span>\n </label>\n }\n </div>\n </div>\n </div>\n\n <div class=\"btn__group\">\n @if (applyButton) {\n <button\n class=\"btn btn__primary--outline js-active-modal\"\n data-modal_name=\"thankyou\"\n [attr.aria-label]=\"applyButton.label\"\n [disabled]=\"!form.valid\"\n (click)=\"submitForm()\"\n >\n <span>{{ applyButton.label }}</span>\n </button>\n }\n @if (seeAllButton) {\n <a\n class=\"btn btn__primary--outline js-active-modal\"\n [attr.aria-label]=\"seeAllButton.label\"\n [attr.href]=\"seeAllButton.url\"\n >\n <span>{{ seeAllButton.label }}</span>\n </a>\n }\n </div>\n </div>\n </form>\n }\n </div>\n </div>\n</section>\n", styles: [".eventsForm{padding-block:3.5rem;padding-inline:4.5rem;padding-inline:auto}@media (min-width: 768px){.eventsForm{padding-block:3.9rem 4.664rem;padding-inline:10.7rem 10.689rem}}@media (min-width: 1280px){.eventsForm{padding-block:5.117rem 5.7rem;padding-inline:8.2rem 9.4rem}}@media (min-width: 1680px){.eventsForm{padding-block:10.1rem 7.4rem;padding-inline:14.7rem}}.eventsForm__title{margin-bottom:2rem;display:block;text-align:center;text-transform:uppercase;color:#1e1e1e;opacity:.8;padding-inline:2rem;font-size:1.8rem;line-height:1.213;letter-spacing:.18rem}@media (min-width: 768px){.eventsForm__title{font-size:2rem;line-height:1.213;letter-spacing:.2rem}}@media (min-width: 1024px){.eventsForm__title{margin-bottom:3rem;display:none;text-align:start}}.eventsForm__inner{display:flex;flex-direction:column;row-gap:3.125rem;margin-inline:auto}@media (min-width: 1024px){.eventsForm__inner{column-gap:4rem;flex-direction:row-reverse}}@media (min-width: 1280px){.eventsForm__inner{column-gap:8.269rem}}@media (min-width: 1680px){.eventsForm__inner{column-gap:16.689rem;max-width:189.933rem}}.eventsForm__graphic{width:46.72rem;max-width:85%;position:relative}@media (min-width: 1024px){.eventsForm__graphic{order:2;max-width:45%}}@media (min-width: 1680px){.eventsForm__graphic{width:90.5rem}}@media (max-width: 1023.98px){.eventsForm__graphic{margin-inline:auto}}.eventsForm__graphicInner{width:100%;aspect-ratio:467.2/550.83}@media (min-width: 1024px){.eventsForm__graphicInner{position:sticky;top:17rem;max-height:calc(100svh - 17rem)}}@media (min-width: 1680px){.eventsForm__graphicInner{aspect-ratio:905/1067}}.eventsForm__graphicInner--img{width:100%;height:100%;object-fit:cover}.eventsForm__section--title{text-transform:uppercase;padding-inline:2rem;color:var(--reservar-filter-bg);display:block;font-size:1.6rem;line-height:1.364625;letter-spacing:.16rem}@media (min-width: 768px){.eventsForm__section--title{font-size:1.8rem;line-height:1.3477777778;letter-spacing:.18rem}}@media (min-width: 1024px){.eventsForm__content{order:1;flex:1 1 0%}}.eventsForm__content .btn__group{margin-top:4rem;justify-content:center}.eventsForm__content .eventsForm__title{display:none;font-size:1.4rem;line-height:1.7;letter-spacing:.06rem}@media (min-width: 768px){.eventsForm__content .eventsForm__title{font-size:1.6rem;line-height:1.7;letter-spacing:.072rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__title{font-size:3rem;line-height:1.02;letter-spacing:.09rem}}@media (min-width: 1024px){.eventsForm__content .eventsForm__title{display:block;text-align:start}}.eventsForm__content .eventsForm__paragraph{color:var(--cl-text-dark);min-height:7.6rem;text-align:start;margin-bottom:3rem;padding-inline:2rem;font-size:1.6rem;line-height:1.4875;letter-spacing:.048rem}@media (min-width: 768px){.eventsForm__content .eventsForm__paragraph{font-size:1.8rem;line-height:1.5111111111;letter-spacing:.054rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__paragraph{text-align:start;font-size:2rem;line-height:1.53;letter-spacing:.06rem}}.eventsForm__content .eventsForm__row{display:flex;flex-wrap:wrap;margin:0 -.75rem}@media (min-width: 768px){.eventsForm__content .eventsForm__row{margin:0 -1.5rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__row{margin:0 -2.1rem}}.eventsForm__content .eventsForm__row .btn__link:not(:hover):after{background:var(--bg-primary)}.eventsForm__content .eventsForm__col{flex:1 0 100%;width:100%;max-width:100%;padding-inline:.75rem}@media (min-width: 768px){.eventsForm__content .eventsForm__col{flex:1 0 0%;padding-inline:1.5rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__col{padding-inline:2.1rem}}.eventsForm__content .eventsForm__col .block-checkbox{display:flex;flex-direction:column;row-gap:1rem}.eventsForm__placeholder span{color:#1e1e1e;opacity:.6}.eventsForm .form-error{color:var(--grey);z-index:1}.eventsForm .icon-right i{font-size:2rem}.eventsForm .file-name{text-overflow:ellipsis;color:var(--grey);font-size:1.4rem;line-height:1.9428571429;letter-spacing:.042rem}@media (min-width: 768px){.eventsForm .file-name{font-size:1.6rem;line-height:1.51625;letter-spacing:.16rem}}input[type=file]{background-color:#fff;line-height:3.2}input[type=file]::-webkit-file-upload-button{visibility:hidden}input[type=file]:before{content:attr(placeholder);background:#fff;color:#1e1e1e;opacity:.6;display:inline-block;cursor:pointer;width:100%;overflow-x:hidden}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}:host ::ng-deep .eventsForm__title.corp-color{margin-bottom:2rem;display:block;text-align:center;text-transform:uppercase;color:#1e1e1e;opacity:.8;padding-inline:2rem;font-size:1.8rem;line-height:1.213;letter-spacing:.18rem}@media (min-width: 768px){:host ::ng-deep .eventsForm__title.corp-color{font-size:2rem;line-height:1.213;letter-spacing:.2rem}}@media (min-width: 1024px){:host ::ng-deep .eventsForm__title.corp-color{margin-bottom:3rem;display:none;text-align:start}}\n"] }]
3079
- }], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: i0.ChangeDetectorRef }], propDecorators: { title: [{
3190
+ NgOptimizedImage,
3191
+ PuroLinkTypeDirective,
3192
+ PuroScriptDirective,
3193
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"eventsForm\">\n <div class=\"eventsForm__inner\">\n\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"eventsForm__title corp-color\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n\n <!-- Imagen -->\n <div class=\"eventsForm__graphic\">\n <div class=\"eventsForm__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n width=\"467\"\n height=\"551\"\n class=\"eventsForm__graphicInner--img\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n\n <div class=\"eventsForm__content\">\n\n @if (title) {\n <lib-puro-dynamic-heading\n [tag]=\"tags?.title || 'span'\"\n cssClass=\"eventsForm__title corp-color\"\n [color]=\"textColors?.title\"\n [content]=\"title\"\n ></lib-puro-dynamic-heading>\n }\n\n @if (description) {\n <div class=\"eventsForm__paragraph\">{{ description }}</div>\n }\n\n @if (formReady$()) {\n\n <form [formGroup]=\"form\" class=\"form\" (ngSubmit)=\"submitForm()\" scriptLoader [dataLoaded]=\"true\">\n\n <!-- SECTION 1 -->\n <div class=\"eventsForm__section\">\n @if (ciTitle) {\n <span class=\"eventsForm__section--title\">{{ ciTitle }}</span>\n }\n\n <!-- Nombre + Apellidos -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (nameInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control\"\n [placeholder]=\"nameInput.placeholder\"\n [formControlName]=\"nameInput.name!\"\n (blur)=\"validateInput(nameInput)\"\n (input)=\"inputChange($event, nameInput)\"\n />\n <span class=\"icon-right corp-color\">\n <svg width=\"18\" height=\"20\"><use href=\"#user\"></use></svg>\n </span>\n </div>\n @if (!nameInput.valid()) {\n <span class=\"form-error\">{{ nameInput.error }}</span>\n }\n }\n </div>\n\n <div class=\"eventsForm__col\">\n @if (surnameInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control\"\n [placeholder]=\"surnameInput.placeholder\"\n [formControlName]=\"surnameInput.name!\"\n (blur)=\"validateInput(surnameInput)\"\n (input)=\"inputChange($event, surnameInput)\"\n />\n <span class=\"icon-right corp-color\">\n <svg width=\"18\" height=\"20\"><use href=\"#user\"></use></svg>\n </span>\n </div>\n @if (!surnameInput.valid()) {\n <span class=\"form-error\">{{ surnameInput.error }}</span>\n }\n }\n </div>\n </div>\n\n <!-- Prefijo + Tel\u00E9fono -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (prefix) {\n <div class=\"form__group withIcon\">\n <select class=\"form__control\" formControlName=\"prefix\">\n @if (prefix.placeholder) {\n <option value=\"\">\n {{ prefix.placeholder }}\n </option>\n }\n @for (item of prefix.options || []; track $index) {\n <option [value]=\"item.code\">{{ item.name }}</option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg width=\"15\" height=\"8\"><use href=\"#select-arrow\"></use></svg>\n </span>\n </div>\n }\n </div>\n\n <div class=\"eventsForm__col\">\n @if (phoneInput) {\n <div class=\"form__group withIcon\">\n <input type=\"tel\"\n class=\"form__control\"\n [placeholder]=\"phoneInput.placeholder\"\n formControlName=\"phone\"\n (blur)=\"validateInput(phoneInput)\"\n (input)=\"inputChange($event, phoneInput)\"\n />\n <span class=\"icon-right corp-color\">\n <svg width=\"17\" height=\"17\"><use href=\"#phone\"></use></svg>\n </span>\n </div>\n @if (!phoneInput.valid()) {\n <span class=\"form-error\">{{ phoneInput.error }}</span>\n }\n }\n </div>\n </div>\n\n <!-- Email -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (emailInput) {\n <div class=\"form__group withIcon\">\n <input type=\"email\"\n class=\"form__control\"\n [placeholder]=\"emailInput.placeholder\"\n formControlName=\"email\"\n (blur)=\"validateInput(emailInput)\"\n (input)=\"inputChange($event, emailInput)\"\n />\n <span class=\"icon-right corp-color\">\n <svg width=\"17\" height=\"17\"><use href=\"#email\"></use></svg>\n </span>\n </div>\n @if (!emailInput.valid()) {\n <span class=\"form-error\">{{ emailInput.error }}</span>\n }\n }\n </div>\n </div>\n\n <!-- Empresa -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (companyNameInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control\"\n [placeholder]=\"companyNameInput.placeholder\"\n [formControlName]=\"companyNameInput.name!\"\n (blur)=\"validateInput(companyNameInput)\"\n (input)=\"inputChange($event, companyNameInput)\"\n />\n <span class=\"icon-right corp-color\">\n <i class=\"icon-99\"></i>\n </span>\n </div>\n @if (!companyNameInput.valid()) {\n <span class=\"form-error\">{{ companyNameInput.error }}</span>\n }\n }\n </div>\n </div>\n\n </div>\n\n <!-- SECTION 2 -->\n <div class=\"eventsForm__section\">\n @if (dTitle) {\n <span class=\"eventsForm__section--title\">{{ dTitle }}</span>\n }\n\n <!-- Dropdown N\u00BA personas -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (neDropdown) {\n <div class=\"form__group withIcon\">\n <select class=\"form__control\" formControlName=\"neDropdown\">\n <option value=\"\">{{ neDropdown.placeholder }}</option>\n @for (option of neDropdown.options; track $index) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg width=\"15\" height=\"8\"><use href=\"#select-arrow\"></use></svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <!-- N\u00BA personas + Fecha -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (npInput) {\n <div class=\"form__group withIcon\">\n <input type=\"number\"\n class=\"form__control\"\n [placeholder]=\"npInput.placeholder\"\n [formControlName]=\"npInput.name!\"\n (blur)=\"validateInput(npInput)\"\n (input)=\"inputChange($event, npInput)\"\n />\n <span class=\"icon-right corp-color\">\n <svg width=\"18\" height=\"20\"><use href=\"#user\"></use></svg>\n </span>\n </div>\n @if (!npInput.valid()) {\n <span class=\"form-error\">{{ npInput.error }}</span>\n }\n }\n </div>\n\n <div class=\"eventsForm__col\">\n @if (dateInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control\"\n [placeholder]=\"dateInput.placeholder\"\n [formControlName]=\"dateInput.name!\"\n />\n <span class=\"icon-right corp-color\">\n <i class=\"icon-89\"></i>\n </span>\n </div>\n @if (!dateInput.valid()) {\n <span class=\"form-error\">{{ dateInput.error }}</span>\n }\n }\n </div>\n </div>\n\n <!-- Horas -->\n <div class=\"eventsForm__row\">\n\n <!-- Start Hour -->\n <div class=\"eventsForm__col\" style=\"position: relative\">\n @if (sHourInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control timepicker-trigger\"\n readonly\n autocomplete=\"off\"\n [placeholder]=\"sHourInput.placeholder\"\n [formControlName]=\"sHourInput.name!\"\n (click)=\"openTimepicker('sHourInput', $event)\"\n />\n <span class=\"icon-right corp-color timepicker-trigger\"\n (click)=\"openTimepicker('sHourInput', $event)\">\n <i class=\"icon-100\"></i>\n </span>\n </div>\n\n @if (!sHourInput.valid()) {\n <span class=\"form-error\">{{ sHourInput.error }}</span>\n }\n\n <ul class=\"puro-timepicker\"\n *ngIf=\"activeTimepicker === 'sHourInput'\">\n <li *ngFor=\"let h of hours\"\n (click)=\"selectHour('sHourInput', h)\">\n {{ h }}\n </li>\n </ul>\n }\n </div>\n\n <!-- End Hour -->\n <div class=\"eventsForm__col\" style=\"position: relative\">\n @if (fHourInput) {\n <div class=\"form__group withIcon\">\n <input type=\"text\"\n class=\"form__control timepicker-trigger\"\n readonly\n autocomplete=\"off\"\n [placeholder]=\"fHourInput.placeholder\"\n [formControlName]=\"fHourInput.name!\"\n (click)=\"openTimepicker('fHourInput', $event)\"\n />\n <span class=\"icon-right corp-color timepicker-trigger\"\n (click)=\"openTimepicker('fHourInput', $event)\">\n <i class=\"icon-100\"></i>\n </span>\n </div>\n\n @if (!fHourInput.valid()) {\n <span class=\"form-error\">{{ fHourInput.error }}</span>\n }\n\n <ul class=\"puro-timepicker\"\n *ngIf=\"activeTimepicker === 'fHourInput'\">\n <li *ngFor=\"let h of hours\"\n (click)=\"selectHour('fHourInput', h)\">\n {{ h }}\n </li>\n </ul>\n }\n </div>\n </div>\n\n <!-- Mensaje info -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (infoTextarea) {\n <div class=\"form__group no-dot\">\n <textarea class=\"form__control\"\n [placeholder]=\"infoTextarea.placeholder\"\n [formControlName]=\"infoTextarea.name!\">\n </textarea>\n </div>\n }\n </div>\n </div>\n\n </div>\n\n <!-- SECTION 3 -->\n <div class=\"eventsForm__section\">\n @if (howTitle) {\n <span class=\"eventsForm__section--title\">{{ howTitle }}</span>\n }\n\n <!-- Dropdown -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (othersDropdown) {\n <div class=\"form__group withIcon\">\n <select class=\"form__control\"\n formControlName=\"othersDropdown\">\n <option value=\"\">\n {{ othersDropdown.placeholder }}\n </option>\n @for (option of othersDropdown.options; track $index) {\n <option [value]=\"option.code\">\n {{ option.name }}\n </option>\n }\n </select>\n <span class=\"icon-right corp-color\">\n <svg width=\"15\" height=\"8\"><use href=\"#select-arrow\"></use></svg>\n </span>\n </div>\n }\n </div>\n </div>\n\n <!-- Textarea -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n @if (howTextarea) {\n <div class=\"form__group no-dot\">\n <textarea class=\"form__control\"\n [placeholder]=\"howTextarea.placeholder\"\n [formControlName]=\"howTextarea.name!\">\n </textarea>\n </div>\n }\n </div>\n </div>\n\n <!-- Checkboxes -->\n <div class=\"eventsForm__row\">\n <div class=\"eventsForm__col\">\n <div class=\"block-checkbox\">\n\n @if (requiredLabel) {\n <span class=\"required-label\">{{ requiredLabel }}</span>\n }\n\n @if (conditionsLink) {\n <label class=\"form__checkbox\">\n <input type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"conditions\"\n />\n <span class=\"box\">\n <svg width=\"9\" height=\"7\"><use href=\"#checkbox-tick\"></use></svg>\n </span>\n <span [innerHTML]=\"conditionsLink\"></span>\n </label>\n }\n\n @if (others) {\n <label class=\"form__checkbox\">\n <input type=\"checkbox\"\n class=\"checkbox\"\n formControlName=\"others\"\n />\n <span class=\"box\">\n <svg width=\"9\" height=\"7\"><use href=\"#checkbox-tick\"></use></svg>\n </span>\n <span>{{ others }}</span>\n </label>\n }\n\n </div>\n </div>\n </div>\n\n <!-- Bot\u00F3n -->\n <div class=\"btn__group\">\n @if (applyButton) {\n <button\n type=\"submit\"\n class=\"btn btn__primary--outline btn__events-form\"\n [attr.aria-label]=\"applyButton.label\"\n [disabled]=\"form.invalid\"\n >\n <span>{{ applyButton.label }}</span>\n </button>\n }\n </div>\n\n </div>\n </form>\n\n }\n </div>\n\n </div>\n</section>\n", styles: [".eventsForm{padding-block:3.5rem;padding-inline:4.5rem}@media (min-width: 768px){.eventsForm{padding-block:3.9rem 4.664rem;padding-inline:10.7rem 10.689rem}}@media (min-width: 1280px){.eventsForm{padding-block:5.117rem 5.7rem;padding-inline:8.2rem 9.4rem}}@media (min-width: 1680px){.eventsForm{padding-block:10.1rem 7.4rem;padding-inline:14.7rem}}.eventsForm__title{margin-bottom:2rem;display:block;text-align:center;text-transform:uppercase;color:#1e1e1e;opacity:.8;padding-inline:2rem;font-size:1.8rem;line-height:1.213;letter-spacing:.18rem}@media (min-width: 768px){.eventsForm__title{font-size:2rem;line-height:1.213;letter-spacing:.2rem}}@media (min-width: 1024px){.eventsForm__title{margin-bottom:3rem;display:none;text-align:start}}.eventsForm__inner{display:flex;flex-direction:column;row-gap:3.125rem;margin-inline:auto}@media (min-width: 1024px){.eventsForm__inner{column-gap:4rem;flex-direction:row-reverse}}@media (min-width: 1280px){.eventsForm__inner{column-gap:8.269rem}}@media (min-width: 1680px){.eventsForm__inner{column-gap:16.689rem;max-width:189.933rem}}.eventsForm__graphic{width:46.72rem;max-width:85%;position:relative}@media (min-width: 1024px){.eventsForm__graphic{order:2;max-width:45%}}@media (min-width: 1680px){.eventsForm__graphic{width:90.5rem}}@media (max-width: 1023.98px){.eventsForm__graphic{margin-inline:auto}}.eventsForm__graphicInner{width:100%;aspect-ratio:467.2/550.83}@media (min-width: 1024px){.eventsForm__graphicInner{position:sticky;top:17rem;max-height:calc(100svh - 17rem)}}@media (min-width: 1680px){.eventsForm__graphicInner{aspect-ratio:905/1067}}.eventsForm__graphicInner--img{width:100%;height:100%;object-fit:cover}.eventsForm__section--title{text-transform:uppercase;padding-inline:2rem;color:var(--reservar-filter-bg);display:block;font-size:1.6rem;line-height:1.364625;letter-spacing:.16rem}@media (min-width: 768px){.eventsForm__section--title{font-size:1.8rem;line-height:1.3477777778;letter-spacing:.18rem}}@media (min-width: 1024px){.eventsForm__content{order:1;flex:1 1 0%}}.eventsForm__content .btn__group{margin-top:4rem;justify-content:center}.eventsForm__content .eventsForm__title{display:none;font-size:1.4rem;line-height:1.7;letter-spacing:.06rem}@media (min-width: 768px){.eventsForm__content .eventsForm__title{font-size:1.6rem;line-height:1.7;letter-spacing:.072rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__title{font-size:3rem;line-height:1.02;letter-spacing:.09rem}}@media (min-width: 1024px){.eventsForm__content .eventsForm__title{display:block;text-align:start}}.eventsForm__content .eventsForm__paragraph{color:var(--cl-text-dark);min-height:7.6rem;text-align:start;margin-bottom:3rem;padding-inline:2rem;font-size:1.6rem;line-height:1.4875;letter-spacing:.048rem}@media (min-width: 768px){.eventsForm__content .eventsForm__paragraph{font-size:1.8rem;line-height:1.5111111111;letter-spacing:.054rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__paragraph{text-align:start;font-size:2rem;line-height:1.53;letter-spacing:.06rem}}.eventsForm__content .eventsForm__row{display:flex;flex-wrap:wrap;margin:0 -.75rem}@media (min-width: 768px){.eventsForm__content .eventsForm__row{margin:0 -1.5rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__row{margin:0 -2.1rem}}.eventsForm__content .eventsForm__row .btn__link:not(:hover):after{background:var(--bg-primary)}.eventsForm__content .eventsForm__col{flex:1 0 100%;width:100%;max-width:100%;padding-inline:.75rem}@media (min-width: 768px){.eventsForm__content .eventsForm__col{flex:1 0 0%;padding-inline:1.5rem}}@media (min-width: 1280px){.eventsForm__content .eventsForm__col{padding-inline:2.1rem}}.eventsForm__content .eventsForm__col .block-checkbox{display:flex;flex-direction:column;row-gap:1rem}.eventsForm__placeholder span{color:#1e1e1e;opacity:.6}.eventsForm .form-error{color:var(--grey);z-index:1}.eventsForm .icon-right i{font-size:2rem}.eventsForm .file-name{text-overflow:ellipsis;color:var(--grey);font-size:1.4rem;line-height:1.9428571429;letter-spacing:.042rem}@media (min-width: 768px){.eventsForm .file-name{font-size:1.6rem;line-height:1.51625;letter-spacing:.16rem}}input[type=file]{background-color:#fff;line-height:3.2}input[type=file]::-webkit-file-upload-button{visibility:hidden}input[type=file]:before{content:attr(placeholder);background:#fff;color:#1e1e1e;opacity:.6;display:inline-block;cursor:pointer;width:100%;overflow-x:hidden}input[type=date]::-webkit-inner-spin-button,input[type=date]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}:host ::ng-deep .eventsForm__title.corp-color{margin-bottom:2rem;display:block;text-align:center;text-transform:uppercase;color:#1e1e1e;opacity:.8;padding-inline:2rem;font-size:1.8rem;line-height:1.213;letter-spacing:.18rem}@media (min-width: 768px){:host ::ng-deep .eventsForm__title.corp-color{font-size:2rem;line-height:1.213;letter-spacing:.2rem}}@media (min-width: 1024px){:host ::ng-deep .eventsForm__title.corp-color{margin-bottom:3rem;display:none;text-align:start}}input[type=time]::-webkit-calendar-picker-indicator{opacity:0;display:none}.puro-timepicker{position:absolute;width:86%;max-height:20rem;overflow-y:auto;background:#fff;border:1px solid #ddd;border-radius:.4rem;z-index:9999;padding:0;margin:0;list-style:none;box-shadow:0 4px 12px #0000001a}.puro-timepicker li{padding:1rem 1.4rem;font-size:1.4rem;cursor:pointer;border-bottom:1px solid #f2f2f2}.puro-timepicker li:last-child{border-bottom:none}.puro-timepicker li:hover{background:#f5f5f5}\n"] }]
3194
+ }], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { title: [{
3080
3195
  type: Input
3081
3196
  }], description: [{
3082
3197
  type: Input
@@ -3124,8 +3239,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3124
3239
  type: Input
3125
3240
  }], applyButton: [{
3126
3241
  type: Input
3127
- }], seeAllButton: [{
3128
- type: Input
3129
3242
  }], tags: [{
3130
3243
  type: Input
3131
3244
  }], textColors: [{
@@ -3482,6 +3595,18 @@ class MapperService {
3482
3595
  getView(view) {
3483
3596
  return view === 'right' ? 'right' : 'left';
3484
3597
  }
3598
+ sanitize(name) {
3599
+ return name
3600
+ .normalize('NFD')
3601
+ .replace(/[\u0300-\u036f]/g, '') // quitar tildes
3602
+ .replace(/[^a-zA-Z0-9 ]/g, ' ') // quitar símbolos raros
3603
+ .trim()
3604
+ .split(' ')
3605
+ .map((part, i) => i === 0
3606
+ ? part.toLowerCase()
3607
+ : part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())
3608
+ .join('');
3609
+ }
3485
3610
  generateAgesOptions(maxLength, minLength = 0) {
3486
3611
  const options = [];
3487
3612
  for (let i = minLength; i <= maxLength; i++) {
@@ -3707,7 +3832,7 @@ class MapperService {
3707
3832
  componentMapped.props = this.mapCareersForm(component.props, addons?.consultType);
3708
3833
  break;
3709
3834
  case 'eventsform':
3710
- componentMapped.props = this.mapEventsForm(component.props, addons?.consultType);
3835
+ componentMapped.props = this.mapEventsForm(component.props);
3711
3836
  break;
3712
3837
  case 'modalinfoleft':
3713
3838
  case 'modalinforight':
@@ -3773,7 +3898,9 @@ class MapperService {
3773
3898
  mapGallery(props) {
3774
3899
  const { texts, buttons, filters } = props;
3775
3900
  return {
3776
- filters: filters?.map((item, index) => ({
3901
+ filters: filters
3902
+ ?.filter((f) => Array.isArray(f.multimedia) && f.multimedia.length > 0)
3903
+ .map((item, index) => ({
3777
3904
  id: index,
3778
3905
  all: item.all,
3779
3906
  room: item.room,
@@ -3797,6 +3924,7 @@ class MapperService {
3797
3924
  filterTitle: texts?.roomsFilter,
3798
3925
  button: Utils.mapButtons(this.siteId(), buttons)[0],
3799
3926
  items: filters
3927
+ ?.filter((f) => Array.isArray(f.multimedia) && f.multimedia.length > 0)
3800
3928
  .reduce((acc, filter, filterIndex) => {
3801
3929
  if (filter.multimedia) {
3802
3930
  const multimediaWithFilter = filter.multimedia.map((item) => ({
@@ -5779,138 +5907,138 @@ class MapperService {
5779
5907
  },
5780
5908
  };
5781
5909
  }
5782
- //TODO: Check back props
5783
- mapEventsForm(props, ndPropsConsult) {
5910
+ mapEventsForm(props) {
5911
+ const prefixValues = Object.values(props?.prefixes || {});
5784
5912
  return {
5785
5913
  title: typeof props?.texts?.title === 'string'
5786
5914
  ? props?.texts?.title
5787
5915
  : props?.texts?.title?.contain,
5916
+ description: props?.texts?.description,
5917
+ ciTitle: props?.texts?.cititle,
5918
+ dTitle: props?.texts?.dtitle,
5919
+ howTitle: props?.texts?.howTitle,
5920
+ others: props?.texts?.others,
5921
+ conditionsLink: props?.texts?.conditionslink,
5922
+ requiredLabel: props?.texts?.requiredLabel,
5788
5923
  tags: {
5789
5924
  title: props?.texts?.title?.tag,
5790
5925
  },
5791
5926
  textColors: {
5792
5927
  title: props?.texts?.title?.color?.trim(),
5793
5928
  },
5794
- ciTitle: props?.texts?.ciTitle,
5795
- dTitle: props?.texts?.dTitle,
5796
- howTitle: props?.texts?.howTitle,
5797
- description: props?.texts?.description,
5798
- conditionsLink: props?.texts?.conditionsLinks,
5799
- others: props?.texts?.others,
5800
- requiredLabel: props?.texts?.requiredLabel,
5801
- img: this.getImageResponsive(props?.multimedia?.image?.[0]),
5929
+ img: this.getImageResponsive(props?.multimedia?.imagenes?.[0]),
5802
5930
  applyButton: Utils.mapButtons(this.siteId(), props?.buttons)[0],
5803
5931
  seeAllButton: Utils.mapButtons(this.siteId(), props?.buttons)[1],
5804
5932
  howTextarea: {
5805
- title: props?.texts?.inputHowMessage,
5806
- placeholder: props?.texts?.inputHowMessage,
5933
+ title: props?.texts?.howTitle,
5934
+ placeholder: props?.texts?.howTitle,
5807
5935
  value: '',
5808
5936
  valid: signal(true),
5809
5937
  name: 'howMessage',
5810
5938
  },
5811
5939
  infoTextarea: {
5812
- title: props?.texts?.inputInfoMessage,
5813
- placeholder: props?.texts?.inputInfoMessage,
5940
+ title: props?.texts?.infoTitle,
5941
+ placeholder: props?.texts?.infoTitle,
5814
5942
  value: '',
5815
5943
  valid: signal(true),
5816
5944
  name: 'infoMessage',
5817
5945
  },
5818
5946
  neDropdown: {
5819
5947
  placeholder: props?.texts?.neDropdown,
5820
- options: props?.hotels?.map((prop) => ({ code: prop?.id, name: prop?.name })),
5948
+ options: props?.nature?.map((prop) => ({ code: prop?.id, name: prop?.name })),
5821
5949
  },
5822
5950
  othersDropdown: {
5823
- title: props?.texts?.othersDropdown,
5824
- options: ndPropsConsult?.map((prop) => ({ code: prop?.id, name: prop?.name })),
5951
+ placeholder: props?.texts?.othersDropdown,
5952
+ options: props?.howHeardUs?.map((prop) => ({ code: prop?.id, name: prop?.name })),
5825
5953
  },
5826
5954
  prefix: {
5827
- options: props?.prefixes?.map((prefix) => ({
5828
- code: Array(props?.prefixes).indexOf(prefix),
5955
+ options: prefixValues.map((prefix, index) => ({
5956
+ code: index,
5829
5957
  name: prefix,
5830
5958
  })),
5831
5959
  placeholder: props?.texts?.prefixes,
5832
5960
  },
5833
5961
  nameInput: {
5834
- name: Utils.normalizeText(props?.texts?.inputName),
5835
- placeholder: props?.texts?.inputName,
5962
+ name: this.sanitize(props?.texts?.nameTitle),
5963
+ placeholder: props?.texts?.nameTitle,
5836
5964
  value: '',
5837
5965
  type: 'text',
5838
- error: props?.texts?.errorName,
5966
+ error: props?.texts?.nameError,
5839
5967
  validators: [Validators.required],
5840
5968
  valid: signal(true),
5841
5969
  },
5842
5970
  surnameInput: {
5843
- title: props?.texts?.surnames,
5844
- name: Utils.normalizeText(props?.texts?.surnames),
5845
- placeholder: props?.texts?.surnames,
5971
+ title: props?.texts?.surnamesTitle,
5972
+ name: this.sanitize(props?.texts?.surnamesTitle),
5973
+ placeholder: props?.texts?.surnamesTitle,
5846
5974
  value: '',
5847
5975
  type: 'text',
5848
- error: props?.texts?.errorName,
5976
+ error: props?.texts?.surnamesError,
5849
5977
  validators: [Validators.required],
5850
5978
  valid: signal(true),
5851
5979
  },
5852
5980
  emailInput: {
5853
- title: props?.texts?.inputEmail,
5854
- name: Utils.normalizeText(props?.texts?.inputEmail),
5855
- placeholder: props?.texts?.inputEmail,
5981
+ title: props?.texts?.emailTitle,
5982
+ name: this.sanitize(props?.texts?.emailTitle),
5983
+ placeholder: props?.texts?.emailTitle,
5856
5984
  value: '',
5857
5985
  type: 'email',
5858
- error: props?.texts?.errorEmail,
5986
+ error: props?.texts?.emailError,
5859
5987
  validators: [Validators.email, Validators.required],
5860
5988
  valid: signal(true),
5861
5989
  },
5862
5990
  companyNameInput: {
5863
- name: Utils.normalizeText(props?.texts?.inputCompanyName),
5864
- placeholder: props?.texts?.inputCompanyName,
5991
+ name: this.sanitize(props?.texts?.companyTitle),
5992
+ placeholder: props?.texts?.companyTitle,
5865
5993
  value: '',
5866
5994
  type: 'text',
5867
- error: props?.texts?.errorCompanyName,
5995
+ error: props?.texts?.companyError,
5868
5996
  validators: [Validators.required],
5869
5997
  valid: signal(true),
5870
5998
  },
5871
5999
  phoneInput: {
5872
- title: props?.texts?.inputPhone,
5873
- name: Utils.normalizeText(props?.texts?.inputPhone),
5874
- placeholder: props?.texts?.inputPhone,
6000
+ title: props?.texts?.phoneTitle,
6001
+ name: this.sanitize(props?.texts?.phoneTitle),
6002
+ placeholder: props?.texts?.phoneTitle,
5875
6003
  value: '',
5876
6004
  type: 'tel',
5877
- error: props?.texts?.errorPhone,
6005
+ error: props?.texts?.phoneError,
5878
6006
  validators: [Validators.required],
5879
6007
  valid: signal(true),
5880
6008
  },
5881
6009
  npInput: {
5882
- name: Utils.normalizeText(props?.texts?.npInput),
5883
- placeholder: props?.texts?.npInput,
6010
+ name: this.sanitize(props?.texts?.npTitle),
6011
+ placeholder: props?.texts?.npTitle,
5884
6012
  value: '',
5885
6013
  type: 'text',
5886
- error: props?.texts?.errorNpInput,
6014
+ error: props?.texts?.npError,
5887
6015
  validators: [Validators.required],
5888
6016
  valid: signal(true),
5889
6017
  },
5890
6018
  dateInput: {
5891
- name: Utils.normalizeText(props?.texts?.dateInput),
5892
- placeholder: props?.texts?.dateInput,
6019
+ name: this.sanitize(props?.texts?.dateTitle),
6020
+ placeholder: props?.texts?.dateTitle,
5893
6021
  value: '',
5894
6022
  type: 'text',
5895
- error: props?.texts?.errorDateInput,
6023
+ error: props?.texts?.dateError,
5896
6024
  validators: [Validators.required],
5897
6025
  valid: signal(true),
5898
6026
  },
5899
6027
  sHourInput: {
5900
- name: Utils.normalizeText(props?.texts?.sHourInput),
5901
- placeholder: props?.texts?.sHourInput,
6028
+ name: this.sanitize(props?.texts?.sHourTitle),
6029
+ placeholder: props?.texts?.sHourTitle,
5902
6030
  value: '',
5903
6031
  type: 'text',
5904
- error: props?.texts?.errorSHourInput,
6032
+ error: props?.texts?.sHourError,
5905
6033
  validators: [Validators.required],
5906
6034
  valid: signal(true),
5907
6035
  },
5908
6036
  fHourInput: {
5909
- name: Utils.normalizeText(props?.texts?.fHourInput),
5910
- placeholder: props?.texts?.fHourInput,
6037
+ name: this.sanitize(props?.texts?.fHourTitle),
6038
+ placeholder: props?.texts?.fHourTitle,
5911
6039
  value: '',
5912
6040
  type: 'text',
5913
- error: props?.texts?.errorFHourInput,
6041
+ error: props?.texts?.fHourError,
5914
6042
  validators: [Validators.required],
5915
6043
  valid: signal(true),
5916
6044
  },