geonetwork-ui 2.4.0-dev.aa5f997e → 2.4.0-dev.b0bcda82
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/api/metadata-converter/src/index.mjs +1 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +5 -5
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +30 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.mjs +31 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +23 -1
- package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +10 -3
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +21 -4
- package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +28 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +29 -0
- package/esm2022/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.mjs +131 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +170 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.mjs +47 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +21 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +7 -6
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +33 -9
- package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +30 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +10 -5
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +3 -3
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +40 -7
- package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +6 -2
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +27 -0
- package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +4 -3
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/sortable-list/sortable-list.component.mjs +7 -3
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +19 -5
- package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +49 -11
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +18 -6
- package/esm2022/translations/de.json +41 -16
- package/esm2022/translations/en.json +34 -9
- package/esm2022/translations/es.json +34 -9
- package/esm2022/translations/fr.json +44 -19
- package/esm2022/translations/it.json +34 -9
- package/esm2022/translations/nl.json +34 -9
- package/esm2022/translations/pt.json +34 -9
- package/fesm2022/geonetwork-ui.mjs +1134 -263
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/index.d.ts +0 -1
- package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +8 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts +5 -0
- package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +3 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +6 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/contact.model.d.ts +1 -0
- package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +2 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +8 -0
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts +12 -0
- package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts +27 -0
- package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +47 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts +17 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +11 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts +3 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +9 -1
- 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 +7 -0
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +11 -3
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
- package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +18 -0
- package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts +4 -4
- package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts +9 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +10 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +6 -2
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/index.ts +0 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +37 -12
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +4 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +72 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.ts +39 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +70 -1
- package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +13 -5
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +24 -4
- package/src/libs/common/domain/src/lib/model/record/contact.model.ts +28 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -1
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +10 -0
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +25 -0
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.ts +30 -0
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +2 -1
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +110 -19
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +76 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +271 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.html +6 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-open-data/form-field-open-data.component.ts +59 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +5 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +22 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +8 -7
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +18 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -1
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +1 -1
- package/src/libs/feature/editor/src/lib/fields.config.ts +32 -2
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -4
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +2 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +52 -3
- package/src/libs/feature/search/src/lib/state/search.facade.ts +6 -0
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.css +0 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +12 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +37 -0
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +4 -1
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +2 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +12 -8
- package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.html +3 -1
- package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.ts +8 -4
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +15 -3
- package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +1 -1
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +1 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +10 -1
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +55 -3
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -2
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +9 -9
- package/translations/de.json +41 -16
- package/translations/en.json +34 -9
- package/translations/es.json +34 -9
- package/translations/fr.json +44 -19
- package/translations/it.json +34 -9
- package/translations/nl.json +34 -9
- package/translations/pt.json +34 -9
- package/translations/sk.json +34 -9
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { parseXml, XmlDocument, XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
2
|
+
import GML32 from 'ol/format/GML32';
|
|
3
|
+
import GeoJSON from 'ol/format/GeoJSON';
|
|
4
|
+
import { parse as parse$1 } from 'ol/xml';
|
|
2
5
|
import format from 'date-fns/format';
|
|
3
6
|
import * as i0 from '@angular/core';
|
|
4
7
|
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, TemplateRef, ElementRef, ViewChildren, ViewContainerRef, HostBinding, ContentChild, ContentChildren, Host, Pipe, inject } from '@angular/core';
|
|
@@ -12,7 +15,7 @@ import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith,
|
|
|
12
15
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
16
|
import * as i1$3 from '@angular/common';
|
|
14
17
|
import { CommonModule, NgFor, NgComponentOutlet, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, throwError, combineLatest, from, takeLast, forkJoin, firstValueFrom,
|
|
18
|
+
import { of, map as map$2, lastValueFrom, Subject, switchMap, throwError, combineLatest, from, takeLast, forkJoin, firstValueFrom, merge, BehaviorSubject, fromEvent, timer, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, filter as filter$1, animationFrameScheduler, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, exhaustMap, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
19
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
20
|
import * as i1$2 from '@ngrx/store';
|
|
18
21
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
@@ -23,7 +26,6 @@ import 'ol/Feature';
|
|
|
23
26
|
import { Circle, Fill, Stroke, Style as Style$1 } from 'ol/style';
|
|
24
27
|
import Style, { createDefaultStyle } from 'ol/style/Style';
|
|
25
28
|
import { extend, isEmpty } from 'ol/extent';
|
|
26
|
-
import GeoJSON from 'ol/format/GeoJSON';
|
|
27
29
|
import { transformExtent, fromLonLat } from 'ol/proj';
|
|
28
30
|
import ImageWMS from 'ol/source/ImageWMS';
|
|
29
31
|
import TileWMS from 'ol/source/TileWMS';
|
|
@@ -33,7 +35,7 @@ import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } fro
|
|
|
33
35
|
import chroma from 'chroma-js';
|
|
34
36
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
35
37
|
import { register, fromEPSGCode } from 'ol/proj/proj4';
|
|
36
|
-
import proj4 from 'proj4
|
|
38
|
+
import proj4 from 'proj4';
|
|
37
39
|
import { defaults } from 'ol/control/defaults';
|
|
38
40
|
import * as TOML from '@ltd/j-toml';
|
|
39
41
|
import CircleStyle from 'ol/style/Circle';
|
|
@@ -48,13 +50,13 @@ import { MVT, WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
|
48
50
|
import VectorTileLayer from 'ol/layer/VectorTile';
|
|
49
51
|
import OGCMapTile from 'ol/source/OGCMapTile.js';
|
|
50
52
|
import ImageLayer from 'ol/layer/Image';
|
|
51
|
-
import * as i2$
|
|
53
|
+
import * as i2$4 from '@angular/material/tabs';
|
|
52
54
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
53
55
|
import * as i2$2 from '@angular/forms';
|
|
54
56
|
import { FormsModule, ReactiveFormsModule, UntypedFormControl, FormArray, FormControl } from '@angular/forms';
|
|
55
57
|
import * as i2$1 from '@angular/material/autocomplete';
|
|
56
58
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
57
|
-
import * as i3$
|
|
59
|
+
import * as i3$2 from 'ngx-dropzone';
|
|
58
60
|
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
59
61
|
import * as i5 from 'ngx-chips';
|
|
60
62
|
import { TagInputModule } from 'ngx-chips';
|
|
@@ -65,45 +67,47 @@ import * as i3 from '@angular/material/core';
|
|
|
65
67
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
66
68
|
import * as i1$5 from '@angular/material/checkbox';
|
|
67
69
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
68
|
-
import * as
|
|
70
|
+
import * as i3$1 from '@angular/material/tooltip';
|
|
69
71
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
70
|
-
import * as i2$
|
|
72
|
+
import * as i2$3 from '@angular/material/datepicker';
|
|
71
73
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
72
74
|
import * as i1$6 from '@angular/cdk/overlay';
|
|
73
75
|
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
74
76
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
75
77
|
import { MatInputModule } from '@angular/material/input';
|
|
76
|
-
import * as i1$
|
|
78
|
+
import * as i1$8 from '@angular/router';
|
|
77
79
|
import { RouterModule, RouterLink, RouteReuseStrategy } from '@angular/router';
|
|
78
80
|
import Duration from 'duration-relativetimeformat';
|
|
81
|
+
import * as i1$7 from '@angular/material/dialog';
|
|
82
|
+
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
79
83
|
import * as basicLightbox from 'basiclightbox';
|
|
80
84
|
import { marked } from 'marked';
|
|
81
85
|
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
82
86
|
import EmblaCarousel from 'embla-carousel';
|
|
83
87
|
import { formatDistance } from 'date-fns';
|
|
84
88
|
import { enUS, sk, pt as pt$1, nl as nl$1, it as it$1, es as es$1, de as de$1, fr as fr$1 } from 'date-fns/locale';
|
|
85
|
-
import * as
|
|
89
|
+
import * as i4 from '@angular/material/menu';
|
|
86
90
|
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
87
|
-
import * as i1$
|
|
91
|
+
import * as i1$9 from '@ngrx/effects';
|
|
88
92
|
import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
89
93
|
import { valid as valid$1 } from 'geojson-validation';
|
|
94
|
+
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
90
95
|
import { Polygon } from 'ol/geom';
|
|
91
96
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
92
|
-
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
93
97
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
94
|
-
import * as i4 from '@angular/cdk/scrolling';
|
|
98
|
+
import * as i4$1 from '@angular/cdk/scrolling';
|
|
95
99
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
96
|
-
import * as i2$
|
|
100
|
+
import * as i2$5 from '@angular/material/sort';
|
|
97
101
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
98
|
-
import * as i1$
|
|
102
|
+
import * as i1$a from '@angular/material/table';
|
|
99
103
|
import { MatTableModule } from '@angular/material/table';
|
|
100
|
-
import * as i3$
|
|
104
|
+
import * as i3$3 from 'ng-table-virtual-scroll';
|
|
101
105
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
102
106
|
import * as Papa from 'papaparse';
|
|
103
107
|
import parseDate from 'date-fns/parse';
|
|
104
108
|
import parseIsoDate from 'date-fns/parseISO';
|
|
105
109
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
106
|
-
import * as i3$
|
|
110
|
+
import * as i3$4 from '@ngrx/router-store';
|
|
107
111
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
108
112
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
109
113
|
|
|
@@ -271,6 +275,9 @@ function allChildrenElement(element) {
|
|
|
271
275
|
...element.children.filter((el) => el instanceof XmlElement),
|
|
272
276
|
];
|
|
273
277
|
}
|
|
278
|
+
function firstChildElement(element) {
|
|
279
|
+
return allChildrenElement(element)[0] ?? null;
|
|
280
|
+
}
|
|
274
281
|
/**
|
|
275
282
|
* Will return all matching elements nested according to the given
|
|
276
283
|
* names (similar to a path), starting form the input element;
|
|
@@ -321,10 +328,12 @@ function findParent(parentName) {
|
|
|
321
328
|
}
|
|
322
329
|
function readText() {
|
|
323
330
|
return (el) => {
|
|
324
|
-
|
|
331
|
+
if (!el)
|
|
332
|
+
return null;
|
|
333
|
+
const textNode = Array.isArray(el.children)
|
|
325
334
|
? el.children.find((node) => node.type === 'text')
|
|
326
335
|
: null;
|
|
327
|
-
return textNode ? textNode.text :
|
|
336
|
+
return textNode ? textNode.text : '';
|
|
328
337
|
};
|
|
329
338
|
}
|
|
330
339
|
function readAttribute(attrName) {
|
|
@@ -429,10 +438,12 @@ function getTreeRoot(element) {
|
|
|
429
438
|
}
|
|
430
439
|
// stays on the parent element
|
|
431
440
|
// if the given elements are part of a subtree, will add the root of subtree
|
|
441
|
+
// will filter out falsy elements
|
|
432
442
|
function appendChildren(...childrenFns) {
|
|
433
443
|
return (element) => {
|
|
434
444
|
if (!element)
|
|
435
445
|
return null;
|
|
446
|
+
childrenFns = childrenFns.filter((fn) => fn);
|
|
436
447
|
element.children.push(...childrenFns.map((fn) => fn()).map(getTreeRoot));
|
|
437
448
|
element.children.forEach((el) => (el.parent = element));
|
|
438
449
|
return element;
|
|
@@ -561,6 +572,33 @@ function matchMimeType(format) {
|
|
|
561
572
|
return format || null;
|
|
562
573
|
}
|
|
563
574
|
|
|
575
|
+
function readGeometry(el) {
|
|
576
|
+
const xmlDoc = createDocument(el);
|
|
577
|
+
xmlDoc.root.attributes['xmlns'] = 'http://www.opengis.net/gml/3.2';
|
|
578
|
+
const gmlString = xmlToString(xmlDoc);
|
|
579
|
+
const doc = parse$1(gmlString);
|
|
580
|
+
// we need an intermediate node to be able to parse the GML
|
|
581
|
+
const node = document.createElement('pre');
|
|
582
|
+
node.appendChild(doc.documentElement);
|
|
583
|
+
const gml32Format = new GML32();
|
|
584
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
585
|
+
// @ts-ignore
|
|
586
|
+
const geometry = gml32Format.readGeometryFromNode(node);
|
|
587
|
+
const geojsonFormat = new GeoJSON();
|
|
588
|
+
return geojsonFormat.writeGeometryObject(geometry);
|
|
589
|
+
}
|
|
590
|
+
function writeGeometry(geometryObject) {
|
|
591
|
+
const geojsonFormat = new GeoJSON();
|
|
592
|
+
const geometry = geojsonFormat.readGeometry(geometryObject);
|
|
593
|
+
const gml32Format = new GML32();
|
|
594
|
+
const node = gml32Format.writeGeometryNode(geometry);
|
|
595
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
596
|
+
// @ts-ignore
|
|
597
|
+
const element = node.firstElementChild;
|
|
598
|
+
const gmlString = new XMLSerializer().serializeToString(element);
|
|
599
|
+
return getRootElement(parseXmlString(gmlString));
|
|
600
|
+
}
|
|
601
|
+
|
|
564
602
|
/**
|
|
565
603
|
* Parts are [firstName, lastName]
|
|
566
604
|
* Second part will be null if no separation could be done
|
|
@@ -729,6 +767,9 @@ function extractCharacterString() {
|
|
|
729
767
|
function extractDateTime() {
|
|
730
768
|
return pipe(fallback(findChildElement('gco:DateTime', false), findChildElement('gco:Date', false)), readText(), map((dateStr) => (dateStr ? new Date(dateStr) : null)));
|
|
731
769
|
}
|
|
770
|
+
function extractDecimal() {
|
|
771
|
+
return pipe(findChildElement('gco:Decimal', false), readText(), map((numberStr) => (numberStr ? Number(numberStr) : null)));
|
|
772
|
+
}
|
|
732
773
|
function extractUrl() {
|
|
733
774
|
const getUrl = pipe(findChildElement('gmd:URL', false), readText());
|
|
734
775
|
const getCharacterString = pipe(findChildElement('gco:CharacterString', false), readText());
|
|
@@ -1086,6 +1127,30 @@ function readTemporalExtents(rootEl) {
|
|
|
1086
1127
|
}
|
|
1087
1128
|
}))(rootEl);
|
|
1088
1129
|
}
|
|
1130
|
+
function readSpatialExtents(rootEl) {
|
|
1131
|
+
const extractGeometry = (rootEl) => {
|
|
1132
|
+
if (!rootEl)
|
|
1133
|
+
return null;
|
|
1134
|
+
return pipe(findChildElement('gmd:polygon', false), firstChildElement, map((el) => readGeometry(el)))(rootEl);
|
|
1135
|
+
};
|
|
1136
|
+
const extractBBox = (rootEl) => {
|
|
1137
|
+
if (!rootEl)
|
|
1138
|
+
return null;
|
|
1139
|
+
return pipe(combine(pipe(findChildElement('gmd:westBoundLongitude'), extractDecimal()), pipe(findChildElement('gmd:southBoundLatitude'), extractDecimal()), pipe(findChildElement('gmd:eastBoundLongitude'), extractDecimal()), pipe(findChildElement('gmd:northBoundLatitude'), extractDecimal())))(rootEl);
|
|
1140
|
+
};
|
|
1141
|
+
const extractDescription = (rootEl) => {
|
|
1142
|
+
if (!rootEl)
|
|
1143
|
+
return null;
|
|
1144
|
+
return pipe(findNestedElement('gmd:geographicIdentifier', 'gmd:MD_Identifier', 'gmd:code'), extractCharacterString())(rootEl);
|
|
1145
|
+
};
|
|
1146
|
+
return pipe(findIdentification(), findNestedElements('gmd:extent', 'gmd:EX_Extent', 'gmd:geographicElement'), mapArray(combine(pipe(findChildElement('gmd:EX_BoundingPolygon'), extractGeometry), pipe(findChildElement('gmd:EX_GeographicBoundingBox'), extractBBox), pipe(findChildElement('gmd:EX_GeographicDescription'), extractDescription))), mapArray(([geometry, bbox, description]) => {
|
|
1147
|
+
return {
|
|
1148
|
+
...(geometry && { geometry }),
|
|
1149
|
+
...(bbox && { bbox }),
|
|
1150
|
+
...(description && { description }),
|
|
1151
|
+
};
|
|
1152
|
+
}))(rootEl);
|
|
1153
|
+
}
|
|
1089
1154
|
|
|
1090
1155
|
function writeCharacterString(text) {
|
|
1091
1156
|
return tap(pipe(findChildOrCreate('gco:CharacterString'), setTextContent(text)));
|
|
@@ -1102,6 +1167,9 @@ function writeDateTime(date) {
|
|
|
1102
1167
|
function writeDate(date) {
|
|
1103
1168
|
return tap(pipe(findChildOrCreate('gco:Date'), setTextContent(format(date, 'yyyy-MM-dd'))));
|
|
1104
1169
|
}
|
|
1170
|
+
function writeDecimal(decimal) {
|
|
1171
|
+
return tap(pipe(findChildOrCreate('gco:Decimal'), setTextContent(decimal.toString())));
|
|
1172
|
+
}
|
|
1105
1173
|
function getProgressCode(status) {
|
|
1106
1174
|
switch (status) {
|
|
1107
1175
|
case 'completed':
|
|
@@ -1495,6 +1563,24 @@ function writeTemporalExtents(record, rootEl) {
|
|
|
1495
1563
|
? setTextContent(format(extent.start, 'yyyy-MM-dd'))
|
|
1496
1564
|
: addAttribute('indeterminatePosition', 'unknown'))))))))))(rootEl);
|
|
1497
1565
|
}
|
|
1566
|
+
function writeSpatialExtents(record, rootEl) {
|
|
1567
|
+
const appendBoundingPolygon = (geometry) => {
|
|
1568
|
+
if (!geometry)
|
|
1569
|
+
return null;
|
|
1570
|
+
return pipe(createElement('gmd:EX_BoundingPolygon'), appendChildren(pipe(createElement('gmd:polygon'), appendChildren(() => writeGeometry(geometry)))));
|
|
1571
|
+
};
|
|
1572
|
+
const appendGeographicBoundingBox = (bbox) => {
|
|
1573
|
+
if (!bbox)
|
|
1574
|
+
return null;
|
|
1575
|
+
return pipe(createElement('gmd:EX_GeographicBoundingBox'), appendChildren(pipe(createElement('gmd:westBoundLongitude'), writeDecimal(bbox[0])), pipe(createElement('gmd:eastBoundLongitude'), writeDecimal(bbox[2])), pipe(createElement('gmd:southBoundLatitude'), writeDecimal(bbox[1])), pipe(createElement('gmd:northBoundLatitude'), writeDecimal(bbox[3]))));
|
|
1576
|
+
};
|
|
1577
|
+
const appendGeographicDescription = (description) => {
|
|
1578
|
+
if (!description)
|
|
1579
|
+
return null;
|
|
1580
|
+
return pipe(createElement('gmd:EX_GeographicDescription'), createChild('gmd:geographicIdentifier'), createChild('gmd:MD_Identifier'), createChild('gmd:code'), writeCharacterString(description));
|
|
1581
|
+
};
|
|
1582
|
+
pipe(findOrCreateIdentification(), findNestedChildOrCreate('gmd:extent', 'gmd:EX_Extent'), removeChildrenByName('gmd:geographicElement'), appendChildren(...record.spatialExtents.map((extent) => pipe(createElement('gmd:geographicElement'), appendChildren(appendBoundingPolygon(extent.geometry), appendGeographicBoundingBox(extent.bbox), appendGeographicDescription(extent.description))))))(rootEl);
|
|
1583
|
+
}
|
|
1498
1584
|
|
|
1499
1585
|
class Iso19139Converter extends BaseConverter {
|
|
1500
1586
|
constructor() {
|
|
@@ -1527,8 +1613,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1527
1613
|
distributions: readDistributions$1,
|
|
1528
1614
|
onlineResources: readOnlineResources,
|
|
1529
1615
|
temporalExtents: readTemporalExtents,
|
|
1616
|
+
spatialExtents: readSpatialExtents,
|
|
1530
1617
|
// TODO
|
|
1531
|
-
spatialExtents: () => [],
|
|
1532
1618
|
extras: () => undefined,
|
|
1533
1619
|
landingPage: () => undefined,
|
|
1534
1620
|
languages: () => [],
|
|
@@ -1561,8 +1647,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
1561
1647
|
distributions: writeDistributions$1,
|
|
1562
1648
|
onlineResources: writeOnlineResources,
|
|
1563
1649
|
temporalExtents: writeTemporalExtents,
|
|
1650
|
+
spatialExtents: () => writeSpatialExtents,
|
|
1564
1651
|
// TODO
|
|
1565
|
-
spatialExtents: () => undefined,
|
|
1566
1652
|
extras: () => undefined,
|
|
1567
1653
|
landingPage: () => undefined,
|
|
1568
1654
|
languages: () => undefined,
|
|
@@ -17453,6 +17539,27 @@ var de = {
|
|
|
17453
17539
|
"dataset.error.parse": "Die Daten wurden geladen, konnten aber nicht gelesen werden: \"{ info }\"",
|
|
17454
17540
|
"dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
|
|
17455
17541
|
"dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
|
|
17542
|
+
"domain.contact.role.author": "",
|
|
17543
|
+
"domain.contact.role.collaborator": "",
|
|
17544
|
+
"domain.contact.role.contributor": "",
|
|
17545
|
+
"domain.contact.role.custodian": "",
|
|
17546
|
+
"domain.contact.role.distributor": "",
|
|
17547
|
+
"domain.contact.role.editor": "",
|
|
17548
|
+
"domain.contact.role.funder": "",
|
|
17549
|
+
"domain.contact.role.mediator": "",
|
|
17550
|
+
"domain.contact.role.originator": "",
|
|
17551
|
+
"domain.contact.role.other": "",
|
|
17552
|
+
"domain.contact.role.owner": "",
|
|
17553
|
+
"domain.contact.role.point_of_contact": "",
|
|
17554
|
+
"domain.contact.role.principal_investigator": "",
|
|
17555
|
+
"domain.contact.role.processor": "",
|
|
17556
|
+
"domain.contact.role.publisher": "",
|
|
17557
|
+
"domain.contact.role.resource_provider": "",
|
|
17558
|
+
"domain.contact.role.rights_holder": "",
|
|
17559
|
+
"domain.contact.role.sponsor": "",
|
|
17560
|
+
"domain.contact.role.stakeholder": "",
|
|
17561
|
+
"domain.contact.role.unspecified": "",
|
|
17562
|
+
"domain.contact.role.user": "",
|
|
17456
17563
|
"domain.record.status.completed": "Abgeschlossen",
|
|
17457
17564
|
"domain.record.status.deprecated": "Veraltet",
|
|
17458
17565
|
"domain.record.status.ongoing": "Kontinuierliche Aktualisierung",
|
|
@@ -17471,21 +17578,30 @@ var de = {
|
|
|
17471
17578
|
"downloads.format.unknown": "unbekannt",
|
|
17472
17579
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17473
17580
|
dropFile: dropFile$6,
|
|
17581
|
+
"editor.record.delete.confirmation.cancelText": "Stornieren",
|
|
17582
|
+
"editor.record.delete.confirmation.confirmText": "Löschen",
|
|
17583
|
+
"editor.record.delete.confirmation.message": "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
|
|
17584
|
+
"editor.record.delete.confirmation.title": "Datensatz löschen?",
|
|
17585
|
+
"editor.record.deleteError.body": "Der Datensatz konnte nicht gelöscht werden:",
|
|
17586
|
+
"editor.record.deleteError.closeMessage": "Verstanden",
|
|
17587
|
+
"editor.record.deleteError.title": "Fehler beim Löschen des Datensatzes",
|
|
17588
|
+
"editor.record.deleteSuccess.body": "",
|
|
17589
|
+
"editor.record.deleteSuccess.title": "",
|
|
17474
17590
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
17475
17591
|
"editor.record.form.bottomButtons.next": "",
|
|
17476
17592
|
"editor.record.form.bottomButtons.previous": "",
|
|
17477
|
-
"editor.record.form.field.abstract": "",
|
|
17593
|
+
"editor.record.form.field.abstract": "Kurzbeschreibung",
|
|
17594
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
17478
17595
|
"editor.record.form.field.keywords": "Schlagwörter",
|
|
17479
17596
|
"editor.record.form.field.license": "Lizenz",
|
|
17480
|
-
"editor.record.form.field.
|
|
17481
|
-
"editor.record.form.field.
|
|
17482
|
-
"editor.record.form.field.
|
|
17483
|
-
"editor.record.form.field.
|
|
17484
|
-
"editor.record.form.field.
|
|
17485
|
-
"editor.record.form.field.
|
|
17486
|
-
"editor.record.form.
|
|
17487
|
-
"editor.record.form.
|
|
17488
|
-
"editor.record.form.license": "Lizenz",
|
|
17597
|
+
"editor.record.form.field.overviews": "",
|
|
17598
|
+
"editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
|
|
17599
|
+
"editor.record.form.field.resourceUpdated": "Letztes Aktualisierungsdatum",
|
|
17600
|
+
"editor.record.form.field.temporalExtents": "Zeitlicher Umfang",
|
|
17601
|
+
"editor.record.form.field.title": "Metadaten-Titel",
|
|
17602
|
+
"editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
|
|
17603
|
+
"editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
|
|
17604
|
+
"editor.record.form.classification.opendata": "",
|
|
17489
17605
|
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17490
17606
|
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17491
17607
|
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
@@ -17511,16 +17627,10 @@ var de = {
|
|
|
17511
17627
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
17512
17628
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
17513
17629
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
17514
|
-
"editor.record.form.metadata.title": "Metadaten-Titel",
|
|
17515
|
-
"editor.record.form.record.updated": "Datensatz zuletzt aktualisiert",
|
|
17516
|
-
"editor.record.form.resourceUpdated": "Letztes Aktualisierungsdatum",
|
|
17517
|
-
"editor.record.form.temporalExtents": "Zeitlicher Umfang",
|
|
17518
17630
|
"editor.record.form.temporalExtents.addDate": "Zeitpunkt",
|
|
17519
17631
|
"editor.record.form.temporalExtents.addRange": "Zeitraum",
|
|
17520
17632
|
"editor.record.form.temporalExtents.date": "Datum",
|
|
17521
17633
|
"editor.record.form.temporalExtents.range": "Datumsbereich",
|
|
17522
|
-
"editor.record.form.unique.identifier": "Eindeutige Kennung (ID)",
|
|
17523
|
-
"editor.record.form.updateFrequency": "Aktualisierungshäufigkeit",
|
|
17524
17634
|
"editor.record.form.updateFrequency.planned": "Die Daten sollten regelmäßig aktualisiert werden.",
|
|
17525
17635
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
17526
17636
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
@@ -17612,6 +17722,7 @@ var de = {
|
|
|
17612
17722
|
"pagination.page": "Seite",
|
|
17613
17723
|
"pagination.pageOf": "von",
|
|
17614
17724
|
previous: previous$6,
|
|
17725
|
+
"record.action.delete": "Löschen",
|
|
17615
17726
|
"record.action.download": "Herunterladen",
|
|
17616
17727
|
"record.action.duplicate": "",
|
|
17617
17728
|
"record.action.view": "Anzeigen",
|
|
@@ -17918,6 +18029,27 @@ var en = {
|
|
|
17918
18029
|
"dataset.error.parse": "The data was loaded but could not be parsed: \"{ info }\"",
|
|
17919
18030
|
"dataset.error.unknown": "The data cannot be displayed: \"{ info }\"",
|
|
17920
18031
|
"dataset.error.unsupportedType": "The following content type is unsupported: \"{ info }\"",
|
|
18032
|
+
"domain.contact.role.author": "Author",
|
|
18033
|
+
"domain.contact.role.collaborator": "Collaborator",
|
|
18034
|
+
"domain.contact.role.contributor": "Contributor",
|
|
18035
|
+
"domain.contact.role.custodian": "Custodian",
|
|
18036
|
+
"domain.contact.role.distributor": "Distributor",
|
|
18037
|
+
"domain.contact.role.editor": "Editor",
|
|
18038
|
+
"domain.contact.role.funder": "Funder",
|
|
18039
|
+
"domain.contact.role.mediator": "Mediator",
|
|
18040
|
+
"domain.contact.role.originator": "Originator",
|
|
18041
|
+
"domain.contact.role.other": "Other",
|
|
18042
|
+
"domain.contact.role.owner": "Owner",
|
|
18043
|
+
"domain.contact.role.point_of_contact": "Point of contact",
|
|
18044
|
+
"domain.contact.role.principal_investigator": "Principal investigator",
|
|
18045
|
+
"domain.contact.role.processor": "Processor",
|
|
18046
|
+
"domain.contact.role.publisher": "Publisher",
|
|
18047
|
+
"domain.contact.role.resource_provider": "Resource provider",
|
|
18048
|
+
"domain.contact.role.rights_holder": "Rights holder",
|
|
18049
|
+
"domain.contact.role.sponsor": "Sponsor",
|
|
18050
|
+
"domain.contact.role.stakeholder": "Stakeholder",
|
|
18051
|
+
"domain.contact.role.unspecified": "Unspecified",
|
|
18052
|
+
"domain.contact.role.user": "User",
|
|
17921
18053
|
"domain.record.status.completed": "Completed",
|
|
17922
18054
|
"domain.record.status.deprecated": "Deprecated",
|
|
17923
18055
|
"domain.record.status.ongoing": "On going",
|
|
@@ -17936,21 +18068,30 @@ var en = {
|
|
|
17936
18068
|
"downloads.format.unknown": "unknown",
|
|
17937
18069
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17938
18070
|
dropFile: dropFile$5,
|
|
18071
|
+
"editor.record.delete.confirmation.cancelText": "Cancel",
|
|
18072
|
+
"editor.record.delete.confirmation.confirmText": "Delete",
|
|
18073
|
+
"editor.record.delete.confirmation.message": "Are you sure you want to delete this record?",
|
|
18074
|
+
"editor.record.delete.confirmation.title": "Delete record?",
|
|
18075
|
+
"editor.record.deleteError.body": "The record could not be deleted:",
|
|
18076
|
+
"editor.record.deleteError.closeMessage": "Understood",
|
|
18077
|
+
"editor.record.deleteError.title": "Error deleting record",
|
|
18078
|
+
"editor.record.deleteSuccess.body": "The record was successfully deleted !",
|
|
18079
|
+
"editor.record.deleteSuccess.title": "Delete success",
|
|
17939
18080
|
"editor.record.form.bottomButtons.comeBackLater": "Come back later",
|
|
17940
18081
|
"editor.record.form.bottomButtons.next": "Next",
|
|
17941
18082
|
"editor.record.form.bottomButtons.previous": "Previous",
|
|
18083
|
+
"editor.record.form.classification.opendata": "Open Data",
|
|
17942
18084
|
"editor.record.form.field.abstract": "Abstract",
|
|
18085
|
+
"editor.record.form.field.contactsForResource.noContact": "Please provide at least one point of contact responsible for the data.",
|
|
17943
18086
|
"editor.record.form.field.keywords": "Keywords",
|
|
17944
18087
|
"editor.record.form.field.license": "License",
|
|
18088
|
+
"editor.record.form.field.overviews": "Overviews",
|
|
17945
18089
|
"editor.record.form.field.recordUpdated": "Record Updated",
|
|
17946
18090
|
"editor.record.form.field.resourceUpdated": "Resource Updated",
|
|
17947
18091
|
"editor.record.form.field.temporalExtents": "Temporal extents",
|
|
17948
18092
|
"editor.record.form.field.title": "Metadata title",
|
|
17949
18093
|
"editor.record.form.field.uniqueIdentifier": "Unique identifier",
|
|
17950
18094
|
"editor.record.form.field.updateFrequency": "Update frequency",
|
|
17951
|
-
"editor.record.form.abstract": "Abstract",
|
|
17952
|
-
"editor.record.form.keywords": "Keywords",
|
|
17953
|
-
"editor.record.form.license": "License",
|
|
17954
18095
|
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17955
18096
|
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17956
18097
|
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
@@ -17976,16 +18117,10 @@ var en = {
|
|
|
17976
18117
|
"editor.record.form.section.dataPointOfContact.label": "Data point of contact",
|
|
17977
18118
|
"editor.record.form.section.geographicalCoverage.label": "Geographical coverage",
|
|
17978
18119
|
"editor.record.form.section.useAndAccessConditions.label": "Use and access conditions",
|
|
17979
|
-
"editor.record.form.metadata.title": "Metadata title",
|
|
17980
|
-
"editor.record.form.record.updated": "Record updated",
|
|
17981
|
-
"editor.record.form.resourceUpdated": "Last update date",
|
|
17982
|
-
"editor.record.form.temporalExtents": "Temporal extent",
|
|
17983
18120
|
"editor.record.form.temporalExtents.addDate": "Time instant",
|
|
17984
18121
|
"editor.record.form.temporalExtents.addRange": "Time period",
|
|
17985
18122
|
"editor.record.form.temporalExtents.date": "Date",
|
|
17986
18123
|
"editor.record.form.temporalExtents.range": "Date range",
|
|
17987
|
-
"editor.record.form.unique.identifier": "Unique identifier",
|
|
17988
|
-
"editor.record.form.updateFrequency": "Update frequency",
|
|
17989
18124
|
"editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
|
|
17990
18125
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17991
18126
|
"editor.record.loadError.closeMessage": "Understood",
|
|
@@ -18077,6 +18212,7 @@ var en = {
|
|
|
18077
18212
|
"pagination.page": "page",
|
|
18078
18213
|
"pagination.pageOf": "of",
|
|
18079
18214
|
previous: previous$5,
|
|
18215
|
+
"record.action.delete": "Delete",
|
|
18080
18216
|
"record.action.download": "Download",
|
|
18081
18217
|
"record.action.duplicate": "Duplicate",
|
|
18082
18218
|
"record.action.view": "View",
|
|
@@ -18383,6 +18519,27 @@ var es = {
|
|
|
18383
18519
|
"dataset.error.parse": "",
|
|
18384
18520
|
"dataset.error.unknown": "",
|
|
18385
18521
|
"dataset.error.unsupportedType": "",
|
|
18522
|
+
"domain.contact.role.author": "",
|
|
18523
|
+
"domain.contact.role.collaborator": "",
|
|
18524
|
+
"domain.contact.role.contributor": "",
|
|
18525
|
+
"domain.contact.role.custodian": "",
|
|
18526
|
+
"domain.contact.role.distributor": "",
|
|
18527
|
+
"domain.contact.role.editor": "",
|
|
18528
|
+
"domain.contact.role.funder": "",
|
|
18529
|
+
"domain.contact.role.mediator": "",
|
|
18530
|
+
"domain.contact.role.originator": "",
|
|
18531
|
+
"domain.contact.role.other": "",
|
|
18532
|
+
"domain.contact.role.owner": "",
|
|
18533
|
+
"domain.contact.role.point_of_contact": "",
|
|
18534
|
+
"domain.contact.role.principal_investigator": "",
|
|
18535
|
+
"domain.contact.role.processor": "",
|
|
18536
|
+
"domain.contact.role.publisher": "",
|
|
18537
|
+
"domain.contact.role.resource_provider": "",
|
|
18538
|
+
"domain.contact.role.rights_holder": "",
|
|
18539
|
+
"domain.contact.role.sponsor": "",
|
|
18540
|
+
"domain.contact.role.stakeholder": "",
|
|
18541
|
+
"domain.contact.role.unspecified": "",
|
|
18542
|
+
"domain.contact.role.user": "",
|
|
18386
18543
|
"domain.record.status.completed": "",
|
|
18387
18544
|
"domain.record.status.deprecated": "",
|
|
18388
18545
|
"domain.record.status.ongoing": "",
|
|
@@ -18401,21 +18558,30 @@ var es = {
|
|
|
18401
18558
|
"downloads.format.unknown": "",
|
|
18402
18559
|
"downloads.wfs.featuretype.not.found": "",
|
|
18403
18560
|
dropFile: dropFile$4,
|
|
18561
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
18562
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
18563
|
+
"editor.record.delete.confirmation.message": "",
|
|
18564
|
+
"editor.record.delete.confirmation.title": "",
|
|
18565
|
+
"editor.record.deleteError.body": "",
|
|
18566
|
+
"editor.record.deleteError.closeMessage": "",
|
|
18567
|
+
"editor.record.deleteError.title": "",
|
|
18568
|
+
"editor.record.deleteSuccess.body": "",
|
|
18569
|
+
"editor.record.deleteSuccess.title": "",
|
|
18404
18570
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
18405
18571
|
"editor.record.form.bottomButtons.next": "",
|
|
18406
18572
|
"editor.record.form.bottomButtons.previous": "",
|
|
18573
|
+
"editor.record.form.classification.opendata": "",
|
|
18407
18574
|
"editor.record.form.field.abstract": "",
|
|
18575
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
18408
18576
|
"editor.record.form.field.keywords": "",
|
|
18409
18577
|
"editor.record.form.field.license": "",
|
|
18578
|
+
"editor.record.form.field.overviews": "",
|
|
18410
18579
|
"editor.record.form.field.recordUpdated": "",
|
|
18411
18580
|
"editor.record.form.field.resourceUpdated": "",
|
|
18412
18581
|
"editor.record.form.field.temporalExtents": "",
|
|
18413
18582
|
"editor.record.form.field.title": "",
|
|
18414
18583
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
18415
18584
|
"editor.record.form.field.updateFrequency": "",
|
|
18416
|
-
"editor.record.form.abstract": "",
|
|
18417
|
-
"editor.record.form.keywords": "",
|
|
18418
|
-
"editor.record.form.license": "",
|
|
18419
18585
|
"editor.record.form.license.cc-by": "",
|
|
18420
18586
|
"editor.record.form.license.cc-by-sa": "",
|
|
18421
18587
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -18441,16 +18607,10 @@ var es = {
|
|
|
18441
18607
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
18442
18608
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
18443
18609
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
18444
|
-
"editor.record.form.metadata.title": "",
|
|
18445
|
-
"editor.record.form.record.updated": "",
|
|
18446
|
-
"editor.record.form.resourceUpdated": "",
|
|
18447
|
-
"editor.record.form.temporalExtents": "",
|
|
18448
18610
|
"editor.record.form.temporalExtents.addDate": "",
|
|
18449
18611
|
"editor.record.form.temporalExtents.addRange": "",
|
|
18450
18612
|
"editor.record.form.temporalExtents.date": "",
|
|
18451
18613
|
"editor.record.form.temporalExtents.range": "",
|
|
18452
|
-
"editor.record.form.unique.identifier": "",
|
|
18453
|
-
"editor.record.form.updateFrequency": "",
|
|
18454
18614
|
"editor.record.form.updateFrequency.planned": "",
|
|
18455
18615
|
"editor.record.loadError.body": "",
|
|
18456
18616
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -18542,6 +18702,7 @@ var es = {
|
|
|
18542
18702
|
"pagination.page": "",
|
|
18543
18703
|
"pagination.pageOf": "",
|
|
18544
18704
|
previous: previous$4,
|
|
18705
|
+
"record.action.delete": "",
|
|
18545
18706
|
"record.action.download": "",
|
|
18546
18707
|
"record.action.duplicate": "",
|
|
18547
18708
|
"record.action.view": "",
|
|
@@ -18848,6 +19009,27 @@ var fr = {
|
|
|
18848
19009
|
"dataset.error.parse": "Les données ont été chargées mais leur décodage a échoué: \"{ info }\"",
|
|
18849
19010
|
"dataset.error.unknown": "Les données ne peuvent être affichées: \"{ info }\"",
|
|
18850
19011
|
"dataset.error.unsupportedType": "Le type de contenu suivant n'est pas pris en charge: \"{ info }\"",
|
|
19012
|
+
"domain.contact.role.author": "Auteur",
|
|
19013
|
+
"domain.contact.role.collaborator": "Collaborateur",
|
|
19014
|
+
"domain.contact.role.contributor": "Contributeur",
|
|
19015
|
+
"domain.contact.role.custodian": "Gestionnaire",
|
|
19016
|
+
"domain.contact.role.distributor": "Distributeur",
|
|
19017
|
+
"domain.contact.role.editor": "Éditeur",
|
|
19018
|
+
"domain.contact.role.funder": "Financeur",
|
|
19019
|
+
"domain.contact.role.mediator": "Médiateur",
|
|
19020
|
+
"domain.contact.role.originator": "Créateur",
|
|
19021
|
+
"domain.contact.role.other": "Autre",
|
|
19022
|
+
"domain.contact.role.owner": "Propriétaire",
|
|
19023
|
+
"domain.contact.role.point_of_contact": "Point de contact",
|
|
19024
|
+
"domain.contact.role.principal_investigator": "Chercheur principal",
|
|
19025
|
+
"domain.contact.role.processor": "Processeur",
|
|
19026
|
+
"domain.contact.role.publisher": "Éditeur",
|
|
19027
|
+
"domain.contact.role.resource_provider": "Fournisseur",
|
|
19028
|
+
"domain.contact.role.rights_holder": "Détenteur des droits",
|
|
19029
|
+
"domain.contact.role.sponsor": "Sponsor",
|
|
19030
|
+
"domain.contact.role.stakeholder": "Partie prenante",
|
|
19031
|
+
"domain.contact.role.unspecified": "Non spécifié",
|
|
19032
|
+
"domain.contact.role.user": "Utilisateur",
|
|
18851
19033
|
"domain.record.status.completed": "Finalisé",
|
|
18852
19034
|
"domain.record.status.deprecated": "Obsolète",
|
|
18853
19035
|
"domain.record.status.ongoing": "Mise à jour continue",
|
|
@@ -18866,21 +19048,30 @@ var fr = {
|
|
|
18866
19048
|
"downloads.format.unknown": "inconnu",
|
|
18867
19049
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18868
19050
|
dropFile: dropFile$3,
|
|
19051
|
+
"editor.record.delete.confirmation.cancelText": "Annuler",
|
|
19052
|
+
"editor.record.delete.confirmation.confirmText": "Supprimer",
|
|
19053
|
+
"editor.record.delete.confirmation.message": "Etes-vous sûr de vouloir supprimer cette fiche ?",
|
|
19054
|
+
"editor.record.delete.confirmation.title": "Supprimer la fiche",
|
|
19055
|
+
"editor.record.deleteError.body": "La fiche n'a pas pu être supprimée :",
|
|
19056
|
+
"editor.record.deleteError.closeMessage": "Compris",
|
|
19057
|
+
"editor.record.deleteError.title": "Erreur lors de la suppression",
|
|
19058
|
+
"editor.record.deleteSuccess.body": "La fiche a bien été supprimée !",
|
|
19059
|
+
"editor.record.deleteSuccess.title": "Suppression réussie",
|
|
18869
19060
|
"editor.record.form.bottomButtons.comeBackLater": "Revenir plus tard",
|
|
18870
19061
|
"editor.record.form.bottomButtons.next": "Suivant",
|
|
18871
19062
|
"editor.record.form.bottomButtons.previous": "Précédent",
|
|
19063
|
+
"editor.record.form.classification.opendata": "Données ouvertes",
|
|
18872
19064
|
"editor.record.form.field.abstract": "Résumé",
|
|
19065
|
+
"editor.record.form.field.contactsForResource.noContact": "Veuillez renseigner au moins un point de contact responsable de la donnée.",
|
|
18873
19066
|
"editor.record.form.field.keywords": "Mots-clés",
|
|
18874
19067
|
"editor.record.form.field.license": "Licence",
|
|
19068
|
+
"editor.record.form.field.overviews": "Aperçus",
|
|
18875
19069
|
"editor.record.form.field.recordUpdated": "Date de dernière révision",
|
|
18876
19070
|
"editor.record.form.field.resourceUpdated": "Date de dernière révision",
|
|
18877
19071
|
"editor.record.form.field.temporalExtents": "Étendue temporelle",
|
|
18878
|
-
"editor.record.form.field.title": "
|
|
19072
|
+
"editor.record.form.field.title": "",
|
|
18879
19073
|
"editor.record.form.field.uniqueIdentifier": "Identifiant unique",
|
|
18880
19074
|
"editor.record.form.field.updateFrequency": "Fréquence de mise à jour",
|
|
18881
|
-
"editor.record.form.abstract": "",
|
|
18882
|
-
"editor.record.form.keywords": "",
|
|
18883
|
-
"editor.record.form.license": "Licence",
|
|
18884
19075
|
"editor.record.form.license.cc-by": "",
|
|
18885
19076
|
"editor.record.form.license.cc-by-sa": "",
|
|
18886
19077
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -18906,26 +19097,20 @@ var fr = {
|
|
|
18906
19097
|
"editor.record.form.section.dataPointOfContact.label": "Point de contact de la metadonee",
|
|
18907
19098
|
"editor.record.form.section.geographicalCoverage.label": "Couverture geographique",
|
|
18908
19099
|
"editor.record.form.section.useAndAccessConditions.label": "Conditions d'acces et usage",
|
|
18909
|
-
"editor.record.form.metadata.title": "",
|
|
18910
|
-
"editor.record.form.record.updated": "",
|
|
18911
|
-
"editor.record.form.resourceUpdated": "Date de dernière révision",
|
|
18912
|
-
"editor.record.form.temporalExtents": "Étendue temporelle",
|
|
18913
19100
|
"editor.record.form.temporalExtents.addDate": "Date déterminée",
|
|
18914
19101
|
"editor.record.form.temporalExtents.addRange": "Période de temps",
|
|
18915
19102
|
"editor.record.form.temporalExtents.date": "Date concernée",
|
|
18916
19103
|
"editor.record.form.temporalExtents.range": "Période concernée",
|
|
18917
|
-
"editor.record.form.unique.identifier": "",
|
|
18918
|
-
"editor.record.form.updateFrequency": "Fréquence de mise à jour",
|
|
18919
19104
|
"editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
|
|
18920
|
-
"editor.record.loadError.body": "",
|
|
18921
|
-
"editor.record.loadError.closeMessage": "",
|
|
18922
|
-
"editor.record.loadError.title": "",
|
|
18923
|
-
"editor.record.publish": "",
|
|
18924
|
-
"editor.record.publishError.body": "",
|
|
18925
|
-
"editor.record.publishError.closeMessage": "",
|
|
18926
|
-
"editor.record.publishError.title": "",
|
|
18927
|
-
"editor.record.publishSuccess.body": "",
|
|
18928
|
-
"editor.record.publishSuccess.title": "",
|
|
19105
|
+
"editor.record.loadError.body": "La fiche n'a pas pu être chargée :",
|
|
19106
|
+
"editor.record.loadError.closeMessage": "Compris",
|
|
19107
|
+
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
19108
|
+
"editor.record.publish": "Publier cette fiche",
|
|
19109
|
+
"editor.record.publishError.body": "La fiche n'a pas pu être publiée :",
|
|
19110
|
+
"editor.record.publishError.closeMessage": "Compris",
|
|
19111
|
+
"editor.record.publishError.title": "Erreur lors de la publication",
|
|
19112
|
+
"editor.record.publishSuccess.body": "La fiche a bien été publiée !",
|
|
19113
|
+
"editor.record.publishSuccess.title": "Publication réussie",
|
|
18929
19114
|
"editor.record.saveStatus.asDraftOnly": "Brouillon enregistré - fiche non publiée",
|
|
18930
19115
|
"editor.record.saveStatus.draftWithChangesPending": "Brouillon enregistré - modifications en cours",
|
|
18931
19116
|
"editor.record.saveStatus.recordUpToDate": "La fiche publiée est à jour",
|
|
@@ -19007,6 +19192,7 @@ var fr = {
|
|
|
19007
19192
|
"pagination.page": "page",
|
|
19008
19193
|
"pagination.pageOf": "sur",
|
|
19009
19194
|
previous: previous$3,
|
|
19195
|
+
"record.action.delete": "Supprimer",
|
|
19010
19196
|
"record.action.download": "Télécharger",
|
|
19011
19197
|
"record.action.duplicate": "Dupliquer",
|
|
19012
19198
|
"record.action.view": "Voir",
|
|
@@ -19313,6 +19499,27 @@ var it = {
|
|
|
19313
19499
|
"dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
|
|
19314
19500
|
"dataset.error.unknown": "Impossibile visualizzare i dati: \"{info}\"",
|
|
19315
19501
|
"dataset.error.unsupportedType": "Il seguente tipo di contenuto non è supportato: \"{info}\"",
|
|
19502
|
+
"domain.contact.role.author": "",
|
|
19503
|
+
"domain.contact.role.collaborator": "",
|
|
19504
|
+
"domain.contact.role.contributor": "",
|
|
19505
|
+
"domain.contact.role.custodian": "",
|
|
19506
|
+
"domain.contact.role.distributor": "",
|
|
19507
|
+
"domain.contact.role.editor": "",
|
|
19508
|
+
"domain.contact.role.funder": "",
|
|
19509
|
+
"domain.contact.role.mediator": "",
|
|
19510
|
+
"domain.contact.role.originator": "",
|
|
19511
|
+
"domain.contact.role.other": "",
|
|
19512
|
+
"domain.contact.role.owner": "",
|
|
19513
|
+
"domain.contact.role.point_of_contact": "",
|
|
19514
|
+
"domain.contact.role.principal_investigator": "",
|
|
19515
|
+
"domain.contact.role.processor": "",
|
|
19516
|
+
"domain.contact.role.publisher": "",
|
|
19517
|
+
"domain.contact.role.resource_provider": "",
|
|
19518
|
+
"domain.contact.role.rights_holder": "",
|
|
19519
|
+
"domain.contact.role.sponsor": "",
|
|
19520
|
+
"domain.contact.role.stakeholder": "",
|
|
19521
|
+
"domain.contact.role.unspecified": "",
|
|
19522
|
+
"domain.contact.role.user": "",
|
|
19316
19523
|
"domain.record.status.completed": "Completato",
|
|
19317
19524
|
"domain.record.status.deprecated": "Deprecato",
|
|
19318
19525
|
"domain.record.status.ongoing": "Aggiornamento continuo",
|
|
@@ -19331,21 +19538,30 @@ var it = {
|
|
|
19331
19538
|
"downloads.format.unknown": "sconosciuto",
|
|
19332
19539
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
19333
19540
|
dropFile: dropFile$2,
|
|
19541
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
19542
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
19543
|
+
"editor.record.delete.confirmation.message": "",
|
|
19544
|
+
"editor.record.delete.confirmation.title": "",
|
|
19545
|
+
"editor.record.deleteError.body": "",
|
|
19546
|
+
"editor.record.deleteError.closeMessage": "",
|
|
19547
|
+
"editor.record.deleteError.title": "",
|
|
19548
|
+
"editor.record.deleteSuccess.body": "",
|
|
19549
|
+
"editor.record.deleteSuccess.title": "",
|
|
19334
19550
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
19335
19551
|
"editor.record.form.bottomButtons.next": "",
|
|
19336
19552
|
"editor.record.form.bottomButtons.previous": "",
|
|
19553
|
+
"editor.record.form.classification.opendata": "",
|
|
19337
19554
|
"editor.record.form.field.abstract": "",
|
|
19555
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
19338
19556
|
"editor.record.form.field.keywords": "",
|
|
19339
19557
|
"editor.record.form.field.license": "Licenza",
|
|
19558
|
+
"editor.record.form.field.overviews": "",
|
|
19340
19559
|
"editor.record.form.field.recordUpdated": "",
|
|
19341
19560
|
"editor.record.form.field.resourceUpdated": "",
|
|
19342
19561
|
"editor.record.form.field.temporalExtents": "",
|
|
19343
19562
|
"editor.record.form.field.title": "",
|
|
19344
19563
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
19345
19564
|
"editor.record.form.field.updateFrequency": "",
|
|
19346
|
-
"editor.record.form.abstract": "",
|
|
19347
|
-
"editor.record.form.keywords": "",
|
|
19348
|
-
"editor.record.form.license": "Licenza",
|
|
19349
19565
|
"editor.record.form.license.cc-by": "",
|
|
19350
19566
|
"editor.record.form.license.cc-by-sa": "",
|
|
19351
19567
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -19371,16 +19587,10 @@ var it = {
|
|
|
19371
19587
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
19372
19588
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
19373
19589
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
19374
|
-
"editor.record.form.metadata.title": "",
|
|
19375
|
-
"editor.record.form.record.updated": "",
|
|
19376
|
-
"editor.record.form.resourceUpdated": "",
|
|
19377
|
-
"editor.record.form.temporalExtents": "",
|
|
19378
19590
|
"editor.record.form.temporalExtents.addDate": "",
|
|
19379
19591
|
"editor.record.form.temporalExtents.addRange": "",
|
|
19380
19592
|
"editor.record.form.temporalExtents.date": "",
|
|
19381
19593
|
"editor.record.form.temporalExtents.range": "",
|
|
19382
|
-
"editor.record.form.unique.identifier": "",
|
|
19383
|
-
"editor.record.form.updateFrequency": "",
|
|
19384
19594
|
"editor.record.form.updateFrequency.planned": "",
|
|
19385
19595
|
"editor.record.loadError.body": "",
|
|
19386
19596
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -19472,6 +19682,7 @@ var it = {
|
|
|
19472
19682
|
"pagination.page": "pagina",
|
|
19473
19683
|
"pagination.pageOf": "di",
|
|
19474
19684
|
previous: previous$2,
|
|
19685
|
+
"record.action.delete": "",
|
|
19475
19686
|
"record.action.download": "Scarica",
|
|
19476
19687
|
"record.action.duplicate": "",
|
|
19477
19688
|
"record.action.view": "Visualizza",
|
|
@@ -19778,6 +19989,27 @@ var nl = {
|
|
|
19778
19989
|
"dataset.error.parse": "",
|
|
19779
19990
|
"dataset.error.unknown": "",
|
|
19780
19991
|
"dataset.error.unsupportedType": "",
|
|
19992
|
+
"domain.contact.role.author": "",
|
|
19993
|
+
"domain.contact.role.collaborator": "",
|
|
19994
|
+
"domain.contact.role.contributor": "",
|
|
19995
|
+
"domain.contact.role.custodian": "",
|
|
19996
|
+
"domain.contact.role.distributor": "",
|
|
19997
|
+
"domain.contact.role.editor": "",
|
|
19998
|
+
"domain.contact.role.funder": "",
|
|
19999
|
+
"domain.contact.role.mediator": "",
|
|
20000
|
+
"domain.contact.role.originator": "",
|
|
20001
|
+
"domain.contact.role.other": "",
|
|
20002
|
+
"domain.contact.role.owner": "",
|
|
20003
|
+
"domain.contact.role.point_of_contact": "",
|
|
20004
|
+
"domain.contact.role.principal_investigator": "",
|
|
20005
|
+
"domain.contact.role.processor": "",
|
|
20006
|
+
"domain.contact.role.publisher": "",
|
|
20007
|
+
"domain.contact.role.resource_provider": "",
|
|
20008
|
+
"domain.contact.role.rights_holder": "",
|
|
20009
|
+
"domain.contact.role.sponsor": "",
|
|
20010
|
+
"domain.contact.role.stakeholder": "",
|
|
20011
|
+
"domain.contact.role.unspecified": "",
|
|
20012
|
+
"domain.contact.role.user": "",
|
|
19781
20013
|
"domain.record.status.completed": "",
|
|
19782
20014
|
"domain.record.status.deprecated": "",
|
|
19783
20015
|
"domain.record.status.ongoing": "",
|
|
@@ -19796,21 +20028,30 @@ var nl = {
|
|
|
19796
20028
|
"downloads.format.unknown": "",
|
|
19797
20029
|
"downloads.wfs.featuretype.not.found": "",
|
|
19798
20030
|
dropFile: dropFile$1,
|
|
20031
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
20032
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
20033
|
+
"editor.record.delete.confirmation.message": "",
|
|
20034
|
+
"editor.record.delete.confirmation.title": "",
|
|
20035
|
+
"editor.record.deleteError.body": "",
|
|
20036
|
+
"editor.record.deleteError.closeMessage": "",
|
|
20037
|
+
"editor.record.deleteError.title": "",
|
|
20038
|
+
"editor.record.deleteSuccess.body": "",
|
|
20039
|
+
"editor.record.deleteSuccess.title": "",
|
|
19799
20040
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
19800
20041
|
"editor.record.form.bottomButtons.next": "",
|
|
19801
20042
|
"editor.record.form.bottomButtons.previous": "",
|
|
20043
|
+
"editor.record.form.classification.opendata": "",
|
|
19802
20044
|
"editor.record.form.field.abstract": "",
|
|
20045
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
19803
20046
|
"editor.record.form.field.keywords": "",
|
|
19804
20047
|
"editor.record.form.field.license": "",
|
|
20048
|
+
"editor.record.form.field.overviews": "",
|
|
19805
20049
|
"editor.record.form.field.recordUpdated": "",
|
|
19806
20050
|
"editor.record.form.field.resourceUpdated": "",
|
|
19807
20051
|
"editor.record.form.field.temporalExtents": "",
|
|
19808
20052
|
"editor.record.form.field.title": "",
|
|
19809
20053
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
19810
20054
|
"editor.record.form.field.updateFrequency": "",
|
|
19811
|
-
"editor.record.form.abstract": "",
|
|
19812
|
-
"editor.record.form.keywords": "",
|
|
19813
|
-
"editor.record.form.license": "",
|
|
19814
20055
|
"editor.record.form.license.cc-by": "",
|
|
19815
20056
|
"editor.record.form.license.cc-by-sa": "",
|
|
19816
20057
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -19836,16 +20077,10 @@ var nl = {
|
|
|
19836
20077
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
19837
20078
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
19838
20079
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
19839
|
-
"editor.record.form.metadata.title": "",
|
|
19840
|
-
"editor.record.form.record.updated": "",
|
|
19841
|
-
"editor.record.form.resourceUpdated": "",
|
|
19842
|
-
"editor.record.form.temporalExtents": "",
|
|
19843
20080
|
"editor.record.form.temporalExtents.addDate": "",
|
|
19844
20081
|
"editor.record.form.temporalExtents.addRange": "",
|
|
19845
20082
|
"editor.record.form.temporalExtents.date": "",
|
|
19846
20083
|
"editor.record.form.temporalExtents.range": "",
|
|
19847
|
-
"editor.record.form.unique.identifier": "",
|
|
19848
|
-
"editor.record.form.updateFrequency": "",
|
|
19849
20084
|
"editor.record.form.updateFrequency.planned": "",
|
|
19850
20085
|
"editor.record.loadError.body": "",
|
|
19851
20086
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -19937,6 +20172,7 @@ var nl = {
|
|
|
19937
20172
|
"pagination.page": "",
|
|
19938
20173
|
"pagination.pageOf": "",
|
|
19939
20174
|
previous: previous$1,
|
|
20175
|
+
"record.action.delete": "",
|
|
19940
20176
|
"record.action.download": "",
|
|
19941
20177
|
"record.action.duplicate": "",
|
|
19942
20178
|
"record.action.view": "",
|
|
@@ -20243,6 +20479,27 @@ var pt = {
|
|
|
20243
20479
|
"dataset.error.parse": "",
|
|
20244
20480
|
"dataset.error.unknown": "",
|
|
20245
20481
|
"dataset.error.unsupportedType": "",
|
|
20482
|
+
"domain.contact.role.author": "",
|
|
20483
|
+
"domain.contact.role.collaborator": "",
|
|
20484
|
+
"domain.contact.role.contributor": "",
|
|
20485
|
+
"domain.contact.role.custodian": "",
|
|
20486
|
+
"domain.contact.role.distributor": "",
|
|
20487
|
+
"domain.contact.role.editor": "",
|
|
20488
|
+
"domain.contact.role.funder": "",
|
|
20489
|
+
"domain.contact.role.mediator": "",
|
|
20490
|
+
"domain.contact.role.originator": "",
|
|
20491
|
+
"domain.contact.role.other": "",
|
|
20492
|
+
"domain.contact.role.owner": "",
|
|
20493
|
+
"domain.contact.role.point_of_contact": "",
|
|
20494
|
+
"domain.contact.role.principal_investigator": "",
|
|
20495
|
+
"domain.contact.role.processor": "",
|
|
20496
|
+
"domain.contact.role.publisher": "",
|
|
20497
|
+
"domain.contact.role.resource_provider": "",
|
|
20498
|
+
"domain.contact.role.rights_holder": "",
|
|
20499
|
+
"domain.contact.role.sponsor": "",
|
|
20500
|
+
"domain.contact.role.stakeholder": "",
|
|
20501
|
+
"domain.contact.role.unspecified": "",
|
|
20502
|
+
"domain.contact.role.user": "",
|
|
20246
20503
|
"domain.record.status.completed": "",
|
|
20247
20504
|
"domain.record.status.deprecated": "",
|
|
20248
20505
|
"domain.record.status.ongoing": "",
|
|
@@ -20261,21 +20518,30 @@ var pt = {
|
|
|
20261
20518
|
"downloads.format.unknown": "",
|
|
20262
20519
|
"downloads.wfs.featuretype.not.found": "",
|
|
20263
20520
|
dropFile: dropFile,
|
|
20521
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
20522
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
20523
|
+
"editor.record.delete.confirmation.message": "",
|
|
20524
|
+
"editor.record.delete.confirmation.title": "",
|
|
20525
|
+
"editor.record.deleteError.body": "",
|
|
20526
|
+
"editor.record.deleteError.closeMessage": "",
|
|
20527
|
+
"editor.record.deleteError.title": "",
|
|
20528
|
+
"editor.record.deleteSuccess.body": "",
|
|
20529
|
+
"editor.record.deleteSuccess.title": "",
|
|
20264
20530
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
20265
20531
|
"editor.record.form.bottomButtons.next": "",
|
|
20266
20532
|
"editor.record.form.bottomButtons.previous": "",
|
|
20533
|
+
"editor.record.form.classification.opendata": "",
|
|
20267
20534
|
"editor.record.form.field.abstract": "",
|
|
20535
|
+
"editor.record.form.field.contactsForResource.noContact": "",
|
|
20268
20536
|
"editor.record.form.field.keywords": "",
|
|
20269
20537
|
"editor.record.form.field.license": "",
|
|
20538
|
+
"editor.record.form.field.overviews": "",
|
|
20270
20539
|
"editor.record.form.field.recordUpdated": "",
|
|
20271
20540
|
"editor.record.form.field.resourceUpdated": "",
|
|
20272
20541
|
"editor.record.form.field.temporalExtents": "",
|
|
20273
20542
|
"editor.record.form.field.title": "",
|
|
20274
20543
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
20275
20544
|
"editor.record.form.field.updateFrequency": "",
|
|
20276
|
-
"editor.record.form.abstract": "",
|
|
20277
|
-
"editor.record.form.keywords": "",
|
|
20278
|
-
"editor.record.form.license": "",
|
|
20279
20545
|
"editor.record.form.license.cc-by": "",
|
|
20280
20546
|
"editor.record.form.license.cc-by-sa": "",
|
|
20281
20547
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -20301,16 +20567,10 @@ var pt = {
|
|
|
20301
20567
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
20302
20568
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
20303
20569
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
20304
|
-
"editor.record.form.metadata.title": "",
|
|
20305
|
-
"editor.record.form.record.updated": "",
|
|
20306
|
-
"editor.record.form.resourceUpdated": "",
|
|
20307
|
-
"editor.record.form.temporalExtents": "",
|
|
20308
20570
|
"editor.record.form.temporalExtents.addDate": "",
|
|
20309
20571
|
"editor.record.form.temporalExtents.addRange": "",
|
|
20310
20572
|
"editor.record.form.temporalExtents.date": "",
|
|
20311
20573
|
"editor.record.form.temporalExtents.range": "",
|
|
20312
|
-
"editor.record.form.unique.identifier": "",
|
|
20313
|
-
"editor.record.form.updateFrequency": "",
|
|
20314
20574
|
"editor.record.form.updateFrequency.planned": "",
|
|
20315
20575
|
"editor.record.loadError.body": "",
|
|
20316
20576
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -20402,6 +20662,7 @@ var pt = {
|
|
|
20402
20662
|
"pagination.page": "",
|
|
20403
20663
|
"pagination.pageOf": "",
|
|
20404
20664
|
previous: previous,
|
|
20665
|
+
"record.action.delete": "",
|
|
20405
20666
|
"record.action.download": "",
|
|
20406
20667
|
"record.action.duplicate": "",
|
|
20407
20668
|
"record.action.view": "",
|
|
@@ -21460,12 +21721,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
21460
21721
|
args: [METADATA_LANGUAGE]
|
|
21461
21722
|
}] }]; } });
|
|
21462
21723
|
|
|
21724
|
+
const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
|
|
21463
21725
|
class Gn4Repository {
|
|
21464
21726
|
constructor(gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi) {
|
|
21465
21727
|
this.gn4SearchApi = gn4SearchApi;
|
|
21466
21728
|
this.gn4SearchHelper = gn4SearchHelper;
|
|
21467
21729
|
this.gn4Mapper = gn4Mapper;
|
|
21468
21730
|
this.gn4RecordsApi = gn4RecordsApi;
|
|
21731
|
+
this._draftsChanged = new Subject();
|
|
21732
|
+
this.draftsChanged$ = this._draftsChanged.asObservable();
|
|
21469
21733
|
}
|
|
21470
21734
|
search({ filters, fields, offset, limit, sort, filterIds, filterGeometry, }) {
|
|
21471
21735
|
return this.gn4SearchApi
|
|
@@ -21540,10 +21804,11 @@ class Gn4Repository {
|
|
|
21540
21804
|
return this.loadRecordAsXml(uniqueIdentifier).pipe(switchMap(async (recordAsXml) => {
|
|
21541
21805
|
const converter = findConverterForDocument(recordAsXml);
|
|
21542
21806
|
const record = await converter.readRecord(recordAsXml);
|
|
21543
|
-
record.uniqueIdentifier =
|
|
21807
|
+
record.uniqueIdentifier = `${TEMPORARY_ID_PREFIX}${Date.now()}`;
|
|
21544
21808
|
record.title = `${record.title} (Copy)`;
|
|
21545
21809
|
const xml = await converter.writeRecord(record, recordAsXml);
|
|
21546
21810
|
window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), xml);
|
|
21811
|
+
this._draftsChanged.next();
|
|
21547
21812
|
return [record, xml, false];
|
|
21548
21813
|
}));
|
|
21549
21814
|
}
|
|
@@ -21562,15 +21827,28 @@ class Gn4Repository {
|
|
|
21562
21827
|
return response.metadataInfos[metadataId][0].uuid;
|
|
21563
21828
|
}))));
|
|
21564
21829
|
}
|
|
21830
|
+
deleteRecord(uniqueIdentifier) {
|
|
21831
|
+
return this.gn4RecordsApi.deleteRecord(uniqueIdentifier);
|
|
21832
|
+
}
|
|
21833
|
+
generateTemporaryId() {
|
|
21834
|
+
return `${TEMPORARY_ID_PREFIX}${Date.now()}`;
|
|
21835
|
+
}
|
|
21565
21836
|
saveRecordAsDraft(record, referenceRecordSource) {
|
|
21566
|
-
return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap$1((recordXml) =>
|
|
21837
|
+
return this.serializeRecordToXml(record, referenceRecordSource).pipe(tap$1((recordXml) => {
|
|
21838
|
+
window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), recordXml);
|
|
21839
|
+
this._draftsChanged.next();
|
|
21840
|
+
}));
|
|
21567
21841
|
}
|
|
21568
21842
|
clearRecordDraft(uniqueIdentifier) {
|
|
21569
21843
|
window.localStorage.removeItem(this.getLocalStorageKeyForRecord(uniqueIdentifier));
|
|
21844
|
+
this._draftsChanged.next();
|
|
21570
21845
|
}
|
|
21571
21846
|
recordHasDraft(uniqueIdentifier) {
|
|
21572
21847
|
return (window.localStorage.getItem(this.getLocalStorageKeyForRecord(uniqueIdentifier)) !== null);
|
|
21573
21848
|
}
|
|
21849
|
+
isRecordNotYetSaved(uniqueIdentifier) {
|
|
21850
|
+
return uniqueIdentifier.startsWith(TEMPORARY_ID_PREFIX);
|
|
21851
|
+
}
|
|
21574
21852
|
// generated by copilot
|
|
21575
21853
|
getAllDrafts() {
|
|
21576
21854
|
const items = { ...window.localStorage };
|
|
@@ -23320,10 +23598,15 @@ class MapUtilsService {
|
|
|
23320
23598
|
if (!('spatialExtents' in record) || record.spatialExtents.length === 0) {
|
|
23321
23599
|
return null;
|
|
23322
23600
|
}
|
|
23323
|
-
//
|
|
23601
|
+
// extend all the spatial extents into an including bbox
|
|
23324
23602
|
const totalExtent = record.spatialExtents.reduce((prev, curr) => {
|
|
23325
|
-
|
|
23326
|
-
|
|
23603
|
+
if ('bbox' in curr)
|
|
23604
|
+
return extend(prev, curr.bbox);
|
|
23605
|
+
else if ('geometry' in curr) {
|
|
23606
|
+
const geom = GEOJSON.readGeometry(curr.geometry);
|
|
23607
|
+
return extend(prev, geom.getExtent());
|
|
23608
|
+
}
|
|
23609
|
+
return prev;
|
|
23327
23610
|
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
23328
23611
|
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
23329
23612
|
}
|
|
@@ -25023,6 +25306,7 @@ class AutocompleteComponent {
|
|
|
25023
25306
|
constructor(cdRef) {
|
|
25024
25307
|
this.cdRef = cdRef;
|
|
25025
25308
|
this.clearOnSelection = false;
|
|
25309
|
+
this.preventCompleteOnSelection = false;
|
|
25026
25310
|
this.autoFocus = false;
|
|
25027
25311
|
this.minCharacterCount = 3;
|
|
25028
25312
|
this.allowSubmit = true;
|
|
@@ -25115,17 +25399,28 @@ class AutocompleteComponent {
|
|
|
25115
25399
|
handleClickSearch() {
|
|
25116
25400
|
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
25117
25401
|
}
|
|
25402
|
+
/**
|
|
25403
|
+
* This function is triggered when an item is selected in the list of displayed items.
|
|
25404
|
+
* If preventCompleteOnSelection is true then the input will be left as entered by the user.
|
|
25405
|
+
* If preventCompleteOnSelection is false (by default) then the input will be completed with the item selected by the user.
|
|
25406
|
+
* If clearOnSelection is true then the input will be cleared upon selection.
|
|
25407
|
+
* @param event
|
|
25408
|
+
*/
|
|
25118
25409
|
handleSelection(event) {
|
|
25119
25410
|
this.cancelEnter = true;
|
|
25120
25411
|
this.itemSelected.emit(event.option.value);
|
|
25121
|
-
if (this.
|
|
25122
|
-
this.lastInputValue$.pipe(first()).subscribe((
|
|
25123
|
-
this.inputRef.nativeElement.value =
|
|
25412
|
+
if (this.preventCompleteOnSelection) {
|
|
25413
|
+
this.lastInputValue$.pipe(first()).subscribe((lastInputValue) => {
|
|
25414
|
+
this.inputRef.nativeElement.value = lastInputValue;
|
|
25124
25415
|
});
|
|
25416
|
+
return;
|
|
25417
|
+
}
|
|
25418
|
+
if (this.clearOnSelection) {
|
|
25419
|
+
this.inputRef.nativeElement.value = '';
|
|
25125
25420
|
}
|
|
25126
25421
|
}
|
|
25127
25422
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25128
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AutocompleteComponent, isStandalone: true, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", minCharacterCount: "minCharacterCount", allowSubmit: "allowSubmit", 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 <div class=\"flex flex-row absolute inset-y-0 right-0\">\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 transition-all duration-100 clear-btn\"\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 transition-all duration-100 search-btn rounded-r\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n </div>\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]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width: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: "ngmodule", type: MatIconModule }, { 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: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25423
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AutocompleteComponent, isStandalone: true, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", preventCompleteOnSelection: "preventCompleteOnSelection", autoFocus: "autoFocus", minCharacterCount: "minCharacterCount", allowSubmit: "allowSubmit", 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 <div class=\"flex flex-row absolute inset-y-0 right-0\">\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 transition-all duration-100 clear-btn\"\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 transition-all duration-100 search-btn rounded-r\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n </div>\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]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width: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: "ngmodule", type: MatIconModule }, { 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: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i3.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { 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: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25129
25424
|
}
|
|
25130
25425
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
25131
25426
|
type: Component,
|
|
@@ -25145,6 +25440,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
25145
25440
|
type: Input
|
|
25146
25441
|
}], clearOnSelection: [{
|
|
25147
25442
|
type: Input
|
|
25443
|
+
}], preventCompleteOnSelection: [{
|
|
25444
|
+
type: Input
|
|
25148
25445
|
}], autoFocus: [{
|
|
25149
25446
|
type: Input
|
|
25150
25447
|
}], minCharacterCount: [{
|
|
@@ -25377,7 +25674,7 @@ class CopyTextButtonComponent {
|
|
|
25377
25674
|
event.target.blur();
|
|
25378
25675
|
}
|
|
25379
25676
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25380
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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:
|
|
25677
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25381
25678
|
}
|
|
25382
25679
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
25383
25680
|
type: Component,
|
|
@@ -25397,7 +25694,7 @@ class DatePickerComponent {
|
|
|
25397
25694
|
this.dateChange = new EventEmitter();
|
|
25398
25695
|
}
|
|
25399
25696
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25400
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n class=\"pl-3\"\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$
|
|
25697
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n class=\"pl-3\"\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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25401
25698
|
}
|
|
25402
25699
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
25403
25700
|
type: Component,
|
|
@@ -25414,7 +25711,7 @@ class DateRangePickerComponent {
|
|
|
25414
25711
|
this.endDateChange = new EventEmitter();
|
|
25415
25712
|
}
|
|
25416
25713
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25417
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", inputs: { startDate: "startDate", endDate: "endDate" }, outputs: { startDateChange: "startDateChange", endDateChange: "endDateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"pl-3 flex justify-center\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n matStartDate\n placeholder=\"Start date\"\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n placeholder=\"End date\"\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\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</div>\n<mat-date-range-picker #picker></mat-date-range-picker>\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$
|
|
25714
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", inputs: { startDate: "startDate", endDate: "endDate" }, outputs: { startDateChange: "startDateChange", endDateChange: "endDateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"pl-3 flex justify-center\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n matStartDate\n placeholder=\"Start date\"\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n placeholder=\"End date\"\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\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</div>\n<mat-date-range-picker #picker></mat-date-range-picker>\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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25418
25715
|
}
|
|
25419
25716
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
25420
25717
|
type: Component,
|
|
@@ -25446,7 +25743,7 @@ class DragAndDropFileInputComponent {
|
|
|
25446
25743
|
this.fileChange.emit(this.selectedFile);
|
|
25447
25744
|
}
|
|
25448
25745
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25449
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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$
|
|
25746
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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$2.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
25450
25747
|
}
|
|
25451
25748
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
25452
25749
|
type: Component,
|
|
@@ -27334,7 +27631,7 @@ class ApiCardComponent {
|
|
|
27334
27631
|
}
|
|
27335
27632
|
}
|
|
27336
27633
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27337
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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 cursor-default\"\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 <div class=\"flex flex-row gap-2 items-center\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\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 (click)=\"openRecordApiFormPanel()\"\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</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:
|
|
27634
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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 cursor-default\"\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 <div class=\"flex flex-row gap-2 items-center\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\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 (click)=\"openRecordApiFormPanel()\"\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</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.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 }); }
|
|
27338
27635
|
}
|
|
27339
27636
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
27340
27637
|
type: Component,
|
|
@@ -27363,6 +27660,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27363
27660
|
type: Input
|
|
27364
27661
|
}] } });
|
|
27365
27662
|
|
|
27663
|
+
class ConfirmationDialogComponent {
|
|
27664
|
+
constructor(dialogRef, data) {
|
|
27665
|
+
this.dialogRef = dialogRef;
|
|
27666
|
+
this.data = data;
|
|
27667
|
+
}
|
|
27668
|
+
onConfirm() {
|
|
27669
|
+
this.dialogRef.close(true);
|
|
27670
|
+
}
|
|
27671
|
+
onCancel() {
|
|
27672
|
+
this.dialogRef.close(false);
|
|
27673
|
+
}
|
|
27674
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i1$7.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27675
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfirmationDialogComponent, isStandalone: true, selector: "gn-ui-confirmation-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>{{ data.message }}</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n cdkFocusInitial\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$7.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$7.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1$7.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27676
|
+
}
|
|
27677
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
|
|
27678
|
+
type: Component,
|
|
27679
|
+
args: [{ selector: 'gn-ui-confirmation-dialog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatDialogModule, ButtonComponent], template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>{{ data.message }}</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n cdkFocusInitial\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n" }]
|
|
27680
|
+
}], ctorParameters: function () { return [{ type: i1$7.MatDialogRef }, { type: undefined, decorators: [{
|
|
27681
|
+
type: Inject,
|
|
27682
|
+
args: [MAT_DIALOG_DATA]
|
|
27683
|
+
}] }]; } });
|
|
27684
|
+
|
|
27366
27685
|
class ContentGhostComponent {
|
|
27367
27686
|
constructor() {
|
|
27368
27687
|
this.ghostClass = '';
|
|
@@ -27550,11 +27869,11 @@ class MarkdownParserComponent {
|
|
|
27550
27869
|
return marked.parse(this.textContent);
|
|
27551
27870
|
}
|
|
27552
27871
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownParserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27553
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MarkdownParserComponent, isStandalone: true, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:
|
|
27872
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MarkdownParserComponent, isStandalone: true, selector: "gn-ui-markdown-parser", inputs: { textContent: "textContent" }, ngImport: i0, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0;line-height:1.5;word-wrap:break-word;height:100%}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27554
27873
|
}
|
|
27555
27874
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownParserComponent, decorators: [{
|
|
27556
27875
|
type: Component,
|
|
27557
|
-
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:
|
|
27876
|
+
args: [{ selector: 'gn-ui-markdown-parser', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"markdown-body\" [innerHTML]=\"parsedMarkdown\"></div>\n", styles: [":host ::ng-deep .markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;margin:0;line-height:1.5;word-wrap:break-word;height:100%}:host ::ng-deep .markdown-body strong{@apply font-bold;color:var(--color-secondary-darker)}:host ::ng-deep .markdown-body h1,:host ::ng-deep .markdown-body h2,:host ::ng-deep .markdown-body h3,:host ::ng-deep .markdown-body h4,:host ::ng-deep .markdown-body h5,:host ::ng-deep .markdown-body h6{margin-top:24px;margin-bottom:16px;line-height:1.25;@apply text-title font-title font-bold;}:host ::ng-deep .markdown-body h1{margin:.67em 0;padding-bottom:.3em;font-size:2em;color:var(--color-primary)}:host ::ng-deep .markdown-body h2{padding-bottom:.3em;font-size:1.5em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h3{font-size:1.25em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h4{font-size:1em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h5{font-size:.875em;color:var(--color-secondary)}:host ::ng-deep .markdown-body h6{font-size:.85em;color:var(--color-secondary-lighter)}:host ::ng-deep .markdown-body p{margin-top:0;margin-bottom:10px}:host ::ng-deep .markdown-body p>a{margin-top:0;margin-bottom:10px;color:var(--color-primary)!important;text-decoration:none}:host ::ng-deep .markdown-body p>a:hover{color:var(--color-primary-darker)!important;@apply underline;}:host ::ng-deep .markdown-body blockquote{margin:0;padding:0 1em;color:var(--color-secondary-lighter);border-left:.25em solid var(--color-primary-lighter)}:host ::ng-deep .markdown-body pre{margin-top:0;margin-bottom:0;font-size:12px;background-color:var(--color-gray-100);word-wrap:normal}:host ::ng-deep .markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;color:var(--color-secondary);border-radius:6px}:host ::ng-deep .markdown-body code{padding:.2em .4em;margin:0;font-size:85%;white-space:break-spaces;border-radius:6px}:host ::ng-deep .markdown-body pre code{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;border:0}:host ::ng-deep .markdown-body hr{box-sizing:content-box;overflow:hidden;background:transparent;border-bottom:1px solid var(--color-secondary);height:.15em;padding:0;margin:24px 0;background-color:var(--color-secondary);border:0}:host ::ng-deep .markdown-body hr:before{display:table;content:\"\"}:host ::ng-deep .markdown-body hr:after{display:table;clear:both;content:\"\"}:host ::ng-deep .markdown-body ul,:host ::ng-deep .markdown-body ol{margin-top:0;margin-bottom:0;padding-left:2em;list-style:revert}:host ::ng-deep .markdown-body ol ol,:host ::ng-deep .markdown-body ul ol{list-style-type:lower-roman}:host ::ng-deep .markdown-body ul ul ol,:host ::ng-deep .markdown-body ul ol ol,:host ::ng-deep .markdown-body ol ul ol,:host ::ng-deep .markdown-body ol ol ol{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"a s\"]{list-style-type:lower-alpha}:host ::ng-deep .markdown-body ol[type=\"A s\"]{list-style-type:upper-alpha}:host ::ng-deep .markdown-body ol[type=\"i s\"]{list-style-type:lower-roman}:host ::ng-deep .markdown-body ol[type=\"I s\"]{list-style-type:upper-roman}:host ::ng-deep .markdown-body ol[type=\"1\"]{list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body div>ol:not([type]){list-style:unset;list-style-type:decimal}:host ::ng-deep .markdown-body table{border-spacing:0;border-collapse:collapse;display:block;width:max-content;max-width:100%;overflow:auto;padding-bottom:15px}:host ::ng-deep .markdown-body td,:host ::ng-deep .markdown-body th{padding:0}:host ::ng-deep .markdown-body th{color:var(--color-secondary)}:host ::ng-deep .markdown-body table th,:host ::ng-deep .markdown-body table td{padding:6px 13px;border:1px solid var(--color-gray-500)}:host ::ng-deep .markdown-body table td>:last-child{margin-bottom:0}:host ::ng-deep .markdown-body table tr{background-color:#fff;border-top:1px solid var(--color-secondary-lighter)}:host ::ng-deep .markdown-body table tr:nth-child(2n){background-color:var(--color-gray-100)}:host ::ng-deep .markdown-body table img{background-color:transparent}:host ::ng-deep .markdown-body img{border-style:none;max-width:100%;box-sizing:content-box;background-color:transparent}:host ::ng-deep .markdown-body img[align=right]{padding-left:20px}:host ::ng-deep .markdown-body img[align=left]{padding-right:20px}\n"] }]
|
|
27558
27877
|
}], propDecorators: { textContent: [{
|
|
27559
27878
|
type: Input
|
|
27560
27879
|
}] } });
|
|
@@ -27569,7 +27888,7 @@ class MarkdownEditorComponent {
|
|
|
27569
27888
|
this.textContentChanged.emit(this.textContent);
|
|
27570
27889
|
}
|
|
27571
27890
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27572
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p
|
|
27891
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p\n *ngIf=\"helperText\"\n class=\"flex-none mb-2 font-medium text-sm text-gray-900\"\n >\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27573
27892
|
}
|
|
27574
27893
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
|
|
27575
27894
|
type: Component,
|
|
@@ -27582,7 +27901,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
27582
27901
|
TextAreaComponent,
|
|
27583
27902
|
MarkdownParserComponent,
|
|
27584
27903
|
TranslateModule,
|
|
27585
|
-
], template: "<div class=\"h-full flex flex-col\">\n <p
|
|
27904
|
+
], template: "<div class=\"h-full flex flex-col\">\n <p\n *ngIf=\"helperText\"\n class=\"flex-none mb-2 font-medium text-sm text-gray-900\"\n >\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n" }]
|
|
27586
27905
|
}], propDecorators: { preview: [{
|
|
27587
27906
|
type: Input
|
|
27588
27907
|
}], helperText: [{
|
|
@@ -27873,11 +28192,11 @@ class MetadataInfoComponent {
|
|
|
27873
28192
|
this.keyword.emit(keyword);
|
|
27874
28193
|
}
|
|
27875
28194
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27876
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\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: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28195
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: MetadataInfoComponent, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\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: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27877
28196
|
}
|
|
27878
28197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MetadataInfoComponent, decorators: [{
|
|
27879
28198
|
type: Component,
|
|
27880
|
-
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div>\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <gn-ui-markdown-parser\n
|
|
28199
|
+
args: [{ selector: 'gn-ui-metadata-info', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost ghostClass=\"h-32\" [showContent]=\"fieldReady('abstract')\">\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n <div *ngIf=\"metadata.keywords?.length\">\n <p class=\"mt-6 mb-3 font-medium text-primary text-sm\" translate>\n record.metadata.keywords\n </p>\n <div class=\"sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel [title]=\"'record.metadata.usage' | translate\">\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <h5 translate class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\">\n record.metadata.otherConstraints\n </h5>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.lineage ||\n metadata.recordUpdated ||\n metadata.updateFrequency ||\n metadata.status\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.recordCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordCreated.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.recordPublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ metadata.recordPublished.toLocaleDateString() }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.languages\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.languages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'record.metadata.technical' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && metadata.recordUpdated.toLocaleString() }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button mat-icon{transform:scale(.8)}\n"] }]
|
|
27881
28200
|
}], propDecorators: { metadata: [{
|
|
27882
28201
|
type: Input
|
|
27883
28202
|
}], incomplete: [{
|
|
@@ -28134,7 +28453,7 @@ class RecordApiFormComponent {
|
|
|
28134
28453
|
}
|
|
28135
28454
|
}
|
|
28136
28455
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28137
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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:
|
|
28456
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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: i3$1.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", "disabled"], 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 }); }
|
|
28138
28457
|
}
|
|
28139
28458
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
28140
28459
|
type: Component,
|
|
@@ -28162,7 +28481,7 @@ class RelatedRecordCardComponent {
|
|
|
28162
28481
|
return `${this.baseClasses} ${this.extraClass}`;
|
|
28163
28482
|
}
|
|
28164
28483
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28165
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record", extraClass: "extraClass" }, ngImport: i0, template: "<a\n [class]=\"classList\"\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:
|
|
28484
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record", extraClass: "extraClass" }, ngImport: i0, template: "<a\n [class]=\"classList\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$8.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 }); }
|
|
28166
28485
|
}
|
|
28167
28486
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
28168
28487
|
type: Component,
|
|
@@ -28175,6 +28494,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28175
28494
|
|
|
28176
28495
|
class SortableListComponent {
|
|
28177
28496
|
constructor() {
|
|
28497
|
+
this.addOptions = [];
|
|
28178
28498
|
this.elementsChange = new EventEmitter();
|
|
28179
28499
|
this.add = new EventEmitter();
|
|
28180
28500
|
}
|
|
@@ -28186,8 +28506,11 @@ class SortableListComponent {
|
|
|
28186
28506
|
this.elements = this.elements.filter((_, i) => i !== index);
|
|
28187
28507
|
this.elementsChange.emit(this.elements);
|
|
28188
28508
|
}
|
|
28509
|
+
trackByFn(index) {
|
|
28510
|
+
return index;
|
|
28511
|
+
}
|
|
28189
28512
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SortableListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28190
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SortableListComponent, isStandalone: true, selector: "gn-ui-sortable-list", inputs: { elements: "elements", addOptions: "addOptions" }, outputs: { elementsChange: "elementsChange", add: "add" }, ngImport: i0, template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container
|
|
28513
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: SortableListComponent, isStandalone: true, selector: "gn-ui-sortable-list", inputs: { elements: "elements", addOptions: "addOptions" }, outputs: { elementsChange: "elementsChange", add: "add" }, ngImport: i0, template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container\n *ngFor=\"let element of elements; index as index; trackBy: trackByFn\"\n >\n <div class=\"sortable-box bg-white flex items-center\" cdkDrag>\n <span\n cdkDragHandle\n class=\"material-symbols-outlined mx-[10px] cursor-grab gn-ui-icon-medium flex-none\"\n >\n drag_handle\n </span>\n <div class=\"flex-1\">\n <ng-container\n *ngComponentOutlet=\"element.component; inputs: element.inputs\"\n ></ng-container>\n </div>\n <span\n (click)=\"removeElement(index)\"\n class=\"material-symbols-outlined mx-[10px] cursor-pointer gn-ui-icon-medium flex-none\"\n >\n close\n </span>\n </div>\n </ng-container>\n</div>\n", styles: [".cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.sortable-list.cdk-drop-list-dragging .sortable-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28191
28514
|
}
|
|
28192
28515
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SortableListComponent, decorators: [{
|
|
28193
28516
|
type: Component,
|
|
@@ -28199,7 +28522,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28199
28522
|
CdkDragHandle,
|
|
28200
28523
|
MatIconModule,
|
|
28201
28524
|
ButtonComponent,
|
|
28202
|
-
], template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container
|
|
28525
|
+
], template: "<div class=\"flex gap-2 mb-2\">\n <gn-ui-button\n *ngFor=\"let addOption of addOptions\"\n (buttonClick)=\"add.emit(addOption.eventName)\"\n >\n <span class=\"material-symbols-outlined gn-ui-icon-small\"> add </span>\n {{ addOption.buttonLabel }}</gn-ui-button\n >\n</div>\n<div\n cdkDropList\n class=\"sortable-list flex flex-col gap-3 p-2\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <ng-container\n *ngFor=\"let element of elements; index as index; trackBy: trackByFn\"\n >\n <div class=\"sortable-box bg-white flex items-center\" cdkDrag>\n <span\n cdkDragHandle\n class=\"material-symbols-outlined mx-[10px] cursor-grab gn-ui-icon-medium flex-none\"\n >\n drag_handle\n </span>\n <div class=\"flex-1\">\n <ng-container\n *ngComponentOutlet=\"element.component; inputs: element.inputs\"\n ></ng-container>\n </div>\n <span\n (click)=\"removeElement(index)\"\n class=\"material-symbols-outlined mx-[10px] cursor-pointer gn-ui-icon-medium flex-none\"\n >\n close\n </span>\n </div>\n </ng-container>\n</div>\n", styles: [".cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.sortable-list.cdk-drop-list-dragging .sortable-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
28203
28526
|
}], propDecorators: { elements: [{
|
|
28204
28527
|
type: Input
|
|
28205
28528
|
}], addOptions: [{
|
|
@@ -28337,11 +28660,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28337
28660
|
|
|
28338
28661
|
class FormFieldWrapperComponent {
|
|
28339
28662
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28340
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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:
|
|
28663
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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 overflow-y-auto\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28341
28664
|
}
|
|
28342
28665
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
28343
28666
|
type: Component,
|
|
28344
|
-
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatTooltipModule], 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" }]
|
|
28667
|
+
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatTooltipModule], 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 overflow-y-auto\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
|
|
28345
28668
|
}], propDecorators: { label: [{
|
|
28346
28669
|
type: Input
|
|
28347
28670
|
}], hint: [{
|
|
@@ -28397,11 +28720,11 @@ class InteractiveTableComponent {
|
|
|
28397
28720
|
this.itemClick.emit(item);
|
|
28398
28721
|
}
|
|
28399
28722
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28400
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28723
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\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.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28401
28724
|
}
|
|
28402
28725
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
28403
28726
|
type: Component,
|
|
28404
|
-
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, InteractiveTableColumnComponent, MatIconModule], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"] }]
|
|
28727
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, InteractiveTableColumnComponent, MatIconModule], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"] }]
|
|
28405
28728
|
}], propDecorators: { columns: [{
|
|
28406
28729
|
type: ContentChildren,
|
|
28407
28730
|
args: [InteractiveTableColumnComponent]
|
|
@@ -28593,7 +28916,7 @@ class UserPreviewComponent {
|
|
|
28593
28916
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
28594
28917
|
}
|
|
28595
28918
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28596
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-10 h-10 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:
|
|
28919
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-10 h-10 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i3$1.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28597
28920
|
}
|
|
28598
28921
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
28599
28922
|
type: Component,
|
|
@@ -28950,19 +29273,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
28950
29273
|
}] });
|
|
28951
29274
|
|
|
28952
29275
|
class ActionMenuComponent {
|
|
28953
|
-
constructor() {
|
|
29276
|
+
constructor(dialog, translateService) {
|
|
29277
|
+
this.dialog = dialog;
|
|
29278
|
+
this.translateService = translateService;
|
|
28954
29279
|
this.duplicate = new EventEmitter();
|
|
29280
|
+
this.delete = new EventEmitter();
|
|
28955
29281
|
}
|
|
28956
29282
|
openMenu() {
|
|
28957
29283
|
this.trigger.openMenu();
|
|
28958
29284
|
}
|
|
28959
|
-
|
|
28960
|
-
|
|
29285
|
+
openDeleteConfirmationDialog() {
|
|
29286
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
29287
|
+
data: {
|
|
29288
|
+
title: this.translateService.instant('editor.record.delete.confirmation.title'),
|
|
29289
|
+
message: this.translateService.instant('editor.record.delete.confirmation.message'),
|
|
29290
|
+
confirmText: this.translateService.instant('editor.record.delete.confirmation.confirmText'),
|
|
29291
|
+
cancelText: this.translateService.instant('editor.record.delete.confirmation.cancelText'),
|
|
29292
|
+
},
|
|
29293
|
+
restoreFocus: false,
|
|
29294
|
+
});
|
|
29295
|
+
// Manually restore focus to the menu trigger since the element that
|
|
29296
|
+
// opens the dialog won't be in the DOM any more when the dialog closes.
|
|
29297
|
+
dialogRef.afterClosed().subscribe((confirmed) => {
|
|
29298
|
+
this.trigger.focus();
|
|
29299
|
+
if (confirmed) {
|
|
29300
|
+
this.delete.emit();
|
|
29301
|
+
}
|
|
29302
|
+
});
|
|
29303
|
+
}
|
|
29304
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionMenuComponent, deps: [{ token: i1$7.MatDialog }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29305
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete" }, outputs: { duplicate: "duplicate", delete: "delete" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<gn-ui-button\n type=\"light\"\n [matMenuTriggerFor]=\"menu\"\n (buttonClick)=\"openMenu()\"\n data-test=\"record-menu-button\"\n>\n <mat-icon class=\"material-symbols-outlined\">more_vert</mat-icon>\n</gn-ui-button>\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n [disabled]=\"!canDuplicate\"\n (click)=\"duplicate.emit()\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span translate>record.action.duplicate</span>\n </button>\n <button\n mat-menu-item\n [disabled]=\"!canDelete\"\n (click)=\"openDeleteConfirmationDialog()\"\n data-test=\"record-menu-delete-button\"\n >\n <span translate>record.action.delete</span>\n </button>\n</mat-menu>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
28961
29306
|
}
|
|
28962
29307
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
28963
29308
|
type: Component,
|
|
28964
|
-
args: [{ selector: 'gn-ui-action-menu', standalone: true, imports: [
|
|
28965
|
-
|
|
29309
|
+
args: [{ selector: 'gn-ui-action-menu', standalone: true, imports: [
|
|
29310
|
+
MatIconModule,
|
|
29311
|
+
ButtonComponent,
|
|
29312
|
+
MatMenuModule,
|
|
29313
|
+
MatDialogModule,
|
|
29314
|
+
ConfirmationDialogComponent,
|
|
29315
|
+
TranslateModule,
|
|
29316
|
+
], template: "<gn-ui-button\n type=\"light\"\n [matMenuTriggerFor]=\"menu\"\n (buttonClick)=\"openMenu()\"\n data-test=\"record-menu-button\"\n>\n <mat-icon class=\"material-symbols-outlined\">more_vert</mat-icon>\n</gn-ui-button>\n<mat-menu #menu=\"matMenu\">\n <button\n mat-menu-item\n [disabled]=\"!canDuplicate\"\n (click)=\"duplicate.emit()\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span translate>record.action.duplicate</span>\n </button>\n <button\n mat-menu-item\n [disabled]=\"!canDelete\"\n (click)=\"openDeleteConfirmationDialog()\"\n data-test=\"record-menu-delete-button\"\n >\n <span translate>record.action.delete</span>\n </button>\n</mat-menu>\n" }]
|
|
29317
|
+
}], ctorParameters: function () { return [{ type: i1$7.MatDialog }, { type: i1$1.TranslateService }]; }, propDecorators: { canDuplicate: [{
|
|
29318
|
+
type: Input
|
|
29319
|
+
}], canDelete: [{
|
|
29320
|
+
type: Input
|
|
29321
|
+
}], duplicate: [{
|
|
29322
|
+
type: Output
|
|
29323
|
+
}], delete: [{
|
|
28966
29324
|
type: Output
|
|
28967
29325
|
}], trigger: [{
|
|
28968
29326
|
type: ViewChild,
|
|
@@ -28974,11 +29332,14 @@ class ResultsTableComponent {
|
|
|
28974
29332
|
this.records = [];
|
|
28975
29333
|
this.selectedRecordsIdentifiers = [];
|
|
28976
29334
|
this.sortOrder = null;
|
|
28977
|
-
this.
|
|
29335
|
+
this.hasDraft = () => false;
|
|
29336
|
+
this.canDuplicate = () => true;
|
|
29337
|
+
this.canDelete = () => true;
|
|
28978
29338
|
// emits the column (field) as well as the order
|
|
28979
29339
|
this.sortByChange = new EventEmitter();
|
|
28980
29340
|
this.recordClick = new EventEmitter();
|
|
28981
29341
|
this.duplicateRecord = new EventEmitter();
|
|
29342
|
+
this.deleteRecord = new EventEmitter();
|
|
28982
29343
|
this.recordsSelectedChange = new EventEmitter();
|
|
28983
29344
|
}
|
|
28984
29345
|
dateToString(date) {
|
|
@@ -29016,6 +29377,9 @@ class ResultsTableComponent {
|
|
|
29016
29377
|
handleDuplicate(item) {
|
|
29017
29378
|
this.duplicateRecord.emit(item);
|
|
29018
29379
|
}
|
|
29380
|
+
handleDelete(item) {
|
|
29381
|
+
this.deleteRecord.emit(item);
|
|
29382
|
+
}
|
|
29019
29383
|
setSortBy(col, order) {
|
|
29020
29384
|
this.sortByChange.emit([col, order]);
|
|
29021
29385
|
}
|
|
@@ -29051,7 +29415,7 @@ class ResultsTableComponent {
|
|
|
29051
29415
|
return !allSelected && someSelected;
|
|
29052
29416
|
}
|
|
29053
29417
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29054
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder",
|
|
29418
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", recordsSelectedChange: "recordsSelectedChange" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { 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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete"], outputs: ["duplicate", "delete"] }] }); }
|
|
29055
29419
|
}
|
|
29056
29420
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
29057
29421
|
type: Component,
|
|
@@ -29064,14 +29428,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
29064
29428
|
TranslateModule,
|
|
29065
29429
|
BadgeComponent,
|
|
29066
29430
|
ActionMenuComponent,
|
|
29067
|
-
], template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"
|
|
29431
|
+
], template: "<gn-ui-interactive-table\n [items]=\"records\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full\">\n <span class=\"overflow-hidden text-ellipsis\">{{ item.title }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.4em 0.6em'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [canDelete]=\"canDelete(item)\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
29068
29432
|
}], propDecorators: { records: [{
|
|
29069
29433
|
type: Input
|
|
29070
29434
|
}], selectedRecordsIdentifiers: [{
|
|
29071
29435
|
type: Input
|
|
29072
29436
|
}], sortOrder: [{
|
|
29073
29437
|
type: Input
|
|
29074
|
-
}],
|
|
29438
|
+
}], hasDraft: [{
|
|
29439
|
+
type: Input
|
|
29440
|
+
}], canDuplicate: [{
|
|
29441
|
+
type: Input
|
|
29442
|
+
}], canDelete: [{
|
|
29075
29443
|
type: Input
|
|
29076
29444
|
}], sortByChange: [{
|
|
29077
29445
|
type: Output
|
|
@@ -29079,6 +29447,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
29079
29447
|
type: Output
|
|
29080
29448
|
}], duplicateRecord: [{
|
|
29081
29449
|
type: Output
|
|
29450
|
+
}], deleteRecord: [{
|
|
29451
|
+
type: Output
|
|
29082
29452
|
}], recordsSelectedChange: [{
|
|
29083
29453
|
type: Output
|
|
29084
29454
|
}] } });
|
|
@@ -29692,6 +30062,10 @@ class SearchFacade {
|
|
|
29692
30062
|
this.store.dispatch(new RequestMoreResults(this.searchId));
|
|
29693
30063
|
return this;
|
|
29694
30064
|
}
|
|
30065
|
+
requestNewResults() {
|
|
30066
|
+
this.store.dispatch(new RequestNewResults(this.searchId));
|
|
30067
|
+
return this;
|
|
30068
|
+
}
|
|
29695
30069
|
requestMoreOnAggregation(key, increment) {
|
|
29696
30070
|
this.store.dispatch(new RequestMoreOnAggregation(key, increment, this.searchId));
|
|
29697
30071
|
return this;
|
|
@@ -30137,11 +30511,11 @@ class FuzzySearchComponent {
|
|
|
30137
30511
|
}
|
|
30138
30512
|
}
|
|
30139
30513
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30140
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [
|
|
30514
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30141
30515
|
}
|
|
30142
30516
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FuzzySearchComponent, decorators: [{
|
|
30143
30517
|
type: Component,
|
|
30144
|
-
args: [{ selector: 'gn-ui-fuzzy-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [
|
|
30518
|
+
args: [{ selector: 'gn-ui-fuzzy-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n></gn-ui-autocomplete>\n" }]
|
|
30145
30519
|
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { autocomplete: [{
|
|
30146
30520
|
type: ViewChild,
|
|
30147
30521
|
args: [AutocompleteComponent]
|
|
@@ -30543,12 +30917,12 @@ class SearchEffects {
|
|
|
30543
30917
|
);
|
|
30544
30918
|
});
|
|
30545
30919
|
}
|
|
30546
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, deps: [{ token: i1$
|
|
30920
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, deps: [{ token: i1$9.Actions }, { token: i1$2.Store }, { token: RecordsRepositoryInterface }, { token: FavoritesService }, { token: PlatformServiceInterface }, { token: FILTER_GEOMETRY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30547
30921
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects }); }
|
|
30548
30922
|
}
|
|
30549
30923
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SearchEffects, decorators: [{
|
|
30550
30924
|
type: Injectable
|
|
30551
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
30925
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: i1$2.Store }, { type: RecordsRepositoryInterface }, { type: FavoritesService }, { type: PlatformServiceInterface }, { type: Promise, decorators: [{
|
|
30552
30926
|
type: Optional
|
|
30553
30927
|
}, {
|
|
30554
30928
|
type: Inject,
|
|
@@ -30962,7 +31336,7 @@ class FeatureSearchModule {
|
|
|
30962
31336
|
ResultsHitsContainerComponent,
|
|
30963
31337
|
SearchStateContainerDirective,
|
|
30964
31338
|
FavoriteStarComponent,
|
|
30965
|
-
FilterDropdownComponent], imports: [CommonModule, i1$1.TranslateModule, i1$2.StoreFeatureModule, i1$
|
|
31339
|
+
FilterDropdownComponent], imports: [CommonModule, i1$1.TranslateModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, HttpClientModule,
|
|
30966
31340
|
HttpClientXsrfModule,
|
|
30967
31341
|
UiSearchModule,
|
|
30968
31342
|
UiInputsModule,
|
|
@@ -31053,14 +31427,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
31053
31427
|
}]
|
|
31054
31428
|
}] });
|
|
31055
31429
|
|
|
31430
|
+
class NotificationsService {
|
|
31431
|
+
constructor() {
|
|
31432
|
+
this.notifications$ = new BehaviorSubject([]);
|
|
31433
|
+
}
|
|
31434
|
+
showNotification(content, timeoutMs) {
|
|
31435
|
+
const id = Math.floor(Math.random() * 1000000);
|
|
31436
|
+
this.notifications$.next([...this.notifications$.value, { ...content, id }]);
|
|
31437
|
+
if (typeof timeoutMs === 'undefined')
|
|
31438
|
+
return;
|
|
31439
|
+
setTimeout(() => {
|
|
31440
|
+
this.removeNotificationById(id);
|
|
31441
|
+
}, timeoutMs);
|
|
31442
|
+
}
|
|
31443
|
+
removeNotificationById(id) {
|
|
31444
|
+
this.notifications$.next(this.notifications$.value.filter((n) => n.id !== id));
|
|
31445
|
+
}
|
|
31446
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31447
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
31448
|
+
}
|
|
31449
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, decorators: [{
|
|
31450
|
+
type: Injectable,
|
|
31451
|
+
args: [{
|
|
31452
|
+
providedIn: 'root',
|
|
31453
|
+
}]
|
|
31454
|
+
}] });
|
|
31455
|
+
|
|
31456
|
+
class FeatureNotificationsModule {
|
|
31457
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31458
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule }); }
|
|
31459
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, providers: [NotificationsService] }); }
|
|
31460
|
+
}
|
|
31461
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, decorators: [{
|
|
31462
|
+
type: NgModule,
|
|
31463
|
+
args: [{
|
|
31464
|
+
declarations: [],
|
|
31465
|
+
exports: [],
|
|
31466
|
+
imports: [],
|
|
31467
|
+
providers: [NotificationsService],
|
|
31468
|
+
}]
|
|
31469
|
+
}] });
|
|
31470
|
+
|
|
31471
|
+
class NotificationsContainerComponent {
|
|
31472
|
+
constructor(notificationsService) {
|
|
31473
|
+
this.notificationsService = notificationsService;
|
|
31474
|
+
}
|
|
31475
|
+
trackById(index, notification) {
|
|
31476
|
+
return notification.id;
|
|
31477
|
+
}
|
|
31478
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, deps: [{ token: NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31479
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NotificationsContainerComponent, isStandalone: true, selector: "gn-ui-notifications-container", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: NotificationComponent, selector: "gn-ui-notification", inputs: ["type", "title", "text", "closeMessage"], outputs: ["notificationClose"] }], animations: [
|
|
31480
|
+
trigger('enterExit', [
|
|
31481
|
+
transition(':enter', [
|
|
31482
|
+
animate('150ms', keyframes([
|
|
31483
|
+
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31484
|
+
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31485
|
+
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31486
|
+
])),
|
|
31487
|
+
]),
|
|
31488
|
+
transition(':leave', [
|
|
31489
|
+
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31490
|
+
]),
|
|
31491
|
+
]),
|
|
31492
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31493
|
+
}
|
|
31494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, decorators: [{
|
|
31495
|
+
type: Component,
|
|
31496
|
+
args: [{ selector: 'gn-ui-notifications-container', standalone: true, imports: [CommonModule, NotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
31497
|
+
trigger('enterExit', [
|
|
31498
|
+
transition(':enter', [
|
|
31499
|
+
animate('150ms', keyframes([
|
|
31500
|
+
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31501
|
+
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31502
|
+
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31503
|
+
])),
|
|
31504
|
+
]),
|
|
31505
|
+
transition(':leave', [
|
|
31506
|
+
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31507
|
+
]),
|
|
31508
|
+
]),
|
|
31509
|
+
], template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n" }]
|
|
31510
|
+
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
31511
|
+
|
|
31056
31512
|
class ResultsTableContainerComponent {
|
|
31057
|
-
constructor(searchFacade, searchService, selectionService, recordsRepository) {
|
|
31513
|
+
constructor(searchFacade, searchService, selectionService, recordsRepository, notificationsService, translateService) {
|
|
31058
31514
|
this.searchFacade = searchFacade;
|
|
31059
31515
|
this.searchService = searchService;
|
|
31060
31516
|
this.selectionService = selectionService;
|
|
31061
31517
|
this.recordsRepository = recordsRepository;
|
|
31518
|
+
this.notificationsService = notificationsService;
|
|
31519
|
+
this.translateService = translateService;
|
|
31062
31520
|
this.recordClick = new EventEmitter();
|
|
31063
31521
|
this.duplicateRecord = new EventEmitter();
|
|
31522
|
+
this.subscription = new Subscription();
|
|
31064
31523
|
this.records$ = this.searchFacade.results$;
|
|
31065
31524
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
31066
31525
|
this.sortBy$ = this.searchFacade.sortBy$;
|
|
@@ -31072,6 +31531,28 @@ class ResultsTableContainerComponent {
|
|
|
31072
31531
|
handleDuplicateRecord(item) {
|
|
31073
31532
|
this.duplicateRecord.emit(item);
|
|
31074
31533
|
}
|
|
31534
|
+
async handleDeleteRecord(item) {
|
|
31535
|
+
const uniqueIdentifier = item.uniqueIdentifier;
|
|
31536
|
+
this.subscription.add(this.recordsRepository.deleteRecord(uniqueIdentifier).subscribe({
|
|
31537
|
+
next: () => {
|
|
31538
|
+
this.recordsRepository.clearRecordDraft(uniqueIdentifier);
|
|
31539
|
+
this.searchFacade.requestNewResults();
|
|
31540
|
+
this.notificationsService.showNotification({
|
|
31541
|
+
type: 'success',
|
|
31542
|
+
title: this.translateService.instant('editor.record.deleteSuccess.title'),
|
|
31543
|
+
text: `${this.translateService.instant('editor.record.deleteSuccess.body')}`,
|
|
31544
|
+
}, 2500);
|
|
31545
|
+
},
|
|
31546
|
+
error: (error) => {
|
|
31547
|
+
this.notificationsService.showNotification({
|
|
31548
|
+
type: 'error',
|
|
31549
|
+
title: this.translateService.instant('editor.record.deleteError.title'),
|
|
31550
|
+
text: `${this.translateService.instant('editor.record.deleteError.body')} ${error}`,
|
|
31551
|
+
closeMessage: this.translateService.instant('editor.record.deleteError.closeMessage'),
|
|
31552
|
+
});
|
|
31553
|
+
},
|
|
31554
|
+
}));
|
|
31555
|
+
}
|
|
31075
31556
|
handleSortByChange(col, order) {
|
|
31076
31557
|
this.searchService.setSortBy([order, col]);
|
|
31077
31558
|
}
|
|
@@ -31083,13 +31564,16 @@ class ResultsTableContainerComponent {
|
|
|
31083
31564
|
this.selectionService.selectRecords(records);
|
|
31084
31565
|
}
|
|
31085
31566
|
}
|
|
31086
|
-
|
|
31087
|
-
|
|
31567
|
+
ngOnDestroy() {
|
|
31568
|
+
this.subscription.unsubscribe();
|
|
31569
|
+
}
|
|
31570
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }, { token: NotificationsService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31571
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", outputs: { recordClick: "recordClick", duplicateRecord: "duplicateRecord" }, ngImport: i0, template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: ResultsTableComponent, selector: "gn-ui-results-table", inputs: ["records", "selectedRecordsIdentifiers", "sortOrder", "hasDraft", "canDuplicate", "canDelete"], outputs: ["sortByChange", "recordClick", "duplicateRecord", "deleteRecord", "recordsSelectedChange"] }] }); }
|
|
31088
31572
|
}
|
|
31089
31573
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
31090
31574
|
type: Component,
|
|
31091
|
-
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [
|
|
31092
|
-
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }]; }, propDecorators: { recordClick: [{
|
|
31575
|
+
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n [records]=\"records$ | async\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n" }]
|
|
31576
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }]; }, propDecorators: { recordClick: [{
|
|
31093
31577
|
type: Output
|
|
31094
31578
|
}], duplicateRecord: [{
|
|
31095
31579
|
type: Output
|
|
@@ -31392,7 +31876,7 @@ class LayersPanelComponent {
|
|
|
31392
31876
|
this.mapFacade.addLayer(layer);
|
|
31393
31877
|
}
|
|
31394
31878
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31395
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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$
|
|
31879
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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 }); }
|
|
31396
31880
|
}
|
|
31397
31881
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
31398
31882
|
type: Component,
|
|
@@ -31403,12 +31887,12 @@ class MapEffects {
|
|
|
31403
31887
|
constructor(actions$) {
|
|
31404
31888
|
this.actions$ = actions$;
|
|
31405
31889
|
}
|
|
31406
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, deps: [{ token: i1$
|
|
31890
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, deps: [{ token: i1$9.Actions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31407
31891
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects }); }
|
|
31408
31892
|
}
|
|
31409
31893
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MapEffects, decorators: [{
|
|
31410
31894
|
type: Injectable
|
|
31411
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
31895
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }]; } });
|
|
31412
31896
|
|
|
31413
31897
|
class MapContainerComponent {
|
|
31414
31898
|
constructor(mapFacade) {
|
|
@@ -31561,7 +32045,7 @@ class FeatureMapModule {
|
|
|
31561
32045
|
MatIconModule,
|
|
31562
32046
|
MatTabsModule,
|
|
31563
32047
|
TranslateModule,
|
|
31564
|
-
FeatureSearchModule, i1$2.StoreFeatureModule, i1$
|
|
32048
|
+
FeatureSearchModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, UiElementsModule,
|
|
31565
32049
|
UiInputsModule,
|
|
31566
32050
|
AddLayerFromOgcApiComponent], exports: [MapContextComponent,
|
|
31567
32051
|
MapInstanceDirective,
|
|
@@ -31685,88 +32169,6 @@ const DEFAULT_STYLE_HL_FIXTURE = new Style$1({
|
|
|
31685
32169
|
}),
|
|
31686
32170
|
});
|
|
31687
32171
|
|
|
31688
|
-
class NotificationsService {
|
|
31689
|
-
constructor() {
|
|
31690
|
-
this.notifications$ = new BehaviorSubject([]);
|
|
31691
|
-
}
|
|
31692
|
-
showNotification(content, timeoutMs) {
|
|
31693
|
-
const id = Math.floor(Math.random() * 1000000);
|
|
31694
|
-
this.notifications$.next([...this.notifications$.value, { ...content, id }]);
|
|
31695
|
-
if (typeof timeoutMs === 'undefined')
|
|
31696
|
-
return;
|
|
31697
|
-
setTimeout(() => {
|
|
31698
|
-
this.removeNotificationById(id);
|
|
31699
|
-
}, timeoutMs);
|
|
31700
|
-
}
|
|
31701
|
-
removeNotificationById(id) {
|
|
31702
|
-
this.notifications$.next(this.notifications$.value.filter((n) => n.id !== id));
|
|
31703
|
-
}
|
|
31704
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31705
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
31706
|
-
}
|
|
31707
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsService, decorators: [{
|
|
31708
|
-
type: Injectable,
|
|
31709
|
-
args: [{
|
|
31710
|
-
providedIn: 'root',
|
|
31711
|
-
}]
|
|
31712
|
-
}] });
|
|
31713
|
-
|
|
31714
|
-
class FeatureNotificationsModule {
|
|
31715
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31716
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule }); }
|
|
31717
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, providers: [NotificationsService] }); }
|
|
31718
|
-
}
|
|
31719
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureNotificationsModule, decorators: [{
|
|
31720
|
-
type: NgModule,
|
|
31721
|
-
args: [{
|
|
31722
|
-
declarations: [],
|
|
31723
|
-
exports: [],
|
|
31724
|
-
imports: [],
|
|
31725
|
-
providers: [NotificationsService],
|
|
31726
|
-
}]
|
|
31727
|
-
}] });
|
|
31728
|
-
|
|
31729
|
-
class NotificationsContainerComponent {
|
|
31730
|
-
constructor(notificationsService) {
|
|
31731
|
-
this.notificationsService = notificationsService;
|
|
31732
|
-
}
|
|
31733
|
-
trackById(index, notification) {
|
|
31734
|
-
return notification.id;
|
|
31735
|
-
}
|
|
31736
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, deps: [{ token: NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31737
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NotificationsContainerComponent, isStandalone: true, selector: "gn-ui-notifications-container", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: NotificationComponent, selector: "gn-ui-notification", inputs: ["type", "title", "text", "closeMessage"], outputs: ["notificationClose"] }], animations: [
|
|
31738
|
-
trigger('enterExit', [
|
|
31739
|
-
transition(':enter', [
|
|
31740
|
-
animate('150ms', keyframes([
|
|
31741
|
-
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31742
|
-
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31743
|
-
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31744
|
-
])),
|
|
31745
|
-
]),
|
|
31746
|
-
transition(':leave', [
|
|
31747
|
-
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31748
|
-
]),
|
|
31749
|
-
]),
|
|
31750
|
-
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31751
|
-
}
|
|
31752
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NotificationsContainerComponent, decorators: [{
|
|
31753
|
-
type: Component,
|
|
31754
|
-
args: [{ selector: 'gn-ui-notifications-container', standalone: true, imports: [CommonModule, NotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
31755
|
-
trigger('enterExit', [
|
|
31756
|
-
transition(':enter', [
|
|
31757
|
-
animate('150ms', keyframes([
|
|
31758
|
-
style({ transform: 'scale(1)', opacity: 0 }),
|
|
31759
|
-
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
31760
|
-
style({ transform: 'scale(1)', opacity: 1 }),
|
|
31761
|
-
])),
|
|
31762
|
-
]),
|
|
31763
|
-
transition(':leave', [
|
|
31764
|
-
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
31765
|
-
]),
|
|
31766
|
-
]),
|
|
31767
|
-
], template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n" }]
|
|
31768
|
-
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
31769
|
-
|
|
31770
32172
|
/*
|
|
31771
32173
|
Metadata actions
|
|
31772
32174
|
*/
|
|
@@ -32134,7 +32536,7 @@ class TableComponent {
|
|
|
32134
32536
|
return rowIdPrefix + id;
|
|
32135
32537
|
}
|
|
32136
32538
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32137
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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$
|
|
32539
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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$a.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$a.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$a.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$a.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$a.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$a.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$a.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$a.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$a.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$a.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$3.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 }); }
|
|
32138
32540
|
}
|
|
32139
32541
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableComponent, decorators: [{
|
|
32140
32542
|
type: Component,
|
|
@@ -33600,12 +34002,12 @@ class MdViewEffects {
|
|
|
33600
34002
|
}));
|
|
33601
34003
|
})))));
|
|
33602
34004
|
}
|
|
33603
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$
|
|
34005
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$9.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33604
34006
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects }); }
|
|
33605
34007
|
}
|
|
33606
34008
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
33607
34009
|
type: Injectable
|
|
33608
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
34010
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }]; } });
|
|
33609
34011
|
|
|
33610
34012
|
marker('externalviewer.dataset.unnamed');
|
|
33611
34013
|
class ExternalViewerButtonComponent {
|
|
@@ -34433,7 +34835,7 @@ class DataViewShareComponent {
|
|
|
34433
34835
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
34434
34836
|
}
|
|
34435
34837
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, deps: [{ token: WEB_COMPONENT_EMBEDDER_URL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34436
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewShareComponent, selector: "gn-ui-data-view-share", inputs: { viewType: "viewType" }, 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\n [viewType]=\"viewType\"\n ></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\n [viewType]=\"viewType\"\n ></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$
|
|
34838
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DataViewShareComponent, selector: "gn-ui-data-view-share", inputs: { viewType: "viewType" }, 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\n [viewType]=\"viewType\"\n ></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\n [viewType]=\"viewType\"\n ></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", inputs: ["viewType"] }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component", inputs: ["viewType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34437
34839
|
}
|
|
34438
34840
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataViewShareComponent, decorators: [{
|
|
34439
34841
|
type: Component,
|
|
@@ -34454,7 +34856,7 @@ class FeatureRecordModule {
|
|
|
34454
34856
|
ExternalViewerButtonComponent,
|
|
34455
34857
|
DataViewPermalinkComponent,
|
|
34456
34858
|
DataViewWebComponentComponent,
|
|
34457
|
-
DataViewShareComponent], imports: [CommonModule, i1$2.StoreFeatureModule, i1$
|
|
34859
|
+
DataViewShareComponent], imports: [CommonModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule, UiLayoutModule,
|
|
34458
34860
|
FeatureMapModule,
|
|
34459
34861
|
FeatureCatalogModule,
|
|
34460
34862
|
UiMapModule,
|
|
@@ -34604,13 +35006,29 @@ const RECORD_ABSTRACT_FIELD = {
|
|
|
34604
35006
|
labelKey: marker('editor.record.form.field.abstract'),
|
|
34605
35007
|
},
|
|
34606
35008
|
};
|
|
35009
|
+
const CONTACTS_FOR_RESOURCE_FIELD = {
|
|
35010
|
+
model: 'contactsForResource',
|
|
35011
|
+
formFieldConfig: {
|
|
35012
|
+
labelKey: '',
|
|
35013
|
+
},
|
|
35014
|
+
};
|
|
35015
|
+
const RECORD_GRAPHICAL_OVERVIEW_FIELD = {
|
|
35016
|
+
model: 'overviews',
|
|
35017
|
+
formFieldConfig: {
|
|
35018
|
+
labelKey: marker('editor.record.form.field.overviews'),
|
|
35019
|
+
},
|
|
35020
|
+
};
|
|
34607
35021
|
/************************************************************
|
|
34608
35022
|
*************** SECTIONS *****************
|
|
34609
35023
|
************************************************************
|
|
34610
35024
|
*/
|
|
34611
35025
|
const TITLE_SECTION = {
|
|
34612
35026
|
hidden: false,
|
|
34613
|
-
fields: [
|
|
35027
|
+
fields: [
|
|
35028
|
+
RECORD_TITLE_FIELD,
|
|
35029
|
+
RECORD_ABSTRACT_FIELD,
|
|
35030
|
+
RECORD_GRAPHICAL_OVERVIEW_FIELD,
|
|
35031
|
+
],
|
|
34614
35032
|
};
|
|
34615
35033
|
const ABOUT_SECTION = {
|
|
34616
35034
|
labelKey: marker('editor.record.form.section.about.label'),
|
|
@@ -34655,7 +35073,7 @@ const DATA_MANAGERS_SECTION = {
|
|
|
34655
35073
|
labelKey: marker('editor.record.form.section.dataManagers.label'),
|
|
34656
35074
|
descriptionKey: marker('editor.record.form.section.dataManagers.description'),
|
|
34657
35075
|
hidden: false,
|
|
34658
|
-
fields: [],
|
|
35076
|
+
fields: [CONTACTS_FOR_RESOURCE_FIELD],
|
|
34659
35077
|
};
|
|
34660
35078
|
const DATA_POINT_OF_CONTACT_SECTION = {
|
|
34661
35079
|
labelKey: marker('editor.record.form.section.dataPointOfContact.label'),
|
|
@@ -34688,6 +35106,17 @@ const DEFAULT_CONFIGURATION = {
|
|
|
34688
35106
|
},
|
|
34689
35107
|
],
|
|
34690
35108
|
};
|
|
35109
|
+
/************************************************************
|
|
35110
|
+
*************** LICENSES *****************
|
|
35111
|
+
************************************************************
|
|
35112
|
+
*/
|
|
35113
|
+
const OPEN_DATA_LICENSES = [
|
|
35114
|
+
'etalab',
|
|
35115
|
+
'etalab-v2',
|
|
35116
|
+
'odbl',
|
|
35117
|
+
'odc-by',
|
|
35118
|
+
'pddl',
|
|
35119
|
+
];
|
|
34691
35120
|
|
|
34692
35121
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
34693
35122
|
const initialEditorState = {
|
|
@@ -35098,7 +35527,7 @@ class WizardFieldComponent {
|
|
|
35098
35527
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
35099
35528
|
},
|
|
35100
35529
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
35101
|
-
], 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", "disabled"], 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$
|
|
35530
|
+
], 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", "disabled"], 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 }); }
|
|
35102
35531
|
}
|
|
35103
35532
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
35104
35533
|
type: Component,
|
|
@@ -35248,7 +35677,7 @@ class FeatureEditorModule {
|
|
|
35248
35677
|
MatNativeDateModule,
|
|
35249
35678
|
MatFormFieldModule,
|
|
35250
35679
|
HttpClientModule,
|
|
35251
|
-
HttpClientXsrfModule, i1$2.StoreFeatureModule, i1$
|
|
35680
|
+
HttpClientXsrfModule, i1$2.StoreFeatureModule, i1$9.EffectsFeatureModule], exports: [WizardComponent, WizardSummarizeComponent] }); }
|
|
35252
35681
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureEditorModule, providers: [EditorFacade, Gn4PlatformService], imports: [CommonModule,
|
|
35253
35682
|
UiInputsModule,
|
|
35254
35683
|
UiWidgetsModule,
|
|
@@ -35320,7 +35749,7 @@ class FormFieldKeywordsComponent {
|
|
|
35320
35749
|
this.control.setValue(removeKeywords);
|
|
35321
35750
|
}
|
|
35322
35751
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldKeywordsComponent, deps: [{ token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35323
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { control: "control" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [
|
|
35752
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldKeywordsComponent, isStandalone: true, selector: "gn-ui-form-field-keywords", inputs: { control: "control" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"true\"\n [minCharacterCount]=\"0\"\n [allowSubmit]=\"false\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of control.value; let index = index\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(index)\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35324
35753
|
}
|
|
35325
35754
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldKeywordsComponent, decorators: [{
|
|
35326
35755
|
type: Component,
|
|
@@ -35330,7 +35759,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35330
35759
|
CommonModule,
|
|
35331
35760
|
UiWidgetsModule,
|
|
35332
35761
|
AutocompleteComponent,
|
|
35333
|
-
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [
|
|
35762
|
+
], template: "<div class=\"flex flex-col gap-3\">\n <gn-ui-autocomplete\n [placeholder]=\"'Search for keywords in all thesaurus'\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n [preventCompleteOnSelection]=\"true\"\n [minCharacterCount]=\"0\"\n [allowSubmit]=\"false\"\n ></gn-ui-autocomplete>\n <div class=\"flex gap-2 flex-wrap\">\n <gn-ui-badge\n *ngFor=\"let keyword of control.value; let index = index\"\n [removable]=\"true\"\n (badgeRemoveClicked)=\"removeKeyword(index)\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n</div>\n" }]
|
|
35334
35763
|
}], ctorParameters: function () { return [{ type: PlatformServiceInterface }]; }, propDecorators: { control: [{
|
|
35335
35764
|
type: Input
|
|
35336
35765
|
}] } });
|
|
@@ -35478,7 +35907,7 @@ class FormFieldTemporalExtentsComponent {
|
|
|
35478
35907
|
}
|
|
35479
35908
|
resetValueFromInput(value) {
|
|
35480
35909
|
this.array.clear({ emitEvent: false });
|
|
35481
|
-
|
|
35910
|
+
let newElements = [];
|
|
35482
35911
|
value.forEach((v) => {
|
|
35483
35912
|
if ('start' in v && 'end' in v) {
|
|
35484
35913
|
const rangeControl = new FormControl({
|
|
@@ -35486,8 +35915,8 @@ class FormFieldTemporalExtentsComponent {
|
|
|
35486
35915
|
end: v.end,
|
|
35487
35916
|
});
|
|
35488
35917
|
this.array.push(rangeControl, { emitEvent: false });
|
|
35489
|
-
|
|
35490
|
-
...
|
|
35918
|
+
newElements = [
|
|
35919
|
+
...newElements,
|
|
35491
35920
|
{
|
|
35492
35921
|
component: FormFieldTemporalExtentsRangeComponent,
|
|
35493
35922
|
inputs: {
|
|
@@ -35499,8 +35928,8 @@ class FormFieldTemporalExtentsComponent {
|
|
|
35499
35928
|
else {
|
|
35500
35929
|
const dateControl = new FormControl({ start: v.start });
|
|
35501
35930
|
this.array.push(dateControl, { emitEvent: false });
|
|
35502
|
-
|
|
35503
|
-
...
|
|
35931
|
+
newElements = [
|
|
35932
|
+
...newElements,
|
|
35504
35933
|
{
|
|
35505
35934
|
component: FormFieldTemporalExtentsDateComponent,
|
|
35506
35935
|
inputs: {
|
|
@@ -35510,6 +35939,7 @@ class FormFieldTemporalExtentsComponent {
|
|
|
35510
35939
|
];
|
|
35511
35940
|
}
|
|
35512
35941
|
});
|
|
35942
|
+
this.elements = newElements;
|
|
35513
35943
|
}
|
|
35514
35944
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldTemporalExtentsComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35515
35945
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldTemporalExtentsComponent, isStandalone: true, selector: "gn-ui-form-field-temporal-extents", inputs: { control: "control" }, ngImport: i0, template: "<gn-ui-sortable-list\n [elements]=\"elements\"\n (elementsChange)=\"onElementsChange($event)\"\n [addOptions]=\"addOptions$ | async\"\n (add)=\"onAdd($event)\"\n></gn-ui-sortable-list>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elements", "addOptions"], outputs: ["elementsChange", "add"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -35763,19 +36193,448 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35763
36193
|
type: Input
|
|
35764
36194
|
}] } });
|
|
35765
36195
|
|
|
36196
|
+
class OverviewUploadComponent {
|
|
36197
|
+
constructor(recordsApiService, cd) {
|
|
36198
|
+
this.recordsApiService = recordsApiService;
|
|
36199
|
+
this.cd = cd;
|
|
36200
|
+
this.overviewChange = new EventEmitter();
|
|
36201
|
+
this.altTextChange = new EventEmitter();
|
|
36202
|
+
this.errorHandle = (error) => {
|
|
36203
|
+
console.error(error);
|
|
36204
|
+
this.resourceUrl = '';
|
|
36205
|
+
this.resourceAltText = '';
|
|
36206
|
+
this.resourceFileName = '';
|
|
36207
|
+
this.overviewChange.emit(null);
|
|
36208
|
+
this.cd.markForCheck();
|
|
36209
|
+
};
|
|
36210
|
+
}
|
|
36211
|
+
ngOnInit() {
|
|
36212
|
+
this.recordsApiService.getAllResources(this.metadataUuid).subscribe({
|
|
36213
|
+
next: (resources) => {
|
|
36214
|
+
if (resources && resources.length > 0) {
|
|
36215
|
+
this.resourceUrl = resources[0].url;
|
|
36216
|
+
this.resourceFileName = resources[0].filename;
|
|
36217
|
+
if (!this.resourceAltText) {
|
|
36218
|
+
this.resourceAltText = this.resourceFileName;
|
|
36219
|
+
}
|
|
36220
|
+
}
|
|
36221
|
+
else {
|
|
36222
|
+
this.resourceUrl = '';
|
|
36223
|
+
this.resourceAltText = '';
|
|
36224
|
+
this.resourceFileName = '';
|
|
36225
|
+
}
|
|
36226
|
+
this.cd.markForCheck();
|
|
36227
|
+
},
|
|
36228
|
+
error: this.errorHandle,
|
|
36229
|
+
});
|
|
36230
|
+
}
|
|
36231
|
+
handleFileChange(file) {
|
|
36232
|
+
this.recordsApiService
|
|
36233
|
+
.putResource(this.metadataUuid, file, 'public')
|
|
36234
|
+
.subscribe({
|
|
36235
|
+
next: (resource) => {
|
|
36236
|
+
this.resourceUrl = resource.url;
|
|
36237
|
+
this.resourceAltText = resource.filename;
|
|
36238
|
+
this.overviewChange.emit({
|
|
36239
|
+
url: new URL(resource.url),
|
|
36240
|
+
description: resource.filename,
|
|
36241
|
+
});
|
|
36242
|
+
this.cd.markForCheck();
|
|
36243
|
+
},
|
|
36244
|
+
error: this.errorHandle,
|
|
36245
|
+
});
|
|
36246
|
+
}
|
|
36247
|
+
handleUrlChange(url) {
|
|
36248
|
+
this.recordsApiService
|
|
36249
|
+
.putResourceFromURL(this.metadataUuid, url, 'public')
|
|
36250
|
+
.subscribe({
|
|
36251
|
+
next: (resource) => {
|
|
36252
|
+
this.resourceUrl = resource.url;
|
|
36253
|
+
this.resourceAltText = resource.filename;
|
|
36254
|
+
this.overviewChange.emit({
|
|
36255
|
+
url: new URL(resource.url),
|
|
36256
|
+
description: resource.filename,
|
|
36257
|
+
});
|
|
36258
|
+
this.cd.markForCheck();
|
|
36259
|
+
},
|
|
36260
|
+
error: this.errorHandle,
|
|
36261
|
+
});
|
|
36262
|
+
}
|
|
36263
|
+
handleAltTextChange(newAltText) {
|
|
36264
|
+
this.resourceAltText = newAltText;
|
|
36265
|
+
this.overviewChange.emit({
|
|
36266
|
+
url: new URL(this.resourceUrl),
|
|
36267
|
+
description: this.resourceAltText,
|
|
36268
|
+
});
|
|
36269
|
+
this.cd.markForCheck();
|
|
36270
|
+
}
|
|
36271
|
+
handleDelete() {
|
|
36272
|
+
//this.formControl.markAsDirty()
|
|
36273
|
+
this.recordsApiService
|
|
36274
|
+
.delResource(this.metadataUuid, this.resourceFileName)
|
|
36275
|
+
.subscribe({
|
|
36276
|
+
next: () => {
|
|
36277
|
+
this.resourceAltText = '';
|
|
36278
|
+
this.resourceUrl = '';
|
|
36279
|
+
this.overviewChange.emit(null);
|
|
36280
|
+
this.cd.markForCheck();
|
|
36281
|
+
},
|
|
36282
|
+
error: this.errorHandle,
|
|
36283
|
+
});
|
|
36284
|
+
}
|
|
36285
|
+
ngOnChanges(changes) {
|
|
36286
|
+
const overviewChanges = changes['formControl'];
|
|
36287
|
+
if (overviewChanges &&
|
|
36288
|
+
overviewChanges.currentValue !== overviewChanges.previousValue) {
|
|
36289
|
+
let overview;
|
|
36290
|
+
if (overviewChanges.currentValue.value &&
|
|
36291
|
+
overviewChanges.currentValue.value.length > 0) {
|
|
36292
|
+
overview = overviewChanges.currentValue.value[0];
|
|
36293
|
+
}
|
|
36294
|
+
else {
|
|
36295
|
+
return;
|
|
36296
|
+
}
|
|
36297
|
+
if (overview.description) {
|
|
36298
|
+
this.resourceAltText = overview.description;
|
|
36299
|
+
this.cd.markForCheck();
|
|
36300
|
+
}
|
|
36301
|
+
}
|
|
36302
|
+
}
|
|
36303
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverviewUploadComponent, deps: [{ token: RecordsApiService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36304
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OverviewUploadComponent, isStandalone: true, selector: "gn-ui-overview-upload", inputs: { metadataUuid: "metadataUuid", formControl: "formControl" }, outputs: { overviewChange: "overviewChange", altTextChange: "altTextChange" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-image-input\n [maxSizeMB]=\"5\"\n [previewUrl]=\"resourceUrl\"\n [altText]=\"resourceAltText\"\n (fileChange)=\"handleFileChange($event)\"\n (urlChange)=\"handleUrlChange($event)\"\n (altTextChange)=\"handleAltTextChange($event)\"\n (delete)=\"handleDelete()\"\n></gn-ui-image-input>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ImageInputComponent, selector: "gn-ui-image-input", inputs: ["maxSizeMB", "previewUrl", "altText", "uploadProgress", "uploadError"], outputs: ["fileChange", "urlChange", "uploadCancel", "delete", "altTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36305
|
+
}
|
|
36306
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OverviewUploadComponent, decorators: [{
|
|
36307
|
+
type: Component,
|
|
36308
|
+
args: [{ selector: 'gn-ui-overview-upload', standalone: true, imports: [CommonModule, UiInputsModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-image-input\n [maxSizeMB]=\"5\"\n [previewUrl]=\"resourceUrl\"\n [altText]=\"resourceAltText\"\n (fileChange)=\"handleFileChange($event)\"\n (urlChange)=\"handleUrlChange($event)\"\n (altTextChange)=\"handleAltTextChange($event)\"\n (delete)=\"handleDelete()\"\n></gn-ui-image-input>\n" }]
|
|
36309
|
+
}], ctorParameters: function () { return [{ type: RecordsApiService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { metadataUuid: [{
|
|
36310
|
+
type: Input
|
|
36311
|
+
}], formControl: [{
|
|
36312
|
+
type: Input
|
|
36313
|
+
}], overviewChange: [{
|
|
36314
|
+
type: Output
|
|
36315
|
+
}], altTextChange: [{
|
|
36316
|
+
type: Output
|
|
36317
|
+
}] } });
|
|
36318
|
+
|
|
36319
|
+
class FormFieldOverviewsComponent {
|
|
36320
|
+
handleOverviewChange(overView) {
|
|
36321
|
+
this.control.setValue(overView ? [overView] : []);
|
|
36322
|
+
}
|
|
36323
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOverviewsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36324
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldOverviewsComponent, isStandalone: true, selector: "gn-ui-form-field-overviews", inputs: { metadataUuid: "metadataUuid", control: "control" }, ngImport: i0, template: "<gn-ui-overview-upload\n [metadataUuid]=\"metadataUuid\"\n [formControl]=\"control\"\n (overviewChange)=\"handleOverviewChange($event)\"\n></gn-ui-overview-upload>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: OverviewUploadComponent, selector: "gn-ui-overview-upload", inputs: ["metadataUuid", "formControl"], outputs: ["overviewChange", "altTextChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36325
|
+
}
|
|
36326
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOverviewsComponent, decorators: [{
|
|
36327
|
+
type: Component,
|
|
36328
|
+
args: [{ selector: 'gn-ui-form-field-overviews', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, OverviewUploadComponent], template: "<gn-ui-overview-upload\n [metadataUuid]=\"metadataUuid\"\n [formControl]=\"control\"\n (overviewChange)=\"handleOverviewChange($event)\"\n></gn-ui-overview-upload>\n" }]
|
|
36329
|
+
}], propDecorators: { metadataUuid: [{
|
|
36330
|
+
type: Input
|
|
36331
|
+
}], control: [{
|
|
36332
|
+
type: Input
|
|
36333
|
+
}] } });
|
|
36334
|
+
|
|
36335
|
+
const RoleValues = [
|
|
36336
|
+
'unspecified',
|
|
36337
|
+
'other',
|
|
36338
|
+
'author',
|
|
36339
|
+
'collaborator',
|
|
36340
|
+
'contributor',
|
|
36341
|
+
'custodian',
|
|
36342
|
+
'distributor',
|
|
36343
|
+
'editor',
|
|
36344
|
+
'funder',
|
|
36345
|
+
'mediator',
|
|
36346
|
+
'originator',
|
|
36347
|
+
'owner',
|
|
36348
|
+
'point_of_contact',
|
|
36349
|
+
'principal_investigator',
|
|
36350
|
+
'processor',
|
|
36351
|
+
'publisher',
|
|
36352
|
+
'resource_provider',
|
|
36353
|
+
'rights_holder',
|
|
36354
|
+
'sponsor',
|
|
36355
|
+
'stakeholder',
|
|
36356
|
+
'user', // Party who uses the resource
|
|
36357
|
+
];
|
|
36358
|
+
const RoleLabels = new Map([
|
|
36359
|
+
['unspecified', marker('domain.contact.role.unspecified')],
|
|
36360
|
+
['other', marker('domain.contact.role.other')],
|
|
36361
|
+
['author', marker('domain.contact.role.author')],
|
|
36362
|
+
['collaborator', marker('domain.contact.role.collaborator')],
|
|
36363
|
+
['contributor', marker('domain.contact.role.contributor')],
|
|
36364
|
+
['custodian', marker('domain.contact.role.custodian')],
|
|
36365
|
+
['distributor', marker('domain.contact.role.distributor')],
|
|
36366
|
+
['editor', marker('domain.contact.role.editor')],
|
|
36367
|
+
['funder', marker('domain.contact.role.funder')],
|
|
36368
|
+
['mediator', marker('domain.contact.role.mediator')],
|
|
36369
|
+
['originator', marker('domain.contact.role.originator')],
|
|
36370
|
+
['owner', marker('domain.contact.role.owner')],
|
|
36371
|
+
['point_of_contact', marker('domain.contact.role.point_of_contact')],
|
|
36372
|
+
[
|
|
36373
|
+
'principal_investigator',
|
|
36374
|
+
marker('domain.contact.role.principal_investigator'),
|
|
36375
|
+
],
|
|
36376
|
+
['processor', marker('domain.contact.role.processor')],
|
|
36377
|
+
['publisher', marker('domain.contact.role.publisher')],
|
|
36378
|
+
['resource_provider', marker('domain.contact.role.resource_provider')],
|
|
36379
|
+
['rights_holder', marker('domain.contact.role.rights_holder')],
|
|
36380
|
+
['sponsor', marker('domain.contact.role.sponsor')],
|
|
36381
|
+
['stakeholder', marker('domain.contact.role.stakeholder')],
|
|
36382
|
+
['user', marker('domain.contact.role.user')],
|
|
36383
|
+
]);
|
|
36384
|
+
|
|
36385
|
+
marker('domain.record.updateFrequency.unknown');
|
|
36386
|
+
marker('domain.record.updateFrequency.notPlanned');
|
|
36387
|
+
marker('domain.record.updateFrequency.asNeeded');
|
|
36388
|
+
marker('domain.record.updateFrequency.irregular');
|
|
36389
|
+
marker('domain.record.updateFrequency.continual');
|
|
36390
|
+
marker('domain.record.updateFrequency.periodic');
|
|
36391
|
+
marker('domain.record.updateFrequency.day');
|
|
36392
|
+
marker('domain.record.updateFrequency.week');
|
|
36393
|
+
marker('domain.record.updateFrequency.month');
|
|
36394
|
+
marker('domain.record.updateFrequency.year');
|
|
36395
|
+
marker('domain.record.status.completed');
|
|
36396
|
+
marker('domain.record.status.ongoing');
|
|
36397
|
+
marker('domain.record.status.under_development');
|
|
36398
|
+
marker('domain.record.status.deprecated');
|
|
36399
|
+
marker('domain.record.status.removed');
|
|
36400
|
+
const RecordStatusValues = [
|
|
36401
|
+
'completed',
|
|
36402
|
+
'ongoing',
|
|
36403
|
+
'under_development',
|
|
36404
|
+
'deprecated',
|
|
36405
|
+
'removed',
|
|
36406
|
+
];
|
|
36407
|
+
|
|
36408
|
+
class ContactCardComponent {
|
|
36409
|
+
constructor() {
|
|
36410
|
+
this.removable = true;
|
|
36411
|
+
this.contactRemoved = new EventEmitter();
|
|
36412
|
+
}
|
|
36413
|
+
removeContact(contact) {
|
|
36414
|
+
this.contactRemoved.emit(contact);
|
|
36415
|
+
}
|
|
36416
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContactCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36417
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ContactCardComponent, isStandalone: true, selector: "gn-ui-contact-card", inputs: { contact: "contact", removable: "removable" }, outputs: { contactRemoved: "contactRemoved" }, ngImport: i0, template: "<div class=\"flex flex-row gap-4 items-center\">\n <div class=\"flex flex-row border border-gray-200 rounded-xl p-4 gap-4 w-full\">\n <gn-ui-thumbnail\n class=\"w-[56px] h-[56px] rounded-[4px]\"\n [thumbnailUrl]=\"contact.organization.logoUrl?.href\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-col w-full\">\n <div class=\"flex flex-row justify-between\">\n <span class=\"flex flex-wrap font-bold w-full\"\n >{{ contact.firstName }} {{ contact.lastName }}</span\n >\n </div>\n <div>{{ contact.email }}</div>\n </div>\n </div>\n <gn-ui-button\n *ngIf=\"removable\"\n data-test=\"removeContactButton\"\n type=\"light\"\n extraClass=\"w-[20px] h-[20px] flex items-center justify-center\"\n (buttonClick)=\"removeContact(contact)\"\n ><span class=\"material-symbols-outlined\"> close </span>\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36418
|
+
}
|
|
36419
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ContactCardComponent, decorators: [{
|
|
36420
|
+
type: Component,
|
|
36421
|
+
args: [{ selector: 'gn-ui-contact-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule, ButtonComponent, ThumbnailComponent], template: "<div class=\"flex flex-row gap-4 items-center\">\n <div class=\"flex flex-row border border-gray-200 rounded-xl p-4 gap-4 w-full\">\n <gn-ui-thumbnail\n class=\"w-[56px] h-[56px] rounded-[4px]\"\n [thumbnailUrl]=\"contact.organization.logoUrl?.href\"\n [fit]=\"'contain'\"\n ></gn-ui-thumbnail>\n <div class=\"flex flex-col w-full\">\n <div class=\"flex flex-row justify-between\">\n <span class=\"flex flex-wrap font-bold w-full\"\n >{{ contact.firstName }} {{ contact.lastName }}</span\n >\n </div>\n <div>{{ contact.email }}</div>\n </div>\n </div>\n <gn-ui-button\n *ngIf=\"removable\"\n data-test=\"removeContactButton\"\n type=\"light\"\n extraClass=\"w-[20px] h-[20px] flex items-center justify-center\"\n (buttonClick)=\"removeContact(contact)\"\n ><span class=\"material-symbols-outlined\"> close </span>\n </gn-ui-button>\n</div>\n" }]
|
|
36422
|
+
}], propDecorators: { contact: [{
|
|
36423
|
+
type: Input
|
|
36424
|
+
}], removable: [{
|
|
36425
|
+
type: Input
|
|
36426
|
+
}], contactRemoved: [{
|
|
36427
|
+
type: Output
|
|
36428
|
+
}] } });
|
|
36429
|
+
|
|
36430
|
+
class FormFieldContactsForResourceComponent {
|
|
36431
|
+
constructor(platformServiceInterface, organizationsServiceInterface, changeDetectorRef) {
|
|
36432
|
+
this.platformServiceInterface = platformServiceInterface;
|
|
36433
|
+
this.organizationsServiceInterface = organizationsServiceInterface;
|
|
36434
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
36435
|
+
this.subscription = new Subscription();
|
|
36436
|
+
this.contactsForRessourceByRole = new Map();
|
|
36437
|
+
this.contactsAsDynElemByRole = new Map();
|
|
36438
|
+
this.rolesToPick = [
|
|
36439
|
+
'resource_provider',
|
|
36440
|
+
'custodian',
|
|
36441
|
+
'owner',
|
|
36442
|
+
'point_of_contact',
|
|
36443
|
+
'author',
|
|
36444
|
+
];
|
|
36445
|
+
this.roleSectionsToDisplay = [];
|
|
36446
|
+
this.allOrganizations = new Map();
|
|
36447
|
+
/**
|
|
36448
|
+
* gn-ui-autocomplete
|
|
36449
|
+
*/
|
|
36450
|
+
this.displayWithFn = (user) => `${user.name} ${user.surname} ${user.organisation ? `(${user.organisation})` : ''}`;
|
|
36451
|
+
/**
|
|
36452
|
+
* gn-ui-autocomplete
|
|
36453
|
+
*/
|
|
36454
|
+
this.autoCompleteAction = (query) => {
|
|
36455
|
+
const fuzzyFilter = createFuzzyFilter(query);
|
|
36456
|
+
return this.allUsers$.pipe(switchMap((users) => [
|
|
36457
|
+
users.filter((user) => fuzzyFilter(user.username)),
|
|
36458
|
+
]), map$1((results) => results.slice(0, 10)), debounceTime$1(300), distinctUntilChanged$1());
|
|
36459
|
+
};
|
|
36460
|
+
this.allUsers$ = this.platformServiceInterface.getUsers();
|
|
36461
|
+
}
|
|
36462
|
+
async ngOnInit() {
|
|
36463
|
+
this.allOrganizations = new Map((await firstValueFrom(this.organizationsServiceInterface.organisations$)).map((organization) => [organization.name, organization]));
|
|
36464
|
+
this.updateContactsForRessource();
|
|
36465
|
+
this.manageRoleSectionsToDisplay(this.control.value);
|
|
36466
|
+
this.filterRolesToPick();
|
|
36467
|
+
this.changeDetectorRef.markForCheck();
|
|
36468
|
+
this.subscription.add(this.control.valueChanges.subscribe((contactsForResource) => {
|
|
36469
|
+
this.updateContactsForRessource();
|
|
36470
|
+
this.manageRoleSectionsToDisplay(contactsForResource);
|
|
36471
|
+
this.filterRolesToPick();
|
|
36472
|
+
this.changeDetectorRef.markForCheck();
|
|
36473
|
+
}));
|
|
36474
|
+
}
|
|
36475
|
+
addRoleToDisplay(roleToAdd) {
|
|
36476
|
+
this.roleSectionsToDisplay.push(roleToAdd);
|
|
36477
|
+
this.filterRolesToPick();
|
|
36478
|
+
}
|
|
36479
|
+
filterRolesToPick() {
|
|
36480
|
+
this.rolesToPick = this.rolesToPick.filter((role) => !this.roleSectionsToDisplay.includes(role));
|
|
36481
|
+
}
|
|
36482
|
+
updateContactsForRessource() {
|
|
36483
|
+
this.contactsForRessourceByRole = this.control.value.reduce((acc, contact) => {
|
|
36484
|
+
const completeOrganization = this.allOrganizations.get(contact.organization.name);
|
|
36485
|
+
const updatedContact = {
|
|
36486
|
+
...contact,
|
|
36487
|
+
organization: completeOrganization ??
|
|
36488
|
+
{ name: contact.organization.name },
|
|
36489
|
+
};
|
|
36490
|
+
if (!acc.has(contact.role)) {
|
|
36491
|
+
acc.set(contact.role, []);
|
|
36492
|
+
}
|
|
36493
|
+
acc.get(contact.role).push(updatedContact);
|
|
36494
|
+
return acc;
|
|
36495
|
+
}, new Map());
|
|
36496
|
+
this.contactsAsDynElemByRole = this.control.value.reduce((acc, contact) => {
|
|
36497
|
+
const completeOrganization = this.allOrganizations.get(contact.organization.name);
|
|
36498
|
+
const updatedContact = {
|
|
36499
|
+
...contact,
|
|
36500
|
+
organization: completeOrganization ??
|
|
36501
|
+
{ name: contact.organization.name },
|
|
36502
|
+
};
|
|
36503
|
+
const contactAsDynElem = {
|
|
36504
|
+
component: ContactCardComponent,
|
|
36505
|
+
inputs: {
|
|
36506
|
+
contact: updatedContact,
|
|
36507
|
+
removable: false,
|
|
36508
|
+
},
|
|
36509
|
+
};
|
|
36510
|
+
if (!acc.has(contact.role)) {
|
|
36511
|
+
acc.set(contact.role, []);
|
|
36512
|
+
}
|
|
36513
|
+
acc.get(contact.role).push(contactAsDynElem);
|
|
36514
|
+
return acc;
|
|
36515
|
+
}, new Map());
|
|
36516
|
+
this.changeDetectorRef.markForCheck();
|
|
36517
|
+
}
|
|
36518
|
+
manageRoleSectionsToDisplay(contactsForResource) {
|
|
36519
|
+
const roles = contactsForResource.map((contact) => contact.role);
|
|
36520
|
+
roles.forEach((role) => {
|
|
36521
|
+
if (!this.roleSectionsToDisplay.includes(role)) {
|
|
36522
|
+
this.roleSectionsToDisplay.push(role);
|
|
36523
|
+
}
|
|
36524
|
+
});
|
|
36525
|
+
}
|
|
36526
|
+
removeContact(index) {
|
|
36527
|
+
const newContactsforRessource = this.control.value.filter((_, i) => i !== index);
|
|
36528
|
+
this.control.setValue(newContactsforRessource);
|
|
36529
|
+
}
|
|
36530
|
+
handleContactsChanged(event) {
|
|
36531
|
+
const newContactsOrdered = event.map((contactAsDynElem) => contactAsDynElem.inputs['contact']);
|
|
36532
|
+
const role = newContactsOrdered[0].role;
|
|
36533
|
+
this.contactsForRessourceByRole.set(role, newContactsOrdered);
|
|
36534
|
+
const newControlValue = Array.from(this.contactsForRessourceByRole.values()).flat();
|
|
36535
|
+
this.control.setValue(newControlValue);
|
|
36536
|
+
}
|
|
36537
|
+
roleToLabel(role) {
|
|
36538
|
+
return RoleLabels.get(role);
|
|
36539
|
+
}
|
|
36540
|
+
/**
|
|
36541
|
+
* gn-ui-autocomplete
|
|
36542
|
+
*/
|
|
36543
|
+
addContact(contact, role) {
|
|
36544
|
+
const newContactsForRessource = {
|
|
36545
|
+
firstName: contact.name ?? '',
|
|
36546
|
+
lastName: contact.surname ?? '',
|
|
36547
|
+
organization: this.allOrganizations.get(contact.organisation) ??
|
|
36548
|
+
{ name: contact.organisation },
|
|
36549
|
+
email: contact.email ?? '',
|
|
36550
|
+
role,
|
|
36551
|
+
address: '',
|
|
36552
|
+
phone: '',
|
|
36553
|
+
position: '',
|
|
36554
|
+
};
|
|
36555
|
+
const newControlValue = [...this.control.value, newContactsForRessource];
|
|
36556
|
+
this.control.setValue(newControlValue);
|
|
36557
|
+
}
|
|
36558
|
+
ngOnDestroy() {
|
|
36559
|
+
this.subscription.unsubscribe();
|
|
36560
|
+
}
|
|
36561
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldContactsForResourceComponent, deps: [{ token: PlatformServiceInterface }, { token: OrganizationsServiceInterface }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36562
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldContactsForResourceComponent, isStandalone: true, selector: "gn-ui-form-field-contacts-for-resource", inputs: { control: "control" }, ngImport: i0, template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button\n extraClass=\"px-2 py-1.5\"\n (buttonClick)=\"addRoleToDisplay(role)\"\n >\n <div class=\"flex flex-row gap-1 items-center\">\n <span class=\"text-primary text-[20px] leading-[0] font-bold pb-[5px]\"\n >₊</span\n >\n <span class=\"font-bold\" translate>{{ roleToLabel(role) }}</span>\n </div>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [elements]=\"contactsAsDynElemByRole.get(role)\"\n (elementsChange)=\"handleContactsChanged($event)\"\n ></gn-ui-sortable-list>\n </ng-container>\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n (contactRemoved)=\"removeContact(index)\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { 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: UiWidgetsModule }, { kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ContactCardComponent, selector: "gn-ui-contact-card", inputs: ["contact", "removable"], outputs: ["contactRemoved"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elements", "addOptions"], outputs: ["elementsChange", "add"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36563
|
+
}
|
|
36564
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldContactsForResourceComponent, decorators: [{
|
|
36565
|
+
type: Component,
|
|
36566
|
+
args: [{ selector: 'gn-ui-form-field-contacts-for-resource', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
36567
|
+
DropdownSelectorComponent,
|
|
36568
|
+
UiInputsModule,
|
|
36569
|
+
CommonModule,
|
|
36570
|
+
UiWidgetsModule,
|
|
36571
|
+
AutocompleteComponent,
|
|
36572
|
+
TranslateModule,
|
|
36573
|
+
ContactCardComponent,
|
|
36574
|
+
SortableListComponent,
|
|
36575
|
+
], template: "<div class=\"flex flex-col gap-3\">\n <div class=\"flex flex-row flex-wrap gap-2\" data-test=\"rolesToPick\">\n <ng-container *ngFor=\"let role of rolesToPick\">\n <gn-ui-button\n extraClass=\"px-2 py-1.5\"\n (buttonClick)=\"addRoleToDisplay(role)\"\n >\n <div class=\"flex flex-row gap-1 items-center\">\n <span class=\"text-primary text-[20px] leading-[0] font-bold pb-[5px]\"\n >₊</span\n >\n <span class=\"font-bold\" translate>{{ roleToLabel(role) }}</span>\n </div>\n </gn-ui-button>\n </ng-container>\n </div>\n <div\n class=\"mt-8\"\n *ngIf=\"\n roleSectionsToDisplay && roleSectionsToDisplay.length > 0;\n else noContact\n \"\n data-test=\"displayedRoles\"\n >\n <div\n *ngFor=\"\n let role of roleSectionsToDisplay;\n let index = index;\n let isLast = last\n \"\n class=\"flex flex-col gap-4\"\n >\n <div class=\"flex flex-row justify-between\">\n <span class=\"font-bold text-base\" translate>{{\n roleToLabel(role)\n }}</span>\n </div>\n\n <gn-ui-autocomplete\n [placeholder]=\"'Choose a contact'\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"addContact($event, role)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"1\"\n [clearOnSelection]=\"true\"\n >\n </gn-ui-autocomplete>\n\n <ng-container *ngIf=\"contactsForRessourceByRole.get(role) as contacts\">\n <ng-container *ngIf=\"contacts.length > 1\">\n <gn-ui-sortable-list\n [elements]=\"contactsAsDynElemByRole.get(role)\"\n (elementsChange)=\"handleContactsChanged($event)\"\n ></gn-ui-sortable-list>\n </ng-container>\n <ng-container *ngIf=\"contacts.length === 1\">\n <ng-container *ngFor=\"let contact of contacts\">\n <gn-ui-contact-card\n [contact]=\"contact\"\n (contactRemoved)=\"removeContact(index)\"\n ></gn-ui-contact-card> </ng-container\n ></ng-container>\n </ng-container>\n\n <hr class=\"border-t-[#D6D3D1] mt-4 mb-6\" *ngIf=\"!isLast\" />\n </div>\n </div>\n <ng-template #noContact>\n <div\n class=\"p-4 border border-primary bg-primary-lightest rounded-lg\"\n translate\n >\n editor.record.form.field.contactsForResource.noContact\n </div>\n </ng-template>\n</div>\n" }]
|
|
36576
|
+
}], ctorParameters: function () { return [{ type: PlatformServiceInterface }, { type: OrganizationsServiceInterface }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { control: [{
|
|
36577
|
+
type: Input
|
|
36578
|
+
}] } });
|
|
36579
|
+
|
|
36580
|
+
class FormFieldOpenDataComponent {
|
|
36581
|
+
constructor() {
|
|
36582
|
+
this.value = false;
|
|
36583
|
+
this.visibilityChange = new EventEmitter();
|
|
36584
|
+
}
|
|
36585
|
+
get config() {
|
|
36586
|
+
return OPEN_DATA_LICENSES;
|
|
36587
|
+
}
|
|
36588
|
+
ngOnInit() {
|
|
36589
|
+
this.initToggle();
|
|
36590
|
+
this.subscription = new Subscription();
|
|
36591
|
+
this.subscription.add(this.control.valueChanges.subscribe((value) => {
|
|
36592
|
+
this.value = this.config.includes(value[0].text);
|
|
36593
|
+
this.visibilityChange.emit(this.value);
|
|
36594
|
+
}));
|
|
36595
|
+
}
|
|
36596
|
+
initToggle() {
|
|
36597
|
+
this.value = this.config.includes(this.control.value[0].text);
|
|
36598
|
+
this.visibilityChange.emit(this.value);
|
|
36599
|
+
}
|
|
36600
|
+
onOpenDataToggled(boolean) {
|
|
36601
|
+
if (boolean) {
|
|
36602
|
+
this.control.setValue([{ text: this.config[0] }]);
|
|
36603
|
+
}
|
|
36604
|
+
this.value = !this.value;
|
|
36605
|
+
this.visibilityChange.emit(boolean);
|
|
36606
|
+
}
|
|
36607
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOpenDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36608
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormFieldOpenDataComponent, isStandalone: true, selector: "gn-ui-form-field-open-data", inputs: { control: "control" }, outputs: { visibilityChange: "visibilityChange" }, ngImport: i0, template: "<gn-ui-check-toggle\n [label]=\"'editor.record.form.classification.opendata' | translate\"\n [value]=\"value\"\n (toggled)=\"onOpenDataToggled($event)\"\n data-cy=\"openDataToggle\"\n></gn-ui-check-toggle>\n", styles: [""], dependencies: [{ kind: "component", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: ["title", "label", "value", "color"], outputs: ["toggled"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36609
|
+
}
|
|
36610
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldOpenDataComponent, decorators: [{
|
|
36611
|
+
type: Component,
|
|
36612
|
+
args: [{ selector: 'gn-ui-form-field-open-data', standalone: true, imports: [CheckToggleComponent, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-check-toggle\n [label]=\"'editor.record.form.classification.opendata' | translate\"\n [value]=\"value\"\n (toggled)=\"onOpenDataToggled($event)\"\n data-cy=\"openDataToggle\"\n></gn-ui-check-toggle>\n" }]
|
|
36613
|
+
}], propDecorators: { control: [{
|
|
36614
|
+
type: Input
|
|
36615
|
+
}], visibilityChange: [{
|
|
36616
|
+
type: Output
|
|
36617
|
+
}] } });
|
|
36618
|
+
|
|
35766
36619
|
class FormFieldComponent {
|
|
35767
36620
|
set value(v) {
|
|
35768
36621
|
this.formControl.setValue(v, {
|
|
35769
36622
|
emitEvent: false,
|
|
35770
36623
|
});
|
|
35771
36624
|
}
|
|
35772
|
-
constructor() {
|
|
36625
|
+
constructor(facade) {
|
|
36626
|
+
this.facade = facade;
|
|
36627
|
+
this.isHidden = false;
|
|
36628
|
+
this.metadataUuid$ = this.facade.record$.pipe(take(1), map$1((record) => record.uniqueIdentifier));
|
|
35773
36629
|
this.formControl = new FormControl();
|
|
35774
36630
|
this.valueChange = this.formControl.valueChanges;
|
|
35775
36631
|
}
|
|
35776
36632
|
focusTitleInput() {
|
|
35777
36633
|
this.titleInput.nativeElement.children[0].focus();
|
|
35778
36634
|
}
|
|
36635
|
+
onVisibilityChange(visibility) {
|
|
36636
|
+
this.isHidden = visibility;
|
|
36637
|
+
}
|
|
35779
36638
|
get isTitle() {
|
|
35780
36639
|
return this.model === 'title';
|
|
35781
36640
|
}
|
|
@@ -35797,6 +36656,9 @@ class FormFieldComponent {
|
|
|
35797
36656
|
get isSpatialExtentField() {
|
|
35798
36657
|
return this.model === 'spatialExtents';
|
|
35799
36658
|
}
|
|
36659
|
+
get isGraphicOverview() {
|
|
36660
|
+
return this.model === 'overviews';
|
|
36661
|
+
}
|
|
35800
36662
|
get isSimpleField() {
|
|
35801
36663
|
return this.model === 'uniqueIdentifier' || this.model === 'recordUpdated';
|
|
35802
36664
|
}
|
|
@@ -35806,11 +36668,17 @@ class FormFieldComponent {
|
|
|
35806
36668
|
get isKeywords() {
|
|
35807
36669
|
return this.model === 'keywords';
|
|
35808
36670
|
}
|
|
36671
|
+
get isContactsForResource() {
|
|
36672
|
+
return this.model === 'contactsForResource';
|
|
36673
|
+
}
|
|
35809
36674
|
get withoutWrapper() {
|
|
35810
36675
|
return this.model === 'title' || this.model === 'abstract';
|
|
35811
36676
|
}
|
|
35812
|
-
|
|
35813
|
-
|
|
36677
|
+
get isOpenData() {
|
|
36678
|
+
return this.model === 'licenses';
|
|
36679
|
+
}
|
|
36680
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
36681
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", 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: "<ng-container *ngIf=\"isOpenData\">\n <gn-ui-form-field-open-data\n [control]=\"formControl\"\n (visibilityChange)=\"onVisibilityChange($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container>\n<div class=\"flex flex-col h-full\" *ngIf=\"!isHidden\">\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 <span\n #titleInput\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </span>\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=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\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=\"isGraphicOverview\">\n <gn-ui-form-field-overviews\n [control]=\"formControl\"\n [metadataUuid]=\"metadataUuid$ | async\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngIf=\"isContactsForResource\">\n <gn-ui-form-field-contacts-for-resource\n [control]=\"formControl\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\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: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3$1.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: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["control"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", 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: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["control"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "control"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["control"] }, { kind: "component", type: FormFieldOpenDataComponent, selector: "gn-ui-form-field-open-data", inputs: ["control"], outputs: ["visibilityChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35814
36682
|
}
|
|
35815
36683
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
35816
36684
|
type: Component,
|
|
@@ -35833,8 +36701,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35833
36701
|
FormFieldArrayComponent,
|
|
35834
36702
|
FormFieldKeywordsComponent,
|
|
35835
36703
|
TranslateModule,
|
|
35836
|
-
|
|
35837
|
-
|
|
36704
|
+
FormFieldOverviewsComponent,
|
|
36705
|
+
FormFieldContactsForResourceComponent,
|
|
36706
|
+
FormFieldOpenDataComponent,
|
|
36707
|
+
], template: "<ng-container *ngIf=\"isOpenData\">\n <gn-ui-form-field-open-data\n [control]=\"formControl\"\n (visibilityChange)=\"onVisibilityChange($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container>\n<div class=\"flex flex-col h-full\" *ngIf=\"!isHidden\">\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 <span\n #titleInput\n class=\"grow font-title text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </span>\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=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtents\">\n <gn-ui-form-field-temporal-extents\n [control]=\"formControl\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n type=\"text\"\n [control]=\"formControl\"\n [readonly]=\"isReadOnly\"\n ></gn-ui-form-field-simple>\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=\"isGraphicOverview\">\n <gn-ui-form-field-overviews\n [control]=\"formControl\"\n [metadataUuid]=\"metadataUuid$ | async\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngIf=\"isKeywords\">\n <gn-ui-form-field-keywords\n [control]=\"formControl\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngIf=\"isContactsForResource\">\n <gn-ui-form-field-contacts-for-resource\n [control]=\"formControl\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n</ng-template>\n" }]
|
|
36708
|
+
}], ctorParameters: function () { return [{ type: EditorFacade }]; }, propDecorators: { model: [{
|
|
35838
36709
|
type: Input
|
|
35839
36710
|
}], config: [{
|
|
35840
36711
|
type: Input
|
|
@@ -35864,11 +36735,11 @@ class RecordFormComponent {
|
|
|
35864
36735
|
return section.labelKey;
|
|
35865
36736
|
}
|
|
35866
36737
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35867
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-
|
|
36738
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-title text-secondary\"\n translate\n >\n {{ section.labelKey }}\n </div>\n <div\n *ngIf=\"section.descriptionKey\"\n class=\"text-secondary-lightest\"\n translate\n >\n {{ section.descriptionKey }}\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let field of section.fieldsWithValues;\n trackBy: fieldTracker\n \"\n >\n <ng-container *ngIf=\"!field.config.hidden\">\n <gn-ui-form-field\n [model]=\"field.config.model!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\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: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["model", "config", "value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35868
36739
|
}
|
|
35869
36740
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
35870
36741
|
type: Component,
|
|
35871
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent, TranslateModule], template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-
|
|
36742
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent, TranslateModule], template: "<ng-container>\n <div class=\"flex flex-col gap-6 p-8\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-8 border p-8 rounded-[8px] shadow\">\n <div\n class=\"flex flex-col gap-2\"\n [ngClass]=\"section.labelKey ? 'mb-4' : 'hidden'\"\n >\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-title text-secondary\"\n translate\n >\n {{ section.labelKey }}\n </div>\n <div\n *ngIf=\"section.descriptionKey\"\n class=\"text-secondary-lightest\"\n translate\n >\n {{ section.descriptionKey }}\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let field of section.fieldsWithValues;\n trackBy: fieldTracker\n \"\n >\n <ng-container *ngIf=\"!field.config.hidden\">\n <gn-ui-form-field\n [model]=\"field.config.model!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</ng-container>\n" }]
|
|
35872
36743
|
}], ctorParameters: function () { return [{ type: EditorFacade }]; } });
|
|
35873
36744
|
|
|
35874
36745
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -35918,7 +36789,7 @@ class RouterService {
|
|
|
35918
36789
|
getOrganizationPageRoute() {
|
|
35919
36790
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
35920
36791
|
}
|
|
35921
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$
|
|
36792
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$8.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35922
36793
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
35923
36794
|
}
|
|
35924
36795
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -35929,7 +36800,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
35929
36800
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
35930
36801
|
type: Inject,
|
|
35931
36802
|
args: [ROUTER_CONFIG]
|
|
35932
|
-
}] }, { type: i1$
|
|
36803
|
+
}] }, { type: i1$8.Router }]; } });
|
|
35933
36804
|
|
|
35934
36805
|
const goAction = createAction('[Router] Go', props());
|
|
35935
36806
|
const backAction = createAction('[Router] Back');
|
|
@@ -36186,12 +37057,12 @@ class RouterEffects {
|
|
|
36186
37057
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
36187
37058
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
36188
37059
|
}
|
|
36189
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, deps: [{ token: i1$
|
|
37060
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, deps: [{ token: i1$9.Actions }, { token: i1$8.Router }, { token: i1$3.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
36190
37061
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects }); }
|
|
36191
37062
|
}
|
|
36192
37063
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RouterEffects, decorators: [{
|
|
36193
37064
|
type: Injectable
|
|
36194
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
37065
|
+
}], ctorParameters: function () { return [{ type: i1$9.Actions }, { type: i1$8.Router }, { type: i1$3.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
36195
37066
|
type: Inject,
|
|
36196
37067
|
args: [ROUTER_CONFIG]
|
|
36197
37068
|
}] }, { type: FieldsService }]; } });
|
|
@@ -36208,7 +37079,7 @@ class DefaultRouterModule {
|
|
|
36208
37079
|
};
|
|
36209
37080
|
}
|
|
36210
37081
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
36211
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$
|
|
37082
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$4.StoreRouterConnectingModule, i1$9.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
36212
37083
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
36213
37084
|
RouterFacade,
|
|
36214
37085
|
{
|
|
@@ -36251,5 +37122,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
36251
37122
|
* Generated bundle index. Do not edit.
|
|
36252
37123
|
*/
|
|
36253
37124
|
|
|
36254
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent,
|
|
37125
|
+
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, ConfirmationDialogComponent, 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, ErrorComponent, 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_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopoverComponent, 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_ORGANIZATION, 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, ResultsTableContainerComponent, 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, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, 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, draftSaveSuccess, 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, isBeginningOfResults, 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, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordAlreadySavedOnce, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setCurrentPage, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
36255
37126
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|