niris-public-community-components 0.0.8 → 0.0.10
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/README.md +73 -59
- package/dev/form-niris.html +1 -1
- package/dist/form-niris.d.ts.map +1 -1
- package/dist/form-niris.js +3 -1
- package/dist/form-niris.js.map +1 -1
- package/dist/my-element.d.ts +37 -0
- package/dist/my-element.d.ts.map +1 -0
- package/dist/my-element.js +72 -0
- package/dist/my-element.js.map +1 -0
- package/dist/textarea-to-niris.bundled.js +261 -0
- package/dist/textarea-to-niris.d.ts +22 -0
- package/dist/textarea-to-niris.d.ts.map +1 -0
- package/dist/textarea-to-niris.js +60 -9
- package/dist/textarea-to-niris.js.map +1 -0
- package/package.json +1 -1
- package/src/form-niris.ts +5 -6
- package/src/textarea-to-niris.ts +1 -1
package/README.md
CHANGED
@@ -5,31 +5,30 @@
|
|
5
5
|
|
6
6
|
# Niris web components
|
7
7
|
|
8
|
+
[Niris](https://iris.apsl.net/en/) is an application for the automated management of citizen requests and complaints. It offers solutions tailored to each municipality. Is a product offered by [APSL](https://apsl.tech/en/) which consists of both a backoffice and a public page where citizens can carry out their procedures through a form. This library offers the possibility of using that form through [web components](https://developer.mozilla.org/en/docs/Web/API/Web_components) developed with [lit](https://lit.dev/).
|
9
|
+
|
8
10
|
This library contains two web components:
|
9
11
|
|
10
12
|
- `<textarea-to-iris>`: Web component to, when clicking a button, show a textarea and be able to enter the suggestion or complaint there, when submitting, it will redirect us to the public website of Niris (configurable by property)
|
11
13
|
|
12
|
-

|
13
15
|
|
14
|
-

|
15
17
|
|
16
|
-
- `<niris
|
18
|
+
- `<form-niris>`: Replica of the ATE form for sending requests, requests or suggestions.
|
17
19
|
|
18
|
-
|
20
|
+

|
19
21
|
|
20
22
|
## Table of contents
|
21
23
|
|
22
|
-
- [
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
- [Versioning](#versioning)
|
29
|
-
- [Authors](#authors)
|
30
|
-
- [License](#license)
|
24
|
+
- [Installation](#installation)
|
25
|
+
- [Attributes](#attributes)
|
26
|
+
- [Styling](#styling)
|
27
|
+
- [Versioning](#versioning)
|
28
|
+
- [Authors](#authors)
|
29
|
+
- [License](#license)
|
31
30
|
|
32
|
-
|
31
|
+
## Installation
|
33
32
|
|
34
33
|
- Install with **npm**
|
35
34
|
|
@@ -37,46 +36,26 @@ This library contains two web components:
|
|
37
36
|
$ npm install public-community-components
|
38
37
|
```
|
39
38
|
|
40
|
-
|
41
|
-
module node em6 (?)
|
39
|
+
### Vue
|
42
40
|
|
43
41
|
```js
|
44
|
-
<script
|
45
|
-
|
42
|
+
<script setup>
|
43
|
+
import { FormNiris } from "niris-public-community-components/dist/form-to-niris.js";
|
46
44
|
</script>
|
47
45
|
|
46
|
+
|
48
47
|
<template>
|
49
|
-
<
|
48
|
+
<form-niris
|
49
|
+
detailId="15"
|
50
|
+
defaultLat="39.8409929"
|
51
|
+
defaultLon="3.1173402"
|
52
|
+
apiUrl="https://iris2-backend-demos-iris-community.labs.apsl.io/services/iris/api-public"
|
53
|
+
/>
|
50
54
|
</template>
|
51
55
|
```
|
52
56
|
|
53
|
-
js vainiilla
|
54
|
-
|
55
|
-
```html
|
56
|
-
<!DOCTYPE html>
|
57
|
-
<html lang="en">
|
58
|
-
<head>
|
59
|
-
...
|
60
|
-
<script src="../node_modules/niris-public-community-components/dist/textarea-to-niris.js"></script>
|
61
|
-
</head>
|
62
|
-
|
63
|
-
<body>
|
64
|
-
<textarea-to-niris />
|
65
|
-
</body>
|
66
|
-
</html>
|
67
|
-
```
|
68
|
-
|
69
|
-
Vue
|
70
|
-
npm install niris-public-community-components
|
71
|
-
|
72
57
|
vite.config.js:
|
73
58
|
|
74
|
-
```js
|
75
|
-
<script setup>
|
76
|
-
import {TextareaToNiris} from "niris-public-community-components/";
|
77
|
-
</script>
|
78
|
-
```
|
79
|
-
|
80
59
|
```js
|
81
60
|
import {defineConfig} from 'vite';
|
82
61
|
import vue from '@vitejs/plugin-vue';
|
@@ -87,7 +66,7 @@ export default defineConfig({
|
|
87
66
|
vue({
|
88
67
|
template: {
|
89
68
|
compilerOptions: {
|
90
|
-
isCustomElement: (tag) => ['
|
69
|
+
isCustomElement: (tag) => ['form-niris'].includes(tag),
|
91
70
|
},
|
92
71
|
},
|
93
72
|
}),
|
@@ -95,28 +74,46 @@ export default defineConfig({
|
|
95
74
|
});
|
96
75
|
```
|
97
76
|
|
98
|
-
###
|
77
|
+
### JS vainiilla
|
99
78
|
|
100
|
-
|
101
|
-
|
102
|
-
For this element to work from unpkg.com specifically, you need to include the ?module query parameter, which tells unpkg.com to rewrite "bare" module specifiers to full URLs.
|
103
|
-
|
104
|
-
#### HTML
|
79
|
+
You need to load lit polyfills support and webcomponentesjs library first
|
105
80
|
|
106
81
|
```html
|
107
|
-
|
82
|
+
<!DOCTYPE html>
|
83
|
+
<html lang="en">
|
84
|
+
<head>
|
85
|
+
...
|
86
|
+
<script src="../node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
|
87
|
+
<script src="../node_modules/lit/polyfill-support.js"></script>
|
88
|
+
<script src="../node_modules/niris-public-community-components/dist/textarea-to-niris.js"></script>
|
89
|
+
</head>
|
90
|
+
|
91
|
+
<body>
|
92
|
+
<textarea-to-niris />
|
93
|
+
</body>
|
94
|
+
</html>
|
108
95
|
```
|
109
96
|
|
110
|
-
|
97
|
+
More help at [how to use a web component](https://lit.dev/docs/tools/adding-lit/#use-your-component)
|
111
98
|
|
112
|
-
|
99
|
+
## Attributes
|
113
100
|
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
101
|
+
### TextareaToNiris
|
102
|
+
|
103
|
+
- **formaction**: _string_ - This will be the URL to which the form will redirect us. It must be the ATE URL ending with `/buscador-tematicas`. For example: https://iris-public-community-iris-community.labs.apsl.io/buscador-tematicas
|
104
|
+
|
105
|
+
### FormNiris
|
118
106
|
|
119
|
-
|
107
|
+
- **detailId** _string_ - ID of the record you want to use. This ID can be seen in the URL of both the backoffice for each record and the ATE.
|
108
|
+
- **defaultLat** _string_ - Latitude. This will be the default location that will appear on the map. Only for the tabs that require a location.
|
109
|
+
- **defaultLon** _string_ - Longitude. This will be the default location that will appear on the map. Only for the tabs that require a location.
|
110
|
+
- **apiUrl** _string_ - Backend endpoint.
|
111
|
+
|
112
|
+
## Styling
|
113
|
+
|
114
|
+
We can override the following styles for each component
|
115
|
+
|
116
|
+
### TextareaToNiris
|
120
117
|
|
121
118
|
```css
|
122
119
|
textarea-to-niris {
|
@@ -131,6 +128,23 @@ textarea-to-niris {
|
|
131
128
|
}
|
132
129
|
```
|
133
130
|
|
131
|
+
### FormNiris
|
132
|
+
|
133
|
+
```css
|
134
|
+
form-niris {
|
135
|
+
--primary-color: #0aa99d;
|
136
|
+
--border-radius: 0rem;
|
137
|
+
--padding: 0.7rem 0.7rem;
|
138
|
+
--font-size: 1rem;
|
139
|
+
--border-radius: 0rem;
|
140
|
+
--font-weight: 500;
|
141
|
+
--font-family: 'Arial', sans-serif;
|
142
|
+
--color-button: #fff;
|
143
|
+
--error-color: #c23939;
|
144
|
+
--tab-secondary-color: #ced1d7;
|
145
|
+
}
|
146
|
+
```
|
147
|
+
|
134
148
|
## Versioning
|
135
149
|
|
136
150
|
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags).
|
package/dev/form-niris.html
CHANGED
package/dist/form-niris.d.ts.map
CHANGED
@@ -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;
|
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;IA8LV,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"}
|
package/dist/form-niris.js
CHANGED
@@ -257,6 +257,8 @@ let FormNiris = class FormNiris extends LitElement {
|
|
257
257
|
const stylesCharacteristics = {
|
258
258
|
display: this.characteristics.length == 0 ? 'none' : '',
|
259
259
|
};
|
260
|
+
// To fix map problem. When opening with collapse, it does not render correctly
|
261
|
+
setTimeout(() => window.dispatchEvent(new Event('resize')), 100);
|
260
262
|
return html `
|
261
263
|
<section class="record">
|
262
264
|
<h2 class="record__comment">${msg('Mensaje')}</h2>
|
@@ -428,7 +430,7 @@ let FormNiris = class FormNiris extends LitElement {
|
|
428
430
|
|
429
431
|
<div>
|
430
432
|
<label for="secondSurname">${msg('Segundo apellido')}*:</label>
|
431
|
-
<input id="secondSurname" name="secondSurname" type="text"
|
433
|
+
<input id="secondSurname" name="secondSurname" type="text" />
|
432
434
|
</div>
|
433
435
|
|
434
436
|
<div>
|
package/dist/form-niris.js.map
CHANGED
@@ -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 '© <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} > ${this.element} > ${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"]}
|
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 '© <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} > ${this.element} > ${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 // To fix map problem. When opening with collapse, it does not render correctly\n setTimeout(() => window.dispatchEvent(new Event('resize')), 100)\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\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\" />\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"]}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Copyright 2019 Google LLC
|
4
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
5
|
+
*/
|
6
|
+
import { LitElement } from 'lit';
|
7
|
+
/**
|
8
|
+
* An example element.
|
9
|
+
*
|
10
|
+
* @fires count-changed - Indicates when the count changes
|
11
|
+
* @slot - This element has a slot
|
12
|
+
* @csspart button - The button
|
13
|
+
*/
|
14
|
+
export declare class MyElement extends LitElement {
|
15
|
+
static styles: import("lit").CSSResult;
|
16
|
+
/**
|
17
|
+
* The name to say "Hello" to.
|
18
|
+
*/
|
19
|
+
name: string;
|
20
|
+
/**
|
21
|
+
* The number of times the button has been clicked.
|
22
|
+
*/
|
23
|
+
count: number;
|
24
|
+
render(): import("lit-html").TemplateResult<1>;
|
25
|
+
private _onClick;
|
26
|
+
/**
|
27
|
+
* Formats a greeting
|
28
|
+
* @param name The name to say "Hello" to
|
29
|
+
*/
|
30
|
+
sayHello(name: string): string;
|
31
|
+
}
|
32
|
+
declare global {
|
33
|
+
interface HTMLElementTagNameMap {
|
34
|
+
'my-element': MyElement;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
//# sourceMappingURL=my-element.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"my-element.d.ts","sourceRoot":"","sources":["../src/my-element.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,UAAU,EAAY,MAAM,KAAK,CAAC;AAG1C;;;;;;GAMG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,0BAOpB;IAEF;;OAEG;IAEH,IAAI,SAAW;IAEf;;OAEG;IAEH,KAAK,SAAK;IAED,MAAM;IAUf,OAAO,CAAC,QAAQ;IAKhB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAG/B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,YAAY,EAAE,SAAS,CAAC;KACzB;CACF"}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Copyright 2019 Google LLC
|
4
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
5
|
+
*/
|
6
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
7
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
9
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
10
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
11
|
+
};
|
12
|
+
import { LitElement, html, css } from 'lit';
|
13
|
+
import { customElement, property } from 'lit/decorators.js';
|
14
|
+
/**
|
15
|
+
* An example element.
|
16
|
+
*
|
17
|
+
* @fires count-changed - Indicates when the count changes
|
18
|
+
* @slot - This element has a slot
|
19
|
+
* @csspart button - The button
|
20
|
+
*/
|
21
|
+
let MyElement = class MyElement extends LitElement {
|
22
|
+
constructor() {
|
23
|
+
super(...arguments);
|
24
|
+
/**
|
25
|
+
* The name to say "Hello" to.
|
26
|
+
*/
|
27
|
+
this.name = 'World';
|
28
|
+
/**
|
29
|
+
* The number of times the button has been clicked.
|
30
|
+
*/
|
31
|
+
this.count = 0;
|
32
|
+
}
|
33
|
+
render() {
|
34
|
+
return html `
|
35
|
+
<h1>${this.sayHello(this.name)}!</h1>
|
36
|
+
<button @click=${this._onClick} part="button">
|
37
|
+
Click Count: ${this.count}
|
38
|
+
</button>
|
39
|
+
<slot></slot>
|
40
|
+
`;
|
41
|
+
}
|
42
|
+
_onClick() {
|
43
|
+
this.count++;
|
44
|
+
this.dispatchEvent(new CustomEvent('count-changed'));
|
45
|
+
}
|
46
|
+
/**
|
47
|
+
* Formats a greeting
|
48
|
+
* @param name The name to say "Hello" to
|
49
|
+
*/
|
50
|
+
sayHello(name) {
|
51
|
+
return `Hello, ${name}`;
|
52
|
+
}
|
53
|
+
};
|
54
|
+
MyElement.styles = css `
|
55
|
+
:host {
|
56
|
+
display: block;
|
57
|
+
border: solid 1px gray;
|
58
|
+
padding: 16px;
|
59
|
+
max-width: 800px;
|
60
|
+
}
|
61
|
+
`;
|
62
|
+
__decorate([
|
63
|
+
property()
|
64
|
+
], MyElement.prototype, "name", void 0);
|
65
|
+
__decorate([
|
66
|
+
property({ type: Number })
|
67
|
+
], MyElement.prototype, "count", void 0);
|
68
|
+
MyElement = __decorate([
|
69
|
+
customElement('my-element')
|
70
|
+
], MyElement);
|
71
|
+
export { MyElement };
|
72
|
+
//# sourceMappingURL=my-element.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"my-element.js","sourceRoot":"","sources":["../src/my-element.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;;;;;;AAEH,OAAO,EAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAC,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE1D;;;;;;GAMG;AAEI,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,UAAU;IAAlC;;QAUL;;WAEG;QAEH,SAAI,GAAG,OAAO,CAAC;QAEf;;WAEG;QAEH,UAAK,GAAG,CAAC,CAAC;IAwBZ,CAAC;IAtBU,MAAM;QACb,OAAO,IAAI,CAAA;YACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;uBACb,IAAI,CAAC,QAAQ;uBACb,IAAI,CAAC,KAAK;;;KAG5B,CAAC;IACJ,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,IAAY;QACnB,OAAO,UAAU,IAAI,EAAE,CAAC;IAC1B,CAAC;;AA1Ce,gBAAM,GAAG,GAAG,CAAA;;;;;;;GAO3B,AAPqB,CAOpB;AAMF;IADC,QAAQ,EAAE;uCACI;AAMf;IADC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;wCACf;AApBC,SAAS;IADrB,aAAa,CAAC,YAAY,CAAC;GACf,SAAS,CA4CrB","sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {LitElement, html, css} from 'lit';\nimport {customElement, property} from 'lit/decorators.js';\n\n/**\n * An example element.\n *\n * @fires count-changed - Indicates when the count changes\n * @slot - This element has a slot\n * @csspart button - The button\n */\n@customElement('my-element')\nexport class MyElement extends LitElement {\n static override styles = css`\n :host {\n display: block;\n border: solid 1px gray;\n padding: 16px;\n max-width: 800px;\n }\n `;\n\n /**\n * The name to say \"Hello\" to.\n */\n @property()\n name = 'World';\n\n /**\n * The number of times the button has been clicked.\n */\n @property({type: Number})\n count = 0;\n\n override render() {\n return html`\n <h1>${this.sayHello(this.name)}!</h1>\n <button @click=${this._onClick} part=\"button\">\n Click Count: ${this.count}\n </button>\n <slot></slot>\n `;\n }\n\n private _onClick() {\n this.count++;\n this.dispatchEvent(new CustomEvent('count-changed'));\n }\n\n /**\n * Formats a greeting\n * @param name The name to say \"Hello\" to\n */\n sayHello(name: string): string {\n return `Hello, ${name}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'my-element': MyElement;\n }\n}\n"]}
|
@@ -0,0 +1,261 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Copyright 2019 Google LLC
|
4
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
5
|
+
*/
|
6
|
+
const t=globalThis,i=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,e=Symbol(),s=new WeakMap;class r{constructor(t,i,s){if(this._$cssResult$=!0,s!==e)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=i}get styleSheet(){let t=this.o;const e=this.t;if(i&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=s.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&s.set(e,t))}return t}toString(){return this.cssText}}const o=i?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let i="";for(const e of t.cssRules)i+=e.cssText;return(t=>new r("string"==typeof t?t:t+"",void 0,e))(i)})(t):t
|
7
|
+
/**
|
8
|
+
* @license
|
9
|
+
* Copyright 2017 Google LLC
|
10
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
11
|
+
*/,{is:n,defineProperty:h,getOwnPropertyDescriptor:a,getOwnPropertyNames:c,getOwnPropertySymbols:l,getPrototypeOf:d}=Object,u=globalThis,f=u.trustedTypes,p=f?f.emptyScript:"",v=u.reactiveElementPolyfillSupport,g=(t,i)=>t,b={toAttribute(t,i){switch(i){case Boolean:t=t?p:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,i){let e=t;switch(i){case Boolean:e=null!==t;break;case Number:e=null===t?null:Number(t);break;case Object:case Array:try{e=JSON.parse(t)}catch(t){e=null}}return e}},w=(t,i)=>!n(t,i),m={attribute:!0,type:String,converter:b,reflect:!1,hasChanged:w};Symbol.metadata??=Symbol("metadata"),u.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,i=m){if(i.state&&(i.attribute=!1),this._$Ei(),this.elementProperties.set(t,i),!i.noAccessor){const e=Symbol(),s=this.getPropertyDescriptor(t,e,i);void 0!==s&&h(this.prototype,t,s)}}static getPropertyDescriptor(t,i,e){const{get:s,set:r}=a(this.prototype,t)??{get(){return this[i]},set(t){this[i]=t}};return{get(){return s?.call(this)},set(i){const o=s?.call(this);r.call(this,i),this.requestUpdate(t,o,e)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??m}static _$Ei(){if(this.hasOwnProperty(g("elementProperties")))return;const t=d(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(g("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(g("properties"))){const t=this.properties,i=[...c(t),...l(t)];for(const e of i)this.createProperty(e,t[e])}const t=this[Symbol.metadata];if(null!==t){const i=litPropertyMetadata.get(t);if(void 0!==i)for(const[t,e]of i)this.elementProperties.set(t,e)}this._$Eh=new Map;for(const[t,i]of this.elementProperties){const e=this._$Eu(t,i);void 0!==e&&this._$Eh.set(e,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const i=[];if(Array.isArray(t)){const e=new Set(t.flat(1/0).reverse());for(const t of e)i.unshift(o(t))}else void 0!==t&&i.push(o(t));return i}static _$Eu(t,i){const e=i.attribute;return!1===e?void 0:"string"==typeof e?e:"string"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,i=this.constructor.elementProperties;for(const e of i.keys())this.hasOwnProperty(e)&&(t.set(e,this[e]),delete this[e]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((e,s)=>{if(i)e.adoptedStyleSheets=s.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const i of s){const s=document.createElement("style"),r=t.litNonce;void 0!==r&&s.setAttribute("nonce",r),s.textContent=i.cssText,e.appendChild(s)}})(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,i,e){this._$AK(t,e)}_$EC(t,i){const e=this.constructor.elementProperties.get(t),s=this.constructor._$Eu(t,e);if(void 0!==s&&!0===e.reflect){const r=(void 0!==e.converter?.toAttribute?e.converter:b).toAttribute(i,e.type);this._$Em=t,null==r?this.removeAttribute(s):this.setAttribute(s,r),this._$Em=null}}_$AK(t,i){const e=this.constructor,s=e._$Eh.get(t);if(void 0!==s&&this._$Em!==s){const t=e.getPropertyOptions(s),r="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:b;this._$Em=s,this[s]=r.fromAttribute(i,t.type),this._$Em=null}}requestUpdate(t,i,e){if(void 0!==t){if(e??=this.constructor.getPropertyOptions(t),!(e.hasChanged??w)(this[t],i))return;this.P(t,i,e)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,i,e){this._$AL.has(t)||this._$AL.set(t,i),!0===e.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,i]of this._$Ep)this[t]=i;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[i,e]of t)!0!==e.wrapped||this._$AL.has(i)||void 0===this[i]||this.P(i,this[i],e)}let t=!1;const i=this._$AL;try{t=this.shouldUpdate(i),t?(this.willUpdate(i),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(i)):this._$EU()}catch(i){throw t=!1,this._$EU(),i}t&&this._$AE(i)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:"open"},y[g("elementProperties")]=new Map,y[g("finalized")]=new Map,v?.({ReactiveElement:y}),(u.reactiveElementVersions??=[]).push("2.0.4");
|
12
|
+
/**
|
13
|
+
* @license
|
14
|
+
* Copyright 2017 Google LLC
|
15
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
16
|
+
*/
|
17
|
+
const x=globalThis,S=x.trustedTypes,$=S?S.createPolicy("lit-html",{createHTML:t=>t}):void 0,k="$lit$",A=`lit$${Math.random().toFixed(9).slice(2)}$`,C="?"+A,E=`<${C}>`,_=document,T=()=>_.createComment(""),M=t=>null===t||"object"!=typeof t&&"function"!=typeof t,z=Array.isArray,P="[ \t\n\f\r]",U=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,j=/-->/g,L=/>/g,O=RegExp(`>|${P}(?:([^\\s"'>=/]+)(${P}*=${P}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),N=/'/g,I=/"/g,R=/^(?:script|style|textarea|title)$/i,D=(t=>(i,...e)=>({_$litType$:t,strings:i,values:e}))(1),W=Symbol.for("lit-noChange"),q=Symbol.for("lit-nothing"),B=new WeakMap,H=_.createTreeWalker(_,129);function J(t,i){if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==$?$.createHTML(i):i}const V=(t,i)=>{const e=t.length-1,s=[];let r,o=2===i?"<svg>":"",n=U;for(let i=0;i<e;i++){const e=t[i];let h,a,c=-1,l=0;for(;l<e.length&&(n.lastIndex=l,a=n.exec(e),null!==a);)l=n.lastIndex,n===U?"!--"===a[1]?n=j:void 0!==a[1]?n=L:void 0!==a[2]?(R.test(a[2])&&(r=RegExp("</"+a[2],"g")),n=O):void 0!==a[3]&&(n=O):n===O?">"===a[0]?(n=r??U,c=-1):void 0===a[1]?c=-2:(c=n.lastIndex-a[2].length,h=a[1],n=void 0===a[3]?O:'"'===a[3]?I:N):n===I||n===N?n=O:n===j||n===L?n=U:(n=O,r=void 0);const d=n===O&&t[i+1].startsWith("/>")?" ":"";o+=n===U?e+E:c>=0?(s.push(h),e.slice(0,c)+k+e.slice(c)+A+d):e+A+(-2===c?i:d)}return[J(t,o+(t[e]||"<?>")+(2===i?"</svg>":"")),s]};class Z{constructor({strings:t,_$litType$:i},e){let s;this.parts=[];let r=0,o=0;const n=t.length-1,h=this.parts,[a,c]=V(t,i);if(this.el=Z.createElement(a,e),H.currentNode=this.el.content,2===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(s=H.nextNode())&&h.length<n;){if(1===s.nodeType){if(s.hasAttributes())for(const t of s.getAttributeNames())if(t.endsWith(k)){const i=c[o++],e=s.getAttribute(t).split(A),n=/([.?@])?(.*)/.exec(i);h.push({type:1,index:r,name:n[2],strings:e,ctor:"."===n[1]?X:"?"===n[1]?Y:"@"===n[1]?tt:G}),s.removeAttribute(t)}else t.startsWith(A)&&(h.push({type:6,index:r}),s.removeAttribute(t));if(R.test(s.tagName)){const t=s.textContent.split(A),i=t.length-1;if(i>0){s.textContent=S?S.emptyScript:"";for(let e=0;e<i;e++)s.append(t[e],T()),H.nextNode(),h.push({type:2,index:++r});s.append(t[i],T())}}}else if(8===s.nodeType)if(s.data===C)h.push({type:2,index:r});else{let t=-1;for(;-1!==(t=s.data.indexOf(A,t+1));)h.push({type:7,index:r}),t+=A.length-1}r++}}static createElement(t,i){const e=_.createElement("template");return e.innerHTML=t,e}}function K(t,i,e=t,s){if(i===W)return i;let r=void 0!==s?e._$Co?.[s]:e._$Cl;const o=M(i)?void 0:i._$litDirective$;return r?.constructor!==o&&(r?._$AO?.(!1),void 0===o?r=void 0:(r=new o(t),r._$AT(t,e,s)),void 0!==s?(e._$Co??=[])[s]=r:e._$Cl=r),void 0!==r&&(i=K(t,r._$AS(t,i.values),r,s)),i}class Q{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:e}=this._$AD,s=(t?.creationScope??_).importNode(i,!0);H.currentNode=s;let r=H.nextNode(),o=0,n=0,h=e[0];for(;void 0!==h;){if(o===h.index){let i;2===h.type?i=new F(r,r.nextSibling,this,t):1===h.type?i=new h.ctor(r,h.name,h.strings,this,t):6===h.type&&(i=new it(r,this,t)),this._$AV.push(i),h=e[++n]}o!==h?.index&&(r=H.nextNode(),o++)}return H.currentNode=_,s}p(t){let i=0;for(const e of this._$AV)void 0!==e&&(void 0!==e.strings?(e._$AI(t,e,i),i+=e.strings.length-2):e._$AI(t[i])),i++}}class F{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,e,s){this.type=2,this._$AH=q,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=e,this.options=s,this._$Cv=s?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=K(this,t,i),M(t)?t===q||null==t||""===t?(this._$AH!==q&&this._$AR(),this._$AH=q):t!==this._$AH&&t!==W&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):(t=>z(t)||"function"==typeof t?.[Symbol.iterator])(t)?this.k(t):this._(t)}S(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.S(t))}_(t){this._$AH!==q&&M(this._$AH)?this._$AA.nextSibling.data=t:this.T(_.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:e}=t,s="number"==typeof e?this._$AC(t):(void 0===e.el&&(e.el=Z.createElement(J(e.h,e.h[0]),this.options)),e);if(this._$AH?._$AD===s)this._$AH.p(i);else{const t=new Q(s,this),e=t.u(this.options);t.p(i),this.T(e),this._$AH=t}}_$AC(t){let i=B.get(t.strings);return void 0===i&&B.set(t.strings,i=new Z(t)),i}k(t){z(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let e,s=0;for(const r of t)s===i.length?i.push(e=new F(this.S(T()),this.S(T()),this,this.options)):e=i[s],e._$AI(r),s++;s<i.length&&(this._$AR(e&&e._$AB.nextSibling,s),i.length=s)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class G{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,e,s,r){this.type=1,this._$AH=q,this._$AN=void 0,this.element=t,this.name=i,this._$AM=s,this.options=r,e.length>2||""!==e[0]||""!==e[1]?(this._$AH=Array(e.length-1).fill(new String),this.strings=e):this._$AH=q}_$AI(t,i=this,e,s){const r=this.strings;let o=!1;if(void 0===r)t=K(this,t,i,0),o=!M(t)||t!==this._$AH&&t!==W,o&&(this._$AH=t);else{const s=t;let n,h;for(t=r[0],n=0;n<r.length-1;n++)h=K(this,s[e+n],i,n),h===W&&(h=this._$AH[n]),o||=!M(h)||h!==this._$AH[n],h===q?t=q:t!==q&&(t+=(h??"")+r[n+1]),this._$AH[n]=h}o&&!s&&this.j(t)}j(t){t===q?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class X extends G{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===q?void 0:t}}class Y extends G{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==q)}}class tt extends G{constructor(t,i,e,s,r){super(t,i,e,s,r),this.type=5}_$AI(t,i=this){if((t=K(this,t,i,0)??q)===W)return;const e=this._$AH,s=t===q&&e!==q||t.capture!==e.capture||t.once!==e.once||t.passive!==e.passive,r=t!==q&&(e===q||s);s&&this.element.removeEventListener(this.name,this,e),r&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class it{constructor(t,i,e){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=e}get _$AU(){return this._$AM._$AU}_$AI(t){K(this,t)}}const et=x.litHtmlPolyfillSupport;et?.(Z,F),(x.litHtmlVersions??=[]).push("3.1.4");
|
18
|
+
/**
|
19
|
+
* @license
|
20
|
+
* Copyright 2017 Google LLC
|
21
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
22
|
+
*/
|
23
|
+
class st extends y{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const i=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=((t,i,e)=>{const s=e?.renderBefore??i;let r=s._$litPart$;if(void 0===r){const t=e?.renderBefore??null;s._$litPart$=r=new F(i.insertBefore(T(),t),t,void 0,e??{})}return r._$AI(t),r})(i,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return W}}st._$litElement$=!0,st.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:st});const rt=globalThis.litElementPolyfillSupport;rt?.({LitElement:st}),(globalThis.litElementVersions??=[]).push("4.0.6");
|
24
|
+
/**
|
25
|
+
* @license
|
26
|
+
* Copyright 2017 Google LLC
|
27
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
28
|
+
*/
|
29
|
+
const ot={attribute:!0,type:String,converter:b,reflect:!1,hasChanged:w},nt=(t=ot,i,e)=>{const{kind:s,metadata:r}=e;let o=globalThis.litPropertyMetadata.get(r);if(void 0===o&&globalThis.litPropertyMetadata.set(r,o=new Map),o.set(e.name,t),"accessor"===s){const{name:s}=e;return{set(e){const r=i.get.call(this);i.set.call(this,e),this.requestUpdate(s,r,t)},init(i){return void 0!==i&&this.P(s,void 0,t),i}}}if("setter"===s){const{name:s}=e;return function(e){const r=this[s];i.call(this,e),this.requestUpdate(s,r,t)}}throw Error("Unsupported decorator location: "+s)};function ht(t){return(i,e)=>"object"==typeof e?nt(t,i,e):((t,i,e)=>{const s=i.hasOwnProperty(e);return i.constructor.createProperty(e,s?{...t,wrapped:!0}:t),s?Object.getOwnPropertyDescriptor(i,e):void 0})(t,i,e)
|
30
|
+
/**
|
31
|
+
* @license
|
32
|
+
* Copyright 2021 Google LLC
|
33
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
34
|
+
*/}const at=(t,i,e)=>{let s=t[0];for(let r=1;r<t.length;r++)s+=i[e?e[r-1]:r-1],s+=t[r];return s},ct=t=>{return"string"!=typeof(i=t)&&"strTag"in i?at(t.strings,t.values):t;var i},lt="lit-localize-status";
|
35
|
+
/**
|
36
|
+
* @license
|
37
|
+
* Copyright 2021 Google LLC
|
38
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
39
|
+
*/
|
40
|
+
class dt{constructor(t){this.i=t=>{"ready"===t.detail.status&&this.host.requestUpdate()},this.host=t}hostConnected(){window.addEventListener(lt,this.i)}hostDisconnected(){window.removeEventListener(lt,this.i)}}const ut=t=>t.addController(new dt(t));
|
41
|
+
/**
|
42
|
+
* @license
|
43
|
+
* Copyright 2020 Google LLC
|
44
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
45
|
+
*/
|
46
|
+
class ft{constructor(){this.settled=!1,this.promise=new Promise(((t,i)=>{this._resolve=t,this._reject=i}))}resolve(t){this.settled=!0,this._resolve(t)}reject(t){this.settled=!0,this._reject(t)}}
|
47
|
+
/**
|
48
|
+
* @license
|
49
|
+
* Copyright 2014 Travis Webb
|
50
|
+
* SPDX-License-Identifier: MIT
|
51
|
+
*/const pt=[];for(let t=0;t<256;t++)pt[t]=(t>>4&15).toString(16)+(15&t).toString(16);
|
52
|
+
/**
|
53
|
+
* @license
|
54
|
+
* Copyright 2020 Google LLC
|
55
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
56
|
+
*/
|
57
|
+
const vt="",gt="h",bt="s";function wt(t,i){return(i?gt:bt)+function(t){let i=0,e=8997,s=0,r=33826,o=0,n=40164,h=0,a=52210;for(let c=0;c<t.length;c++)e^=t.charCodeAt(c),i=435*e,s=435*r,o=435*n,h=435*a,o+=e<<8,h+=r<<8,s+=i>>>16,e=65535&i,o+=s>>>16,r=65535&s,a=h+(o>>>16)&65535,n=65535&o;return pt[a>>8]+pt[255&a]+pt[n>>8]+pt[255&n]+pt[r>>8]+pt[255&r]+pt[e>>8]+pt[255&e]}("string"==typeof t?t:t.join(vt))}
|
58
|
+
/**
|
59
|
+
* @license
|
60
|
+
* Copyright 2021 Google LLC
|
61
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
62
|
+
*/const mt=new WeakMap,yt=new Map;function xt(t,i,e){if(t){const s=e?.id??function(t){const i="string"==typeof t?t:t.strings;let e=yt.get(i);void 0===e&&(e=wt(i,"string"!=typeof t&&!("strTag"in t)),yt.set(i,e));return e}
|
63
|
+
/**
|
64
|
+
* @license
|
65
|
+
* Copyright 2021 Google LLC
|
66
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
67
|
+
*/(i),r=t[s];if(r){if("string"==typeof r)return r;if("strTag"in r)return at(r.strings,i.values,r.values);{let t=mt.get(r);return void 0===t&&(t=r.values,mt.set(r,t)),{...r,values:t.map((t=>i.values[t]))}}}}return ct(i)}function St(t){window.dispatchEvent(new CustomEvent(lt,{detail:t}))}let $t,kt,At,Ct,Et,_t="",Tt=new ft;Tt.resolve();let Mt=0;const zt=()=>_t,Pt=t=>{if(t===($t??_t))return Tt.promise;if(!At||!Ct)throw new Error("Internal error");if(!At.has(t))throw new Error("Invalid locale code");Mt++;const i=Mt;$t=t,Tt.settled&&(Tt=new ft),St({status:"loading",loadingLocale:t});return(t===kt?Promise.resolve({templates:void 0}):Ct(t)).then((e=>{Mt===i&&(_t=t,$t=void 0,Et=e.templates,St({status:"ready",readyLocale:t}),Tt.resolve())}),(e=>{Mt===i&&(St({status:"error",errorLocale:t,errorMessage:e.toString()}),Tt.reject(e))})),Tt.promise};
|
68
|
+
/**
|
69
|
+
* @license
|
70
|
+
* Copyright 2020 Google LLC
|
71
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
72
|
+
*/
|
73
|
+
let Ut=ct,jt=!1;const Lt=["ca","en"];var Ot=function(t,i,e,s){for(var r,o=arguments.length,n=o<3?i:null===s?s=Object.getOwnPropertyDescriptor(i,e):s,h=t.length-1;h>=0;h--)(r=t[h])&&(n=(o<3?r(n):o>3?r(i,e,n):r(i,e))||n);return o>3&&n&&Object.defineProperty(i,e,n),n};const{getLocale:Nt,setLocale:It}=(Rt={sourceLocale:"es",targetLocales:Lt,loadLocale:t=>import(`./generated/locales/${t}.js`)},function(t){if(jt)throw new Error("lit-localize can only be configured once");Ut=t,jt=!0}(((t,i)=>xt(Et,t,i))),_t=kt=Rt.sourceLocale,At=new Set(Rt.targetLocales),At.add(Rt.sourceLocale),Ct=Rt.loadLocale,{getLocale:zt,setLocale:Pt});var Rt;let Dt=class extends st{constructor(){super(),this.formAction="",this.keywords="",this.locale="",It(this.locale)}updateShownValue(t){this.keywords=t.target?.value}closePopover(t){t.preventDefault(),(this.shadowRoot?.getElementById("popover")).hidePopover()}render(){return D`
|
74
|
+
<div id="popover-container">
|
75
|
+
<button id="button-popover" popovertarget="popover">
|
76
|
+
${Ut("Atención en línea")}
|
77
|
+
</button>
|
78
|
+
|
79
|
+
<div popover id="popover">
|
80
|
+
<header>
|
81
|
+
<h2>${Ut("Atención en línea Niris")}</h2>
|
82
|
+
</header>
|
83
|
+
<main>
|
84
|
+
<form action="${this.formAction}?keywords=${this.keywords}">
|
85
|
+
<label for="niris-input">
|
86
|
+
${Ut("Información, Consultas, Quejas y Sugerencias:")}
|
87
|
+
</label>
|
88
|
+
<textarea
|
89
|
+
id="niris-input"
|
90
|
+
@change=${this.updateShownValue}
|
91
|
+
name="keywords"
|
92
|
+
required
|
93
|
+
minlength="4"
|
94
|
+
placeholder="${Ut("Escribe tu consulta aquí")}"
|
95
|
+
></textarea>
|
96
|
+
<button type="submit">${Ut("Enviar")}</button>
|
97
|
+
<button type="button" @click="${this.closePopover}">
|
98
|
+
${Ut("Cerrar")}
|
99
|
+
</button>
|
100
|
+
</form>
|
101
|
+
</main>
|
102
|
+
</div>
|
103
|
+
</div>
|
104
|
+
`}};Dt.styles=((t,...i)=>{const s=1===t.length?t[0]:i.reduce(((i,e,s)=>i+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(e)+t[s+1]),t[0]);return new r(s,t,e)})`
|
105
|
+
:host {
|
106
|
+
--primary-color: #03599d;
|
107
|
+
--background-color: #d4d4d4;
|
108
|
+
--color: #fff;
|
109
|
+
--padding: 1rem 1rem;
|
110
|
+
--font-size: 1rem;
|
111
|
+
--border-radius: 0rem;
|
112
|
+
--font-weight: 500;
|
113
|
+
--font-family: 'Arial', sans-serif;
|
114
|
+
}
|
115
|
+
* {
|
116
|
+
font-family: 'Brush Script MT', cursive, sans-serif; /* This is fallback font for old browsers */
|
117
|
+
font-family: var(--font-family);
|
118
|
+
box-sizing: border-box;
|
119
|
+
}
|
120
|
+
|
121
|
+
button {
|
122
|
+
min-width: 120px;
|
123
|
+
background-color: var(--primary-color);
|
124
|
+
border: none;
|
125
|
+
color: white;
|
126
|
+
text-align: center;
|
127
|
+
text-decoration: none;
|
128
|
+
font-size: 16px;
|
129
|
+
cursor: pointer;
|
130
|
+
position: relative;
|
131
|
+
color: var(--color);
|
132
|
+
padding: var(--padding);
|
133
|
+
font-size: var(--font-size);
|
134
|
+
font-weight: var(--font-weight);
|
135
|
+
border-radius: var(--border-radius);
|
136
|
+
transition: 0.3s;
|
137
|
+
}
|
138
|
+
|
139
|
+
button:hover {
|
140
|
+
filter: brightness(120%);
|
141
|
+
}
|
142
|
+
|
143
|
+
button:focus-visible {
|
144
|
+
background-color: var(--primary-color);
|
145
|
+
outline: 3px solid var(--primary-color);
|
146
|
+
outline-offset: 2px;
|
147
|
+
}
|
148
|
+
|
149
|
+
#popover:popover-open {
|
150
|
+
display: flex;
|
151
|
+
flex-direction: column;
|
152
|
+
justify-content: center;
|
153
|
+
padding: 0;
|
154
|
+
border: 0;
|
155
|
+
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(0, 0, 0, 0.24);
|
156
|
+
width: 60%;
|
157
|
+
border-radius: var(--border-radius);
|
158
|
+
animation: fadeIn 150ms ease-in-out;
|
159
|
+
}
|
160
|
+
|
161
|
+
header {
|
162
|
+
text-align: center;
|
163
|
+
box-sizing: border-box;
|
164
|
+
padding-left: 1rem;
|
165
|
+
margin-bottom: 2rem;
|
166
|
+
width: 100%;
|
167
|
+
border-bottom: 1px solid #d4d4d4;
|
168
|
+
background-color: #f6f7f7;
|
169
|
+
}
|
170
|
+
|
171
|
+
header h2 {
|
172
|
+
color: var(--primary-color);
|
173
|
+
filter: opacity(100%);
|
174
|
+
}
|
175
|
+
|
176
|
+
header h2::before {
|
177
|
+
filter: opacity(50%);
|
178
|
+
color: var(--primary-color);
|
179
|
+
filter: opacity(100%);
|
180
|
+
}
|
181
|
+
|
182
|
+
form {
|
183
|
+
margin: 0 auto;
|
184
|
+
width: 90%;
|
185
|
+
}
|
186
|
+
|
187
|
+
textarea {
|
188
|
+
resize: none;
|
189
|
+
border-radius: var(--border-radius);
|
190
|
+
height: 8rem;
|
191
|
+
border-width: 2px;
|
192
|
+
margin: 0.7rem 0;
|
193
|
+
--tw-border-opacity: 1;
|
194
|
+
border-color: rgb(209 213 219 / var(--tw-border-opacity));
|
195
|
+
width: 100%;
|
196
|
+
font-size: 0.875rem;
|
197
|
+
padding: 0.5rem;
|
198
|
+
}
|
199
|
+
|
200
|
+
textarea:focus,
|
201
|
+
select:focus {
|
202
|
+
outline: 2px solid transparent;
|
203
|
+
outline-offset: 2px;
|
204
|
+
--tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);
|
205
|
+
--tw-ring-offset-width: 0px;
|
206
|
+
--tw-ring-offset-color: #fff;
|
207
|
+
--tw-ring-color: var(--primary-color);
|
208
|
+
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
209
|
+
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
210
|
+
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
211
|
+
calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
212
|
+
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
213
|
+
var(--tw-shadow);
|
214
|
+
border-color: var(--primary-color);
|
215
|
+
}
|
216
|
+
form button {
|
217
|
+
float: left;
|
218
|
+
margin: 1rem auto;
|
219
|
+
}
|
220
|
+
|
221
|
+
form button:last-child {
|
222
|
+
background-color: transparent;
|
223
|
+
margin-left: 1rem;
|
224
|
+
border: inset 2px solid var(--primary-color);
|
225
|
+
box-shadow: 0 0 0 1px var(--primary-color),
|
226
|
+
inset 0 0 0 2px var(--primary-color);
|
227
|
+
color: var(--primary-color);
|
228
|
+
}
|
229
|
+
form button:last-child:hover {
|
230
|
+
background-color: var(--primary-color);
|
231
|
+
color: white;
|
232
|
+
filter: none;
|
233
|
+
}
|
234
|
+
#popover::backdrop {
|
235
|
+
background-color: rgba(#c6c8ce 0.3);
|
236
|
+
backdrop-filter: blur(2px);
|
237
|
+
}
|
238
|
+
|
239
|
+
@keyframes fadeIn {
|
240
|
+
0% {
|
241
|
+
scale: 0.8;
|
242
|
+
opacity: 0;
|
243
|
+
}
|
244
|
+
100% {
|
245
|
+
scale: 1;
|
246
|
+
opacity: 1;
|
247
|
+
}
|
248
|
+
}
|
249
|
+
|
250
|
+
@media (max-width: 1024px) {
|
251
|
+
#popover:popover-open {
|
252
|
+
width: 90%;
|
253
|
+
}
|
254
|
+
}
|
255
|
+
|
256
|
+
@media (min-width: 1024px) {
|
257
|
+
#popover:popover-open {
|
258
|
+
width: 60%;
|
259
|
+
}
|
260
|
+
}
|
261
|
+
`,Ot([ht({type:String})],Dt.prototype,"formAction",void 0),Ot([ht({type:String})],Dt.prototype,"keywords",void 0),Ot([ht({type:String})],Dt.prototype,"locale",void 0),Dt=Ot([(t,i)=>(t.addInitializer(ut),t)],Dt),customElements.define("textarea-to-niris",Dt);export{Dt as TextareaToNiris,Nt as getLocale,It as setLocale};
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { LitElement } from 'lit';
|
2
|
+
export declare const getLocale: (() => string) & {
|
3
|
+
_LIT_LOCALIZE_GET_LOCALE_?: undefined;
|
4
|
+
}, setLocale: ((newLocale: string) => Promise<void>) & {
|
5
|
+
_LIT_LOCALIZE_SET_LOCALE_?: undefined;
|
6
|
+
};
|
7
|
+
export declare class TextareaToNiris extends LitElement {
|
8
|
+
formAction: any;
|
9
|
+
keywords: any;
|
10
|
+
locale: string;
|
11
|
+
constructor();
|
12
|
+
updateShownValue(event: Event): void;
|
13
|
+
closePopover(event: Event): void;
|
14
|
+
render(): import("lit-html").TemplateResult<1>;
|
15
|
+
static styles: import("lit").CSSResult;
|
16
|
+
}
|
17
|
+
declare global {
|
18
|
+
interface HTMLElementTagNameMap {
|
19
|
+
'textarea-to-niris': TextareaToNiris;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
//# sourceMappingURL=textarea-to-niris.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"textarea-to-niris.d.ts","sourceRoot":"","sources":["../src/textarea-to-niris.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAY,MAAM,KAAK,CAAC;AAO1C,eAAO,MAAO,SAAS;;GAAE,SAAS;;CAIhC,CAAC;AAEH,qBACa,eAAgB,SAAQ,UAAU;IACnB,UAAU,EAAE,GAAG,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;IACR,MAAM,EAAE,MAAM,CAAC;;IAW/C,gBAAgB,CAAC,KAAK,EAAE,KAAK;IAI7B,YAAY,CAAC,KAAK,EAAE,KAAK;IAKhB,MAAM;IAmCf,OAAgB,MAAM,0BA6JpB;CACH;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
|
@@ -1,17 +1,50 @@
|
|
1
|
-
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6
|
+
};
|
7
|
+
import { LitElement, html, css } from 'lit';
|
8
|
+
import { property } from 'lit/decorators.js';
|
9
|
+
import { msg, localized } from '@lit/localize';
|
10
|
+
import { configureLocalization } from '@lit/localize';
|
11
|
+
// Generated via output.localeCodesModule
|
12
|
+
import { sourceLocale, targetLocales } from './generated/locale-codes.js';
|
13
|
+
export const { getLocale, setLocale } = configureLocalization({
|
14
|
+
sourceLocale,
|
15
|
+
targetLocales,
|
16
|
+
loadLocale: (locale) => import(`./generated/locales/${locale}.js`),
|
17
|
+
});
|
18
|
+
let TextareaToNiris = class TextareaToNiris extends LitElement {
|
19
|
+
constructor() {
|
20
|
+
super();
|
21
|
+
this.formAction = '';
|
22
|
+
this.keywords = '';
|
23
|
+
this.locale = 'es';
|
24
|
+
//setLocale(this.locale);
|
25
|
+
}
|
26
|
+
updateShownValue(event) {
|
27
|
+
this.keywords = event.target?.value;
|
28
|
+
}
|
29
|
+
closePopover(event) {
|
30
|
+
event.preventDefault();
|
31
|
+
(this.shadowRoot?.getElementById('popover')).hidePopover();
|
32
|
+
}
|
33
|
+
render() {
|
34
|
+
return html `
|
2
35
|
<div id="popover-container">
|
3
36
|
<button id="button-popover" popovertarget="popover">
|
4
|
-
${
|
37
|
+
${msg('Atención en línea')}
|
5
38
|
</button>
|
6
39
|
|
7
40
|
<div popover id="popover">
|
8
41
|
<header>
|
9
|
-
<h2>${
|
42
|
+
<h2>${msg('Atención en línea Niris')}</h2>
|
10
43
|
</header>
|
11
44
|
<main>
|
12
45
|
<form action="${this.formAction}&keywords=${this.keywords}" method="get">
|
13
46
|
<label for="niris-input">
|
14
|
-
${
|
47
|
+
${msg('Información, Consultas, Quejas y Sugerencias:')}
|
15
48
|
</label>
|
16
49
|
<textarea
|
17
50
|
id="niris-input"
|
@@ -19,17 +52,20 @@ import{c as r,i as o,n as e,l as t,s as i,t as a,a as n,x as s,m as d}from"./loc
|
|
19
52
|
name="keywords"
|
20
53
|
required
|
21
54
|
minlength="4"
|
22
|
-
placeholder="${
|
55
|
+
placeholder="${msg('Escribe tu consulta aquí')}"
|
23
56
|
></textarea>
|
24
|
-
<button type="submit">${
|
57
|
+
<button type="submit">${msg('Enviar')}</button>
|
25
58
|
<button type="button" @click="${this.closePopover}">
|
26
|
-
${
|
59
|
+
${msg('Cerrar')}
|
27
60
|
</button>
|
28
61
|
</form>
|
29
62
|
</main>
|
30
63
|
</div>
|
31
64
|
</div>
|
32
|
-
|
65
|
+
`;
|
66
|
+
}
|
67
|
+
};
|
68
|
+
TextareaToNiris.styles = css `
|
33
69
|
:host {
|
34
70
|
--primary-color: #03599d;
|
35
71
|
--background-color: #d4d4d4;
|
@@ -186,4 +222,19 @@ import{c as r,i as o,n as e,l as t,s as i,t as a,a as n,x as s,m as d}from"./loc
|
|
186
222
|
width: 60%;
|
187
223
|
}
|
188
224
|
}
|
189
|
-
|
225
|
+
`;
|
226
|
+
__decorate([
|
227
|
+
property({ type: String })
|
228
|
+
], TextareaToNiris.prototype, "formAction", void 0);
|
229
|
+
__decorate([
|
230
|
+
property({ type: String })
|
231
|
+
], TextareaToNiris.prototype, "keywords", void 0);
|
232
|
+
__decorate([
|
233
|
+
property({ type: String })
|
234
|
+
], TextareaToNiris.prototype, "locale", void 0);
|
235
|
+
TextareaToNiris = __decorate([
|
236
|
+
localized()
|
237
|
+
], TextareaToNiris);
|
238
|
+
export { TextareaToNiris };
|
239
|
+
customElements.define('textarea-to-niris', TextareaToNiris);
|
240
|
+
//# sourceMappingURL=textarea-to-niris.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"textarea-to-niris.js","sourceRoot":"","sources":["../src/textarea-to-niris.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAC,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,GAAG,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;AACpD,yCAAyC;AACzC,OAAO,EAAC,YAAY,EAAE,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAExE,MAAM,CAAC,MAAM,EAAC,SAAS,EAAE,SAAS,EAAC,GAAG,qBAAqB,CAAC;IAC1D,YAAY;IACZ,aAAa;IACb,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,uBAAuB,MAAM,KAAK,CAAC;CACnE,CAAC,CAAC;AAGI,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,UAAU;IAM7C;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,yBAAyB;IAC3B,CAAC;IAED,gBAAgB,CAAC,KAAY;QAC3B,IAAI,CAAC,QAAQ,GAAI,KAAK,CAAC,MAA2B,EAAE,KAAK,CAAC;IAC5D,CAAC;IAED,YAAY,CAAC,KAAY;QACvB,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,SAAS,CAAiB,CAAA,CAAC,WAAW,EAAE,CAAC;IAC5E,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA;;;YAGH,GAAG,CAAC,mBAAmB,CAAC;;;;;kBAKlB,GAAG,CAAC,yBAAyB,CAAC;;;4BAGpB,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,QAAQ;;gBAErD,GAAG,CAAC,+CAA+C,CAAC;;;;0BAI1C,IAAI,CAAC,gBAAgB;;;;+BAIhB,GAAG,CAAC,0BAA0B,CAAC;;sCAExB,GAAG,CAAC,QAAQ,CAAC;8CACL,IAAI,CAAC,YAAY;kBAC7C,GAAG,CAAC,QAAQ,CAAC;;;;;;KAM1B,CAAC;IACJ,CAAC;;AAEe,sBAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6J3B,AA7JqB,CA6JpB;AAtNwB;IAAzB,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;mDAAiB;AAChB;IAAzB,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;iDAAe;AACR;IAA/B,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;+CAAsB;AAHpC,eAAe;IAD3B,SAAS,EAAE;GACC,eAAe,CAwN3B;;AAED,cAAc,CAAC,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC","sourcesContent":["import {LitElement, html, css} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {msg, localized } from '@lit/localize';\nimport {configureLocalization} from '@lit/localize';\n// Generated via output.localeCodesModule\nimport {sourceLocale, targetLocales} from './generated/locale-codes.js';\n\nexport const {getLocale, setLocale} = configureLocalization({\n sourceLocale,\n targetLocales,\n loadLocale: (locale) => import(`./generated/locales/${locale}.js`),\n});\n\n@localized()\nexport class TextareaToNiris extends LitElement {\n @property({type: String}) formAction: any;\n @property({type: String}) keywords: any;\n @property({type: String}) locale: string;\n\n\n constructor() {\n super();\n this.formAction = '';\n this.keywords = '';\n this.locale = 'es'\n //setLocale(this.locale);\n }\n\n updateShownValue(event: Event) {\n this.keywords = (event.target as HTMLInputElement)?.value;\n }\n\n closePopover(event: Event) {\n event.preventDefault();\n (this.shadowRoot?.getElementById('popover') as HTMLElement).hidePopover();\n }\n\n override render() {\n return html`\n <div id=\"popover-container\">\n <button id=\"button-popover\" popovertarget=\"popover\">\n ${msg('Atención en línea')}\n </button>\n\n <div popover id=\"popover\">\n <header>\n <h2>${msg('Atención en línea Niris')}</h2>\n </header>\n <main>\n <form action=\"${this.formAction}&keywords=${this.keywords}\" method=\"get\">\n <label for=\"niris-input\">\n ${msg('Información, Consultas, Quejas y Sugerencias:')}\n </label>\n <textarea\n id=\"niris-input\"\n @change=${this.updateShownValue}\n name=\"keywords\"\n required\n minlength=\"4\"\n placeholder=\"${msg('Escribe tu consulta aquí')}\"\n ></textarea>\n <button type=\"submit\">${msg('Enviar')}</button>\n <button type=\"button\" @click=\"${this.closePopover}\">\n ${msg('Cerrar')}\n </button>\n </form>\n </main>\n </div>\n </div>\n `;\n }\n\n static override styles = css`\n :host {\n --primary-color: #03599d;\n --background-color: #d4d4d4;\n --color: #fff;\n --padding: 1rem 1rem;\n --font-size: 1rem;\n --border-radius: 0rem;\n --font-weight: 500;\n --font-family: 'Arial', sans-serif;\n }\n * {\n font-family: 'Brush Script MT', cursive, sans-serif; /* This is fallback font for old browsers */\n font-family: var(--font-family);\n box-sizing: border-box;\n }\n\n button {\n min-width: 120px;\n background-color: var(--primary-color);\n border: none;\n color: white;\n text-align: center;\n text-decoration: none;\n font-size: 16px;\n cursor: pointer;\n position: relative;\n color: var(--color);\n padding: var(--padding);\n font-size: var(--font-size);\n font-weight: var(--font-weight);\n border-radius: var(--border-radius);\n transition: 0.3s;\n }\n\n button:hover {\n filter: brightness(120%);\n }\n\n button:focus-visible {\n background-color: var(--primary-color);\n outline: 3px solid var(--primary-color);\n outline-offset: 2px;\n }\n\n #popover:popover-open {\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 0;\n border: 0;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(0, 0, 0, 0.24);\n width: 60%;\n border-radius: var(--border-radius);\n animation: fadeIn 150ms ease-in-out;\n }\n\n header {\n text-align: center;\n box-sizing: border-box;\n padding-left: 1rem;\n margin-bottom: 2rem;\n width: 100%;\n border-bottom: 1px solid #d4d4d4;\n background-color: #f6f7f7;\n }\n\n header h2 {\n color: var(--primary-color);\n filter: opacity(100%);\n }\n\n header h2::before {\n filter: opacity(50%);\n color: var(--primary-color);\n filter: opacity(100%);\n }\n\n form {\n margin: 0 auto;\n width: 90%;\n }\n\n textarea {\n resize: none;\n border-radius: var(--border-radius);\n height: 8rem;\n border-width: 2px;\n margin: 0.7rem 0;\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity));\n width: 100%;\n font-size: 0.875rem;\n padding: 0.5rem;\n }\n\n textarea:focus,\n select:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n --tw-ring-inset: var(--tw-empty, /*!*/ /*!*/);\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: var(--primary-color);\n --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0\n var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n --tw-ring-shadow: var(--tw-ring-inset) 0 0 0\n calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),\n var(--tw-shadow);\n border-color: var(--primary-color);\n }\n form button {\n float: left;\n margin: 1rem auto;\n }\n\n form button:last-child {\n background-color: transparent;\n margin-left: 1rem;\n border: inset 2px solid var(--primary-color);\n box-shadow: 0 0 0 1px var(--primary-color),\n inset 0 0 0 2px var(--primary-color);\n color: var(--primary-color);\n }\n form button:last-child:hover {\n background-color: var(--primary-color);\n color: white;\n filter: none;\n }\n #popover::backdrop {\n background-color: rgba(#c6c8ce 0.3);\n backdrop-filter: blur(2px);\n }\n\n @keyframes fadeIn {\n 0% {\n scale: 0.8;\n opacity: 0;\n }\n 100% {\n scale: 1;\n opacity: 1;\n }\n }\n\n @media (max-width: 1024px) {\n #popover:popover-open {\n width: 90%;\n }\n }\n\n @media (min-width: 1024px) {\n #popover:popover-open {\n width: 60%;\n }\n }\n `;\n}\n\ncustomElements.define('textarea-to-niris', TextareaToNiris);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'textarea-to-niris': TextareaToNiris;\n }\n}\n"]}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "niris-public-community-components",
|
3
3
|
"private": false,
|
4
|
-
"version": "0.0.
|
4
|
+
"version": "0.0.10",
|
5
5
|
"homepage": "https://iris.apsl.net",
|
6
6
|
"description": "Web components for the NIRIS project developed with the Lit library",
|
7
7
|
"main": "dist/index.js",
|
package/src/form-niris.ts
CHANGED
@@ -39,9 +39,6 @@ export const {getLocale, setLocale} = configureLocalization({
|
|
39
39
|
- Validaciones archivos extensiones.
|
40
40
|
*/
|
41
41
|
|
42
|
-
/**
|
43
|
-
* An example element.
|
44
|
-
*/
|
45
42
|
@localized()
|
46
43
|
export class FormNiris extends LitElement {
|
47
44
|
@property({type: Number}) detailID: Number | undefined;
|
@@ -116,7 +113,7 @@ export class FormNiris extends LitElement {
|
|
116
113
|
this.characteristics = [];
|
117
114
|
|
118
115
|
this.locale = this.locale ? this.locale : 'es';
|
119
|
-
// setLocale(this.locale);
|
116
|
+
// setLocale(this.locale); TODO: Fix problem when using setLocale
|
120
117
|
|
121
118
|
// Map
|
122
119
|
L.Icon.Default.imagePath = `https://unpkg.com/leaflet@${L.version}/dist/images/`;
|
@@ -332,7 +329,9 @@ export class FormNiris extends LitElement {
|
|
332
329
|
const stylesCharacteristics = {
|
333
330
|
display: this.characteristics.length == 0 ? 'none' : '',
|
334
331
|
};
|
335
|
-
|
332
|
+
// To fix map problem. When opening with collapse, it does not render correctly
|
333
|
+
setTimeout(() => window.dispatchEvent(new Event('resize')), 100)
|
334
|
+
|
336
335
|
return html`
|
337
336
|
<section class="record">
|
338
337
|
<h2 class="record__comment">${msg('Mensaje')}</h2>
|
@@ -526,7 +525,7 @@ export class FormNiris extends LitElement {
|
|
526
525
|
|
527
526
|
<div>
|
528
527
|
<label for="secondSurname">${msg('Segundo apellido')}*:</label>
|
529
|
-
<input id="secondSurname" name="secondSurname" type="text"
|
528
|
+
<input id="secondSurname" name="secondSurname" type="text" />
|
530
529
|
</div>
|
531
530
|
|
532
531
|
<div>
|
package/src/textarea-to-niris.ts
CHANGED
@@ -23,7 +23,7 @@ export class TextareaToNiris extends LitElement {
|
|
23
23
|
this.formAction = '';
|
24
24
|
this.keywords = '';
|
25
25
|
this.locale = 'es'
|
26
|
-
//setLocale(this.locale);
|
26
|
+
//setLocale(this.locale); TODO: Fix problem when using setLocale
|
27
27
|
}
|
28
28
|
|
29
29
|
updateShownValue(event: Event) {
|