geonetwork-ui 2.8.0-dev.50da356b9 → 2.8.0-dev.5186798f7
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/lib/dcat-ap/dcat-ap.converter.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +24 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +7 -7
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +4 -3
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +1 -2
- package/esm2022/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +26 -8
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +23 -3
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +2 -2
- package/esm2022/libs/feature/record/src/index.mjs +2 -1
- package/esm2022/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.mjs +13 -4
- package/esm2022/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.mjs +23 -8
- package/esm2022/libs/feature/record/src/lib/stac-view/stac-view.component.mjs +138 -0
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +14 -1
- package/esm2022/libs/feature/search/src/lib/constants.mjs +1 -2
- package/esm2022/libs/ui/elements/src/index.mjs +3 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.mjs +37 -0
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +5 -9
- package/esm2022/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.mjs +18 -0
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +5 -5
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +21 -7
- package/esm2022/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.mjs +35 -0
- package/esm2022/libs/ui/layout/src/lib/paginable.interface.mjs +1 -1
- package/esm2022/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +13 -5
- package/esm2022/libs/util/i18n/src/lib/date-locales.mjs +33 -0
- package/esm2022/libs/util/shared/src/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/humanize-date.directive.mjs +33 -0
- package/esm2022/libs/util/shared/src/lib/services/date.service.mjs +19 -2
- package/esm2022/translations/de.json +14 -4
- package/esm2022/translations/en.json +14 -4
- package/esm2022/translations/es.json +10 -0
- package/esm2022/translations/fr.json +14 -4
- package/esm2022/translations/it.json +15 -5
- package/esm2022/translations/nl.json +10 -0
- package/esm2022/translations/pt.json +10 -0
- package/esm2022/translations/sk.json +11 -1
- package/fesm2022/geonetwork-ui-date-locales-MYnkDJ5h.mjs +35 -0
- package/fesm2022/geonetwork-ui-date-locales-MYnkDJ5h.mjs.map +1 -0
- package/fesm2022/geonetwork-ui.mjs +522 -151
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.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 +5 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +6 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +2 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +2 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/record/src/index.d.ts +1 -0
- package/libs/feature/record/src/index.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts +3 -2
- package/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts +3 -2
- package/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts +35 -0
- package/libs/feature/record/src/lib/stac-view/stac-view.component.d.ts.map +1 -0
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +28 -24
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +2 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts +0 -2
- package/libs/ui/elements/src/lib/metadata-info/metadata-info.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts +8 -0
- package/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/index.d.ts +1 -0
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +5 -0
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts +12 -0
- package/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/paginable.interface.d.ts +3 -3
- package/libs/ui/layout/src/lib/paginable.interface.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +2 -1
- package/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/date-locales.d.ts +5 -0
- package/libs/util/i18n/src/lib/date-locales.d.ts.map +1 -0
- package/libs/util/shared/src/index.d.ts +1 -0
- package/libs/util/shared/src/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/humanize-date.directive.d.ts +15 -0
- package/libs/util/shared/src/lib/humanize-date.directive.d.ts.map +1 -0
- package/libs/util/shared/src/lib/services/date.service.d.ts +4 -0
- package/libs/util/shared/src/lib/services/date.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/generic.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.service+eaux-usees.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/georhena.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +2 -2
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.reuse.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/wallonie.records.service+napitswallonia.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +26 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +13 -6
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -2
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +0 -1
- package/src/libs/common/domain/src/lib/model/dataviz/dataviz-configuration.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +8 -1
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +30 -5
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +3 -3
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +30 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +1 -1
- package/src/libs/feature/record/src/index.ts +1 -0
- package/src/libs/feature/record/src/lib/data-view-permalink/data-view-permalink.component.ts +7 -1
- package/src/libs/feature/record/src/lib/data-view-web-component/data-view-web-component.component.ts +23 -4
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.css +3 -0
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.html +68 -0
- package/src/libs/feature/record/src/lib/stac-view/stac-view.component.ts +190 -0
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +30 -1
- package/src/libs/feature/search/src/lib/constants.ts +0 -1
- package/src/libs/ui/elements/src/index.ts +2 -0
- package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.css +0 -0
- package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.html +31 -0
- package/src/libs/ui/elements/src/lib/metadata-doi/metadata-doi.component.ts +30 -0
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +67 -21
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.ts +2 -9
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.css +0 -0
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.html +13 -0
- package/src/libs/ui/elements/src/lib/stac-items-result-grid/stac-items-result-grid.component.ts +15 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +2 -2
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +17 -1
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.css +0 -0
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.html +15 -0
- package/src/libs/ui/inputs/src/lib/date-range-inputs/date-range-inputs.component.ts +41 -0
- package/src/libs/ui/layout/src/lib/paginable.interface.ts +3 -3
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.html +12 -6
- package/src/libs/ui/layout/src/lib/previous-next-buttons/previous-next-buttons.component.ts +4 -1
- package/src/libs/util/i18n/src/lib/date-locales.ts +63 -0
- package/src/libs/util/shared/src/index.ts +1 -0
- package/src/libs/util/shared/src/lib/humanize-date.directive.ts +35 -0
- package/src/libs/util/shared/src/lib/services/date.service.ts +27 -1
- package/translations/de.json +14 -4
- package/translations/en.json +14 -4
- package/translations/es.json +10 -0
- package/translations/fr.json +14 -4
- package/translations/it.json +15 -5
- package/translations/nl.json +10 -0
- package/translations/pt.json +10 -0
- package/translations/sk.json +11 -1
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +0 -59
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +0 -11
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +0 -1
- package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +0 -54
|
@@ -7,7 +7,7 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
|
7
7
|
import { format } from 'date-fns/format';
|
|
8
8
|
import { Namespace, Literal, lit, parse as parse$2, sym, BlankNode, graph } from 'rdflib';
|
|
9
9
|
import * as i0 from '@angular/core';
|
|
10
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, APP_INITIALIZER, makeEnvironmentProviders, Directive, Input, HostListener, EventEmitter, Component, ChangeDetectionStrategy, Output, ViewChild, ViewEncapsulation, HostBinding, TemplateRef, ElementRef, ViewChildren, ContentChild, ContentChildren, Host,
|
|
10
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, APP_INITIALIZER, makeEnvironmentProviders, Directive, Input, HostListener, EventEmitter, Component, ChangeDetectionStrategy, Output, ViewChild, ViewEncapsulation, HostBinding, TemplateRef, ElementRef, ViewChildren, ContentChild, ContentChildren, Host, ViewContainerRef, inject } from '@angular/core';
|
|
11
11
|
import * as i1 from '@angular/common/http';
|
|
12
12
|
import { HttpHeaders, HttpParams, HttpClient, provideHttpClient, withInterceptorsFromDi, HTTP_INTERCEPTORS, HttpEventType } from '@angular/common/http';
|
|
13
13
|
import * as i1$1 from '@ngx-translate/core';
|
|
@@ -20,9 +20,10 @@ import { lt, valid, coerce, satisfies, ltr } from 'semver';
|
|
|
20
20
|
import chroma from 'chroma-js';
|
|
21
21
|
import * as i1$2 from '@angular/common';
|
|
22
22
|
import { CommonModule, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgClass, NgTemplateOutlet, DatePipe } from '@angular/common';
|
|
23
|
+
import { formatDistance } from 'date-fns/formatDistance';
|
|
23
24
|
import * as i1$d from '@angular/router';
|
|
24
25
|
import { Scroll, NavigationEnd, RouteReuseStrategy } from '@angular/router';
|
|
25
|
-
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache, TmsEndpoint } from '@camptocamp/ogc-client';
|
|
26
|
+
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache, StacEndpoint, TmsEndpoint } from '@camptocamp/ogc-client';
|
|
26
27
|
import { getLength } from 'ol/sphere';
|
|
27
28
|
import { LineString, Polygon } from 'ol/geom';
|
|
28
29
|
import * as i1$3 from '@ngrx/store';
|
|
@@ -31,7 +32,7 @@ import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/g
|
|
|
31
32
|
import { FeaturesClickEventType, FeaturesHoverEventType, MapClickEventType, SourceLoadErrorType, computeMapContextDiff, createViewFromLayer } from '@geospatial-sdk/core';
|
|
32
33
|
import { listen, createMapFromContext, applyContextDiffToMap } from '@geospatial-sdk/openlayers';
|
|
33
34
|
import { provideIcons, provideNgIconsConfig, NgIconComponent, NgIcon } from '@ng-icons/core';
|
|
34
|
-
import { matSwipeOutline, matErrorOutlineOutline, matComputerOutline, matLocationSearchingOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matInfoOutline, matWarningAmberOutline, matCloseOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline, matMoreHorizOutline } from '@ng-icons/material-icons/outline';
|
|
35
|
+
import { matSwipeOutline, matErrorOutlineOutline, matComputerOutline, matLocationSearchingOutline, matCallOutline, matLocationOnOutline, matMailOutline as matMailOutline$1, matInfoOutline, matWarningAmberOutline, matCloseOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline, matDeleteOutline, matMoreHorizOutline } from '@ng-icons/material-icons/outline';
|
|
35
36
|
import { createLegendFromLayer } from '@geospatial-sdk/legend';
|
|
36
37
|
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
37
38
|
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
@@ -44,7 +45,7 @@ import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirSearch, iconoirLongAr
|
|
|
44
45
|
import { MatButtonModule } from '@angular/material/button';
|
|
45
46
|
import * as i1$8 from '@angular/cdk/overlay';
|
|
46
47
|
import { CdkConnectedOverlay, OverlayModule, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
47
|
-
import * as i2
|
|
48
|
+
import * as i2 from '@angular/forms';
|
|
48
49
|
import { UntypedFormControl, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
49
50
|
import * as i1$5 from '@angular/material/autocomplete';
|
|
50
51
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
@@ -52,13 +53,13 @@ import tippy from 'tippy.js';
|
|
|
52
53
|
import * as i1$4 from '@angular/material/progress-spinner';
|
|
53
54
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
54
55
|
import { matClose, matContentCopy, matExpandMore, matExpandLess, matSearch, matStar, matStarBorder, matAdd, matRemove, matChevronLeft, matChevronRight, matArrowBackIos, matArrowForwardIos, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheck, matWarningAmber, matCheckCircleOutline, matWarning, matMoreVert } from '@ng-icons/material-icons/baseline';
|
|
55
|
-
import * as
|
|
56
|
-
import { MatNativeDateModule } from '@angular/material/core';
|
|
57
|
-
import * as i1$
|
|
56
|
+
import * as i1$6 from '@angular/material/core';
|
|
57
|
+
import { MAT_DATE_LOCALE, MatNativeDateModule } from '@angular/material/core';
|
|
58
|
+
import * as i1$7 from '@angular/material/checkbox';
|
|
58
59
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
59
|
-
import * as i2$
|
|
60
|
+
import * as i2$1 from '@angular/material/tooltip';
|
|
60
61
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
61
|
-
import * as
|
|
62
|
+
import * as i2$2 from '@angular/material/datepicker';
|
|
62
63
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
63
64
|
import * as i1$9 from 'ngx-dropzone';
|
|
64
65
|
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
@@ -74,8 +75,6 @@ import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
|
74
75
|
import { valid as valid$1 } from 'geojson-validation';
|
|
75
76
|
import * as basicLightbox from 'basiclightbox';
|
|
76
77
|
import { marked } from 'marked';
|
|
77
|
-
import { formatDistance } from 'date-fns/formatDistance';
|
|
78
|
-
import { enUS, sk as sk$1, 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';
|
|
79
78
|
import * as i2$3 from '@angular/cdk/scrolling';
|
|
80
79
|
import { CdkScrollable, ScrollingModule } from '@angular/cdk/scrolling';
|
|
81
80
|
import Duration from 'duration-relativetimeformat';
|
|
@@ -1580,7 +1579,8 @@ function readDefaultLanguage$2(rootEl) {
|
|
|
1580
1579
|
return pipe(findChildElement('gmd:language', false), findChildElement('lan:LanguageCode'), readAttribute('codeListValue'), map((lang) => (lang ? toLang2(lang.toLowerCase()) : null)))(rootEl);
|
|
1581
1580
|
}
|
|
1582
1581
|
function readResourceIdentifier(rootEl) {
|
|
1583
|
-
|
|
1582
|
+
const code = pipe(findIdentification(), findNestedElement('gmd:citation', 'gmd:CI_Citation', 'gmd:identifier', 'gmd:MD_Identifier', 'gmd:code'), extractCharacterString())(rootEl);
|
|
1583
|
+
return code ? [{ code }] : [];
|
|
1584
1584
|
}
|
|
1585
1585
|
|
|
1586
1586
|
function writeLocalizedElement(writeFn, text, translations, defaultLanguage) {
|
|
@@ -2086,8 +2086,9 @@ function writeDefaultLanguage$1(record, rootEl) {
|
|
|
2086
2086
|
return pipe(findNestedChildOrCreate('gmd:language', 'gmd:LanguageCode'), writeAttribute('codeList', 'http://www.loc.gov/standards/iso639-2/'), writeAttribute('codeListValue', lang3))(rootEl);
|
|
2087
2087
|
}
|
|
2088
2088
|
function writeResourceIdentifier(record, rootEl) {
|
|
2089
|
-
|
|
2090
|
-
|
|
2089
|
+
const firstIdentifier = record.resourceIdentifiers?.[0]?.code;
|
|
2090
|
+
pipe(findOrCreateIdentification(), findNestedChildOrCreate('gmd:citation', 'gmd:CI_Citation'), removeChildrenByName('gmd:identifier'), firstIdentifier
|
|
2091
|
+
? pipe(createNestedChild('gmd:identifier', 'gmd:MD_Identifier', 'gmd:code'), writeCharacterString(firstIdentifier))
|
|
2091
2092
|
: noop)(rootEl);
|
|
2092
2093
|
}
|
|
2093
2094
|
|
|
@@ -2101,7 +2102,7 @@ class Iso19139Converter extends BaseConverter {
|
|
|
2101
2102
|
recordUpdated: readRecordUpdated$2,
|
|
2102
2103
|
recordCreated: () => undefined, // not supported in ISO19139
|
|
2103
2104
|
recordPublished: () => undefined, // not supported in ISO19139
|
|
2104
|
-
|
|
2105
|
+
resourceIdentifiers: readResourceIdentifier,
|
|
2105
2106
|
resourceUpdated: readResourceUpdated$1,
|
|
2106
2107
|
resourceCreated: readResourceCreated$1,
|
|
2107
2108
|
resourcePublished: readResourcePublished,
|
|
@@ -2138,7 +2139,7 @@ class Iso19139Converter extends BaseConverter {
|
|
|
2138
2139
|
recordUpdated: writeRecordUpdated$1,
|
|
2139
2140
|
recordCreated: () => undefined, // not supported in ISO19139
|
|
2140
2141
|
recordPublished: () => undefined, // not supported in ISO19139
|
|
2141
|
-
|
|
2142
|
+
resourceIdentifiers: writeResourceIdentifier,
|
|
2142
2143
|
resourceUpdated: writeResourceUpdated$1,
|
|
2143
2144
|
resourceCreated: writeResourceCreated$1,
|
|
2144
2145
|
resourcePublished: writeResourcePublished$1,
|
|
@@ -2239,11 +2240,11 @@ class Iso19139Converter extends BaseConverter {
|
|
|
2239
2240
|
const onlineResources = this.readers['onlineResources'](rootEl, tr);
|
|
2240
2241
|
const otherLanguages = this.readers['otherLanguages'](rootEl, tr);
|
|
2241
2242
|
const defaultLanguage = this.readers['defaultLanguage'](rootEl, tr);
|
|
2242
|
-
const
|
|
2243
|
+
const resourceIdentifiers = this.readers['resourceIdentifiers'](rootEl, tr);
|
|
2243
2244
|
const spatialExtents = this.readers['spatialExtents'](rootEl, tr);
|
|
2244
2245
|
return {
|
|
2245
2246
|
uniqueIdentifier,
|
|
2246
|
-
...(
|
|
2247
|
+
...(resourceIdentifiers?.length > 0 && { resourceIdentifiers }),
|
|
2247
2248
|
kind,
|
|
2248
2249
|
otherLanguages,
|
|
2249
2250
|
defaultLanguage,
|
|
@@ -2371,8 +2372,8 @@ class Iso19139Converter extends BaseConverter {
|
|
|
2371
2372
|
this.writers['otherConstraints'](record, rootEl);
|
|
2372
2373
|
fieldChanged('onlineResources') &&
|
|
2373
2374
|
this.writers['onlineResources'](record, rootEl);
|
|
2374
|
-
fieldChanged('
|
|
2375
|
-
this.writers['
|
|
2375
|
+
fieldChanged('resourceIdentifiers') &&
|
|
2376
|
+
this.writers['resourceIdentifiers'](record, rootEl);
|
|
2376
2377
|
if (record.kind === 'dataset') {
|
|
2377
2378
|
fieldChanged('status') && this.writers['status'](record, rootEl);
|
|
2378
2379
|
fieldChanged('updateFrequency') &&
|
|
@@ -3319,7 +3320,7 @@ class DcatApConverter extends BaseConverter {
|
|
|
3319
3320
|
spatialExtents: readSpatialExtents,
|
|
3320
3321
|
keywords: readKeywords,
|
|
3321
3322
|
topics: readTopics,
|
|
3322
|
-
|
|
3323
|
+
resourceIdentifiers: () => undefined,
|
|
3323
3324
|
recordUpdated: readRecordUpdated,
|
|
3324
3325
|
recordCreated: readRecordCreated,
|
|
3325
3326
|
resourceUpdated: readResourceUpdated,
|
|
@@ -3355,7 +3356,7 @@ class DcatApConverter extends BaseConverter {
|
|
|
3355
3356
|
recordUpdated: () => undefined,
|
|
3356
3357
|
recordCreated: () => undefined,
|
|
3357
3358
|
recordPublished: () => undefined,
|
|
3358
|
-
|
|
3359
|
+
resourceIdentifiers: () => undefined,
|
|
3359
3360
|
resourceUpdated: () => undefined,
|
|
3360
3361
|
resourceCreated: () => undefined,
|
|
3361
3362
|
resourcePublished: () => undefined,
|
|
@@ -18809,6 +18810,9 @@ var de = {
|
|
|
18809
18810
|
"dataset.error.restrictedAccess": "",
|
|
18810
18811
|
"dataset.error.unknown": "Die Daten können nicht angezeigt werden: \"{ info }\"",
|
|
18811
18812
|
"dataset.error.unsupportedType": "Der folgende Inhaltstyp wird nicht unterstützt: \"{ info }\"",
|
|
18813
|
+
"daterange.filter.from": "",
|
|
18814
|
+
"daterange.filter.period": "",
|
|
18815
|
+
"daterange.filter.to": "",
|
|
18812
18816
|
"domain.contact.role.author": "",
|
|
18813
18817
|
"domain.contact.role.collaborator": "",
|
|
18814
18818
|
"domain.contact.role.contributor": "",
|
|
@@ -19144,6 +19148,7 @@ var de = {
|
|
|
19144
19148
|
"pagination.nextPage": "Nächste Seite",
|
|
19145
19149
|
"pagination.page": "Seite",
|
|
19146
19150
|
"pagination.pageOf": "von",
|
|
19151
|
+
"pagination.previousPage": "Vorherige Seite",
|
|
19147
19152
|
"record.action.delete": "Löschen",
|
|
19148
19153
|
"record.action.download": "Herunterladen",
|
|
19149
19154
|
"record.action.duplicate": "",
|
|
@@ -19208,6 +19213,8 @@ var de = {
|
|
|
19208
19213
|
"record.metadata.contact": "Kontakt",
|
|
19209
19214
|
"record.metadata.creation": "Erstellungsdatum",
|
|
19210
19215
|
"record.metadata.details": "Über die Daten",
|
|
19216
|
+
"record.metadata.doi.copy": "",
|
|
19217
|
+
"record.metadata.doi.open": "",
|
|
19211
19218
|
"record.metadata.download": "Downloads",
|
|
19212
19219
|
"record.metadata.feature.catalog": "",
|
|
19213
19220
|
"record.metadata.formats": "Formate",
|
|
@@ -19256,9 +19263,9 @@ var de = {
|
|
|
19256
19263
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19257
19264
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19258
19265
|
"record.metadata.related": "Entdecken Sie den Katalog",
|
|
19259
|
-
"record.metadata.resourceCreated": "Erstellt
|
|
19260
|
-
"record.metadata.resourcePublished": "Veröffentlicht
|
|
19261
|
-
"record.metadata.resourceUpdated": "Zuletzt aktualisiert
|
|
19266
|
+
"record.metadata.resourceCreated": "Erstellt",
|
|
19267
|
+
"record.metadata.resourcePublished": "Veröffentlicht",
|
|
19268
|
+
"record.metadata.resourceUpdated": "Zuletzt aktualisiert",
|
|
19262
19269
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19263
19270
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19264
19271
|
"record.metadata.status": "Status",
|
|
@@ -19271,8 +19278,9 @@ var de = {
|
|
|
19271
19278
|
"record.metadata.title": "Titel",
|
|
19272
19279
|
"record.metadata.topics": "Kategorien",
|
|
19273
19280
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
19281
|
+
"record.metadata.update": "Aktualisierungsdatum",
|
|
19274
19282
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
19275
|
-
"record.metadata.updatedOn": "
|
|
19283
|
+
"record.metadata.updatedOn": "Informationen geändert",
|
|
19276
19284
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
19277
19285
|
"record.metadata.userFeedbacks": "",
|
|
19278
19286
|
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
@@ -19287,6 +19295,7 @@ var de = {
|
|
|
19287
19295
|
"record.tab.chart": "Diagramm",
|
|
19288
19296
|
"record.tab.data": "Tabelle",
|
|
19289
19297
|
"record.tab.map": "Karte",
|
|
19298
|
+
"record.tab.stac": "",
|
|
19290
19299
|
"record.was.created.time": "erstellte diesen Ressource {time}",
|
|
19291
19300
|
records: records$7,
|
|
19292
19301
|
"results.layout.selectOne": "Layout auswählen",
|
|
@@ -19378,6 +19387,8 @@ var de = {
|
|
|
19378
19387
|
"service.metadata.spatialExtent": "",
|
|
19379
19388
|
"share.tab.permalink": "Teilen",
|
|
19380
19389
|
"share.tab.webComponent": "Integrieren",
|
|
19390
|
+
"stac.filter.reset": "",
|
|
19391
|
+
"stac.results.noResults": "Ihre Suchfilter lieferten keine Ergebnisse",
|
|
19381
19392
|
"table.loading.data": "Daten werden geladen...",
|
|
19382
19393
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
19383
19394
|
"table.paginator.firstPage": "Erste Seite",
|
|
@@ -19466,6 +19477,9 @@ var en = {
|
|
|
19466
19477
|
"dataset.error.restrictedAccess": "Access to this resource is restricted",
|
|
19467
19478
|
"dataset.error.unknown": "The data cannot be displayed: \"{ info }\"",
|
|
19468
19479
|
"dataset.error.unsupportedType": "The following content type is unsupported: \"{ info }\"",
|
|
19480
|
+
"daterange.filter.from": "From",
|
|
19481
|
+
"daterange.filter.period": "Period",
|
|
19482
|
+
"daterange.filter.to": "To",
|
|
19469
19483
|
"domain.contact.role.author": "Author",
|
|
19470
19484
|
"domain.contact.role.collaborator": "Collaborator",
|
|
19471
19485
|
"domain.contact.role.contributor": "Contributor",
|
|
@@ -19801,6 +19815,7 @@ var en = {
|
|
|
19801
19815
|
"pagination.nextPage": "Next page",
|
|
19802
19816
|
"pagination.page": "Page",
|
|
19803
19817
|
"pagination.pageOf": "of",
|
|
19818
|
+
"pagination.previousPage": "Previous page",
|
|
19804
19819
|
"record.action.delete": "Delete",
|
|
19805
19820
|
"record.action.download": "Download",
|
|
19806
19821
|
"record.action.duplicate": "Duplicate",
|
|
@@ -19865,6 +19880,8 @@ var en = {
|
|
|
19865
19880
|
"record.metadata.contact": "Contact",
|
|
19866
19881
|
"record.metadata.creation": "Date of creation",
|
|
19867
19882
|
"record.metadata.details": "About the data",
|
|
19883
|
+
"record.metadata.doi.copy": "Copy DOI",
|
|
19884
|
+
"record.metadata.doi.open": "Open DOI link",
|
|
19868
19885
|
"record.metadata.download": "Downloads",
|
|
19869
19886
|
"record.metadata.feature.catalog": "Feature catalog",
|
|
19870
19887
|
"record.metadata.formats": "Formats",
|
|
@@ -19913,9 +19930,9 @@ var en = {
|
|
|
19913
19930
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19914
19931
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19915
19932
|
"record.metadata.related": "Explore the catalog",
|
|
19916
|
-
"record.metadata.resourceCreated": "Created
|
|
19917
|
-
"record.metadata.resourcePublished": "Published
|
|
19918
|
-
"record.metadata.resourceUpdated": "Last updated
|
|
19933
|
+
"record.metadata.resourceCreated": "Created",
|
|
19934
|
+
"record.metadata.resourcePublished": "Published",
|
|
19935
|
+
"record.metadata.resourceUpdated": "Last updated",
|
|
19919
19936
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19920
19937
|
"record.metadata.sheet": "Original metadata",
|
|
19921
19938
|
"record.metadata.status": "Status",
|
|
@@ -19928,8 +19945,9 @@ var en = {
|
|
|
19928
19945
|
"record.metadata.title": "Title",
|
|
19929
19946
|
"record.metadata.topics": "Categories",
|
|
19930
19947
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
19948
|
+
"record.metadata.update": "Date of update",
|
|
19931
19949
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
19932
|
-
"record.metadata.updatedOn": "
|
|
19950
|
+
"record.metadata.updatedOn": "Metadata modified",
|
|
19933
19951
|
"record.metadata.usage": "License and Conditions",
|
|
19934
19952
|
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
19935
19953
|
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
@@ -19944,6 +19962,7 @@ var en = {
|
|
|
19944
19962
|
"record.tab.chart": "Chart",
|
|
19945
19963
|
"record.tab.data": "Table",
|
|
19946
19964
|
"record.tab.map": "Map",
|
|
19965
|
+
"record.tab.stac": "STAC",
|
|
19947
19966
|
"record.was.created.time": "created this record {time}",
|
|
19948
19967
|
records: records$6,
|
|
19949
19968
|
"results.layout.selectOne": "Results layout",
|
|
@@ -20035,6 +20054,8 @@ var en = {
|
|
|
20035
20054
|
"service.metadata.spatialExtent": "Spatial extent",
|
|
20036
20055
|
"share.tab.permalink": "Share",
|
|
20037
20056
|
"share.tab.webComponent": "Integrate",
|
|
20057
|
+
"stac.filter.reset": "Reset filters",
|
|
20058
|
+
"stac.results.noResults": "Your search filters did not match any items",
|
|
20038
20059
|
"table.loading.data": "Loading data...",
|
|
20039
20060
|
"table.object.count": "Objects in this dataset",
|
|
20040
20061
|
"table.paginator.firstPage": "First page",
|
|
@@ -20123,6 +20144,9 @@ var es = {
|
|
|
20123
20144
|
"dataset.error.restrictedAccess": "",
|
|
20124
20145
|
"dataset.error.unknown": "",
|
|
20125
20146
|
"dataset.error.unsupportedType": "",
|
|
20147
|
+
"daterange.filter.from": "",
|
|
20148
|
+
"daterange.filter.period": "",
|
|
20149
|
+
"daterange.filter.to": "",
|
|
20126
20150
|
"domain.contact.role.author": "",
|
|
20127
20151
|
"domain.contact.role.collaborator": "",
|
|
20128
20152
|
"domain.contact.role.contributor": "",
|
|
@@ -20458,6 +20482,7 @@ var es = {
|
|
|
20458
20482
|
"pagination.nextPage": "",
|
|
20459
20483
|
"pagination.page": "",
|
|
20460
20484
|
"pagination.pageOf": "",
|
|
20485
|
+
"pagination.previousPage": "",
|
|
20461
20486
|
"record.action.delete": "",
|
|
20462
20487
|
"record.action.download": "",
|
|
20463
20488
|
"record.action.duplicate": "",
|
|
@@ -20522,6 +20547,8 @@ var es = {
|
|
|
20522
20547
|
"record.metadata.contact": "",
|
|
20523
20548
|
"record.metadata.creation": "",
|
|
20524
20549
|
"record.metadata.details": "",
|
|
20550
|
+
"record.metadata.doi.copy": "",
|
|
20551
|
+
"record.metadata.doi.open": "",
|
|
20525
20552
|
"record.metadata.download": "",
|
|
20526
20553
|
"record.metadata.feature.catalog": "",
|
|
20527
20554
|
"record.metadata.formats": "",
|
|
@@ -20585,6 +20612,7 @@ var es = {
|
|
|
20585
20612
|
"record.metadata.title": "",
|
|
20586
20613
|
"record.metadata.topics": "",
|
|
20587
20614
|
"record.metadata.uniqueId": "",
|
|
20615
|
+
"record.metadata.update": "",
|
|
20588
20616
|
"record.metadata.updateFrequency": "",
|
|
20589
20617
|
"record.metadata.updatedOn": "",
|
|
20590
20618
|
"record.metadata.usage": "",
|
|
@@ -20601,6 +20629,7 @@ var es = {
|
|
|
20601
20629
|
"record.tab.chart": "",
|
|
20602
20630
|
"record.tab.data": "",
|
|
20603
20631
|
"record.tab.map": "",
|
|
20632
|
+
"record.tab.stac": "",
|
|
20604
20633
|
"record.was.created.time": "",
|
|
20605
20634
|
records: records$5,
|
|
20606
20635
|
"results.layout.selectOne": "",
|
|
@@ -20692,6 +20721,8 @@ var es = {
|
|
|
20692
20721
|
"service.metadata.spatialExtent": "",
|
|
20693
20722
|
"share.tab.permalink": "",
|
|
20694
20723
|
"share.tab.webComponent": "",
|
|
20724
|
+
"stac.filter.reset": "",
|
|
20725
|
+
"stac.results.noResults": "",
|
|
20695
20726
|
"table.loading.data": "",
|
|
20696
20727
|
"table.object.count": "",
|
|
20697
20728
|
"table.paginator.firstPage": "Primera página",
|
|
@@ -20780,6 +20811,9 @@ var fr = {
|
|
|
20780
20811
|
"dataset.error.restrictedAccess": "L’accès à cette ressource est restreint",
|
|
20781
20812
|
"dataset.error.unknown": "Les données ne peuvent être affichées: \"{ info }\"",
|
|
20782
20813
|
"dataset.error.unsupportedType": "Le type de contenu suivant n'est pas pris en charge: \"{ info }\"",
|
|
20814
|
+
"daterange.filter.from": "Du",
|
|
20815
|
+
"daterange.filter.period": "Choix de la période",
|
|
20816
|
+
"daterange.filter.to": "Au",
|
|
20783
20817
|
"domain.contact.role.author": "Auteur",
|
|
20784
20818
|
"domain.contact.role.collaborator": "Collaborateur",
|
|
20785
20819
|
"domain.contact.role.contributor": "Contributeur",
|
|
@@ -21115,6 +21149,7 @@ var fr = {
|
|
|
21115
21149
|
"pagination.nextPage": "Page suivante",
|
|
21116
21150
|
"pagination.page": "Page",
|
|
21117
21151
|
"pagination.pageOf": "sur",
|
|
21152
|
+
"pagination.previousPage": "Page précédente",
|
|
21118
21153
|
"record.action.delete": "Supprimer",
|
|
21119
21154
|
"record.action.download": "Télécharger",
|
|
21120
21155
|
"record.action.duplicate": "Dupliquer",
|
|
@@ -21179,6 +21214,8 @@ var fr = {
|
|
|
21179
21214
|
"record.metadata.contact": "Contact",
|
|
21180
21215
|
"record.metadata.creation": "Date de création",
|
|
21181
21216
|
"record.metadata.details": "À propos de la donnée",
|
|
21217
|
+
"record.metadata.doi.copy": "Copier le DOI",
|
|
21218
|
+
"record.metadata.doi.open": "Ouvrir le lien DOI",
|
|
21182
21219
|
"record.metadata.download": "Téléchargements",
|
|
21183
21220
|
"record.metadata.feature.catalog": "Catalogue d'attributs",
|
|
21184
21221
|
"record.metadata.formats": "Formats",
|
|
@@ -21227,9 +21264,9 @@ var fr = {
|
|
|
21227
21264
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
21228
21265
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
21229
21266
|
"record.metadata.related": "Explorez le catalogue",
|
|
21230
|
-
"record.metadata.resourceCreated": "Créé
|
|
21231
|
-
"record.metadata.resourcePublished": "Publié
|
|
21232
|
-
"record.metadata.resourceUpdated": "Mis à jour
|
|
21267
|
+
"record.metadata.resourceCreated": "Créé",
|
|
21268
|
+
"record.metadata.resourcePublished": "Publié",
|
|
21269
|
+
"record.metadata.resourceUpdated": "Mis à jour",
|
|
21233
21270
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
21234
21271
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
21235
21272
|
"record.metadata.status": "Statut",
|
|
@@ -21242,8 +21279,9 @@ var fr = {
|
|
|
21242
21279
|
"record.metadata.title": "Intitulé",
|
|
21243
21280
|
"record.metadata.topics": "Catégories",
|
|
21244
21281
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
21282
|
+
"record.metadata.update": "Date de mise à jour",
|
|
21245
21283
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
21246
|
-
"record.metadata.updatedOn": "
|
|
21284
|
+
"record.metadata.updatedOn": "Fiche de métadonnées modifiée",
|
|
21247
21285
|
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
21248
21286
|
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
21249
21287
|
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
@@ -21258,6 +21296,7 @@ var fr = {
|
|
|
21258
21296
|
"record.tab.chart": "Graphique",
|
|
21259
21297
|
"record.tab.data": "Tableau",
|
|
21260
21298
|
"record.tab.map": "Carte",
|
|
21299
|
+
"record.tab.stac": "STAC",
|
|
21261
21300
|
"record.was.created.time": "a créé cette ressource {time}",
|
|
21262
21301
|
records: records$4,
|
|
21263
21302
|
"results.layout.selectOne": "Affichage des résultats",
|
|
@@ -21349,6 +21388,8 @@ var fr = {
|
|
|
21349
21388
|
"service.metadata.spatialExtent": "Etendue spatiale",
|
|
21350
21389
|
"share.tab.permalink": "Partager",
|
|
21351
21390
|
"share.tab.webComponent": "Intégrer",
|
|
21391
|
+
"stac.filter.reset": "Réinitialiser les filtres",
|
|
21392
|
+
"stac.results.noResults": "Vos filtres ne permettent pas d’afficher de résultats",
|
|
21352
21393
|
"table.loading.data": "Chargement des données...",
|
|
21353
21394
|
"table.object.count": "enregistrements dans ce jeu de données",
|
|
21354
21395
|
"table.paginator.firstPage": "Première page",
|
|
@@ -21437,6 +21478,9 @@ var it = {
|
|
|
21437
21478
|
"dataset.error.restrictedAccess": "L'accesso a questa risorsa è limitato",
|
|
21438
21479
|
"dataset.error.unknown": "Impossibile visualizzare i dati: \"{info}\"",
|
|
21439
21480
|
"dataset.error.unsupportedType": "Il seguente tipo di contenuto non è supportato: \"{info}\"",
|
|
21481
|
+
"daterange.filter.from": "",
|
|
21482
|
+
"daterange.filter.period": "",
|
|
21483
|
+
"daterange.filter.to": "",
|
|
21440
21484
|
"domain.contact.role.author": "Autore",
|
|
21441
21485
|
"domain.contact.role.collaborator": "Collaboratore",
|
|
21442
21486
|
"domain.contact.role.contributor": "Collaboratore",
|
|
@@ -21772,6 +21816,7 @@ var it = {
|
|
|
21772
21816
|
"pagination.nextPage": "Pagina successiva",
|
|
21773
21817
|
"pagination.page": "pagina",
|
|
21774
21818
|
"pagination.pageOf": "di",
|
|
21819
|
+
"pagination.previousPage": "",
|
|
21775
21820
|
"record.action.delete": "Elimina",
|
|
21776
21821
|
"record.action.download": "Scarica",
|
|
21777
21822
|
"record.action.duplicate": "Duplicato",
|
|
@@ -21836,6 +21881,8 @@ var it = {
|
|
|
21836
21881
|
"record.metadata.contact": "Contatto",
|
|
21837
21882
|
"record.metadata.creation": "Data di creazione",
|
|
21838
21883
|
"record.metadata.details": "A proposito del dati",
|
|
21884
|
+
"record.metadata.doi.copy": "",
|
|
21885
|
+
"record.metadata.doi.open": "",
|
|
21839
21886
|
"record.metadata.download": "Download",
|
|
21840
21887
|
"record.metadata.feature.catalog": "Catalogo dei oggetti",
|
|
21841
21888
|
"record.metadata.formats": "Formati",
|
|
@@ -21884,11 +21931,11 @@ var it = {
|
|
|
21884
21931
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21885
21932
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21886
21933
|
"record.metadata.related": "Vedi anche",
|
|
21887
|
-
"record.metadata.resourceCreated": "Creato
|
|
21888
|
-
"record.metadata.resourcePublished": "Pubblicato
|
|
21889
|
-
"record.metadata.resourceUpdated": "Ultimo aggiornamento
|
|
21934
|
+
"record.metadata.resourceCreated": "Creato",
|
|
21935
|
+
"record.metadata.resourcePublished": "Pubblicato",
|
|
21936
|
+
"record.metadata.resourceUpdated": "Ultimo aggiornamento",
|
|
21890
21937
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21891
|
-
"record.metadata.sheet": "Origine
|
|
21938
|
+
"record.metadata.sheet": "Origine dei metadati",
|
|
21892
21939
|
"record.metadata.status": "Stato",
|
|
21893
21940
|
"record.metadata.status.notPublished": "Non pubblicato",
|
|
21894
21941
|
"record.metadata.status.published": "Pubblicato",
|
|
@@ -21899,8 +21946,9 @@ var it = {
|
|
|
21899
21946
|
"record.metadata.title": "Titolo",
|
|
21900
21947
|
"record.metadata.topics": "Categorie",
|
|
21901
21948
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
21949
|
+
"record.metadata.update": "Data di aggiornamento",
|
|
21902
21950
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
21903
|
-
"record.metadata.updatedOn": "
|
|
21951
|
+
"record.metadata.updatedOn": "Metadati modificati",
|
|
21904
21952
|
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
21905
21953
|
"record.metadata.userFeedbacks": "Domande / Risposte",
|
|
21906
21954
|
"record.metadata.userFeedbacks.anonymousUser": "Per pubblicare un commento, effettua il login.",
|
|
@@ -21915,6 +21963,7 @@ var it = {
|
|
|
21915
21963
|
"record.tab.chart": "Grafico",
|
|
21916
21964
|
"record.tab.data": "Tabella",
|
|
21917
21965
|
"record.tab.map": "Mappa",
|
|
21966
|
+
"record.tab.stac": "",
|
|
21918
21967
|
"record.was.created.time": "ha creato questi dati {time}",
|
|
21919
21968
|
records: records$3,
|
|
21920
21969
|
"results.layout.selectOne": "Mostra risultati",
|
|
@@ -22006,6 +22055,8 @@ var it = {
|
|
|
22006
22055
|
"service.metadata.spatialExtent": "Estensione spaziale",
|
|
22007
22056
|
"share.tab.permalink": "Condividere",
|
|
22008
22057
|
"share.tab.webComponent": "Incorporare",
|
|
22058
|
+
"stac.filter.reset": "",
|
|
22059
|
+
"stac.results.noResults": "",
|
|
22009
22060
|
"table.loading.data": "Caricamento dei dati...",
|
|
22010
22061
|
"table.object.count": "record in questi dati",
|
|
22011
22062
|
"table.paginator.firstPage": "Prima pagina",
|
|
@@ -22094,6 +22145,9 @@ var nl = {
|
|
|
22094
22145
|
"dataset.error.restrictedAccess": "",
|
|
22095
22146
|
"dataset.error.unknown": "",
|
|
22096
22147
|
"dataset.error.unsupportedType": "",
|
|
22148
|
+
"daterange.filter.from": "",
|
|
22149
|
+
"daterange.filter.period": "",
|
|
22150
|
+
"daterange.filter.to": "",
|
|
22097
22151
|
"domain.contact.role.author": "",
|
|
22098
22152
|
"domain.contact.role.collaborator": "",
|
|
22099
22153
|
"domain.contact.role.contributor": "",
|
|
@@ -22429,6 +22483,7 @@ var nl = {
|
|
|
22429
22483
|
"pagination.nextPage": "",
|
|
22430
22484
|
"pagination.page": "",
|
|
22431
22485
|
"pagination.pageOf": "",
|
|
22486
|
+
"pagination.previousPage": "",
|
|
22432
22487
|
"record.action.delete": "",
|
|
22433
22488
|
"record.action.download": "",
|
|
22434
22489
|
"record.action.duplicate": "",
|
|
@@ -22493,6 +22548,8 @@ var nl = {
|
|
|
22493
22548
|
"record.metadata.contact": "",
|
|
22494
22549
|
"record.metadata.creation": "",
|
|
22495
22550
|
"record.metadata.details": "",
|
|
22551
|
+
"record.metadata.doi.copy": "",
|
|
22552
|
+
"record.metadata.doi.open": "",
|
|
22496
22553
|
"record.metadata.download": "",
|
|
22497
22554
|
"record.metadata.feature.catalog": "",
|
|
22498
22555
|
"record.metadata.formats": "",
|
|
@@ -22556,6 +22613,7 @@ var nl = {
|
|
|
22556
22613
|
"record.metadata.title": "",
|
|
22557
22614
|
"record.metadata.topics": "",
|
|
22558
22615
|
"record.metadata.uniqueId": "",
|
|
22616
|
+
"record.metadata.update": "",
|
|
22559
22617
|
"record.metadata.updateFrequency": "",
|
|
22560
22618
|
"record.metadata.updatedOn": "",
|
|
22561
22619
|
"record.metadata.usage": "",
|
|
@@ -22572,6 +22630,7 @@ var nl = {
|
|
|
22572
22630
|
"record.tab.chart": "",
|
|
22573
22631
|
"record.tab.data": "",
|
|
22574
22632
|
"record.tab.map": "",
|
|
22633
|
+
"record.tab.stac": "",
|
|
22575
22634
|
"record.was.created.time": "",
|
|
22576
22635
|
records: records$2,
|
|
22577
22636
|
"results.layout.selectOne": "",
|
|
@@ -22663,6 +22722,8 @@ var nl = {
|
|
|
22663
22722
|
"service.metadata.spatialExtent": "",
|
|
22664
22723
|
"share.tab.permalink": "",
|
|
22665
22724
|
"share.tab.webComponent": "",
|
|
22725
|
+
"stac.filter.reset": "",
|
|
22726
|
+
"stac.results.noResults": "",
|
|
22666
22727
|
"table.loading.data": "",
|
|
22667
22728
|
"table.object.count": "",
|
|
22668
22729
|
"table.paginator.firstPage": "",
|
|
@@ -22751,6 +22812,9 @@ var pt = {
|
|
|
22751
22812
|
"dataset.error.restrictedAccess": "",
|
|
22752
22813
|
"dataset.error.unknown": "",
|
|
22753
22814
|
"dataset.error.unsupportedType": "",
|
|
22815
|
+
"daterange.filter.from": "",
|
|
22816
|
+
"daterange.filter.period": "",
|
|
22817
|
+
"daterange.filter.to": "",
|
|
22754
22818
|
"domain.contact.role.author": "",
|
|
22755
22819
|
"domain.contact.role.collaborator": "",
|
|
22756
22820
|
"domain.contact.role.contributor": "",
|
|
@@ -23086,6 +23150,7 @@ var pt = {
|
|
|
23086
23150
|
"pagination.nextPage": "",
|
|
23087
23151
|
"pagination.page": "",
|
|
23088
23152
|
"pagination.pageOf": "",
|
|
23153
|
+
"pagination.previousPage": "",
|
|
23089
23154
|
"record.action.delete": "",
|
|
23090
23155
|
"record.action.download": "",
|
|
23091
23156
|
"record.action.duplicate": "",
|
|
@@ -23150,6 +23215,8 @@ var pt = {
|
|
|
23150
23215
|
"record.metadata.contact": "",
|
|
23151
23216
|
"record.metadata.creation": "",
|
|
23152
23217
|
"record.metadata.details": "",
|
|
23218
|
+
"record.metadata.doi.copy": "",
|
|
23219
|
+
"record.metadata.doi.open": "",
|
|
23153
23220
|
"record.metadata.download": "",
|
|
23154
23221
|
"record.metadata.feature.catalog": "",
|
|
23155
23222
|
"record.metadata.formats": "",
|
|
@@ -23213,6 +23280,7 @@ var pt = {
|
|
|
23213
23280
|
"record.metadata.title": "",
|
|
23214
23281
|
"record.metadata.topics": "",
|
|
23215
23282
|
"record.metadata.uniqueId": "",
|
|
23283
|
+
"record.metadata.update": "",
|
|
23216
23284
|
"record.metadata.updateFrequency": "",
|
|
23217
23285
|
"record.metadata.updatedOn": "",
|
|
23218
23286
|
"record.metadata.usage": "",
|
|
@@ -23229,6 +23297,7 @@ var pt = {
|
|
|
23229
23297
|
"record.tab.chart": "",
|
|
23230
23298
|
"record.tab.data": "",
|
|
23231
23299
|
"record.tab.map": "",
|
|
23300
|
+
"record.tab.stac": "",
|
|
23232
23301
|
"record.was.created.time": "",
|
|
23233
23302
|
records: records$1,
|
|
23234
23303
|
"results.layout.selectOne": "",
|
|
@@ -23320,6 +23389,8 @@ var pt = {
|
|
|
23320
23389
|
"service.metadata.spatialExtent": "",
|
|
23321
23390
|
"share.tab.permalink": "",
|
|
23322
23391
|
"share.tab.webComponent": "",
|
|
23392
|
+
"stac.filter.reset": "",
|
|
23393
|
+
"stac.results.noResults": "",
|
|
23323
23394
|
"table.loading.data": "",
|
|
23324
23395
|
"table.object.count": "",
|
|
23325
23396
|
"table.paginator.firstPage": "",
|
|
@@ -23408,6 +23479,9 @@ var sk = {
|
|
|
23408
23479
|
"dataset.error.restrictedAccess": "",
|
|
23409
23480
|
"dataset.error.unknown": "Dáta nie je možné zobraziť: \"{ info }\"",
|
|
23410
23481
|
"dataset.error.unsupportedType": "Nepodporovaný typ obsahu: \"{ info }\"",
|
|
23482
|
+
"daterange.filter.from": "",
|
|
23483
|
+
"daterange.filter.period": "",
|
|
23484
|
+
"daterange.filter.to": "",
|
|
23411
23485
|
"domain.contact.role.author": "",
|
|
23412
23486
|
"domain.contact.role.collaborator": "",
|
|
23413
23487
|
"domain.contact.role.contributor": "",
|
|
@@ -23743,6 +23817,7 @@ var sk = {
|
|
|
23743
23817
|
"pagination.nextPage": "Ďalšia stránka",
|
|
23744
23818
|
"pagination.page": "strana",
|
|
23745
23819
|
"pagination.pageOf": "z",
|
|
23820
|
+
"pagination.previousPage": "",
|
|
23746
23821
|
"record.action.delete": "",
|
|
23747
23822
|
"record.action.download": "Stiahnuť",
|
|
23748
23823
|
"record.action.duplicate": "",
|
|
@@ -23807,6 +23882,8 @@ var sk = {
|
|
|
23807
23882
|
"record.metadata.contact": "Kontakt",
|
|
23808
23883
|
"record.metadata.creation": "",
|
|
23809
23884
|
"record.metadata.details": "Detaily",
|
|
23885
|
+
"record.metadata.doi.copy": "",
|
|
23886
|
+
"record.metadata.doi.open": "",
|
|
23810
23887
|
"record.metadata.download": "Sťahovania",
|
|
23811
23888
|
"record.metadata.feature.catalog": "",
|
|
23812
23889
|
"record.metadata.formats": "Formáty",
|
|
@@ -23870,8 +23947,9 @@ var sk = {
|
|
|
23870
23947
|
"record.metadata.title": "Názov",
|
|
23871
23948
|
"record.metadata.topics": "",
|
|
23872
23949
|
"record.metadata.uniqueId": "Jedinečný identifikátor",
|
|
23950
|
+
"record.metadata.update": "Dátum aktualizácie",
|
|
23873
23951
|
"record.metadata.updateFrequency": "Frekvencia aktualizácie metadát",
|
|
23874
|
-
"record.metadata.updatedOn": "
|
|
23952
|
+
"record.metadata.updatedOn": "Metadáta zmenené",
|
|
23875
23953
|
"record.metadata.usage": "Použitie a obmedzenia",
|
|
23876
23954
|
"record.metadata.userFeedbacks": "",
|
|
23877
23955
|
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
@@ -23886,6 +23964,7 @@ var sk = {
|
|
|
23886
23964
|
"record.tab.chart": "Graf",
|
|
23887
23965
|
"record.tab.data": "Tabuľka",
|
|
23888
23966
|
"record.tab.map": "Mapa",
|
|
23967
|
+
"record.tab.stac": "",
|
|
23889
23968
|
"record.was.created.time": "vytvoril tento dataset o {time}",
|
|
23890
23969
|
records: records,
|
|
23891
23970
|
"results.layout.selectOne": "Rozmiestnenie výsledkov",
|
|
@@ -23977,6 +24056,8 @@ var sk = {
|
|
|
23977
24056
|
"service.metadata.spatialExtent": "",
|
|
23978
24057
|
"share.tab.permalink": "Zdieľať",
|
|
23979
24058
|
"share.tab.webComponent": "Integrovať",
|
|
24059
|
+
"stac.filter.reset": "",
|
|
24060
|
+
"stac.results.noResults": "",
|
|
23980
24061
|
"table.loading.data": "Načítanie údajov...",
|
|
23981
24062
|
"table.object.count": "objekty v tomto súbore údajov",
|
|
23982
24063
|
"table.paginator.firstPage": "",
|
|
@@ -24274,6 +24355,29 @@ class Gn4FieldMapper {
|
|
|
24274
24355
|
}),
|
|
24275
24356
|
};
|
|
24276
24357
|
},
|
|
24358
|
+
resourceIdentifier: (output, source) => {
|
|
24359
|
+
const identifiers = getAsArray(selectField(source, 'resourceIdentifier'));
|
|
24360
|
+
if (!identifiers.length)
|
|
24361
|
+
return output;
|
|
24362
|
+
const mappedIdentifiers = identifiers
|
|
24363
|
+
.map((id) => {
|
|
24364
|
+
const code = selectField(id, 'code');
|
|
24365
|
+
const codeSpace = selectField(id, 'codeSpace');
|
|
24366
|
+
const link = selectField(id, 'link');
|
|
24367
|
+
return {
|
|
24368
|
+
code,
|
|
24369
|
+
...(codeSpace && { codeSpace }),
|
|
24370
|
+
...(link && { url: link }),
|
|
24371
|
+
};
|
|
24372
|
+
})
|
|
24373
|
+
.filter((id) => id !== null);
|
|
24374
|
+
if (!mappedIdentifiers.length)
|
|
24375
|
+
return output;
|
|
24376
|
+
return {
|
|
24377
|
+
...output,
|
|
24378
|
+
resourceIdentifiers: mappedIdentifiers,
|
|
24379
|
+
};
|
|
24380
|
+
},
|
|
24277
24381
|
};
|
|
24278
24382
|
this.genericField = (output) => output;
|
|
24279
24383
|
this.constraintField = (type, output, constraintArray) => {
|
|
@@ -24506,7 +24610,6 @@ const ES_SOURCE_SUMMARY = [
|
|
|
24506
24610
|
'resourceAbstractObject',
|
|
24507
24611
|
'overview',
|
|
24508
24612
|
'logo',
|
|
24509
|
-
'codelist_status_text',
|
|
24510
24613
|
'link',
|
|
24511
24614
|
'linkProtocol',
|
|
24512
24615
|
'contactForResource*.organisation*',
|
|
@@ -24691,9 +24794,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
24691
24794
|
}]
|
|
24692
24795
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1$2.Location }] });
|
|
24693
24796
|
|
|
24797
|
+
const DEFAULT_LANGUAGE = 'en';
|
|
24694
24798
|
class DateService {
|
|
24695
24799
|
constructor(translateService) {
|
|
24696
24800
|
this.translateService = translateService;
|
|
24801
|
+
this.dateLocales = import('./geonetwork-ui-date-locales-MYnkDJ5h.mjs').then((obj) => obj.default);
|
|
24697
24802
|
}
|
|
24698
24803
|
getDateObject(date) {
|
|
24699
24804
|
if (typeof date === 'string') {
|
|
@@ -24706,10 +24811,15 @@ class DateService {
|
|
|
24706
24811
|
return date;
|
|
24707
24812
|
}
|
|
24708
24813
|
getLocaleAndDate(date) {
|
|
24709
|
-
const locale = this.translateService.currentLang ||
|
|
24814
|
+
const locale = this.translateService.currentLang || DEFAULT_LANGUAGE;
|
|
24710
24815
|
const dateObj = this.getDateObject(date);
|
|
24711
24816
|
return { locale, dateObj };
|
|
24712
24817
|
}
|
|
24818
|
+
async getDateLocale() {
|
|
24819
|
+
const lang = this.translateService.currentLang || DEFAULT_LANGUAGE;
|
|
24820
|
+
const locales = await this.dateLocales;
|
|
24821
|
+
return locales[lang];
|
|
24822
|
+
}
|
|
24713
24823
|
formatDate(date, options) {
|
|
24714
24824
|
const { locale, dateObj } = this.getLocaleAndDate(date);
|
|
24715
24825
|
return dateObj.toLocaleDateString(locale, options);
|
|
@@ -24718,6 +24828,15 @@ class DateService {
|
|
|
24718
24828
|
const { locale, dateObj } = this.getLocaleAndDate(date);
|
|
24719
24829
|
return dateObj.toLocaleString(locale, options);
|
|
24720
24830
|
}
|
|
24831
|
+
async formatRelativeDateTime(date) {
|
|
24832
|
+
const dateObj = this.getDateObject(date);
|
|
24833
|
+
const now = new Date();
|
|
24834
|
+
const locale = await this.getDateLocale();
|
|
24835
|
+
return formatDistance(dateObj, now, {
|
|
24836
|
+
addSuffix: true,
|
|
24837
|
+
locale: locale,
|
|
24838
|
+
});
|
|
24839
|
+
}
|
|
24721
24840
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateService, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24722
24841
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateService, providedIn: 'root' }); }
|
|
24723
24842
|
}
|
|
@@ -25508,7 +25627,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25508
25627
|
}] } });
|
|
25509
25628
|
|
|
25510
25629
|
var name = "geonetwork-ui";
|
|
25511
|
-
var version = "2.8.0-dev.
|
|
25630
|
+
var version = "2.8.0-dev.5186798f7";
|
|
25512
25631
|
var engines = {
|
|
25513
25632
|
node: ">=20"
|
|
25514
25633
|
};
|
|
@@ -25710,6 +25829,35 @@ function updateLanguages(record, defaultLanguage, otherLanguages) {
|
|
|
25710
25829
|
return updatedRecord;
|
|
25711
25830
|
}
|
|
25712
25831
|
|
|
25832
|
+
class GnUiHumanizeDateDirective {
|
|
25833
|
+
constructor(dateService, el, renderer) {
|
|
25834
|
+
this.dateService = dateService;
|
|
25835
|
+
this.el = el;
|
|
25836
|
+
this.renderer = renderer;
|
|
25837
|
+
}
|
|
25838
|
+
async ngOnInit() {
|
|
25839
|
+
await this.updateElement();
|
|
25840
|
+
}
|
|
25841
|
+
async updateElement() {
|
|
25842
|
+
const dateValue = this.gnUiHumanizeDate;
|
|
25843
|
+
const fullDateTime = this.dateService.formatDateTime(dateValue);
|
|
25844
|
+
const relativeDate = await this.dateService.formatRelativeDateTime(dateValue);
|
|
25845
|
+
this.renderer.setAttribute(this.el.nativeElement, 'title', fullDateTime);
|
|
25846
|
+
this.renderer.setProperty(this.el.nativeElement, 'textContent', relativeDate);
|
|
25847
|
+
}
|
|
25848
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GnUiHumanizeDateDirective, deps: [{ token: DateService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25849
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: GnUiHumanizeDateDirective, isStandalone: true, selector: "[gnUiHumanizeDate]", inputs: { gnUiHumanizeDate: "gnUiHumanizeDate" }, ngImport: i0 }); }
|
|
25850
|
+
}
|
|
25851
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GnUiHumanizeDateDirective, decorators: [{
|
|
25852
|
+
type: Directive,
|
|
25853
|
+
args: [{
|
|
25854
|
+
selector: '[gnUiHumanizeDate]',
|
|
25855
|
+
standalone: true,
|
|
25856
|
+
}]
|
|
25857
|
+
}], ctorParameters: () => [{ type: DateService }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { gnUiHumanizeDate: [{
|
|
25858
|
+
type: Input
|
|
25859
|
+
}] } });
|
|
25860
|
+
|
|
25713
25861
|
class ElasticsearchService {
|
|
25714
25862
|
// we're using getters in case the defined languages change over time
|
|
25715
25863
|
get metadataLang() {
|
|
@@ -29262,7 +29410,7 @@ class AutocompleteComponent {
|
|
|
29262
29410
|
provideNgIconsConfig({
|
|
29263
29411
|
size: '1.75rem',
|
|
29264
29412
|
}),
|
|
29265
|
-
], 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: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleSearch()\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\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 text-start\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type:
|
|
29413
|
+
], 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: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleSearch()\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\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 text-start\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i1$6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29266
29414
|
}
|
|
29267
29415
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
29268
29416
|
type: Component,
|
|
@@ -29371,7 +29519,7 @@ class CheckToggleComponent {
|
|
|
29371
29519
|
this.toggled.emit(value);
|
|
29372
29520
|
}
|
|
29373
29521
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29374
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckToggleComponent, isStandalone: true, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label\n class=\"inline-flex relative items-start cursor-pointer\"\n [title]=\"title || label\"\n>\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2
|
|
29522
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckToggleComponent, isStandalone: true, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label\n class=\"inline-flex relative items-start cursor-pointer\"\n [title]=\"title || label\"\n>\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29375
29523
|
}
|
|
29376
29524
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
29377
29525
|
type: Component,
|
|
@@ -29404,7 +29552,7 @@ class CheckboxComponent {
|
|
|
29404
29552
|
this.changed.emit(this.checked);
|
|
29405
29553
|
}
|
|
29406
29554
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29407
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckboxComponent, isStandalone: true, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1$
|
|
29555
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CheckboxComponent, isStandalone: true, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i1$7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29408
29556
|
}
|
|
29409
29557
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
29410
29558
|
type: Component,
|
|
@@ -29429,7 +29577,7 @@ class CopyTextButtonComponent {
|
|
|
29429
29577
|
event.target.blur();
|
|
29430
29578
|
}
|
|
29431
29579
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29432
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopyTextButtonComponent, isStandalone: true, 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 [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <ng-icon\n name=\"matContentCopy\"\n class=\"pointer-events-none align-middle card-icon\"\n ></ng-icon>\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$
|
|
29580
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopyTextButtonComponent, isStandalone: true, 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 [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <ng-icon\n name=\"matContentCopy\"\n class=\"pointer-events-none align-middle card-icon\"\n ></ng-icon>\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [provideIcons({ matContentCopy })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29433
29581
|
}
|
|
29434
29582
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
29435
29583
|
type: Component,
|
|
@@ -29445,16 +29593,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29445
29593
|
}] } });
|
|
29446
29594
|
|
|
29447
29595
|
class DatePickerComponent {
|
|
29448
|
-
constructor() {
|
|
29596
|
+
constructor(dateAdapter, translate) {
|
|
29597
|
+
this.dateAdapter = dateAdapter;
|
|
29598
|
+
this.translate = translate;
|
|
29449
29599
|
this.dateChange = new EventEmitter();
|
|
29600
|
+
this.dateAdapter.setLocale(this.translate.currentLang);
|
|
29450
29601
|
}
|
|
29451
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29602
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, deps: [{ token: i1$6.DateAdapter }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29452
29603
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, providers: [
|
|
29453
29604
|
provideIcons({ iconoirCalendar }),
|
|
29454
29605
|
provideNgIconsConfig({
|
|
29455
29606
|
size: '1.5rem',
|
|
29456
29607
|
}),
|
|
29457
|
-
|
|
29608
|
+
{
|
|
29609
|
+
provide: MAT_DATE_LOCALE,
|
|
29610
|
+
useFactory: (locale) => locale,
|
|
29611
|
+
},
|
|
29612
|
+
], ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <input\n class=\"gn-ui-text-input pr-[var(--text-padding)]\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <gn-ui-button\n type=\"light\"\n class=\"absolute inset-y-[var(--side-padding)] right-[var(--side-padding)] z-10\"\n (buttonClick)=\"picker.open()\"\n data-cy=\"date-picker-button\"\n extraClass=\"h-full\"\n >\n <ng-icon name=\"iconoirCalendar\" class=\"text-primary\"></ng-icon>\n </gn-ui-button>\n</span>\n<mat-datepicker #picker></mat-datepicker>\n", styles: [":host{--gn-ui-button-rounded: 8px;--gn-ui-button-width: 32px;--gn-ui-button-padding: 0;--side-padding: calc(var(--gn-ui-text-input-padding, .6em) - 6px);--text-padding: calc(var(--side-padding) + 40px)}\n"], dependencies: [{ kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29458
29613
|
}
|
|
29459
29614
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
29460
29615
|
type: Component,
|
|
@@ -29468,8 +29623,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29468
29623
|
provideNgIconsConfig({
|
|
29469
29624
|
size: '1.5rem',
|
|
29470
29625
|
}),
|
|
29626
|
+
{
|
|
29627
|
+
provide: MAT_DATE_LOCALE,
|
|
29628
|
+
useFactory: (locale) => locale,
|
|
29629
|
+
},
|
|
29471
29630
|
], template: "<span class=\"w-full inline-block relative\">\n <input\n class=\"gn-ui-text-input pr-[var(--text-padding)]\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <gn-ui-button\n type=\"light\"\n class=\"absolute inset-y-[var(--side-padding)] right-[var(--side-padding)] z-10\"\n (buttonClick)=\"picker.open()\"\n data-cy=\"date-picker-button\"\n extraClass=\"h-full\"\n >\n <ng-icon name=\"iconoirCalendar\" class=\"text-primary\"></ng-icon>\n </gn-ui-button>\n</span>\n<mat-datepicker #picker></mat-datepicker>\n", styles: [":host{--gn-ui-button-rounded: 8px;--gn-ui-button-width: 32px;--gn-ui-button-padding: 0;--side-padding: calc(var(--gn-ui-text-input-padding, .6em) - 6px);--text-padding: calc(var(--side-padding) + 40px)}\n"] }]
|
|
29472
|
-
}], propDecorators: { date: [{
|
|
29631
|
+
}], ctorParameters: () => [{ type: i1$6.DateAdapter }, { type: i1$1.TranslateService }], propDecorators: { date: [{
|
|
29473
29632
|
type: Input
|
|
29474
29633
|
}], dateChange: [{
|
|
29475
29634
|
type: Output
|
|
@@ -29498,7 +29657,7 @@ class DateRangeDropdownComponent {
|
|
|
29498
29657
|
matExpandMore,
|
|
29499
29658
|
matExpandLess,
|
|
29500
29659
|
}),
|
|
29501
|
-
], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n (buttonClick)=\"picker.open()\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n </div>\n <ng-icon\n [name]=\"isPickerDisplayed ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n<!--date range input is just present for output events and hidden from the DOM-->\n<mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n</mat-date-range-input>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host .mat-date-range-input-container{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type:
|
|
29660
|
+
], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n (buttonClick)=\"picker.open()\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n </div>\n <ng-icon\n [name]=\"isPickerDisplayed ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n<!--date range input is just present for output events and hidden from the DOM-->\n<mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n</mat-date-range-input>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host .mat-date-range-input-container{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$2.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$2.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }] }); }
|
|
29502
29661
|
}
|
|
29503
29662
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDropdownComponent, decorators: [{
|
|
29504
29663
|
type: Component,
|
|
@@ -29540,7 +29699,7 @@ class DateRangePickerComponent {
|
|
|
29540
29699
|
provideNgIconsConfig({
|
|
29541
29700
|
size: '1.5rem',
|
|
29542
29701
|
}),
|
|
29543
|
-
], ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"gn-ui-text-input\">\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\n <gn-ui-button\n type=\"light\"\n class=\"absolute inset-y-[var(--side-padding)] right-[var(--side-padding)] z-10\"\n (buttonClick)=\"picker.open()\"\n extraClass=\"h-full\"\n data-cy=\"date-picker-button\"\n >\n <ng-icon name=\"iconoirCalendar\" class=\"text-primary\"></ng-icon>\n </gn-ui-button>\n</span>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host{--gn-ui-button-rounded: 8px;--gn-ui-button-width: 32px;--gn-ui-button-padding: 0;--side-padding: calc(var(--gn-ui-text-input-padding, .6em) - 6px);--text-padding: calc(var(--side-padding) + 40px)}\n"], dependencies: [{ kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type:
|
|
29702
|
+
], ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"gn-ui-text-input\">\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\n <gn-ui-button\n type=\"light\"\n class=\"absolute inset-y-[var(--side-padding)] right-[var(--side-padding)] z-10\"\n (buttonClick)=\"picker.open()\"\n extraClass=\"h-full\"\n data-cy=\"date-picker-button\"\n >\n <ng-icon name=\"iconoirCalendar\" class=\"text-primary\"></ng-icon>\n </gn-ui-button>\n</span>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host{--gn-ui-button-rounded: 8px;--gn-ui-button-width: 32px;--gn-ui-button-padding: 0;--side-padding: calc(var(--gn-ui-text-input-padding, .6em) - 6px);--text-padding: calc(var(--side-padding) + 40px)}\n"], dependencies: [{ kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$2.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$2.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29544
29703
|
}
|
|
29545
29704
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
29546
29705
|
type: Component,
|
|
@@ -29747,7 +29906,7 @@ class DropdownMultiselectComponent {
|
|
|
29747
29906
|
matExpandMore,
|
|
29748
29907
|
matExpandLess,
|
|
29749
29908
|
}),
|
|
29750
|
-
], viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row gap-[2px] flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$8.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$8.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2
|
|
29909
|
+
], viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row gap-[2px] flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$8.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$8.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29751
29910
|
}
|
|
29752
29911
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
29753
29912
|
type: Component,
|
|
@@ -30589,7 +30748,7 @@ class SearchFeatureCatalogComponent {
|
|
|
30589
30748
|
return (this.filteredFeatureCatalog?.featureTypes?.reduce((total, featureType) => total + (featureType.attributes?.length || 0), 0) || 0);
|
|
30590
30749
|
}
|
|
30591
30750
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFeatureCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30592
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchFeatureCatalogComponent, isStandalone: true, selector: "gn-ui-search-feature-catalog", inputs: { featureCatalog: "featureCatalog" }, outputs: { filteredFeatureCatalogChange: "filteredFeatureCatalogChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300\"\n *ngIf=\"\n (isMobile$ | async) === false || featureCatalog?.featureTypes?.length > 1\n \"\n>\n <div\n class=\"relative shrink-0\"\n *ngIf=\"featureCatalog?.featureTypes?.length > 1\"\n >\n <input\n type=\"text\"\n [placeholder]=\"'search.filter.into.feature.catalog' | translate\"\n class=\"w-[220px] h-8 pl-3 pr-10 py-2 border rounded-md\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"filterAction(searchTerm)\"\n />\n <ng-icon\n class=\"absolute right-2.5 top-1 w-6 h-6 text-black\"\n name=\"iconoirSearch\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"(isMobile$ | async) === false\"\n class=\"text-sm px-1 ml-auto inline\"\n >\n <ng-container *ngIf=\"featureCatalog?.featureTypes?.length > 1\">\n <span\n class=\"text-sm font-medium text-gray-900\"\n data-cy=\"total-objects-label\"\n translate\n >record.feature.catalog.number.total.object</span\n ><span\n class=\"text-sm font-bold px-1 text-gray-900\"\n data-cy=\"total-objects\"\n >{{ totalObjects }}</span\n >\n <span class=\"px-1.5\">|</span>\n </ng-container>\n <span\n class=\"text-sm font-medium px-1 text-gray-900\"\n data-cy=\"total-attributes-label\"\n translate\n >record.feature.catalog.number.total.attribute</span\n ><span class=\"text-sm font-bold text-gray-900\" data-cy=\"total-attributes\">{{\n totalAttributes\n }}</span>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2
|
|
30751
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchFeatureCatalogComponent, isStandalone: true, selector: "gn-ui-search-feature-catalog", inputs: { featureCatalog: "featureCatalog" }, outputs: { filteredFeatureCatalogChange: "filteredFeatureCatalogChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300\"\n *ngIf=\"\n (isMobile$ | async) === false || featureCatalog?.featureTypes?.length > 1\n \"\n>\n <div\n class=\"relative shrink-0\"\n *ngIf=\"featureCatalog?.featureTypes?.length > 1\"\n >\n <input\n type=\"text\"\n [placeholder]=\"'search.filter.into.feature.catalog' | translate\"\n class=\"w-[220px] h-8 pl-3 pr-10 py-2 border rounded-md\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"filterAction(searchTerm)\"\n />\n <ng-icon\n class=\"absolute right-2.5 top-1 w-6 h-6 text-black\"\n name=\"iconoirSearch\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"(isMobile$ | async) === false\"\n class=\"text-sm px-1 ml-auto inline\"\n >\n <ng-container *ngIf=\"featureCatalog?.featureTypes?.length > 1\">\n <span\n class=\"text-sm font-medium text-gray-900\"\n data-cy=\"total-objects-label\"\n translate\n >record.feature.catalog.number.total.object</span\n ><span\n class=\"text-sm font-bold px-1 text-gray-900\"\n data-cy=\"total-objects\"\n >{{ totalObjects }}</span\n >\n <span class=\"px-1.5\">|</span>\n </ng-container>\n <span\n class=\"text-sm font-medium px-1 text-gray-900\"\n data-cy=\"total-attributes-label\"\n translate\n >record.feature.catalog.number.total.attribute</span\n ><span class=\"text-sm font-bold text-gray-900\" data-cy=\"total-attributes\">{{\n totalAttributes\n }}</span>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], viewProviders: [
|
|
30593
30752
|
provideIcons({ iconoirSearch }),
|
|
30594
30753
|
provideNgIconsConfig({
|
|
30595
30754
|
size: '1.5rem',
|
|
@@ -30616,6 +30775,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30616
30775
|
type: Output
|
|
30617
30776
|
}] } });
|
|
30618
30777
|
|
|
30778
|
+
class DateRangeInputsComponent {
|
|
30779
|
+
constructor() {
|
|
30780
|
+
this.temporalExtentChange = new EventEmitter();
|
|
30781
|
+
}
|
|
30782
|
+
onStartDateChange(date) {
|
|
30783
|
+
this.temporalExtent = {
|
|
30784
|
+
...this.temporalExtent,
|
|
30785
|
+
start: date,
|
|
30786
|
+
};
|
|
30787
|
+
this.temporalExtentChange.emit(this.temporalExtent);
|
|
30788
|
+
}
|
|
30789
|
+
onEndDateChange(date) {
|
|
30790
|
+
this.temporalExtent = {
|
|
30791
|
+
...this.temporalExtent,
|
|
30792
|
+
end: date,
|
|
30793
|
+
};
|
|
30794
|
+
this.temporalExtentChange.emit(this.temporalExtent);
|
|
30795
|
+
}
|
|
30796
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeInputsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30797
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateRangeInputsComponent, isStandalone: true, selector: "gn-ui-date-range-inputs", inputs: { temporalExtent: "temporalExtent" }, outputs: { temporalExtentChange: "temporalExtentChange" }, ngImport: i0, template: "<div class=\"m-8\">\n <p class=\"mb-4\" translate>daterange.filter.period</p>\n <p translate>daterange.filter.from</p>\n <gn-ui-date-picker\n id=\"start-date-picker\"\n [date]=\"temporalExtent?.start\"\n (dateChange)=\"onStartDateChange($event)\"\n ></gn-ui-date-picker>\n <p class=\"mt-4\" translate>daterange.filter.to</p>\n <gn-ui-date-picker\n id=\"end-date-picker\"\n [date]=\"temporalExtent?.end\"\n (dateChange)=\"onEndDateChange($event)\"\n ></gn-ui-date-picker>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DatePickerComponent, selector: "gn-ui-date-picker", inputs: ["date"], outputs: ["dateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30798
|
+
}
|
|
30799
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeInputsComponent, decorators: [{
|
|
30800
|
+
type: Component,
|
|
30801
|
+
args: [{ selector: 'gn-ui-date-range-inputs', standalone: true, imports: [CommonModule, TranslateDirective, DatePickerComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"m-8\">\n <p class=\"mb-4\" translate>daterange.filter.period</p>\n <p translate>daterange.filter.from</p>\n <gn-ui-date-picker\n id=\"start-date-picker\"\n [date]=\"temporalExtent?.start\"\n (dateChange)=\"onStartDateChange($event)\"\n ></gn-ui-date-picker>\n <p class=\"mt-4\" translate>daterange.filter.to</p>\n <gn-ui-date-picker\n id=\"end-date-picker\"\n [date]=\"temporalExtent?.end\"\n (dateChange)=\"onEndDateChange($event)\"\n ></gn-ui-date-picker>\n</div>\n" }]
|
|
30802
|
+
}], propDecorators: { temporalExtent: [{
|
|
30803
|
+
type: Input
|
|
30804
|
+
}], temporalExtentChange: [{
|
|
30805
|
+
type: Output
|
|
30806
|
+
}] } });
|
|
30807
|
+
|
|
30619
30808
|
class CellPopinComponent {
|
|
30620
30809
|
set activePopin(active) {
|
|
30621
30810
|
this._activePopin = !!active;
|
|
@@ -30785,7 +30974,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30785
30974
|
|
|
30786
30975
|
class FormFieldWrapperComponent {
|
|
30787
30976
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30788
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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\" *ngIf=\"label; else onlyContent\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\" translate=\"\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n *ngIf=\"hint\"\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 mt-2\">\n <ng-container *ngTemplateOutlet=\"onlyContent\"> </ng-container>\n </div>\n</div>\n\n<ng-template #onlyContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$
|
|
30977
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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\" *ngIf=\"label; else onlyContent\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\" translate=\"\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n *ngIf=\"hint\"\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 mt-2\">\n <ng-container *ngTemplateOutlet=\"onlyContent\"> </ng-container>\n </div>\n</div>\n\n<ng-template #onlyContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30789
30978
|
}
|
|
30790
30979
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
30791
30980
|
type: Component,
|
|
@@ -31216,7 +31405,7 @@ class PaginationComponent {
|
|
|
31216
31405
|
this.listComponent.goToPage(this.applyPageBounds(newPage));
|
|
31217
31406
|
}
|
|
31218
31407
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31219
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PaginationComponent, isStandalone: true, selector: "gn-ui-pagination", inputs: { listComponent: "listComponent", hideButton: "hideButton" }, ngImport: i0, template: "<div class=\"relative\">\n <div class=\"sm:absolute sm:inset-0\" *ngIf=\"!hideButton\">\n <gn-ui-button\n (buttonClick)=\"listComponent.goToNextPage()\"\n type=\"secondary\"\n [disabled]=\"listComponent.isLastPage\"\n extraClass=\"lg:m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >pagination.nextPage</span\n >\n </gn-ui-button>\n </div>\n <div\n class=\"relative pointer-events-none flex flex-row justify-start sm:justify-end\"\n >\n <div class=\"pointer-events-auto flex flex-row items-center py-[13px]\">\n <span class=\"mr-3 capitalize text-sm text-gray-900\" translate\n >pagination.page</span\n >\n <input\n type=\"number\"\n [ngModel]=\"listComponent.currentPage\"\n [min]=\"1\"\n [max]=\"listComponent.pagesCount\"\n (ngModelChange)=\"setPage($event)\"\n class=\"border border-gray-300 rounded w-[54px] h-[34px] pl-[12px] mr-3 text-center\"\n />\n <span class=\"mr-3 text-sm text-gray-900\"\n ><span translate>pagination.pageOf</span>\n {{ listComponent.pagesCount }}</span\n >\n <gn-ui-button\n (buttonClick)=\"listComponent.goToPrevPage()\"\n class=\"mr-2\"\n [disabled]=\"listComponent.isFirstPage\"\n [type]=\"'light'\"\n extraClass=\"!px-[3px]\"\n data-cy=\"prev-page\"\n >\n <ng-icon name=\"matChevronLeft\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"listComponent.goToNextPage()\"\n [disabled]=\"listComponent.isLastPage\"\n [type]=\"'light'\"\n extraClass=\"!px-[3px]\"\n data-cy=\"next-page\"\n >\n <ng-icon name=\"matChevronRight\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2
|
|
31408
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PaginationComponent, isStandalone: true, selector: "gn-ui-pagination", inputs: { listComponent: "listComponent", hideButton: "hideButton" }, ngImport: i0, template: "<div class=\"relative\">\n <div class=\"sm:absolute sm:inset-0\" *ngIf=\"!hideButton\">\n <gn-ui-button\n (buttonClick)=\"listComponent.goToNextPage()\"\n type=\"secondary\"\n [disabled]=\"listComponent.isLastPage\"\n extraClass=\"lg:m-auto !p-[22px]\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >pagination.nextPage</span\n >\n </gn-ui-button>\n </div>\n <div\n class=\"relative pointer-events-none flex flex-row justify-start sm:justify-end\"\n >\n <div class=\"pointer-events-auto flex flex-row items-center py-[13px]\">\n <span class=\"mr-3 capitalize text-sm text-gray-900\" translate\n >pagination.page</span\n >\n <input\n type=\"number\"\n [ngModel]=\"listComponent.currentPage\"\n [min]=\"1\"\n [max]=\"listComponent.pagesCount\"\n (ngModelChange)=\"setPage($event)\"\n class=\"border border-gray-300 rounded w-[54px] h-[34px] pl-[12px] mr-3 text-center\"\n />\n <span class=\"mr-3 text-sm text-gray-900\"\n ><span translate>pagination.pageOf</span>\n {{ listComponent.pagesCount }}</span\n >\n <gn-ui-button\n (buttonClick)=\"listComponent.goToPrevPage()\"\n class=\"mr-2\"\n [disabled]=\"listComponent.isFirstPage\"\n [type]=\"'light'\"\n extraClass=\"!px-[3px]\"\n data-cy=\"prev-page\"\n >\n <ng-icon name=\"matChevronLeft\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"listComponent.goToNextPage()\"\n [disabled]=\"listComponent.isLastPage\"\n [type]=\"'light'\"\n extraClass=\"!px-[3px]\"\n data-cy=\"next-page\"\n >\n <ng-icon name=\"matChevronRight\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i2.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [
|
|
31220
31409
|
provideIcons({
|
|
31221
31410
|
matChevronLeft,
|
|
31222
31411
|
matChevronRight,
|
|
@@ -31289,24 +31478,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31289
31478
|
}] } });
|
|
31290
31479
|
|
|
31291
31480
|
class PreviousNextButtonsComponent {
|
|
31481
|
+
constructor() {
|
|
31482
|
+
this.displayLabels = false;
|
|
31483
|
+
}
|
|
31292
31484
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31293
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PreviousNextButtonsComponent, isStandalone: true, selector: "gn-ui-previous-next-buttons", inputs: { listComponent: "listComponent" }, providers: [
|
|
31485
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: PreviousNextButtonsComponent, isStandalone: true, selector: "gn-ui-previous-next-buttons", inputs: { listComponent: "listComponent", displayLabels: "displayLabels" }, providers: [
|
|
31294
31486
|
provideIcons({ matArrowBackIos, matArrowForwardIos }),
|
|
31295
31487
|
provideNgIconsConfig({
|
|
31296
31488
|
size: '0.875em',
|
|
31297
31489
|
}),
|
|
31298
|
-
], ngImport: i0, template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }] }); }
|
|
31490
|
+
], ngImport: i0, template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-auto min-w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300 text-main'\n : 'border border-gray-100 text-gray-300')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n <span *ngIf=\"displayLabels\" class=\"ml-2\" translate\n >pagination.previousPage</span\n >\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-auto min-w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300 text-main'\n : 'border border-gray-100 text-gray-300')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <span *ngIf=\"displayLabels\" class=\"mr-2\" translate\n >pagination.nextPage</span\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
31299
31491
|
}
|
|
31300
31492
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
|
|
31301
31493
|
type: Component,
|
|
31302
|
-
args: [{ selector: 'gn-ui-previous-next-buttons', standalone: true, imports: [ButtonComponent, NgIconComponent], providers: [
|
|
31494
|
+
args: [{ selector: 'gn-ui-previous-next-buttons', standalone: true, imports: [CommonModule, ButtonComponent, NgIconComponent, TranslateDirective], providers: [
|
|
31303
31495
|
provideIcons({ matArrowBackIos, matArrowForwardIos }),
|
|
31304
31496
|
provideNgIconsConfig({
|
|
31305
31497
|
size: '0.875em',
|
|
31306
31498
|
}),
|
|
31307
|
-
], template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300'\n : 'border border-gray-100')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"] }]
|
|
31499
|
+
], template: "<div class=\"flex flex-row gap-x-1 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-auto min-w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isFirstPage\n ? 'border border-gray-300 text-main'\n : 'border border-gray-100 text-gray-300')\n \"\n [disabled]=\"listComponent.isFirstPage\"\n (buttonClick)=\"listComponent.goToPrevPage()\"\n >\n <ng-icon name=\"matArrowBackIos\"></ng-icon>\n <span *ngIf=\"displayLabels\" class=\"ml-2\" translate\n >pagination.previousPage</span\n >\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n type=\"light\"\n [extraClass]=\"\n 'w-auto min-w-10 h-8 px-2 py-1 rounded-lg ' +\n (!listComponent.isLastPage\n ? 'border border-gray-300 text-main'\n : 'border border-gray-100 text-gray-300')\n \"\n [disabled]=\"listComponent.isLastPage\"\n (buttonClick)=\"listComponent.goToNextPage()\"\n >\n <span *ngIf=\"displayLabels\" class=\"mr-2\" translate\n >pagination.nextPage</span\n >\n <ng-icon name=\"matArrowForwardIos\"></ng-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"] }]
|
|
31308
31500
|
}], propDecorators: { listComponent: [{
|
|
31309
31501
|
type: Input
|
|
31502
|
+
}], displayLabels: [{
|
|
31503
|
+
type: Input
|
|
31310
31504
|
}] } });
|
|
31311
31505
|
|
|
31312
31506
|
class TruncatedTextComponent {
|
|
@@ -31834,7 +32028,6 @@ const FIELDS_SUMMARY = [
|
|
|
31834
32028
|
'resourceAbstractObject',
|
|
31835
32029
|
'overview',
|
|
31836
32030
|
'logo',
|
|
31837
|
-
'codelist_status_text',
|
|
31838
32031
|
'link',
|
|
31839
32032
|
'linkProtocol',
|
|
31840
32033
|
'contactForResource*.organisation*',
|
|
@@ -33032,7 +33225,7 @@ class ApiCardComponent {
|
|
|
33032
33225
|
}
|
|
33033
33226
|
}
|
|
33034
33227
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33035
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink", size: "size" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\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 [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 <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div class=\"flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\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 translate\n >record.metadata.api.accessServiceProtocol.{{\n link.accessServiceProtocol\n }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\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 translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$
|
|
33228
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink", size: "size" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\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 [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 <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div class=\"flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\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 translate\n >record.metadata.api.accessServiceProtocol.{{\n link.accessServiceProtocol\n }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\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 translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
|
|
33036
33229
|
provideIcons({
|
|
33037
33230
|
iconoirSettings,
|
|
33038
33231
|
}),
|
|
@@ -33274,7 +33467,7 @@ class DownloadsListComponent {
|
|
|
33274
33467
|
link.accessServiceProtocol === 'ogcFeatures'));
|
|
33275
33468
|
}
|
|
33276
33469
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33277
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadsListComponent, isStandalone: true, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div class=\"flex flex-row items-center gap-x-4\">\n <div>\n <h3\n class=\"inline-block font-title text-xl text-title font-medium mr-4\"\n translate\n >\n record.metadata.download\n </h3>\n <span class=\"px-3\">({{ linksCount }})</span>\n </div>\n <gn-ui-previous-next-buttons\n *ngIf=\"(isMobile$ | async) === false && _list?.pagesCount > 1\"\n [listComponent]=\"_list\"\n ></gn-ui-previous-next-buttons>\n </div>\n\n <div\n class=\"flex flex-wrap justify-start sm:justify-end\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-60')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n\n<ng-container>\n <gn-ui-block-list\n *ngIf=\"(isMobile$ | async) === false\"\n #blockList\n (listChanges)=\"updateList($event)\"\n containerClass=\"gap-4 pt-5 pb-7\"\n >\n <gn-ui-download-item\n #block\n *ngFor=\"let link of filteredLinks\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n [size]=\"blockList.subComponentSize\"\n ></gn-ui-download-item>\n </gn-ui-block-list>\n</ng-container>\n\n<div class=\"mb-5\" *ngFor=\"let link of filteredLinks\">\n <ng-container *ngIf=\"(isMobile$ | async) === true\">\n <gn-ui-download-item\n size=\"M\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: BlockListComponent, selector: "gn-ui-block-list", inputs: ["containerClass", "paginationContainerClass"], outputs: ["listChanges"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromApi", "size"], outputs: ["exportUrl"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: PreviousNextButtonsComponent, selector: "gn-ui-previous-next-buttons", inputs: ["listComponent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33470
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DownloadsListComponent, isStandalone: true, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between items-center pb-4\"\n *ngIf=\"links && links.length > 0\"\n>\n <div class=\"flex flex-row items-center gap-x-4\">\n <div>\n <h3\n class=\"inline-block font-title text-xl text-title font-medium mr-4\"\n translate\n >\n record.metadata.download\n </h3>\n <span class=\"px-3\">({{ linksCount }})</span>\n </div>\n <gn-ui-previous-next-buttons\n *ngIf=\"(isMobile$ | async) === false && _list?.pagesCount > 1\"\n [listComponent]=\"_list\"\n ></gn-ui-previous-next-buttons>\n </div>\n\n <div\n class=\"flex flex-wrap justify-start sm:justify-end\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-60')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n\n<ng-container>\n <gn-ui-block-list\n *ngIf=\"(isMobile$ | async) === false\"\n #blockList\n (listChanges)=\"updateList($event)\"\n containerClass=\"gap-4 pt-5 pb-7\"\n >\n <gn-ui-download-item\n #block\n *ngFor=\"let link of filteredLinks\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n [size]=\"blockList.subComponentSize\"\n ></gn-ui-download-item>\n </gn-ui-block-list>\n</ng-container>\n\n<div class=\"mb-5\" *ngFor=\"let link of filteredLinks\">\n <ng-container *ngIf=\"(isMobile$ | async) === true\">\n <gn-ui-download-item\n size=\"M\"\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromApi]=\"isFromApi(link)\"\n ></gn-ui-download-item>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: BlockListComponent, selector: "gn-ui-block-list", inputs: ["containerClass", "paginationContainerClass"], outputs: ["listChanges"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromApi", "size"], outputs: ["exportUrl"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: PreviousNextButtonsComponent, selector: "gn-ui-previous-next-buttons", inputs: ["listComponent", "displayLabels"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33278
33471
|
}
|
|
33279
33472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
33280
33473
|
type: Component,
|
|
@@ -33959,6 +34152,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33959
34152
|
type: Output
|
|
33960
34153
|
}] } });
|
|
33961
34154
|
|
|
34155
|
+
class MetadataDoiComponent {
|
|
34156
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataDoiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34157
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataDoiComponent, isStandalone: true, selector: "gn-ui-metadata-doi", inputs: { code: "code", link: "link" }, ngImport: i0, template: "<div\n class=\"border border-gray-300 rounded-lg py-4 px-5 text-black flex justify-between items-center gap-4\"\n>\n <div class=\"overflow-hidden flex-1\">\n <p class=\"text-base font-medium mb-3\">DOI</p>\n <p\n class=\"text-base font-medium overflow-hidden text-ellipsis whitespace-nowrap\"\n [title]=\"code\"\n >\n {{ code }}\n </p>\n </div>\n <div class=\"flex gap-2 items-start\">\n <gn-ui-copy-text-button\n [text]=\"code\"\n [displayText]=\"false\"\n [tooltipText]=\"'record.metadata.doi.copy' | translate\"\n class=\"[&>div]:flex [&>div]:items-center [&>div]:justify-center [&_button]:w-[40px] [&_button]:h-[32px] [&_button]:flex [&_button]:items-center [&_button]:justify-center [&_button]:hover:bg-gray-100 [&_button]:rounded-lg [&_button]:transition-colors [&_button]:border [&_button]:border-gray-300 [&_button]:px-2 [&_button]:py-1 [&_ng-icon]:w-5 [&_ng-icon]:h-5\"\n ></gn-ui-copy-text-button>\n <a\n *ngIf=\"link\"\n [href]=\"link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"w-[40px] h-[32px] flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors border border-gray-300 px-2 py-1\"\n [matTooltip]=\"'record.metadata.doi.open' | translate\"\n >\n <ng-icon name=\"matOpenInNew\" size=\"20\"></ng-icon>\n </a>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }], viewProviders: [
|
|
34158
|
+
provideIcons({
|
|
34159
|
+
matOpenInNew,
|
|
34160
|
+
}),
|
|
34161
|
+
] }); }
|
|
34162
|
+
}
|
|
34163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataDoiComponent, decorators: [{
|
|
34164
|
+
type: Component,
|
|
34165
|
+
args: [{ selector: 'gn-ui-metadata-doi', standalone: true, imports: [
|
|
34166
|
+
CommonModule,
|
|
34167
|
+
MatTooltipModule,
|
|
34168
|
+
NgIcon,
|
|
34169
|
+
TranslatePipe,
|
|
34170
|
+
CopyTextButtonComponent,
|
|
34171
|
+
], viewProviders: [
|
|
34172
|
+
provideIcons({
|
|
34173
|
+
matOpenInNew,
|
|
34174
|
+
}),
|
|
34175
|
+
], template: "<div\n class=\"border border-gray-300 rounded-lg py-4 px-5 text-black flex justify-between items-center gap-4\"\n>\n <div class=\"overflow-hidden flex-1\">\n <p class=\"text-base font-medium mb-3\">DOI</p>\n <p\n class=\"text-base font-medium overflow-hidden text-ellipsis whitespace-nowrap\"\n [title]=\"code\"\n >\n {{ code }}\n </p>\n </div>\n <div class=\"flex gap-2 items-start\">\n <gn-ui-copy-text-button\n [text]=\"code\"\n [displayText]=\"false\"\n [tooltipText]=\"'record.metadata.doi.copy' | translate\"\n class=\"[&>div]:flex [&>div]:items-center [&>div]:justify-center [&_button]:w-[40px] [&_button]:h-[32px] [&_button]:flex [&_button]:items-center [&_button]:justify-center [&_button]:hover:bg-gray-100 [&_button]:rounded-lg [&_button]:transition-colors [&_button]:border [&_button]:border-gray-300 [&_button]:px-2 [&_button]:py-1 [&_ng-icon]:w-5 [&_ng-icon]:h-5\"\n ></gn-ui-copy-text-button>\n <a\n *ngIf=\"link\"\n [href]=\"link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n class=\"w-[40px] h-[32px] flex items-center justify-center hover:bg-gray-100 rounded-lg transition-colors border border-gray-300 px-2 py-1\"\n [matTooltip]=\"'record.metadata.doi.open' | translate\"\n >\n <ng-icon name=\"matOpenInNew\" size=\"20\"></ng-icon>\n </a>\n </div>\n</div>\n" }]
|
|
34176
|
+
}], propDecorators: { code: [{
|
|
34177
|
+
type: Input
|
|
34178
|
+
}], link: [{
|
|
34179
|
+
type: Input
|
|
34180
|
+
}] } });
|
|
34181
|
+
|
|
33962
34182
|
/* eslint-disable @angular-eslint/directive-selector */
|
|
33963
34183
|
class GnUiLinkifyDirective {
|
|
33964
34184
|
constructor(el, renderer) {
|
|
@@ -34102,14 +34322,8 @@ class MetadataInfoComponent {
|
|
|
34102
34322
|
onKeywordClick(keyword) {
|
|
34103
34323
|
this.keyword.emit(keyword);
|
|
34104
34324
|
}
|
|
34105
|
-
formatDate(date) {
|
|
34106
|
-
return this.dateService.formatDate(date);
|
|
34107
|
-
}
|
|
34108
|
-
formatDateTime(date) {
|
|
34109
|
-
return this.dateService.formatDateTime(date);
|
|
34110
|
-
}
|
|
34111
34325
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34112
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, 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\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\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 </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords 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 </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\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 <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\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 <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\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.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\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 <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\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.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\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.otherLanguages?.length\">\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.otherLanguages\"\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=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\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 && formatDateTime(metadata.recordUpdated) }}\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 [clickable]=\"false\"\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 ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { 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: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
|
|
34326
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, 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\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines\n [maxLines]=\"6\"\n *ngIf=\"metadata.abstract\"\n data-test=\"metadata-info-abstract\"\n >\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 </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords 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 </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\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 <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\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 <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\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.kind === 'dataset' && metadata.lineage) ||\n resourceContact ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.lineage\"\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div\n class=\"flex flex-row gap-6 mt-5 mb-8 resource-contact\"\n *ngIf=\"resourceContact\"\n data-test=\"details-panel-resource-contact\"\n >\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 <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\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\n *ngIf=\"metadata.resourceCreated\"\n data-test=\"details-panel-resource-created\"\n >\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p\n class=\"text-primary font-medium mt-1 resource-created\"\n [gnUiHumanizeDate]=\"metadata.resourceCreated\"\n ></p>\n </div>\n <div\n *ngIf=\"metadata.resourcePublished\"\n data-test=\"details-panel-resource-published\"\n >\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p\n class=\"text-primary font-medium mt-1 resource-published\"\n [gnUiHumanizeDate]=\"metadata.resourcePublished\"\n ></p>\n </div>\n <div\n *ngIf=\"metadata.resourceUpdated\"\n data-test=\"details-panel-resource-updated\"\n >\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p\n class=\"text-primary font-medium mt-1 resource-updated\"\n [gnUiHumanizeDate]=\"metadata.resourceUpdated\"\n ></p>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.updateFrequency\"\n data-test=\"details-panel-update-frequency\"\n >\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\n *ngIf=\"metadata.otherLanguages?.length\"\n data-test=\"details-panel-other-languages\"\n >\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 other-languages\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && temporalExtent\"\n data-test=\"details-panel-temporal-extent\"\n >\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\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=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\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\n class=\"text-primary font-medium\"\n [gnUiHumanizeDate]=\"metadata.recordUpdated\"\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 [clickable]=\"false\"\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 ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { 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: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "directive", type: GnUiHumanizeDateDirective, selector: "[gnUiHumanizeDate]", inputs: ["gnUiHumanizeDate"] }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
|
|
34113
34327
|
provideIcons({
|
|
34114
34328
|
matOpenInNew,
|
|
34115
34329
|
matMailOutline: matMailOutline$1,
|
|
@@ -34131,13 +34345,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
34131
34345
|
CopyTextButtonComponent,
|
|
34132
34346
|
NgIcon,
|
|
34133
34347
|
GnUiLinkifyDirective,
|
|
34348
|
+
GnUiHumanizeDateDirective,
|
|
34134
34349
|
SpatialExtentComponent,
|
|
34135
34350
|
], viewProviders: [
|
|
34136
34351
|
provideIcons({
|
|
34137
34352
|
matOpenInNew,
|
|
34138
34353
|
matMailOutline: matMailOutline$1,
|
|
34139
34354
|
}),
|
|
34140
|
-
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\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 </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords 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 </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\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 <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\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 <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\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.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\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 <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\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.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\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.otherLanguages?.length\">\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.otherLanguages\"\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=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\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 && formatDateTime(metadata.recordUpdated) }}\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 [clickable]=\"false\"\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 ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
|
|
34355
|
+
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines\n [maxLines]=\"6\"\n *ngIf=\"metadata.abstract\"\n data-test=\"metadata-info-abstract\"\n >\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 </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <gn-ui-max-lines [maxLines]=\"7\" *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords 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 </gn-ui-max-lines>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\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 <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\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 <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\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.kind === 'dataset' && metadata.lineage) ||\n resourceContact ||\n metadata.resourceCreated ||\n metadata.resourcePublished ||\n metadata.resourceUpdated ||\n (metadata.kind === 'dataset' && metadata.updateFrequency) ||\n metadata.otherLanguages?.length ||\n (metadata.kind === 'dataset' && temporalExtent)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.lineage\"\n class=\"text-gray-900 flex flex-col mt-4 gap-2\"\n data-test=\"details-panel-lineage\"\n >\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div\n class=\"flex flex-row gap-6 mt-5 mb-8 resource-contact\"\n *ngIf=\"resourceContact\"\n data-test=\"details-panel-resource-contact\"\n >\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 <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\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\n *ngIf=\"metadata.resourceCreated\"\n data-test=\"details-panel-resource-created\"\n >\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p\n class=\"text-primary font-medium mt-1 resource-created\"\n [gnUiHumanizeDate]=\"metadata.resourceCreated\"\n ></p>\n </div>\n <div\n *ngIf=\"metadata.resourcePublished\"\n data-test=\"details-panel-resource-published\"\n >\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p\n class=\"text-primary font-medium mt-1 resource-published\"\n [gnUiHumanizeDate]=\"metadata.resourcePublished\"\n ></p>\n </div>\n <div\n *ngIf=\"metadata.resourceUpdated\"\n data-test=\"details-panel-resource-updated\"\n >\n <p class=\"text-sm\" translate>record.metadata.update</p>\n <p\n class=\"text-primary font-medium mt-1 resource-updated\"\n [gnUiHumanizeDate]=\"metadata.resourceUpdated\"\n ></p>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && metadata.updateFrequency\"\n data-test=\"details-panel-update-frequency\"\n >\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\n *ngIf=\"metadata.otherLanguages?.length\"\n data-test=\"details-panel-other-languages\"\n >\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 other-languages\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div\n *ngIf=\"metadata.kind === 'dataset' && temporalExtent\"\n data-test=\"details-panel-temporal-extent\"\n >\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div\n class=\"flex flex-row gap-1 mb-1 text-primary font-medium temporal-extent\"\n >\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=\"\n metadata.kind !== 'dataset' &&\n metadata.spatialExtents &&\n metadata.spatialExtents.length\n \"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\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\n class=\"text-primary font-medium\"\n [gnUiHumanizeDate]=\"metadata.recordUpdated\"\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 [clickable]=\"false\"\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 ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
|
|
34141
34356
|
}], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
|
|
34142
34357
|
type: Input
|
|
34143
34358
|
}], incomplete: [{
|
|
@@ -34435,7 +34650,7 @@ class RecordApiFormComponent {
|
|
|
34435
34650
|
}
|
|
34436
34651
|
}
|
|
34437
34652
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34438
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordApiFormComponent, isStandalone: true, 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 placeholder=\"\"\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 placeholder=\"\"\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 ng-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover ng-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$
|
|
34653
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordApiFormComponent, isStandalone: true, 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 placeholder=\"\"\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 placeholder=\"\"\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 ng-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover ng-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34439
34654
|
}
|
|
34440
34655
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
34441
34656
|
type: Component,
|
|
@@ -34451,59 +34666,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
34451
34666
|
type: Input
|
|
34452
34667
|
}] } });
|
|
34453
34668
|
|
|
34454
|
-
class TimeSincePipe {
|
|
34455
|
-
constructor(translate) {
|
|
34456
|
-
this.translate = translate;
|
|
34457
|
-
}
|
|
34458
|
-
transform(value) {
|
|
34459
|
-
if (isNaN(value.getTime())) {
|
|
34460
|
-
throw new Error('Invalid Date');
|
|
34461
|
-
}
|
|
34462
|
-
const maintenant = new Date();
|
|
34463
|
-
let locale;
|
|
34464
|
-
switch (this.translate.currentLang) {
|
|
34465
|
-
case 'fr':
|
|
34466
|
-
locale = fr$1;
|
|
34467
|
-
break;
|
|
34468
|
-
case 'de':
|
|
34469
|
-
locale = de$1;
|
|
34470
|
-
break;
|
|
34471
|
-
case 'es':
|
|
34472
|
-
locale = es$1;
|
|
34473
|
-
break;
|
|
34474
|
-
case 'it':
|
|
34475
|
-
locale = it$1;
|
|
34476
|
-
break;
|
|
34477
|
-
case 'nl':
|
|
34478
|
-
locale = nl$1;
|
|
34479
|
-
break;
|
|
34480
|
-
case 'pt':
|
|
34481
|
-
locale = pt$1;
|
|
34482
|
-
break;
|
|
34483
|
-
case 'sk':
|
|
34484
|
-
locale = sk$1;
|
|
34485
|
-
break;
|
|
34486
|
-
case 'en':
|
|
34487
|
-
default:
|
|
34488
|
-
locale = enUS;
|
|
34489
|
-
break;
|
|
34490
|
-
}
|
|
34491
|
-
return formatDistance(value, maintenant, {
|
|
34492
|
-
addSuffix: true,
|
|
34493
|
-
locale: locale,
|
|
34494
|
-
});
|
|
34495
|
-
}
|
|
34496
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimeSincePipe, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
34497
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: TimeSincePipe, isStandalone: true, name: "timeSince" }); }
|
|
34498
|
-
}
|
|
34499
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TimeSincePipe, decorators: [{
|
|
34500
|
-
type: Pipe,
|
|
34501
|
-
args: [{
|
|
34502
|
-
name: 'timeSince',
|
|
34503
|
-
standalone: true,
|
|
34504
|
-
}]
|
|
34505
|
-
}], ctorParameters: () => [{ type: i1$1.TranslateService }] });
|
|
34506
|
-
|
|
34507
34669
|
class UserFeedbackItemComponent {
|
|
34508
34670
|
constructor() {
|
|
34509
34671
|
this.newUserFeedbackAnswer = new EventEmitter();
|
|
@@ -34536,7 +34698,7 @@ class UserFeedbackItemComponent {
|
|
|
34536
34698
|
this.onNewAnswerValueChange();
|
|
34537
34699
|
}
|
|
34538
34700
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserFeedbackItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34539
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserFeedbackItemComponent, isStandalone: true, selector: "gn-ui-user-feedback-item", inputs: { userFeedbackParent: "userFeedbackParent", userFeedBacksAnswers: "userFeedBacksAnswers", activeUser: "activeUser", isLastComment: "isLastComment", isAddUserFeedbackLoading: "isAddUserFeedbackLoading" }, outputs: { newUserFeedbackAnswer: "newUserFeedbackAnswer" }, ngImport: i0, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span
|
|
34701
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserFeedbackItemComponent, isStandalone: true, selector: "gn-ui-user-feedback-item", inputs: { userFeedbackParent: "userFeedbackParent", userFeedBacksAnswers: "userFeedBacksAnswers", activeUser: "activeUser", isLastComment: "isLastComment", isAddUserFeedbackLoading: "isAddUserFeedbackLoading" }, outputs: { newUserFeedbackAnswer: "newUserFeedbackAnswer" }, ngImport: i0, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span [gnUiHumanizeDate]=\"userFeedbackParent.date\"></span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"activeUser\" class=\"mt-2 flex flex-col\">\n <hr class=\"-mx-4 my-4\" />\n <div\n id=\"new-comment-buttons\"\n class=\"flex flex-row gap-2 items-center justify-end\"\n >\n <gn-ui-text-area\n [disabled]=\"isAddUserFeedbackLoading\"\n [(value)]=\"newAnswer\"\n (valueChange)=\"onNewAnswerValueChange()\"\n (keyup.control.enter)=\"publishNewAnswer()\"\n [placeholder]=\"\n 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate\n \"\n class=\"grow\"\n extraClass=\"bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9\"\n ></gn-ui-text-area>\n <div *ngIf=\"!isAnswerEmpty\" class=\"flex flex-row justify-end\">\n <gn-ui-button\n [disabled]=\"isAddUserFeedbackLoading\"\n [type]=\"'outline'\"\n (buttonClick)=\"publishNewAnswer()\"\n [title]=\"\n 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate\n \"\n extraClass=\"!p-[0.5em] text-primary-darker border-primary-darker h-9\"\n >\n <ng-icon *ngIf=\"!isAddUserFeedbackLoading\" name=\"matSendOutline\">\n </ng-icon>\n <ng-container *ngIf=\"isAddUserFeedbackLoading\">\n <div class=\"flex justify-center w-full\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: ["userFeedbackParent", "userFeedBacksAnswers", "activeUser", "isLastComment", "isAddUserFeedbackLoading"], outputs: ["newUserFeedbackAnswer"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "directive", type: GnUiHumanizeDateDirective, selector: "[gnUiHumanizeDate]", inputs: ["gnUiHumanizeDate"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
|
|
34540
34702
|
provideIcons({
|
|
34541
34703
|
matSendOutline,
|
|
34542
34704
|
}),
|
|
@@ -34546,17 +34708,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
34546
34708
|
type: Component,
|
|
34547
34709
|
args: [{ selector: 'gn-ui-user-feedback-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
34548
34710
|
CommonModule,
|
|
34549
|
-
TimeSincePipe,
|
|
34550
34711
|
TextAreaComponent,
|
|
34551
34712
|
TranslatePipe,
|
|
34552
34713
|
ButtonComponent,
|
|
34553
34714
|
SpinningLoaderComponent,
|
|
34715
|
+
GnUiHumanizeDateDirective,
|
|
34554
34716
|
NgIcon,
|
|
34555
34717
|
], viewProviders: [
|
|
34556
34718
|
provideIcons({
|
|
34557
34719
|
matSendOutline,
|
|
34558
34720
|
}),
|
|
34559
|
-
], template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span
|
|
34721
|
+
], template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span [gnUiHumanizeDate]=\"userFeedbackParent.date\"></span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"activeUser\" class=\"mt-2 flex flex-col\">\n <hr class=\"-mx-4 my-4\" />\n <div\n id=\"new-comment-buttons\"\n class=\"flex flex-row gap-2 items-center justify-end\"\n >\n <gn-ui-text-area\n [disabled]=\"isAddUserFeedbackLoading\"\n [(value)]=\"newAnswer\"\n (valueChange)=\"onNewAnswerValueChange()\"\n (keyup.control.enter)=\"publishNewAnswer()\"\n [placeholder]=\"\n 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate\n \"\n class=\"grow\"\n extraClass=\"bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9\"\n ></gn-ui-text-area>\n <div *ngIf=\"!isAnswerEmpty\" class=\"flex flex-row justify-end\">\n <gn-ui-button\n [disabled]=\"isAddUserFeedbackLoading\"\n [type]=\"'outline'\"\n (buttonClick)=\"publishNewAnswer()\"\n [title]=\"\n 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate\n \"\n extraClass=\"!p-[0.5em] text-primary-darker border-primary-darker h-9\"\n >\n <ng-icon *ngIf=\"!isAddUserFeedbackLoading\" name=\"matSendOutline\">\n </ng-icon>\n <ng-container *ngIf=\"isAddUserFeedbackLoading\">\n <div class=\"flex justify-center w-full\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
34560
34722
|
}], propDecorators: { userFeedbackParent: [{
|
|
34561
34723
|
type: Input
|
|
34562
34724
|
}], userFeedBacksAnswers: [{
|
|
@@ -34576,7 +34738,7 @@ class UserPreviewComponent {
|
|
|
34576
34738
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
34577
34739
|
}
|
|
34578
34740
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34579
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserPreviewComponent, isStandalone: true, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div class=\"w-10 h-10 rounded-full capitalize\" [matTooltip]=\"userFullName\">\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$
|
|
34741
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserPreviewComponent, isStandalone: true, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div class=\"w-10 h-10 rounded-full capitalize\" [matTooltip]=\"userFullName\">\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34580
34742
|
}
|
|
34581
34743
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
34582
34744
|
type: Component,
|
|
@@ -34944,6 +35106,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
34944
35106
|
args: ['expanel', { read: ExpandablePanelComponent, static: true }]
|
|
34945
35107
|
}] } });
|
|
34946
35108
|
|
|
35109
|
+
class StacItemsResultGridComponent {
|
|
35110
|
+
constructor() {
|
|
35111
|
+
this.items = [];
|
|
35112
|
+
}
|
|
35113
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StacItemsResultGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35114
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StacItemsResultGridComponent, isStandalone: true, selector: "gn-ui-stac-items-result-grid", inputs: { items: "items" }, ngImport: i0, template: "<div class=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-[10px]\">\n <div *ngFor=\"let item of items\">\n <div\n data-cy=\"stac-item-card\"\n class=\"h-[173px] flex flex-col justify-between gap-4 bg-white rounded-lg border border-gray-300 px-5 py-3 mx-auto\"\n >\n <h2 class=\"text-xl text-black line-clamp-4 break-words\">\n {{ item.id }}\n </h2>\n <p class=\"truncate\">{{ item.properties.datetime }}</p>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
35115
|
+
}
|
|
35116
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StacItemsResultGridComponent, decorators: [{
|
|
35117
|
+
type: Component,
|
|
35118
|
+
args: [{ selector: 'gn-ui-stac-items-result-grid', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-[10px]\">\n <div *ngFor=\"let item of items\">\n <div\n data-cy=\"stac-item-card\"\n class=\"h-[173px] flex flex-col justify-between gap-4 bg-white rounded-lg border border-gray-300 px-5 py-3 mx-auto\"\n >\n <h2 class=\"text-xl text-black line-clamp-4 break-words\">\n {{ item.id }}\n </h2>\n <p class=\"truncate\">{{ item.properties.datetime }}</p>\n </div>\n </div>\n</div>\n" }]
|
|
35119
|
+
}], propDecorators: { items: [{
|
|
35120
|
+
type: Input
|
|
35121
|
+
}] } });
|
|
35122
|
+
|
|
34947
35123
|
const blockModelFixture = () => ({
|
|
34948
35124
|
key: 'tag',
|
|
34949
35125
|
items: [
|
|
@@ -35010,7 +35186,7 @@ class FacetItemComponent {
|
|
|
35010
35186
|
this.onInvertedChange(this.inverted);
|
|
35011
35187
|
}
|
|
35012
35188
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FacetItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35013
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FacetItemComponent, isStandalone: true, selector: "gn-ui-facet-item", inputs: { label: "label", count: "count", selected: "selected", inverted: "inverted" }, outputs: { selectedChange: "selectedChange", invertedChange: "invertedChange" }, ngImport: i0, template: "<div\n class=\"flex flex-row items-center group px-1 my-1 hover:bg-gray-100 rounded-sm\"\n>\n <label class=\"grow shrink truncate cursor-pointer group-hover:text-black\">\n <input\n type=\"checkbox\"\n class=\"cursor-pointer\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"onSelectedChange($event)\"\n />\n {{ label | translate }}\n <span class=\"group-hover:text-black\">({{ count }})</span>\n </label>\n <div\n *ngIf=\"!inverted\"\n class=\"shrink-0 cursor-pointer invisible group-hover:visible icon-exclude\"\n style=\"min-width: 20px\"\n (click)=\"toggleInverted()\"\n >\n <!-- minus svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </div>\n <div\n *ngIf=\"inverted\"\n class=\"shrink-0 cursor-pointer invisible group-hover:visible icon-include\"\n style=\"min-width: 20px\"\n (click)=\"toggleInverted()\"\n >\n <!-- check svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2
|
|
35189
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FacetItemComponent, isStandalone: true, selector: "gn-ui-facet-item", inputs: { label: "label", count: "count", selected: "selected", inverted: "inverted" }, outputs: { selectedChange: "selectedChange", invertedChange: "invertedChange" }, ngImport: i0, template: "<div\n class=\"flex flex-row items-center group px-1 my-1 hover:bg-gray-100 rounded-sm\"\n>\n <label class=\"grow shrink truncate cursor-pointer group-hover:text-black\">\n <input\n type=\"checkbox\"\n class=\"cursor-pointer\"\n [ngModel]=\"selected\"\n (ngModelChange)=\"onSelectedChange($event)\"\n />\n {{ label | translate }}\n <span class=\"group-hover:text-black\">({{ count }})</span>\n </label>\n <div\n *ngIf=\"!inverted\"\n class=\"shrink-0 cursor-pointer invisible group-hover:visible icon-exclude\"\n style=\"min-width: 20px\"\n (click)=\"toggleInverted()\"\n >\n <!-- minus svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </div>\n <div\n *ngIf=\"inverted\"\n class=\"shrink-0 cursor-pointer invisible group-hover:visible icon-include\"\n style=\"min-width: 20px\"\n (click)=\"toggleInverted()\"\n >\n <!-- check svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fill-rule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clip-rule=\"evenodd\"\n />\n </svg>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
35014
35190
|
}
|
|
35015
35191
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FacetItemComponent, decorators: [{
|
|
35016
35192
|
type: Component,
|
|
@@ -38244,13 +38420,24 @@ class DataService {
|
|
|
38244
38420
|
if (!featureType) {
|
|
38245
38421
|
throw new Error('wfs.featuretype.notfound');
|
|
38246
38422
|
}
|
|
38423
|
+
const wfsVersion = endpoint.getVersion();
|
|
38424
|
+
const addSrsName = wfsVersion === '1.1.0' || wfsVersion === '2.0.0';
|
|
38425
|
+
const defaultCrs = featureType.defaultCrs;
|
|
38426
|
+
const shouldAddOutputCrs = addSrsName && defaultCrs;
|
|
38247
38427
|
return {
|
|
38248
|
-
all: featureType.outputFormats.reduce((prev, curr) =>
|
|
38249
|
-
|
|
38250
|
-
|
|
38251
|
-
|
|
38252
|
-
|
|
38253
|
-
|
|
38428
|
+
all: featureType.outputFormats.reduce((prev, curr) => {
|
|
38429
|
+
const isJsonFormat = curr.toLowerCase().includes('json');
|
|
38430
|
+
return {
|
|
38431
|
+
...prev,
|
|
38432
|
+
[curr]: endpoint.getFeatureUrl(featureType.name, {
|
|
38433
|
+
outputFormat: curr,
|
|
38434
|
+
...(shouldAddOutputCrs &&
|
|
38435
|
+
!isJsonFormat && {
|
|
38436
|
+
outputCrs: defaultCrs,
|
|
38437
|
+
}),
|
|
38438
|
+
}),
|
|
38439
|
+
};
|
|
38440
|
+
}, {}),
|
|
38254
38441
|
geojson: endpoint.supportsJson(featureType.name)
|
|
38255
38442
|
? endpoint.getFeatureUrl(featureType.name, {
|
|
38256
38443
|
asJson: true,
|
|
@@ -38335,6 +38522,13 @@ class DataService {
|
|
|
38335
38522
|
throw new Error(`ogc.unreachable.unknown`);
|
|
38336
38523
|
});
|
|
38337
38524
|
}
|
|
38525
|
+
async getItemsFromStacApi(url, options) {
|
|
38526
|
+
return await StacEndpoint.getItemsFromUrl(url, options)
|
|
38527
|
+
.then((response) => response)
|
|
38528
|
+
.catch(() => {
|
|
38529
|
+
throw new Error(`ogc.unreachable.unknown`);
|
|
38530
|
+
});
|
|
38531
|
+
}
|
|
38338
38532
|
async getGeodataLinksFromTms(tmsLink, keepOriginalLink = false) {
|
|
38339
38533
|
const endpoint = new TmsEndpoint(tmsLink.url.toString().replace(/\/?$/, `/${tmsLink.name}`));
|
|
38340
38534
|
const tileMaps = await endpoint.allTileMaps.catch(() => {
|
|
@@ -39394,8 +39588,21 @@ class MdViewFacade {
|
|
|
39394
39588
|
this.sourceOf$ = this.store.pipe(select(getSourceOf));
|
|
39395
39589
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
39396
39590
|
this.allLinks$ = this.metadata$.pipe(map$1((record) => 'onlineResources' in record ? record.onlineResources : []), shareReplay$1(1));
|
|
39591
|
+
this.resourceDoi$ = this.metadata$.pipe(map$1((record) => {
|
|
39592
|
+
if (!record?.resourceIdentifiers?.length)
|
|
39593
|
+
return null;
|
|
39594
|
+
const doiIdentifier = record.resourceIdentifiers.find((id) => id.codeSpace?.toLowerCase().includes('doi.org') ||
|
|
39595
|
+
id.code.startsWith('10.'));
|
|
39596
|
+
if (!doiIdentifier)
|
|
39597
|
+
return null;
|
|
39598
|
+
return {
|
|
39599
|
+
code: doiIdentifier.code,
|
|
39600
|
+
url: doiIdentifier.url ? doiIdentifier.url : null,
|
|
39601
|
+
};
|
|
39602
|
+
}), shareReplay$1(1));
|
|
39397
39603
|
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))), shareReplay$1(1));
|
|
39398
39604
|
this.mapApiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API))), shareReplay$1(1));
|
|
39605
|
+
this.stacLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => link.type === 'service' && link.accessServiceProtocol === 'stac')), shareReplay$1(1));
|
|
39399
39606
|
this.downloadLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DOWNLOAD))));
|
|
39400
39607
|
this.dataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DATA))));
|
|
39401
39608
|
this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
|
|
@@ -39553,8 +39760,9 @@ class DataViewPermalinkComponent {
|
|
|
39553
39760
|
set viewType(value) {
|
|
39554
39761
|
this.viewType$.next(value);
|
|
39555
39762
|
}
|
|
39556
|
-
constructor(config, wcEmbedderBaseUrl, facade) {
|
|
39763
|
+
constructor(config, proxyPath, wcEmbedderBaseUrl, facade) {
|
|
39557
39764
|
this.config = config;
|
|
39765
|
+
this.proxyPath = proxyPath;
|
|
39558
39766
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
39559
39767
|
this.facade = facade;
|
|
39560
39768
|
this.viewType$ = new BehaviorSubject('map');
|
|
@@ -39587,6 +39795,9 @@ class DataViewPermalinkComponent {
|
|
|
39587
39795
|
url.searchParams.append('e', `gn-dataset-view-map`);
|
|
39588
39796
|
}
|
|
39589
39797
|
url.searchParams.append('a', `api-url=${this.config.basePath}`);
|
|
39798
|
+
if (this.proxyPath) {
|
|
39799
|
+
url.searchParams.append('a', `proxy-path=${this.proxyPath}`);
|
|
39800
|
+
}
|
|
39590
39801
|
url.searchParams.append('a', `dataset-id=${metadata.uniqueIdentifier}`);
|
|
39591
39802
|
url.searchParams.append('a', `primary-color=#0f4395`);
|
|
39592
39803
|
url.searchParams.append('a', `secondary-color=#8bc832`);
|
|
@@ -39595,7 +39806,7 @@ class DataViewPermalinkComponent {
|
|
|
39595
39806
|
return url.toString();
|
|
39596
39807
|
}));
|
|
39597
39808
|
}
|
|
39598
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39809
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, deps: [{ token: Configuration }, { token: PROXY_PATH, optional: true }, { token: WEB_COMPONENT_EMBEDDER_URL, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39599
39810
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewPermalinkComponent, isStandalone: true, selector: "gn-ui-data-view-permalink", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n *ngIf=\"wcEmbedderBaseUrl\"\n [text]=\"permalinkUrl$ | async\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39600
39811
|
}
|
|
39601
39812
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewPermalinkComponent, decorators: [{
|
|
@@ -39606,6 +39817,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39606
39817
|
args: [Configuration]
|
|
39607
39818
|
}] }, { type: undefined, decorators: [{
|
|
39608
39819
|
type: Optional
|
|
39820
|
+
}, {
|
|
39821
|
+
type: Inject,
|
|
39822
|
+
args: [PROXY_PATH]
|
|
39823
|
+
}] }, { type: undefined, decorators: [{
|
|
39824
|
+
type: Optional
|
|
39609
39825
|
}, {
|
|
39610
39826
|
type: Inject,
|
|
39611
39827
|
args: [WEB_COMPONENT_EMBEDDER_URL]
|
|
@@ -39714,8 +39930,9 @@ class DataViewWebComponentComponent {
|
|
|
39714
39930
|
set viewType(value) {
|
|
39715
39931
|
this.viewType$.next(value);
|
|
39716
39932
|
}
|
|
39717
|
-
constructor(config, facade) {
|
|
39933
|
+
constructor(config, proxyPath, facade) {
|
|
39718
39934
|
this.config = config;
|
|
39935
|
+
this.proxyPath = proxyPath;
|
|
39719
39936
|
this.facade = facade;
|
|
39720
39937
|
this.viewType$ = new BehaviorSubject('map');
|
|
39721
39938
|
this.webComponentHtml$ = combineLatest(this.viewType$, this.facade.chartConfig$, this.facade.metadata$).pipe(map$2(([viewType, config, metadata]) => {
|
|
@@ -39724,7 +39941,10 @@ class DataViewWebComponentComponent {
|
|
|
39724
39941
|
const { aggregation, xProperty, yProperty, chartType } = config;
|
|
39725
39942
|
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
39726
39943
|
<gn-dataset-view-chart
|
|
39727
|
-
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
39944
|
+
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"${this.proxyPath
|
|
39945
|
+
? `
|
|
39946
|
+
proxy-path="${this.proxyPath}"`
|
|
39947
|
+
: ''}
|
|
39728
39948
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
39729
39949
|
aggregation="${aggregation}"
|
|
39730
39950
|
x-property="${xProperty}"
|
|
@@ -39743,7 +39963,10 @@ class DataViewWebComponentComponent {
|
|
|
39743
39963
|
else if (viewType === 'table') {
|
|
39744
39964
|
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
39745
39965
|
<gn-dataset-view-table
|
|
39746
|
-
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
39966
|
+
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"${this.proxyPath
|
|
39967
|
+
? `
|
|
39968
|
+
proxy-path="${this.proxyPath}"`
|
|
39969
|
+
: ''}
|
|
39747
39970
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
39748
39971
|
primary-color="#0f4395"
|
|
39749
39972
|
secondary-color="#8bc832"
|
|
@@ -39756,7 +39979,10 @@ class DataViewWebComponentComponent {
|
|
|
39756
39979
|
else {
|
|
39757
39980
|
return `<script src="https://cdn.jsdelivr.net/gh/geonetwork/geonetwork-ui@wc-dist-${GEONETWORK_UI_TAG_NAME}/gn-wc.js"></script>
|
|
39758
39981
|
<gn-dataset-view-map
|
|
39759
|
-
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"
|
|
39982
|
+
api-url="${new URL(this.config.basePath, window.location.origin).toString()}"${this.proxyPath
|
|
39983
|
+
? `
|
|
39984
|
+
proxy-path="${this.proxyPath}"`
|
|
39985
|
+
: ''}
|
|
39760
39986
|
dataset-id="${metadata.uniqueIdentifier}"
|
|
39761
39987
|
primary-color="#0f4395"
|
|
39762
39988
|
secondary-color="#8bc832"
|
|
@@ -39768,7 +39994,7 @@ class DataViewWebComponentComponent {
|
|
|
39768
39994
|
}
|
|
39769
39995
|
}));
|
|
39770
39996
|
}
|
|
39771
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39997
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, deps: [{ token: Configuration }, { token: PROXY_PATH, optional: true }, { token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39772
39998
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewWebComponentComponent, isStandalone: true, selector: "gn-ui-data-view-web-component", inputs: { viewType: "viewType" }, ngImport: i0, template: "<gn-ui-copy-text-button\n [text]=\"webComponentHtml$ | async\"\n [rows]=\"3\"\n [tooltipText]=\"'tooltip.html.copy' | translate\"\n></gn-ui-copy-text-button>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39773
39999
|
}
|
|
39774
40000
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewWebComponentComponent, decorators: [{
|
|
@@ -39777,6 +40003,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39777
40003
|
}], ctorParameters: () => [{ type: Configuration, decorators: [{
|
|
39778
40004
|
type: Inject,
|
|
39779
40005
|
args: [Configuration]
|
|
40006
|
+
}] }, { type: undefined, decorators: [{
|
|
40007
|
+
type: Optional
|
|
40008
|
+
}, {
|
|
40009
|
+
type: Inject,
|
|
40010
|
+
args: [PROXY_PATH]
|
|
39780
40011
|
}] }, { type: MdViewFacade }], propDecorators: { viewType: [{
|
|
39781
40012
|
type: Input
|
|
39782
40013
|
}] } });
|
|
@@ -40456,6 +40687,126 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
40456
40687
|
type: Input
|
|
40457
40688
|
}] } });
|
|
40458
40689
|
|
|
40690
|
+
const STAC_ITEMS_PER_PAGE = 12;
|
|
40691
|
+
const DEBOUNCE_TIME_MS = 500;
|
|
40692
|
+
class StacViewComponent {
|
|
40693
|
+
constructor(dataService, metadataViewFacade, translateService) {
|
|
40694
|
+
this.dataService = dataService;
|
|
40695
|
+
this.metadataViewFacade = metadataViewFacade;
|
|
40696
|
+
this.translateService = translateService;
|
|
40697
|
+
this.isFilterModified = false;
|
|
40698
|
+
this.error = null;
|
|
40699
|
+
this.initialTemporalExtent = null;
|
|
40700
|
+
this.currentTemporalExtent$ = new BehaviorSubject(null);
|
|
40701
|
+
this.currentPageUrl$ = new BehaviorSubject(null);
|
|
40702
|
+
this.items$ = combineLatest([
|
|
40703
|
+
this.currentPageUrl$,
|
|
40704
|
+
this.currentTemporalExtent$,
|
|
40705
|
+
]).pipe(debounceTime$1(DEBOUNCE_TIME_MS), switchMap(([currentPageUrl, temporalExtent]) => {
|
|
40706
|
+
this.error = null;
|
|
40707
|
+
const options = {
|
|
40708
|
+
limit: STAC_ITEMS_PER_PAGE,
|
|
40709
|
+
};
|
|
40710
|
+
if (temporalExtent && (temporalExtent.start || temporalExtent.end)) {
|
|
40711
|
+
options.datetime = {
|
|
40712
|
+
...(temporalExtent.start && { start: temporalExtent.start }),
|
|
40713
|
+
...(temporalExtent.end && { end: temporalExtent.end }),
|
|
40714
|
+
};
|
|
40715
|
+
}
|
|
40716
|
+
return from(this.dataService.getItemsFromStacApi(currentPageUrl, options)).pipe(tap$2((stacDocument) => {
|
|
40717
|
+
this.previousPageUrl =
|
|
40718
|
+
stacDocument.links.find((link) => link.rel === 'previous')?.href ||
|
|
40719
|
+
null;
|
|
40720
|
+
this.nextPageUrl =
|
|
40721
|
+
stacDocument.links.find((link) => link.rel === 'next')?.href || null;
|
|
40722
|
+
}), map$2((stacDocument) => stacDocument.features), catchError$1((err) => {
|
|
40723
|
+
this.handleError(err);
|
|
40724
|
+
return of([]);
|
|
40725
|
+
}));
|
|
40726
|
+
}));
|
|
40727
|
+
}
|
|
40728
|
+
ngOnInit() {
|
|
40729
|
+
this.metadataViewFacade.metadata$
|
|
40730
|
+
.pipe(take$1(1), map$2((metadata) => {
|
|
40731
|
+
const temporalExtents = metadata?.kind === 'dataset'
|
|
40732
|
+
? metadata.temporalExtents
|
|
40733
|
+
: [];
|
|
40734
|
+
return temporalExtents.length > 0
|
|
40735
|
+
? temporalExtents[0]
|
|
40736
|
+
: {
|
|
40737
|
+
start: null,
|
|
40738
|
+
end: null,
|
|
40739
|
+
};
|
|
40740
|
+
}))
|
|
40741
|
+
.subscribe((extent) => {
|
|
40742
|
+
this.initialTemporalExtent = extent;
|
|
40743
|
+
this.currentTemporalExtent$.next(extent);
|
|
40744
|
+
});
|
|
40745
|
+
this.metadataViewFacade.stacLinks$
|
|
40746
|
+
.pipe(take$1(1), map$2((links) => (links && links.length > 0 ? links[0] : null)))
|
|
40747
|
+
.subscribe((link) => {
|
|
40748
|
+
if (link) {
|
|
40749
|
+
this.initialPageUrl = link.url.href;
|
|
40750
|
+
this.currentPageUrl$.next(link.url.href);
|
|
40751
|
+
}
|
|
40752
|
+
});
|
|
40753
|
+
}
|
|
40754
|
+
onTemporalExtentChange(extent) {
|
|
40755
|
+
this.currentTemporalExtent$.next(extent);
|
|
40756
|
+
// make sure to use url without pagination token when temporal filter changes
|
|
40757
|
+
this.currentPageUrl$.next(this.initialPageUrl);
|
|
40758
|
+
this.isFilterModified = true;
|
|
40759
|
+
}
|
|
40760
|
+
onResetFilters() {
|
|
40761
|
+
this.currentTemporalExtent$.next(this.initialTemporalExtent);
|
|
40762
|
+
this.isFilterModified = false;
|
|
40763
|
+
}
|
|
40764
|
+
handleError(error) {
|
|
40765
|
+
if (error instanceof FetchError) {
|
|
40766
|
+
this.error = this.translateService.instant(`dataset.error.${error.type}`, {
|
|
40767
|
+
info: error.info,
|
|
40768
|
+
});
|
|
40769
|
+
console.warn(error.message);
|
|
40770
|
+
}
|
|
40771
|
+
else if (error instanceof Error) {
|
|
40772
|
+
this.error = this.translateService.instant(error.message);
|
|
40773
|
+
console.warn(error.stack || error);
|
|
40774
|
+
}
|
|
40775
|
+
else {
|
|
40776
|
+
this.error = this.translateService.instant(error);
|
|
40777
|
+
console.warn(error);
|
|
40778
|
+
}
|
|
40779
|
+
}
|
|
40780
|
+
// Paginable API
|
|
40781
|
+
get isFirstPage() {
|
|
40782
|
+
return this.previousPageUrl == null;
|
|
40783
|
+
}
|
|
40784
|
+
get isLastPage() {
|
|
40785
|
+
return this.nextPageUrl == null;
|
|
40786
|
+
}
|
|
40787
|
+
goToNextPage() {
|
|
40788
|
+
this.currentPageUrl$.next(this.nextPageUrl);
|
|
40789
|
+
}
|
|
40790
|
+
goToPrevPage() {
|
|
40791
|
+
this.currentPageUrl$.next(this.previousPageUrl);
|
|
40792
|
+
}
|
|
40793
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StacViewComponent, deps: [{ token: DataService }, { token: MdViewFacade }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40794
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StacViewComponent, isStandalone: true, selector: "gn-ui-stac-view", ngImport: i0, template: "<div class=\"mt-6 bg-white border border-gray-300 overflow-hidden rounded-lg\">\n <div\n class=\"w-full min-h-[366px] flex md:flex-row flex-col border-b border-gray-300\"\n >\n <div class=\"md:w-1/2 w-full flex-1 flex flex-col\">\n <gn-ui-date-range-inputs\n [temporalExtent]=\"currentTemporalExtent$ | async\"\n (temporalExtentChange)=\"onTemporalExtentChange($event)\"\n ></gn-ui-date-range-inputs>\n\n <div class=\"mt-auto mb-8 mx-8\" *ngIf=\"isFilterModified\">\n <gn-ui-button\n id=\"reset-filters-button\"\n type=\"light\"\n (buttonClick)=\"onResetFilters()\"\n >\n <span translate>stac.filter.reset</span>\n <ng-icon name=\"matDeleteOutline\" class=\"ml-2\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n\n <div class=\"md:w-1/2 w-full min-h-[280px] flex items-center justify-center\">\n <span>Map...</span>\n </div>\n </div>\n <div\n class=\"relative mx-5 my-[30px] min-h-[274px] flex items-center justify-center flex-col\"\n >\n <!-- Keep grid outside ngIf to keep items$ observable alive -->\n <gn-ui-stac-items-result-grid\n [items]=\"items$ | async\"\n ></gn-ui-stac-items-result-grid>\n <div\n *ngIf=\"(items$ | async)?.length > 0; else noResultsOrError\"\n class=\"mt-[20px] mx-auto flex justify-center\"\n >\n <gn-ui-previous-next-buttons\n [listComponent]=\"this\"\n [displayLabels]=\"true\"\n ></gn-ui-previous-next-buttons>\n </div>\n <ng-template #noResultsOrError>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute left-0 top-0 w-full block\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n <div\n *ngIf=\"!error\"\n class=\"flex items-center justify-center flex-col h-full gap-[10px]\"\n >\n <h2 class=\"text-center text-xl\" translate>stac.results.noResults</h2>\n <gn-ui-button\n id=\"no-results-button\"\n type=\"secondary\"\n (buttonClick)=\"onResetFilters()\"\n >\n <span translate>stac.filter.reset</span>\n <ng-icon name=\"matDeleteOutline\" class=\"ml-2\"></ng-icon>\n </gn-ui-button>\n </div>\n </ng-template>\n </div>\n</div>\n", styles: [":host{--gn-ui-button-padding: 7px 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: StacItemsResultGridComponent, selector: "gn-ui-stac-items-result-grid", inputs: ["items"] }, { kind: "component", type: DateRangeInputsComponent, selector: "gn-ui-date-range-inputs", inputs: ["temporalExtent"], outputs: ["temporalExtentChange"] }, { kind: "component", type: PreviousNextButtonsComponent, selector: "gn-ui-previous-next-buttons", inputs: ["listComponent", "displayLabels"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], viewProviders: [provideIcons({ matDeleteOutline })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40795
|
+
}
|
|
40796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StacViewComponent, decorators: [{
|
|
40797
|
+
type: Component,
|
|
40798
|
+
args: [{ selector: 'gn-ui-stac-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
40799
|
+
CommonModule,
|
|
40800
|
+
NgIconComponent,
|
|
40801
|
+
TranslateDirective,
|
|
40802
|
+
StacItemsResultGridComponent,
|
|
40803
|
+
DateRangeInputsComponent,
|
|
40804
|
+
PreviousNextButtonsComponent,
|
|
40805
|
+
PopupAlertComponent,
|
|
40806
|
+
ButtonComponent,
|
|
40807
|
+
], viewProviders: [provideIcons({ matDeleteOutline })], template: "<div class=\"mt-6 bg-white border border-gray-300 overflow-hidden rounded-lg\">\n <div\n class=\"w-full min-h-[366px] flex md:flex-row flex-col border-b border-gray-300\"\n >\n <div class=\"md:w-1/2 w-full flex-1 flex flex-col\">\n <gn-ui-date-range-inputs\n [temporalExtent]=\"currentTemporalExtent$ | async\"\n (temporalExtentChange)=\"onTemporalExtentChange($event)\"\n ></gn-ui-date-range-inputs>\n\n <div class=\"mt-auto mb-8 mx-8\" *ngIf=\"isFilterModified\">\n <gn-ui-button\n id=\"reset-filters-button\"\n type=\"light\"\n (buttonClick)=\"onResetFilters()\"\n >\n <span translate>stac.filter.reset</span>\n <ng-icon name=\"matDeleteOutline\" class=\"ml-2\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n\n <div class=\"md:w-1/2 w-full min-h-[280px] flex items-center justify-center\">\n <span>Map...</span>\n </div>\n </div>\n <div\n class=\"relative mx-5 my-[30px] min-h-[274px] flex items-center justify-center flex-col\"\n >\n <!-- Keep grid outside ngIf to keep items$ observable alive -->\n <gn-ui-stac-items-result-grid\n [items]=\"items$ | async\"\n ></gn-ui-stac-items-result-grid>\n <div\n *ngIf=\"(items$ | async)?.length > 0; else noResultsOrError\"\n class=\"mt-[20px] mx-auto flex justify-center\"\n >\n <gn-ui-previous-next-buttons\n [listComponent]=\"this\"\n [displayLabels]=\"true\"\n ></gn-ui-previous-next-buttons>\n </div>\n <ng-template #noResultsOrError>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute left-0 top-0 w-full block\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n <div\n *ngIf=\"!error\"\n class=\"flex items-center justify-center flex-col h-full gap-[10px]\"\n >\n <h2 class=\"text-center text-xl\" translate>stac.results.noResults</h2>\n <gn-ui-button\n id=\"no-results-button\"\n type=\"secondary\"\n (buttonClick)=\"onResetFilters()\"\n >\n <span translate>stac.filter.reset</span>\n <ng-icon name=\"matDeleteOutline\" class=\"ml-2\"></ng-icon>\n </gn-ui-button>\n </div>\n </ng-template>\n </div>\n</div>\n", styles: [":host{--gn-ui-button-padding: 7px 8px}\n"] }]
|
|
40808
|
+
}], ctorParameters: () => [{ type: DataService }, { type: MdViewFacade }, { type: i1$1.TranslateService }] });
|
|
40809
|
+
|
|
40459
40810
|
// expects the replacement key ${name}
|
|
40460
40811
|
const ORGANIZATION_PAGE_URL_TOKEN = new InjectionToken('organization-page-url-token');
|
|
40461
40812
|
// expects the replacement key ${name}
|
|
@@ -40897,7 +41248,7 @@ const RECORD_RESOURCE_CREATED_FIELD = {
|
|
|
40897
41248
|
gridColumnSpan: 1,
|
|
40898
41249
|
};
|
|
40899
41250
|
const RESOURCE_IDENTIFIER_FIELD = {
|
|
40900
|
-
model: '
|
|
41251
|
+
model: 'resourceIdentifiers',
|
|
40901
41252
|
formFieldConfig: {
|
|
40902
41253
|
labelKey: marker('editor.record.form.field.resourceIdentifier'),
|
|
40903
41254
|
},
|
|
@@ -41876,7 +42227,7 @@ class FormFieldSimpleComponent {
|
|
|
41876
42227
|
this.valueChange = new EventEmitter();
|
|
41877
42228
|
}
|
|
41878
42229
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41879
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldSimpleComponent, isStandalone: true, selector: "gn-ui-form-field-simple", inputs: { type: "type", readonly: "readonly", invalid: "invalid", placeholder: "placeholder", value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<input\n [type]=\"type\"\n [readonly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"value\"\n (ngModelChange)=\"valueChange.emit($event)\"\n class=\"gn-ui-text-input\"\n/>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2
|
|
42230
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldSimpleComponent, isStandalone: true, selector: "gn-ui-form-field-simple", inputs: { type: "type", readonly: "readonly", invalid: "invalid", placeholder: "placeholder", value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<input\n [type]=\"type\"\n [readonly]=\"readonly\"\n [placeholder]=\"placeholder\"\n [ngModel]=\"value\"\n (ngModelChange)=\"valueChange.emit($event)\"\n class=\"gn-ui-text-input\"\n/>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41880
42231
|
}
|
|
41881
42232
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldSimpleComponent, decorators: [{
|
|
41882
42233
|
type: Component,
|
|
@@ -41902,7 +42253,7 @@ class FormFieldFileComponent {
|
|
|
41902
42253
|
this.placeholder = '';
|
|
41903
42254
|
}
|
|
41904
42255
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41905
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldFileComponent, isStandalone: true, selector: "gn-ui-form-field-file", inputs: { control: "control", readonly: "readonly", invalid: "invalid", placeholder: "placeholder" }, ngImport: i0, template: "<input\n type=\"file\"\n [readonly]=\"readonly\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n class=\"border rounded-md p-3 w-full bg-white transition-colors\"\n [ngClass]=\"{\n 'border-pink-500': invalid,\n 'border-gray-200': !invalid,\n 'text-gray-600': readonly,\n }\"\n/>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2
|
|
42256
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldFileComponent, isStandalone: true, selector: "gn-ui-form-field-file", inputs: { control: "control", readonly: "readonly", invalid: "invalid", placeholder: "placeholder" }, ngImport: i0, template: "<input\n type=\"file\"\n [readonly]=\"readonly\"\n [formControl]=\"control\"\n [placeholder]=\"placeholder\"\n class=\"border rounded-md p-3 w-full bg-white transition-colors\"\n [ngClass]=\"{\n 'border-pink-500': invalid,\n 'border-gray-200': !invalid,\n 'text-gray-600': readonly,\n }\"\n/>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41906
42257
|
}
|
|
41907
42258
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldFileComponent, decorators: [{
|
|
41908
42259
|
type: Component,
|
|
@@ -42633,7 +42984,7 @@ class OnlineServiceResourceInputComponent {
|
|
|
42633
42984
|
provideNgIconsConfig({
|
|
42634
42985
|
size: '1.5em',
|
|
42635
42986
|
}),
|
|
42636
|
-
], ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"_service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"_service.url?.toString()\"\n [showValidateButton]=\"activeLayerSuggestion\"\n [resetUrlOnChange]=\"resetUrlOnChange\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirRefresh\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"_service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (_service.url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submit()\"\n [disabled]=\"disabled || !_service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (_service.url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2
|
|
42987
|
+
], ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"_service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"_service.url?.toString()\"\n [showValidateButton]=\"activeLayerSuggestion\"\n [resetUrlOnChange]=\"resetUrlOnChange\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirRefresh\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"_service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (_service.url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submit()\"\n [disabled]=\"disabled || !_service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (_service.url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i4$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "directive", type: TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
42637
42988
|
}
|
|
42638
42989
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OnlineServiceResourceInputComponent, decorators: [{
|
|
42639
42990
|
type: Component,
|
|
@@ -43411,8 +43762,28 @@ class FormFieldComponent {
|
|
|
43411
43762
|
get valueAsOnlineResources() {
|
|
43412
43763
|
return this.value;
|
|
43413
43764
|
}
|
|
43765
|
+
get valueAsResourceIdentifierCode() {
|
|
43766
|
+
const identifiers = this.value;
|
|
43767
|
+
return identifiers?.[0]?.code || '';
|
|
43768
|
+
}
|
|
43769
|
+
handleResourceIdentifierChange(code) {
|
|
43770
|
+
const identifiers = this.value;
|
|
43771
|
+
if (!code) {
|
|
43772
|
+
this.valueChange.emit(identifiers?.slice(1) || []);
|
|
43773
|
+
return;
|
|
43774
|
+
}
|
|
43775
|
+
if (identifiers?.[0]) {
|
|
43776
|
+
this.valueChange.emit([
|
|
43777
|
+
{ ...identifiers[0], code },
|
|
43778
|
+
...identifiers.slice(1),
|
|
43779
|
+
]);
|
|
43780
|
+
}
|
|
43781
|
+
else {
|
|
43782
|
+
this.valueChange.emit([{ code }]);
|
|
43783
|
+
}
|
|
43784
|
+
}
|
|
43414
43785
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43415
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\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 *ngIf=\"config.hintKey\"\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 </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifier'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], 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: ["label", "recordLicences"], outputs: ["recordLicencesChange"] }, { kind: "component", type: FormFieldDateComponent, selector: "gn-ui-form-field-date", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "readonly", "invalid", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "component", type: FormFieldSpatialToggleComponent, selector: "gn-ui-form-field-spatial-toggle" }, { kind: "component", type: FormFieldTopicsComponent, selector: "gn-ui-form-field-topics", inputs: ["value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i3$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
43786
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\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 *ngIf=\"config.hintKey\"\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 </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifiers'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsResourceIdentifierCode\"\n (valueChange)=\"handleResourceIdentifierChange($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], 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: ["label", "recordLicences"], outputs: ["recordLicencesChange"] }, { kind: "component", type: FormFieldDateComponent, selector: "gn-ui-form-field-date", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "readonly", "invalid", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "component", type: FormFieldSpatialToggleComponent, selector: "gn-ui-form-field-spatial-toggle" }, { kind: "component", type: FormFieldTopicsComponent, selector: "gn-ui-form-field-topics", inputs: ["value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i3$1.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
43416
43787
|
}
|
|
43417
43788
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
43418
43789
|
type: Component,
|
|
@@ -43439,7 +43810,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43439
43810
|
FormFieldSpatialToggleComponent,
|
|
43440
43811
|
FormFieldTopicsComponent,
|
|
43441
43812
|
TextFieldModule,
|
|
43442
|
-
], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\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 *ngIf=\"config.hintKey\"\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 </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'
|
|
43813
|
+
], template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\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 *ngIf=\"config.hintKey\"\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 </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifiers'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsResourceIdentifierCode\"\n (valueChange)=\"handleResourceIdentifierChange($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'topics'\">\n <gn-ui-form-field-topics\n [value]=\"valueAsTopics\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-topics>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n" }]
|
|
43443
43814
|
}], propDecorators: { uniqueIdentifier: [{
|
|
43444
43815
|
type: Input
|
|
43445
43816
|
}], model: [{
|
|
@@ -44256,5 +44627,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
44256
44627
|
* Generated bundle index. Do not edit.
|
|
44257
44628
|
*/
|
|
44258
44629
|
|
|
44259
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DISABLE_AUTH, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetItemComponent, FacetListComponent, FacetsContainerComponent, FavoriteStarComponent, FavoritesService, FeatureCatalogListComponent, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldTopicsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OrganizationsServiceInterface, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PlatformServiceInterface, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_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_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, 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, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryBoundingBox, getGeometryFromGeoJSON, getGlobalConfig, getIsMobile, getJsonDataItemsProxy, getLayers, getLinkId, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, handleScrollOnNavigation, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, organizationsServiceFactory, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, toLang2, toLang3, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
44630
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DISABLE_AUTH, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangeInputsComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalLinkCardComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetItemComponent, FacetListComponent, FacetsContainerComponent, FavoriteStarComponent, FavoritesService, FeatureCatalogListComponent, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldTopicsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GnUiHumanizeDateDirective, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataDoiComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, MetadataQualityPanelComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OrganizationsServiceInterface, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PlatformServiceInterface, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_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_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, 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, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StacItemsResultGridComponent, StacViewComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEBUG_CONFIG, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getAllKeysValidator, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryBoundingBox, getGeometryFromGeoJSON, getGlobalConfig, getIsMobile, getJsonDataItemsProxy, getLayers, getLinkId, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getQualityValidators, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, handleScrollOnNavigation, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, organizationsServiceFactory, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideI18n, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, toLang2, toLang3, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateLanguages, updateRecordField, updateRecordLanguages, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
44260
44631
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|