geonetwork-ui 2.3.0-dev.61774f7d → 2.3.0-dev.89188551
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +35 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +64 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +15 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +20 -6
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +16 -1
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +3 -2
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +1 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +16 -3
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +37 -8
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +1 -6
- package/esm2022/libs/ui/inputs/src/index.mjs +16 -15
- package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +22 -0
- package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +7 -5
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +17 -8
- package/esm2022/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +29 -0
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +11 -9
- package/esm2022/libs/ui/layout/src/index.mjs +2 -1
- package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +76 -0
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +42 -18
- package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +3 -8
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -2
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +22 -1
- package/esm2022/translations/de.json +20 -14
- package/esm2022/translations/en.json +20 -14
- package/esm2022/translations/es.json +20 -14
- package/esm2022/translations/fr.json +20 -14
- package/esm2022/translations/it.json +20 -14
- package/esm2022/translations/nl.json +20 -14
- package/esm2022/translations/pt.json +20 -14
- package/fesm2022/geonetwork-ui.mjs +1198 -833
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +3 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +39 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +8 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +3 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +3 -1
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +4 -2
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +29 -30
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +15 -14
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +9 -0
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +12 -0
- package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +35 -35
- package/libs/ui/layout/src/index.d.ts +1 -0
- package/libs/ui/layout/src/index.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +25 -0
- package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts +13 -6
- package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/ui-layout.module.d.ts +4 -5
- package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +18 -0
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +8 -0
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +2 -2
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +51 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.html +8 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +64 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.html +4 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.ts +15 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +33 -33
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +16 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +15 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +2 -1
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +0 -1
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +1 -1
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +38 -20
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +12 -0
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +1 -1
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +43 -5
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -2
- package/src/libs/ui/inputs/src/index.ts +15 -14
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +3 -0
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +11 -0
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +16 -0
- package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +8 -1
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +13 -0
- package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.css +6 -0
- package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.html +26 -0
- package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.ts +32 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +2 -2
- package/src/libs/ui/layout/src/index.ts +1 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +23 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +20 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +84 -0
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +7 -4
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +4 -4
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.ts +45 -15
- package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -2
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +1 -1
- package/src/libs/util/shared/src/lib/links/link-utils.ts +21 -0
- package/translations/de.json +20 -14
- package/translations/en.json +20 -14
- package/translations/es.json +20 -14
- package/translations/fr.json +20 -14
- package/translations/it.json +20 -14
- package/translations/nl.json +20 -14
- package/translations/pt.json +20 -14
- package/translations/sk.json +20 -14
|
@@ -8,7 +8,7 @@ import * as i1$1 from '@ngx-translate/core';
|
|
|
8
8
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay,
|
|
11
|
+
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, distinctUntilChanged, finalize, first, throttleTime, share, pairwise, mergeMap } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
@@ -44,28 +44,27 @@ import { bbox } from 'ol/loadingstrategy';
|
|
|
44
44
|
import WMTS from 'ol/source/WMTS';
|
|
45
45
|
import * as i2$3 from '@angular/material/tabs';
|
|
46
46
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
47
|
-
import * as i1$4 from '@angular/cdk/overlay';
|
|
48
|
-
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
49
47
|
import * as i2$1 from '@angular/forms';
|
|
50
48
|
import { UntypedFormControl, FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
51
|
-
import * as i5 from 'ngx-chips';
|
|
52
|
-
import { TagInputModule } from 'ngx-chips';
|
|
53
49
|
import * as i4 from '@angular/material/autocomplete';
|
|
54
50
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
55
|
-
import * as i5
|
|
51
|
+
import * as i5 from '@angular/material/core';
|
|
56
52
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
57
|
-
import * as
|
|
58
|
-
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
59
|
-
import * as i1$5 from '@angular/material/progress-spinner';
|
|
60
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
61
|
-
import * as i1$6 from '@angular/material/checkbox';
|
|
53
|
+
import * as i1$4 from '@angular/material/checkbox';
|
|
62
54
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
63
|
-
import * as
|
|
55
|
+
import * as i5$1 from 'ngx-chips';
|
|
56
|
+
import { TagInputModule } from 'ngx-chips';
|
|
57
|
+
import * as i3 from '@angular/material/tooltip';
|
|
64
58
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
65
|
-
import * as i2$2 from '@angular/material/
|
|
66
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
67
|
-
import * as i3$2 from '@angular/material/datepicker';
|
|
59
|
+
import * as i2$2 from '@angular/material/datepicker';
|
|
68
60
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
61
|
+
import * as i3$1 from 'ngx-dropzone';
|
|
62
|
+
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
63
|
+
import * as i1$5 from '@angular/cdk/overlay';
|
|
64
|
+
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
65
|
+
import * as i1$6 from '@angular/material/progress-spinner';
|
|
66
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
67
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
69
68
|
import { MatInputModule } from '@angular/material/input';
|
|
70
69
|
import * as i1$7 from '@angular/router';
|
|
71
70
|
import { RouterModule, RouterLink, RouteReuseStrategy } from '@angular/router';
|
|
@@ -89,14 +88,14 @@ import * as i2$4 from '@angular/material/sort';
|
|
|
89
88
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
90
89
|
import * as i1$9 from '@angular/material/table';
|
|
91
90
|
import { MatTableModule } from '@angular/material/table';
|
|
92
|
-
import * as i3$
|
|
91
|
+
import * as i3$2 from 'ng-table-virtual-scroll';
|
|
93
92
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
94
93
|
import * as Papa from 'papaparse';
|
|
95
94
|
import parseDate from 'date-fns/parse';
|
|
96
95
|
import parseIsoDate from 'date-fns/parseISO';
|
|
97
96
|
import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
98
97
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
99
|
-
import * as i3$
|
|
98
|
+
import * as i3$3 from '@ngrx/router-store';
|
|
100
99
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
101
100
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
102
101
|
|
|
@@ -17419,6 +17418,17 @@ var de = {
|
|
|
17419
17418
|
"downloads.format.unknown": "unbekannt",
|
|
17420
17419
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17421
17420
|
dropFile: dropFile$6,
|
|
17421
|
+
"editor.record.form.license": "Lizenz",
|
|
17422
|
+
"editor.record.form.license.cc-by": "",
|
|
17423
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
17424
|
+
"editor.record.form.license.cc-zero": "",
|
|
17425
|
+
"editor.record.form.license.etalab": "",
|
|
17426
|
+
"editor.record.form.license.etalab-v2": "",
|
|
17427
|
+
"editor.record.form.license.odbl": "",
|
|
17428
|
+
"editor.record.form.license.odc-by": "",
|
|
17429
|
+
"editor.record.form.license.pddl": "",
|
|
17430
|
+
"editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
17431
|
+
"editor.record.form.resourceUpdated": "",
|
|
17422
17432
|
"editor.record.loadError.body": "",
|
|
17423
17433
|
"editor.record.loadError.closeMessage": "",
|
|
17424
17434
|
"editor.record.loadError.title": "",
|
|
@@ -17489,6 +17499,7 @@ var de = {
|
|
|
17489
17499
|
"multiselect.filter.placeholder": "Suche",
|
|
17490
17500
|
"nav.back": "Zurück",
|
|
17491
17501
|
next: next$6,
|
|
17502
|
+
"ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
|
|
17492
17503
|
"organisation.filter.placeholder": "Ergebnisse filtern",
|
|
17493
17504
|
"organisation.sort.sortBy": "Sortieren nach:",
|
|
17494
17505
|
"organisations.hits.found": "{hits, plural, =0{Keine Organisation gefunden} other{{hits} von {total} Organisationen angezeigt}}",
|
|
@@ -17553,14 +17564,6 @@ var de = {
|
|
|
17553
17564
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
17554
17565
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
17555
17566
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
17556
|
-
"record.metadata.userFeedbacks": "",
|
|
17557
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17558
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17559
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17560
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17561
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17562
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17563
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17564
17567
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
17565
17568
|
"record.metadata.status": "Status",
|
|
17566
17569
|
"record.metadata.technical": "Technische Informationen",
|
|
@@ -17575,6 +17578,14 @@ var de = {
|
|
|
17575
17578
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
17576
17579
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
17577
17580
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
17581
|
+
"record.metadata.userFeedbacks": "",
|
|
17582
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17583
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17584
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17585
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17586
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17587
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17588
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17578
17589
|
"record.more.details": "Weitere Details",
|
|
17579
17590
|
"record.tab.chart": "Diagramm",
|
|
17580
17591
|
"record.tab.data": "Tabelle",
|
|
@@ -17634,12 +17645,6 @@ var de = {
|
|
|
17634
17645
|
"table.loading.data": "Daten werden geladen...",
|
|
17635
17646
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
17636
17647
|
"table.select.data": "Datenquelle",
|
|
17637
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
17638
|
-
"timeSincePipe.minutesAgo": "",
|
|
17639
|
-
"timeSincePipe.hoursAgo": "",
|
|
17640
|
-
"timeSincePipe.daysAgo": "",
|
|
17641
|
-
"timeSincePipe.monthsAgo": "",
|
|
17642
|
-
"timeSincePipe.yearsAgo": "",
|
|
17643
17648
|
"tooltip.html.copy": "HTML kopieren",
|
|
17644
17649
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
17645
17650
|
"tooltip.url.copy": "URL kopieren",
|
|
@@ -17804,6 +17809,17 @@ var en = {
|
|
|
17804
17809
|
"downloads.format.unknown": "unknown",
|
|
17805
17810
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17806
17811
|
dropFile: dropFile$5,
|
|
17812
|
+
"editor.record.form.license": "License",
|
|
17813
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17814
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17815
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
17816
|
+
"editor.record.form.license.etalab": "Open Licence (Etalab)",
|
|
17817
|
+
"editor.record.form.license.etalab-v2": "Open Licence v2.0 (Etalab)",
|
|
17818
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
17819
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17820
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17821
|
+
"editor.record.form.license.unknown": "Unknown or absent",
|
|
17822
|
+
"editor.record.form.resourceUpdated": "Last update date",
|
|
17807
17823
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17808
17824
|
"editor.record.loadError.closeMessage": "Understood",
|
|
17809
17825
|
"editor.record.loadError.title": "Error loading record",
|
|
@@ -17874,6 +17890,7 @@ var en = {
|
|
|
17874
17890
|
"multiselect.filter.placeholder": "Search",
|
|
17875
17891
|
"nav.back": "Back",
|
|
17876
17892
|
next: next$5,
|
|
17893
|
+
"ogc.unreachable.unknown": "The service could not be reached",
|
|
17877
17894
|
"organisation.filter.placeholder": "Filter results",
|
|
17878
17895
|
"organisation.sort.sortBy": "Sort by:",
|
|
17879
17896
|
"organisations.hits.found": "{hits, plural, =0{No organizations found} other{{hits} out of {total} organizations shown}}",
|
|
@@ -17938,14 +17955,6 @@ var en = {
|
|
|
17938
17955
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
17939
17956
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17940
17957
|
"record.metadata.related": "Related records",
|
|
17941
|
-
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
17942
|
-
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
17943
|
-
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17944
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
17945
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
17946
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
17947
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
17948
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
17949
17958
|
"record.metadata.sheet": "Original metadata",
|
|
17950
17959
|
"record.metadata.status": "Status",
|
|
17951
17960
|
"record.metadata.technical": "Technical information",
|
|
@@ -17960,6 +17969,14 @@ var en = {
|
|
|
17960
17969
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17961
17970
|
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17962
17971
|
"record.metadata.usage": "License and Conditions",
|
|
17972
|
+
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
17973
|
+
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
17974
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
17975
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
17976
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
17977
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
17978
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
17979
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17963
17980
|
"record.more.details": "Read more",
|
|
17964
17981
|
"record.tab.chart": "Chart",
|
|
17965
17982
|
"record.tab.data": "Table",
|
|
@@ -18019,12 +18036,6 @@ var en = {
|
|
|
18019
18036
|
"table.loading.data": "Loading data...",
|
|
18020
18037
|
"table.object.count": "objects in this dataset",
|
|
18021
18038
|
"table.select.data": "Data source",
|
|
18022
|
-
"timeSincePipe.lessThanAMinute": "Less than a minute ago",
|
|
18023
|
-
"timeSincePipe.minutesAgo": "{value} minute{s} ago",
|
|
18024
|
-
"timeSincePipe.hoursAgo": "{value} hour{s} ago",
|
|
18025
|
-
"timeSincePipe.daysAgo": "{value} day{s} ago",
|
|
18026
|
-
"timeSincePipe.monthsAgo": "{value} month{s} ago",
|
|
18027
|
-
"timeSincePipe.yearsAgo": "{value} year{s} ago",
|
|
18028
18039
|
"tooltip.html.copy": "Copy HTML",
|
|
18029
18040
|
"tooltip.id.copy": "Copy unique identifier",
|
|
18030
18041
|
"tooltip.url.copy": "Copy URL",
|
|
@@ -18189,6 +18200,17 @@ var es = {
|
|
|
18189
18200
|
"downloads.format.unknown": "",
|
|
18190
18201
|
"downloads.wfs.featuretype.not.found": "",
|
|
18191
18202
|
dropFile: dropFile$4,
|
|
18203
|
+
"editor.record.form.license": "",
|
|
18204
|
+
"editor.record.form.license.cc-by": "",
|
|
18205
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18206
|
+
"editor.record.form.license.cc-zero": "",
|
|
18207
|
+
"editor.record.form.license.etalab": "",
|
|
18208
|
+
"editor.record.form.license.etalab-v2": "",
|
|
18209
|
+
"editor.record.form.license.odbl": "",
|
|
18210
|
+
"editor.record.form.license.odc-by": "",
|
|
18211
|
+
"editor.record.form.license.pddl": "",
|
|
18212
|
+
"editor.record.form.license.unknown": "",
|
|
18213
|
+
"editor.record.form.resourceUpdated": "",
|
|
18192
18214
|
"editor.record.loadError.body": "",
|
|
18193
18215
|
"editor.record.loadError.closeMessage": "",
|
|
18194
18216
|
"editor.record.loadError.title": "",
|
|
@@ -18259,6 +18281,7 @@ var es = {
|
|
|
18259
18281
|
"multiselect.filter.placeholder": "",
|
|
18260
18282
|
"nav.back": "",
|
|
18261
18283
|
next: next$4,
|
|
18284
|
+
"ogc.unreachable.unknown": "",
|
|
18262
18285
|
"organisation.filter.placeholder": "",
|
|
18263
18286
|
"organisation.sort.sortBy": "",
|
|
18264
18287
|
"organisations.hits.found": "",
|
|
@@ -18323,14 +18346,6 @@ var es = {
|
|
|
18323
18346
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
18324
18347
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18325
18348
|
"record.metadata.related": "",
|
|
18326
|
-
"record.metadata.userFeedbacks": "",
|
|
18327
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18328
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18329
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18330
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18331
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18332
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18333
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18334
18349
|
"record.metadata.sheet": "",
|
|
18335
18350
|
"record.metadata.status": "",
|
|
18336
18351
|
"record.metadata.technical": "",
|
|
@@ -18345,6 +18360,14 @@ var es = {
|
|
|
18345
18360
|
"record.metadata.updateFrequency": "",
|
|
18346
18361
|
"record.metadata.updatedOn": "",
|
|
18347
18362
|
"record.metadata.usage": "",
|
|
18363
|
+
"record.metadata.userFeedbacks": "",
|
|
18364
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18365
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18366
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18367
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18368
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18369
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18370
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18348
18371
|
"record.more.details": "",
|
|
18349
18372
|
"record.tab.chart": "",
|
|
18350
18373
|
"record.tab.data": "",
|
|
@@ -18404,12 +18427,6 @@ var es = {
|
|
|
18404
18427
|
"table.loading.data": "",
|
|
18405
18428
|
"table.object.count": "",
|
|
18406
18429
|
"table.select.data": "",
|
|
18407
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
18408
|
-
"timeSincePipe.minutesAgo": "",
|
|
18409
|
-
"timeSincePipe.hoursAgo": "",
|
|
18410
|
-
"timeSincePipe.daysAgo": "",
|
|
18411
|
-
"timeSincePipe.monthsAgo": "",
|
|
18412
|
-
"timeSincePipe.yearsAgo": "",
|
|
18413
18430
|
"tooltip.html.copy": "",
|
|
18414
18431
|
"tooltip.id.copy": "",
|
|
18415
18432
|
"tooltip.url.copy": "",
|
|
@@ -18574,6 +18591,17 @@ var fr = {
|
|
|
18574
18591
|
"downloads.format.unknown": "inconnu",
|
|
18575
18592
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18576
18593
|
dropFile: dropFile$3,
|
|
18594
|
+
"editor.record.form.license": "Licence",
|
|
18595
|
+
"editor.record.form.license.cc-by": "",
|
|
18596
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18597
|
+
"editor.record.form.license.cc-zero": "",
|
|
18598
|
+
"editor.record.form.license.etalab": "Licence Ouverte (Etalab)",
|
|
18599
|
+
"editor.record.form.license.etalab-v2": "Licence Ouverte v2.0 (Etalab)",
|
|
18600
|
+
"editor.record.form.license.odbl": "",
|
|
18601
|
+
"editor.record.form.license.odc-by": "",
|
|
18602
|
+
"editor.record.form.license.pddl": "",
|
|
18603
|
+
"editor.record.form.license.unknown": "Non-reconnue ou absente",
|
|
18604
|
+
"editor.record.form.resourceUpdated": "Date de dernière révision",
|
|
18577
18605
|
"editor.record.loadError.body": "",
|
|
18578
18606
|
"editor.record.loadError.closeMessage": "",
|
|
18579
18607
|
"editor.record.loadError.title": "",
|
|
@@ -18644,6 +18672,7 @@ var fr = {
|
|
|
18644
18672
|
"multiselect.filter.placeholder": "Rechercher",
|
|
18645
18673
|
"nav.back": "Retour",
|
|
18646
18674
|
next: next$3,
|
|
18675
|
+
"ogc.unreachable.unknown": "Le service n'est pas accessible",
|
|
18647
18676
|
"organisation.filter.placeholder": "Filtrer les résultats",
|
|
18648
18677
|
"organisation.sort.sortBy": "Trier par :",
|
|
18649
18678
|
"organisations.hits.found": "{hits, plural, =0{Aucune organisation trouvé} one{1 organisation sur {total} affichée} other{{hits} organisations sur {total} affichées}}",
|
|
@@ -18708,14 +18737,6 @@ var fr = {
|
|
|
18708
18737
|
"record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
|
|
18709
18738
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
18710
18739
|
"record.metadata.related": "Voir aussi",
|
|
18711
|
-
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18712
|
-
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18713
|
-
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18714
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18715
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18716
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18717
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18718
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18719
18740
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
18720
18741
|
"record.metadata.status": "Statut",
|
|
18721
18742
|
"record.metadata.technical": "Informations techniques",
|
|
@@ -18730,6 +18751,14 @@ var fr = {
|
|
|
18730
18751
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
18731
18752
|
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
18732
18753
|
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
18754
|
+
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18755
|
+
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18756
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18757
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18758
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18759
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18760
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18761
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18733
18762
|
"record.more.details": "Détails",
|
|
18734
18763
|
"record.tab.chart": "Graphique",
|
|
18735
18764
|
"record.tab.data": "Tableau",
|
|
@@ -18789,12 +18818,6 @@ var fr = {
|
|
|
18789
18818
|
"table.loading.data": "Chargement des données...",
|
|
18790
18819
|
"table.object.count": "enregistrements dans ces données",
|
|
18791
18820
|
"table.select.data": "Source de données",
|
|
18792
|
-
"timeSincePipe.lessThanAMinute": "Il y a moins d'une minute",
|
|
18793
|
-
"timeSincePipe.minutesAgo": "Il y a {value} minute{s}",
|
|
18794
|
-
"timeSincePipe.hoursAgo": "Il y a {value} heure{s}",
|
|
18795
|
-
"timeSincePipe.daysAgo": "Il y a {value} jour{s}",
|
|
18796
|
-
"timeSincePipe.monthsAgo": "Il y a {value} mois",
|
|
18797
|
-
"timeSincePipe.yearsAgo": "Il y a {value} an{s}",
|
|
18798
18821
|
"tooltip.html.copy": "Copier le HTML",
|
|
18799
18822
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
18800
18823
|
"tooltip.url.copy": "Copier l'URL",
|
|
@@ -18959,6 +18982,17 @@ var it = {
|
|
|
18959
18982
|
"downloads.format.unknown": "sconosciuto",
|
|
18960
18983
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
18961
18984
|
dropFile: dropFile$2,
|
|
18985
|
+
"editor.record.form.license": "Licenza",
|
|
18986
|
+
"editor.record.form.license.cc-by": "",
|
|
18987
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18988
|
+
"editor.record.form.license.cc-zero": "",
|
|
18989
|
+
"editor.record.form.license.etalab": "Licenza aperta (Etalab)",
|
|
18990
|
+
"editor.record.form.license.etalab-v2": "Licenza aperta v2.0 (Etalab)",
|
|
18991
|
+
"editor.record.form.license.odbl": "",
|
|
18992
|
+
"editor.record.form.license.odc-by": "",
|
|
18993
|
+
"editor.record.form.license.pddl": "",
|
|
18994
|
+
"editor.record.form.license.unknown": "Non riconosciuta o assente",
|
|
18995
|
+
"editor.record.form.resourceUpdated": "",
|
|
18962
18996
|
"editor.record.loadError.body": "",
|
|
18963
18997
|
"editor.record.loadError.closeMessage": "",
|
|
18964
18998
|
"editor.record.loadError.title": "",
|
|
@@ -19029,6 +19063,7 @@ var it = {
|
|
|
19029
19063
|
"multiselect.filter.placeholder": "Cerca",
|
|
19030
19064
|
"nav.back": "Indietro",
|
|
19031
19065
|
next: next$2,
|
|
19066
|
+
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
19032
19067
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
19033
19068
|
"organisation.sort.sortBy": "Ordina per:",
|
|
19034
19069
|
"organisations.hits.found": "{hits, plural, =0{Nessuna organizzazione trovata} one{1 organizzazione su {total} visualizzata} other{{hits} organizzazioni su {total} visualizzate}}",
|
|
@@ -19093,14 +19128,6 @@ var it = {
|
|
|
19093
19128
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
19094
19129
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
19095
19130
|
"record.metadata.related": "Vedi anche",
|
|
19096
|
-
"record.metadata.userFeedbacks": "",
|
|
19097
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19098
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19099
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19100
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19101
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19102
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19103
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19104
19131
|
"record.metadata.sheet": "Origine del metadata",
|
|
19105
19132
|
"record.metadata.status": "Stato",
|
|
19106
19133
|
"record.metadata.technical": "Informazioni tecniche",
|
|
@@ -19115,6 +19142,14 @@ var it = {
|
|
|
19115
19142
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
19116
19143
|
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
19117
19144
|
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
19145
|
+
"record.metadata.userFeedbacks": "",
|
|
19146
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19147
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19148
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19149
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19150
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19151
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19152
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19118
19153
|
"record.more.details": "Dettagli",
|
|
19119
19154
|
"record.tab.chart": "Grafico",
|
|
19120
19155
|
"record.tab.data": "Tabella",
|
|
@@ -19174,12 +19209,6 @@ var it = {
|
|
|
19174
19209
|
"table.loading.data": "Caricamento dei dati...",
|
|
19175
19210
|
"table.object.count": "record in questi dati",
|
|
19176
19211
|
"table.select.data": "Sorgente dati",
|
|
19177
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19178
|
-
"timeSincePipe.minutesAgo": "",
|
|
19179
|
-
"timeSincePipe.hoursAgo": "",
|
|
19180
|
-
"timeSincePipe.daysAgo": "",
|
|
19181
|
-
"timeSincePipe.monthsAgo": "",
|
|
19182
|
-
"timeSincePipe.yearsAgo": "",
|
|
19183
19212
|
"tooltip.html.copy": "Copiare il HTML",
|
|
19184
19213
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
19185
19214
|
"tooltip.url.copy": "Copiare l'URL",
|
|
@@ -19344,6 +19373,17 @@ var nl = {
|
|
|
19344
19373
|
"downloads.format.unknown": "",
|
|
19345
19374
|
"downloads.wfs.featuretype.not.found": "",
|
|
19346
19375
|
dropFile: dropFile$1,
|
|
19376
|
+
"editor.record.form.license": "",
|
|
19377
|
+
"editor.record.form.license.cc-by": "",
|
|
19378
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19379
|
+
"editor.record.form.license.cc-zero": "",
|
|
19380
|
+
"editor.record.form.license.etalab": "",
|
|
19381
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19382
|
+
"editor.record.form.license.odbl": "",
|
|
19383
|
+
"editor.record.form.license.odc-by": "",
|
|
19384
|
+
"editor.record.form.license.pddl": "",
|
|
19385
|
+
"editor.record.form.license.unknown": "",
|
|
19386
|
+
"editor.record.form.resourceUpdated": "",
|
|
19347
19387
|
"editor.record.loadError.body": "",
|
|
19348
19388
|
"editor.record.loadError.closeMessage": "",
|
|
19349
19389
|
"editor.record.loadError.title": "",
|
|
@@ -19414,6 +19454,7 @@ var nl = {
|
|
|
19414
19454
|
"multiselect.filter.placeholder": "",
|
|
19415
19455
|
"nav.back": "",
|
|
19416
19456
|
next: next$1,
|
|
19457
|
+
"ogc.unreachable.unknown": "",
|
|
19417
19458
|
"organisation.filter.placeholder": "",
|
|
19418
19459
|
"organisation.sort.sortBy": "",
|
|
19419
19460
|
"organisations.hits.found": "",
|
|
@@ -19478,14 +19519,6 @@ var nl = {
|
|
|
19478
19519
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19479
19520
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19480
19521
|
"record.metadata.related": "",
|
|
19481
|
-
"record.metadata.userFeedbacks": "",
|
|
19482
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19483
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19484
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19485
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19486
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19487
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19488
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19489
19522
|
"record.metadata.sheet": "",
|
|
19490
19523
|
"record.metadata.status": "",
|
|
19491
19524
|
"record.metadata.technical": "",
|
|
@@ -19500,6 +19533,14 @@ var nl = {
|
|
|
19500
19533
|
"record.metadata.updateFrequency": "",
|
|
19501
19534
|
"record.metadata.updatedOn": "",
|
|
19502
19535
|
"record.metadata.usage": "",
|
|
19536
|
+
"record.metadata.userFeedbacks": "",
|
|
19537
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19538
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19539
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19540
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19541
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19542
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19543
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19503
19544
|
"record.more.details": "",
|
|
19504
19545
|
"record.tab.chart": "",
|
|
19505
19546
|
"record.tab.data": "",
|
|
@@ -19559,12 +19600,6 @@ var nl = {
|
|
|
19559
19600
|
"table.loading.data": "",
|
|
19560
19601
|
"table.object.count": "",
|
|
19561
19602
|
"table.select.data": "",
|
|
19562
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19563
|
-
"timeSincePipe.minutesAgo": "",
|
|
19564
|
-
"timeSincePipe.hoursAgo": "",
|
|
19565
|
-
"timeSincePipe.daysAgo": "",
|
|
19566
|
-
"timeSincePipe.monthsAgo": "",
|
|
19567
|
-
"timeSincePipe.yearsAgo": "",
|
|
19568
19603
|
"tooltip.html.copy": "",
|
|
19569
19604
|
"tooltip.id.copy": "",
|
|
19570
19605
|
"tooltip.url.copy": "",
|
|
@@ -19729,6 +19764,17 @@ var pt = {
|
|
|
19729
19764
|
"downloads.format.unknown": "",
|
|
19730
19765
|
"downloads.wfs.featuretype.not.found": "",
|
|
19731
19766
|
dropFile: dropFile,
|
|
19767
|
+
"editor.record.form.license": "",
|
|
19768
|
+
"editor.record.form.license.cc-by": "",
|
|
19769
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19770
|
+
"editor.record.form.license.cc-zero": "",
|
|
19771
|
+
"editor.record.form.license.etalab": "",
|
|
19772
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19773
|
+
"editor.record.form.license.odbl": "",
|
|
19774
|
+
"editor.record.form.license.odc-by": "",
|
|
19775
|
+
"editor.record.form.license.pddl": "",
|
|
19776
|
+
"editor.record.form.license.unknown": "",
|
|
19777
|
+
"editor.record.form.resourceUpdated": "",
|
|
19732
19778
|
"editor.record.loadError.body": "",
|
|
19733
19779
|
"editor.record.loadError.closeMessage": "",
|
|
19734
19780
|
"editor.record.loadError.title": "",
|
|
@@ -19799,6 +19845,7 @@ var pt = {
|
|
|
19799
19845
|
"multiselect.filter.placeholder": "",
|
|
19800
19846
|
"nav.back": "",
|
|
19801
19847
|
next: next,
|
|
19848
|
+
"ogc.unreachable.unknown": "",
|
|
19802
19849
|
"organisation.filter.placeholder": "",
|
|
19803
19850
|
"organisation.sort.sortBy": "",
|
|
19804
19851
|
"organisations.hits.found": "",
|
|
@@ -19863,14 +19910,6 @@ var pt = {
|
|
|
19863
19910
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19864
19911
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19865
19912
|
"record.metadata.related": "",
|
|
19866
|
-
"record.metadata.userFeedbacks": "",
|
|
19867
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19868
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19869
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19870
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19871
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19872
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19873
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19874
19913
|
"record.metadata.sheet": "",
|
|
19875
19914
|
"record.metadata.status": "",
|
|
19876
19915
|
"record.metadata.technical": "",
|
|
@@ -19885,6 +19924,14 @@ var pt = {
|
|
|
19885
19924
|
"record.metadata.updateFrequency": "",
|
|
19886
19925
|
"record.metadata.updatedOn": "",
|
|
19887
19926
|
"record.metadata.usage": "",
|
|
19927
|
+
"record.metadata.userFeedbacks": "",
|
|
19928
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19929
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19930
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19931
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19932
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19933
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19934
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19888
19935
|
"record.more.details": "",
|
|
19889
19936
|
"record.tab.chart": "",
|
|
19890
19937
|
"record.tab.data": "",
|
|
@@ -19944,12 +19991,6 @@ var pt = {
|
|
|
19944
19991
|
"table.loading.data": "",
|
|
19945
19992
|
"table.object.count": "",
|
|
19946
19993
|
"table.select.data": "",
|
|
19947
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19948
|
-
"timeSincePipe.minutesAgo": "",
|
|
19949
|
-
"timeSincePipe.hoursAgo": "",
|
|
19950
|
-
"timeSincePipe.daysAgo": "",
|
|
19951
|
-
"timeSincePipe.monthsAgo": "",
|
|
19952
|
-
"timeSincePipe.yearsAgo": "",
|
|
19953
19994
|
"tooltip.html.copy": "",
|
|
19954
19995
|
"tooltip.id.copy": "",
|
|
19955
19996
|
"tooltip.url.copy": "",
|
|
@@ -22296,6 +22337,27 @@ const FORMATS = {
|
|
|
22296
22337
|
color: '#de630b',
|
|
22297
22338
|
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
22298
22339
|
},
|
|
22340
|
+
html: {
|
|
22341
|
+
extensions: ['html', 'htm'],
|
|
22342
|
+
priority: 12,
|
|
22343
|
+
color: '#f2bb3a',
|
|
22344
|
+
mimeTypes: ['text/html'],
|
|
22345
|
+
},
|
|
22346
|
+
fgb: {
|
|
22347
|
+
extensions: ['fgb', 'flatgeobuf'],
|
|
22348
|
+
priority: 13,
|
|
22349
|
+
color: '#f2bb3a',
|
|
22350
|
+
mimeTypes: ['application/flatgeobuf'],
|
|
22351
|
+
},
|
|
22352
|
+
jsonfg: {
|
|
22353
|
+
extensions: ['jsonfg', 'jsonfgc'],
|
|
22354
|
+
priority: 14,
|
|
22355
|
+
color: '#f2bb3a',
|
|
22356
|
+
mimeTypes: [
|
|
22357
|
+
'application/vnd.ogc.fg+json',
|
|
22358
|
+
'application/vnd.ogc.fg+json;compatibility=geojson',
|
|
22359
|
+
],
|
|
22360
|
+
},
|
|
22299
22361
|
};
|
|
22300
22362
|
function getFormatPriority(linkFormat) {
|
|
22301
22363
|
for (const format in FORMATS) {
|
|
@@ -22427,7 +22489,7 @@ class LinkClassifierService {
|
|
|
22427
22489
|
case 'wmts':
|
|
22428
22490
|
return [LinkUsage.API, LinkUsage.MAP_API];
|
|
22429
22491
|
case 'ogcFeatures':
|
|
22430
|
-
return [LinkUsage.API];
|
|
22492
|
+
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
22431
22493
|
default:
|
|
22432
22494
|
return [LinkUsage.UNKNOWN];
|
|
22433
22495
|
}
|
|
@@ -23973,6 +24035,173 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23973
24035
|
type: Input
|
|
23974
24036
|
}] } });
|
|
23975
24037
|
|
|
24038
|
+
class PopupAlertComponent {
|
|
24039
|
+
constructor(changeDetector) {
|
|
24040
|
+
this.changeDetector = changeDetector;
|
|
24041
|
+
this.type = 'info';
|
|
24042
|
+
this.position = 'top';
|
|
24043
|
+
this.expanded = false;
|
|
24044
|
+
this.timeout = null;
|
|
24045
|
+
}
|
|
24046
|
+
get showDuration() {
|
|
24047
|
+
const chars = this.content.nativeElement.innerHTML.length;
|
|
24048
|
+
return Math.max(3000, chars * 20);
|
|
24049
|
+
}
|
|
24050
|
+
ngOnInit() {
|
|
24051
|
+
this.expandAndClose();
|
|
24052
|
+
}
|
|
24053
|
+
expand() {
|
|
24054
|
+
this.expanded = true;
|
|
24055
|
+
this.changeDetector.detectChanges();
|
|
24056
|
+
clearTimeout(this.timeout);
|
|
24057
|
+
}
|
|
24058
|
+
expandAndClose() {
|
|
24059
|
+
this.expanded = true;
|
|
24060
|
+
this.changeDetector.detectChanges();
|
|
24061
|
+
clearTimeout(this.timeout);
|
|
24062
|
+
this.timeout = setTimeout(() => {
|
|
24063
|
+
this.expanded = false;
|
|
24064
|
+
this.changeDetector.detectChanges();
|
|
24065
|
+
}, this.showDuration);
|
|
24066
|
+
}
|
|
24067
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24068
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: { icon: "icon", type: "type", position: "position" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24069
|
+
}
|
|
24070
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, decorators: [{
|
|
24071
|
+
type: Component,
|
|
24072
|
+
args: [{ selector: 'gn-ui-popup-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"] }]
|
|
24073
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
|
|
24074
|
+
type: Input
|
|
24075
|
+
}], type: [{
|
|
24076
|
+
type: Input
|
|
24077
|
+
}], position: [{
|
|
24078
|
+
type: Input
|
|
24079
|
+
}], content: [{
|
|
24080
|
+
type: ViewChild,
|
|
24081
|
+
args: ['content']
|
|
24082
|
+
}] } });
|
|
24083
|
+
|
|
24084
|
+
class AutocompleteComponent {
|
|
24085
|
+
constructor(cdRef) {
|
|
24086
|
+
this.cdRef = cdRef;
|
|
24087
|
+
this.clearOnSelection = false;
|
|
24088
|
+
this.autoFocus = false;
|
|
24089
|
+
this.itemSelected = new EventEmitter();
|
|
24090
|
+
this.inputSubmitted = new EventEmitter();
|
|
24091
|
+
this.inputCleared = new EventEmitter();
|
|
24092
|
+
this.control = new UntypedFormControl();
|
|
24093
|
+
this.subscription = new Subscription();
|
|
24094
|
+
this.cancelEnter = true;
|
|
24095
|
+
this.selectionSubject = new ReplaySubject(1);
|
|
24096
|
+
this.lastInputValue$ = new ReplaySubject(1);
|
|
24097
|
+
this.error = null;
|
|
24098
|
+
this.displayWithFn = (item) => item;
|
|
24099
|
+
}
|
|
24100
|
+
ngOnChanges(changes) {
|
|
24101
|
+
const { value } = changes;
|
|
24102
|
+
if (value) {
|
|
24103
|
+
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24104
|
+
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24105
|
+
if (previousTextValue !== currentTextValue) {
|
|
24106
|
+
this.updateInputValue(value.currentValue);
|
|
24107
|
+
}
|
|
24108
|
+
}
|
|
24109
|
+
}
|
|
24110
|
+
ngOnInit() {
|
|
24111
|
+
this.suggestions$ = merge(this.control.valueChanges.pipe(filter((value) => typeof value === 'string'), filter((value) => value.length > 2), debounceTime(400), distinctUntilChanged(), tap$1(() => (this.searching = true))), this.control.valueChanges.pipe(filter((value) => typeof value === 'object' && value.title), map$1((item) => item.title))).pipe(switchMap$1((value) => (value ? this.action(value) : of([]))), catchError((error) => {
|
|
24112
|
+
this.error = error.message;
|
|
24113
|
+
return of([]);
|
|
24114
|
+
}), finalize(() => (this.searching = false)));
|
|
24115
|
+
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24116
|
+
if (any !== '') {
|
|
24117
|
+
this.cancelEnter = false;
|
|
24118
|
+
}
|
|
24119
|
+
});
|
|
24120
|
+
this.control.valueChanges
|
|
24121
|
+
.pipe(filter((value) => typeof value === 'string'))
|
|
24122
|
+
.subscribe(this.lastInputValue$);
|
|
24123
|
+
}
|
|
24124
|
+
ngAfterViewInit() {
|
|
24125
|
+
this.autocomplete.optionSelected.subscribe(this.selectionSubject);
|
|
24126
|
+
if (this.autoFocus) {
|
|
24127
|
+
this.inputRef.nativeElement.focus();
|
|
24128
|
+
this.cdRef.detectChanges();
|
|
24129
|
+
}
|
|
24130
|
+
}
|
|
24131
|
+
ngOnDestroy() {
|
|
24132
|
+
this.subscription.unsubscribe();
|
|
24133
|
+
}
|
|
24134
|
+
updateInputValue(value) {
|
|
24135
|
+
if (value) {
|
|
24136
|
+
this.control.setValue(value);
|
|
24137
|
+
}
|
|
24138
|
+
if (this.inputRef) {
|
|
24139
|
+
this.inputRef.nativeElement.value = value?.title || '';
|
|
24140
|
+
}
|
|
24141
|
+
}
|
|
24142
|
+
clear() {
|
|
24143
|
+
this.inputRef.nativeElement.value = '';
|
|
24144
|
+
this.inputCleared.emit();
|
|
24145
|
+
this.selectionSubject
|
|
24146
|
+
.pipe(take(1))
|
|
24147
|
+
.subscribe((selection) => selection && selection.option.deselect());
|
|
24148
|
+
this.inputRef.nativeElement.focus();
|
|
24149
|
+
this.triggerRef.closePanel();
|
|
24150
|
+
}
|
|
24151
|
+
handleEnter(any) {
|
|
24152
|
+
if (!this.cancelEnter) {
|
|
24153
|
+
this.inputSubmitted.emit(any);
|
|
24154
|
+
this.triggerRef.closePanel();
|
|
24155
|
+
}
|
|
24156
|
+
}
|
|
24157
|
+
handleClickSearch() {
|
|
24158
|
+
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24159
|
+
this.triggerRef.closePanel();
|
|
24160
|
+
}
|
|
24161
|
+
handleSelection(event) {
|
|
24162
|
+
this.cancelEnter = true;
|
|
24163
|
+
this.itemSelected.emit(event.option.value);
|
|
24164
|
+
if (this.clearOnSelection) {
|
|
24165
|
+
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24166
|
+
this.inputRef.nativeElement.value = any;
|
|
24167
|
+
});
|
|
24168
|
+
}
|
|
24169
|
+
}
|
|
24170
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24171
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24172
|
+
}
|
|
24173
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
24174
|
+
type: Component,
|
|
24175
|
+
args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
24176
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
24177
|
+
type: Input
|
|
24178
|
+
}], action: [{
|
|
24179
|
+
type: Input
|
|
24180
|
+
}], value: [{
|
|
24181
|
+
type: Input
|
|
24182
|
+
}], clearOnSelection: [{
|
|
24183
|
+
type: Input
|
|
24184
|
+
}], autoFocus: [{
|
|
24185
|
+
type: Input
|
|
24186
|
+
}], itemSelected: [{
|
|
24187
|
+
type: Output
|
|
24188
|
+
}], inputSubmitted: [{
|
|
24189
|
+
type: Output
|
|
24190
|
+
}], inputCleared: [{
|
|
24191
|
+
type: Output
|
|
24192
|
+
}], triggerRef: [{
|
|
24193
|
+
type: ViewChild,
|
|
24194
|
+
args: [MatAutocompleteTrigger]
|
|
24195
|
+
}], autocomplete: [{
|
|
24196
|
+
type: ViewChild,
|
|
24197
|
+
args: [MatAutocomplete]
|
|
24198
|
+
}], inputRef: [{
|
|
24199
|
+
type: ViewChild,
|
|
24200
|
+
args: ['searchInput']
|
|
24201
|
+
}], displayWithFn: [{
|
|
24202
|
+
type: Input
|
|
24203
|
+
}] } });
|
|
24204
|
+
|
|
23976
24205
|
class ButtonComponent {
|
|
23977
24206
|
constructor() {
|
|
23978
24207
|
this.btnClass = 'gn-ui-btn-default';
|
|
@@ -24024,171 +24253,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24024
24253
|
type: Output
|
|
24025
24254
|
}] } });
|
|
24026
24255
|
|
|
24027
|
-
|
|
24028
|
-
class DropdownSelectorComponent {
|
|
24256
|
+
class CheckToggleComponent {
|
|
24029
24257
|
constructor() {
|
|
24030
|
-
this.
|
|
24031
|
-
this.
|
|
24032
|
-
this.minWidth = '';
|
|
24033
|
-
this.selectValue = new EventEmitter();
|
|
24034
|
-
this.overlayOpen = false;
|
|
24035
|
-
this.overlayWidth = 'auto';
|
|
24036
|
-
this.overlayMaxHeight = 'none';
|
|
24037
|
-
this.overlayPositions = [
|
|
24038
|
-
{
|
|
24039
|
-
originX: 'start',
|
|
24040
|
-
originY: 'bottom',
|
|
24041
|
-
overlayX: 'start',
|
|
24042
|
-
overlayY: 'top',
|
|
24043
|
-
offsetY: 8,
|
|
24044
|
-
},
|
|
24045
|
-
{
|
|
24046
|
-
originX: 'start',
|
|
24047
|
-
originY: 'top',
|
|
24048
|
-
overlayX: 'start',
|
|
24049
|
-
overlayY: 'bottom',
|
|
24050
|
-
offsetY: -8,
|
|
24051
|
-
},
|
|
24052
|
-
];
|
|
24053
|
-
}
|
|
24054
|
-
get selectedChoice() {
|
|
24055
|
-
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
24056
|
-
this.choices[0]);
|
|
24057
|
-
}
|
|
24058
|
-
get id() {
|
|
24059
|
-
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
24060
|
-
}
|
|
24061
|
-
getChoiceLabel() {
|
|
24062
|
-
return this.selectedChoice?.label;
|
|
24063
|
-
}
|
|
24064
|
-
ngOnInit() {
|
|
24065
|
-
if (!this.maxRows)
|
|
24066
|
-
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
24067
|
-
if (!this.choices || this.choices.length === 0) {
|
|
24068
|
-
this.choices = [];
|
|
24069
|
-
}
|
|
24070
|
-
}
|
|
24071
|
-
isSelected(choice) {
|
|
24072
|
-
return choice === this.selectedChoice;
|
|
24258
|
+
this.color = 'primary';
|
|
24259
|
+
this.toggled = new EventEmitter();
|
|
24073
24260
|
}
|
|
24074
|
-
|
|
24075
|
-
this.
|
|
24076
|
-
this.selected = choice.value;
|
|
24077
|
-
this.selectValue.emit(this.selected);
|
|
24261
|
+
toggle(event) {
|
|
24262
|
+
this.toggled.emit(event);
|
|
24078
24263
|
}
|
|
24079
|
-
|
|
24080
|
-
|
|
24081
|
-
|
|
24082
|
-
|
|
24083
|
-
|
|
24084
|
-
|
|
24085
|
-
|
|
24086
|
-
|
|
24087
|
-
|
|
24088
|
-
|
|
24089
|
-
|
|
24090
|
-
|
|
24264
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24265
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24266
|
+
}
|
|
24267
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
24268
|
+
type: Component,
|
|
24269
|
+
args: [{ selector: 'gn-ui-check-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n" }]
|
|
24270
|
+
}], propDecorators: { title: [{
|
|
24271
|
+
type: Input
|
|
24272
|
+
}], label: [{
|
|
24273
|
+
type: Input
|
|
24274
|
+
}], value: [{
|
|
24275
|
+
type: Input
|
|
24276
|
+
}], color: [{
|
|
24277
|
+
type: Input
|
|
24278
|
+
}], toggled: [{
|
|
24279
|
+
type: Output
|
|
24280
|
+
}] } });
|
|
24281
|
+
|
|
24282
|
+
class CheckboxComponent {
|
|
24283
|
+
constructor() {
|
|
24284
|
+
this.type = 'default';
|
|
24285
|
+
this.checked = false;
|
|
24286
|
+
this.indeterminate = false;
|
|
24287
|
+
this.changed = new EventEmitter();
|
|
24091
24288
|
}
|
|
24092
|
-
|
|
24093
|
-
this.
|
|
24289
|
+
get classList() {
|
|
24290
|
+
return `${this.type}`;
|
|
24094
24291
|
}
|
|
24095
|
-
|
|
24096
|
-
|
|
24292
|
+
handleClick(event) {
|
|
24293
|
+
event.stopPropagation();
|
|
24294
|
+
this.checked = !this.checked;
|
|
24295
|
+
this.changed.emit(this.checked);
|
|
24097
24296
|
}
|
|
24098
|
-
|
|
24099
|
-
|
|
24297
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24298
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "component", type: i1$4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24299
|
+
}
|
|
24300
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
24301
|
+
type: Component,
|
|
24302
|
+
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"] }]
|
|
24303
|
+
}], propDecorators: { type: [{
|
|
24304
|
+
type: Input
|
|
24305
|
+
}], checked: [{
|
|
24306
|
+
type: Input
|
|
24307
|
+
}], indeterminate: [{
|
|
24308
|
+
type: Input
|
|
24309
|
+
}], changed: [{
|
|
24310
|
+
type: Output
|
|
24311
|
+
}] } });
|
|
24312
|
+
|
|
24313
|
+
class ChipsInputComponent {
|
|
24314
|
+
onChange(event) {
|
|
24315
|
+
this.rawChange.next(event);
|
|
24100
24316
|
}
|
|
24101
|
-
|
|
24102
|
-
|
|
24103
|
-
|
|
24104
|
-
|
|
24105
|
-
|
|
24106
|
-
|
|
24107
|
-
|
|
24108
|
-
|
|
24109
|
-
|
|
24110
|
-
|
|
24111
|
-
|
|
24112
|
-
|
|
24113
|
-
|
|
24317
|
+
constructor(http, translate) {
|
|
24318
|
+
this.http = http;
|
|
24319
|
+
this.translate = translate;
|
|
24320
|
+
this.required = false;
|
|
24321
|
+
this.loadOnce = false;
|
|
24322
|
+
this.autocompleteItems = [];
|
|
24323
|
+
this.invalid = false;
|
|
24324
|
+
this.items = [];
|
|
24325
|
+
this.requestAutocompleteItems = (text) => {
|
|
24326
|
+
if (this.url) {
|
|
24327
|
+
if (this.loadOnce && this.loadedItems) {
|
|
24328
|
+
return this.loadedItems;
|
|
24329
|
+
}
|
|
24330
|
+
const url = this.url(text);
|
|
24331
|
+
const lang = LANG_2_TO_3_MAPPER[this.translate.currentLang.slice(0, 2)];
|
|
24332
|
+
return this.http
|
|
24333
|
+
.get(url.replace('${lang}', lang))
|
|
24334
|
+
.pipe(map$1((item) => item.map((i) => i.values[lang])));
|
|
24114
24335
|
}
|
|
24115
|
-
|
|
24116
|
-
this.
|
|
24117
|
-
|
|
24118
|
-
|
|
24119
|
-
|
|
24120
|
-
|
|
24121
|
-
|
|
24122
|
-
this.closeOverlay();
|
|
24123
|
-
}
|
|
24336
|
+
else {
|
|
24337
|
+
return of(this.autocompleteItems || []);
|
|
24338
|
+
}
|
|
24339
|
+
};
|
|
24340
|
+
this.rawChange = new Subject();
|
|
24341
|
+
this.itemsChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24342
|
+
this.subscription = new Subscription();
|
|
24124
24343
|
}
|
|
24125
|
-
|
|
24126
|
-
if (
|
|
24127
|
-
|
|
24128
|
-
const keyCode = event.code;
|
|
24129
|
-
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
24130
|
-
event.preventDefault();
|
|
24131
|
-
this.shiftItemFocus(1);
|
|
24132
|
-
}
|
|
24133
|
-
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
24134
|
-
event.preventDefault();
|
|
24135
|
-
this.shiftItemFocus(-1);
|
|
24136
|
-
}
|
|
24137
|
-
else if (keyCode === 'Escape') {
|
|
24138
|
-
this.closeOverlay();
|
|
24344
|
+
ngOnInit() {
|
|
24345
|
+
if (this.loadOnce) {
|
|
24346
|
+
this.loadedItems = this.requestAutocompleteItems('*').pipe(shareReplay(1));
|
|
24139
24347
|
}
|
|
24348
|
+
this.items = this.selectedItems;
|
|
24349
|
+
this.subscription = this.rawChange
|
|
24350
|
+
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24351
|
+
.subscribe();
|
|
24352
|
+
this.rawChange.next(this.items);
|
|
24140
24353
|
}
|
|
24141
|
-
|
|
24142
|
-
|
|
24143
|
-
if (index === -1)
|
|
24144
|
-
return;
|
|
24145
|
-
const max = this.choiceInputs.length;
|
|
24146
|
-
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
24147
|
-
const newIndex = (((index + shift) % max) + max) % max;
|
|
24148
|
-
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24354
|
+
ngOnDestroy() {
|
|
24355
|
+
this.subscription.unsubscribe();
|
|
24149
24356
|
}
|
|
24150
|
-
|
|
24151
|
-
|
|
24357
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, deps: [{ token: i1.HttpClient }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24358
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: { url: "url", placeholder: "placeholder", selectedItems: "selectedItems", required: "required", loadOnce: "loadOnce", autocompleteItems: "autocompleteItems" }, outputs: { itemsChange: "itemsChange" }, ngImport: i0, template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.TagInputComponent, selector: "tag-input", inputs: ["separatorKeys", "separatorKeyCodes", "placeholder", "secondaryPlaceholder", "maxItems", "validators", "asyncValidators", "onlyFromAutocomplete", "errorMessages", "theme", "onTextChangeDebounce", "inputId", "inputClass", "clearOnBlur", "hideForm", "addOnBlur", "addOnPaste", "pasteSplitPattern", "blinkIfDupe", "removable", "editable", "allowDupes", "modelAsStrings", "trimTags", "inputText", "ripple", "tabindex", "disable", "dragZone", "onRemoving", "onAdding", "animationDuration"], outputs: ["onAdd", "onRemove", "onSelect", "onFocus", "onBlur", "onTextChange", "onPaste", "onValidationError", "onTagEdited", "inputTextChange"] }, { kind: "component", type: i5$1.TagInputDropdown, selector: "tag-input-dropdown", inputs: ["offset", "focusFirstElement", "showDropdownIfEmpty", "autocompleteObservable", "minimumTextLength", "limitItemsTo", "displayBy", "identifyBy", "matchingFn", "appendToBody", "keepOpen", "dynamicUpdate", "zIndex", "autocompleteItems"] }] }); }
|
|
24359
|
+
}
|
|
24360
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, decorators: [{
|
|
24361
|
+
type: Component,
|
|
24362
|
+
args: [{ selector: 'gn-ui-chips-input', template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"] }]
|
|
24363
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1$1.TranslateService }]; }, propDecorators: { url: [{
|
|
24364
|
+
type: Input
|
|
24365
|
+
}], placeholder: [{
|
|
24366
|
+
type: Input
|
|
24367
|
+
}], selectedItems: [{
|
|
24368
|
+
type: Input
|
|
24369
|
+
}], required: [{
|
|
24370
|
+
type: Input
|
|
24371
|
+
}], loadOnce: [{
|
|
24372
|
+
type: Input
|
|
24373
|
+
}], autocompleteItems: [{
|
|
24374
|
+
type: Input
|
|
24375
|
+
}], itemsChange: [{
|
|
24376
|
+
type: Output
|
|
24377
|
+
}] } });
|
|
24378
|
+
|
|
24379
|
+
class CopyTextButtonComponent {
|
|
24380
|
+
constructor() {
|
|
24381
|
+
this.displayText = true;
|
|
24382
|
+
this.rows = 1;
|
|
24152
24383
|
}
|
|
24153
|
-
|
|
24154
|
-
|
|
24155
|
-
|
|
24156
|
-
this.onSelectValue(choice);
|
|
24157
|
-
}
|
|
24384
|
+
copyText(event) {
|
|
24385
|
+
navigator.clipboard.writeText(this.text);
|
|
24386
|
+
event.target.blur();
|
|
24158
24387
|
}
|
|
24159
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24160
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24388
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24389
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24161
24390
|
}
|
|
24162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24391
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
24163
24392
|
type: Component,
|
|
24164
|
-
args: [{ selector: 'gn-ui-
|
|
24165
|
-
}], propDecorators: {
|
|
24166
|
-
type: Input
|
|
24167
|
-
}], showTitle: [{
|
|
24393
|
+
args: [{ selector: 'gn-ui-copy-text-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n" }]
|
|
24394
|
+
}], propDecorators: { text: [{
|
|
24168
24395
|
type: Input
|
|
24169
|
-
}],
|
|
24396
|
+
}], tooltipText: [{
|
|
24170
24397
|
type: Input
|
|
24171
|
-
}],
|
|
24398
|
+
}], displayText: [{
|
|
24172
24399
|
type: Input
|
|
24173
|
-
}],
|
|
24400
|
+
}], rows: [{
|
|
24174
24401
|
type: Input
|
|
24175
|
-
}]
|
|
24402
|
+
}] } });
|
|
24403
|
+
|
|
24404
|
+
class DatePickerComponent {
|
|
24405
|
+
constructor() {
|
|
24406
|
+
this.dateChange = new EventEmitter();
|
|
24407
|
+
}
|
|
24408
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24409
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between pl-3 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
|
|
24410
|
+
}
|
|
24411
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
24412
|
+
type: Component,
|
|
24413
|
+
args: [{ selector: 'gn-ui-date-picker', standalone: true, imports: [MatIconModule, MatNativeDateModule, MatDatepickerModule], template: "<div\n class=\"flex items-center justify-between pl-3 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
24414
|
+
}], propDecorators: { date: [{
|
|
24176
24415
|
type: Input
|
|
24177
|
-
}],
|
|
24416
|
+
}], dateChange: [{
|
|
24417
|
+
type: Output
|
|
24418
|
+
}] } });
|
|
24419
|
+
|
|
24420
|
+
class DateRangePickerComponent {
|
|
24421
|
+
startDateSelected(event) {
|
|
24422
|
+
this.startDate = event.value;
|
|
24423
|
+
}
|
|
24424
|
+
endDateSelected(event) {
|
|
24425
|
+
this.endDate = event.value;
|
|
24426
|
+
}
|
|
24427
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24428
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", ngImport: i0, template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$2.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$2.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
|
|
24429
|
+
}
|
|
24430
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
24431
|
+
type: Component,
|
|
24432
|
+
args: [{ selector: 'gn-ui-date-range-picker', standalone: true, imports: [MatIconModule, MatNativeDateModule, MatDatepickerModule], template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
24433
|
+
}] });
|
|
24434
|
+
|
|
24435
|
+
const placeholder = 'dropFile';
|
|
24436
|
+
marker('dropFile');
|
|
24437
|
+
class DragAndDropFileInputComponent {
|
|
24438
|
+
constructor() {
|
|
24439
|
+
this.placeholder = placeholder;
|
|
24440
|
+
this.accept = '*';
|
|
24441
|
+
this.fileChange = new EventEmitter();
|
|
24442
|
+
this.selectedFile = null;
|
|
24443
|
+
}
|
|
24444
|
+
get fileName() {
|
|
24445
|
+
return this.selectedFile && this.selectedFile.name;
|
|
24446
|
+
}
|
|
24447
|
+
selectFile(event) {
|
|
24448
|
+
this.selectedFile = event.addedFiles[0];
|
|
24449
|
+
this.fileChange.emit(this.selectedFile);
|
|
24450
|
+
}
|
|
24451
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24452
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3$1.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
24453
|
+
}
|
|
24454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
24455
|
+
type: Component,
|
|
24456
|
+
args: [{ selector: 'gn-ui-drag-and-drop-file-input', template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"] }]
|
|
24457
|
+
}], propDecorators: { placeholder: [{
|
|
24178
24458
|
type: Input
|
|
24179
|
-
}],
|
|
24459
|
+
}], accept: [{
|
|
24180
24460
|
type: Input
|
|
24181
|
-
}],
|
|
24461
|
+
}], fileChange: [{
|
|
24182
24462
|
type: Output
|
|
24183
|
-
}], overlayOrigin: [{
|
|
24184
|
-
type: ViewChild,
|
|
24185
|
-
args: ['overlayOrigin']
|
|
24186
|
-
}], overlay: [{
|
|
24187
|
-
type: ViewChild,
|
|
24188
|
-
args: [CdkConnectedOverlay]
|
|
24189
|
-
}], choiceInputs: [{
|
|
24190
|
-
type: ViewChildren,
|
|
24191
|
-
args: ['choiceInputs', { read: ElementRef }]
|
|
24192
24463
|
}] } });
|
|
24193
24464
|
|
|
24194
24465
|
class DropdownMultiselectComponent {
|
|
@@ -24336,13 +24607,13 @@ class DropdownMultiselectComponent {
|
|
|
24336
24607
|
propagateToDocumentOnly(event);
|
|
24337
24608
|
this.setFocus();
|
|
24338
24609
|
}
|
|
24339
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$
|
|
24340
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$
|
|
24610
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$5.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24611
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24341
24612
|
}
|
|
24342
24613
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24343
24614
|
type: Component,
|
|
24344
24615
|
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
24345
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
24616
|
+
}], ctorParameters: function () { return [{ type: i1$5.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24346
24617
|
type: Input
|
|
24347
24618
|
}], choices: [{
|
|
24348
24619
|
type: Input
|
|
@@ -24373,350 +24644,263 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24373
24644
|
args: ['checkBox', { read: ElementRef }]
|
|
24374
24645
|
}] } });
|
|
24375
24646
|
|
|
24376
|
-
|
|
24647
|
+
const DEFAULT_ROW_NUMBERS = 6;
|
|
24648
|
+
class DropdownSelectorComponent {
|
|
24377
24649
|
constructor() {
|
|
24378
|
-
this.
|
|
24379
|
-
|
|
24380
|
-
|
|
24381
|
-
|
|
24382
|
-
|
|
24383
|
-
|
|
24384
|
-
|
|
24385
|
-
|
|
24386
|
-
|
|
24387
|
-
|
|
24388
|
-
|
|
24389
|
-
|
|
24390
|
-
|
|
24391
|
-
|
|
24392
|
-
|
|
24650
|
+
this.showTitle = true;
|
|
24651
|
+
this.extraBtnClass = '';
|
|
24652
|
+
this.minWidth = '';
|
|
24653
|
+
this.selectValue = new EventEmitter();
|
|
24654
|
+
this.overlayOpen = false;
|
|
24655
|
+
this.overlayWidth = 'auto';
|
|
24656
|
+
this.overlayMaxHeight = 'none';
|
|
24657
|
+
this.overlayPositions = [
|
|
24658
|
+
{
|
|
24659
|
+
originX: 'start',
|
|
24660
|
+
originY: 'bottom',
|
|
24661
|
+
overlayX: 'start',
|
|
24662
|
+
overlayY: 'top',
|
|
24663
|
+
offsetY: 8,
|
|
24664
|
+
},
|
|
24665
|
+
{
|
|
24666
|
+
originX: 'start',
|
|
24667
|
+
originY: 'top',
|
|
24668
|
+
overlayX: 'start',
|
|
24669
|
+
overlayY: 'bottom',
|
|
24670
|
+
offsetY: -8,
|
|
24671
|
+
},
|
|
24672
|
+
];
|
|
24393
24673
|
}
|
|
24394
|
-
get
|
|
24395
|
-
return
|
|
24674
|
+
get selectedChoice() {
|
|
24675
|
+
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
24676
|
+
this.choices[0]);
|
|
24396
24677
|
}
|
|
24397
|
-
|
|
24398
|
-
this.
|
|
24678
|
+
get id() {
|
|
24679
|
+
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
24399
24680
|
}
|
|
24400
|
-
|
|
24401
|
-
|
|
24681
|
+
getChoiceLabel() {
|
|
24682
|
+
return this.selectedChoice?.label;
|
|
24402
24683
|
}
|
|
24403
|
-
|
|
24404
|
-
|
|
24405
|
-
|
|
24406
|
-
this.
|
|
24684
|
+
ngOnInit() {
|
|
24685
|
+
if (!this.maxRows)
|
|
24686
|
+
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
24687
|
+
if (!this.choices || this.choices.length === 0) {
|
|
24688
|
+
this.choices = [];
|
|
24689
|
+
}
|
|
24407
24690
|
}
|
|
24408
|
-
|
|
24409
|
-
|
|
24410
|
-
}
|
|
24411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
24412
|
-
type: Component,
|
|
24413
|
-
args: [{ selector: 'gn-ui-text-input', template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
24414
|
-
}], propDecorators: { value: [{
|
|
24415
|
-
type: Input
|
|
24416
|
-
}], extraClass: [{
|
|
24417
|
-
type: Input
|
|
24418
|
-
}], hint: [{
|
|
24419
|
-
type: Input
|
|
24420
|
-
}], required: [{
|
|
24421
|
-
type: Input
|
|
24422
|
-
}], valueChange: [{
|
|
24423
|
-
type: Output
|
|
24424
|
-
}], input: [{
|
|
24425
|
-
type: ViewChild,
|
|
24426
|
-
args: ['input']
|
|
24427
|
-
}] } });
|
|
24428
|
-
|
|
24429
|
-
class ChipsInputComponent {
|
|
24430
|
-
onChange(event) {
|
|
24431
|
-
this.rawChange.next(event);
|
|
24691
|
+
isSelected(choice) {
|
|
24692
|
+
return choice === this.selectedChoice;
|
|
24432
24693
|
}
|
|
24433
|
-
|
|
24434
|
-
this.
|
|
24435
|
-
this.
|
|
24436
|
-
this.
|
|
24437
|
-
|
|
24438
|
-
|
|
24439
|
-
this.
|
|
24440
|
-
|
|
24441
|
-
|
|
24442
|
-
|
|
24443
|
-
|
|
24444
|
-
|
|
24445
|
-
|
|
24446
|
-
|
|
24447
|
-
|
|
24448
|
-
|
|
24449
|
-
|
|
24450
|
-
|
|
24451
|
-
|
|
24452
|
-
|
|
24453
|
-
|
|
24694
|
+
onSelectValue(choice) {
|
|
24695
|
+
this.closeOverlay();
|
|
24696
|
+
this.selected = choice.value;
|
|
24697
|
+
this.selectValue.emit(this.selected);
|
|
24698
|
+
}
|
|
24699
|
+
openOverlay() {
|
|
24700
|
+
this.overlayWidth =
|
|
24701
|
+
this.overlayOrigin.elementRef.nativeElement.getBoundingClientRect()
|
|
24702
|
+
.width + 'px';
|
|
24703
|
+
this.overlayMaxHeight = this.maxRows
|
|
24704
|
+
? `${this.maxRows * 29 + 60}px`
|
|
24705
|
+
: 'none';
|
|
24706
|
+
this.overlayOpen = true;
|
|
24707
|
+
return Promise.all([
|
|
24708
|
+
firstValueFrom(this.overlay.attach),
|
|
24709
|
+
firstValueFrom(this.choiceInputs.changes),
|
|
24710
|
+
]);
|
|
24711
|
+
}
|
|
24712
|
+
closeOverlay() {
|
|
24713
|
+
this.overlayOpen = false;
|
|
24714
|
+
}
|
|
24715
|
+
focusFirstItem() {
|
|
24716
|
+
this.choiceInputs.get(0).nativeElement.focus();
|
|
24717
|
+
}
|
|
24718
|
+
focusLastItem() {
|
|
24719
|
+
this.choiceInputs.get(this.choiceInputs.length - 1).nativeElement.focus();
|
|
24720
|
+
}
|
|
24721
|
+
async handleTriggerKeydown(event) {
|
|
24722
|
+
const keyCode = event.code;
|
|
24723
|
+
const isOpenKey = keyCode === 'ArrowDown' ||
|
|
24724
|
+
keyCode === 'ArrowUp' ||
|
|
24725
|
+
keyCode === 'ArrowLeft' ||
|
|
24726
|
+
keyCode === 'ArrowRight' ||
|
|
24727
|
+
keyCode === 'Enter' ||
|
|
24728
|
+
keyCode === 'Space';
|
|
24729
|
+
const isCloseKey = keyCode === 'Escape';
|
|
24730
|
+
if (isOpenKey) {
|
|
24731
|
+
event.preventDefault();
|
|
24732
|
+
if (!this.overlayOpen) {
|
|
24733
|
+
await this.openOverlay();
|
|
24454
24734
|
}
|
|
24455
|
-
|
|
24456
|
-
|
|
24457
|
-
|
|
24458
|
-
|
|
24735
|
+
if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp')
|
|
24736
|
+
this.focusLastItem();
|
|
24737
|
+
else
|
|
24738
|
+
this.focusFirstItem();
|
|
24739
|
+
}
|
|
24740
|
+
else if (this.overlayOpen && isCloseKey) {
|
|
24741
|
+
event.preventDefault();
|
|
24742
|
+
this.closeOverlay();
|
|
24743
|
+
}
|
|
24459
24744
|
}
|
|
24460
|
-
|
|
24461
|
-
if (this.
|
|
24462
|
-
|
|
24745
|
+
handleOverlayKeydown(event) {
|
|
24746
|
+
if (!this.overlayOpen)
|
|
24747
|
+
return;
|
|
24748
|
+
const keyCode = event.code;
|
|
24749
|
+
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
24750
|
+
event.preventDefault();
|
|
24751
|
+
this.shiftItemFocus(1);
|
|
24752
|
+
}
|
|
24753
|
+
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
24754
|
+
event.preventDefault();
|
|
24755
|
+
this.shiftItemFocus(-1);
|
|
24756
|
+
}
|
|
24757
|
+
else if (keyCode === 'Escape') {
|
|
24758
|
+
this.closeOverlay();
|
|
24463
24759
|
}
|
|
24464
|
-
this.items = this.selectedItems;
|
|
24465
|
-
this.subscription = this.rawChange
|
|
24466
|
-
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24467
|
-
.subscribe();
|
|
24468
|
-
this.rawChange.next(this.items);
|
|
24469
24760
|
}
|
|
24470
|
-
|
|
24471
|
-
this.
|
|
24761
|
+
shiftItemFocus(shift) {
|
|
24762
|
+
const index = this.focusedIndex;
|
|
24763
|
+
if (index === -1)
|
|
24764
|
+
return;
|
|
24765
|
+
const max = this.choiceInputs.length;
|
|
24766
|
+
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
24767
|
+
const newIndex = (((index + shift) % max) + max) % max;
|
|
24768
|
+
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24472
24769
|
}
|
|
24473
|
-
|
|
24474
|
-
|
|
24770
|
+
get focusedIndex() {
|
|
24771
|
+
return this.choiceInputs.reduce((prev, curr, curIndex) => curr.nativeElement === document.activeElement ? curIndex : prev, -1);
|
|
24772
|
+
}
|
|
24773
|
+
selectIfEnter(event, choice) {
|
|
24774
|
+
if (event.code === 'Enter') {
|
|
24775
|
+
event.preventDefault();
|
|
24776
|
+
this.onSelectValue(choice);
|
|
24777
|
+
}
|
|
24778
|
+
}
|
|
24779
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24780
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, isStandalone: true, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24475
24781
|
}
|
|
24476
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24782
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24477
24783
|
type: Component,
|
|
24478
|
-
args: [{ selector: 'gn-ui-
|
|
24479
|
-
|
|
24784
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
24785
|
+
CommonModule,
|
|
24786
|
+
ButtonComponent,
|
|
24787
|
+
OverlayModule,
|
|
24788
|
+
MatIconModule,
|
|
24789
|
+
TranslateModule,
|
|
24790
|
+
], template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
24791
|
+
}], propDecorators: { title: [{
|
|
24480
24792
|
type: Input
|
|
24481
|
-
}],
|
|
24793
|
+
}], showTitle: [{
|
|
24482
24794
|
type: Input
|
|
24483
|
-
}],
|
|
24795
|
+
}], ariaName: [{
|
|
24484
24796
|
type: Input
|
|
24485
|
-
}],
|
|
24797
|
+
}], choices: [{
|
|
24486
24798
|
type: Input
|
|
24487
|
-
}],
|
|
24799
|
+
}], selected: [{
|
|
24488
24800
|
type: Input
|
|
24489
|
-
}],
|
|
24801
|
+
}], maxRows: [{
|
|
24490
24802
|
type: Input
|
|
24491
|
-
}],
|
|
24803
|
+
}], extraBtnClass: [{
|
|
24804
|
+
type: Input
|
|
24805
|
+
}], minWidth: [{
|
|
24806
|
+
type: Input
|
|
24807
|
+
}], selectValue: [{
|
|
24492
24808
|
type: Output
|
|
24809
|
+
}], overlayOrigin: [{
|
|
24810
|
+
type: ViewChild,
|
|
24811
|
+
args: ['overlayOrigin']
|
|
24812
|
+
}], overlay: [{
|
|
24813
|
+
type: ViewChild,
|
|
24814
|
+
args: [CdkConnectedOverlay]
|
|
24815
|
+
}], choiceInputs: [{
|
|
24816
|
+
type: ViewChildren,
|
|
24817
|
+
args: ['choiceInputs', { read: ElementRef }]
|
|
24493
24818
|
}] } });
|
|
24494
24819
|
|
|
24495
|
-
class
|
|
24496
|
-
constructor() {
|
|
24497
|
-
this.
|
|
24498
|
-
this.
|
|
24499
|
-
this.
|
|
24500
|
-
this.required = false;
|
|
24501
|
-
this.rawChange = new Subject();
|
|
24502
|
-
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24503
|
-
this.baseClasses = [
|
|
24504
|
-
'w-full',
|
|
24505
|
-
'pt-2',
|
|
24506
|
-
'pl-2',
|
|
24507
|
-
'resize-none',
|
|
24508
|
-
'border',
|
|
24509
|
-
'border-gray-800',
|
|
24510
|
-
'rounded italic',
|
|
24511
|
-
'leading-tight',
|
|
24512
|
-
'focus:outline-none',
|
|
24513
|
-
'focus:bg-background',
|
|
24514
|
-
'focus:border-primary',
|
|
24515
|
-
].join(' ');
|
|
24516
|
-
this.disabledClasses = ['cursor-not-allowed'].join(' ');
|
|
24517
|
-
}
|
|
24518
|
-
get classList() {
|
|
24519
|
-
return `${this.baseClasses} ${this.extraClass} ${this.disabled ? this.disabledClasses : ''}`;
|
|
24820
|
+
class EditableLabelDirective {
|
|
24821
|
+
constructor(el, renderer) {
|
|
24822
|
+
this.el = el;
|
|
24823
|
+
this.renderer = renderer;
|
|
24824
|
+
this.editableLabelChanged = new EventEmitter();
|
|
24520
24825
|
}
|
|
24521
24826
|
ngAfterViewInit() {
|
|
24522
|
-
|
|
24523
|
-
|
|
24524
|
-
|
|
24525
|
-
|
|
24526
|
-
|
|
24527
|
-
|
|
24528
|
-
|
|
24529
|
-
|
|
24530
|
-
|
|
24827
|
+
if (this.gnUiEditableLabel !== false) {
|
|
24828
|
+
const appendedInput = this.renderer.createElement('input');
|
|
24829
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
24830
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
24831
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
24832
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
24833
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
24834
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
24835
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
24836
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
24837
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
24838
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
24839
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
24840
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
24841
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
24842
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
24843
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
24844
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
24845
|
+
});
|
|
24846
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
24847
|
+
}
|
|
24531
24848
|
}
|
|
24532
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24533
|
-
static { this.ɵ
|
|
24849
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24850
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, isStandalone: true, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
24534
24851
|
}
|
|
24535
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24536
|
-
type:
|
|
24537
|
-
args: [{
|
|
24538
|
-
|
|
24539
|
-
|
|
24540
|
-
|
|
24541
|
-
|
|
24542
|
-
}], extraClass: [{
|
|
24543
|
-
type: Input
|
|
24544
|
-
}], placeholder: [{
|
|
24545
|
-
type: Input
|
|
24546
|
-
}], required: [{
|
|
24547
|
-
type: Input
|
|
24548
|
-
}], valueChange: [{
|
|
24852
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
24853
|
+
type: Directive,
|
|
24854
|
+
args: [{
|
|
24855
|
+
selector: '[gnUiEditableLabel]',
|
|
24856
|
+
standalone: true,
|
|
24857
|
+
}]
|
|
24858
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
24549
24859
|
type: Output
|
|
24550
|
-
}],
|
|
24551
|
-
type:
|
|
24552
|
-
args: ['input']
|
|
24860
|
+
}], gnUiEditableLabel: [{
|
|
24861
|
+
type: Input
|
|
24553
24862
|
}] } });
|
|
24554
24863
|
|
|
24555
|
-
class
|
|
24556
|
-
|
|
24557
|
-
|
|
24558
|
-
this.type = 'info';
|
|
24559
|
-
this.position = 'top';
|
|
24560
|
-
this.expanded = false;
|
|
24561
|
-
this.timeout = null;
|
|
24562
|
-
}
|
|
24563
|
-
get showDuration() {
|
|
24564
|
-
const chars = this.content.nativeElement.innerHTML.length;
|
|
24565
|
-
return Math.max(3000, chars * 20);
|
|
24566
|
-
}
|
|
24567
|
-
ngOnInit() {
|
|
24568
|
-
this.expandAndClose();
|
|
24569
|
-
}
|
|
24570
|
-
expand() {
|
|
24571
|
-
this.expanded = true;
|
|
24572
|
-
this.changeDetector.detectChanges();
|
|
24573
|
-
clearTimeout(this.timeout);
|
|
24574
|
-
}
|
|
24575
|
-
expandAndClose() {
|
|
24576
|
-
this.expanded = true;
|
|
24577
|
-
this.changeDetector.detectChanges();
|
|
24578
|
-
clearTimeout(this.timeout);
|
|
24579
|
-
this.timeout = setTimeout(() => {
|
|
24580
|
-
this.expanded = false;
|
|
24581
|
-
this.changeDetector.detectChanges();
|
|
24582
|
-
}, this.showDuration);
|
|
24583
|
-
}
|
|
24584
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24585
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: { icon: "icon", type: "type", position: "position" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24864
|
+
class NavigationButtonComponent {
|
|
24865
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24866
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24586
24867
|
}
|
|
24587
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24868
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24588
24869
|
type: Component,
|
|
24589
|
-
args: [{ selector: 'gn-ui-
|
|
24590
|
-
}],
|
|
24591
|
-
type: Input
|
|
24592
|
-
}], type: [{
|
|
24870
|
+
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
24871
|
+
}], propDecorators: { label: [{
|
|
24593
24872
|
type: Input
|
|
24594
|
-
}],
|
|
24873
|
+
}], icon: [{
|
|
24595
24874
|
type: Input
|
|
24596
|
-
}], content: [{
|
|
24597
|
-
type: ViewChild,
|
|
24598
|
-
args: ['content']
|
|
24599
24875
|
}] } });
|
|
24600
24876
|
|
|
24601
|
-
class
|
|
24602
|
-
constructor(
|
|
24603
|
-
this.
|
|
24604
|
-
this.
|
|
24605
|
-
this.
|
|
24606
|
-
this.
|
|
24607
|
-
this.inputSubmitted = new EventEmitter();
|
|
24608
|
-
this.inputCleared = new EventEmitter();
|
|
24609
|
-
this.control = new UntypedFormControl();
|
|
24610
|
-
this.subscription = new Subscription();
|
|
24611
|
-
this.cancelEnter = true;
|
|
24612
|
-
this.selectionSubject = new ReplaySubject(1);
|
|
24613
|
-
this.lastInputValue$ = new ReplaySubject(1);
|
|
24614
|
-
this.error = null;
|
|
24615
|
-
this.displayWithFn = (item) => item;
|
|
24616
|
-
}
|
|
24617
|
-
ngOnChanges(changes) {
|
|
24618
|
-
const { value } = changes;
|
|
24619
|
-
if (value) {
|
|
24620
|
-
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24621
|
-
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24622
|
-
if (previousTextValue !== currentTextValue) {
|
|
24623
|
-
this.updateInputValue(value.currentValue);
|
|
24624
|
-
}
|
|
24625
|
-
}
|
|
24626
|
-
}
|
|
24627
|
-
ngOnInit() {
|
|
24628
|
-
this.suggestions$ = merge(this.control.valueChanges.pipe(filter((value) => typeof value === 'string'), filter((value) => value.length > 2), debounceTime(400), distinctUntilChanged(), tap$1(() => (this.searching = true))), this.control.valueChanges.pipe(filter((value) => typeof value === 'object' && value.title), map$1((item) => item.title))).pipe(switchMap$1((value) => (value ? this.action(value) : of([]))), catchError((error) => {
|
|
24629
|
-
this.error = error.message;
|
|
24630
|
-
return of([]);
|
|
24631
|
-
}), finalize(() => (this.searching = false)));
|
|
24632
|
-
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24633
|
-
if (any !== '') {
|
|
24634
|
-
this.cancelEnter = false;
|
|
24635
|
-
}
|
|
24636
|
-
});
|
|
24637
|
-
this.control.valueChanges
|
|
24638
|
-
.pipe(filter((value) => typeof value === 'string'))
|
|
24639
|
-
.subscribe(this.lastInputValue$);
|
|
24640
|
-
}
|
|
24641
|
-
ngAfterViewInit() {
|
|
24642
|
-
this.autocomplete.optionSelected.subscribe(this.selectionSubject);
|
|
24643
|
-
if (this.autoFocus) {
|
|
24644
|
-
this.inputRef.nativeElement.focus();
|
|
24645
|
-
this.cdRef.detectChanges();
|
|
24646
|
-
}
|
|
24647
|
-
}
|
|
24648
|
-
ngOnDestroy() {
|
|
24649
|
-
this.subscription.unsubscribe();
|
|
24877
|
+
class SearchInputComponent {
|
|
24878
|
+
constructor() {
|
|
24879
|
+
this.value = '';
|
|
24880
|
+
this.placeholder = '';
|
|
24881
|
+
this.rawChange = new Subject();
|
|
24882
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
24650
24883
|
}
|
|
24651
|
-
|
|
24652
|
-
|
|
24653
|
-
|
|
24654
|
-
}
|
|
24655
|
-
if (this.inputRef) {
|
|
24656
|
-
this.inputRef.nativeElement.value = value?.title || '';
|
|
24657
|
-
}
|
|
24884
|
+
handleChange($event) {
|
|
24885
|
+
const value = $event.target.value;
|
|
24886
|
+
this.rawChange.next(value);
|
|
24658
24887
|
}
|
|
24659
24888
|
clear() {
|
|
24660
|
-
this.
|
|
24661
|
-
this.
|
|
24662
|
-
this.selectionSubject
|
|
24663
|
-
.pipe(take(1))
|
|
24664
|
-
.subscribe((selection) => selection && selection.option.deselect());
|
|
24665
|
-
this.inputRef.nativeElement.focus();
|
|
24666
|
-
this.triggerRef.closePanel();
|
|
24667
|
-
}
|
|
24668
|
-
handleEnter(any) {
|
|
24669
|
-
if (!this.cancelEnter) {
|
|
24670
|
-
this.inputSubmitted.emit(any);
|
|
24671
|
-
this.triggerRef.closePanel();
|
|
24672
|
-
}
|
|
24673
|
-
}
|
|
24674
|
-
handleClickSearch() {
|
|
24675
|
-
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24676
|
-
this.triggerRef.closePanel();
|
|
24677
|
-
}
|
|
24678
|
-
handleSelection(event) {
|
|
24679
|
-
this.cancelEnter = true;
|
|
24680
|
-
this.itemSelected.emit(event.option.value);
|
|
24681
|
-
if (this.clearOnSelection) {
|
|
24682
|
-
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24683
|
-
this.inputRef.nativeElement.value = any;
|
|
24684
|
-
});
|
|
24685
|
-
}
|
|
24889
|
+
this.value = null;
|
|
24890
|
+
this.rawChange.next(null);
|
|
24686
24891
|
}
|
|
24687
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24688
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24892
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24893
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: { value: "value", placeholder: "placeholder" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24689
24894
|
}
|
|
24690
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24895
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
24691
24896
|
type: Component,
|
|
24692
|
-
args: [{ selector: 'gn-ui-
|
|
24693
|
-
}],
|
|
24694
|
-
type: Input
|
|
24695
|
-
}], action: [{
|
|
24696
|
-
type: Input
|
|
24697
|
-
}], value: [{
|
|
24698
|
-
type: Input
|
|
24699
|
-
}], clearOnSelection: [{
|
|
24897
|
+
args: [{ selector: 'gn-ui-search-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n" }]
|
|
24898
|
+
}], propDecorators: { value: [{
|
|
24700
24899
|
type: Input
|
|
24701
|
-
}],
|
|
24900
|
+
}], placeholder: [{
|
|
24702
24901
|
type: Input
|
|
24703
|
-
}],
|
|
24704
|
-
type: Output
|
|
24705
|
-
}], inputSubmitted: [{
|
|
24706
|
-
type: Output
|
|
24707
|
-
}], inputCleared: [{
|
|
24902
|
+
}], valueChange: [{
|
|
24708
24903
|
type: Output
|
|
24709
|
-
}], triggerRef: [{
|
|
24710
|
-
type: ViewChild,
|
|
24711
|
-
args: [MatAutocompleteTrigger]
|
|
24712
|
-
}], autocomplete: [{
|
|
24713
|
-
type: ViewChild,
|
|
24714
|
-
args: [MatAutocomplete]
|
|
24715
|
-
}], inputRef: [{
|
|
24716
|
-
type: ViewChild,
|
|
24717
|
-
args: ['searchInput']
|
|
24718
|
-
}], displayWithFn: [{
|
|
24719
|
-
type: Input
|
|
24720
24904
|
}] } });
|
|
24721
24905
|
|
|
24722
24906
|
class StarToggleComponent {
|
|
@@ -24754,115 +24938,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24754
24938
|
args: ['starOverlay']
|
|
24755
24939
|
}] } });
|
|
24756
24940
|
|
|
24757
|
-
class
|
|
24758
|
-
constructor(
|
|
24759
|
-
this.
|
|
24760
|
-
this.
|
|
24761
|
-
this.
|
|
24762
|
-
this.
|
|
24763
|
-
|
|
24764
|
-
|
|
24765
|
-
|
|
24766
|
-
|
|
24767
|
-
|
|
24768
|
-
|
|
24769
|
-
|
|
24770
|
-
|
|
24941
|
+
class TextAreaComponent {
|
|
24942
|
+
constructor() {
|
|
24943
|
+
this.value = '';
|
|
24944
|
+
this.disabled = false;
|
|
24945
|
+
this.extraClass = '';
|
|
24946
|
+
this.required = false;
|
|
24947
|
+
this.rawChange = new Subject();
|
|
24948
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24949
|
+
this.baseClasses = [
|
|
24950
|
+
'w-full',
|
|
24951
|
+
'pt-2',
|
|
24952
|
+
'pl-2',
|
|
24953
|
+
'resize-none',
|
|
24954
|
+
'border',
|
|
24955
|
+
'border-gray-800',
|
|
24956
|
+
'rounded italic',
|
|
24957
|
+
'leading-tight',
|
|
24958
|
+
'focus:outline-none',
|
|
24959
|
+
'focus:bg-background',
|
|
24960
|
+
'focus:border-primary',
|
|
24961
|
+
].join(' ');
|
|
24962
|
+
this.disabledClasses = ['cursor-not-allowed'].join(' ');
|
|
24771
24963
|
}
|
|
24772
|
-
|
|
24773
|
-
|
|
24774
|
-
this.observer = new IntersectionObserver((entries) => {
|
|
24775
|
-
entries.forEach((entry) => {
|
|
24776
|
-
this.isInViewport.emit(entry.isIntersecting);
|
|
24777
|
-
});
|
|
24778
|
-
}, { root: null, threshold: 0 });
|
|
24779
|
-
}
|
|
24780
|
-
this.observer.observe(elToObserve);
|
|
24964
|
+
get classList() {
|
|
24965
|
+
return `${this.baseClasses} ${this.extraClass} ${this.disabled ? this.disabledClasses : ''}`;
|
|
24781
24966
|
}
|
|
24782
|
-
|
|
24783
|
-
this.
|
|
24967
|
+
ngAfterViewInit() {
|
|
24968
|
+
this.checkRequired(this.input.nativeElement.value);
|
|
24784
24969
|
}
|
|
24785
|
-
|
|
24786
|
-
|
|
24787
|
-
}
|
|
24788
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
24789
|
-
type: Component,
|
|
24790
|
-
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
24791
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
24792
|
-
type: Output
|
|
24793
|
-
}], entersViewport: [{
|
|
24794
|
-
type: Output
|
|
24795
|
-
}], exitsViewport: [{
|
|
24796
|
-
type: Output
|
|
24797
|
-
}] } });
|
|
24798
|
-
|
|
24799
|
-
class CheckToggleComponent {
|
|
24800
|
-
constructor() {
|
|
24801
|
-
this.color = 'primary';
|
|
24802
|
-
this.toggled = new EventEmitter();
|
|
24970
|
+
checkRequired(value) {
|
|
24971
|
+
this.input.nativeElement.classList.toggle('invalid', this.required && value === '');
|
|
24803
24972
|
}
|
|
24804
|
-
|
|
24805
|
-
|
|
24973
|
+
handleChange($event) {
|
|
24974
|
+
const value = $event.target.value;
|
|
24975
|
+
this.checkRequired(value);
|
|
24976
|
+
this.rawChange.next(value);
|
|
24806
24977
|
}
|
|
24807
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24808
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24978
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24979
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, isStandalone: true, selector: "gn-ui-text-area", inputs: { value: "value", disabled: "disabled", extraClass: "extraClass", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [class]=\"classList\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
24809
24980
|
}
|
|
24810
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24981
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
24811
24982
|
type: Component,
|
|
24812
|
-
args: [{ selector: 'gn-ui-
|
|
24813
|
-
}], propDecorators: {
|
|
24983
|
+
args: [{ selector: 'gn-ui-text-area', standalone: true, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [class]=\"classList\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
24984
|
+
}], ctorParameters: function () { return []; }, propDecorators: { value: [{
|
|
24814
24985
|
type: Input
|
|
24815
|
-
}],
|
|
24986
|
+
}], disabled: [{
|
|
24816
24987
|
type: Input
|
|
24817
|
-
}],
|
|
24988
|
+
}], extraClass: [{
|
|
24818
24989
|
type: Input
|
|
24819
|
-
}],
|
|
24990
|
+
}], placeholder: [{
|
|
24820
24991
|
type: Input
|
|
24821
|
-
}],
|
|
24992
|
+
}], required: [{
|
|
24993
|
+
type: Input
|
|
24994
|
+
}], valueChange: [{
|
|
24822
24995
|
type: Output
|
|
24996
|
+
}], input: [{
|
|
24997
|
+
type: ViewChild,
|
|
24998
|
+
args: ['input']
|
|
24823
24999
|
}] } });
|
|
24824
25000
|
|
|
24825
|
-
|
|
24826
|
-
marker('dropFile');
|
|
24827
|
-
class DragAndDropFileInputComponent {
|
|
25001
|
+
class TextInputComponent {
|
|
24828
25002
|
constructor() {
|
|
24829
|
-
this.
|
|
24830
|
-
|
|
24831
|
-
|
|
24832
|
-
|
|
25003
|
+
this.baseClass = [
|
|
25004
|
+
'appearance-none',
|
|
25005
|
+
'border border-gray-300',
|
|
25006
|
+
'rounded w-full',
|
|
25007
|
+
'p-2',
|
|
25008
|
+
'text-gray-700',
|
|
25009
|
+
'leading-tight',
|
|
25010
|
+
'focus:outline-none',
|
|
25011
|
+
'focus:border-primary',
|
|
25012
|
+
].join(' ');
|
|
25013
|
+
this.value = '';
|
|
25014
|
+
this.extraClass = '';
|
|
25015
|
+
this.required = false;
|
|
25016
|
+
this.rawChange = new Subject();
|
|
25017
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24833
25018
|
}
|
|
24834
|
-
get
|
|
24835
|
-
return this.
|
|
25019
|
+
get classList() {
|
|
25020
|
+
return `${this.baseClass} ${this.extraClass}`;
|
|
24836
25021
|
}
|
|
24837
|
-
|
|
24838
|
-
this.
|
|
24839
|
-
this.fileChange.emit(this.selectedFile);
|
|
25022
|
+
ngAfterViewInit() {
|
|
25023
|
+
this.checkRequired(this.input.nativeElement.value);
|
|
24840
25024
|
}
|
|
24841
|
-
|
|
24842
|
-
|
|
25025
|
+
checkRequired(value) {
|
|
25026
|
+
this.input.nativeElement.classList.toggle('invalid', this.required && value === '');
|
|
25027
|
+
}
|
|
25028
|
+
handleChange($event) {
|
|
25029
|
+
const value = $event.target.value;
|
|
25030
|
+
this.checkRequired(value);
|
|
25031
|
+
this.rawChange.next(value);
|
|
25032
|
+
}
|
|
25033
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25034
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextInputComponent, selector: "gn-ui-text-input", inputs: { value: "value", extraClass: "extraClass", hint: "hint", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
24843
25035
|
}
|
|
24844
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25036
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
24845
25037
|
type: Component,
|
|
24846
|
-
args: [{ selector: 'gn-ui-
|
|
24847
|
-
}], propDecorators: {
|
|
25038
|
+
args: [{ selector: 'gn-ui-text-input', template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25039
|
+
}], propDecorators: { value: [{
|
|
24848
25040
|
type: Input
|
|
24849
|
-
}],
|
|
25041
|
+
}], extraClass: [{
|
|
24850
25042
|
type: Input
|
|
24851
|
-
}],
|
|
24852
|
-
type: Output
|
|
24853
|
-
}] } });
|
|
24854
|
-
|
|
24855
|
-
class NavigationButtonComponent {
|
|
24856
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24857
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24858
|
-
}
|
|
24859
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24860
|
-
type: Component,
|
|
24861
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
24862
|
-
}], propDecorators: { label: [{
|
|
25043
|
+
}], hint: [{
|
|
24863
25044
|
type: Input
|
|
24864
|
-
}],
|
|
25045
|
+
}], required: [{
|
|
24865
25046
|
type: Input
|
|
25047
|
+
}], valueChange: [{
|
|
25048
|
+
type: Output
|
|
25049
|
+
}], input: [{
|
|
25050
|
+
type: ViewChild,
|
|
25051
|
+
args: ['input']
|
|
24866
25052
|
}] } });
|
|
24867
25053
|
|
|
24868
25054
|
class ColorScaleComponent {
|
|
@@ -24970,7 +25156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24970
25156
|
|
|
24971
25157
|
class LoadingMaskComponent {
|
|
24972
25158
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24973
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"], dependencies: [{ kind: "component", type: i1$
|
|
25159
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"], dependencies: [{ kind: "component", type: i1$6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24974
25160
|
}
|
|
24975
25161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, decorators: [{
|
|
24976
25162
|
type: Component,
|
|
@@ -25066,148 +25252,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25066
25252
|
}]
|
|
25067
25253
|
}] });
|
|
25068
25254
|
|
|
25069
|
-
class
|
|
25070
|
-
constructor() {
|
|
25071
|
-
this.
|
|
25072
|
-
this.
|
|
25255
|
+
class ViewportIntersectorComponent {
|
|
25256
|
+
constructor(vcRef) {
|
|
25257
|
+
this.vcRef = vcRef;
|
|
25258
|
+
this.isInViewport = new EventEmitter();
|
|
25259
|
+
this.entersViewport = this.isInViewport.pipe(filter((inViewport) => inViewport), map$1(() => undefined));
|
|
25260
|
+
this.exitsViewport = this.isInViewport.pipe(filter((inViewport) => !inViewport), map$1(() => undefined));
|
|
25073
25261
|
}
|
|
25074
|
-
|
|
25075
|
-
|
|
25076
|
-
|
|
25262
|
+
ngOnInit() {
|
|
25263
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25264
|
+
this.observeInputElement(elToObserve);
|
|
25077
25265
|
}
|
|
25078
|
-
|
|
25079
|
-
|
|
25080
|
-
|
|
25081
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
25082
|
-
type: Component,
|
|
25083
|
-
args: [{ selector: 'gn-ui-copy-text-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n" }]
|
|
25084
|
-
}], propDecorators: { text: [{
|
|
25085
|
-
type: Input
|
|
25086
|
-
}], tooltipText: [{
|
|
25087
|
-
type: Input
|
|
25088
|
-
}], displayText: [{
|
|
25089
|
-
type: Input
|
|
25090
|
-
}], rows: [{
|
|
25091
|
-
type: Input
|
|
25092
|
-
}] } });
|
|
25093
|
-
|
|
25094
|
-
class CheckboxComponent {
|
|
25095
|
-
constructor() {
|
|
25096
|
-
this.type = 'default';
|
|
25097
|
-
this.checked = false;
|
|
25098
|
-
this.indeterminate = false;
|
|
25099
|
-
this.changed = new EventEmitter();
|
|
25266
|
+
ngOnDestroy() {
|
|
25267
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25268
|
+
this.unObserveInputElement(elToObserve);
|
|
25100
25269
|
}
|
|
25101
|
-
|
|
25102
|
-
|
|
25270
|
+
observeInputElement(elToObserve) {
|
|
25271
|
+
if (!this.observer) {
|
|
25272
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
25273
|
+
entries.forEach((entry) => {
|
|
25274
|
+
this.isInViewport.emit(entry.isIntersecting);
|
|
25275
|
+
});
|
|
25276
|
+
}, { root: null, threshold: 0 });
|
|
25277
|
+
}
|
|
25278
|
+
this.observer.observe(elToObserve);
|
|
25103
25279
|
}
|
|
25104
|
-
|
|
25105
|
-
|
|
25106
|
-
this.checked = !this.checked;
|
|
25107
|
-
this.changed.emit(this.checked);
|
|
25280
|
+
unObserveInputElement(elToObserve) {
|
|
25281
|
+
this.observer?.unobserve(elToObserve);
|
|
25108
25282
|
}
|
|
25109
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25110
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
25283
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25284
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: { isInViewport: "isInViewport", entersViewport: "entersViewport", exitsViewport: "exitsViewport" }, ngImport: i0, template: "<div class=\"w-full h-full\"></div>\n", styles: [""] }); }
|
|
25111
25285
|
}
|
|
25112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
25113
25287
|
type: Component,
|
|
25114
|
-
args: [{ selector: 'gn-ui-
|
|
25115
|
-
}],
|
|
25116
|
-
type: Input
|
|
25117
|
-
}], checked: [{
|
|
25118
|
-
type: Input
|
|
25119
|
-
}], indeterminate: [{
|
|
25120
|
-
type: Input
|
|
25121
|
-
}], changed: [{
|
|
25288
|
+
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
25289
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
25122
25290
|
type: Output
|
|
25123
|
-
}]
|
|
25124
|
-
|
|
25125
|
-
class SearchInputComponent {
|
|
25126
|
-
constructor() {
|
|
25127
|
-
this.value = '';
|
|
25128
|
-
this.placeholder = '';
|
|
25129
|
-
this.rawChange = new Subject();
|
|
25130
|
-
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
25131
|
-
}
|
|
25132
|
-
handleChange($event) {
|
|
25133
|
-
const value = $event.target.value;
|
|
25134
|
-
this.rawChange.next(value);
|
|
25135
|
-
}
|
|
25136
|
-
clear() {
|
|
25137
|
-
this.value = null;
|
|
25138
|
-
this.rawChange.next(null);
|
|
25139
|
-
}
|
|
25140
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25141
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: { value: "value", placeholder: "placeholder" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25142
|
-
}
|
|
25143
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
25144
|
-
type: Component,
|
|
25145
|
-
args: [{ selector: 'gn-ui-search-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n" }]
|
|
25146
|
-
}], propDecorators: { value: [{
|
|
25147
|
-
type: Input
|
|
25148
|
-
}], placeholder: [{
|
|
25149
|
-
type: Input
|
|
25150
|
-
}], valueChange: [{
|
|
25291
|
+
}], entersViewport: [{
|
|
25151
25292
|
type: Output
|
|
25152
|
-
}]
|
|
25153
|
-
|
|
25154
|
-
class DateRangePickerComponent {
|
|
25155
|
-
startDateSelected(event) {
|
|
25156
|
-
this.startDate = event.value;
|
|
25157
|
-
}
|
|
25158
|
-
endDateSelected(event) {
|
|
25159
|
-
this.endDate = event.value;
|
|
25160
|
-
}
|
|
25161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25162
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DateRangePickerComponent, selector: "gn-ui-date-range-picker", ngImport: i0, template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i3$2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3$2.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3$2.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3$2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
|
|
25163
|
-
}
|
|
25164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
25165
|
-
type: Component,
|
|
25166
|
-
args: [{ selector: 'gn-ui-date-range-picker', template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
25167
|
-
}] });
|
|
25168
|
-
|
|
25169
|
-
class EditableLabelDirective {
|
|
25170
|
-
constructor(el, renderer) {
|
|
25171
|
-
this.el = el;
|
|
25172
|
-
this.renderer = renderer;
|
|
25173
|
-
this.editableLabelChanged = new EventEmitter();
|
|
25174
|
-
}
|
|
25175
|
-
ngAfterViewInit() {
|
|
25176
|
-
if (this.gnUiEditableLabel !== false) {
|
|
25177
|
-
const appendedInput = this.renderer.createElement('input');
|
|
25178
|
-
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
25179
|
-
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
25180
|
-
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
25181
|
-
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
25182
|
-
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
25183
|
-
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
25184
|
-
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
25185
|
-
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
25186
|
-
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
25187
|
-
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
25188
|
-
const hostContent = this.el.nativeElement.textContent || '';
|
|
25189
|
-
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
25190
|
-
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
25191
|
-
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
25192
|
-
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
25193
|
-
this.editableLabelChanged.emit(event.target.value);
|
|
25194
|
-
});
|
|
25195
|
-
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
25196
|
-
}
|
|
25197
|
-
}
|
|
25198
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25199
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, isStandalone: true, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
25200
|
-
}
|
|
25201
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
25202
|
-
type: Directive,
|
|
25203
|
-
args: [{
|
|
25204
|
-
selector: '[gnUiEditableLabel]',
|
|
25205
|
-
standalone: true,
|
|
25206
|
-
}]
|
|
25207
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25293
|
+
}], exitsViewport: [{
|
|
25208
25294
|
type: Output
|
|
25209
|
-
}], gnUiEditableLabel: [{
|
|
25210
|
-
type: Input
|
|
25211
25295
|
}] } });
|
|
25212
25296
|
|
|
25213
25297
|
class FilesDropDirective {
|
|
@@ -25399,7 +25483,7 @@ class ImageInputComponent {
|
|
|
25399
25483
|
});
|
|
25400
25484
|
}
|
|
25401
25485
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25402
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$
|
|
25486
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25403
25487
|
}
|
|
25404
25488
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, decorators: [{
|
|
25405
25489
|
type: Component,
|
|
@@ -25435,8 +25519,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25435
25519
|
|
|
25436
25520
|
class UiInputsModule {
|
|
25437
25521
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25438
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [
|
|
25439
|
-
AutocompleteComponent,
|
|
25522
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [AutocompleteComponent,
|
|
25440
25523
|
TextInputComponent,
|
|
25441
25524
|
DragAndDropFileInputComponent,
|
|
25442
25525
|
ChipsInputComponent,
|
|
@@ -25447,8 +25530,7 @@ class UiInputsModule {
|
|
|
25447
25530
|
CheckToggleComponent,
|
|
25448
25531
|
CopyTextButtonComponent,
|
|
25449
25532
|
CheckboxComponent,
|
|
25450
|
-
SearchInputComponent,
|
|
25451
|
-
DateRangePickerComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25533
|
+
SearchInputComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25452
25534
|
FormsModule,
|
|
25453
25535
|
ReactiveFormsModule,
|
|
25454
25536
|
TagInputModule,
|
|
@@ -25466,7 +25548,9 @@ class UiInputsModule {
|
|
|
25466
25548
|
EditableLabelDirective,
|
|
25467
25549
|
TextAreaComponent,
|
|
25468
25550
|
ButtonComponent,
|
|
25469
|
-
ImageInputComponent
|
|
25551
|
+
ImageInputComponent,
|
|
25552
|
+
DropdownSelectorComponent,
|
|
25553
|
+
DateRangePickerComponent], exports: [DropdownSelectorComponent,
|
|
25470
25554
|
AutocompleteComponent,
|
|
25471
25555
|
ButtonComponent,
|
|
25472
25556
|
TextInputComponent,
|
|
@@ -25501,13 +25585,14 @@ class UiInputsModule {
|
|
|
25501
25585
|
MatInputModule,
|
|
25502
25586
|
MatDatepickerModule,
|
|
25503
25587
|
MatNativeDateModule,
|
|
25504
|
-
ImageInputComponent
|
|
25588
|
+
ImageInputComponent,
|
|
25589
|
+
DropdownSelectorComponent,
|
|
25590
|
+
DateRangePickerComponent] }); }
|
|
25505
25591
|
}
|
|
25506
25592
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, decorators: [{
|
|
25507
25593
|
type: NgModule,
|
|
25508
25594
|
args: [{
|
|
25509
25595
|
declarations: [
|
|
25510
|
-
DropdownSelectorComponent,
|
|
25511
25596
|
AutocompleteComponent,
|
|
25512
25597
|
TextInputComponent,
|
|
25513
25598
|
DragAndDropFileInputComponent,
|
|
@@ -25520,7 +25605,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25520
25605
|
CopyTextButtonComponent,
|
|
25521
25606
|
CheckboxComponent,
|
|
25522
25607
|
SearchInputComponent,
|
|
25523
|
-
DateRangePickerComponent,
|
|
25524
25608
|
],
|
|
25525
25609
|
imports: [
|
|
25526
25610
|
CommonModule,
|
|
@@ -25544,6 +25628,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25544
25628
|
TextAreaComponent,
|
|
25545
25629
|
ButtonComponent,
|
|
25546
25630
|
ImageInputComponent,
|
|
25631
|
+
DropdownSelectorComponent,
|
|
25632
|
+
DateRangePickerComponent,
|
|
25547
25633
|
],
|
|
25548
25634
|
exports: [
|
|
25549
25635
|
DropdownSelectorComponent,
|
|
@@ -25568,6 +25654,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25568
25654
|
}]
|
|
25569
25655
|
}] });
|
|
25570
25656
|
|
|
25657
|
+
class PreviousNextButtonsComponent {
|
|
25658
|
+
constructor() {
|
|
25659
|
+
this.directionButtonClicked = new EventEmitter();
|
|
25660
|
+
}
|
|
25661
|
+
previousButtonClicked() {
|
|
25662
|
+
this.directionButtonClicked.next('previous');
|
|
25663
|
+
}
|
|
25664
|
+
nextButtonClicked() {
|
|
25665
|
+
this.directionButtonClicked.next('next');
|
|
25666
|
+
}
|
|
25667
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25668
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PreviousNextButtonsComponent, isStandalone: true, selector: "gn-ui-previous-next-buttons", inputs: { isFirst: "isFirst", isLast: "isLast" }, outputs: { directionButtonClicked: "directionButtonClicked" }, ngImport: i0, template: "<div class=\"flex flex-row gap-x-4 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n [type]=\"isFirst ? 'default' : 'outline'\"\n [disabled]=\"isFirst\"\n (buttonClick)=\"previousButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_back\n </mat-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n [type]=\"isLast ? 'default' : 'outline'\"\n [disabled]=\"isLast\"\n (buttonClick)=\"nextButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_forward\n </mat-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25669
|
+
}
|
|
25670
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
|
|
25671
|
+
type: Component,
|
|
25672
|
+
args: [{ selector: 'gn-ui-previous-next-buttons', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ButtonComponent, MatIconModule], template: "<div class=\"flex flex-row gap-x-4 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n [type]=\"isFirst ? 'default' : 'outline'\"\n [disabled]=\"isFirst\"\n (buttonClick)=\"previousButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_back\n </mat-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n [type]=\"isLast ? 'default' : 'outline'\"\n [disabled]=\"isLast\"\n (buttonClick)=\"nextButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_forward\n </mat-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"] }]
|
|
25673
|
+
}], propDecorators: { isFirst: [{
|
|
25674
|
+
type: Input
|
|
25675
|
+
}], isLast: [{
|
|
25676
|
+
type: Input
|
|
25677
|
+
}], directionButtonClicked: [{
|
|
25678
|
+
type: Output
|
|
25679
|
+
}] } });
|
|
25680
|
+
|
|
25571
25681
|
class AddLayerFromOgcApiComponent {
|
|
25572
25682
|
constructor(changeDetectorRef) {
|
|
25573
25683
|
this.changeDetectorRef = changeDetectorRef;
|
|
@@ -26376,7 +26486,7 @@ class ApiCardComponent {
|
|
|
26376
26486
|
}
|
|
26377
26487
|
}
|
|
26378
26488
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26379
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3
|
|
26489
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26380
26490
|
}
|
|
26381
26491
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
26382
26492
|
type: Component,
|
|
@@ -26507,7 +26617,7 @@ class DownloadsListComponent {
|
|
|
26507
26617
|
return getBadgeColor(getFileFormat(link));
|
|
26508
26618
|
}
|
|
26509
26619
|
isFromWfs(link) {
|
|
26510
|
-
return link.type === '
|
|
26620
|
+
return link.type === 'download' && link.accessServiceProtocol === 'wfs';
|
|
26511
26621
|
}
|
|
26512
26622
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26513
26623
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DownloadsListComponent, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-50')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromWfs]=\"isFromWfs(link)\"\n ></gn-ui-download-item>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromWfs"], outputs: ["exportUrl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -26539,14 +26649,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26539
26649
|
}] } });
|
|
26540
26650
|
|
|
26541
26651
|
class LinkCardComponent {
|
|
26652
|
+
constructor() {
|
|
26653
|
+
this.compact = false;
|
|
26654
|
+
}
|
|
26655
|
+
get title() {
|
|
26656
|
+
if (this.link.name && this.link.description) {
|
|
26657
|
+
return `${this.link.name} | ${this.link.description}`;
|
|
26658
|
+
}
|
|
26659
|
+
return this.link.name || this.link.description || '';
|
|
26660
|
+
}
|
|
26542
26661
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26543
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, selector: "gn-ui-link-card", inputs: { link: "link" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group
|
|
26662
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, isStandalone: true, selector: "gn-ui-link-card", inputs: { link: "link", compact: "compact" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden\"\n [ngClass]=\"{ 'h-40': !compact }\"\n [title]=\"title\"\n>\n <ng-container *ngIf=\"!compact; else compactTpl\">\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-container>\n <ng-template #compactTpl>\n <div class=\"flex items-center justify-between gap-4\">\n <p\n class=\"overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap\"\n >\n {{ link.name || link.description }}\n </p>\n <mat-icon class=\"material-symbols-outlined card-icon flex-shrink-0\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-template>\n</a>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26544
26663
|
}
|
|
26545
26664
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
26546
26665
|
type: Component,
|
|
26547
|
-
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group
|
|
26666
|
+
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden\"\n [ngClass]=\"{ 'h-40': !compact }\"\n [title]=\"title\"\n>\n <ng-container *ngIf=\"!compact; else compactTpl\">\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-container>\n <ng-template #compactTpl>\n <div class=\"flex items-center justify-between gap-4\">\n <p\n class=\"overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap\"\n >\n {{ link.name || link.description }}\n </p>\n <mat-icon class=\"material-symbols-outlined card-icon flex-shrink-0\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-template>\n</a>\n" }]
|
|
26548
26667
|
}], propDecorators: { link: [{
|
|
26549
26668
|
type: Input
|
|
26669
|
+
}], compact: [{
|
|
26670
|
+
type: Input
|
|
26550
26671
|
}] } });
|
|
26551
26672
|
|
|
26552
26673
|
class MarkdownParserComponent {
|
|
@@ -27008,10 +27129,7 @@ class RecordApiFormComponent {
|
|
|
27008
27129
|
this.offset$ = new BehaviorSubject('');
|
|
27009
27130
|
this.limit$ = new BehaviorSubject('');
|
|
27010
27131
|
this.format$ = new BehaviorSubject('');
|
|
27011
|
-
this.
|
|
27012
|
-
{ label: 'JSON', value: 'json' },
|
|
27013
|
-
{ label: 'CSV', value: 'csv' },
|
|
27014
|
-
];
|
|
27132
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27015
27133
|
this.apiQueryUrl$ = combineLatest([this.offset$, this.limit$, this.format$]).pipe(map$2(([offset, limit, format]) => {
|
|
27016
27134
|
let outputUrl;
|
|
27017
27135
|
if (this.apiBaseUrl) {
|
|
@@ -27033,7 +27151,11 @@ class RecordApiFormComponent {
|
|
|
27033
27151
|
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
27034
27152
|
}
|
|
27035
27153
|
set apiLink(value) {
|
|
27036
|
-
this.
|
|
27154
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27155
|
+
if (value) {
|
|
27156
|
+
this.apiBaseUrl = value.url.href;
|
|
27157
|
+
this.parseOutputFormats();
|
|
27158
|
+
}
|
|
27037
27159
|
this.resetUrl();
|
|
27038
27160
|
}
|
|
27039
27161
|
setOffset(value) {
|
|
@@ -27051,19 +27173,45 @@ class RecordApiFormComponent {
|
|
|
27051
27173
|
this.limit$.next(DEFAULT_PARAMS.LIMIT);
|
|
27052
27174
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
27053
27175
|
}
|
|
27176
|
+
parseOutputFormats() {
|
|
27177
|
+
const apiUrl = this.apiBaseUrl.slice(-1) === '?'
|
|
27178
|
+
? this.apiBaseUrl.slice(0, -1)
|
|
27179
|
+
: this.apiBaseUrl;
|
|
27180
|
+
this.getOutputFormats(apiUrl).then((outputFormats) => {
|
|
27181
|
+
const formatsList = outputFormats.itemFormats.map((format) => {
|
|
27182
|
+
const normalizedFormat = mimeTypeToFormat(format);
|
|
27183
|
+
if (normalizedFormat) {
|
|
27184
|
+
return {
|
|
27185
|
+
label: normalizedFormat?.toUpperCase(),
|
|
27186
|
+
value: normalizedFormat,
|
|
27187
|
+
};
|
|
27188
|
+
}
|
|
27189
|
+
return null;
|
|
27190
|
+
});
|
|
27191
|
+
this.outputFormats = this.outputFormats.concat(formatsList.filter(Boolean));
|
|
27192
|
+
this.outputFormats = this.outputFormats
|
|
27193
|
+
.filter((format, index, self) => index === self.findIndex((t) => t.value === format.value))
|
|
27194
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
27195
|
+
});
|
|
27196
|
+
}
|
|
27197
|
+
async getOutputFormats(url) {
|
|
27198
|
+
const endpoint = await new OgcApiEndpoint(url);
|
|
27199
|
+
const firstCollection = (await endpoint.featureCollections)[0];
|
|
27200
|
+
return endpoint.getCollectionInfo(firstCollection);
|
|
27201
|
+
}
|
|
27054
27202
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27055
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"
|
|
27203
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27056
27204
|
}
|
|
27057
27205
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
27058
27206
|
type: Component,
|
|
27059
|
-
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"
|
|
27207
|
+
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"] }]
|
|
27060
27208
|
}], propDecorators: { apiLink: [{
|
|
27061
27209
|
type: Input
|
|
27062
27210
|
}] } });
|
|
27063
27211
|
|
|
27064
27212
|
class RelatedRecordCardComponent {
|
|
27065
27213
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27066
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3
|
|
27214
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27067
27215
|
}
|
|
27068
27216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
27069
27217
|
type: Component,
|
|
@@ -27159,48 +27307,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27159
27307
|
}] } });
|
|
27160
27308
|
|
|
27161
27309
|
class CarouselComponent {
|
|
27310
|
+
get isFirstStep() {
|
|
27311
|
+
return this.currentStep === 0;
|
|
27312
|
+
}
|
|
27313
|
+
get isLastStep() {
|
|
27314
|
+
return this.currentStep === this.steps.length - 1;
|
|
27315
|
+
}
|
|
27316
|
+
get stepsCount() {
|
|
27317
|
+
return this.steps.length;
|
|
27318
|
+
}
|
|
27162
27319
|
constructor(changeDetector) {
|
|
27163
27320
|
this.changeDetector = changeDetector;
|
|
27164
27321
|
this.containerClass = '';
|
|
27165
|
-
this.stepsContainerClass = '';
|
|
27322
|
+
this.stepsContainerClass = 'w-full bottom-0 top-auto';
|
|
27323
|
+
this.currentStepChange = new EventEmitter();
|
|
27166
27324
|
this.steps = [];
|
|
27167
|
-
this.
|
|
27325
|
+
this.currentStep = 0;
|
|
27326
|
+
this.refreshSteps = () => {
|
|
27327
|
+
this.steps = this.emblaApi.scrollSnapList();
|
|
27328
|
+
this.currentStep = this.emblaApi.selectedScrollSnap();
|
|
27329
|
+
this.currentStepChange.emit(this.currentStep);
|
|
27330
|
+
this.changeDetector.detectChanges();
|
|
27331
|
+
};
|
|
27168
27332
|
}
|
|
27169
27333
|
ngAfterViewInit() {
|
|
27170
27334
|
this.emblaApi = EmblaCarousel(this.carouselOverflowContainer.nativeElement, {
|
|
27171
27335
|
duration: 15,
|
|
27172
27336
|
});
|
|
27173
|
-
const refreshSteps = () => {
|
|
27174
|
-
this.steps = this.emblaApi.scrollSnapList();
|
|
27175
|
-
this.selectedStep = this.emblaApi.selectedScrollSnap();
|
|
27176
|
-
this.changeDetector.detectChanges();
|
|
27177
|
-
};
|
|
27178
27337
|
this.emblaApi
|
|
27179
|
-
.on('init', refreshSteps)
|
|
27180
|
-
.on('reInit', refreshSteps)
|
|
27181
|
-
.on('select', refreshSteps);
|
|
27338
|
+
.on('init', this.refreshSteps)
|
|
27339
|
+
.on('reInit', this.refreshSteps)
|
|
27340
|
+
.on('select', this.refreshSteps);
|
|
27182
27341
|
}
|
|
27183
27342
|
scrollToStep(stepIndex) {
|
|
27184
27343
|
this.emblaApi.scrollTo(stepIndex);
|
|
27185
27344
|
}
|
|
27345
|
+
slideToPrevious() {
|
|
27346
|
+
if (this.isFirstStep)
|
|
27347
|
+
return;
|
|
27348
|
+
this.emblaApi.scrollPrev();
|
|
27349
|
+
}
|
|
27350
|
+
slideToNext() {
|
|
27351
|
+
if (this.isLastStep)
|
|
27352
|
+
return;
|
|
27353
|
+
this.emblaApi.scrollNext();
|
|
27354
|
+
}
|
|
27186
27355
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27187
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"
|
|
27356
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, isStandalone: true, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, outputs: { currentStepChange: "currentStepChange" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"currentStep === i ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27188
27357
|
}
|
|
27189
27358
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
27190
27359
|
type: Component,
|
|
27191
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"
|
|
27192
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
27360
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"currentStep === i ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"] }]
|
|
27361
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { carouselOverflowContainer: [{
|
|
27362
|
+
type: ViewChild,
|
|
27363
|
+
args: ['carouselOverflowContainer']
|
|
27364
|
+
}], containerClass: [{
|
|
27193
27365
|
type: Input
|
|
27194
27366
|
}], stepsContainerClass: [{
|
|
27195
27367
|
type: Input
|
|
27196
|
-
}],
|
|
27197
|
-
type:
|
|
27198
|
-
args: ['carouselOverflowContainer']
|
|
27368
|
+
}], currentStepChange: [{
|
|
27369
|
+
type: Output
|
|
27199
27370
|
}] } });
|
|
27200
27371
|
|
|
27201
27372
|
class FormFieldWrapperComponent {
|
|
27202
27373
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27203
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3
|
|
27374
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27204
27375
|
}
|
|
27205
27376
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
27206
27377
|
type: Component,
|
|
@@ -27349,17 +27520,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27349
27520
|
args: ['innerContainer']
|
|
27350
27521
|
}] } });
|
|
27351
27522
|
|
|
27523
|
+
class BlockListComponent {
|
|
27524
|
+
get pages() {
|
|
27525
|
+
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
27526
|
+
}
|
|
27527
|
+
get isFirstPage() {
|
|
27528
|
+
return this.currentPage === 0;
|
|
27529
|
+
}
|
|
27530
|
+
get isLastPage() {
|
|
27531
|
+
return this.currentPage === this.pagesCount - 1;
|
|
27532
|
+
}
|
|
27533
|
+
get pagesCount() {
|
|
27534
|
+
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
27535
|
+
}
|
|
27536
|
+
constructor(changeDetector) {
|
|
27537
|
+
this.changeDetector = changeDetector;
|
|
27538
|
+
this.pageSize = 5;
|
|
27539
|
+
this.containerClass = '';
|
|
27540
|
+
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
27541
|
+
this.minHeight = 0;
|
|
27542
|
+
this.currentPage = 0;
|
|
27543
|
+
this.refreshBlocksVisibility = () => {
|
|
27544
|
+
this.blocks.forEach((block, index) => {
|
|
27545
|
+
block.nativeElement.style.display =
|
|
27546
|
+
index >= this.currentPage * this.pageSize &&
|
|
27547
|
+
index < (this.currentPage + 1) * this.pageSize
|
|
27548
|
+
? null
|
|
27549
|
+
: 'none';
|
|
27550
|
+
});
|
|
27551
|
+
};
|
|
27552
|
+
}
|
|
27553
|
+
ngAfterViewInit() {
|
|
27554
|
+
this.blocks.changes.subscribe(this.refreshBlocksVisibility);
|
|
27555
|
+
this.refreshBlocksVisibility();
|
|
27556
|
+
// we store the first height as the min-height of the list container
|
|
27557
|
+
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
27558
|
+
this.changeDetector.detectChanges();
|
|
27559
|
+
}
|
|
27560
|
+
goToPage(index) {
|
|
27561
|
+
this.currentPage = Math.max(Math.min(index, this.pagesCount - 1), 0);
|
|
27562
|
+
this.changeDetector.detectChanges();
|
|
27563
|
+
this.refreshBlocksVisibility();
|
|
27564
|
+
}
|
|
27565
|
+
previousPage() {
|
|
27566
|
+
if (this.isFirstPage)
|
|
27567
|
+
return;
|
|
27568
|
+
this.goToPage(this.currentPage - 1);
|
|
27569
|
+
}
|
|
27570
|
+
nextPage() {
|
|
27571
|
+
if (this.isLastPage)
|
|
27572
|
+
return;
|
|
27573
|
+
this.goToPage(this.currentPage + 1);
|
|
27574
|
+
}
|
|
27575
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27576
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: BlockListComponent, isStandalone: true, selector: "gn-ui-block-list", inputs: { pageSize: "pageSize", containerClass: "containerClass", paginationContainerClass: "paginationContainerClass" }, queries: [{ propertyName: "blocks", predicate: ["block"], read: ElementRef }], viewQueries: [{ propertyName: "blockContainer", first: true, predicate: ["blockContainer"], descendants: true }], ngImport: i0, template: "<div\n class=\"block-list-container flex flex-col\"\n #blockContainer\n [ngClass]=\"containerClass\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"pagesCount > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"paginationContainerClass\"\n>\n <button\n *ngFor=\"let page of pages\"\n class=\"list-page-dot\"\n (click)=\"goToPage(page)\"\n [ngClass]=\"currentPage === page ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.list-page-dot{width:6px;height:6px;border-radius:6px;position:relative}.list-page-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27577
|
+
}
|
|
27578
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
27579
|
+
type: Component,
|
|
27580
|
+
args: [{ selector: 'gn-ui-block-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div\n class=\"block-list-container flex flex-col\"\n #blockContainer\n [ngClass]=\"containerClass\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"pagesCount > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"paginationContainerClass\"\n>\n <button\n *ngFor=\"let page of pages\"\n class=\"list-page-dot\"\n (click)=\"goToPage(page)\"\n [ngClass]=\"currentPage === page ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.list-page-dot{width:6px;height:6px;border-radius:6px;position:relative}.list-page-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"] }]
|
|
27581
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageSize: [{
|
|
27582
|
+
type: Input
|
|
27583
|
+
}], containerClass: [{
|
|
27584
|
+
type: Input
|
|
27585
|
+
}], paginationContainerClass: [{
|
|
27586
|
+
type: Input
|
|
27587
|
+
}], blocks: [{
|
|
27588
|
+
type: ContentChildren,
|
|
27589
|
+
args: ['block', { read: ElementRef }]
|
|
27590
|
+
}], blockContainer: [{
|
|
27591
|
+
type: ViewChild,
|
|
27592
|
+
args: ['blockContainer']
|
|
27593
|
+
}] } });
|
|
27594
|
+
|
|
27352
27595
|
class UiLayoutModule {
|
|
27353
27596
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27354
27597
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, declarations: [ExpandablePanelComponent,
|
|
27355
27598
|
StickyHeaderComponent,
|
|
27356
27599
|
AnchorLinkDirective,
|
|
27357
|
-
ExpandablePanelButtonComponent,
|
|
27358
|
-
CarouselComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27600
|
+
ExpandablePanelButtonComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27359
27601
|
StickyHeaderComponent,
|
|
27360
27602
|
AnchorLinkDirective,
|
|
27361
|
-
ExpandablePanelButtonComponent
|
|
27362
|
-
CarouselComponent] }); }
|
|
27603
|
+
ExpandablePanelButtonComponent] }); }
|
|
27363
27604
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, imports: [CommonModule, MatIconModule, TranslateModule.forChild()] }); }
|
|
27364
27605
|
}
|
|
27365
27606
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, decorators: [{
|
|
@@ -27371,14 +27612,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27371
27612
|
StickyHeaderComponent,
|
|
27372
27613
|
AnchorLinkDirective,
|
|
27373
27614
|
ExpandablePanelButtonComponent,
|
|
27374
|
-
CarouselComponent,
|
|
27375
27615
|
],
|
|
27376
27616
|
exports: [
|
|
27377
27617
|
ExpandablePanelComponent,
|
|
27378
27618
|
StickyHeaderComponent,
|
|
27379
27619
|
AnchorLinkDirective,
|
|
27380
27620
|
ExpandablePanelButtonComponent,
|
|
27381
|
-
CarouselComponent,
|
|
27382
27621
|
],
|
|
27383
27622
|
}]
|
|
27384
27623
|
}] });
|
|
@@ -27388,7 +27627,7 @@ class UserPreviewComponent {
|
|
|
27388
27627
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
27389
27628
|
}
|
|
27390
27629
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27391
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i3
|
|
27630
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27392
27631
|
}
|
|
27393
27632
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
27394
27633
|
type: Component,
|
|
@@ -27512,7 +27751,6 @@ class UiElementsModule {
|
|
|
27512
27751
|
DownloadItemComponent,
|
|
27513
27752
|
DownloadsListComponent,
|
|
27514
27753
|
ApiCardComponent,
|
|
27515
|
-
LinkCardComponent,
|
|
27516
27754
|
RelatedRecordCardComponent,
|
|
27517
27755
|
MetadataContactComponent,
|
|
27518
27756
|
MetadataCatalogComponent,
|
|
@@ -27543,7 +27781,6 @@ class UiElementsModule {
|
|
|
27543
27781
|
DownloadItemComponent,
|
|
27544
27782
|
DownloadsListComponent,
|
|
27545
27783
|
ApiCardComponent,
|
|
27546
|
-
LinkCardComponent,
|
|
27547
27784
|
RelatedRecordCardComponent,
|
|
27548
27785
|
MetadataContactComponent,
|
|
27549
27786
|
MetadataCatalogComponent,
|
|
@@ -27597,7 +27834,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27597
27834
|
DownloadItemComponent,
|
|
27598
27835
|
DownloadsListComponent,
|
|
27599
27836
|
ApiCardComponent,
|
|
27600
|
-
LinkCardComponent,
|
|
27601
27837
|
RelatedRecordCardComponent,
|
|
27602
27838
|
MetadataContactComponent,
|
|
27603
27839
|
MetadataCatalogComponent,
|
|
@@ -27620,7 +27856,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27620
27856
|
DownloadItemComponent,
|
|
27621
27857
|
DownloadsListComponent,
|
|
27622
27858
|
ApiCardComponent,
|
|
27623
|
-
LinkCardComponent,
|
|
27624
27859
|
RelatedRecordCardComponent,
|
|
27625
27860
|
MetadataContactComponent,
|
|
27626
27861
|
MetadataCatalogComponent,
|
|
@@ -30994,7 +31229,7 @@ class TableComponent {
|
|
|
30994
31229
|
return rowIdPrefix + id;
|
|
30995
31230
|
}
|
|
30996
31231
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30997
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$4.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$
|
|
31232
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$4.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$2.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30998
31233
|
}
|
|
30999
31234
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, decorators: [{
|
|
31000
31235
|
type: Component,
|
|
@@ -31864,6 +32099,7 @@ marker('wfs.unreachable.http');
|
|
|
31864
32099
|
marker('wfs.unreachable.unknown');
|
|
31865
32100
|
marker('wfs.featuretype.notfound');
|
|
31866
32101
|
marker('wfs.geojsongml.notsupported');
|
|
32102
|
+
marker('ogc.unreachable.unknown');
|
|
31867
32103
|
marker('dataset.error.network');
|
|
31868
32104
|
marker('dataset.error.http');
|
|
31869
32105
|
marker('dataset.error.parse');
|
|
@@ -31943,6 +32179,27 @@ class DataService {
|
|
|
31943
32179
|
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
31944
32180
|
}))));
|
|
31945
32181
|
}
|
|
32182
|
+
async getDownloadLinksFromOgcApiFeatures(ogcApiLink) {
|
|
32183
|
+
const collectionInfo = await this.getDownloadUrlsFromOgcApi(ogcApiLink.url.href);
|
|
32184
|
+
return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
|
|
32185
|
+
return {
|
|
32186
|
+
...ogcApiLink,
|
|
32187
|
+
type: 'download',
|
|
32188
|
+
url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
|
|
32189
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
|
|
32190
|
+
};
|
|
32191
|
+
});
|
|
32192
|
+
}
|
|
32193
|
+
async getDownloadUrlsFromOgcApi(url) {
|
|
32194
|
+
const endpoint = new OgcApiEndpoint(this.proxy.getProxiedUrl(url));
|
|
32195
|
+
return await endpoint.featureCollections
|
|
32196
|
+
.then((collections) => {
|
|
32197
|
+
return endpoint.getCollectionInfo(collections[0]);
|
|
32198
|
+
})
|
|
32199
|
+
.catch((error) => {
|
|
32200
|
+
throw new Error(`ogc.unreachable.unknown`);
|
|
32201
|
+
});
|
|
32202
|
+
}
|
|
31946
32203
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
31947
32204
|
return ['json', 'geojson'].map((format) => ({
|
|
31948
32205
|
...esriRestLink,
|
|
@@ -31986,6 +32243,17 @@ class DataService {
|
|
|
31986
32243
|
const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
|
|
31987
32244
|
return from(openDataset(url, 'geojson')).pipe();
|
|
31988
32245
|
}
|
|
32246
|
+
else if (link.type === 'service' &&
|
|
32247
|
+
link.accessServiceProtocol === 'ogcFeatures') {
|
|
32248
|
+
return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
|
|
32249
|
+
const geojsonUrl = collectionInfo.jsonDownloadLink;
|
|
32250
|
+
return openDataset(geojsonUrl, 'geojson');
|
|
32251
|
+
}), tap$1((url) => {
|
|
32252
|
+
if (url === null) {
|
|
32253
|
+
throw new Error('wfs.geojsongml.notsupported');
|
|
32254
|
+
}
|
|
32255
|
+
}));
|
|
32256
|
+
}
|
|
31989
32257
|
return throwError(() => 'protocol not supported');
|
|
31990
32258
|
}
|
|
31991
32259
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataService, deps: [{ token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -32444,7 +32712,8 @@ class MapViewComponent {
|
|
|
32444
32712
|
}
|
|
32445
32713
|
else if ((link.type === 'service' &&
|
|
32446
32714
|
(link.accessServiceProtocol === 'wfs' ||
|
|
32447
|
-
link.accessServiceProtocol === 'esriRest'
|
|
32715
|
+
link.accessServiceProtocol === 'esriRest' ||
|
|
32716
|
+
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
32448
32717
|
link.type === 'download') {
|
|
32449
32718
|
return this.dataService.readAsGeoJson(link).pipe(map$1((data) => ({
|
|
32450
32719
|
type: MapContextLayerTypeEnum.GEOJSON,
|
|
@@ -33171,6 +33440,20 @@ const DEFAULT_FIELDS = [
|
|
|
33171
33440
|
},
|
|
33172
33441
|
onSaveProcess: '${dateNow()}',
|
|
33173
33442
|
},
|
|
33443
|
+
{
|
|
33444
|
+
model: 'licenses',
|
|
33445
|
+
formFieldConfig: {
|
|
33446
|
+
labelKey: marker('editor.record.form.license'),
|
|
33447
|
+
type: 'list',
|
|
33448
|
+
},
|
|
33449
|
+
},
|
|
33450
|
+
{
|
|
33451
|
+
model: 'resourceUpdated',
|
|
33452
|
+
formFieldConfig: {
|
|
33453
|
+
labelKey: marker('editor.record.form.resourceUpdated'),
|
|
33454
|
+
type: 'date',
|
|
33455
|
+
},
|
|
33456
|
+
},
|
|
33174
33457
|
];
|
|
33175
33458
|
|
|
33176
33459
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
@@ -33555,7 +33838,7 @@ class WizardFieldComponent {
|
|
|
33555
33838
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
33556
33839
|
},
|
|
33557
33840
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
33558
|
-
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type:
|
|
33841
|
+
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33559
33842
|
}
|
|
33560
33843
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
33561
33844
|
type: Component,
|
|
@@ -33884,6 +34167,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33884
34167
|
args: [{ selector: 'gn-ui-form-field-temporal-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-temporal-extent works!</p>\n" }]
|
|
33885
34168
|
}] });
|
|
33886
34169
|
|
|
34170
|
+
class FormFieldLicenseComponent {
|
|
34171
|
+
constructor() {
|
|
34172
|
+
this.choices = [
|
|
34173
|
+
{
|
|
34174
|
+
value: 'cc-by',
|
|
34175
|
+
label: marker('editor.record.form.license.cc-by'),
|
|
34176
|
+
},
|
|
34177
|
+
{
|
|
34178
|
+
value: 'cc-by-sa',
|
|
34179
|
+
label: marker('editor.record.form.license.cc-by-sa'),
|
|
34180
|
+
},
|
|
34181
|
+
{
|
|
34182
|
+
value: 'cc-zero',
|
|
34183
|
+
label: marker('editor.record.form.license.cc-zero'),
|
|
34184
|
+
},
|
|
34185
|
+
{
|
|
34186
|
+
value: 'etalab',
|
|
34187
|
+
label: marker('editor.record.form.license.etalab'),
|
|
34188
|
+
},
|
|
34189
|
+
{
|
|
34190
|
+
value: 'etalab-v2',
|
|
34191
|
+
label: marker('editor.record.form.license.etalab-v2'),
|
|
34192
|
+
},
|
|
34193
|
+
{
|
|
34194
|
+
value: 'odbl',
|
|
34195
|
+
label: marker('editor.record.form.license.odbl'),
|
|
34196
|
+
},
|
|
34197
|
+
{
|
|
34198
|
+
value: 'odc-by',
|
|
34199
|
+
label: marker('editor.record.form.license.odc-by'),
|
|
34200
|
+
},
|
|
34201
|
+
{
|
|
34202
|
+
value: 'pddl',
|
|
34203
|
+
label: marker('editor.record.form.license.pddl'),
|
|
34204
|
+
},
|
|
34205
|
+
{
|
|
34206
|
+
value: 'unknown',
|
|
34207
|
+
label: marker('editor.record.form.license.unknown'),
|
|
34208
|
+
},
|
|
34209
|
+
];
|
|
34210
|
+
}
|
|
34211
|
+
get selected() {
|
|
34212
|
+
return this.control.value[0]?.text;
|
|
34213
|
+
}
|
|
34214
|
+
onSelectValue(value) {
|
|
34215
|
+
this.control.setValue([{ text: value }]);
|
|
34216
|
+
}
|
|
34217
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34218
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldLicenseComponent, isStandalone: true, selector: "gn-ui-form-field-license", inputs: { control: "control", label: "label" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"label\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selected\"\n (selectValue)=\"onSelectValue($event)\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34219
|
+
}
|
|
34220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, decorators: [{
|
|
34221
|
+
type: Component,
|
|
34222
|
+
args: [{ selector: 'gn-ui-form-field-license', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [DropdownSelectorComponent], template: "<gn-ui-dropdown-selector\n [title]=\"label\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selected\"\n (selectValue)=\"onSelectValue($event)\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
34223
|
+
}], propDecorators: { control: [{
|
|
34224
|
+
type: Input
|
|
34225
|
+
}], label: [{
|
|
34226
|
+
type: Input
|
|
34227
|
+
}] } });
|
|
34228
|
+
|
|
34229
|
+
class FormFieldResourceUpdatedComponent {
|
|
34230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34231
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldResourceUpdatedComponent, isStandalone: true, selector: "gn-ui-form-field-resource-updated", inputs: { control: "control" }, ngImport: i0, template: "<gn-ui-date-picker\n [date]=\"control.value\"\n (dateChange)=\"control.setValue($event)\"\n></gn-ui-date-picker>\n", styles: [""], dependencies: [{ kind: "component", type: DatePickerComponent, selector: "gn-ui-date-picker", inputs: ["date"], outputs: ["dateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34232
|
+
}
|
|
34233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, decorators: [{
|
|
34234
|
+
type: Component,
|
|
34235
|
+
args: [{ selector: 'gn-ui-form-field-resource-updated', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [DatePickerComponent], template: "<gn-ui-date-picker\n [date]=\"control.value\"\n (dateChange)=\"control.setValue($event)\"\n></gn-ui-date-picker>\n" }]
|
|
34236
|
+
}], propDecorators: { control: [{
|
|
34237
|
+
type: Input
|
|
34238
|
+
}] } });
|
|
34239
|
+
|
|
33887
34240
|
class FormFieldComponent {
|
|
33888
34241
|
set value(v) {
|
|
33889
34242
|
this.formControl.setValue(v, {
|
|
@@ -33938,8 +34291,17 @@ class FormFieldComponent {
|
|
|
33938
34291
|
get isAbstract() {
|
|
33939
34292
|
return this.model === 'abstract';
|
|
33940
34293
|
}
|
|
34294
|
+
get isLicenses() {
|
|
34295
|
+
return this.model === 'licenses';
|
|
34296
|
+
}
|
|
34297
|
+
get isResourceUpdated() {
|
|
34298
|
+
return this.model === 'resourceUpdated';
|
|
34299
|
+
}
|
|
34300
|
+
get withoutWrapper() {
|
|
34301
|
+
return this.model === 'title' || this.model === 'abstract';
|
|
34302
|
+
}
|
|
33941
34303
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33942
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <
|
|
34304
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldObjectComponent, selector: "gn-ui-form-field-object" }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldTemporalExtentComponent, selector: "gn-ui-form-field-temporal-extent" }, { kind: "component", type: FormFieldFileComponent, selector: "gn-ui-form-field-file", inputs: ["control", "readonly", "invalid", "placeholder"] }, { kind: "component", type: FormFieldArrayComponent, selector: "gn-ui-form-field-array" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33943
34305
|
}
|
|
33944
34306
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
33945
34307
|
type: Component,
|
|
@@ -33949,6 +34311,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33949
34311
|
EditableLabelDirective,
|
|
33950
34312
|
MatIconModule,
|
|
33951
34313
|
MatTooltipModule,
|
|
34314
|
+
FormFieldWrapperComponent,
|
|
34315
|
+
FormFieldLicenseComponent,
|
|
34316
|
+
FormFieldResourceUpdatedComponent,
|
|
33952
34317
|
FormFieldSimpleComponent,
|
|
33953
34318
|
FormFieldRichComponent,
|
|
33954
34319
|
FormFieldObjectComponent,
|
|
@@ -33957,7 +34322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33957
34322
|
FormFieldFileComponent,
|
|
33958
34323
|
FormFieldArrayComponent,
|
|
33959
34324
|
TranslateModule,
|
|
33960
|
-
], template: "<div class=\"flex flex-col h-full\">\n <
|
|
34325
|
+
], template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n" }]
|
|
33961
34326
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
33962
34327
|
type: Input
|
|
33963
34328
|
}], config: [{
|
|
@@ -34315,7 +34680,7 @@ class DefaultRouterModule {
|
|
|
34315
34680
|
};
|
|
34316
34681
|
}
|
|
34317
34682
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
34318
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$
|
|
34683
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$3.StoreRouterConnectingModule, i1$8.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
34319
34684
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
34320
34685
|
RouterFacade,
|
|
34321
34686
|
{
|
|
@@ -34358,5 +34723,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
34358
34723
|
* Generated bundle index. Do not edit.
|
|
34359
34724
|
*/
|
|
34360
34725
|
|
|
34361
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
34726
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
34362
34727
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|