geonetwork-ui 2.3.0-dev.61774f7d → 2.3.0-dev.6b7e19cb
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/components/wizard-field/wizard-field.component.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +16 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +73 -20
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +29 -8
- 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/feature/search/src/index.mjs +2 -1
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +1 -1
- package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -2
- 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 +77 -15
- 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/text-input/text-input.component.mjs +5 -3
- 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 +1336 -864
- 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/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +10 -5
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.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/feature/search/src/index.d.ts +1 -0
- package/libs/feature/search/src/index.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts +3 -3
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/api-card/api-card.component.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 +12 -3
- 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/text-input/text-input.component.d.ts +2 -1
- package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
- 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/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +7 -0
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +32 -18
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +72 -17
- package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +1 -0
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +26 -8
- 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/feature/search/src/index.ts +1 -0
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -2
- package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +2 -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 +26 -10
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +87 -8
- 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/text-input/text-input.component.html +1 -0
- package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +1 -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 +8 -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';
|
|
@@ -42,30 +42,33 @@ import TileLayer from 'ol/layer/Tile';
|
|
|
42
42
|
import XYZ from 'ol/source/XYZ';
|
|
43
43
|
import { bbox } from 'ol/loadingstrategy';
|
|
44
44
|
import WMTS from 'ol/source/WMTS';
|
|
45
|
-
import
|
|
45
|
+
import OGCVectorTile from 'ol/source/OGCVectorTile.js';
|
|
46
|
+
import { MVT, WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
47
|
+
import VectorTileLayer from 'ol/layer/VectorTile';
|
|
48
|
+
import OGCMapTile from 'ol/source/OGCMapTile.js';
|
|
49
|
+
import * as i2$4 from '@angular/material/tabs';
|
|
46
50
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
47
|
-
import * as i1$4 from '@angular/cdk/overlay';
|
|
48
|
-
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
49
51
|
import * as i2$1 from '@angular/forms';
|
|
50
52
|
import { UntypedFormControl, FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
51
|
-
import * as i5 from 'ngx-chips';
|
|
52
|
-
import { TagInputModule } from 'ngx-chips';
|
|
53
53
|
import * as i4 from '@angular/material/autocomplete';
|
|
54
54
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
55
|
-
import * as i5
|
|
55
|
+
import * as i5 from '@angular/material/core';
|
|
56
56
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
57
|
+
import * as i1$4 from '@angular/material/checkbox';
|
|
58
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
59
|
+
import * as i5$1 from 'ngx-chips';
|
|
60
|
+
import { TagInputModule } from 'ngx-chips';
|
|
61
|
+
import * as i2$2 from '@angular/material/tooltip';
|
|
62
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
63
|
+
import * as i2$3 from '@angular/material/datepicker';
|
|
64
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
57
65
|
import * as i3 from 'ngx-dropzone';
|
|
58
66
|
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
59
|
-
import * as i1$5 from '@angular/
|
|
67
|
+
import * as i1$5 from '@angular/cdk/overlay';
|
|
68
|
+
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
69
|
+
import * as i1$6 from '@angular/material/progress-spinner';
|
|
60
70
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
61
|
-
import * as i1$6 from '@angular/material/checkbox';
|
|
62
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
63
|
-
import * as i3$1 from '@angular/material/tooltip';
|
|
64
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
65
|
-
import * as i2$2 from '@angular/material/form-field';
|
|
66
71
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
67
|
-
import * as i3$2 from '@angular/material/datepicker';
|
|
68
|
-
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
69
72
|
import { MatInputModule } from '@angular/material/input';
|
|
70
73
|
import * as i1$7 from '@angular/router';
|
|
71
74
|
import { RouterModule, RouterLink, RouteReuseStrategy } from '@angular/router';
|
|
@@ -85,18 +88,17 @@ import { trigger, transition, animate, keyframes, style } from '@angular/animati
|
|
|
85
88
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
86
89
|
import * as i4$1 from '@angular/cdk/scrolling';
|
|
87
90
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
88
|
-
import * as i2$
|
|
91
|
+
import * as i2$5 from '@angular/material/sort';
|
|
89
92
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
90
93
|
import * as i1$9 from '@angular/material/table';
|
|
91
94
|
import { MatTableModule } from '@angular/material/table';
|
|
92
|
-
import * as i3$
|
|
95
|
+
import * as i3$1 from 'ng-table-virtual-scroll';
|
|
93
96
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
94
97
|
import * as Papa from 'papaparse';
|
|
95
98
|
import parseDate from 'date-fns/parse';
|
|
96
99
|
import parseIsoDate from 'date-fns/parseISO';
|
|
97
|
-
import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
98
100
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
99
|
-
import * as i3$
|
|
101
|
+
import * as i3$2 from '@ngrx/router-store';
|
|
100
102
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
101
103
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
102
104
|
|
|
@@ -17419,6 +17421,17 @@ var de = {
|
|
|
17419
17421
|
"downloads.format.unknown": "unbekannt",
|
|
17420
17422
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17421
17423
|
dropFile: dropFile$6,
|
|
17424
|
+
"editor.record.form.license": "Lizenz",
|
|
17425
|
+
"editor.record.form.license.cc-by": "",
|
|
17426
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
17427
|
+
"editor.record.form.license.cc-zero": "",
|
|
17428
|
+
"editor.record.form.license.etalab": "",
|
|
17429
|
+
"editor.record.form.license.etalab-v2": "",
|
|
17430
|
+
"editor.record.form.license.odbl": "",
|
|
17431
|
+
"editor.record.form.license.odc-by": "",
|
|
17432
|
+
"editor.record.form.license.pddl": "",
|
|
17433
|
+
"editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
17434
|
+
"editor.record.form.resourceUpdated": "",
|
|
17422
17435
|
"editor.record.loadError.body": "",
|
|
17423
17436
|
"editor.record.loadError.closeMessage": "",
|
|
17424
17437
|
"editor.record.loadError.title": "",
|
|
@@ -17489,6 +17502,7 @@ var de = {
|
|
|
17489
17502
|
"multiselect.filter.placeholder": "Suche",
|
|
17490
17503
|
"nav.back": "Zurück",
|
|
17491
17504
|
next: next$6,
|
|
17505
|
+
"ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
|
|
17492
17506
|
"organisation.filter.placeholder": "Ergebnisse filtern",
|
|
17493
17507
|
"organisation.sort.sortBy": "Sortieren nach:",
|
|
17494
17508
|
"organisations.hits.found": "{hits, plural, =0{Keine Organisation gefunden} other{{hits} von {total} Organisationen angezeigt}}",
|
|
@@ -17553,14 +17567,6 @@ var de = {
|
|
|
17553
17567
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
17554
17568
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
17555
17569
|
"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
17570
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
17565
17571
|
"record.metadata.status": "Status",
|
|
17566
17572
|
"record.metadata.technical": "Technische Informationen",
|
|
@@ -17575,6 +17581,14 @@ var de = {
|
|
|
17575
17581
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
17576
17582
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
17577
17583
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
17584
|
+
"record.metadata.userFeedbacks": "",
|
|
17585
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17586
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17587
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17588
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17589
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17590
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17591
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17578
17592
|
"record.more.details": "Weitere Details",
|
|
17579
17593
|
"record.tab.chart": "Diagramm",
|
|
17580
17594
|
"record.tab.data": "Tabelle",
|
|
@@ -17634,12 +17648,6 @@ var de = {
|
|
|
17634
17648
|
"table.loading.data": "Daten werden geladen...",
|
|
17635
17649
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
17636
17650
|
"table.select.data": "Datenquelle",
|
|
17637
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
17638
|
-
"timeSincePipe.minutesAgo": "",
|
|
17639
|
-
"timeSincePipe.hoursAgo": "",
|
|
17640
|
-
"timeSincePipe.daysAgo": "",
|
|
17641
|
-
"timeSincePipe.monthsAgo": "",
|
|
17642
|
-
"timeSincePipe.yearsAgo": "",
|
|
17643
17651
|
"tooltip.html.copy": "HTML kopieren",
|
|
17644
17652
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
17645
17653
|
"tooltip.url.copy": "URL kopieren",
|
|
@@ -17804,6 +17812,17 @@ var en = {
|
|
|
17804
17812
|
"downloads.format.unknown": "unknown",
|
|
17805
17813
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17806
17814
|
dropFile: dropFile$5,
|
|
17815
|
+
"editor.record.form.license": "License",
|
|
17816
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17817
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17818
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
17819
|
+
"editor.record.form.license.etalab": "Open Licence (Etalab)",
|
|
17820
|
+
"editor.record.form.license.etalab-v2": "Open Licence v2.0 (Etalab)",
|
|
17821
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
17822
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17823
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17824
|
+
"editor.record.form.license.unknown": "Unknown or absent",
|
|
17825
|
+
"editor.record.form.resourceUpdated": "Last update date",
|
|
17807
17826
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17808
17827
|
"editor.record.loadError.closeMessage": "Understood",
|
|
17809
17828
|
"editor.record.loadError.title": "Error loading record",
|
|
@@ -17874,6 +17893,7 @@ var en = {
|
|
|
17874
17893
|
"multiselect.filter.placeholder": "Search",
|
|
17875
17894
|
"nav.back": "Back",
|
|
17876
17895
|
next: next$5,
|
|
17896
|
+
"ogc.unreachable.unknown": "The service could not be reached",
|
|
17877
17897
|
"organisation.filter.placeholder": "Filter results",
|
|
17878
17898
|
"organisation.sort.sortBy": "Sort by:",
|
|
17879
17899
|
"organisations.hits.found": "{hits, plural, =0{No organizations found} other{{hits} out of {total} organizations shown}}",
|
|
@@ -17938,14 +17958,6 @@ var en = {
|
|
|
17938
17958
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
17939
17959
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17940
17960
|
"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
17961
|
"record.metadata.sheet": "Original metadata",
|
|
17950
17962
|
"record.metadata.status": "Status",
|
|
17951
17963
|
"record.metadata.technical": "Technical information",
|
|
@@ -17960,6 +17972,14 @@ var en = {
|
|
|
17960
17972
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17961
17973
|
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17962
17974
|
"record.metadata.usage": "License and Conditions",
|
|
17975
|
+
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
17976
|
+
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
17977
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
17978
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
17979
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
17980
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
17981
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
17982
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17963
17983
|
"record.more.details": "Read more",
|
|
17964
17984
|
"record.tab.chart": "Chart",
|
|
17965
17985
|
"record.tab.data": "Table",
|
|
@@ -18019,12 +18039,6 @@ var en = {
|
|
|
18019
18039
|
"table.loading.data": "Loading data...",
|
|
18020
18040
|
"table.object.count": "objects in this dataset",
|
|
18021
18041
|
"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
18042
|
"tooltip.html.copy": "Copy HTML",
|
|
18029
18043
|
"tooltip.id.copy": "Copy unique identifier",
|
|
18030
18044
|
"tooltip.url.copy": "Copy URL",
|
|
@@ -18189,6 +18203,17 @@ var es = {
|
|
|
18189
18203
|
"downloads.format.unknown": "",
|
|
18190
18204
|
"downloads.wfs.featuretype.not.found": "",
|
|
18191
18205
|
dropFile: dropFile$4,
|
|
18206
|
+
"editor.record.form.license": "",
|
|
18207
|
+
"editor.record.form.license.cc-by": "",
|
|
18208
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18209
|
+
"editor.record.form.license.cc-zero": "",
|
|
18210
|
+
"editor.record.form.license.etalab": "",
|
|
18211
|
+
"editor.record.form.license.etalab-v2": "",
|
|
18212
|
+
"editor.record.form.license.odbl": "",
|
|
18213
|
+
"editor.record.form.license.odc-by": "",
|
|
18214
|
+
"editor.record.form.license.pddl": "",
|
|
18215
|
+
"editor.record.form.license.unknown": "",
|
|
18216
|
+
"editor.record.form.resourceUpdated": "",
|
|
18192
18217
|
"editor.record.loadError.body": "",
|
|
18193
18218
|
"editor.record.loadError.closeMessage": "",
|
|
18194
18219
|
"editor.record.loadError.title": "",
|
|
@@ -18259,6 +18284,7 @@ var es = {
|
|
|
18259
18284
|
"multiselect.filter.placeholder": "",
|
|
18260
18285
|
"nav.back": "",
|
|
18261
18286
|
next: next$4,
|
|
18287
|
+
"ogc.unreachable.unknown": "",
|
|
18262
18288
|
"organisation.filter.placeholder": "",
|
|
18263
18289
|
"organisation.sort.sortBy": "",
|
|
18264
18290
|
"organisations.hits.found": "",
|
|
@@ -18323,14 +18349,6 @@ var es = {
|
|
|
18323
18349
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
18324
18350
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18325
18351
|
"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
18352
|
"record.metadata.sheet": "",
|
|
18335
18353
|
"record.metadata.status": "",
|
|
18336
18354
|
"record.metadata.technical": "",
|
|
@@ -18345,6 +18363,14 @@ var es = {
|
|
|
18345
18363
|
"record.metadata.updateFrequency": "",
|
|
18346
18364
|
"record.metadata.updatedOn": "",
|
|
18347
18365
|
"record.metadata.usage": "",
|
|
18366
|
+
"record.metadata.userFeedbacks": "",
|
|
18367
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18368
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18369
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18370
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18371
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18372
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18373
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18348
18374
|
"record.more.details": "",
|
|
18349
18375
|
"record.tab.chart": "",
|
|
18350
18376
|
"record.tab.data": "",
|
|
@@ -18404,12 +18430,6 @@ var es = {
|
|
|
18404
18430
|
"table.loading.data": "",
|
|
18405
18431
|
"table.object.count": "",
|
|
18406
18432
|
"table.select.data": "",
|
|
18407
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
18408
|
-
"timeSincePipe.minutesAgo": "",
|
|
18409
|
-
"timeSincePipe.hoursAgo": "",
|
|
18410
|
-
"timeSincePipe.daysAgo": "",
|
|
18411
|
-
"timeSincePipe.monthsAgo": "",
|
|
18412
|
-
"timeSincePipe.yearsAgo": "",
|
|
18413
18433
|
"tooltip.html.copy": "",
|
|
18414
18434
|
"tooltip.id.copy": "",
|
|
18415
18435
|
"tooltip.url.copy": "",
|
|
@@ -18574,6 +18594,17 @@ var fr = {
|
|
|
18574
18594
|
"downloads.format.unknown": "inconnu",
|
|
18575
18595
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18576
18596
|
dropFile: dropFile$3,
|
|
18597
|
+
"editor.record.form.license": "Licence",
|
|
18598
|
+
"editor.record.form.license.cc-by": "",
|
|
18599
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18600
|
+
"editor.record.form.license.cc-zero": "",
|
|
18601
|
+
"editor.record.form.license.etalab": "Licence Ouverte (Etalab)",
|
|
18602
|
+
"editor.record.form.license.etalab-v2": "Licence Ouverte v2.0 (Etalab)",
|
|
18603
|
+
"editor.record.form.license.odbl": "",
|
|
18604
|
+
"editor.record.form.license.odc-by": "",
|
|
18605
|
+
"editor.record.form.license.pddl": "",
|
|
18606
|
+
"editor.record.form.license.unknown": "Non-reconnue ou absente",
|
|
18607
|
+
"editor.record.form.resourceUpdated": "Date de dernière révision",
|
|
18577
18608
|
"editor.record.loadError.body": "",
|
|
18578
18609
|
"editor.record.loadError.closeMessage": "",
|
|
18579
18610
|
"editor.record.loadError.title": "",
|
|
@@ -18644,6 +18675,7 @@ var fr = {
|
|
|
18644
18675
|
"multiselect.filter.placeholder": "Rechercher",
|
|
18645
18676
|
"nav.back": "Retour",
|
|
18646
18677
|
next: next$3,
|
|
18678
|
+
"ogc.unreachable.unknown": "Le service n'est pas accessible",
|
|
18647
18679
|
"organisation.filter.placeholder": "Filtrer les résultats",
|
|
18648
18680
|
"organisation.sort.sortBy": "Trier par :",
|
|
18649
18681
|
"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 +18740,6 @@ var fr = {
|
|
|
18708
18740
|
"record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
|
|
18709
18741
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
18710
18742
|
"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
18743
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
18720
18744
|
"record.metadata.status": "Statut",
|
|
18721
18745
|
"record.metadata.technical": "Informations techniques",
|
|
@@ -18730,6 +18754,14 @@ var fr = {
|
|
|
18730
18754
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
18731
18755
|
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
18732
18756
|
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
18757
|
+
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18758
|
+
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18759
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18760
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18761
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18762
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18763
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18764
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18733
18765
|
"record.more.details": "Détails",
|
|
18734
18766
|
"record.tab.chart": "Graphique",
|
|
18735
18767
|
"record.tab.data": "Tableau",
|
|
@@ -18789,12 +18821,6 @@ var fr = {
|
|
|
18789
18821
|
"table.loading.data": "Chargement des données...",
|
|
18790
18822
|
"table.object.count": "enregistrements dans ces données",
|
|
18791
18823
|
"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
18824
|
"tooltip.html.copy": "Copier le HTML",
|
|
18799
18825
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
18800
18826
|
"tooltip.url.copy": "Copier l'URL",
|
|
@@ -18959,6 +18985,17 @@ var it = {
|
|
|
18959
18985
|
"downloads.format.unknown": "sconosciuto",
|
|
18960
18986
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
18961
18987
|
dropFile: dropFile$2,
|
|
18988
|
+
"editor.record.form.license": "Licenza",
|
|
18989
|
+
"editor.record.form.license.cc-by": "",
|
|
18990
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18991
|
+
"editor.record.form.license.cc-zero": "",
|
|
18992
|
+
"editor.record.form.license.etalab": "Licenza aperta (Etalab)",
|
|
18993
|
+
"editor.record.form.license.etalab-v2": "Licenza aperta v2.0 (Etalab)",
|
|
18994
|
+
"editor.record.form.license.odbl": "",
|
|
18995
|
+
"editor.record.form.license.odc-by": "",
|
|
18996
|
+
"editor.record.form.license.pddl": "",
|
|
18997
|
+
"editor.record.form.license.unknown": "Non riconosciuta o assente",
|
|
18998
|
+
"editor.record.form.resourceUpdated": "",
|
|
18962
18999
|
"editor.record.loadError.body": "",
|
|
18963
19000
|
"editor.record.loadError.closeMessage": "",
|
|
18964
19001
|
"editor.record.loadError.title": "",
|
|
@@ -19029,6 +19066,7 @@ var it = {
|
|
|
19029
19066
|
"multiselect.filter.placeholder": "Cerca",
|
|
19030
19067
|
"nav.back": "Indietro",
|
|
19031
19068
|
next: next$2,
|
|
19069
|
+
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
19032
19070
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
19033
19071
|
"organisation.sort.sortBy": "Ordina per:",
|
|
19034
19072
|
"organisations.hits.found": "{hits, plural, =0{Nessuna organizzazione trovata} one{1 organizzazione su {total} visualizzata} other{{hits} organizzazioni su {total} visualizzate}}",
|
|
@@ -19093,14 +19131,6 @@ var it = {
|
|
|
19093
19131
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
19094
19132
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
19095
19133
|
"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
19134
|
"record.metadata.sheet": "Origine del metadata",
|
|
19105
19135
|
"record.metadata.status": "Stato",
|
|
19106
19136
|
"record.metadata.technical": "Informazioni tecniche",
|
|
@@ -19115,6 +19145,14 @@ var it = {
|
|
|
19115
19145
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
19116
19146
|
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
19117
19147
|
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
19148
|
+
"record.metadata.userFeedbacks": "",
|
|
19149
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19150
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19151
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19152
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19153
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19154
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19155
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19118
19156
|
"record.more.details": "Dettagli",
|
|
19119
19157
|
"record.tab.chart": "Grafico",
|
|
19120
19158
|
"record.tab.data": "Tabella",
|
|
@@ -19174,12 +19212,6 @@ var it = {
|
|
|
19174
19212
|
"table.loading.data": "Caricamento dei dati...",
|
|
19175
19213
|
"table.object.count": "record in questi dati",
|
|
19176
19214
|
"table.select.data": "Sorgente dati",
|
|
19177
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19178
|
-
"timeSincePipe.minutesAgo": "",
|
|
19179
|
-
"timeSincePipe.hoursAgo": "",
|
|
19180
|
-
"timeSincePipe.daysAgo": "",
|
|
19181
|
-
"timeSincePipe.monthsAgo": "",
|
|
19182
|
-
"timeSincePipe.yearsAgo": "",
|
|
19183
19215
|
"tooltip.html.copy": "Copiare il HTML",
|
|
19184
19216
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
19185
19217
|
"tooltip.url.copy": "Copiare l'URL",
|
|
@@ -19344,6 +19376,17 @@ var nl = {
|
|
|
19344
19376
|
"downloads.format.unknown": "",
|
|
19345
19377
|
"downloads.wfs.featuretype.not.found": "",
|
|
19346
19378
|
dropFile: dropFile$1,
|
|
19379
|
+
"editor.record.form.license": "",
|
|
19380
|
+
"editor.record.form.license.cc-by": "",
|
|
19381
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19382
|
+
"editor.record.form.license.cc-zero": "",
|
|
19383
|
+
"editor.record.form.license.etalab": "",
|
|
19384
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19385
|
+
"editor.record.form.license.odbl": "",
|
|
19386
|
+
"editor.record.form.license.odc-by": "",
|
|
19387
|
+
"editor.record.form.license.pddl": "",
|
|
19388
|
+
"editor.record.form.license.unknown": "",
|
|
19389
|
+
"editor.record.form.resourceUpdated": "",
|
|
19347
19390
|
"editor.record.loadError.body": "",
|
|
19348
19391
|
"editor.record.loadError.closeMessage": "",
|
|
19349
19392
|
"editor.record.loadError.title": "",
|
|
@@ -19414,6 +19457,7 @@ var nl = {
|
|
|
19414
19457
|
"multiselect.filter.placeholder": "",
|
|
19415
19458
|
"nav.back": "",
|
|
19416
19459
|
next: next$1,
|
|
19460
|
+
"ogc.unreachable.unknown": "",
|
|
19417
19461
|
"organisation.filter.placeholder": "",
|
|
19418
19462
|
"organisation.sort.sortBy": "",
|
|
19419
19463
|
"organisations.hits.found": "",
|
|
@@ -19478,14 +19522,6 @@ var nl = {
|
|
|
19478
19522
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19479
19523
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19480
19524
|
"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
19525
|
"record.metadata.sheet": "",
|
|
19490
19526
|
"record.metadata.status": "",
|
|
19491
19527
|
"record.metadata.technical": "",
|
|
@@ -19500,6 +19536,14 @@ var nl = {
|
|
|
19500
19536
|
"record.metadata.updateFrequency": "",
|
|
19501
19537
|
"record.metadata.updatedOn": "",
|
|
19502
19538
|
"record.metadata.usage": "",
|
|
19539
|
+
"record.metadata.userFeedbacks": "",
|
|
19540
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19541
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19542
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19543
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19544
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19545
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19546
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19503
19547
|
"record.more.details": "",
|
|
19504
19548
|
"record.tab.chart": "",
|
|
19505
19549
|
"record.tab.data": "",
|
|
@@ -19559,12 +19603,6 @@ var nl = {
|
|
|
19559
19603
|
"table.loading.data": "",
|
|
19560
19604
|
"table.object.count": "",
|
|
19561
19605
|
"table.select.data": "",
|
|
19562
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19563
|
-
"timeSincePipe.minutesAgo": "",
|
|
19564
|
-
"timeSincePipe.hoursAgo": "",
|
|
19565
|
-
"timeSincePipe.daysAgo": "",
|
|
19566
|
-
"timeSincePipe.monthsAgo": "",
|
|
19567
|
-
"timeSincePipe.yearsAgo": "",
|
|
19568
19606
|
"tooltip.html.copy": "",
|
|
19569
19607
|
"tooltip.id.copy": "",
|
|
19570
19608
|
"tooltip.url.copy": "",
|
|
@@ -19729,6 +19767,17 @@ var pt = {
|
|
|
19729
19767
|
"downloads.format.unknown": "",
|
|
19730
19768
|
"downloads.wfs.featuretype.not.found": "",
|
|
19731
19769
|
dropFile: dropFile,
|
|
19770
|
+
"editor.record.form.license": "",
|
|
19771
|
+
"editor.record.form.license.cc-by": "",
|
|
19772
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19773
|
+
"editor.record.form.license.cc-zero": "",
|
|
19774
|
+
"editor.record.form.license.etalab": "",
|
|
19775
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19776
|
+
"editor.record.form.license.odbl": "",
|
|
19777
|
+
"editor.record.form.license.odc-by": "",
|
|
19778
|
+
"editor.record.form.license.pddl": "",
|
|
19779
|
+
"editor.record.form.license.unknown": "",
|
|
19780
|
+
"editor.record.form.resourceUpdated": "",
|
|
19732
19781
|
"editor.record.loadError.body": "",
|
|
19733
19782
|
"editor.record.loadError.closeMessage": "",
|
|
19734
19783
|
"editor.record.loadError.title": "",
|
|
@@ -19799,6 +19848,7 @@ var pt = {
|
|
|
19799
19848
|
"multiselect.filter.placeholder": "",
|
|
19800
19849
|
"nav.back": "",
|
|
19801
19850
|
next: next,
|
|
19851
|
+
"ogc.unreachable.unknown": "",
|
|
19802
19852
|
"organisation.filter.placeholder": "",
|
|
19803
19853
|
"organisation.sort.sortBy": "",
|
|
19804
19854
|
"organisations.hits.found": "",
|
|
@@ -19863,14 +19913,6 @@ var pt = {
|
|
|
19863
19913
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19864
19914
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19865
19915
|
"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
19916
|
"record.metadata.sheet": "",
|
|
19875
19917
|
"record.metadata.status": "",
|
|
19876
19918
|
"record.metadata.technical": "",
|
|
@@ -19885,6 +19927,14 @@ var pt = {
|
|
|
19885
19927
|
"record.metadata.updateFrequency": "",
|
|
19886
19928
|
"record.metadata.updatedOn": "",
|
|
19887
19929
|
"record.metadata.usage": "",
|
|
19930
|
+
"record.metadata.userFeedbacks": "",
|
|
19931
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19932
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19933
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19934
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19935
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19936
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19937
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19888
19938
|
"record.more.details": "",
|
|
19889
19939
|
"record.tab.chart": "",
|
|
19890
19940
|
"record.tab.data": "",
|
|
@@ -19944,12 +19994,6 @@ var pt = {
|
|
|
19944
19994
|
"table.loading.data": "",
|
|
19945
19995
|
"table.object.count": "",
|
|
19946
19996
|
"table.select.data": "",
|
|
19947
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19948
|
-
"timeSincePipe.minutesAgo": "",
|
|
19949
|
-
"timeSincePipe.hoursAgo": "",
|
|
19950
|
-
"timeSincePipe.daysAgo": "",
|
|
19951
|
-
"timeSincePipe.monthsAgo": "",
|
|
19952
|
-
"timeSincePipe.yearsAgo": "",
|
|
19953
19997
|
"tooltip.html.copy": "",
|
|
19954
19998
|
"tooltip.id.copy": "",
|
|
19955
19999
|
"tooltip.url.copy": "",
|
|
@@ -22296,6 +22340,27 @@ const FORMATS = {
|
|
|
22296
22340
|
color: '#de630b',
|
|
22297
22341
|
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
22298
22342
|
},
|
|
22343
|
+
html: {
|
|
22344
|
+
extensions: ['html', 'htm'],
|
|
22345
|
+
priority: 12,
|
|
22346
|
+
color: '#f2bb3a',
|
|
22347
|
+
mimeTypes: ['text/html'],
|
|
22348
|
+
},
|
|
22349
|
+
fgb: {
|
|
22350
|
+
extensions: ['fgb', 'flatgeobuf'],
|
|
22351
|
+
priority: 13,
|
|
22352
|
+
color: '#f2bb3a',
|
|
22353
|
+
mimeTypes: ['application/flatgeobuf'],
|
|
22354
|
+
},
|
|
22355
|
+
jsonfg: {
|
|
22356
|
+
extensions: ['jsonfg', 'jsonfgc'],
|
|
22357
|
+
priority: 14,
|
|
22358
|
+
color: '#f2bb3a',
|
|
22359
|
+
mimeTypes: [
|
|
22360
|
+
'application/vnd.ogc.fg+json',
|
|
22361
|
+
'application/vnd.ogc.fg+json;compatibility=geojson',
|
|
22362
|
+
],
|
|
22363
|
+
},
|
|
22299
22364
|
};
|
|
22300
22365
|
function getFormatPriority(linkFormat) {
|
|
22301
22366
|
for (const format in FORMATS) {
|
|
@@ -22427,7 +22492,7 @@ class LinkClassifierService {
|
|
|
22427
22492
|
case 'wmts':
|
|
22428
22493
|
return [LinkUsage.API, LinkUsage.MAP_API];
|
|
22429
22494
|
case 'ogcFeatures':
|
|
22430
|
-
return [LinkUsage.API];
|
|
22495
|
+
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
22431
22496
|
default:
|
|
22432
22497
|
return [LinkUsage.UNKNOWN];
|
|
22433
22498
|
}
|
|
@@ -23728,13 +23793,30 @@ class MapContextService {
|
|
|
23728
23793
|
const style = this.styleService.styles.default;
|
|
23729
23794
|
switch (type) {
|
|
23730
23795
|
case MapContextLayerTypeEnum.OGCAPI:
|
|
23731
|
-
|
|
23732
|
-
|
|
23733
|
-
|
|
23734
|
-
|
|
23735
|
-
|
|
23736
|
-
|
|
23737
|
-
|
|
23796
|
+
if (layerModel.layerType === 'vectorTiles') {
|
|
23797
|
+
return new VectorTileLayer({
|
|
23798
|
+
source: new OGCVectorTile({
|
|
23799
|
+
url: layerModel.url,
|
|
23800
|
+
format: new MVT(),
|
|
23801
|
+
}),
|
|
23802
|
+
});
|
|
23803
|
+
}
|
|
23804
|
+
else if (layerModel.layerType === 'mapTiles') {
|
|
23805
|
+
return new TileLayer({
|
|
23806
|
+
source: new OGCMapTile({
|
|
23807
|
+
url: layerModel.url,
|
|
23808
|
+
}),
|
|
23809
|
+
});
|
|
23810
|
+
}
|
|
23811
|
+
else {
|
|
23812
|
+
return new VectorLayer({
|
|
23813
|
+
source: new VectorSource({
|
|
23814
|
+
format: new GeoJSON(),
|
|
23815
|
+
url: layerModel.url,
|
|
23816
|
+
}),
|
|
23817
|
+
style,
|
|
23818
|
+
});
|
|
23819
|
+
}
|
|
23738
23820
|
case MapContextLayerTypeEnum.XYZ:
|
|
23739
23821
|
return new TileLayer({
|
|
23740
23822
|
source: new XYZ({
|
|
@@ -23973,6 +24055,173 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23973
24055
|
type: Input
|
|
23974
24056
|
}] } });
|
|
23975
24057
|
|
|
24058
|
+
class PopupAlertComponent {
|
|
24059
|
+
constructor(changeDetector) {
|
|
24060
|
+
this.changeDetector = changeDetector;
|
|
24061
|
+
this.type = 'info';
|
|
24062
|
+
this.position = 'top';
|
|
24063
|
+
this.expanded = false;
|
|
24064
|
+
this.timeout = null;
|
|
24065
|
+
}
|
|
24066
|
+
get showDuration() {
|
|
24067
|
+
const chars = this.content.nativeElement.innerHTML.length;
|
|
24068
|
+
return Math.max(3000, chars * 20);
|
|
24069
|
+
}
|
|
24070
|
+
ngOnInit() {
|
|
24071
|
+
this.expandAndClose();
|
|
24072
|
+
}
|
|
24073
|
+
expand() {
|
|
24074
|
+
this.expanded = true;
|
|
24075
|
+
this.changeDetector.detectChanges();
|
|
24076
|
+
clearTimeout(this.timeout);
|
|
24077
|
+
}
|
|
24078
|
+
expandAndClose() {
|
|
24079
|
+
this.expanded = true;
|
|
24080
|
+
this.changeDetector.detectChanges();
|
|
24081
|
+
clearTimeout(this.timeout);
|
|
24082
|
+
this.timeout = setTimeout(() => {
|
|
24083
|
+
this.expanded = false;
|
|
24084
|
+
this.changeDetector.detectChanges();
|
|
24085
|
+
}, this.showDuration);
|
|
24086
|
+
}
|
|
24087
|
+
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 }); }
|
|
24088
|
+
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 }); }
|
|
24089
|
+
}
|
|
24090
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, decorators: [{
|
|
24091
|
+
type: Component,
|
|
24092
|
+
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"] }]
|
|
24093
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
|
|
24094
|
+
type: Input
|
|
24095
|
+
}], type: [{
|
|
24096
|
+
type: Input
|
|
24097
|
+
}], position: [{
|
|
24098
|
+
type: Input
|
|
24099
|
+
}], content: [{
|
|
24100
|
+
type: ViewChild,
|
|
24101
|
+
args: ['content']
|
|
24102
|
+
}] } });
|
|
24103
|
+
|
|
24104
|
+
class AutocompleteComponent {
|
|
24105
|
+
constructor(cdRef) {
|
|
24106
|
+
this.cdRef = cdRef;
|
|
24107
|
+
this.clearOnSelection = false;
|
|
24108
|
+
this.autoFocus = false;
|
|
24109
|
+
this.itemSelected = new EventEmitter();
|
|
24110
|
+
this.inputSubmitted = new EventEmitter();
|
|
24111
|
+
this.inputCleared = new EventEmitter();
|
|
24112
|
+
this.control = new UntypedFormControl();
|
|
24113
|
+
this.subscription = new Subscription();
|
|
24114
|
+
this.cancelEnter = true;
|
|
24115
|
+
this.selectionSubject = new ReplaySubject(1);
|
|
24116
|
+
this.lastInputValue$ = new ReplaySubject(1);
|
|
24117
|
+
this.error = null;
|
|
24118
|
+
this.displayWithFn = (item) => item;
|
|
24119
|
+
}
|
|
24120
|
+
ngOnChanges(changes) {
|
|
24121
|
+
const { value } = changes;
|
|
24122
|
+
if (value) {
|
|
24123
|
+
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24124
|
+
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24125
|
+
if (previousTextValue !== currentTextValue) {
|
|
24126
|
+
this.updateInputValue(value.currentValue);
|
|
24127
|
+
}
|
|
24128
|
+
}
|
|
24129
|
+
}
|
|
24130
|
+
ngOnInit() {
|
|
24131
|
+
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) => {
|
|
24132
|
+
this.error = error.message;
|
|
24133
|
+
return of([]);
|
|
24134
|
+
}), finalize(() => (this.searching = false)));
|
|
24135
|
+
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24136
|
+
if (any !== '') {
|
|
24137
|
+
this.cancelEnter = false;
|
|
24138
|
+
}
|
|
24139
|
+
});
|
|
24140
|
+
this.control.valueChanges
|
|
24141
|
+
.pipe(filter((value) => typeof value === 'string'))
|
|
24142
|
+
.subscribe(this.lastInputValue$);
|
|
24143
|
+
}
|
|
24144
|
+
ngAfterViewInit() {
|
|
24145
|
+
this.autocomplete.optionSelected.subscribe(this.selectionSubject);
|
|
24146
|
+
if (this.autoFocus) {
|
|
24147
|
+
this.inputRef.nativeElement.focus();
|
|
24148
|
+
this.cdRef.detectChanges();
|
|
24149
|
+
}
|
|
24150
|
+
}
|
|
24151
|
+
ngOnDestroy() {
|
|
24152
|
+
this.subscription.unsubscribe();
|
|
24153
|
+
}
|
|
24154
|
+
updateInputValue(value) {
|
|
24155
|
+
if (value) {
|
|
24156
|
+
this.control.setValue(value);
|
|
24157
|
+
}
|
|
24158
|
+
if (this.inputRef) {
|
|
24159
|
+
this.inputRef.nativeElement.value = value?.title || '';
|
|
24160
|
+
}
|
|
24161
|
+
}
|
|
24162
|
+
clear() {
|
|
24163
|
+
this.inputRef.nativeElement.value = '';
|
|
24164
|
+
this.inputCleared.emit();
|
|
24165
|
+
this.selectionSubject
|
|
24166
|
+
.pipe(take(1))
|
|
24167
|
+
.subscribe((selection) => selection && selection.option.deselect());
|
|
24168
|
+
this.inputRef.nativeElement.focus();
|
|
24169
|
+
this.triggerRef.closePanel();
|
|
24170
|
+
}
|
|
24171
|
+
handleEnter(any) {
|
|
24172
|
+
if (!this.cancelEnter) {
|
|
24173
|
+
this.inputSubmitted.emit(any);
|
|
24174
|
+
this.triggerRef.closePanel();
|
|
24175
|
+
}
|
|
24176
|
+
}
|
|
24177
|
+
handleClickSearch() {
|
|
24178
|
+
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24179
|
+
this.triggerRef.closePanel();
|
|
24180
|
+
}
|
|
24181
|
+
handleSelection(event) {
|
|
24182
|
+
this.cancelEnter = true;
|
|
24183
|
+
this.itemSelected.emit(event.option.value);
|
|
24184
|
+
if (this.clearOnSelection) {
|
|
24185
|
+
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24186
|
+
this.inputRef.nativeElement.value = any;
|
|
24187
|
+
});
|
|
24188
|
+
}
|
|
24189
|
+
}
|
|
24190
|
+
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 }); }
|
|
24191
|
+
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 }); }
|
|
24192
|
+
}
|
|
24193
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
24194
|
+
type: Component,
|
|
24195
|
+
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"] }]
|
|
24196
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
24197
|
+
type: Input
|
|
24198
|
+
}], action: [{
|
|
24199
|
+
type: Input
|
|
24200
|
+
}], value: [{
|
|
24201
|
+
type: Input
|
|
24202
|
+
}], clearOnSelection: [{
|
|
24203
|
+
type: Input
|
|
24204
|
+
}], autoFocus: [{
|
|
24205
|
+
type: Input
|
|
24206
|
+
}], itemSelected: [{
|
|
24207
|
+
type: Output
|
|
24208
|
+
}], inputSubmitted: [{
|
|
24209
|
+
type: Output
|
|
24210
|
+
}], inputCleared: [{
|
|
24211
|
+
type: Output
|
|
24212
|
+
}], triggerRef: [{
|
|
24213
|
+
type: ViewChild,
|
|
24214
|
+
args: [MatAutocompleteTrigger]
|
|
24215
|
+
}], autocomplete: [{
|
|
24216
|
+
type: ViewChild,
|
|
24217
|
+
args: [MatAutocomplete]
|
|
24218
|
+
}], inputRef: [{
|
|
24219
|
+
type: ViewChild,
|
|
24220
|
+
args: ['searchInput']
|
|
24221
|
+
}], displayWithFn: [{
|
|
24222
|
+
type: Input
|
|
24223
|
+
}] } });
|
|
24224
|
+
|
|
23976
24225
|
class ButtonComponent {
|
|
23977
24226
|
constructor() {
|
|
23978
24227
|
this.btnClass = 'gn-ui-btn-default';
|
|
@@ -24024,171 +24273,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24024
24273
|
type: Output
|
|
24025
24274
|
}] } });
|
|
24026
24275
|
|
|
24027
|
-
|
|
24028
|
-
class DropdownSelectorComponent {
|
|
24276
|
+
class CheckToggleComponent {
|
|
24029
24277
|
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;
|
|
24278
|
+
this.color = 'primary';
|
|
24279
|
+
this.toggled = new EventEmitter();
|
|
24073
24280
|
}
|
|
24074
|
-
|
|
24075
|
-
this.
|
|
24076
|
-
this.selected = choice.value;
|
|
24077
|
-
this.selectValue.emit(this.selected);
|
|
24281
|
+
toggle(event) {
|
|
24282
|
+
this.toggled.emit(event);
|
|
24078
24283
|
}
|
|
24079
|
-
|
|
24080
|
-
|
|
24081
|
-
|
|
24082
|
-
|
|
24083
|
-
|
|
24084
|
-
|
|
24085
|
-
|
|
24086
|
-
|
|
24087
|
-
|
|
24088
|
-
|
|
24089
|
-
|
|
24090
|
-
|
|
24284
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24285
|
+
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 }); }
|
|
24286
|
+
}
|
|
24287
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
24288
|
+
type: Component,
|
|
24289
|
+
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" }]
|
|
24290
|
+
}], propDecorators: { title: [{
|
|
24291
|
+
type: Input
|
|
24292
|
+
}], label: [{
|
|
24293
|
+
type: Input
|
|
24294
|
+
}], value: [{
|
|
24295
|
+
type: Input
|
|
24296
|
+
}], color: [{
|
|
24297
|
+
type: Input
|
|
24298
|
+
}], toggled: [{
|
|
24299
|
+
type: Output
|
|
24300
|
+
}] } });
|
|
24301
|
+
|
|
24302
|
+
class CheckboxComponent {
|
|
24303
|
+
constructor() {
|
|
24304
|
+
this.type = 'default';
|
|
24305
|
+
this.checked = false;
|
|
24306
|
+
this.indeterminate = false;
|
|
24307
|
+
this.changed = new EventEmitter();
|
|
24091
24308
|
}
|
|
24092
|
-
|
|
24093
|
-
this.
|
|
24309
|
+
get classList() {
|
|
24310
|
+
return `${this.type}`;
|
|
24094
24311
|
}
|
|
24095
|
-
|
|
24096
|
-
|
|
24312
|
+
handleClick(event) {
|
|
24313
|
+
event.stopPropagation();
|
|
24314
|
+
this.checked = !this.checked;
|
|
24315
|
+
this.changed.emit(this.checked);
|
|
24097
24316
|
}
|
|
24098
|
-
|
|
24099
|
-
|
|
24317
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24318
|
+
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 }); }
|
|
24319
|
+
}
|
|
24320
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
24321
|
+
type: Component,
|
|
24322
|
+
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"] }]
|
|
24323
|
+
}], propDecorators: { type: [{
|
|
24324
|
+
type: Input
|
|
24325
|
+
}], checked: [{
|
|
24326
|
+
type: Input
|
|
24327
|
+
}], indeterminate: [{
|
|
24328
|
+
type: Input
|
|
24329
|
+
}], changed: [{
|
|
24330
|
+
type: Output
|
|
24331
|
+
}] } });
|
|
24332
|
+
|
|
24333
|
+
class ChipsInputComponent {
|
|
24334
|
+
onChange(event) {
|
|
24335
|
+
this.rawChange.next(event);
|
|
24100
24336
|
}
|
|
24101
|
-
|
|
24102
|
-
|
|
24103
|
-
|
|
24104
|
-
|
|
24105
|
-
|
|
24106
|
-
|
|
24107
|
-
|
|
24108
|
-
|
|
24109
|
-
|
|
24110
|
-
|
|
24111
|
-
|
|
24112
|
-
|
|
24113
|
-
|
|
24337
|
+
constructor(http, translate) {
|
|
24338
|
+
this.http = http;
|
|
24339
|
+
this.translate = translate;
|
|
24340
|
+
this.required = false;
|
|
24341
|
+
this.loadOnce = false;
|
|
24342
|
+
this.autocompleteItems = [];
|
|
24343
|
+
this.invalid = false;
|
|
24344
|
+
this.items = [];
|
|
24345
|
+
this.requestAutocompleteItems = (text) => {
|
|
24346
|
+
if (this.url) {
|
|
24347
|
+
if (this.loadOnce && this.loadedItems) {
|
|
24348
|
+
return this.loadedItems;
|
|
24349
|
+
}
|
|
24350
|
+
const url = this.url(text);
|
|
24351
|
+
const lang = LANG_2_TO_3_MAPPER[this.translate.currentLang.slice(0, 2)];
|
|
24352
|
+
return this.http
|
|
24353
|
+
.get(url.replace('${lang}', lang))
|
|
24354
|
+
.pipe(map$1((item) => item.map((i) => i.values[lang])));
|
|
24114
24355
|
}
|
|
24115
|
-
|
|
24116
|
-
this.
|
|
24117
|
-
|
|
24118
|
-
|
|
24119
|
-
|
|
24120
|
-
|
|
24121
|
-
|
|
24122
|
-
this.closeOverlay();
|
|
24123
|
-
}
|
|
24356
|
+
else {
|
|
24357
|
+
return of(this.autocompleteItems || []);
|
|
24358
|
+
}
|
|
24359
|
+
};
|
|
24360
|
+
this.rawChange = new Subject();
|
|
24361
|
+
this.itemsChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24362
|
+
this.subscription = new Subscription();
|
|
24124
24363
|
}
|
|
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();
|
|
24364
|
+
ngOnInit() {
|
|
24365
|
+
if (this.loadOnce) {
|
|
24366
|
+
this.loadedItems = this.requestAutocompleteItems('*').pipe(shareReplay(1));
|
|
24139
24367
|
}
|
|
24368
|
+
this.items = this.selectedItems;
|
|
24369
|
+
this.subscription = this.rawChange
|
|
24370
|
+
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24371
|
+
.subscribe();
|
|
24372
|
+
this.rawChange.next(this.items);
|
|
24140
24373
|
}
|
|
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();
|
|
24374
|
+
ngOnDestroy() {
|
|
24375
|
+
this.subscription.unsubscribe();
|
|
24149
24376
|
}
|
|
24150
|
-
|
|
24151
|
-
|
|
24377
|
+
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 }); }
|
|
24378
|
+
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"] }] }); }
|
|
24379
|
+
}
|
|
24380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, decorators: [{
|
|
24381
|
+
type: Component,
|
|
24382
|
+
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"] }]
|
|
24383
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1$1.TranslateService }]; }, propDecorators: { url: [{
|
|
24384
|
+
type: Input
|
|
24385
|
+
}], placeholder: [{
|
|
24386
|
+
type: Input
|
|
24387
|
+
}], selectedItems: [{
|
|
24388
|
+
type: Input
|
|
24389
|
+
}], required: [{
|
|
24390
|
+
type: Input
|
|
24391
|
+
}], loadOnce: [{
|
|
24392
|
+
type: Input
|
|
24393
|
+
}], autocompleteItems: [{
|
|
24394
|
+
type: Input
|
|
24395
|
+
}], itemsChange: [{
|
|
24396
|
+
type: Output
|
|
24397
|
+
}] } });
|
|
24398
|
+
|
|
24399
|
+
class CopyTextButtonComponent {
|
|
24400
|
+
constructor() {
|
|
24401
|
+
this.displayText = true;
|
|
24402
|
+
this.rows = 1;
|
|
24152
24403
|
}
|
|
24153
|
-
|
|
24154
|
-
|
|
24155
|
-
|
|
24156
|
-
this.onSelectValue(choice);
|
|
24157
|
-
}
|
|
24404
|
+
copyText(event) {
|
|
24405
|
+
navigator.clipboard.writeText(this.text);
|
|
24406
|
+
event.target.blur();
|
|
24158
24407
|
}
|
|
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:
|
|
24408
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24409
|
+
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: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24161
24410
|
}
|
|
24162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24411
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
24163
24412
|
type: Component,
|
|
24164
|
-
args: [{ selector: 'gn-ui-
|
|
24165
|
-
}], propDecorators: {
|
|
24166
|
-
type: Input
|
|
24167
|
-
}], showTitle: [{
|
|
24413
|
+
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" }]
|
|
24414
|
+
}], propDecorators: { text: [{
|
|
24168
24415
|
type: Input
|
|
24169
|
-
}],
|
|
24416
|
+
}], tooltipText: [{
|
|
24170
24417
|
type: Input
|
|
24171
|
-
}],
|
|
24418
|
+
}], displayText: [{
|
|
24172
24419
|
type: Input
|
|
24173
|
-
}],
|
|
24420
|
+
}], rows: [{
|
|
24174
24421
|
type: Input
|
|
24175
|
-
}]
|
|
24422
|
+
}] } });
|
|
24423
|
+
|
|
24424
|
+
class DatePickerComponent {
|
|
24425
|
+
constructor() {
|
|
24426
|
+
this.dateChange = new EventEmitter();
|
|
24427
|
+
}
|
|
24428
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24429
|
+
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$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
|
|
24430
|
+
}
|
|
24431
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
24432
|
+
type: Component,
|
|
24433
|
+
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"] }]
|
|
24434
|
+
}], propDecorators: { date: [{
|
|
24176
24435
|
type: Input
|
|
24177
|
-
}],
|
|
24436
|
+
}], dateChange: [{
|
|
24437
|
+
type: Output
|
|
24438
|
+
}] } });
|
|
24439
|
+
|
|
24440
|
+
class DateRangePickerComponent {
|
|
24441
|
+
startDateSelected(event) {
|
|
24442
|
+
this.startDate = event.value;
|
|
24443
|
+
}
|
|
24444
|
+
endDateSelected(event) {
|
|
24445
|
+
this.endDate = event.value;
|
|
24446
|
+
}
|
|
24447
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24448
|
+
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$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$3.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$3.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
|
|
24449
|
+
}
|
|
24450
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
24451
|
+
type: Component,
|
|
24452
|
+
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"] }]
|
|
24453
|
+
}] });
|
|
24454
|
+
|
|
24455
|
+
const placeholder = 'dropFile';
|
|
24456
|
+
marker('dropFile');
|
|
24457
|
+
class DragAndDropFileInputComponent {
|
|
24458
|
+
constructor() {
|
|
24459
|
+
this.placeholder = placeholder;
|
|
24460
|
+
this.accept = '*';
|
|
24461
|
+
this.fileChange = new EventEmitter();
|
|
24462
|
+
this.selectedFile = null;
|
|
24463
|
+
}
|
|
24464
|
+
get fileName() {
|
|
24465
|
+
return this.selectedFile && this.selectedFile.name;
|
|
24466
|
+
}
|
|
24467
|
+
selectFile(event) {
|
|
24468
|
+
this.selectedFile = event.addedFiles[0];
|
|
24469
|
+
this.fileChange.emit(this.selectedFile);
|
|
24470
|
+
}
|
|
24471
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24472
|
+
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.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
24473
|
+
}
|
|
24474
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
24475
|
+
type: Component,
|
|
24476
|
+
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"] }]
|
|
24477
|
+
}], propDecorators: { placeholder: [{
|
|
24178
24478
|
type: Input
|
|
24179
|
-
}],
|
|
24479
|
+
}], accept: [{
|
|
24180
24480
|
type: Input
|
|
24181
|
-
}],
|
|
24481
|
+
}], fileChange: [{
|
|
24182
24482
|
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
24483
|
}] } });
|
|
24193
24484
|
|
|
24194
24485
|
class DropdownMultiselectComponent {
|
|
@@ -24336,13 +24627,13 @@ class DropdownMultiselectComponent {
|
|
|
24336
24627
|
propagateToDocumentOnly(event);
|
|
24337
24628
|
this.setFocus();
|
|
24338
24629
|
}
|
|
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$
|
|
24630
|
+
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 }); }
|
|
24631
|
+
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
24632
|
}
|
|
24342
24633
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24343
24634
|
type: Component,
|
|
24344
24635
|
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$
|
|
24636
|
+
}], ctorParameters: function () { return [{ type: i1$5.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24346
24637
|
type: Input
|
|
24347
24638
|
}], choices: [{
|
|
24348
24639
|
type: Input
|
|
@@ -24373,123 +24664,298 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24373
24664
|
args: ['checkBox', { read: ElementRef }]
|
|
24374
24665
|
}] } });
|
|
24375
24666
|
|
|
24376
|
-
|
|
24667
|
+
const DEFAULT_ROW_NUMBERS = 6;
|
|
24668
|
+
class DropdownSelectorComponent {
|
|
24377
24669
|
constructor() {
|
|
24378
|
-
this.
|
|
24379
|
-
|
|
24380
|
-
|
|
24381
|
-
|
|
24382
|
-
|
|
24383
|
-
|
|
24384
|
-
|
|
24385
|
-
|
|
24386
|
-
|
|
24387
|
-
|
|
24388
|
-
|
|
24389
|
-
|
|
24390
|
-
|
|
24391
|
-
|
|
24392
|
-
|
|
24670
|
+
this.showTitle = true;
|
|
24671
|
+
this.extraBtnClass = '';
|
|
24672
|
+
this.minWidth = '';
|
|
24673
|
+
this.selectValue = new EventEmitter();
|
|
24674
|
+
this.overlayOpen = false;
|
|
24675
|
+
this.overlayWidth = 'auto';
|
|
24676
|
+
this.overlayMaxHeight = 'none';
|
|
24677
|
+
this.overlayPositions = [
|
|
24678
|
+
{
|
|
24679
|
+
originX: 'start',
|
|
24680
|
+
originY: 'bottom',
|
|
24681
|
+
overlayX: 'start',
|
|
24682
|
+
overlayY: 'top',
|
|
24683
|
+
offsetY: 8,
|
|
24684
|
+
},
|
|
24685
|
+
{
|
|
24686
|
+
originX: 'start',
|
|
24687
|
+
originY: 'top',
|
|
24688
|
+
overlayX: 'start',
|
|
24689
|
+
overlayY: 'bottom',
|
|
24690
|
+
offsetY: -8,
|
|
24691
|
+
},
|
|
24692
|
+
];
|
|
24393
24693
|
}
|
|
24394
|
-
get
|
|
24395
|
-
return
|
|
24694
|
+
get selectedChoice() {
|
|
24695
|
+
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
24696
|
+
this.choices[0]);
|
|
24396
24697
|
}
|
|
24397
|
-
|
|
24398
|
-
this.
|
|
24698
|
+
get id() {
|
|
24699
|
+
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
24399
24700
|
}
|
|
24400
|
-
|
|
24401
|
-
|
|
24701
|
+
getChoiceLabel() {
|
|
24702
|
+
return this.selectedChoice?.label;
|
|
24402
24703
|
}
|
|
24403
|
-
|
|
24404
|
-
|
|
24405
|
-
|
|
24406
|
-
this.
|
|
24704
|
+
ngOnInit() {
|
|
24705
|
+
if (!this.maxRows)
|
|
24706
|
+
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
24707
|
+
if (!this.choices || this.choices.length === 0) {
|
|
24708
|
+
this.choices = [];
|
|
24709
|
+
}
|
|
24407
24710
|
}
|
|
24408
|
-
|
|
24409
|
-
|
|
24711
|
+
isSelected(choice) {
|
|
24712
|
+
return choice === this.selectedChoice;
|
|
24713
|
+
}
|
|
24714
|
+
onSelectValue(choice) {
|
|
24715
|
+
this.closeOverlay();
|
|
24716
|
+
this.selected = choice.value;
|
|
24717
|
+
this.selectValue.emit(this.selected);
|
|
24718
|
+
}
|
|
24719
|
+
openOverlay() {
|
|
24720
|
+
this.overlayWidth =
|
|
24721
|
+
this.overlayOrigin.elementRef.nativeElement.getBoundingClientRect()
|
|
24722
|
+
.width + 'px';
|
|
24723
|
+
this.overlayMaxHeight = this.maxRows
|
|
24724
|
+
? `${this.maxRows * 29 + 60}px`
|
|
24725
|
+
: 'none';
|
|
24726
|
+
this.overlayOpen = true;
|
|
24727
|
+
return Promise.all([
|
|
24728
|
+
firstValueFrom(this.overlay.attach),
|
|
24729
|
+
firstValueFrom(this.choiceInputs.changes),
|
|
24730
|
+
]);
|
|
24731
|
+
}
|
|
24732
|
+
closeOverlay() {
|
|
24733
|
+
this.overlayOpen = false;
|
|
24734
|
+
}
|
|
24735
|
+
focusFirstItem() {
|
|
24736
|
+
this.choiceInputs.get(0).nativeElement.focus();
|
|
24737
|
+
}
|
|
24738
|
+
focusLastItem() {
|
|
24739
|
+
this.choiceInputs.get(this.choiceInputs.length - 1).nativeElement.focus();
|
|
24740
|
+
}
|
|
24741
|
+
async handleTriggerKeydown(event) {
|
|
24742
|
+
const keyCode = event.code;
|
|
24743
|
+
const isOpenKey = keyCode === 'ArrowDown' ||
|
|
24744
|
+
keyCode === 'ArrowUp' ||
|
|
24745
|
+
keyCode === 'ArrowLeft' ||
|
|
24746
|
+
keyCode === 'ArrowRight' ||
|
|
24747
|
+
keyCode === 'Enter' ||
|
|
24748
|
+
keyCode === 'Space';
|
|
24749
|
+
const isCloseKey = keyCode === 'Escape';
|
|
24750
|
+
if (isOpenKey) {
|
|
24751
|
+
event.preventDefault();
|
|
24752
|
+
if (!this.overlayOpen) {
|
|
24753
|
+
await this.openOverlay();
|
|
24754
|
+
}
|
|
24755
|
+
if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp')
|
|
24756
|
+
this.focusLastItem();
|
|
24757
|
+
else
|
|
24758
|
+
this.focusFirstItem();
|
|
24759
|
+
}
|
|
24760
|
+
else if (this.overlayOpen && isCloseKey) {
|
|
24761
|
+
event.preventDefault();
|
|
24762
|
+
this.closeOverlay();
|
|
24763
|
+
}
|
|
24764
|
+
}
|
|
24765
|
+
handleOverlayKeydown(event) {
|
|
24766
|
+
if (!this.overlayOpen)
|
|
24767
|
+
return;
|
|
24768
|
+
const keyCode = event.code;
|
|
24769
|
+
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
24770
|
+
event.preventDefault();
|
|
24771
|
+
this.shiftItemFocus(1);
|
|
24772
|
+
}
|
|
24773
|
+
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
24774
|
+
event.preventDefault();
|
|
24775
|
+
this.shiftItemFocus(-1);
|
|
24776
|
+
}
|
|
24777
|
+
else if (keyCode === 'Escape') {
|
|
24778
|
+
this.closeOverlay();
|
|
24779
|
+
}
|
|
24780
|
+
}
|
|
24781
|
+
shiftItemFocus(shift) {
|
|
24782
|
+
const index = this.focusedIndex;
|
|
24783
|
+
if (index === -1)
|
|
24784
|
+
return;
|
|
24785
|
+
const max = this.choiceInputs.length;
|
|
24786
|
+
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
24787
|
+
const newIndex = (((index + shift) % max) + max) % max;
|
|
24788
|
+
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24789
|
+
}
|
|
24790
|
+
get focusedIndex() {
|
|
24791
|
+
return this.choiceInputs.reduce((prev, curr, curIndex) => curr.nativeElement === document.activeElement ? curIndex : prev, -1);
|
|
24792
|
+
}
|
|
24793
|
+
selectIfEnter(event, choice) {
|
|
24794
|
+
if (event.code === 'Enter') {
|
|
24795
|
+
event.preventDefault();
|
|
24796
|
+
this.onSelectValue(choice);
|
|
24797
|
+
}
|
|
24798
|
+
}
|
|
24799
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24800
|
+
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 }); }
|
|
24410
24801
|
}
|
|
24411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24802
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24412
24803
|
type: Component,
|
|
24413
|
-
args: [{ selector: 'gn-ui-
|
|
24414
|
-
|
|
24804
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
24805
|
+
CommonModule,
|
|
24806
|
+
ButtonComponent,
|
|
24807
|
+
OverlayModule,
|
|
24808
|
+
MatIconModule,
|
|
24809
|
+
TranslateModule,
|
|
24810
|
+
], 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" }]
|
|
24811
|
+
}], propDecorators: { title: [{
|
|
24415
24812
|
type: Input
|
|
24416
|
-
}],
|
|
24813
|
+
}], showTitle: [{
|
|
24417
24814
|
type: Input
|
|
24418
|
-
}],
|
|
24815
|
+
}], ariaName: [{
|
|
24419
24816
|
type: Input
|
|
24420
|
-
}],
|
|
24817
|
+
}], choices: [{
|
|
24421
24818
|
type: Input
|
|
24422
|
-
}],
|
|
24819
|
+
}], selected: [{
|
|
24820
|
+
type: Input
|
|
24821
|
+
}], maxRows: [{
|
|
24822
|
+
type: Input
|
|
24823
|
+
}], extraBtnClass: [{
|
|
24824
|
+
type: Input
|
|
24825
|
+
}], minWidth: [{
|
|
24826
|
+
type: Input
|
|
24827
|
+
}], selectValue: [{
|
|
24423
24828
|
type: Output
|
|
24424
|
-
}],
|
|
24829
|
+
}], overlayOrigin: [{
|
|
24425
24830
|
type: ViewChild,
|
|
24426
|
-
args: ['
|
|
24831
|
+
args: ['overlayOrigin']
|
|
24832
|
+
}], overlay: [{
|
|
24833
|
+
type: ViewChild,
|
|
24834
|
+
args: [CdkConnectedOverlay]
|
|
24835
|
+
}], choiceInputs: [{
|
|
24836
|
+
type: ViewChildren,
|
|
24837
|
+
args: ['choiceInputs', { read: ElementRef }]
|
|
24427
24838
|
}] } });
|
|
24428
24839
|
|
|
24429
|
-
class
|
|
24430
|
-
|
|
24431
|
-
this.
|
|
24840
|
+
class EditableLabelDirective {
|
|
24841
|
+
constructor(el, renderer) {
|
|
24842
|
+
this.el = el;
|
|
24843
|
+
this.renderer = renderer;
|
|
24844
|
+
this.editableLabelChanged = new EventEmitter();
|
|
24432
24845
|
}
|
|
24433
|
-
|
|
24434
|
-
this.
|
|
24435
|
-
|
|
24436
|
-
|
|
24437
|
-
|
|
24438
|
-
|
|
24439
|
-
|
|
24440
|
-
|
|
24441
|
-
|
|
24442
|
-
|
|
24443
|
-
|
|
24444
|
-
|
|
24445
|
-
|
|
24446
|
-
|
|
24447
|
-
|
|
24448
|
-
|
|
24449
|
-
|
|
24450
|
-
|
|
24451
|
-
|
|
24452
|
-
|
|
24453
|
-
|
|
24454
|
-
|
|
24455
|
-
|
|
24846
|
+
ngAfterViewInit() {
|
|
24847
|
+
if (this.gnUiEditableLabel !== false) {
|
|
24848
|
+
const appendedInput = this.renderer.createElement('input');
|
|
24849
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
24850
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
24851
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
24852
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
24853
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
24854
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
24855
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
24856
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
24857
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
24858
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
24859
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
24860
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
24861
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
24862
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
24863
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
24864
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
24865
|
+
});
|
|
24866
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
24867
|
+
}
|
|
24868
|
+
}
|
|
24869
|
+
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 }); }
|
|
24870
|
+
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 }); }
|
|
24871
|
+
}
|
|
24872
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
24873
|
+
type: Directive,
|
|
24874
|
+
args: [{
|
|
24875
|
+
selector: '[gnUiEditableLabel]',
|
|
24876
|
+
standalone: true,
|
|
24877
|
+
}]
|
|
24878
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
24879
|
+
type: Output
|
|
24880
|
+
}], gnUiEditableLabel: [{
|
|
24881
|
+
type: Input
|
|
24882
|
+
}] } });
|
|
24883
|
+
|
|
24884
|
+
class NavigationButtonComponent {
|
|
24885
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24886
|
+
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 }); }
|
|
24887
|
+
}
|
|
24888
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24889
|
+
type: Component,
|
|
24890
|
+
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"] }]
|
|
24891
|
+
}], propDecorators: { label: [{
|
|
24892
|
+
type: Input
|
|
24893
|
+
}], icon: [{
|
|
24894
|
+
type: Input
|
|
24895
|
+
}] } });
|
|
24896
|
+
|
|
24897
|
+
class SearchInputComponent {
|
|
24898
|
+
constructor() {
|
|
24899
|
+
this.value = '';
|
|
24900
|
+
this.placeholder = '';
|
|
24456
24901
|
this.rawChange = new Subject();
|
|
24457
|
-
this.
|
|
24458
|
-
this.subscription = new Subscription();
|
|
24902
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
24459
24903
|
}
|
|
24460
|
-
|
|
24461
|
-
|
|
24462
|
-
|
|
24463
|
-
}
|
|
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);
|
|
24904
|
+
handleChange($event) {
|
|
24905
|
+
const value = $event.target.value;
|
|
24906
|
+
this.rawChange.next(value);
|
|
24469
24907
|
}
|
|
24470
|
-
|
|
24471
|
-
this.
|
|
24908
|
+
clear() {
|
|
24909
|
+
this.value = null;
|
|
24910
|
+
this.rawChange.next(null);
|
|
24472
24911
|
}
|
|
24473
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24474
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24912
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24913
|
+
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 }); }
|
|
24475
24914
|
}
|
|
24476
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24915
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
24477
24916
|
type: Component,
|
|
24478
|
-
args: [{ selector: 'gn-ui-
|
|
24479
|
-
}],
|
|
24917
|
+
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" }]
|
|
24918
|
+
}], propDecorators: { value: [{
|
|
24480
24919
|
type: Input
|
|
24481
24920
|
}], placeholder: [{
|
|
24482
24921
|
type: Input
|
|
24483
|
-
}],
|
|
24484
|
-
type:
|
|
24485
|
-
}]
|
|
24486
|
-
|
|
24487
|
-
|
|
24922
|
+
}], valueChange: [{
|
|
24923
|
+
type: Output
|
|
24924
|
+
}] } });
|
|
24925
|
+
|
|
24926
|
+
class StarToggleComponent {
|
|
24927
|
+
constructor() {
|
|
24928
|
+
this.disabled = false;
|
|
24929
|
+
this.newValue = new EventEmitter();
|
|
24930
|
+
}
|
|
24931
|
+
toggle(event) {
|
|
24932
|
+
if (!this.disabled) {
|
|
24933
|
+
this.toggled = !this.toggled;
|
|
24934
|
+
if (this.toggled) {
|
|
24935
|
+
const anim = this.overlay.nativeElement.getAnimations()[0];
|
|
24936
|
+
anim.cancel();
|
|
24937
|
+
anim.play();
|
|
24938
|
+
}
|
|
24939
|
+
this.newValue.emit(this.toggled);
|
|
24940
|
+
}
|
|
24941
|
+
propagateToDocumentOnly(event);
|
|
24942
|
+
event.preventDefault();
|
|
24943
|
+
}
|
|
24944
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24945
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40;stroke:var(--color-primary-darker)}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\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 }); }
|
|
24946
|
+
}
|
|
24947
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
24948
|
+
type: Component,
|
|
24949
|
+
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40;stroke:var(--color-primary-darker)}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
|
|
24950
|
+
}], propDecorators: { toggled: [{
|
|
24488
24951
|
type: Input
|
|
24489
|
-
}],
|
|
24952
|
+
}], disabled: [{
|
|
24490
24953
|
type: Input
|
|
24491
|
-
}],
|
|
24954
|
+
}], newValue: [{
|
|
24492
24955
|
type: Output
|
|
24956
|
+
}], overlay: [{
|
|
24957
|
+
type: ViewChild,
|
|
24958
|
+
args: ['starOverlay']
|
|
24493
24959
|
}] } });
|
|
24494
24960
|
|
|
24495
24961
|
class TextAreaComponent {
|
|
@@ -24552,317 +25018,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24552
25018
|
args: ['input']
|
|
24553
25019
|
}] } });
|
|
24554
25020
|
|
|
24555
|
-
class
|
|
24556
|
-
constructor(
|
|
24557
|
-
this.
|
|
24558
|
-
|
|
24559
|
-
|
|
24560
|
-
|
|
24561
|
-
|
|
24562
|
-
|
|
24563
|
-
|
|
24564
|
-
|
|
24565
|
-
|
|
24566
|
-
|
|
24567
|
-
|
|
24568
|
-
this.
|
|
24569
|
-
|
|
24570
|
-
|
|
24571
|
-
this.
|
|
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 }); }
|
|
24586
|
-
}
|
|
24587
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, decorators: [{
|
|
24588
|
-
type: Component,
|
|
24589
|
-
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"] }]
|
|
24590
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
|
|
24591
|
-
type: Input
|
|
24592
|
-
}], type: [{
|
|
24593
|
-
type: Input
|
|
24594
|
-
}], position: [{
|
|
24595
|
-
type: Input
|
|
24596
|
-
}], content: [{
|
|
24597
|
-
type: ViewChild,
|
|
24598
|
-
args: ['content']
|
|
24599
|
-
}] } });
|
|
24600
|
-
|
|
24601
|
-
class AutocompleteComponent {
|
|
24602
|
-
constructor(cdRef) {
|
|
24603
|
-
this.cdRef = cdRef;
|
|
24604
|
-
this.clearOnSelection = false;
|
|
24605
|
-
this.autoFocus = false;
|
|
24606
|
-
this.itemSelected = new EventEmitter();
|
|
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
|
-
}
|
|
25021
|
+
class TextInputComponent {
|
|
25022
|
+
constructor() {
|
|
25023
|
+
this.baseClass = [
|
|
25024
|
+
'appearance-none',
|
|
25025
|
+
'border border-gray-300',
|
|
25026
|
+
'rounded w-full',
|
|
25027
|
+
'p-2',
|
|
25028
|
+
'text-gray-700',
|
|
25029
|
+
'leading-tight',
|
|
25030
|
+
'focus:outline-none',
|
|
25031
|
+
'focus:border-primary',
|
|
25032
|
+
].join(' ');
|
|
25033
|
+
this.value = '';
|
|
25034
|
+
this.extraClass = '';
|
|
25035
|
+
this.required = false;
|
|
25036
|
+
this.rawChange = new Subject();
|
|
25037
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24626
25038
|
}
|
|
24627
|
-
|
|
24628
|
-
|
|
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$);
|
|
25039
|
+
get classList() {
|
|
25040
|
+
return `${this.baseClass} ${this.extraClass}`;
|
|
24640
25041
|
}
|
|
24641
25042
|
ngAfterViewInit() {
|
|
24642
|
-
this.
|
|
24643
|
-
if (this.autoFocus) {
|
|
24644
|
-
this.inputRef.nativeElement.focus();
|
|
24645
|
-
this.cdRef.detectChanges();
|
|
24646
|
-
}
|
|
24647
|
-
}
|
|
24648
|
-
ngOnDestroy() {
|
|
24649
|
-
this.subscription.unsubscribe();
|
|
24650
|
-
}
|
|
24651
|
-
updateInputValue(value) {
|
|
24652
|
-
if (value) {
|
|
24653
|
-
this.control.setValue(value);
|
|
24654
|
-
}
|
|
24655
|
-
if (this.inputRef) {
|
|
24656
|
-
this.inputRef.nativeElement.value = value?.title || '';
|
|
24657
|
-
}
|
|
24658
|
-
}
|
|
24659
|
-
clear() {
|
|
24660
|
-
this.inputRef.nativeElement.value = '';
|
|
24661
|
-
this.inputCleared.emit();
|
|
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
|
-
}
|
|
25043
|
+
this.checkRequired(this.input.nativeElement.value);
|
|
24673
25044
|
}
|
|
24674
|
-
|
|
24675
|
-
this.
|
|
24676
|
-
this.triggerRef.closePanel();
|
|
25045
|
+
checkRequired(value) {
|
|
25046
|
+
this.input.nativeElement.classList.toggle('invalid', this.required && value === '');
|
|
24677
25047
|
}
|
|
24678
|
-
|
|
24679
|
-
|
|
24680
|
-
this.
|
|
24681
|
-
|
|
24682
|
-
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24683
|
-
this.inputRef.nativeElement.value = any;
|
|
24684
|
-
});
|
|
24685
|
-
}
|
|
25048
|
+
handleChange($event) {
|
|
25049
|
+
const value = $event.target.value;
|
|
25050
|
+
this.checkRequired(value);
|
|
25051
|
+
this.rawChange.next(value);
|
|
24686
25052
|
}
|
|
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:
|
|
25053
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25054
|
+
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", disabled: "disabled" }, 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 [disabled]=\"disabled\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
24689
25055
|
}
|
|
24690
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25056
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
24691
25057
|
type: Component,
|
|
24692
|
-
args: [{ selector: 'gn-ui-
|
|
24693
|
-
}],
|
|
24694
|
-
type: Input
|
|
24695
|
-
}], action: [{
|
|
24696
|
-
type: Input
|
|
24697
|
-
}], value: [{
|
|
24698
|
-
type: Input
|
|
24699
|
-
}], clearOnSelection: [{
|
|
25058
|
+
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 [disabled]=\"disabled\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25059
|
+
}], propDecorators: { value: [{
|
|
24700
25060
|
type: Input
|
|
24701
|
-
}],
|
|
25061
|
+
}], extraClass: [{
|
|
24702
25062
|
type: Input
|
|
24703
|
-
}],
|
|
24704
|
-
type: Output
|
|
24705
|
-
}], inputSubmitted: [{
|
|
24706
|
-
type: Output
|
|
24707
|
-
}], inputCleared: [{
|
|
24708
|
-
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: [{
|
|
25063
|
+
}], hint: [{
|
|
24719
25064
|
type: Input
|
|
24720
|
-
}]
|
|
24721
|
-
|
|
24722
|
-
class StarToggleComponent {
|
|
24723
|
-
constructor() {
|
|
24724
|
-
this.disabled = false;
|
|
24725
|
-
this.newValue = new EventEmitter();
|
|
24726
|
-
}
|
|
24727
|
-
toggle(event) {
|
|
24728
|
-
if (!this.disabled) {
|
|
24729
|
-
this.toggled = !this.toggled;
|
|
24730
|
-
if (this.toggled) {
|
|
24731
|
-
const anim = this.overlay.nativeElement.getAnimations()[0];
|
|
24732
|
-
anim.cancel();
|
|
24733
|
-
anim.play();
|
|
24734
|
-
}
|
|
24735
|
-
this.newValue.emit(this.toggled);
|
|
24736
|
-
}
|
|
24737
|
-
propagateToDocumentOnly(event);
|
|
24738
|
-
event.preventDefault();
|
|
24739
|
-
}
|
|
24740
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24741
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40;stroke:var(--color-primary-darker)}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\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 }); }
|
|
24742
|
-
}
|
|
24743
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
24744
|
-
type: Component,
|
|
24745
|
-
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40;stroke:var(--color-primary-darker)}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
|
|
24746
|
-
}], propDecorators: { toggled: [{
|
|
25065
|
+
}], required: [{
|
|
24747
25066
|
type: Input
|
|
24748
25067
|
}], disabled: [{
|
|
24749
25068
|
type: Input
|
|
24750
|
-
}],
|
|
25069
|
+
}], valueChange: [{
|
|
24751
25070
|
type: Output
|
|
24752
|
-
}],
|
|
25071
|
+
}], input: [{
|
|
24753
25072
|
type: ViewChild,
|
|
24754
|
-
args: ['
|
|
24755
|
-
}] } });
|
|
24756
|
-
|
|
24757
|
-
class ViewportIntersectorComponent {
|
|
24758
|
-
constructor(vcRef) {
|
|
24759
|
-
this.vcRef = vcRef;
|
|
24760
|
-
this.isInViewport = new EventEmitter();
|
|
24761
|
-
this.entersViewport = this.isInViewport.pipe(filter((inViewport) => inViewport), map$1(() => undefined));
|
|
24762
|
-
this.exitsViewport = this.isInViewport.pipe(filter((inViewport) => !inViewport), map$1(() => undefined));
|
|
24763
|
-
}
|
|
24764
|
-
ngOnInit() {
|
|
24765
|
-
const elToObserve = this.vcRef.element.nativeElement;
|
|
24766
|
-
this.observeInputElement(elToObserve);
|
|
24767
|
-
}
|
|
24768
|
-
ngOnDestroy() {
|
|
24769
|
-
const elToObserve = this.vcRef.element.nativeElement;
|
|
24770
|
-
this.unObserveInputElement(elToObserve);
|
|
24771
|
-
}
|
|
24772
|
-
observeInputElement(elToObserve) {
|
|
24773
|
-
if (!this.observer) {
|
|
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);
|
|
24781
|
-
}
|
|
24782
|
-
unObserveInputElement(elToObserve) {
|
|
24783
|
-
this.observer?.unobserve(elToObserve);
|
|
24784
|
-
}
|
|
24785
|
-
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 }); }
|
|
24786
|
-
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: [""] }); }
|
|
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();
|
|
24803
|
-
}
|
|
24804
|
-
toggle(event) {
|
|
24805
|
-
this.toggled.emit(event);
|
|
24806
|
-
}
|
|
24807
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24808
|
-
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 }); }
|
|
24809
|
-
}
|
|
24810
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
24811
|
-
type: Component,
|
|
24812
|
-
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" }]
|
|
24813
|
-
}], propDecorators: { title: [{
|
|
24814
|
-
type: Input
|
|
24815
|
-
}], label: [{
|
|
24816
|
-
type: Input
|
|
24817
|
-
}], value: [{
|
|
24818
|
-
type: Input
|
|
24819
|
-
}], color: [{
|
|
24820
|
-
type: Input
|
|
24821
|
-
}], toggled: [{
|
|
24822
|
-
type: Output
|
|
24823
|
-
}] } });
|
|
24824
|
-
|
|
24825
|
-
const placeholder = 'dropFile';
|
|
24826
|
-
marker('dropFile');
|
|
24827
|
-
class DragAndDropFileInputComponent {
|
|
24828
|
-
constructor() {
|
|
24829
|
-
this.placeholder = placeholder;
|
|
24830
|
-
this.accept = '*';
|
|
24831
|
-
this.fileChange = new EventEmitter();
|
|
24832
|
-
this.selectedFile = null;
|
|
24833
|
-
}
|
|
24834
|
-
get fileName() {
|
|
24835
|
-
return this.selectedFile && this.selectedFile.name;
|
|
24836
|
-
}
|
|
24837
|
-
selectFile(event) {
|
|
24838
|
-
this.selectedFile = event.addedFiles[0];
|
|
24839
|
-
this.fileChange.emit(this.selectedFile);
|
|
24840
|
-
}
|
|
24841
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24842
|
-
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.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
24843
|
-
}
|
|
24844
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
24845
|
-
type: Component,
|
|
24846
|
-
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"] }]
|
|
24847
|
-
}], propDecorators: { placeholder: [{
|
|
24848
|
-
type: Input
|
|
24849
|
-
}], accept: [{
|
|
24850
|
-
type: Input
|
|
24851
|
-
}], fileChange: [{
|
|
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: [{
|
|
24863
|
-
type: Input
|
|
24864
|
-
}], icon: [{
|
|
24865
|
-
type: Input
|
|
25073
|
+
args: ['input']
|
|
24866
25074
|
}] } });
|
|
24867
25075
|
|
|
24868
25076
|
class ColorScaleComponent {
|
|
@@ -24970,7 +25178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24970
25178
|
|
|
24971
25179
|
class LoadingMaskComponent {
|
|
24972
25180
|
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$
|
|
25181
|
+
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
25182
|
}
|
|
24975
25183
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, decorators: [{
|
|
24976
25184
|
type: Component,
|
|
@@ -25066,148 +25274,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25066
25274
|
}]
|
|
25067
25275
|
}] });
|
|
25068
25276
|
|
|
25069
|
-
class
|
|
25070
|
-
constructor() {
|
|
25071
|
-
this.
|
|
25072
|
-
this.
|
|
25277
|
+
class ViewportIntersectorComponent {
|
|
25278
|
+
constructor(vcRef) {
|
|
25279
|
+
this.vcRef = vcRef;
|
|
25280
|
+
this.isInViewport = new EventEmitter();
|
|
25281
|
+
this.entersViewport = this.isInViewport.pipe(filter((inViewport) => inViewport), map$1(() => undefined));
|
|
25282
|
+
this.exitsViewport = this.isInViewport.pipe(filter((inViewport) => !inViewport), map$1(() => undefined));
|
|
25073
25283
|
}
|
|
25074
|
-
|
|
25075
|
-
|
|
25076
|
-
|
|
25284
|
+
ngOnInit() {
|
|
25285
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25286
|
+
this.observeInputElement(elToObserve);
|
|
25077
25287
|
}
|
|
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();
|
|
25288
|
+
ngOnDestroy() {
|
|
25289
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25290
|
+
this.unObserveInputElement(elToObserve);
|
|
25100
25291
|
}
|
|
25101
|
-
|
|
25102
|
-
|
|
25292
|
+
observeInputElement(elToObserve) {
|
|
25293
|
+
if (!this.observer) {
|
|
25294
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
25295
|
+
entries.forEach((entry) => {
|
|
25296
|
+
this.isInViewport.emit(entry.isIntersecting);
|
|
25297
|
+
});
|
|
25298
|
+
}, { root: null, threshold: 0 });
|
|
25299
|
+
}
|
|
25300
|
+
this.observer.observe(elToObserve);
|
|
25103
25301
|
}
|
|
25104
|
-
|
|
25105
|
-
|
|
25106
|
-
this.checked = !this.checked;
|
|
25107
|
-
this.changed.emit(this.checked);
|
|
25302
|
+
unObserveInputElement(elToObserve) {
|
|
25303
|
+
this.observer?.unobserve(elToObserve);
|
|
25108
25304
|
}
|
|
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:
|
|
25305
|
+
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 }); }
|
|
25306
|
+
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
25307
|
}
|
|
25112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25308
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
25113
25309
|
type: Component,
|
|
25114
|
-
args: [{ selector: 'gn-ui-
|
|
25115
|
-
}],
|
|
25116
|
-
type: Input
|
|
25117
|
-
}], checked: [{
|
|
25118
|
-
type: Input
|
|
25119
|
-
}], indeterminate: [{
|
|
25120
|
-
type: Input
|
|
25121
|
-
}], changed: [{
|
|
25310
|
+
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
25311
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
25122
25312
|
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: [{
|
|
25313
|
+
}], entersViewport: [{
|
|
25151
25314
|
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: [{
|
|
25315
|
+
}], exitsViewport: [{
|
|
25208
25316
|
type: Output
|
|
25209
|
-
}], gnUiEditableLabel: [{
|
|
25210
|
-
type: Input
|
|
25211
25317
|
}] } });
|
|
25212
25318
|
|
|
25213
25319
|
class FilesDropDirective {
|
|
@@ -25399,7 +25505,7 @@ class ImageInputComponent {
|
|
|
25399
25505
|
});
|
|
25400
25506
|
}
|
|
25401
25507
|
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$
|
|
25508
|
+
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
25509
|
}
|
|
25404
25510
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, decorators: [{
|
|
25405
25511
|
type: Component,
|
|
@@ -25435,8 +25541,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25435
25541
|
|
|
25436
25542
|
class UiInputsModule {
|
|
25437
25543
|
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,
|
|
25544
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [AutocompleteComponent,
|
|
25440
25545
|
TextInputComponent,
|
|
25441
25546
|
DragAndDropFileInputComponent,
|
|
25442
25547
|
ChipsInputComponent,
|
|
@@ -25447,8 +25552,7 @@ class UiInputsModule {
|
|
|
25447
25552
|
CheckToggleComponent,
|
|
25448
25553
|
CopyTextButtonComponent,
|
|
25449
25554
|
CheckboxComponent,
|
|
25450
|
-
SearchInputComponent,
|
|
25451
|
-
DateRangePickerComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25555
|
+
SearchInputComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25452
25556
|
FormsModule,
|
|
25453
25557
|
ReactiveFormsModule,
|
|
25454
25558
|
TagInputModule,
|
|
@@ -25466,7 +25570,9 @@ class UiInputsModule {
|
|
|
25466
25570
|
EditableLabelDirective,
|
|
25467
25571
|
TextAreaComponent,
|
|
25468
25572
|
ButtonComponent,
|
|
25469
|
-
ImageInputComponent
|
|
25573
|
+
ImageInputComponent,
|
|
25574
|
+
DropdownSelectorComponent,
|
|
25575
|
+
DateRangePickerComponent], exports: [DropdownSelectorComponent,
|
|
25470
25576
|
AutocompleteComponent,
|
|
25471
25577
|
ButtonComponent,
|
|
25472
25578
|
TextInputComponent,
|
|
@@ -25501,13 +25607,14 @@ class UiInputsModule {
|
|
|
25501
25607
|
MatInputModule,
|
|
25502
25608
|
MatDatepickerModule,
|
|
25503
25609
|
MatNativeDateModule,
|
|
25504
|
-
ImageInputComponent
|
|
25610
|
+
ImageInputComponent,
|
|
25611
|
+
DropdownSelectorComponent,
|
|
25612
|
+
DateRangePickerComponent] }); }
|
|
25505
25613
|
}
|
|
25506
25614
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, decorators: [{
|
|
25507
25615
|
type: NgModule,
|
|
25508
25616
|
args: [{
|
|
25509
25617
|
declarations: [
|
|
25510
|
-
DropdownSelectorComponent,
|
|
25511
25618
|
AutocompleteComponent,
|
|
25512
25619
|
TextInputComponent,
|
|
25513
25620
|
DragAndDropFileInputComponent,
|
|
@@ -25520,7 +25627,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25520
25627
|
CopyTextButtonComponent,
|
|
25521
25628
|
CheckboxComponent,
|
|
25522
25629
|
SearchInputComponent,
|
|
25523
|
-
DateRangePickerComponent,
|
|
25524
25630
|
],
|
|
25525
25631
|
imports: [
|
|
25526
25632
|
CommonModule,
|
|
@@ -25544,6 +25650,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25544
25650
|
TextAreaComponent,
|
|
25545
25651
|
ButtonComponent,
|
|
25546
25652
|
ImageInputComponent,
|
|
25653
|
+
DropdownSelectorComponent,
|
|
25654
|
+
DateRangePickerComponent,
|
|
25547
25655
|
],
|
|
25548
25656
|
exports: [
|
|
25549
25657
|
DropdownSelectorComponent,
|
|
@@ -25568,34 +25676,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25568
25676
|
}]
|
|
25569
25677
|
}] });
|
|
25570
25678
|
|
|
25679
|
+
class PreviousNextButtonsComponent {
|
|
25680
|
+
constructor() {
|
|
25681
|
+
this.directionButtonClicked = new EventEmitter();
|
|
25682
|
+
}
|
|
25683
|
+
previousButtonClicked() {
|
|
25684
|
+
this.directionButtonClicked.next('previous');
|
|
25685
|
+
}
|
|
25686
|
+
nextButtonClicked() {
|
|
25687
|
+
this.directionButtonClicked.next('next');
|
|
25688
|
+
}
|
|
25689
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25690
|
+
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 }); }
|
|
25691
|
+
}
|
|
25692
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
|
|
25693
|
+
type: Component,
|
|
25694
|
+
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"] }]
|
|
25695
|
+
}], propDecorators: { isFirst: [{
|
|
25696
|
+
type: Input
|
|
25697
|
+
}], isLast: [{
|
|
25698
|
+
type: Input
|
|
25699
|
+
}], directionButtonClicked: [{
|
|
25700
|
+
type: Output
|
|
25701
|
+
}] } });
|
|
25702
|
+
|
|
25571
25703
|
class AddLayerFromOgcApiComponent {
|
|
25572
25704
|
constructor(changeDetectorRef) {
|
|
25573
25705
|
this.changeDetectorRef = changeDetectorRef;
|
|
25574
25706
|
this.layerAdded = new EventEmitter();
|
|
25575
25707
|
this.urlChange = new Subject();
|
|
25576
|
-
this.layerUrl = '';
|
|
25577
25708
|
this.loading = false;
|
|
25578
25709
|
this.layers = [];
|
|
25579
|
-
this.ogcEndpoint = null;
|
|
25580
25710
|
this.errorMessage = null;
|
|
25711
|
+
this.selectedLayerTypes = {};
|
|
25581
25712
|
}
|
|
25582
25713
|
ngOnInit() {
|
|
25583
25714
|
this.urlChange.pipe(debounceTime$1(700)).subscribe(() => {
|
|
25584
25715
|
this.loadLayers();
|
|
25585
|
-
this.changeDetectorRef.detectChanges(); // manually trigger change detection
|
|
25586
25716
|
});
|
|
25587
25717
|
}
|
|
25588
25718
|
async loadLayers() {
|
|
25589
25719
|
this.errorMessage = null;
|
|
25590
25720
|
try {
|
|
25591
25721
|
this.loading = true;
|
|
25592
|
-
if (this.ogcUrl.trim()
|
|
25722
|
+
if (!this.ogcUrl.trim()) {
|
|
25593
25723
|
this.layers = [];
|
|
25594
25724
|
return;
|
|
25595
25725
|
}
|
|
25596
|
-
|
|
25597
|
-
|
|
25598
|
-
this.
|
|
25726
|
+
const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
25727
|
+
this.layers = await ogcEndpoint.allCollections;
|
|
25728
|
+
this.setDefaultLayerTypes();
|
|
25599
25729
|
}
|
|
25600
25730
|
catch (error) {
|
|
25601
25731
|
const err = error;
|
|
@@ -25607,21 +25737,75 @@ class AddLayerFromOgcApiComponent {
|
|
|
25607
25737
|
this.changeDetectorRef.markForCheck();
|
|
25608
25738
|
}
|
|
25609
25739
|
}
|
|
25610
|
-
|
|
25611
|
-
this.
|
|
25612
|
-
|
|
25613
|
-
|
|
25614
|
-
|
|
25615
|
-
|
|
25616
|
-
};
|
|
25617
|
-
|
|
25740
|
+
setDefaultLayerTypes() {
|
|
25741
|
+
this.layers.forEach((layer) => {
|
|
25742
|
+
const choices = this.getLayerChoices(layer);
|
|
25743
|
+
if (choices.length > 0) {
|
|
25744
|
+
this.selectedLayerTypes[layer.name] = choices[0].value;
|
|
25745
|
+
}
|
|
25746
|
+
});
|
|
25747
|
+
}
|
|
25748
|
+
getLayerChoices(layer) {
|
|
25749
|
+
const choices = [];
|
|
25750
|
+
if (layer.hasRecords) {
|
|
25751
|
+
choices.push({ label: 'Records', value: 'record' });
|
|
25752
|
+
}
|
|
25753
|
+
if (layer.hasFeatures) {
|
|
25754
|
+
choices.push({ label: 'Features', value: 'features' });
|
|
25755
|
+
}
|
|
25756
|
+
if (layer.hasVectorTiles) {
|
|
25757
|
+
choices.push({ label: 'Vector Tiles', value: 'vectorTiles' });
|
|
25758
|
+
}
|
|
25759
|
+
if (layer.hasMapTiles) {
|
|
25760
|
+
choices.push({ label: 'Map Tiles', value: 'mapTiles' });
|
|
25761
|
+
}
|
|
25762
|
+
return choices;
|
|
25763
|
+
}
|
|
25764
|
+
shouldDisplayLayer(layer) {
|
|
25765
|
+
return (layer.hasRecords ||
|
|
25766
|
+
layer.hasFeatures ||
|
|
25767
|
+
layer.hasVectorTiles ||
|
|
25768
|
+
layer.hasMapTiles);
|
|
25769
|
+
}
|
|
25770
|
+
onLayerTypeSelect(layerName, selectedType) {
|
|
25771
|
+
this.selectedLayerTypes[layerName] = selectedType
|
|
25772
|
+
? selectedType
|
|
25773
|
+
: this.getLayerChoices(layerName)[0]?.value;
|
|
25774
|
+
}
|
|
25775
|
+
async addLayer(layer, layerType) {
|
|
25776
|
+
try {
|
|
25777
|
+
const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
25778
|
+
let layerUrl;
|
|
25779
|
+
if (layerType === 'vectorTiles') {
|
|
25780
|
+
layerUrl = await ogcEndpoint.getVectorTilesetUrl(layer);
|
|
25781
|
+
}
|
|
25782
|
+
else if (layerType === 'mapTiles') {
|
|
25783
|
+
layerUrl = await ogcEndpoint.getMapTilesetUrl(layer);
|
|
25784
|
+
}
|
|
25785
|
+
else {
|
|
25786
|
+
layerUrl = await ogcEndpoint.getCollectionItemsUrl(layer, {
|
|
25787
|
+
outputFormat: 'json',
|
|
25788
|
+
});
|
|
25789
|
+
}
|
|
25790
|
+
const layerToAdd = {
|
|
25791
|
+
name: layer,
|
|
25792
|
+
url: layerUrl,
|
|
25793
|
+
type: MapContextLayerTypeEnum.OGCAPI,
|
|
25794
|
+
layerType: layerType,
|
|
25795
|
+
};
|
|
25796
|
+
this.layerAdded.emit({ ...layerToAdd, title: layer });
|
|
25797
|
+
}
|
|
25798
|
+
catch (error) {
|
|
25799
|
+
const err = error;
|
|
25800
|
+
console.error('Error adding layer:', err.message);
|
|
25801
|
+
}
|
|
25618
25802
|
}
|
|
25619
25803
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25620
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n
|
|
25804
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n ></gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<ng-container *ngFor=\"let layer of layers\">\n <div\n *ngIf=\"shouldDisplayLayer(layer)\"\n class=\"flex items-center justify-between my-2 layer-item-tree\"\n >\n <div class=\"flex flex-col items-start w-full\">\n <p\n class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\"\n [title]=\"layer.name\"\n >\n {{ layer.name }}\n </p>\n <div class=\"flex justify-between items-center w-full\">\n <gn-ui-dropdown-selector\n [title]=\"'Add Layer As' | translate\"\n [choices]=\"getLayerChoices(layer)\"\n (selectValue)=\"onLayerTypeSelect(layer.name, $event)\"\n [selected]=\"selectedLayerTypes[layer.name]\"\n extraBtnClass=\"w-6 h-5 !text-sm !px-2 !py-1\"\n ></gn-ui-dropdown-selector>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer.name, selectedLayerTypes[layer.name])\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n >\n <span translate>map.layer.add</span>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".dropdown-content{display:none}.relative:hover .dropdown-content{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }] }); }
|
|
25621
25805
|
}
|
|
25622
25806
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
|
|
25623
25807
|
type: Component,
|
|
25624
|
-
args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n
|
|
25808
|
+
args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n ></gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<ng-container *ngFor=\"let layer of layers\">\n <div\n *ngIf=\"shouldDisplayLayer(layer)\"\n class=\"flex items-center justify-between my-2 layer-item-tree\"\n >\n <div class=\"flex flex-col items-start w-full\">\n <p\n class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\"\n [title]=\"layer.name\"\n >\n {{ layer.name }}\n </p>\n <div class=\"flex justify-between items-center w-full\">\n <gn-ui-dropdown-selector\n [title]=\"'Add Layer As' | translate\"\n [choices]=\"getLayerChoices(layer)\"\n (selectValue)=\"onLayerTypeSelect(layer.name, $event)\"\n [selected]=\"selectedLayerTypes[layer.name]\"\n extraBtnClass=\"w-6 h-5 !text-sm !px-2 !py-1\"\n ></gn-ui-dropdown-selector>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer.name, selectedLayerTypes[layer.name])\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n >\n <span translate>map.layer.add</span>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".dropdown-content{display:none}.relative:hover .dropdown-content{display:block}\n"] }]
|
|
25625
25809
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { ogcUrl: [{
|
|
25626
25810
|
type: Input
|
|
25627
25811
|
}], layerAdded: [{
|
|
@@ -26363,7 +26547,8 @@ class ApiCardComponent {
|
|
|
26363
26547
|
}
|
|
26364
26548
|
ngOnInit() {
|
|
26365
26549
|
this.displayApiFormButton =
|
|
26366
|
-
this.link.accessServiceProtocol === 'ogcFeatures'
|
|
26550
|
+
this.link.accessServiceProtocol === 'ogcFeatures' ||
|
|
26551
|
+
this.link.accessServiceProtocol === 'wfs';
|
|
26367
26552
|
}
|
|
26368
26553
|
ngOnChanges(changes) {
|
|
26369
26554
|
this.currentlyActive =
|
|
@@ -26376,7 +26561,7 @@ class ApiCardComponent {
|
|
|
26376
26561
|
}
|
|
26377
26562
|
}
|
|
26378
26563
|
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:
|
|
26564
|
+
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: i2$2.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
26565
|
}
|
|
26381
26566
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
26382
26567
|
type: Component,
|
|
@@ -26507,7 +26692,7 @@ class DownloadsListComponent {
|
|
|
26507
26692
|
return getBadgeColor(getFileFormat(link));
|
|
26508
26693
|
}
|
|
26509
26694
|
isFromWfs(link) {
|
|
26510
|
-
return link.type === '
|
|
26695
|
+
return link.type === 'download' && link.accessServiceProtocol === 'wfs';
|
|
26511
26696
|
}
|
|
26512
26697
|
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
26698
|
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 +26724,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26539
26724
|
}] } });
|
|
26540
26725
|
|
|
26541
26726
|
class LinkCardComponent {
|
|
26727
|
+
constructor() {
|
|
26728
|
+
this.compact = false;
|
|
26729
|
+
}
|
|
26730
|
+
get title() {
|
|
26731
|
+
if (this.link.name && this.link.description) {
|
|
26732
|
+
return `${this.link.name} | ${this.link.description}`;
|
|
26733
|
+
}
|
|
26734
|
+
return this.link.name || this.link.description || '';
|
|
26735
|
+
}
|
|
26542
26736
|
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
|
|
26737
|
+
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
26738
|
}
|
|
26545
26739
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
26546
26740
|
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
|
|
26741
|
+
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
26742
|
}], propDecorators: { link: [{
|
|
26549
26743
|
type: Input
|
|
26744
|
+
}], compact: [{
|
|
26745
|
+
type: Input
|
|
26550
26746
|
}] } });
|
|
26551
26747
|
|
|
26552
26748
|
class MarkdownParserComponent {
|
|
@@ -27008,11 +27204,9 @@ class RecordApiFormComponent {
|
|
|
27008
27204
|
this.offset$ = new BehaviorSubject('');
|
|
27009
27205
|
this.limit$ = new BehaviorSubject('');
|
|
27010
27206
|
this.format$ = new BehaviorSubject('');
|
|
27011
|
-
this.
|
|
27012
|
-
|
|
27013
|
-
|
|
27014
|
-
];
|
|
27015
|
-
this.apiQueryUrl$ = combineLatest([this.offset$, this.limit$, this.format$]).pipe(map$2(([offset, limit, format]) => {
|
|
27207
|
+
this.supportOffset = true;
|
|
27208
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27209
|
+
this.apiQueryUrl$ = combineLatest([this.offset$, this.limit$, this.format$]).pipe(switchMap(async ([offset, limit, format]) => {
|
|
27016
27210
|
let outputUrl;
|
|
27017
27211
|
if (this.apiBaseUrl) {
|
|
27018
27212
|
const url = new URL(this.apiBaseUrl);
|
|
@@ -27027,13 +27221,32 @@ class RecordApiFormComponent {
|
|
|
27027
27221
|
}
|
|
27028
27222
|
outputUrl = url.toString();
|
|
27029
27223
|
}
|
|
27224
|
+
if (this.accessServiceProtocol === 'wfs') {
|
|
27225
|
+
const wfsEndpoint = new WfsEndpoint(this.apiBaseUrl);
|
|
27226
|
+
if (await wfsEndpoint.isReady()) {
|
|
27227
|
+
const options = {
|
|
27228
|
+
outputFormat: format,
|
|
27229
|
+
startIndex: Number(offset),
|
|
27230
|
+
};
|
|
27231
|
+
if (limit !== '-1') {
|
|
27232
|
+
options['maxFeatures'] = Number(limit);
|
|
27233
|
+
}
|
|
27234
|
+
outputUrl = wfsEndpoint.getFeatureUrl(this.apiFeatureType, options);
|
|
27235
|
+
}
|
|
27236
|
+
}
|
|
27030
27237
|
return outputUrl;
|
|
27031
27238
|
}));
|
|
27032
27239
|
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
27033
27240
|
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
27034
27241
|
}
|
|
27035
27242
|
set apiLink(value) {
|
|
27036
|
-
this.
|
|
27243
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27244
|
+
this.accessServiceProtocol = value ? value.accessServiceProtocol : undefined;
|
|
27245
|
+
this.apiFeatureType = value ? value.name : undefined;
|
|
27246
|
+
if (value) {
|
|
27247
|
+
this.apiBaseUrl = value.url.href;
|
|
27248
|
+
this.parseOutputFormats();
|
|
27249
|
+
}
|
|
27037
27250
|
this.resetUrl();
|
|
27038
27251
|
}
|
|
27039
27252
|
setOffset(value) {
|
|
@@ -27051,19 +27264,61 @@ class RecordApiFormComponent {
|
|
|
27051
27264
|
this.limit$.next(DEFAULT_PARAMS.LIMIT);
|
|
27052
27265
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
27053
27266
|
}
|
|
27267
|
+
parseOutputFormats() {
|
|
27268
|
+
const apiUrl = this.apiBaseUrl.slice(-1) === '?'
|
|
27269
|
+
? this.apiBaseUrl.slice(0, -1)
|
|
27270
|
+
: this.apiBaseUrl;
|
|
27271
|
+
this.getOutputFormats(apiUrl, this.accessServiceProtocol).then((outputFormats) => {
|
|
27272
|
+
let formatsList = [];
|
|
27273
|
+
if ('itemFormats' in outputFormats) {
|
|
27274
|
+
formatsList = this.mapFormats(outputFormats.itemFormats);
|
|
27275
|
+
}
|
|
27276
|
+
else if ('outputFormats' in outputFormats) {
|
|
27277
|
+
formatsList = this.mapFormats(outputFormats.outputFormats);
|
|
27278
|
+
}
|
|
27279
|
+
this.outputFormats = this.outputFormats.concat(formatsList.filter(Boolean));
|
|
27280
|
+
this.outputFormats = this.outputFormats
|
|
27281
|
+
.filter((format, index, self) => index === self.findIndex((t) => t.value === format.value))
|
|
27282
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
27283
|
+
});
|
|
27284
|
+
}
|
|
27285
|
+
mapFormats(formats) {
|
|
27286
|
+
return formats.map((format) => {
|
|
27287
|
+
const normalizedFormat = mimeTypeToFormat(format);
|
|
27288
|
+
if (normalizedFormat) {
|
|
27289
|
+
return {
|
|
27290
|
+
label: normalizedFormat.toUpperCase(),
|
|
27291
|
+
value: normalizedFormat,
|
|
27292
|
+
};
|
|
27293
|
+
}
|
|
27294
|
+
return null;
|
|
27295
|
+
});
|
|
27296
|
+
}
|
|
27297
|
+
async getOutputFormats(url, accessServiceProtocol) {
|
|
27298
|
+
if (accessServiceProtocol === 'wfs') {
|
|
27299
|
+
const endpoint = await new WfsEndpoint(url).isReady();
|
|
27300
|
+
this.supportOffset = endpoint.supportsStartIndex();
|
|
27301
|
+
return endpoint.getServiceInfo();
|
|
27302
|
+
}
|
|
27303
|
+
else {
|
|
27304
|
+
const endpoint = await new OgcApiEndpoint(url);
|
|
27305
|
+
const firstCollection = (await endpoint.featureCollections)[0];
|
|
27306
|
+
return endpoint.getCollectionInfo(firstCollection);
|
|
27307
|
+
}
|
|
27308
|
+
}
|
|
27054
27309
|
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
|
|
27310
|
+
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 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\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$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { 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", "disabled"], 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
27311
|
}
|
|
27057
27312
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
27058
27313
|
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
|
|
27314
|
+
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 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\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
27315
|
}], propDecorators: { apiLink: [{
|
|
27061
27316
|
type: Input
|
|
27062
27317
|
}] } });
|
|
27063
27318
|
|
|
27064
27319
|
class RelatedRecordCardComponent {
|
|
27065
27320
|
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:
|
|
27321
|
+
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: i2$2.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
27322
|
}
|
|
27068
27323
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
27069
27324
|
type: Component,
|
|
@@ -27159,48 +27414,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27159
27414
|
}] } });
|
|
27160
27415
|
|
|
27161
27416
|
class CarouselComponent {
|
|
27417
|
+
get isFirstStep() {
|
|
27418
|
+
return this.currentStep === 0;
|
|
27419
|
+
}
|
|
27420
|
+
get isLastStep() {
|
|
27421
|
+
return this.currentStep === this.steps.length - 1;
|
|
27422
|
+
}
|
|
27423
|
+
get stepsCount() {
|
|
27424
|
+
return this.steps.length;
|
|
27425
|
+
}
|
|
27162
27426
|
constructor(changeDetector) {
|
|
27163
27427
|
this.changeDetector = changeDetector;
|
|
27164
27428
|
this.containerClass = '';
|
|
27165
|
-
this.stepsContainerClass = '';
|
|
27429
|
+
this.stepsContainerClass = 'w-full bottom-0 top-auto';
|
|
27430
|
+
this.currentStepChange = new EventEmitter();
|
|
27166
27431
|
this.steps = [];
|
|
27167
|
-
this.
|
|
27432
|
+
this.currentStep = 0;
|
|
27433
|
+
this.refreshSteps = () => {
|
|
27434
|
+
this.steps = this.emblaApi.scrollSnapList();
|
|
27435
|
+
this.currentStep = this.emblaApi.selectedScrollSnap();
|
|
27436
|
+
this.currentStepChange.emit(this.currentStep);
|
|
27437
|
+
this.changeDetector.detectChanges();
|
|
27438
|
+
};
|
|
27168
27439
|
}
|
|
27169
27440
|
ngAfterViewInit() {
|
|
27170
27441
|
this.emblaApi = EmblaCarousel(this.carouselOverflowContainer.nativeElement, {
|
|
27171
27442
|
duration: 15,
|
|
27172
27443
|
});
|
|
27173
|
-
const refreshSteps = () => {
|
|
27174
|
-
this.steps = this.emblaApi.scrollSnapList();
|
|
27175
|
-
this.selectedStep = this.emblaApi.selectedScrollSnap();
|
|
27176
|
-
this.changeDetector.detectChanges();
|
|
27177
|
-
};
|
|
27178
27444
|
this.emblaApi
|
|
27179
|
-
.on('init', refreshSteps)
|
|
27180
|
-
.on('reInit', refreshSteps)
|
|
27181
|
-
.on('select', refreshSteps);
|
|
27445
|
+
.on('init', this.refreshSteps)
|
|
27446
|
+
.on('reInit', this.refreshSteps)
|
|
27447
|
+
.on('select', this.refreshSteps);
|
|
27182
27448
|
}
|
|
27183
27449
|
scrollToStep(stepIndex) {
|
|
27184
27450
|
this.emblaApi.scrollTo(stepIndex);
|
|
27185
27451
|
}
|
|
27452
|
+
slideToPrevious() {
|
|
27453
|
+
if (this.isFirstStep)
|
|
27454
|
+
return;
|
|
27455
|
+
this.emblaApi.scrollPrev();
|
|
27456
|
+
}
|
|
27457
|
+
slideToNext() {
|
|
27458
|
+
if (this.isLastStep)
|
|
27459
|
+
return;
|
|
27460
|
+
this.emblaApi.scrollNext();
|
|
27461
|
+
}
|
|
27186
27462
|
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=\"
|
|
27463
|
+
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;display:block}.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
27464
|
}
|
|
27189
27465
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
27190
27466
|
type: Component,
|
|
27191
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"
|
|
27192
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
27467
|
+
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;display:block}.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"] }]
|
|
27468
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { carouselOverflowContainer: [{
|
|
27469
|
+
type: ViewChild,
|
|
27470
|
+
args: ['carouselOverflowContainer']
|
|
27471
|
+
}], containerClass: [{
|
|
27193
27472
|
type: Input
|
|
27194
27473
|
}], stepsContainerClass: [{
|
|
27195
27474
|
type: Input
|
|
27196
|
-
}],
|
|
27197
|
-
type:
|
|
27198
|
-
args: ['carouselOverflowContainer']
|
|
27475
|
+
}], currentStepChange: [{
|
|
27476
|
+
type: Output
|
|
27199
27477
|
}] } });
|
|
27200
27478
|
|
|
27201
27479
|
class FormFieldWrapperComponent {
|
|
27202
27480
|
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:
|
|
27481
|
+
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: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27204
27482
|
}
|
|
27205
27483
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
27206
27484
|
type: Component,
|
|
@@ -27349,17 +27627,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27349
27627
|
args: ['innerContainer']
|
|
27350
27628
|
}] } });
|
|
27351
27629
|
|
|
27630
|
+
class BlockListComponent {
|
|
27631
|
+
get pages() {
|
|
27632
|
+
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
27633
|
+
}
|
|
27634
|
+
get isFirstPage() {
|
|
27635
|
+
return this.currentPage === 0;
|
|
27636
|
+
}
|
|
27637
|
+
get isLastPage() {
|
|
27638
|
+
return this.currentPage === this.pagesCount - 1;
|
|
27639
|
+
}
|
|
27640
|
+
get pagesCount() {
|
|
27641
|
+
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
27642
|
+
}
|
|
27643
|
+
constructor(changeDetector) {
|
|
27644
|
+
this.changeDetector = changeDetector;
|
|
27645
|
+
this.pageSize = 5;
|
|
27646
|
+
this.containerClass = '';
|
|
27647
|
+
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
27648
|
+
this.minHeight = 0;
|
|
27649
|
+
this.currentPage = 0;
|
|
27650
|
+
this.refreshBlocksVisibility = () => {
|
|
27651
|
+
this.blocks.forEach((block, index) => {
|
|
27652
|
+
block.nativeElement.style.display =
|
|
27653
|
+
index >= this.currentPage * this.pageSize &&
|
|
27654
|
+
index < (this.currentPage + 1) * this.pageSize
|
|
27655
|
+
? null
|
|
27656
|
+
: 'none';
|
|
27657
|
+
});
|
|
27658
|
+
};
|
|
27659
|
+
}
|
|
27660
|
+
ngAfterViewInit() {
|
|
27661
|
+
this.blocks.changes.subscribe(this.refreshBlocksVisibility);
|
|
27662
|
+
this.refreshBlocksVisibility();
|
|
27663
|
+
// we store the first height as the min-height of the list container
|
|
27664
|
+
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
27665
|
+
this.changeDetector.detectChanges();
|
|
27666
|
+
}
|
|
27667
|
+
goToPage(index) {
|
|
27668
|
+
this.currentPage = Math.max(Math.min(index, this.pagesCount - 1), 0);
|
|
27669
|
+
this.changeDetector.detectChanges();
|
|
27670
|
+
this.refreshBlocksVisibility();
|
|
27671
|
+
}
|
|
27672
|
+
previousPage() {
|
|
27673
|
+
if (this.isFirstPage)
|
|
27674
|
+
return;
|
|
27675
|
+
this.goToPage(this.currentPage - 1);
|
|
27676
|
+
}
|
|
27677
|
+
nextPage() {
|
|
27678
|
+
if (this.isLastPage)
|
|
27679
|
+
return;
|
|
27680
|
+
this.goToPage(this.currentPage + 1);
|
|
27681
|
+
}
|
|
27682
|
+
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 }); }
|
|
27683
|
+
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 }); }
|
|
27684
|
+
}
|
|
27685
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
27686
|
+
type: Component,
|
|
27687
|
+
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"] }]
|
|
27688
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageSize: [{
|
|
27689
|
+
type: Input
|
|
27690
|
+
}], containerClass: [{
|
|
27691
|
+
type: Input
|
|
27692
|
+
}], paginationContainerClass: [{
|
|
27693
|
+
type: Input
|
|
27694
|
+
}], blocks: [{
|
|
27695
|
+
type: ContentChildren,
|
|
27696
|
+
args: ['block', { read: ElementRef }]
|
|
27697
|
+
}], blockContainer: [{
|
|
27698
|
+
type: ViewChild,
|
|
27699
|
+
args: ['blockContainer']
|
|
27700
|
+
}] } });
|
|
27701
|
+
|
|
27352
27702
|
class UiLayoutModule {
|
|
27353
27703
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27354
27704
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, declarations: [ExpandablePanelComponent,
|
|
27355
27705
|
StickyHeaderComponent,
|
|
27356
27706
|
AnchorLinkDirective,
|
|
27357
|
-
ExpandablePanelButtonComponent,
|
|
27358
|
-
CarouselComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27707
|
+
ExpandablePanelButtonComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27359
27708
|
StickyHeaderComponent,
|
|
27360
27709
|
AnchorLinkDirective,
|
|
27361
|
-
ExpandablePanelButtonComponent
|
|
27362
|
-
CarouselComponent] }); }
|
|
27710
|
+
ExpandablePanelButtonComponent] }); }
|
|
27363
27711
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, imports: [CommonModule, MatIconModule, TranslateModule.forChild()] }); }
|
|
27364
27712
|
}
|
|
27365
27713
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, decorators: [{
|
|
@@ -27371,14 +27719,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27371
27719
|
StickyHeaderComponent,
|
|
27372
27720
|
AnchorLinkDirective,
|
|
27373
27721
|
ExpandablePanelButtonComponent,
|
|
27374
|
-
CarouselComponent,
|
|
27375
27722
|
],
|
|
27376
27723
|
exports: [
|
|
27377
27724
|
ExpandablePanelComponent,
|
|
27378
27725
|
StickyHeaderComponent,
|
|
27379
27726
|
AnchorLinkDirective,
|
|
27380
27727
|
ExpandablePanelButtonComponent,
|
|
27381
|
-
CarouselComponent,
|
|
27382
27728
|
],
|
|
27383
27729
|
}]
|
|
27384
27730
|
}] });
|
|
@@ -27388,7 +27734,7 @@ class UserPreviewComponent {
|
|
|
27388
27734
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
27389
27735
|
}
|
|
27390
27736
|
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:
|
|
27737
|
+
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: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27392
27738
|
}
|
|
27393
27739
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
27394
27740
|
type: Component,
|
|
@@ -27512,7 +27858,6 @@ class UiElementsModule {
|
|
|
27512
27858
|
DownloadItemComponent,
|
|
27513
27859
|
DownloadsListComponent,
|
|
27514
27860
|
ApiCardComponent,
|
|
27515
|
-
LinkCardComponent,
|
|
27516
27861
|
RelatedRecordCardComponent,
|
|
27517
27862
|
MetadataContactComponent,
|
|
27518
27863
|
MetadataCatalogComponent,
|
|
@@ -27543,7 +27888,6 @@ class UiElementsModule {
|
|
|
27543
27888
|
DownloadItemComponent,
|
|
27544
27889
|
DownloadsListComponent,
|
|
27545
27890
|
ApiCardComponent,
|
|
27546
|
-
LinkCardComponent,
|
|
27547
27891
|
RelatedRecordCardComponent,
|
|
27548
27892
|
MetadataContactComponent,
|
|
27549
27893
|
MetadataCatalogComponent,
|
|
@@ -27597,7 +27941,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27597
27941
|
DownloadItemComponent,
|
|
27598
27942
|
DownloadsListComponent,
|
|
27599
27943
|
ApiCardComponent,
|
|
27600
|
-
LinkCardComponent,
|
|
27601
27944
|
RelatedRecordCardComponent,
|
|
27602
27945
|
MetadataContactComponent,
|
|
27603
27946
|
MetadataCatalogComponent,
|
|
@@ -27620,7 +27963,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27620
27963
|
DownloadItemComponent,
|
|
27621
27964
|
DownloadsListComponent,
|
|
27622
27965
|
ApiCardComponent,
|
|
27623
|
-
LinkCardComponent,
|
|
27624
27966
|
RelatedRecordCardComponent,
|
|
27625
27967
|
MetadataContactComponent,
|
|
27626
27968
|
MetadataCatalogComponent,
|
|
@@ -29965,7 +30307,7 @@ class AddLayerFromWmsComponent {
|
|
|
29965
30307
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
29966
30308
|
}
|
|
29967
30309
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29968
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\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: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30310
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\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: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29969
30311
|
}
|
|
29970
30312
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, decorators: [{
|
|
29971
30313
|
type: Component,
|
|
@@ -30116,7 +30458,7 @@ class AddLayerFromWfsComponent {
|
|
|
30116
30458
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
30117
30459
|
}
|
|
30118
30460
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30119
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\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: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30461
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\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: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30120
30462
|
}
|
|
30121
30463
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, decorators: [{
|
|
30122
30464
|
type: Component,
|
|
@@ -30136,7 +30478,7 @@ class LayersPanelComponent {
|
|
|
30136
30478
|
this.mapFacade.addLayer(layer);
|
|
30137
30479
|
}
|
|
30138
30480
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$
|
|
30481
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: AddLayerFromOgcApiComponent, selector: "gn-ui-add-layer-from-ogc-api", inputs: ["ogcUrl"], outputs: ["layerAdded"] }, { kind: "component", type: AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30140
30482
|
}
|
|
30141
30483
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
30142
30484
|
type: Component,
|
|
@@ -30994,7 +31336,7 @@ class TableComponent {
|
|
|
30994
31336
|
return rowIdPrefix + id;
|
|
30995
31337
|
}
|
|
30996
31338
|
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$
|
|
31339
|
+
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$5.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$1.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
31340
|
}
|
|
30999
31341
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, decorators: [{
|
|
31000
31342
|
type: Component,
|
|
@@ -31864,6 +32206,7 @@ marker('wfs.unreachable.http');
|
|
|
31864
32206
|
marker('wfs.unreachable.unknown');
|
|
31865
32207
|
marker('wfs.featuretype.notfound');
|
|
31866
32208
|
marker('wfs.geojsongml.notsupported');
|
|
32209
|
+
marker('ogc.unreachable.unknown');
|
|
31867
32210
|
marker('dataset.error.network');
|
|
31868
32211
|
marker('dataset.error.http');
|
|
31869
32212
|
marker('dataset.error.parse');
|
|
@@ -31943,6 +32286,27 @@ class DataService {
|
|
|
31943
32286
|
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
31944
32287
|
}))));
|
|
31945
32288
|
}
|
|
32289
|
+
async getDownloadLinksFromOgcApiFeatures(ogcApiLink) {
|
|
32290
|
+
const collectionInfo = await this.getDownloadUrlsFromOgcApi(ogcApiLink.url.href);
|
|
32291
|
+
return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
|
|
32292
|
+
return {
|
|
32293
|
+
...ogcApiLink,
|
|
32294
|
+
type: 'download',
|
|
32295
|
+
url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
|
|
32296
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
|
|
32297
|
+
};
|
|
32298
|
+
});
|
|
32299
|
+
}
|
|
32300
|
+
async getDownloadUrlsFromOgcApi(url) {
|
|
32301
|
+
const endpoint = new OgcApiEndpoint(this.proxy.getProxiedUrl(url));
|
|
32302
|
+
return await endpoint.featureCollections
|
|
32303
|
+
.then((collections) => {
|
|
32304
|
+
return endpoint.getCollectionInfo(collections[0]);
|
|
32305
|
+
})
|
|
32306
|
+
.catch((error) => {
|
|
32307
|
+
throw new Error(`ogc.unreachable.unknown`);
|
|
32308
|
+
});
|
|
32309
|
+
}
|
|
31946
32310
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
31947
32311
|
return ['json', 'geojson'].map((format) => ({
|
|
31948
32312
|
...esriRestLink,
|
|
@@ -31986,6 +32350,17 @@ class DataService {
|
|
|
31986
32350
|
const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
|
|
31987
32351
|
return from(openDataset(url, 'geojson')).pipe();
|
|
31988
32352
|
}
|
|
32353
|
+
else if (link.type === 'service' &&
|
|
32354
|
+
link.accessServiceProtocol === 'ogcFeatures') {
|
|
32355
|
+
return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
|
|
32356
|
+
const geojsonUrl = collectionInfo.jsonDownloadLink;
|
|
32357
|
+
return openDataset(geojsonUrl, 'geojson');
|
|
32358
|
+
}), tap$1((url) => {
|
|
32359
|
+
if (url === null) {
|
|
32360
|
+
throw new Error('wfs.geojsongml.notsupported');
|
|
32361
|
+
}
|
|
32362
|
+
}));
|
|
32363
|
+
}
|
|
31989
32364
|
return throwError(() => 'protocol not supported');
|
|
31990
32365
|
}
|
|
31991
32366
|
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 +32819,8 @@ class MapViewComponent {
|
|
|
32444
32819
|
}
|
|
32445
32820
|
else if ((link.type === 'service' &&
|
|
32446
32821
|
(link.accessServiceProtocol === 'wfs' ||
|
|
32447
|
-
link.accessServiceProtocol === 'esriRest'
|
|
32822
|
+
link.accessServiceProtocol === 'esriRest' ||
|
|
32823
|
+
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
32448
32824
|
link.type === 'download') {
|
|
32449
32825
|
return this.dataService.readAsGeoJson(link).pipe(map$1((data) => ({
|
|
32450
32826
|
type: MapContextLayerTypeEnum.GEOJSON,
|
|
@@ -33042,7 +33418,7 @@ class DataViewShareComponent {
|
|
|
33042
33418
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
33043
33419
|
}
|
|
33044
33420
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewShareComponent, deps: [{ token: WEB_COMPONENT_EMBEDDER_URL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33045
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewShareComponent, selector: "gn-ui-data-view-share", ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$
|
|
33421
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewShareComponent, selector: "gn-ui-data-view-share", ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink" }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33046
33422
|
}
|
|
33047
33423
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewShareComponent, decorators: [{
|
|
33048
33424
|
type: Component,
|
|
@@ -33171,6 +33547,20 @@ const DEFAULT_FIELDS = [
|
|
|
33171
33547
|
},
|
|
33172
33548
|
onSaveProcess: '${dateNow()}',
|
|
33173
33549
|
},
|
|
33550
|
+
{
|
|
33551
|
+
model: 'licenses',
|
|
33552
|
+
formFieldConfig: {
|
|
33553
|
+
labelKey: marker('editor.record.form.license'),
|
|
33554
|
+
type: 'list',
|
|
33555
|
+
},
|
|
33556
|
+
},
|
|
33557
|
+
{
|
|
33558
|
+
model: 'resourceUpdated',
|
|
33559
|
+
formFieldConfig: {
|
|
33560
|
+
labelKey: marker('editor.record.form.resourceUpdated'),
|
|
33561
|
+
type: 'date',
|
|
33562
|
+
},
|
|
33563
|
+
},
|
|
33174
33564
|
];
|
|
33175
33565
|
|
|
33176
33566
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
@@ -33555,7 +33945,7 @@ class WizardFieldComponent {
|
|
|
33555
33945
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
33556
33946
|
},
|
|
33557
33947
|
{ 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:
|
|
33948
|
+
], 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", "disabled"], 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$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33559
33949
|
}
|
|
33560
33950
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
33561
33951
|
type: Component,
|
|
@@ -33884,6 +34274,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33884
34274
|
args: [{ selector: 'gn-ui-form-field-temporal-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-temporal-extent works!</p>\n" }]
|
|
33885
34275
|
}] });
|
|
33886
34276
|
|
|
34277
|
+
class FormFieldLicenseComponent {
|
|
34278
|
+
constructor() {
|
|
34279
|
+
this.choices = [
|
|
34280
|
+
{
|
|
34281
|
+
value: 'cc-by',
|
|
34282
|
+
label: marker('editor.record.form.license.cc-by'),
|
|
34283
|
+
},
|
|
34284
|
+
{
|
|
34285
|
+
value: 'cc-by-sa',
|
|
34286
|
+
label: marker('editor.record.form.license.cc-by-sa'),
|
|
34287
|
+
},
|
|
34288
|
+
{
|
|
34289
|
+
value: 'cc-zero',
|
|
34290
|
+
label: marker('editor.record.form.license.cc-zero'),
|
|
34291
|
+
},
|
|
34292
|
+
{
|
|
34293
|
+
value: 'etalab',
|
|
34294
|
+
label: marker('editor.record.form.license.etalab'),
|
|
34295
|
+
},
|
|
34296
|
+
{
|
|
34297
|
+
value: 'etalab-v2',
|
|
34298
|
+
label: marker('editor.record.form.license.etalab-v2'),
|
|
34299
|
+
},
|
|
34300
|
+
{
|
|
34301
|
+
value: 'odbl',
|
|
34302
|
+
label: marker('editor.record.form.license.odbl'),
|
|
34303
|
+
},
|
|
34304
|
+
{
|
|
34305
|
+
value: 'odc-by',
|
|
34306
|
+
label: marker('editor.record.form.license.odc-by'),
|
|
34307
|
+
},
|
|
34308
|
+
{
|
|
34309
|
+
value: 'pddl',
|
|
34310
|
+
label: marker('editor.record.form.license.pddl'),
|
|
34311
|
+
},
|
|
34312
|
+
{
|
|
34313
|
+
value: 'unknown',
|
|
34314
|
+
label: marker('editor.record.form.license.unknown'),
|
|
34315
|
+
},
|
|
34316
|
+
];
|
|
34317
|
+
}
|
|
34318
|
+
get selected() {
|
|
34319
|
+
return this.control.value[0]?.text;
|
|
34320
|
+
}
|
|
34321
|
+
onSelectValue(value) {
|
|
34322
|
+
this.control.setValue([{ text: value }]);
|
|
34323
|
+
}
|
|
34324
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34325
|
+
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 }); }
|
|
34326
|
+
}
|
|
34327
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, decorators: [{
|
|
34328
|
+
type: Component,
|
|
34329
|
+
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" }]
|
|
34330
|
+
}], propDecorators: { control: [{
|
|
34331
|
+
type: Input
|
|
34332
|
+
}], label: [{
|
|
34333
|
+
type: Input
|
|
34334
|
+
}] } });
|
|
34335
|
+
|
|
34336
|
+
class FormFieldResourceUpdatedComponent {
|
|
34337
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34338
|
+
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 }); }
|
|
34339
|
+
}
|
|
34340
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, decorators: [{
|
|
34341
|
+
type: Component,
|
|
34342
|
+
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" }]
|
|
34343
|
+
}], propDecorators: { control: [{
|
|
34344
|
+
type: Input
|
|
34345
|
+
}] } });
|
|
34346
|
+
|
|
33887
34347
|
class FormFieldComponent {
|
|
33888
34348
|
set value(v) {
|
|
33889
34349
|
this.formControl.setValue(v, {
|
|
@@ -33938,8 +34398,17 @@ class FormFieldComponent {
|
|
|
33938
34398
|
get isAbstract() {
|
|
33939
34399
|
return this.model === 'abstract';
|
|
33940
34400
|
}
|
|
34401
|
+
get isLicenses() {
|
|
34402
|
+
return this.model === 'licenses';
|
|
34403
|
+
}
|
|
34404
|
+
get isResourceUpdated() {
|
|
34405
|
+
return this.model === 'resourceUpdated';
|
|
34406
|
+
}
|
|
34407
|
+
get withoutWrapper() {
|
|
34408
|
+
return this.model === 'title' || this.model === 'abstract';
|
|
34409
|
+
}
|
|
33941
34410
|
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 <
|
|
34411
|
+
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: i2$2.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
34412
|
}
|
|
33944
34413
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
33945
34414
|
type: Component,
|
|
@@ -33949,6 +34418,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33949
34418
|
EditableLabelDirective,
|
|
33950
34419
|
MatIconModule,
|
|
33951
34420
|
MatTooltipModule,
|
|
34421
|
+
FormFieldWrapperComponent,
|
|
34422
|
+
FormFieldLicenseComponent,
|
|
34423
|
+
FormFieldResourceUpdatedComponent,
|
|
33952
34424
|
FormFieldSimpleComponent,
|
|
33953
34425
|
FormFieldRichComponent,
|
|
33954
34426
|
FormFieldObjectComponent,
|
|
@@ -33957,7 +34429,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33957
34429
|
FormFieldFileComponent,
|
|
33958
34430
|
FormFieldArrayComponent,
|
|
33959
34431
|
TranslateModule,
|
|
33960
|
-
], template: "<div class=\"flex flex-col h-full\">\n <
|
|
34432
|
+
], 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
34433
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
33962
34434
|
type: Input
|
|
33963
34435
|
}], config: [{
|
|
@@ -34315,7 +34787,7 @@ class DefaultRouterModule {
|
|
|
34315
34787
|
};
|
|
34316
34788
|
}
|
|
34317
34789
|
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$
|
|
34790
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$2.StoreRouterConnectingModule, i1$8.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
34319
34791
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
34320
34792
|
RouterFacade,
|
|
34321
34793
|
{
|
|
@@ -34358,5 +34830,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
34358
34830
|
* Generated bundle index. Do not edit.
|
|
34359
34831
|
*/
|
|
34360
34832
|
|
|
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 };
|
|
34833
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, 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, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, 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, LicenseSearchField, 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, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, 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, SimpleSearchField, 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, TranslatedSearchField, 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
34834
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|