niris-public-community-components 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"form-niris.d.ts","sourceRoot":"","sources":["../src/form-niris.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAqB,MAAM,KAAK,CAAC;AAQnD,OAAO,EAAO,iBAAiB,EAAc,MAAM,SAAS,CAAC;AAE7D,OAAO,EACL,cAAc,EAKf,MAAM,SAAS,CAAC;AAajB,eAAO,MAAO,SAAS;;GAAE,SAAS;;CAIhC,CAAC;AAQH;;GAEG;AACH,qBACa,SAAU,SAAQ,UAAU;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,cAAc,EAAE,CAAC;IAE3D,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,WAAW,CAAQ;IAED,UAAU,SAAgB;IAC1B,UAAU,SAAe;IAEzB,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAG5D,OAAO,CAAC,SAAS,CAAiB;IAGlC,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,YAAY,CAAgB;IAGpC,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,WAAW,CAAM;IAGzB,OAAO,CAAC,cAAc,CAAM;IAGF,MAAM,SACoD;IAIpF,OAAO,CAAC,MAAM,CAAM;IAGpB,OAAO,CAAC,YAAY,CAAM;IAG1B,OAAO,CAAC,QAAQ,CAAM;IAGtB,OAAO,CAAC,SAAS,CAAM;IAGvB,OAAO,CAAC,OAAO,CAAS;;IA+BxB,SAAS;IAQT,QAAQ;IAeC,YAAY;IAOrB,uBAAuB;IAUd,iBAAiB;YAKZ,eAAe;IAgB7B,OAAO,CAAC,YAAY,CA6BjB;IAEM,OAAO;IAIhB,OAAO,CAAC,SAAS;IAIR,MAAM;IAaf,WAAW;IAgCX,aAAa;IAgCb,YAAY;IAgBZ,UAAU;IA2LV,iBAAiB;IAoGjB,iBAAiB;IAsDjB,SAAS;IAiEH,QAAQ,CAAC,KAAK,EAAE,WAAW;IAqFjC,YAAY,CAAC,IAAI,EAAE,GAAG;IA6BtB,YAAY,CAAC,KAAK,EAAE,UAAU;IAyB9B,KAAK,IAAI,MAAM,EAAE;IAWX,UAAU,CAAC,CAAC,EAAE,iBAAiB;IA8B/B,aAAa;IAqBnB,OAAgB,MAAM,4BAmQpB;CACH;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
1
+ {"version":3,"file":"form-niris.d.ts","sourceRoot":"","sources":["../src/form-niris.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAqB,MAAM,KAAK,CAAC;AAQnD,OAAO,EAAO,iBAAiB,EAAc,MAAM,SAAS,CAAC;AAE7D,OAAO,EACL,cAAc,EAKf,MAAM,SAAS,CAAC;AAajB,eAAO,MAAO,SAAS;;GAAE,SAAS;;CAIhC,CAAC;AAQH;;GAEG;AACH,qBACa,SAAU,SAAQ,UAAU;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,cAAc,EAAE,CAAC;IAE3D,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,IAAI,CAAO;IACnB,OAAO,CAAC,WAAW,CAAQ;IAED,UAAU,SAAgB;IAC1B,UAAU,SAAe;IAEzB,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAG5D,OAAO,CAAC,SAAS,CAAiB;IAGlC,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,YAAY,CAAgB;IAGpC,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,KAAK,CAAS;IAGtB,OAAO,CAAC,WAAW,CAAM;IAGzB,OAAO,CAAC,cAAc,CAAM;IAGF,MAAM,SACoD;IAIpF,OAAO,CAAC,MAAM,CAAM;IAGpB,OAAO,CAAC,YAAY,CAAM;IAG1B,OAAO,CAAC,QAAQ,CAAM;IAGtB,OAAO,CAAC,SAAS,CAAM;IAGvB,OAAO,CAAC,OAAO,CAAS;;IA+BxB,SAAS;IAQT,QAAQ;IAeC,YAAY;IAOrB,uBAAuB;IAUd,iBAAiB;YAKZ,eAAe;IAgB7B,OAAO,CAAC,YAAY,CA6BjB;IAEM,OAAO;IAIhB,OAAO,CAAC,SAAS;IAIR,MAAM;IAaf,WAAW;IAgCX,aAAa;IAgCb,YAAY;IAgBZ,UAAU;IA2LV,iBAAiB;IA6GjB,iBAAiB;IAsDjB,SAAS;IAiEH,QAAQ,CAAC,KAAK,EAAE,WAAW;IAqFjC,YAAY,CAAC,IAAI,EAAE,GAAG;IA+BtB,YAAY,CAAC,KAAK,EAAE,UAAU;IAyB9B,KAAK,IAAI,MAAM,EAAE;IAWX,UAAU,CAAC,CAAC,EAAE,iBAAiB;IA8B/B,aAAa;IAqBnB,OAAgB,MAAM,4BAmQpB;CACH;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
@@ -423,7 +423,7 @@ let FormNiris = class FormNiris extends LitElement {
423
423
 
424
424
  <div>
425
425
  <label for="firstSurname">${msg('Primer apellido')}*:</label>
426
- <input id="firstSurname" name="firstSurname" type="text" />
426
+ <input id="firstSurname" name="firstSurname" type="text" required />
427
427
  </div>
428
428
 
429
429
  <div>
@@ -506,6 +506,15 @@ let FormNiris = class FormNiris extends LitElement {
506
506
  placeholder=${msg('Escribe tu teléfono')}
507
507
  />
508
508
  </div>
509
+
510
+ <div>
511
+ <label for="language">${msg('Idioma de la respuesta')}*:</label>
512
+ <select id="language" name="language" required>
513
+ <option value="es" selected>${msg('Español')}</option>
514
+ <option value="ca">${msg('Catalán')}</option>
515
+ <option value="en">${msg('Inglés')}</option>
516
+ </select>
517
+ </div>
509
518
  `;
510
519
  }
511
520
  renderCompanyForm() {
@@ -552,8 +561,8 @@ let FormNiris = class FormNiris extends LitElement {
552
561
  </div>
553
562
 
554
563
  <div>
555
- <label for="phone">${msg('Idioma de la respuesta')}*:</label>
556
- <select id="phone" name="language" required>
564
+ <label for="language">${msg('Idioma de la respuesta')}*:</label>
565
+ <select id="language" name="language" required>
557
566
  <option value="es" selected>${msg('Español')}</option>
558
567
  <option value="ca">${msg('Catalán')}</option>
559
568
  <option value="en">${msg('Inglés')}</option>
@@ -704,17 +713,17 @@ let FormNiris = class FormNiris extends LitElement {
704
713
  }
705
714
  });
706
715
  if ('characteristics' in errors) {
707
- const characteristics = errors['characteristics'];
708
- for (const [key, errors] of characteristics.entries()) {
709
- if (Object.keys(errors).length !== 0) {
710
- debugger;
711
- const input = this.shadowRoot?.getElementById(`niris-${key}`);
712
- errors.value.forEach((error) => {
713
- input.setCustomValidity(error);
714
- input.reportValidity();
715
- });
716
- }
716
+ let characteristics = errors['characteristics'];
717
+ if (!Array.isArray(characteristics)) {
718
+ characteristics = Object.entries(characteristics);
717
719
  }
720
+ characteristics.forEach((characteristic) => {
721
+ Object.entries(characteristic).forEach(([key, value]) => {
722
+ const input = this.shadowRoot?.getElementById(`niris-${key}`);
723
+ input.setCustomValidity(value);
724
+ input.reportValidity();
725
+ });
726
+ });
718
727
  }
719
728
  }
720
729
  confirmEmail(event) {
@@ -1 +1 @@
1
- {"version":3,"file":"form-niris.js","sourceRoot":"","sources":["../src/form-niris.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement, html, css, nothing} from 'lit';\nimport {property, state} from 'lit/decorators.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport {choose} from 'lit/directives/choose.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {when} from 'lit/directives/when.js';\nimport {Task} from '@lit/task';\nimport {globalStyles} from './styles/globalStyles';\nimport {Icon, LeafletMouseEvent, Map, Marker} from 'leaflet';\nimport {msg, localized } from '@lit/localize';\nimport {\n Characteristic,\n CharacteristicElement,\n CharacteristicTypeEnum,\n Districte,\n FormDataIncidents,\n} from './types';\nimport {configureLocalization} from '@lit/localize';\n// Generated via output.localeCodesModule\nimport {sourceLocale, targetLocales} from './generated/locale-codes.js';\n\n// https://github.com/Leaflet/Leaflet/issues/7055\n// https://github.com/Leaflet/Leaflet/pull/7174\n// https://github.com/Leaflet/Leaflet/pull/6239\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport * as L from 'leaflet/dist/leaflet-src.esm.js';\n\n\nexport const {getLocale, setLocale} = configureLocalization({\n sourceLocale,\n targetLocales,\n loadLocale: (locale) => import(`./generated/locales/${locale}.js`),\n});\n\n/* TODO:\n- Boton volver, ruta por property o volver atras mirando hsitory\n- Mascaras \n- Validaciones archivos extensiones.\n*/\n\n/**\n * An example element.\n */\n@localized()\nexport class FormNiris extends LitElement {\n @property({type: Number}) detailID: Number | undefined;\n @property({type: String}) actionUrl: string;\n @property({type: String}) apiUrl: string;\n\n @property({type: String}) area: string;\n @property({type: String}) element: string;\n @property({type: String}) detail: string;\n @property({type: Array}) characteristics: Characteristic[];\n\n private _marker!: Marker | null;\n private _map!: Map;\n private _markerIcon!: Icon;\n\n @property({type: String}) defaultLat = '39.5701058'; // Palma de Mallorca\n @property({type: String}) defaultLon = '2.6487098';\n\n @property({type: String}) locale: 'es' | 'en' | 'ca' = 'es';\n\n @state()\n private isCitizen: Boolean = true;\n\n @state()\n private activeMap = false;\n\n @state()\n private ubiDistricts: Object[] = [];\n\n @state()\n private submited = false;\n\n @state()\n private error = false;\n\n @state()\n private incidenceId = '';\n\n @state()\n private extensionFiles = '';\n\n /* Map */\n @property({type: String}) domain =\n 'https://iris2-backend-demo-iris-community.labs.apsl.io/services/iris/api-public';\n // TODO property for lat and lon\n\n @state()\n private street = '';\n\n @state()\n private streetNumber = '';\n\n @state()\n private latitude = '';\n\n @state()\n private longitude = '';\n\n @state()\n private loading = false;\n\n constructor() {\n super();\n this.detailID = undefined;\n this.actionUrl = '';\n this.apiUrl = '';\n\n this.area = '';\n this.element = '';\n this.detail = '';\n this.extensionFiles = '';\n this.characteristics = [];\n\n this.locale = this.locale ? this.locale : 'es';\n // setLocale(this.locale);\n\n // Map\n L.Icon.Default.imagePath = `https://unpkg.com/leaflet@${L.version}/dist/images/`;\n this._markerIcon = new L.Icon({\n iconUrl:\n 'https://raw.githubusercontent.com/pointhi/leaflet-color-markers/master/img/marker-icon-blue.png',\n shadowUrl:\n 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png',\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -34],\n shadowSize: [41, 41],\n }); \n }\n\n getApiUrl() {\n if (this.apiUrl.endsWith('/')) {\n return this.apiUrl.slice(0, this.apiUrl.lastIndexOf('/'));\n } else {\n return this.apiUrl;\n }\n }\n\n _loadMap() {\n const mapEl = this.shadowRoot?.querySelector('#map');\n this._map = L.map(mapEl, {\n markerZoomAnimation: false,\n attributionControl: false,\n }).setView([this.defaultLat, this.defaultLon], 15);\n\n L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {\n attribution:\n '&copy; <a href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors',\n }).addTo(this._map);\n\n this._map.on('click', (e) => this.onMapClick(e));\n }\n\n override firstUpdated() {\n /* Disable default form validation */\n const form = this.shadowRoot?.querySelector('form');\n form?.setAttribute('novalidate', '');\n this.addOnChangEventToInputs()\n }\n\n addOnChangEventToInputs() {\n const inputs: HTMLInputElement[] = Array.from(this.shadowRoot?.querySelectorAll('input') ?? []);\n inputs.forEach((input: HTMLInputElement) => {\n input.addEventListener('keyup', () => { \n input.setCustomValidity('');\n });\n });\n }\n\n /* Lifecycle */\n override connectedCallback() {\n super.connectedCallback();\n this._fetchDistricts();\n }\n\n private async _fetchDistricts() {\n const response = await fetch(`${this.getApiUrl()}/districts`, {\n headers: {\n 'Accept-Language': this.locale,\n },\n });\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n const data = await response.json();\n\n data.results.map((district: Districte) => {\n this.ubiDistricts.push({value: `${district.id}`, label: district.name});\n });\n }\n\n private _fetchFields = new Task(this, {\n task: async ([detailID], {signal}) => {\n const response = await fetch(\n `${this.getApiUrl()}/details/${detailID}/fields`,\n {\n headers: {\n 'Accept-Language': this.locale,\n },\n signal\n }\n );\n if (!response.ok) {\n this.error = true;\n }\n const data = await response.json();\n this.area = data.area;\n this.element = data.element;\n this.detail = data.detail;\n this.characteristics = data.characteristics as Characteristic[];\n this.extensionFiles = data.extension_files;\n const ubiInfo = data.mandatory_drupal_fields.ubication;\n if (ubiInfo?.street_name && ubiInfo?.number) {\n this.activeMap = true;\n this._loadMap();\n }\n\n return data;\n },\n args: () => [this.detailID],\n });\n\n override updated() {\n this.addOnChangEventToInputs();\n }\n\n private changeTab(value: Boolean) {\n this.isCitizen = value;\n }\n\n override render() {\n let content = html``;\n\n if (this.error || this.submited) {\n content = this.error ? this.renderError() : this.renderSuccess();\n } else {\n content = this.renderForm();\n }\n\n return html` ${this.renderHeader()}\n <main class=\"container\">${content}</main>`;\n }\n\n renderError() {\n return html`\n <section class=\"success-submit\">\n <article class=\"success-submit__card success-submit__card--error \">\n <svg\n class=\"succes-submit__svg succes-submit__svg--error\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100px\"\n height=\"100px\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M10.0303 8.96965C9.73741 8.67676 9.26253 8.67676 8.96964 8.96965C8.67675 9.26255 8.67675 9.73742 8.96964 10.0303L10.9393 12L8.96966 13.9697C8.67677 14.2625 8.67677 14.7374 8.96966 15.0303C9.26255 15.3232 9.73743 15.3232 10.0303 15.0303L12 13.0607L13.9696 15.0303C14.2625 15.3232 14.7374 15.3232 15.0303 15.0303C15.3232 14.7374 15.3232 14.2625 15.0303 13.9696L13.0606 12L15.0303 10.0303C15.3232 9.73744 15.3232 9.26257 15.0303 8.96968C14.7374 8.67678 14.2625 8.67678 13.9696 8.96968L12 10.9393L10.0303 8.96965Z\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 1.25C6.06294 1.25 1.25 6.06294 1.25 12C1.25 17.9371 6.06294 22.75 12 22.75C17.9371 22.75 22.75 17.9371 22.75 12C22.75 6.06294 17.9371 1.25 12 1.25ZM2.75 12C2.75 6.89137 6.89137 2.75 12 2.75C17.1086 2.75 21.25 6.89137 21.25 12C21.25 17.1086 17.1086 21.25 12 21.25C6.89137 21.25 2.75 17.1086 2.75 12Z\"\n />\n </svg>\n <h2 class=\"succes-submit__title\">${msg('Ha ocurrido un error')}</h2>\n <p class=\"success-submit__text\">\n ${msg('Sentimos las molestias. Vuelva a intentelo más tarde')}.\n </p>\n <a class=\"success-submit__anchor btn btn-error text-center\" href=\"/\"\n >${msg('Volver')}</a\n >\n </article>\n </section>\n `;\n }\n renderSuccess() {\n return html`\n <section class=\"success-submit\">\n <article class=\"success-submit__card\">\n <svg\n class=\"succes-submit__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100px\"\n height=\"100px\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M16.0303 10.0303C16.3232 9.73744 16.3232 9.26256 16.0303 8.96967C15.7374 8.67678 15.2626 8.67678 14.9697 8.96967L10.5 13.4393L9.03033 11.9697C8.73744 11.6768 8.26256 11.6768 7.96967 11.9697C7.67678 12.2626 7.67678 12.7374 7.96967 13.0303L9.96967 15.0303C10.2626 15.3232 10.7374 15.3232 11.0303 15.0303L16.0303 10.0303Z\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 1.25C6.06294 1.25 1.25 6.06294 1.25 12C1.25 17.9371 6.06294 22.75 12 22.75C17.9371 22.75 22.75 17.9371 22.75 12C22.75 6.06294 17.9371 1.25 12 1.25ZM2.75 12C2.75 6.89137 6.89137 2.75 12 2.75C17.1086 2.75 21.25 6.89137 21.25 12C21.25 17.1086 17.1086 21.25 12 21.25C6.89137 21.25 2.75 17.1086 2.75 12Z\"\n />\n </svg>\n <h2 class=\"succes-submit__title\">${msg('¡Ficha creada!')}</h2>\n <p class=\"success-submit__text\">\n ${msg('El codi de seguiment és')}:\n <strong class=\"color-primary\">${this.incidenceId}</strong>\n </p>\n <button type=\"button\" class=\"success-submit__anchor btn text-center\" @click=\"${() => history.back()}\">${msg('Volver')}:</button>\n </article>\n </section>\n `;\n }\n\n renderHeader() {\n return html`\n <header class=\"header\">\n <h1 class=\"header__title\">\n ${this.area} &gt; ${this.element} &gt; ${this.detail}\n </h1>\n <p class=\"header__info\">\n ${msg('Agradecemos que nos haya hecho llegar su reconocimiento, el cual se hará llegar al departamento responsable. Con esta información, damos por contestada su comunicación')}.\n </p>\n <p class=\"header__info info--danger\">\n ${msg('Los campos marcados con un (*) son obligatorios.')}\n </p>\n </header>\n `;\n }\n\n renderForm() {\n const classesActiveCitizen = this.isCitizen ? 'tablink--active' : '';\n const classesActiveCompnay = !this.isCitizen ? 'tablink--active' : '';\n\n const stylesCharacteristics = {\n display: this.characteristics.length == 0 ? 'none' : '',\n };\n\n return html`\n <section class=\"record\">\n <h2 class=\"record__comment\">${msg('Mensaje')}</h2>\n <form method=\"post\" @submit=${this.onSubmit}>\n <input\n type=\"hidden\"\n name=\"detailId\"\n value=\"${ifDefined(this.detailID)}\"\n />\n <label for=\"comments\">${msg('Escriba brevemente su mensaje')}*:</label>\n <textarea\n id=\"comments\"\n name=\"comments\"\n required\n minlength=\"4\"\n placeholder=${msg('Escribe tu consulta aquí')}\n ></textarea>\n <label for=\"file\">${msg('Añadir archivo')}</label>\n <input\n multiple\n accept=\".${this.extensionFiles.split(';').join(',.')}\"\n type=\"file\"\n name=\"file\"\n id=\"input_1\"\n aria-describedby=\"help-input_1\"\n />\n <p class=\"text-error\"></p>\n <div class=\"help-text\" id=\"file\">\n ${msg('Aceptados:')} ${this.extensionFiles}\n </div>\n\n <section class=\"map\">\n <h2 class=\"text-center\">${msg('Ubicación')}</h2>\n <div id=\"map\" ?hidden=${!this.activeMap}></div>\n ${when(\n this.activeMap,\n () => this.renderMap(),\n () =>\n this.ubiDistricts.length > 0\n ? html`\n <div>\n <label for=\"map-district\">${msg('Distrito*:')}</label>\n <select\n required\n id=\"map-district\"\n name=\"location.district\"\n >\n ${this.ubiDistricts.map(\n (district: any) =>\n html`<option value=\"${district.value}\">\n ${district.label}\n </option>`\n )}\n </select>\n </div>\n `\n : html``\n )}\n </section>\n\n <h2\n class=\"text-center color-primary\"\n style=${styleMap(stylesCharacteristics)}\n >\n ${msg('Características de la petición')}\n </h2>\n <section class=\"characteristics-form\">\n ${this._fetchFields.render({\n pending: () => html`<p>${msg('Cargando formulario')}...</p>`,\n complete: () => html`\n ${this.characteristics.map(\n (characteristic) => html`\n <div>\n <label for=\"niris-${characteristic.id}\"\n >${characteristic.title}${characteristic.mandatory\n ? '*'\n : ''}:</label\n >\n ${choose(\n characteristic.type,\n [\n [\n CharacteristicTypeEnum.Number,\n () =>\n html`<input\n id=\"niris-${characteristic.id}\"\n name=\"characteristic-${characteristic.id}\"\n type=\"number\"\n ?required=${characteristic.mandatory}\n placeholder=${characteristic.explanatory_text}\n />`,\n ],\n [\n CharacteristicTypeEnum.Options,\n () => html`<select\n id=\"niris-${characteristic.id}\"\n name=\"characteristic-${characteristic.id}\"\n ?required=${characteristic.mandatory}\n >\n ${characteristic.options.map(\n (option) =>\n html`<option value=\"${option}\">\n ${option}\n </option>`\n )}\n </select>`,\n ],\n [\n CharacteristicTypeEnum.Date,\n () =>\n html`<input\n id=\"niris-${characteristic.id}\"\n name=\"characteristic-${characteristic.id}\"\n type=\"date\"\n ?required=${characteristic.mandatory}\n />`,\n ],\n [\n CharacteristicTypeEnum.Time,\n () =>\n html`<input\n id=\"niris-${characteristic.id}\"\n name=\"characteristic-${characteristic.id}\"\n type=\"time\"\n ?required=${characteristic.mandatory}\n />`,\n ],\n [\n CharacteristicTypeEnum.Text,\n () =>\n html`<input\n id=\"niris-${characteristic.id}\"\n name=\"characteristic-${characteristic.id}\"\n type=\"text\"\n ?required=${characteristic.mandatory}\n placeholder=${characteristic.explanatory_text}\n />`,\n ],\n ],\n () => html`<p>${msg('Not implemented')}</p>`\n )}\n </div>\n `\n )}\n `,\n error: () => html`<p>${msg('Error cargando el formulario')}</p>`,\n })}\n </section>\n\n <h2 class=\"text-center\">${msg('Datos personales')}</h2>\n <div class=\"tab\">\n <div\n class=\"tab__tablink ${classesActiveCitizen}\"\n @click=${() => this.changeTab(true)}\n >\n ${msg('Ciudadano')}\n </div>\n <div\n class=\"tab__tablink ${classesActiveCompnay}\"\n @click=\"${() => this.changeTab(false)}\"\n >\n ${msg('Empresa/Entidad')}\n </div>\n </div>\n <div class=\"tab__tabcontent\">\n ${this.isCitizen\n ? this.renderCitizenForm()\n : this.renderCompanyForm()}\n </div>\n <button id=\"submit-btn\" type=\"submit\" ?disabled=${this.loading}>\n <div class=\"loader\" ?hidden=${!this.loading} id=\"loader\"></div>\n ${this.loading ? 'Enviando' : 'Enviar'}\n <!-- TODO -->\n </button>\n </form>\n </section>\n `;\n }\n\n renderCitizenForm() {\n return html`\n <div>\n <label for=\"nameCitizen\">${msg('Nombre')}*:</label>\n <input id=\"nameCitizen\" name=\"nameCitizen\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"firstSurname\">${msg('Primer apellido')}*:</label>\n <input id=\"firstSurname\" name=\"firstSurname\" type=\"text\" />\n </div>\n\n <div>\n <label for=\"secondSurname\">${msg('Segundo apellido')}*:</label>\n <input id=\"secondSurname\" name=\"secondSurname\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"document-type\">${msg('Tipo de Documento')}*:</label>\n <select id=\"typeDocument\" name=\"typeDocument\" required>\n <option value=\"0\" selected>${msg('NIF/DNI')}</option>\n <option value=\"1\">${msg('NIE')}</option>\n <option value=\"2\">${msg('Passaporte')}</option>\n </select>\n </div>\n\n <div>\n <label for=\"numberDocument\">${msg('Núm. Documento')}*:</label>\n <input\n id=\"numberDocument\"\n name=\"numberDocument\"\n type=\"text\"\n required\n />\n </div>\n\n <div>\n <label for=\"birthYear\">${msg('Año de nacimiento')}:</label>\n <select id=\"birthYear\" name=\"birthYear\">\n ${this.years().map(\n (year) => html`<option value=\"${year}\">${year}</option>`\n )}\n </select>\n </div>\n\n ${this.ubiDistricts.length > 0\n ? html`\n <div>\n <label for=\"district\">${msg('Distrito')}*:</label>\n <select required id=\"district\" name=\"district\">\n ${this.ubiDistricts.map(\n (district: any) =>\n html`<option value=\"${district.value}\">\n ${district.label}\n </option>`\n )}\n </select>\n </div>\n `\n : nothing}\n\n <div>\n <label for=\"email\">${msg('Correo electrónico')}*:</label>\n <input\n id=\"email\"\n name=\"email\"\n type=\"email\"\n required\n placeholder=${msg('Escribe tu correo')}\n />\n </div>\n\n <div>\n <label for=\"email_confirm\">${msg('Confirma correo electrónico')}*:</label>\n <input\n id=\"email_confirm\"\n name=\"email_confirm\"\n @focusout=${(event: FocusEvent) => this.confirmEmail(event as FocusEvent)}\n type=\"email\"\n required\n placeholder=${msg('Confirma tu correo')}\n />\n <span class=\"text-error\" hidden id=\"email_confirm_error\"\n >${msg('Los emails no conciden')}</span\n >\n </div>\n\n <div>\n <label for=\"phone\">${msg('Teléfono')}*:</label>\n <input\n id=\"phone\"\n name=\"phone\"\n type=\"tel\"\n minlength=\"9\"\n placeholder=${msg('Escribe tu teléfono')}\n />\n </div>\n `;\n }\n\n renderCompanyForm() {\n return html`\n <div>\n <label for=\"socialReason\">${msg('Razón social')}*:</label>\n <input id=\"socialReason\" name=\"socialReason\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"contactPerson\">${msg('Persona de contacto')}*:</label>\n <input id=\"contactPerson\" name=\"contactPerson\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"cif\">${msg('CIF')}*:</label>\n <input id=\"cif\" name=\"cif\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"email\">${msg('Email')}*:</label>\n <input\n id=\"email\"\n name=\"email\"\n type=\"text\"\n type=\"email\"\n required\n />\n </div>\n\n <div>\n <label for=\"email_confirm\">${msg('Confirma el email')}*:</label>\n <input\n id=\"email_confirm\"\n name=\"email_confirm\"\n type=\"text\"\n type=\"email\"\n required\n @focusout=${(event: FocusEvent) => this.confirmEmail(event as FocusEvent)}\n />\n <span class=\"text-error\" hidden id=\"email_confirm_error\"\n >${msg('Los emails no conciden')}</span\n >\n </div>\n\n <div>\n <label for=\"phone\">${msg('Idioma de la respuesta')}*:</label>\n <select id=\"phone\" name=\"language\" required>\n <option value=\"es\" selected>${msg('Español')}</option>\n <option value=\"ca\">${msg('Catalán')}</option>\n <option value=\"en\">${msg('Inglés')}</option>\n </select>\n </div>\n `;\n }\n\n renderMap() {\n return html`\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.skypack.dev/leaflet/dist/leaflet.css\"\n />\n <section class=\"map-form\">\n <div>\n <label for=\"map-address\">${msg('Calle')}*:</label>\n <input\n id=\"map-address\"\n required\n type=\"text\"\n @keyup=\"${(event: KeyboardEvent) =>\n (this.street = (event.target as HTMLInputElement).value)}\"\n .value=\"${this.street}\"\n name=\"address\"\n />\n <input name=\"latitude\" hidden .value=\"${this.latitude}\" />\n <input name=\"longitude\" hidden .value=\"${this.longitude}\" />\n </div>\n\n <div>\n <label for=\"map-number\">${msg('Número')}*:</label>\n <input\n id=\"map-number\"\n @keyup=\"${(event: KeyboardEvent) =>\n (this.streetNumber = (event.target as HTMLInputElement).value)}\"\n .value=\"${this.streetNumber}\"\n required\n type=\"text\"\n name=\"number\"\n />\n </div>\n\n <div>\n <button\n type=\"button\"\n .disabled=\"${!this.street.length}\"\n @click=\"${this.searchAddress}\"\n >\n ${msg('Buscar')}\n </button>\n </div>\n </section>\n\n <section class=\"map-form-grid\">\n <div>\n <label for=\"map-floor\">${msg('Piso')}:</label>\n <input id=\"map-floor\" type=\"text\" name=\"floor\" />\n </div>\n\n <div>\n <label for=\"map-stair\">${msg('Escalera')}:</label>\n <input id=\"map-stair\" type=\"text\" name=\"stair\" />\n </div>\n\n <div>\n <label for=\"map-door\">${msg('Puerta')}:</label>\n <input id=\"map-door\" type=\"text\" name=\"door\" />\n </div>\n </section>\n `;\n }\n\n async onSubmit(event: SubmitEvent) {\n this.loading = true;\n event.preventDefault();\n event.stopImmediatePropagation();\n\n const form = event.target as HTMLFormElement;\n\n if (!form.checkValidity()) {\n form.reportValidity();\n this.loading = false;\n return;\n } \n\n const files = form.file.files;\n const formData = new FormData();\n const value: FormDataIncidents = Object.fromEntries(\n new FormData(form).entries()\n );\n\n if (this.activeMap) {\n value.location = {};\n value.location['address'] = value.address;\n value.location['number'] = value.number;\n value.location['latitude'] = value.latitude;\n value.location['longitude'] = value.longitude;\n value.location['floor'] = value.floor;\n value.location['stair'] = value.stair;\n value.location['door'] = value.door;\n } else {\n value.location = {district: value.district};\n }\n\n //Save the file separated from the body\n value.file = [];\n if (files.length > 0) {\n for (let i = 0; i < files.length; i++) {\n const file = {\n filename: files[i].name,\n file: files[i],\n };\n value.file.push(file);\n }\n }\n\n // add inputs with name starting with \"characteristic-\" to the values object adding a new key \"characteristics\"\n const characteristics = Object.keys(value).filter((key) =>\n key.startsWith('characteristic-')\n );\n value.characteristics = characteristics.map((key) => {\n const id = key.split('-')[1];\n // @ts-ignore\n const val = value[key];\n // @ts-ignore\n delete value[key];\n\n return {id, value: val} as unknown as CharacteristicElement;\n });\n\n formData.append('body', JSON.stringify(value));\n\n const response = await fetch(`${this.getApiUrl()}/incidences`, {\n headers: {\n 'Accept-Language': this.locale,\n },\n method: 'POST',\n body: formData,\n });\n\n if (!response.ok && response.status !== 400) {\n this.error = true;\n this.loading = false;\n return;\n }\n\n if (response.status === 400) {\n const data = await response.json();\n this.handlerError(data);\n } else {\n const data = await response.json();\n this.incidenceId = data.incidenceId;\n this.submited = true;\n }\n this.loading = false;\n }\n\n handlerError(data: any) {\n const errors = data;\n Object.keys(errors).map((key) => {\n const input = this.shadowRoot?.getElementById(\n `${key}`\n ) as HTMLInputElement;\n if (key in errors && input) {\n input.setCustomValidity(errors[key]);\n input.reportValidity();\n }\n });\n\n if ('characteristics' in errors) {\n const characteristics = errors['characteristics'];\n for (const [key, errors] of characteristics.entries()) {\n if (Object.keys(errors).length !== 0) {\n debugger;\n const input = this.shadowRoot?.getElementById(\n `niris-${key}`\n ) as HTMLInputElement;\n errors.value.forEach((error: string) => {\n input.setCustomValidity(error);\n input.reportValidity();\n });\n }\n }\n }\n }\n\n confirmEmail(event: FocusEvent) {\n const email = this.shadowRoot?.getElementById('email') as HTMLInputElement;\n const emailConfirm = this.shadowRoot?.getElementById(\n 'email_confirm'\n ) as HTMLInputElement;\n const error = this.shadowRoot?.getElementById(\n 'email_confirm_error'\n ) as HTMLElement;\n const submit = this.shadowRoot?.getElementById(\n 'submit-btn'\n ) as HTMLButtonElement;\n\n if (email.value !== emailConfirm.value) {\n error.hidden = false;\n submit.disabled = true;\n emailConfirm.classList.add('invalid');\n } else {\n error.hidden = true;\n submit.disabled = false;\n emailConfirm.classList.remove('invalid');\n }\n\n (event.target as HTMLInputElement).reportValidity();\n }\n\n years(): number[] {\n const currentYear = new Date().getFullYear();\n const years = [];\n for (let i = currentYear - 100; i <= currentYear; i++) {\n years.push(i);\n }\n\n years.reverse();\n return years;\n }\n\n async onMapClick(e: LeafletMouseEvent) {\n if (this._marker) {\n this._map.removeLayer(this._marker);\n }\n this._marker = new L.marker([e.latlng.lat, e.latlng.lng], {\n icon: this._markerIcon,\n }).addTo(this._map);\n try {\n const response = await fetch(\n `${this.domain}/geo_proxy/ubication/reverse/?lat=${e.latlng.lat}&lon=${e.latlng.lng}`,\n {\n headers: {\n 'Accept-Language': this.locale,\n },\n }\n );\n if (!response.ok) {\n throw new Error(response.statusText);\n } else {\n const ubi = await response.json();\n this.street = ubi.street;\n this.streetNumber = ubi.street2;\n this.latitude = ubi.latitude;\n this.longitude = ubi.longitude;\n }\n } catch (error) {\n console.info(error);\n }\n }\n\n async searchAddress() {\n try {\n const response = await fetch(\n `${this.domain}/geo_proxy/ubication/search/?q=${this.street}, ${this.streetNumber}`,\n {\n headers: {\n 'Accept-Language': this.locale,\n },\n }\n );\n if (this._marker) {\n this._map.removeLayer(this._marker);\n }\n const data = await response.json();\n this._marker = new L.marker([data[0].lat, data[0].lon]).addTo(this._map);\n this._map.setView([data[0].lat, data[0].lon], 15);\n } catch (error) {\n console.error(error);\n }\n }\n\n static override styles = [\n globalStyles,\n css`\n :host {\n --primary-color: #03599d;\n --padding: 0.7rem 0.7rem;\n --font-size: 1rem;\n --border-radius: 0rem;\n --font-weight: 500;\n --font-family: 'Arial', sans-serif;\n --color-button: #fff;\n --error-color: #c23939;\n --tab-secondary-color: #ced1d7;\n }\n /* Style the tab */\n .tab {\n overflow: hidden;\n background-color: #e5e7eb;\n width: 100%;\n }\n\n /* Style the buttons inside the tab */\n .tab__tablink {\n background-color: inherit;\n float: left;\n border: none;\n outline: none;\n cursor: pointer;\n padding: 14px 0px;\n transition: 0.3s;\n font-size: 17px;\n line-height: 20px;\n width: 50%;\n text-align: center;\n font-weight: bold;\n color: #4b5563;\n border-top: 4px solid var(--tab-secondary-color);\n background-color: var(--tab-secondary-color);\n }\n .tab__tabcontent {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 0.5rem;\n justify-content: space-between;\n width: 100%;\n background-color: #e5e7eb;\n padding: 1.5rem;\n color: #676774;\n font-size: 16px;\n line-height: 20px;\n font-weight: 500;\n }\n\n .tablink--active {\n background-color: #e5e7eb;\n color: #4b5563;\n border-top: 4px solid var(--primary-color);\n }\n\n .tab__tablink:not(.tablink--active):hover {\n filter: brightness(90%);\n color: #545466;\n }\n\n .container {\n max-width: 1280px;\n width: 100%;\n margin: 0 auto;\n }\n\n .header {\n padding: 2rem;\n text-align: center;\n margin: 0 auto;\n background-color: #f5f5f5;\n }\n\n .header__info {\n margin: 0.5rem auto;\n max-width: 1280px;\n color: #676774;\n }\n .header__title {\n font-size: 1.8rem;\n }\n\n .info--danger {\n color: red;\n }\n\n .record {\n width: 70%;\n margin: 0 auto;\n }\n\n .record__comment {\n font-size: 1.5rem;\n margin-bottom: 2rem;\n text-align: center;\n }\n\n /* utility classes */\n .color-primary {\n color: var(--primary-color);\n }\n\n .hide {\n display: none;\n }\n\n .text-center {\n text-align: center;\n }\n\n .mx-auto {\n margin: 0 auto;\n }\n\n .self-center {\n align-self: center;\n }\n\n .help-text {\n font-size: 0.9rem;\n color: #676774;\n }\n\n /* characteristics-form\" */\n .characteristics-form {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 0.5rem;\n }\n\n /* Success Card */\n .success-submit {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .success-submit__card {\n margin: 4rem 0;\n width: 25rem;\n height: 35rem;\n -webkit-box-shadow: 2px 2px 15px 0px rgba(77, 77, 77, 0.5);\n -moz-box-shadow: 2px 2px 15px 0px rgba(77, 77, 77, 0.5);\n box-shadow: 2px 2px 15px 0px rgba(77, 77, 77, 0.5);\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n border-top: 5px solid var(--primary-color);\n }\n\n .success-submit__card:hover {\n -webkit-box-shadow: 2px 2px 15px 0px rgba(77, 77, 77, 0.5);\n -moz-box-shadow: 2px 2px 15px 0px rgba(77, 77, 77, 0.5);\n box-shadow: 4px 4px 17px 2px rgba(77, 77, 77, 0.5);\n transition: 0.5s;\n }\n\n .success-submit__card--error {\n border-top: 5px solid var(--error-color);\n }\n\n .succes-submit__svg {\n margin-top: 20%;\n fill: var(--primary-color);\n filter: opacity(70%);\n }\n\n .succes-submit__svg:hover {\n transform: rotate(360deg);\n transition: 0.5s;\n }\n\n .succes-submit__svg--error {\n fill: var(--error-color);\n }\n\n .succes-submit__title {\n font-size: 1.8rem;\n margin-bottom: 2rem;\n color: #373e47;\n }\n\n .success-submit__text {\n font-size: 1.3rem;\n padding: 0 3rem;\n text-align: center;\n }\n\n .success-submit__anchor {\n font-size: 1.2rem;\n text-decoration: none;\n width: 100%;\n padding: 1rem;\n }\n\n /* Map */\n #map {\n margin-bottom: 2rem;\n width: 100%;\n height: 30vh;\n border: 1px solid #676774;\n }\n .map-form {\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n gap: 1rem;\n }\n\n .map-form div:nth-child(1) {\n flex-basis: 60%;\n }\n .map-form div:nth-child(2) {\n flex-basis: 30%;\n }\n .map-form button {\n flex-basis: 20%;\n margin-bottom: 0.5rem;\n }\n\n .map-form-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 1rem;\n }\n\n .loader {\n width: 18px;\n padding: 4px;\n float: left;\n aspect-ratio: 1;\n border-radius: 50%;\n background: #ffffff;\n --_m: \n conic-gradient(#22222200 10%,#000),\n linear-gradient(#000 0 0) content-box;\n -webkit-mask: var(--_m);\n mask: var(--_m);\n -webkit-mask-composite: source-out;\n mask-composite: subtract;\n animation: l3 1s infinite linear;\n }\n @keyframes l3 {to{transform: rotate(1turn)}}\n\n /* Media queries */\n @media screen and (max-width: 640px) {\n .record {\n width: 96%;\n }\n .success-submit__card {\n width: 80%;\n }\n }\n `,\n ];\n}\n\ncustomElements.define('form-niris', FormNiris);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'form-niris': FormNiris;\n }\n}\n"]}
1
+ {"version":3,"file":"form-niris.js","sourceRoot":"","sources":["../src/form-niris.ts"],"names":[],"mappings":"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","sourcesContent":["import {LitElement, html, css, nothing} from 'lit';\nimport {property, state} from 'lit/decorators.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport {choose} from 'lit/directives/choose.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\nimport {when} from 'lit/directives/when.js';\nimport {Task} from '@lit/task';\nimport {globalStyles} from './styles/globalStyles';\nimport {Icon, LeafletMouseEvent, Map, Marker} from 'leaflet';\nimport {msg, localized } from '@lit/localize';\nimport {\n Characteristic,\n CharacteristicElement,\n CharacteristicTypeEnum,\n Districte,\n FormDataIncidents,\n} from './types';\nimport {configureLocalization} from '@lit/localize';\n// Generated via output.localeCodesModule\nimport {sourceLocale, targetLocales} from './generated/locale-codes.js';\n\n// https://github.com/Leaflet/Leaflet/issues/7055\n// https://github.com/Leaflet/Leaflet/pull/7174\n// https://github.com/Leaflet/Leaflet/pull/6239\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport * as L from 'leaflet/dist/leaflet-src.esm.js';\n\n\nexport const {getLocale, setLocale} = configureLocalization({\n sourceLocale,\n targetLocales,\n loadLocale: (locale) => import(`./generated/locales/${locale}.js`),\n});\n\n/* TODO:\n- Boton volver, ruta por property o volver atras mirando hsitory\n- Mascaras \n- Validaciones archivos extensiones.\n*/\n\n/**\n * An example element.\n */\n@localized()\nexport class FormNiris extends LitElement {\n @property({type: Number}) detailID: Number | undefined;\n @property({type: String}) actionUrl: string;\n @property({type: String}) apiUrl: string;\n\n @property({type: String}) area: string;\n @property({type: String}) element: string;\n @property({type: String}) detail: string;\n @property({type: Array}) characteristics: Characteristic[];\n\n private _marker!: Marker | null;\n private _map!: Map;\n private _markerIcon!: Icon;\n\n @property({type: String}) defaultLat = '39.5701058'; // Palma de Mallorca\n @property({type: String}) defaultLon = '2.6487098';\n\n @property({type: String}) locale: 'es' | 'en' | 'ca' = 'es';\n\n @state()\n private isCitizen: Boolean = true;\n\n @state()\n private activeMap = false;\n\n @state()\n private ubiDistricts: Object[] = [];\n\n @state()\n private submited = false;\n\n @state()\n private error = false;\n\n @state()\n private incidenceId = '';\n\n @state()\n private extensionFiles = '';\n\n /* Map */\n @property({type: String}) domain =\n 'https://iris2-backend-demo-iris-community.labs.apsl.io/services/iris/api-public';\n // TODO property for lat and lon\n\n @state()\n private street = '';\n\n @state()\n private streetNumber = '';\n\n @state()\n private latitude = '';\n\n @state()\n private longitude = '';\n\n @state()\n private loading = false;\n\n constructor() {\n super();\n this.detailID = undefined;\n this.actionUrl = '';\n this.apiUrl = '';\n\n this.area = '';\n this.element = '';\n this.detail = '';\n this.extensionFiles = '';\n this.characteristics = [];\n\n this.locale = this.locale ? this.locale : 'es';\n // setLocale(this.locale);\n\n // Map\n L.Icon.Default.imagePath = `https://unpkg.com/leaflet@${L.version}/dist/images/`;\n this._markerIcon = new L.Icon({\n iconUrl:\n 'https://raw.githubusercontent.com/pointhi/leaflet-color-markers/master/img/marker-icon-blue.png',\n shadowUrl:\n 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/0.7.7/images/marker-shadow.png',\n iconSize: [25, 41],\n iconAnchor: [12, 41],\n popupAnchor: [1, -34],\n shadowSize: [41, 41],\n }); \n }\n\n getApiUrl() {\n if (this.apiUrl.endsWith('/')) {\n return this.apiUrl.slice(0, this.apiUrl.lastIndexOf('/'));\n } else {\n return this.apiUrl;\n }\n }\n\n _loadMap() {\n const mapEl = this.shadowRoot?.querySelector('#map');\n this._map = L.map(mapEl, {\n markerZoomAnimation: false,\n attributionControl: false,\n }).setView([this.defaultLat, this.defaultLon], 15);\n\n L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {\n attribution:\n '&copy; <a href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors',\n }).addTo(this._map);\n\n this._map.on('click', (e) => this.onMapClick(e));\n }\n\n override firstUpdated() {\n /* Disable default form validation */\n const form = this.shadowRoot?.querySelector('form');\n form?.setAttribute('novalidate', '');\n this.addOnChangEventToInputs()\n }\n\n addOnChangEventToInputs() {\n const inputs: HTMLInputElement[] = Array.from(this.shadowRoot?.querySelectorAll('input') ?? []);\n inputs.forEach((input: HTMLInputElement) => {\n input.addEventListener('keyup', () => { \n input.setCustomValidity('');\n });\n });\n }\n\n /* Lifecycle */\n override connectedCallback() {\n super.connectedCallback();\n this._fetchDistricts();\n }\n\n private async _fetchDistricts() {\n const response = await fetch(`${this.getApiUrl()}/districts`, {\n headers: {\n 'Accept-Language': this.locale,\n },\n });\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n const data = await response.json();\n\n data.results.map((district: Districte) => {\n this.ubiDistricts.push({value: `${district.id}`, label: district.name});\n });\n }\n\n private _fetchFields = new Task(this, {\n task: async ([detailID], {signal}) => {\n const response = await fetch(\n `${this.getApiUrl()}/details/${detailID}/fields`,\n {\n headers: {\n 'Accept-Language': this.locale,\n },\n signal\n }\n );\n if (!response.ok) {\n this.error = true;\n }\n const data = await response.json();\n this.area = data.area;\n this.element = data.element;\n this.detail = data.detail;\n this.characteristics = data.characteristics as Characteristic[];\n this.extensionFiles = data.extension_files;\n const ubiInfo = data.mandatory_drupal_fields.ubication;\n if (ubiInfo?.street_name && ubiInfo?.number) {\n this.activeMap = true;\n this._loadMap();\n }\n\n return data;\n },\n args: () => [this.detailID],\n });\n\n override updated() {\n this.addOnChangEventToInputs();\n }\n\n private changeTab(value: Boolean) {\n this.isCitizen = value;\n }\n\n override render() {\n let content = html``;\n\n if (this.error || this.submited) {\n content = this.error ? this.renderError() : this.renderSuccess();\n } else {\n content = this.renderForm();\n }\n\n return html` ${this.renderHeader()}\n <main class=\"container\">${content}</main>`;\n }\n\n renderError() {\n return html`\n <section class=\"success-submit\">\n <article class=\"success-submit__card success-submit__card--error \">\n <svg\n class=\"succes-submit__svg succes-submit__svg--error\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100px\"\n height=\"100px\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M10.0303 8.96965C9.73741 8.67676 9.26253 8.67676 8.96964 8.96965C8.67675 9.26255 8.67675 9.73742 8.96964 10.0303L10.9393 12L8.96966 13.9697C8.67677 14.2625 8.67677 14.7374 8.96966 15.0303C9.26255 15.3232 9.73743 15.3232 10.0303 15.0303L12 13.0607L13.9696 15.0303C14.2625 15.3232 14.7374 15.3232 15.0303 15.0303C15.3232 14.7374 15.3232 14.2625 15.0303 13.9696L13.0606 12L15.0303 10.0303C15.3232 9.73744 15.3232 9.26257 15.0303 8.96968C14.7374 8.67678 14.2625 8.67678 13.9696 8.96968L12 10.9393L10.0303 8.96965Z\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 1.25C6.06294 1.25 1.25 6.06294 1.25 12C1.25 17.9371 6.06294 22.75 12 22.75C17.9371 22.75 22.75 17.9371 22.75 12C22.75 6.06294 17.9371 1.25 12 1.25ZM2.75 12C2.75 6.89137 6.89137 2.75 12 2.75C17.1086 2.75 21.25 6.89137 21.25 12C21.25 17.1086 17.1086 21.25 12 21.25C6.89137 21.25 2.75 17.1086 2.75 12Z\"\n />\n </svg>\n <h2 class=\"succes-submit__title\">${msg('Ha ocurrido un error')}</h2>\n <p class=\"success-submit__text\">\n ${msg('Sentimos las molestias. Vuelva a intentelo más tarde')}.\n </p>\n <a class=\"success-submit__anchor btn btn-error text-center\" href=\"/\"\n >${msg('Volver')}</a\n >\n </article>\n </section>\n `;\n }\n renderSuccess() {\n return html`\n <section class=\"success-submit\">\n <article class=\"success-submit__card\">\n <svg\n class=\"succes-submit__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"100px\"\n height=\"100px\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M16.0303 10.0303C16.3232 9.73744 16.3232 9.26256 16.0303 8.96967C15.7374 8.67678 15.2626 8.67678 14.9697 8.96967L10.5 13.4393L9.03033 11.9697C8.73744 11.6768 8.26256 11.6768 7.96967 11.9697C7.67678 12.2626 7.67678 12.7374 7.96967 13.0303L9.96967 15.0303C10.2626 15.3232 10.7374 15.3232 11.0303 15.0303L16.0303 10.0303Z\"\n />\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M12 1.25C6.06294 1.25 1.25 6.06294 1.25 12C1.25 17.9371 6.06294 22.75 12 22.75C17.9371 22.75 22.75 17.9371 22.75 12C22.75 6.06294 17.9371 1.25 12 1.25ZM2.75 12C2.75 6.89137 6.89137 2.75 12 2.75C17.1086 2.75 21.25 6.89137 21.25 12C21.25 17.1086 17.1086 21.25 12 21.25C6.89137 21.25 2.75 17.1086 2.75 12Z\"\n />\n </svg>\n <h2 class=\"succes-submit__title\">${msg('¡Ficha creada!')}</h2>\n <p class=\"success-submit__text\">\n ${msg('El codi de seguiment és')}:\n <strong class=\"color-primary\">${this.incidenceId}</strong>\n </p>\n <button type=\"button\" class=\"success-submit__anchor btn text-center\" @click=\"${() => history.back()}\">${msg('Volver')}:</button>\n </article>\n </section>\n `;\n }\n\n renderHeader() {\n return html`\n <header class=\"header\">\n <h1 class=\"header__title\">\n ${this.area} &gt; ${this.element} &gt; ${this.detail}\n </h1>\n <p class=\"header__info\">\n ${msg('Agradecemos que nos haya hecho llegar su reconocimiento, el cual se hará llegar al departamento responsable. Con esta información, damos por contestada su comunicación')}.\n </p>\n <p class=\"header__info info--danger\">\n ${msg('Los campos marcados con un (*) son obligatorios.')}\n </p>\n </header>\n `;\n }\n\n renderForm() {\n const classesActiveCitizen = this.isCitizen ? 'tablink--active' : '';\n const classesActiveCompnay = !this.isCitizen ? 'tablink--active' : '';\n\n const stylesCharacteristics = {\n display: this.characteristics.length == 0 ? 'none' : '',\n };\n\n return html`\n <section class=\"record\">\n <h2 class=\"record__comment\">${msg('Mensaje')}</h2>\n <form method=\"post\" @submit=${this.onSubmit}>\n <input\n type=\"hidden\"\n name=\"detailId\"\n value=\"${ifDefined(this.detailID)}\"\n />\n <label for=\"comments\">${msg('Escriba brevemente su mensaje')}*:</label>\n <textarea\n id=\"comments\"\n name=\"comments\"\n required\n minlength=\"4\"\n placeholder=${msg('Escribe tu consulta aquí')}\n ></textarea>\n <label for=\"file\">${msg('Añadir archivo')}</label>\n <input\n multiple\n accept=\".${this.extensionFiles.split(';').join(',.')}\"\n type=\"file\"\n name=\"file\"\n id=\"input_1\"\n aria-describedby=\"help-input_1\"\n />\n <p class=\"text-error\"></p>\n <div class=\"help-text\" id=\"file\">\n ${msg('Aceptados:')} ${this.extensionFiles}\n </div>\n\n <section class=\"map\">\n <h2 class=\"text-center\">${msg('Ubicación')}</h2>\n <div id=\"map\" ?hidden=${!this.activeMap}></div>\n ${when(\n this.activeMap,\n () => this.renderMap(),\n () =>\n this.ubiDistricts.length > 0\n ? html`\n <div>\n <label for=\"map-district\">${msg('Distrito*:')}</label>\n <select\n required\n id=\"map-district\"\n name=\"location.district\"\n >\n ${this.ubiDistricts.map(\n (district: any) =>\n html`<option value=\"${district.value}\">\n ${district.label}\n </option>`\n )}\n </select>\n </div>\n `\n : html``\n )}\n </section>\n\n <h2\n class=\"text-center color-primary\"\n style=${styleMap(stylesCharacteristics)}\n >\n ${msg('Características de la petición')}\n </h2>\n <section class=\"characteristics-form\">\n ${this._fetchFields.render({\n pending: () => html`<p>${msg('Cargando formulario')}...</p>`,\n complete: () => html`\n ${this.characteristics.map(\n (characteristic) => html`\n <div>\n <label for=\"niris-${characteristic.id}\"\n >${characteristic.title}${characteristic.mandatory\n ? '*'\n : ''}:</label\n >\n ${choose(\n characteristic.type,\n [\n [\n CharacteristicTypeEnum.Number,\n () =>\n html`<input\n id=\"niris-${characteristic.id}\"\n name=\"characteristic-${characteristic.id}\"\n type=\"number\"\n ?required=${characteristic.mandatory}\n placeholder=${characteristic.explanatory_text}\n />`,\n ],\n [\n CharacteristicTypeEnum.Options,\n () => html`<select\n id=\"niris-${characteristic.id}\"\n name=\"characteristic-${characteristic.id}\"\n ?required=${characteristic.mandatory}\n >\n ${characteristic.options.map(\n (option) =>\n html`<option value=\"${option}\">\n ${option}\n </option>`\n )}\n </select>`,\n ],\n [\n CharacteristicTypeEnum.Date,\n () =>\n html`<input\n id=\"niris-${characteristic.id}\"\n name=\"characteristic-${characteristic.id}\"\n type=\"date\"\n ?required=${characteristic.mandatory}\n />`,\n ],\n [\n CharacteristicTypeEnum.Time,\n () =>\n html`<input\n id=\"niris-${characteristic.id}\"\n name=\"characteristic-${characteristic.id}\"\n type=\"time\"\n ?required=${characteristic.mandatory}\n />`,\n ],\n [\n CharacteristicTypeEnum.Text,\n () =>\n html`<input\n id=\"niris-${characteristic.id}\"\n name=\"characteristic-${characteristic.id}\"\n type=\"text\"\n ?required=${characteristic.mandatory}\n placeholder=${characteristic.explanatory_text}\n />`,\n ],\n ],\n () => html`<p>${msg('Not implemented')}</p>`\n )}\n </div>\n `\n )}\n `,\n error: () => html`<p>${msg('Error cargando el formulario')}</p>`,\n })}\n </section>\n\n <h2 class=\"text-center\">${msg('Datos personales')}</h2>\n <div class=\"tab\">\n <div\n class=\"tab__tablink ${classesActiveCitizen}\"\n @click=${() => this.changeTab(true)}\n >\n ${msg('Ciudadano')}\n </div>\n <div\n class=\"tab__tablink ${classesActiveCompnay}\"\n @click=\"${() => this.changeTab(false)}\"\n >\n ${msg('Empresa/Entidad')}\n </div>\n </div>\n <div class=\"tab__tabcontent\">\n ${this.isCitizen\n ? this.renderCitizenForm()\n : this.renderCompanyForm()}\n </div>\n <button id=\"submit-btn\" type=\"submit\" ?disabled=${this.loading}>\n <div class=\"loader\" ?hidden=${!this.loading} id=\"loader\"></div>\n ${this.loading ? 'Enviando' : 'Enviar'}\n <!-- TODO -->\n </button>\n </form>\n </section>\n `;\n }\n\n renderCitizenForm() {\n return html`\n <div>\n <label for=\"nameCitizen\">${msg('Nombre')}*:</label>\n <input id=\"nameCitizen\" name=\"nameCitizen\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"firstSurname\">${msg('Primer apellido')}*:</label>\n <input id=\"firstSurname\" name=\"firstSurname\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"secondSurname\">${msg('Segundo apellido')}*:</label>\n <input id=\"secondSurname\" name=\"secondSurname\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"document-type\">${msg('Tipo de Documento')}*:</label>\n <select id=\"typeDocument\" name=\"typeDocument\" required>\n <option value=\"0\" selected>${msg('NIF/DNI')}</option>\n <option value=\"1\">${msg('NIE')}</option>\n <option value=\"2\">${msg('Passaporte')}</option>\n </select>\n </div>\n\n <div>\n <label for=\"numberDocument\">${msg('Núm. Documento')}*:</label>\n <input\n id=\"numberDocument\"\n name=\"numberDocument\"\n type=\"text\"\n required\n />\n </div>\n\n <div>\n <label for=\"birthYear\">${msg('Año de nacimiento')}:</label>\n <select id=\"birthYear\" name=\"birthYear\">\n ${this.years().map(\n (year) => html`<option value=\"${year}\">${year}</option>`\n )}\n </select>\n </div>\n\n ${this.ubiDistricts.length > 0\n ? html`\n <div>\n <label for=\"district\">${msg('Distrito')}*:</label>\n <select required id=\"district\" name=\"district\">\n ${this.ubiDistricts.map(\n (district: any) =>\n html`<option value=\"${district.value}\">\n ${district.label}\n </option>`\n )}\n </select>\n </div>\n `\n : nothing}\n\n <div>\n <label for=\"email\">${msg('Correo electrónico')}*:</label>\n <input\n id=\"email\"\n name=\"email\"\n type=\"email\"\n required\n placeholder=${msg('Escribe tu correo')}\n />\n </div>\n\n <div>\n <label for=\"email_confirm\">${msg('Confirma correo electrónico')}*:</label>\n <input\n id=\"email_confirm\"\n name=\"email_confirm\"\n @focusout=${(event: FocusEvent) => this.confirmEmail(event as FocusEvent)}\n type=\"email\"\n required\n placeholder=${msg('Confirma tu correo')}\n />\n <span class=\"text-error\" hidden id=\"email_confirm_error\"\n >${msg('Los emails no conciden')}</span\n >\n </div>\n\n <div>\n <label for=\"phone\">${msg('Teléfono')}*:</label>\n <input\n id=\"phone\"\n name=\"phone\"\n type=\"tel\"\n minlength=\"9\"\n placeholder=${msg('Escribe tu teléfono')}\n />\n </div>\n\n <div>\n <label for=\"language\">${msg('Idioma de la respuesta')}*:</label>\n <select id=\"language\" name=\"language\" required>\n <option value=\"es\" selected>${msg('Español')}</option>\n <option value=\"ca\">${msg('Catalán')}</option>\n <option value=\"en\">${msg('Inglés')}</option>\n </select>\n </div>\n `;\n }\n\n renderCompanyForm() {\n return html`\n <div>\n <label for=\"socialReason\">${msg('Razón social')}*:</label>\n <input id=\"socialReason\" name=\"socialReason\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"contactPerson\">${msg('Persona de contacto')}*:</label>\n <input id=\"contactPerson\" name=\"contactPerson\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"cif\">${msg('CIF')}*:</label>\n <input id=\"cif\" name=\"cif\" type=\"text\" required />\n </div>\n\n <div>\n <label for=\"email\">${msg('Email')}*:</label>\n <input\n id=\"email\"\n name=\"email\"\n type=\"text\"\n type=\"email\"\n required\n />\n </div>\n\n <div>\n <label for=\"email_confirm\">${msg('Confirma el email')}*:</label>\n <input\n id=\"email_confirm\"\n name=\"email_confirm\"\n type=\"text\"\n type=\"email\"\n required\n @focusout=${(event: FocusEvent) => this.confirmEmail(event as FocusEvent)}\n />\n <span class=\"text-error\" hidden id=\"email_confirm_error\"\n >${msg('Los emails no conciden')}</span\n >\n </div>\n\n <div>\n <label for=\"language\">${msg('Idioma de la respuesta')}*:</label>\n <select id=\"language\" name=\"language\" required>\n <option value=\"es\" selected>${msg('Español')}</option>\n <option value=\"ca\">${msg('Catalán')}</option>\n <option value=\"en\">${msg('Inglés')}</option>\n </select>\n </div>\n `;\n }\n\n renderMap() {\n return html`\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.skypack.dev/leaflet/dist/leaflet.css\"\n />\n <section class=\"map-form\">\n <div>\n <label for=\"map-address\">${msg('Calle')}*:</label>\n <input\n id=\"map-address\"\n required\n type=\"text\"\n @keyup=\"${(event: KeyboardEvent) =>\n (this.street = (event.target as HTMLInputElement).value)}\"\n .value=\"${this.street}\"\n name=\"address\"\n />\n <input name=\"latitude\" hidden .value=\"${this.latitude}\" />\n <input name=\"longitude\" hidden .value=\"${this.longitude}\" />\n </div>\n\n <div>\n <label for=\"map-number\">${msg('Número')}*:</label>\n <input\n id=\"map-number\"\n @keyup=\"${(event: KeyboardEvent) =>\n (this.streetNumber = (event.target as HTMLInputElement).value)}\"\n .value=\"${this.streetNumber}\"\n required\n type=\"text\"\n name=\"number\"\n />\n </div>\n\n <div>\n <button\n type=\"button\"\n .disabled=\"${!this.street.length}\"\n @click=\"${this.searchAddress}\"\n >\n ${msg('Buscar')}\n </button>\n </div>\n </section>\n\n <section class=\"map-form-grid\">\n <div>\n <label for=\"map-floor\">${msg('Piso')}:</label>\n <input id=\"map-floor\" type=\"text\" name=\"floor\" />\n </div>\n\n <div>\n <label for=\"map-stair\">${msg('Escalera')}:</label>\n <input id=\"map-stair\" type=\"text\" name=\"stair\" />\n </div>\n\n <div>\n <label for=\"map-door\">${msg('Puerta')}:</label>\n <input id=\"map-door\" type=\"text\" name=\"door\" />\n </div>\n </section>\n `;\n }\n\n async onSubmit(event: SubmitEvent) {\n this.loading = true;\n event.preventDefault();\n event.stopImmediatePropagation();\n\n const form = event.target as HTMLFormElement;\n\n if (!form.checkValidity()) {\n form.reportValidity();\n this.loading = false;\n return;\n } \n\n const files = form.file.files;\n const formData = new FormData();\n const value: FormDataIncidents = Object.fromEntries(\n new FormData(form).entries()\n );\n\n if (this.activeMap) {\n value.location = {};\n value.location['address'] = value.address;\n value.location['number'] = value.number;\n value.location['latitude'] = value.latitude;\n value.location['longitude'] = value.longitude;\n value.location['floor'] = value.floor;\n value.location['stair'] = value.stair;\n value.location['door'] = value.door;\n } else {\n value.location = {district: value.district};\n }\n\n //Save the file separated from the body\n value.file = [];\n if (files.length > 0) {\n for (let i = 0; i < files.length; i++) {\n const file = {\n filename: files[i].name,\n file: files[i],\n };\n value.file.push(file);\n }\n }\n\n // add inputs with name starting with \"characteristic-\" to the values object adding a new key \"characteristics\"\n const characteristics = Object.keys(value).filter((key) =>\n key.startsWith('characteristic-')\n );\n value.characteristics = characteristics.map((key) => {\n const id = key.split('-')[1];\n // @ts-ignore\n const val = value[key];\n // @ts-ignore\n delete value[key];\n\n return {id, value: val} as unknown as CharacteristicElement;\n });\n\n formData.append('body', JSON.stringify(value));\n\n const response = await fetch(`${this.getApiUrl()}/incidences`, {\n headers: {\n 'Accept-Language': this.locale,\n },\n method: 'POST',\n body: formData,\n });\n\n if (!response.ok && response.status !== 400) {\n this.error = true;\n this.loading = false;\n return;\n }\n\n if (response.status === 400) {\n const data = await response.json();\n this.handlerError(data);\n } else {\n const data = await response.json();\n this.incidenceId = data.incidenceId;\n this.submited = true;\n }\n this.loading = false;\n }\n\n handlerError(data: any) {\n const errors = data;\n Object.keys(errors).map((key) => {\n const input = this.shadowRoot?.getElementById(\n `${key}`\n ) as HTMLInputElement;\n if (key in errors && input) {\n input.setCustomValidity(errors[key]);\n input.reportValidity();\n }\n });\n\n if ('characteristics' in errors) {\n let characteristics = errors['characteristics'];\n if (!Array.isArray(characteristics)) {\n characteristics = Object.entries(characteristics);\n }\n characteristics.forEach((characteristic: any) => {\n Object.entries(characteristic).forEach(([key, value]) => {\n const input = this.shadowRoot?.getElementById(\n `niris-${key}`\n ) as HTMLInputElement;\n input.setCustomValidity(value as string);\n input.reportValidity();\n\n });\n });\n\n }\n }\n\n confirmEmail(event: FocusEvent) {\n const email = this.shadowRoot?.getElementById('email') as HTMLInputElement;\n const emailConfirm = this.shadowRoot?.getElementById(\n 'email_confirm'\n ) as HTMLInputElement;\n const error = this.shadowRoot?.getElementById(\n 'email_confirm_error'\n ) as HTMLElement;\n const submit = this.shadowRoot?.getElementById(\n 'submit-btn'\n ) as HTMLButtonElement;\n\n if (email.value !== emailConfirm.value) {\n error.hidden = false;\n submit.disabled = true;\n emailConfirm.classList.add('invalid');\n } else {\n error.hidden = true;\n submit.disabled = false;\n emailConfirm.classList.remove('invalid');\n }\n\n (event.target as HTMLInputElement).reportValidity();\n }\n\n years(): number[] {\n const currentYear = new Date().getFullYear();\n const years = [];\n for (let i = currentYear - 100; i <= currentYear; i++) {\n years.push(i);\n }\n\n years.reverse();\n return years;\n }\n\n async onMapClick(e: LeafletMouseEvent) {\n if (this._marker) {\n this._map.removeLayer(this._marker);\n }\n this._marker = new L.marker([e.latlng.lat, e.latlng.lng], {\n icon: this._markerIcon,\n }).addTo(this._map);\n try {\n const response = await fetch(\n `${this.domain}/geo_proxy/ubication/reverse/?lat=${e.latlng.lat}&lon=${e.latlng.lng}`,\n {\n headers: {\n 'Accept-Language': this.locale,\n },\n }\n );\n if (!response.ok) {\n throw new Error(response.statusText);\n } else {\n const ubi = await response.json();\n this.street = ubi.street;\n this.streetNumber = ubi.street2;\n this.latitude = ubi.latitude;\n this.longitude = ubi.longitude;\n }\n } catch (error) {\n console.info(error);\n }\n }\n\n async searchAddress() {\n try {\n const response = await fetch(\n `${this.domain}/geo_proxy/ubication/search/?q=${this.street}, ${this.streetNumber}`,\n {\n headers: {\n 'Accept-Language': this.locale,\n },\n }\n );\n if (this._marker) {\n this._map.removeLayer(this._marker);\n }\n const data = await response.json();\n this._marker = new L.marker([data[0].lat, data[0].lon]).addTo(this._map);\n this._map.setView([data[0].lat, data[0].lon], 15);\n } catch (error) {\n console.error(error);\n }\n }\n\n static override styles = [\n globalStyles,\n css`\n :host {\n --primary-color: #03599d;\n --padding: 0.7rem 0.7rem;\n --font-size: 1rem;\n --border-radius: 0rem;\n --font-weight: 500;\n --font-family: 'Arial', sans-serif;\n --color-button: #fff;\n --error-color: #c23939;\n --tab-secondary-color: #ced1d7;\n }\n /* Style the tab */\n .tab {\n overflow: hidden;\n background-color: #e5e7eb;\n width: 100%;\n }\n\n /* Style the buttons inside the tab */\n .tab__tablink {\n background-color: inherit;\n float: left;\n border: none;\n outline: none;\n cursor: pointer;\n padding: 14px 0px;\n transition: 0.3s;\n font-size: 17px;\n line-height: 20px;\n width: 50%;\n text-align: center;\n font-weight: bold;\n color: #4b5563;\n border-top: 4px solid var(--tab-secondary-color);\n background-color: var(--tab-secondary-color);\n }\n .tab__tabcontent {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 0.5rem;\n justify-content: space-between;\n width: 100%;\n background-color: #e5e7eb;\n padding: 1.5rem;\n color: #676774;\n font-size: 16px;\n line-height: 20px;\n font-weight: 500;\n }\n\n .tablink--active {\n background-color: #e5e7eb;\n color: #4b5563;\n border-top: 4px solid var(--primary-color);\n }\n\n .tab__tablink:not(.tablink--active):hover {\n filter: brightness(90%);\n color: #545466;\n }\n\n .container {\n max-width: 1280px;\n width: 100%;\n margin: 0 auto;\n }\n\n .header {\n padding: 2rem;\n text-align: center;\n margin: 0 auto;\n background-color: #f5f5f5;\n }\n\n .header__info {\n margin: 0.5rem auto;\n max-width: 1280px;\n color: #676774;\n }\n .header__title {\n font-size: 1.8rem;\n }\n\n .info--danger {\n color: red;\n }\n\n .record {\n width: 70%;\n margin: 0 auto;\n }\n\n .record__comment {\n font-size: 1.5rem;\n margin-bottom: 2rem;\n text-align: center;\n }\n\n /* utility classes */\n .color-primary {\n color: var(--primary-color);\n }\n\n .hide {\n display: none;\n }\n\n .text-center {\n text-align: center;\n }\n\n .mx-auto {\n margin: 0 auto;\n }\n\n .self-center {\n align-self: center;\n }\n\n .help-text {\n font-size: 0.9rem;\n color: #676774;\n }\n\n /* characteristics-form\" */\n .characteristics-form {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 0.5rem;\n }\n\n /* Success Card */\n .success-submit {\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .success-submit__card {\n margin: 4rem 0;\n width: 25rem;\n height: 35rem;\n -webkit-box-shadow: 2px 2px 15px 0px rgba(77, 77, 77, 0.5);\n -moz-box-shadow: 2px 2px 15px 0px rgba(77, 77, 77, 0.5);\n box-shadow: 2px 2px 15px 0px rgba(77, 77, 77, 0.5);\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n border-top: 5px solid var(--primary-color);\n }\n\n .success-submit__card:hover {\n -webkit-box-shadow: 2px 2px 15px 0px rgba(77, 77, 77, 0.5);\n -moz-box-shadow: 2px 2px 15px 0px rgba(77, 77, 77, 0.5);\n box-shadow: 4px 4px 17px 2px rgba(77, 77, 77, 0.5);\n transition: 0.5s;\n }\n\n .success-submit__card--error {\n border-top: 5px solid var(--error-color);\n }\n\n .succes-submit__svg {\n margin-top: 20%;\n fill: var(--primary-color);\n filter: opacity(70%);\n }\n\n .succes-submit__svg:hover {\n transform: rotate(360deg);\n transition: 0.5s;\n }\n\n .succes-submit__svg--error {\n fill: var(--error-color);\n }\n\n .succes-submit__title {\n font-size: 1.8rem;\n margin-bottom: 2rem;\n color: #373e47;\n }\n\n .success-submit__text {\n font-size: 1.3rem;\n padding: 0 3rem;\n text-align: center;\n }\n\n .success-submit__anchor {\n font-size: 1.2rem;\n text-decoration: none;\n width: 100%;\n padding: 1rem;\n }\n\n /* Map */\n #map {\n margin-bottom: 2rem;\n width: 100%;\n height: 30vh;\n border: 1px solid #676774;\n }\n .map-form {\n display: flex;\n justify-content: space-between;\n align-items: flex-end;\n gap: 1rem;\n }\n\n .map-form div:nth-child(1) {\n flex-basis: 60%;\n }\n .map-form div:nth-child(2) {\n flex-basis: 30%;\n }\n .map-form button {\n flex-basis: 20%;\n margin-bottom: 0.5rem;\n }\n\n .map-form-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 1rem;\n }\n\n .loader {\n width: 18px;\n padding: 4px;\n float: left;\n aspect-ratio: 1;\n border-radius: 50%;\n background: #ffffff;\n --_m: \n conic-gradient(#22222200 10%,#000),\n linear-gradient(#000 0 0) content-box;\n -webkit-mask: var(--_m);\n mask: var(--_m);\n -webkit-mask-composite: source-out;\n mask-composite: subtract;\n animation: l3 1s infinite linear;\n }\n @keyframes l3 {to{transform: rotate(1turn)}}\n\n /* Media queries */\n @media screen and (max-width: 640px) {\n .record {\n width: 96%;\n }\n .success-submit__card {\n width: 80%;\n }\n }\n `,\n ];\n}\n\ncustomElements.define('form-niris', FormNiris);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'form-niris': FormNiris;\n }\n}\n"]}