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.
- package/esm2022/lib/components/puro-events-form/puro-events-form.component.mjs +189 -74
- package/esm2022/lib/services/mapper/mapper.service.mjs +67 -52
- package/fesm2022/ctt-puro.mjs +251 -123
- package/fesm2022/ctt-puro.mjs.map +1 -1
- package/lib/components/puro-events-form/puro-events-form.component.d.ts +15 -7
- package/lib/services/mapper/mapper.service.d.ts +2 -1
- package/package.json +1 -1
package/fesm2022/ctt-puro.mjs
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2988
|
-
controls[this.phoneInput.name] = [
|
|
3033
|
+
if (this.phoneInput)
|
|
3034
|
+
controls['phone'] = [
|
|
2989
3035
|
'',
|
|
2990
|
-
this.phoneInput.validators || [
|
|
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 || [
|
|
3041
|
+
this.companyNameInput.validators || [],
|
|
2997
3042
|
];
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
controls[this.npInput.name] = [
|
|
3043
|
+
if (this.emailInput)
|
|
3044
|
+
controls['email'] = [
|
|
3001
3045
|
'',
|
|
3002
|
-
this.
|
|
3046
|
+
this.emailInput.validators || [
|
|
3047
|
+
Validators.required,
|
|
3048
|
+
Validators.email,
|
|
3049
|
+
],
|
|
3003
3050
|
];
|
|
3004
|
-
|
|
3005
|
-
|
|
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
|
-
|
|
3024
|
-
if (this.emailInput?.name) {
|
|
3025
|
-
controls[this.emailInput.name] = [
|
|
3068
|
+
if (this.howTextarea?.name)
|
|
3069
|
+
controls[this.howTextarea.name] = [
|
|
3026
3070
|
'',
|
|
3027
|
-
this.
|
|
3028
|
-
|
|
3029
|
-
|
|
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
|
-
|
|
3040
|
-
|
|
3041
|
-
this.
|
|
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
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
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
|
|
3123
|
+
const el = event.target;
|
|
3056
3124
|
if (input.type === 'tel') {
|
|
3057
|
-
|
|
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
|
-
|
|
3064
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
5783
|
-
|
|
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
|
-
|
|
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?.
|
|
5806
|
-
placeholder: props?.texts?.
|
|
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?.
|
|
5813
|
-
placeholder: props?.texts?.
|
|
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?.
|
|
5948
|
+
options: props?.nature?.map((prop) => ({ code: prop?.id, name: prop?.name })),
|
|
5821
5949
|
},
|
|
5822
5950
|
othersDropdown: {
|
|
5823
|
-
|
|
5824
|
-
options:
|
|
5951
|
+
placeholder: props?.texts?.othersDropdown,
|
|
5952
|
+
options: props?.howHeardUs?.map((prop) => ({ code: prop?.id, name: prop?.name })),
|
|
5825
5953
|
},
|
|
5826
5954
|
prefix: {
|
|
5827
|
-
options:
|
|
5828
|
-
code:
|
|
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:
|
|
5835
|
-
placeholder: props?.texts?.
|
|
5962
|
+
name: this.sanitize(props?.texts?.nameTitle),
|
|
5963
|
+
placeholder: props?.texts?.nameTitle,
|
|
5836
5964
|
value: '',
|
|
5837
5965
|
type: 'text',
|
|
5838
|
-
error: props?.texts?.
|
|
5966
|
+
error: props?.texts?.nameError,
|
|
5839
5967
|
validators: [Validators.required],
|
|
5840
5968
|
valid: signal(true),
|
|
5841
5969
|
},
|
|
5842
5970
|
surnameInput: {
|
|
5843
|
-
title: props?.texts?.
|
|
5844
|
-
name:
|
|
5845
|
-
placeholder: props?.texts?.
|
|
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?.
|
|
5976
|
+
error: props?.texts?.surnamesError,
|
|
5849
5977
|
validators: [Validators.required],
|
|
5850
5978
|
valid: signal(true),
|
|
5851
5979
|
},
|
|
5852
5980
|
emailInput: {
|
|
5853
|
-
title: props?.texts?.
|
|
5854
|
-
name:
|
|
5855
|
-
placeholder: props?.texts?.
|
|
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?.
|
|
5986
|
+
error: props?.texts?.emailError,
|
|
5859
5987
|
validators: [Validators.email, Validators.required],
|
|
5860
5988
|
valid: signal(true),
|
|
5861
5989
|
},
|
|
5862
5990
|
companyNameInput: {
|
|
5863
|
-
name:
|
|
5864
|
-
placeholder: props?.texts?.
|
|
5991
|
+
name: this.sanitize(props?.texts?.companyTitle),
|
|
5992
|
+
placeholder: props?.texts?.companyTitle,
|
|
5865
5993
|
value: '',
|
|
5866
5994
|
type: 'text',
|
|
5867
|
-
error: props?.texts?.
|
|
5995
|
+
error: props?.texts?.companyError,
|
|
5868
5996
|
validators: [Validators.required],
|
|
5869
5997
|
valid: signal(true),
|
|
5870
5998
|
},
|
|
5871
5999
|
phoneInput: {
|
|
5872
|
-
title: props?.texts?.
|
|
5873
|
-
name:
|
|
5874
|
-
placeholder: props?.texts?.
|
|
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?.
|
|
6005
|
+
error: props?.texts?.phoneError,
|
|
5878
6006
|
validators: [Validators.required],
|
|
5879
6007
|
valid: signal(true),
|
|
5880
6008
|
},
|
|
5881
6009
|
npInput: {
|
|
5882
|
-
name:
|
|
5883
|
-
placeholder: props?.texts?.
|
|
6010
|
+
name: this.sanitize(props?.texts?.npTitle),
|
|
6011
|
+
placeholder: props?.texts?.npTitle,
|
|
5884
6012
|
value: '',
|
|
5885
6013
|
type: 'text',
|
|
5886
|
-
error: props?.texts?.
|
|
6014
|
+
error: props?.texts?.npError,
|
|
5887
6015
|
validators: [Validators.required],
|
|
5888
6016
|
valid: signal(true),
|
|
5889
6017
|
},
|
|
5890
6018
|
dateInput: {
|
|
5891
|
-
name:
|
|
5892
|
-
placeholder: props?.texts?.
|
|
6019
|
+
name: this.sanitize(props?.texts?.dateTitle),
|
|
6020
|
+
placeholder: props?.texts?.dateTitle,
|
|
5893
6021
|
value: '',
|
|
5894
6022
|
type: 'text',
|
|
5895
|
-
error: props?.texts?.
|
|
6023
|
+
error: props?.texts?.dateError,
|
|
5896
6024
|
validators: [Validators.required],
|
|
5897
6025
|
valid: signal(true),
|
|
5898
6026
|
},
|
|
5899
6027
|
sHourInput: {
|
|
5900
|
-
name:
|
|
5901
|
-
placeholder: props?.texts?.
|
|
6028
|
+
name: this.sanitize(props?.texts?.sHourTitle),
|
|
6029
|
+
placeholder: props?.texts?.sHourTitle,
|
|
5902
6030
|
value: '',
|
|
5903
6031
|
type: 'text',
|
|
5904
|
-
error: props?.texts?.
|
|
6032
|
+
error: props?.texts?.sHourError,
|
|
5905
6033
|
validators: [Validators.required],
|
|
5906
6034
|
valid: signal(true),
|
|
5907
6035
|
},
|
|
5908
6036
|
fHourInput: {
|
|
5909
|
-
name:
|
|
5910
|
-
placeholder: props?.texts?.
|
|
6037
|
+
name: this.sanitize(props?.texts?.fHourTitle),
|
|
6038
|
+
placeholder: props?.texts?.fHourTitle,
|
|
5911
6039
|
value: '',
|
|
5912
6040
|
type: 'text',
|
|
5913
|
-
error: props?.texts?.
|
|
6041
|
+
error: props?.texts?.fHourError,
|
|
5914
6042
|
validators: [Validators.required],
|
|
5915
6043
|
valid: signal(true),
|
|
5916
6044
|
},
|