geonetwork-ui 2.2.0-dev.95201f8f → 2.2.0-dev.a9d33529
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/gn4/atomic-operations.mjs +2 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +36 -2
- package/esm2022/libs/api/repository/src/lib/gn4/index.mjs +3 -1
- package/esm2022/libs/api/repository/src/lib/gn4/selection/selection.service.mjs +13 -26
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/search/search.model.mjs +1 -1
- package/esm2022/libs/feature/catalog/src/lib/my-org/my-org.service.mjs +4 -10
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +5 -4
- package/esm2022/libs/feature/editor/src/lib/record-form/record-form.component.mjs +5 -3
- package/esm2022/libs/feature/map/src/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/constant/index.mjs +2 -1
- package/esm2022/libs/feature/map/src/lib/constant/projections.mjs +2 -0
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +17 -3
- package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +93 -0
- package/esm2022/libs/feature/map/src/lib/geocoding.service.mjs +40 -0
- package/esm2022/libs/feature/map/src/lib/utils/index.mjs +1 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +60 -29
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +29 -20
- package/esm2022/libs/feature/search/src/index.mjs +2 -1
- package/esm2022/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +7 -3
- package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +129 -0
- package/esm2022/libs/feature/search/src/lib/state/effects.mjs +5 -3
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +3 -1
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/editable-label/editable-label.directive.mjs +46 -0
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +8 -3
- package/esm2022/libs/ui/layout/src/index.mjs +3 -1
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.mjs +36 -0
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +37 -0
- package/esm2022/libs/ui/search/src/index.mjs +1 -2
- package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +9 -10
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +29 -13
- package/esm2022/translations/de.json +1 -0
- package/esm2022/translations/en.json +1 -0
- package/esm2022/translations/es.json +1 -0
- package/esm2022/translations/fr.json +2 -1
- package/esm2022/translations/it.json +1 -0
- package/esm2022/translations/nl.json +1 -0
- package/esm2022/translations/pt.json +1 -0
- package/fesm2022/geonetwork-ui.mjs +543 -293
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/gn4/atomic-operations.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/index.d.ts +2 -0
- package/libs/api/repository/src/lib/gn4/index.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts +4 -5
- package/libs/api/repository/src/lib/gn4/selection/selection.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +10 -5
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/search/search.model.d.ts +1 -2
- package/libs/common/domain/src/lib/model/search/search.model.d.ts.map +1 -1
- package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts +0 -1
- package/libs/feature/catalog/src/lib/my-org/my-org.service.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +15 -2
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/map/src/index.d.ts +1 -0
- package/libs/feature/map/src/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/constant/index.d.ts +1 -0
- package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/constant/projections.d.ts.map +1 -0
- package/libs/feature/map/src/lib/feature-map.module.d.ts +13 -12
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +25 -0
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts +18 -0
- package/libs/feature/map/src/lib/geocoding.service.d.ts.map +1 -0
- package/libs/feature/map/src/lib/utils/index.d.ts +0 -2
- package/libs/feature/map/src/lib/utils/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +13 -11
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +1 -3
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/search/src/index.d.ts +1 -0
- package/libs/feature/search/src/index.d.ts.map +1 -1
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts +3 -3
- package/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts +3 -2
- package/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +1 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts +34 -0
- package/libs/feature/search/src/lib/results-table/results-table.component.d.ts.map +1 -0
- package/libs/feature/search/src/lib/state/effects.d.ts.map +1 -1
- package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- 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/editable-label/editable-label.directive.d.ts +13 -0
- package/libs/ui/inputs/src/lib/editable-label/editable-label.directive.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +2 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/ui/layout/src/index.d.ts +2 -0
- package/libs/ui/layout/src/index.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +14 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +15 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -0
- package/libs/ui/search/src/index.d.ts +0 -1
- package/libs/ui/search/src/index.d.ts.map +1 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts +15 -15
- package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +19 -7
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +4 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/atomic-operations.ts +3 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +43 -0
- package/src/libs/api/repository/src/lib/gn4/index.ts +2 -0
- package/src/libs/api/repository/src/lib/gn4/selection/selection.service.ts +14 -38
- package/src/libs/common/domain/src/lib/index.ts +2 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +12 -7
- package/src/libs/common/domain/src/lib/model/search/search.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/user/index.ts +1 -0
- package/src/libs/feature/catalog/src/lib/my-org/my-org.service.ts +4 -16
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +8 -5
- package/src/libs/feature/editor/src/lib/record-form/record-form.component.ts +2 -1
- package/src/libs/feature/map/src/index.ts +1 -0
- package/src/libs/feature/map/src/lib/constant/index.ts +1 -0
- package/src/libs/feature/map/src/lib/feature-map.module.ts +8 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.css +0 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.html +39 -0
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +99 -0
- package/src/libs/feature/map/src/lib/geocoding.service.ts +59 -0
- package/src/libs/feature/map/src/lib/utils/index.ts +0 -2
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +85 -50
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +18 -3
- package/src/libs/feature/search/src/index.ts +1 -0
- package/src/libs/feature/search/src/lib/favorites/favorite-star/favorite-star.component.ts +1 -1
- package/src/libs/feature/search/src/lib/filter-dropdown/filter-dropdown.component.ts +4 -4
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +9 -3
- package/src/libs/feature/search/src/lib/results-table/results-table.component.css +0 -0
- package/src/libs/feature/search/src/lib/results-table/results-table.component.html +135 -0
- package/src/libs/feature/search/src/lib/results-table/results-table.component.ts +165 -0
- package/src/libs/feature/search/src/lib/state/effects.ts +4 -3
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.html +4 -1
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +3 -2
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +1 -1
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +1 -0
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/checkbox/checkbox.component.html +0 -1
- package/src/libs/ui/inputs/src/lib/dropdown-multiselect/dropdown-multiselect.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/editable-label/editable-label.directive.ts +48 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -0
- package/src/libs/ui/layout/src/index.ts +2 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.css +0 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.html +1 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.ts +33 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +15 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +54 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +42 -0
- package/src/libs/ui/search/src/index.ts +0 -1
- package/src/libs/ui/search/src/lib/ui-search.module.ts +2 -3
- package/src/libs/util/shared/src/lib/links/link-utils.ts +34 -11
- package/translations/de.json +1 -0
- package/translations/en.json +1 -0
- package/translations/es.json +1 -0
- package/translations/fr.json +2 -1
- package/translations/it.json +1 -0
- package/translations/nl.json +1 -0
- package/translations/pt.json +1 -0
- package/translations/sk.json +1 -0
- package/esm2022/libs/feature/map/src/lib/utils/map-utils-wms.service.mjs +0 -55
- package/esm2022/libs/feature/map/src/lib/utils/projections.mjs +0 -2
- package/esm2022/libs/ui/search/src/lib/record-table/record-table.component.mjs +0 -145
- package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts +0 -17
- package/libs/feature/map/src/lib/utils/map-utils-wms.service.d.ts.map +0 -1
- package/libs/feature/map/src/lib/utils/projections.d.ts.map +0 -1
- package/libs/ui/search/src/lib/record-table/record-table.component.d.ts +0 -31
- package/libs/ui/search/src/lib/record-table/record-table.component.d.ts.map +0 -1
- package/src/libs/feature/map/src/lib/utils/map-utils-wms.service.ts +0 -58
- package/src/libs/ui/search/src/lib/record-table/record-table.component.css +0 -7
- package/src/libs/ui/search/src/lib/record-table/record-table.component.html +0 -215
- package/src/libs/ui/search/src/lib/record-table/record-table.component.ts +0 -149
- /package/libs/feature/map/src/lib/{utils → constant}/projections.d.ts +0 -0
- /package/src/libs/feature/map/src/lib/{utils → constant}/projections.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { parseXml, XmlDocument, XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
2
2
|
import format from 'date-fns/format';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ViewContainerRef, TemplateRef, Host, ContentChild, HostBinding, ElementRef, ViewChildren } from '@angular/core';
|
|
4
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ViewContainerRef, TemplateRef, Host, ContentChild, HostBinding, ContentChildren, ElementRef, ViewChildren } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/common/http';
|
|
6
6
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpClientXsrfModule } from '@angular/common/http';
|
|
7
7
|
import * as i1$1 from '@ngx-translate/core';
|
|
@@ -12,7 +12,7 @@ import { map as map$1, shareReplay, filter, tap as tap$1, startWith, switchMap a
|
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject,
|
|
15
|
+
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject, firstValueFrom, fromEvent, timer, from, Subscription, animationFrameScheduler, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, catchError as catchError$1, takeUntil, EMPTY, withLatestFrom as withLatestFrom$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
16
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
17
|
import * as i1$2 from '@ngrx/store';
|
|
18
18
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule } from '@ngrx/store';
|
|
@@ -32,8 +32,8 @@ import WMTS, { optionsFromCapabilities } from 'ol/source/WMTS';
|
|
|
32
32
|
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
33
33
|
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
34
34
|
import WMTSCapabilities from 'ol/format/WMTSCapabilities';
|
|
35
|
-
import { WmsEndpoint, WfsEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
36
35
|
import chroma from 'chroma-js';
|
|
36
|
+
import { WmsEndpoint, WfsEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
37
37
|
import { register, fromEPSGCode } from 'ol/proj/proj4';
|
|
38
38
|
import proj4 from 'proj4/dist/proj4';
|
|
39
39
|
import * as TOML from '@ltd/j-toml';
|
|
@@ -78,6 +78,8 @@ import * as i1$8 from '@ngrx/effects';
|
|
|
78
78
|
import { createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
79
79
|
import tippy from 'tippy.js';
|
|
80
80
|
import { valid as valid$1 } from 'geojson-validation';
|
|
81
|
+
import { Polygon } from 'ol/geom';
|
|
82
|
+
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
81
83
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
82
84
|
import * as i4$1 from '@angular/cdk/scrolling';
|
|
83
85
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
@@ -1414,6 +1416,7 @@ const selectTranslatedValue = (source, lang3) => selectFallback(selectField(sour
|
|
|
1414
1416
|
const selectTranslatedField = (source, fieldName, lang3) => selectTranslatedValue(selectField(source, fieldName), lang3);
|
|
1415
1417
|
const toDate = (field) => new Date(field);
|
|
1416
1418
|
const getFirstValue = (field) => Array.isArray(field) ? field[0] : field;
|
|
1419
|
+
const getArrayItem = (field, index) => Array.isArray(field) && field[index] !== undefined ? field[index] : null;
|
|
1417
1420
|
const getAsArray = (field) => Array.isArray(field) ? field : field !== null ? [field] : [];
|
|
1418
1421
|
const getAsUrl = (field, location = window.location.toString()) => {
|
|
1419
1422
|
// an empty string is not a valid url, even though it could be considered an empty path to the root
|
|
@@ -16850,6 +16853,7 @@ var de = {
|
|
|
16850
16853
|
"map.add.layer.wfs": "Aus WFS",
|
|
16851
16854
|
"map.add.layer.wms": "Aus WMS",
|
|
16852
16855
|
"map.addFromFile.placeholder": "Klicke hier oder ziehe eine Datei herein",
|
|
16856
|
+
"map.geocoding.placeholder": "",
|
|
16853
16857
|
"map.help.addFromFile": "Klicke oder ziehe eine Datei herein um eine Karte hinzuzufügen (momentan wird nur das GeoJSON-Format unterstützt).",
|
|
16854
16858
|
"map.layer.add": "Hinzufügen",
|
|
16855
16859
|
"map.layers.available": "Verfügbare Layer",
|
|
@@ -17188,6 +17192,7 @@ var en = {
|
|
|
17188
17192
|
"map.add.layer.wfs": "From WFS",
|
|
17189
17193
|
"map.add.layer.wms": "From WMS",
|
|
17190
17194
|
"map.addFromFile.placeholder": "Click or drop a file here",
|
|
17195
|
+
"map.geocoding.placeholder": "Search for a place",
|
|
17191
17196
|
"map.help.addFromFile": "Click or drag and drop a file to add to the map (currently supports GeoJSON format only).",
|
|
17192
17197
|
"map.layer.add": "Add",
|
|
17193
17198
|
"map.layers.available": "Available Layers",
|
|
@@ -17526,6 +17531,7 @@ var es = {
|
|
|
17526
17531
|
"map.add.layer.wfs": "",
|
|
17527
17532
|
"map.add.layer.wms": "",
|
|
17528
17533
|
"map.addFromFile.placeholder": "",
|
|
17534
|
+
"map.geocoding.placeholder": "",
|
|
17529
17535
|
"map.help.addFromFile": "",
|
|
17530
17536
|
"map.layer.add": "",
|
|
17531
17537
|
"map.layers.available": "",
|
|
@@ -17798,7 +17804,7 @@ var fr = {
|
|
|
17798
17804
|
"datahub.header.popularRecords": "Les plus appréciées",
|
|
17799
17805
|
"datahub.header.title.html": "<div class=\"text-white\">Toutes les données<br>publiques de mon organisation</div>",
|
|
17800
17806
|
"datahub.news.contact.contactus": "Contactez-nous",
|
|
17801
|
-
"datahub.news.contact.html": "<p>Vous avez besoin de données qui ne sont pas présentes sur la plateforme actuellement ? </p><p> Nos équipes sont
|
|
17807
|
+
"datahub.news.contact.html": "<p>Vous avez besoin de données qui ne sont pas présentes sur la plateforme actuellement ? </p><p> Nos équipes sont là pour vous répondre.</p>",
|
|
17802
17808
|
"datahub.news.contact.title": "Un besoin spécifique ?",
|
|
17803
17809
|
"datahub.news.feed": "Fil d'activité",
|
|
17804
17810
|
"datahub.news.figures": "Quelques chiffres",
|
|
@@ -17864,6 +17870,7 @@ var fr = {
|
|
|
17864
17870
|
"map.add.layer.wfs": "",
|
|
17865
17871
|
"map.add.layer.wms": "",
|
|
17866
17872
|
"map.addFromFile.placeholder": "",
|
|
17873
|
+
"map.geocoding.placeholder": "",
|
|
17867
17874
|
"map.help.addFromFile": "",
|
|
17868
17875
|
"map.layer.add": "",
|
|
17869
17876
|
"map.layers.available": "",
|
|
@@ -18202,6 +18209,7 @@ var it = {
|
|
|
18202
18209
|
"map.add.layer.wfs": "Da un WFS",
|
|
18203
18210
|
"map.add.layer.wms": "Da un WMS",
|
|
18204
18211
|
"map.addFromFile.placeholder": "",
|
|
18212
|
+
"map.geocoding.placeholder": "",
|
|
18205
18213
|
"map.help.addFromFile": "",
|
|
18206
18214
|
"map.layer.add": "",
|
|
18207
18215
|
"map.layers.available": "",
|
|
@@ -18540,6 +18548,7 @@ var nl = {
|
|
|
18540
18548
|
"map.add.layer.wfs": "",
|
|
18541
18549
|
"map.add.layer.wms": "",
|
|
18542
18550
|
"map.addFromFile.placeholder": "",
|
|
18551
|
+
"map.geocoding.placeholder": "",
|
|
18543
18552
|
"map.help.addFromFile": "",
|
|
18544
18553
|
"map.layer.add": "",
|
|
18545
18554
|
"map.layers.available": "",
|
|
@@ -18878,6 +18887,7 @@ var pt = {
|
|
|
18878
18887
|
"map.add.layer.wfs": "",
|
|
18879
18888
|
"map.add.layer.wms": "",
|
|
18880
18889
|
"map.addFromFile.placeholder": "",
|
|
18890
|
+
"map.geocoding.placeholder": "",
|
|
18881
18891
|
"map.help.addFromFile": "",
|
|
18882
18892
|
"map.layer.add": "",
|
|
18883
18893
|
"map.layers.available": "",
|
|
@@ -19205,6 +19215,40 @@ class Gn4FieldMapper {
|
|
|
19205
19215
|
kind,
|
|
19206
19216
|
};
|
|
19207
19217
|
},
|
|
19218
|
+
geom: (output, source) => {
|
|
19219
|
+
const geoms = getAsArray(selectField(source, 'geom'));
|
|
19220
|
+
const shapes = getAsArray(selectField(source, 'shape'));
|
|
19221
|
+
const extentDescriptions = getAsArray(selectField(source, 'extentDescriptionObject'));
|
|
19222
|
+
const spatialExtents = getAsArray(selectField(source, 'spatialExtents'));
|
|
19223
|
+
return {
|
|
19224
|
+
...output,
|
|
19225
|
+
spatialExtents: [
|
|
19226
|
+
...spatialExtents,
|
|
19227
|
+
...geoms.map((geom, index) => {
|
|
19228
|
+
const description = selectTranslatedValue(getArrayItem(extentDescriptions, index), this.lang3);
|
|
19229
|
+
const geometry = shapes[index] ?? geom;
|
|
19230
|
+
return {
|
|
19231
|
+
...(description !== null ? { description } : null),
|
|
19232
|
+
geometry,
|
|
19233
|
+
};
|
|
19234
|
+
}),
|
|
19235
|
+
],
|
|
19236
|
+
};
|
|
19237
|
+
},
|
|
19238
|
+
resourceTemporalDateRange: (output, source) => {
|
|
19239
|
+
const ranges = getAsArray(selectField(source, 'resourceTemporalDateRange'));
|
|
19240
|
+
return {
|
|
19241
|
+
...output,
|
|
19242
|
+
temporalExtents: ranges.map((range) => {
|
|
19243
|
+
const start = selectField(range, 'gte');
|
|
19244
|
+
const end = selectField(range, 'lte');
|
|
19245
|
+
return {
|
|
19246
|
+
...(start !== null ? { start: toDate(start) } : null),
|
|
19247
|
+
...(end !== null ? { end: toDate(end) } : null),
|
|
19248
|
+
};
|
|
19249
|
+
}),
|
|
19250
|
+
};
|
|
19251
|
+
},
|
|
19208
19252
|
};
|
|
19209
19253
|
this.genericField = (output) => output;
|
|
19210
19254
|
this.constraintField = (fieldName, output, source) => ({
|
|
@@ -20393,36 +20437,23 @@ class SelectionService {
|
|
|
20393
20437
|
this.selectedRecordsIdentifiers$.next(filtered);
|
|
20394
20438
|
}
|
|
20395
20439
|
selectRecords(records) {
|
|
20396
|
-
const newIds =
|
|
20397
|
-
|
|
20398
|
-
newIds.push(record.uniqueIdentifier);
|
|
20399
|
-
});
|
|
20400
|
-
const apiResponse = this.selectionsApi.add(BUCKET_ID, newIds);
|
|
20401
|
-
return apiResponse.pipe(tap$2(() => {
|
|
20440
|
+
const newIds = records.map((record) => record.uniqueIdentifier);
|
|
20441
|
+
this.selectionsApi.add(BUCKET_ID, newIds).subscribe(() => {
|
|
20402
20442
|
this.addIdsToSelected(newIds);
|
|
20403
|
-
})
|
|
20443
|
+
});
|
|
20404
20444
|
}
|
|
20405
20445
|
deselectRecords(records) {
|
|
20406
|
-
const idsToBeRemoved =
|
|
20407
|
-
|
|
20408
|
-
idsToBeRemoved.push(record.uniqueIdentifier);
|
|
20409
|
-
});
|
|
20410
|
-
const apiResponse = this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved);
|
|
20411
|
-
return apiResponse.pipe(tap$2(() => {
|
|
20446
|
+
const idsToBeRemoved = records.map((record) => record.uniqueIdentifier);
|
|
20447
|
+
this.selectionsApi.clear(BUCKET_ID, idsToBeRemoved).subscribe(() => {
|
|
20412
20448
|
this.removeIdsFromSelected(idsToBeRemoved);
|
|
20413
|
-
}), map$2(() => undefined));
|
|
20414
|
-
}
|
|
20415
|
-
clearSelection() {
|
|
20416
|
-
const currentSelectedResponse = this.selectionsApi.get(BUCKET_ID);
|
|
20417
|
-
let currentSelection;
|
|
20418
|
-
this.subscription = currentSelectedResponse.subscribe((value) => {
|
|
20419
|
-
currentSelection = [...value];
|
|
20420
20449
|
});
|
|
20421
|
-
|
|
20422
|
-
|
|
20423
|
-
|
|
20450
|
+
}
|
|
20451
|
+
async clearSelection() {
|
|
20452
|
+
const response = await firstValueFrom(this.selectionsApi.get(BUCKET_ID));
|
|
20453
|
+
const currentSelection = Array.from(response);
|
|
20454
|
+
this.selectionsApi.clear(BUCKET_ID, currentSelection).subscribe(() => {
|
|
20424
20455
|
this.removeIdsFromSelected(currentSelection);
|
|
20425
|
-
})
|
|
20456
|
+
});
|
|
20426
20457
|
}
|
|
20427
20458
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, deps: [{ token: SelectionsApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20428
20459
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SelectionService, providedIn: 'root' }); }
|
|
@@ -20740,6 +20771,8 @@ const defaultMapOptions = {
|
|
|
20740
20771
|
};
|
|
20741
20772
|
const FEATURE_MAP_OPTIONS = new InjectionToken('mapOptions');
|
|
20742
20773
|
|
|
20774
|
+
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
20775
|
+
|
|
20743
20776
|
var MapContextLayerTypeEnum;
|
|
20744
20777
|
(function (MapContextLayerTypeEnum) {
|
|
20745
20778
|
MapContextLayerTypeEnum["XYZ"] = "xyz";
|
|
@@ -21115,9 +21148,15 @@ const FORMATS = {
|
|
|
21115
21148
|
color: '#328556',
|
|
21116
21149
|
mimeTypes: ['x-gis/x-shapefile'],
|
|
21117
21150
|
},
|
|
21151
|
+
gml: {
|
|
21152
|
+
extensions: ['gml'],
|
|
21153
|
+
priority: 5,
|
|
21154
|
+
color: '#c92bce',
|
|
21155
|
+
mimeTypes: ['application/gml+xml', 'text/xml; subtype=gml'],
|
|
21156
|
+
},
|
|
21118
21157
|
kml: {
|
|
21119
21158
|
extensions: ['kml', 'kmz'],
|
|
21120
|
-
priority:
|
|
21159
|
+
priority: 6,
|
|
21121
21160
|
color: '#348009',
|
|
21122
21161
|
mimeTypes: [
|
|
21123
21162
|
'application/vnd.google-earth.kml+xml',
|
|
@@ -21126,34 +21165,40 @@ const FORMATS = {
|
|
|
21126
21165
|
},
|
|
21127
21166
|
gpkg: {
|
|
21128
21167
|
extensions: ['gpkg', 'geopackage'],
|
|
21129
|
-
priority:
|
|
21168
|
+
priority: 7,
|
|
21130
21169
|
color: '#ea79ba',
|
|
21131
21170
|
mimeTypes: ['application/geopackage+sqlite3'],
|
|
21132
21171
|
},
|
|
21133
21172
|
zip: {
|
|
21134
21173
|
extensions: ['zip', 'tar.gz'],
|
|
21135
|
-
priority:
|
|
21174
|
+
priority: 8,
|
|
21136
21175
|
color: '#f2bb3a',
|
|
21137
21176
|
mimeTypes: ['application/zip', 'application/x-zip'],
|
|
21138
21177
|
},
|
|
21139
21178
|
pdf: {
|
|
21140
21179
|
extensions: ['pdf'],
|
|
21141
|
-
priority:
|
|
21180
|
+
priority: 9,
|
|
21142
21181
|
color: '#db544a',
|
|
21143
21182
|
mimeTypes: ['application/pdf'],
|
|
21144
21183
|
},
|
|
21145
21184
|
jpg: {
|
|
21146
21185
|
extensions: ['jpg', 'jpeg', 'jfif', 'pjpeg', 'pjp'],
|
|
21147
|
-
priority:
|
|
21186
|
+
priority: 9,
|
|
21148
21187
|
color: '#673ab7',
|
|
21149
21188
|
mimeTypes: ['image/jpg'],
|
|
21150
21189
|
},
|
|
21151
21190
|
svg: {
|
|
21152
21191
|
extensions: ['svg'],
|
|
21153
|
-
priority:
|
|
21192
|
+
priority: 10,
|
|
21154
21193
|
color: '#d98294',
|
|
21155
21194
|
mimeTypes: ['image/svg+xml'],
|
|
21156
21195
|
},
|
|
21196
|
+
dxf: {
|
|
21197
|
+
extensions: ['dxf'],
|
|
21198
|
+
priority: 11,
|
|
21199
|
+
color: '#de630b',
|
|
21200
|
+
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
21201
|
+
},
|
|
21157
21202
|
};
|
|
21158
21203
|
function getFormatPriority(linkFormat) {
|
|
21159
21204
|
for (const format in FORMATS) {
|
|
@@ -21170,14 +21215,18 @@ function getFormatPriority(linkFormat) {
|
|
|
21170
21215
|
function getLinkPriority(link) {
|
|
21171
21216
|
return getFormatPriority(getFileFormat(link));
|
|
21172
21217
|
}
|
|
21173
|
-
function
|
|
21174
|
-
|
|
21175
|
-
|
|
21176
|
-
|
|
21177
|
-
|
|
21218
|
+
function getFileFormatFromServiceOutput(serviceOutput) {
|
|
21219
|
+
function formatMatcher(format) {
|
|
21220
|
+
const output = serviceOutput.toLowerCase();
|
|
21221
|
+
return (format.extensions.some((extension) => output.includes(extension)) ||
|
|
21222
|
+
format.mimeTypes.some((mimeType) => output.includes(mimeType)));
|
|
21223
|
+
}
|
|
21224
|
+
for (const formatName in FORMATS) {
|
|
21225
|
+
if (formatMatcher(FORMATS[formatName])) {
|
|
21226
|
+
return formatName;
|
|
21178
21227
|
}
|
|
21179
21228
|
}
|
|
21180
|
-
return
|
|
21229
|
+
return null;
|
|
21181
21230
|
}
|
|
21182
21231
|
function getFileFormat(link) {
|
|
21183
21232
|
if ('mimeType' in link) {
|
|
@@ -21318,72 +21367,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21318
21367
|
}]
|
|
21319
21368
|
}] });
|
|
21320
21369
|
|
|
21321
|
-
const LONLAT_CRS_CODES = ['EPSG:4326', 'CRS:84'];
|
|
21322
|
-
|
|
21323
|
-
class MapUtilsWMSService {
|
|
21324
|
-
constructor(proxy) {
|
|
21325
|
-
this.proxy = proxy;
|
|
21326
|
-
}
|
|
21327
|
-
getCapabilities(layer) {
|
|
21328
|
-
return from(new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady());
|
|
21329
|
-
}
|
|
21330
|
-
getLayerFull(layer) {
|
|
21331
|
-
return this.getCapabilities(layer).pipe(map$1((endpoint) => endpoint.getLayerByName(layer.name)));
|
|
21332
|
-
}
|
|
21333
|
-
getLayerLonLatBBox(layer) {
|
|
21334
|
-
return this.getLayerFull(layer).pipe(switchMap$1((wmsLayerFull) => from(this.getLonLatBBox(wmsLayerFull))));
|
|
21335
|
-
}
|
|
21336
|
-
async getLonLatBBox(wmsLayerFull) {
|
|
21337
|
-
const { boundingBoxes } = wmsLayerFull;
|
|
21338
|
-
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
21339
|
-
if (lonLatCRS) {
|
|
21340
|
-
return boundingBoxes[lonLatCRS];
|
|
21341
|
-
}
|
|
21342
|
-
else {
|
|
21343
|
-
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
21344
|
-
register(proj4);
|
|
21345
|
-
const proj = await fromEPSGCode(availableEPSGCode);
|
|
21346
|
-
proj4.defs(availableEPSGCode, proj);
|
|
21347
|
-
const bboxWithFiniteNumbers = [
|
|
21348
|
-
parseFloat(boundingBoxes[availableEPSGCode][0]),
|
|
21349
|
-
parseFloat(boundingBoxes[availableEPSGCode][1]),
|
|
21350
|
-
parseFloat(boundingBoxes[availableEPSGCode][2]),
|
|
21351
|
-
parseFloat(boundingBoxes[availableEPSGCode][3]),
|
|
21352
|
-
];
|
|
21353
|
-
const extent = transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
21354
|
-
return extent;
|
|
21355
|
-
}
|
|
21356
|
-
}
|
|
21357
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, deps: [{ token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21358
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, providedIn: 'root' }); }
|
|
21359
|
-
}
|
|
21360
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsWMSService, decorators: [{
|
|
21361
|
-
type: Injectable,
|
|
21362
|
-
args: [{
|
|
21363
|
-
providedIn: 'root',
|
|
21364
|
-
}]
|
|
21365
|
-
}], ctorParameters: function () { return [{ type: ProxyService }]; } });
|
|
21366
|
-
|
|
21367
21370
|
const FEATURE_PROJECTION = 'EPSG:3857';
|
|
21368
21371
|
const DATA_PROJECTION = 'EPSG:4326';
|
|
21372
|
+
const GEOJSON = new GeoJSON();
|
|
21369
21373
|
class MapUtilsService {
|
|
21370
|
-
constructor(http,
|
|
21374
|
+
constructor(http, proxy) {
|
|
21371
21375
|
this.http = http;
|
|
21372
|
-
this.
|
|
21376
|
+
this.proxy = proxy;
|
|
21373
21377
|
this.readFeatureCollection = (featureCollection, featureProjection = FEATURE_PROJECTION, dataProjection = DATA_PROJECTION) => {
|
|
21374
|
-
|
|
21378
|
+
return GEOJSON.readFeatures(featureCollection, {
|
|
21375
21379
|
featureProjection,
|
|
21376
21380
|
dataProjection,
|
|
21377
21381
|
});
|
|
21378
|
-
return olFeatures;
|
|
21379
21382
|
};
|
|
21380
21383
|
}
|
|
21381
21384
|
createEmptyMap() {
|
|
21382
|
-
|
|
21385
|
+
return new Map$1({
|
|
21383
21386
|
controls: [],
|
|
21384
21387
|
pixelRatio: 1,
|
|
21385
21388
|
});
|
|
21386
|
-
return map;
|
|
21387
21389
|
}
|
|
21388
21390
|
isWMSLayer(layer) {
|
|
21389
21391
|
return (layer.getSource() instanceof TileWMS ||
|
|
@@ -21398,8 +21400,7 @@ class MapUtilsService {
|
|
|
21398
21400
|
...source.getParams(),
|
|
21399
21401
|
INFO_FORMAT: 'application/json',
|
|
21400
21402
|
};
|
|
21401
|
-
|
|
21402
|
-
return url;
|
|
21403
|
+
return source.getFeatureInfoUrl(coordinate, resolution, projection, params);
|
|
21403
21404
|
}
|
|
21404
21405
|
getVectorFeaturesFromClick(olMap, event) {
|
|
21405
21406
|
const features = [];
|
|
@@ -21427,38 +21428,56 @@ class MapUtilsService {
|
|
|
21427
21428
|
/**
|
|
21428
21429
|
* Will emit `null` if no extent could be computed
|
|
21429
21430
|
*/
|
|
21430
|
-
getLayerExtent(layer) {
|
|
21431
|
-
let
|
|
21431
|
+
async getLayerExtent(layer) {
|
|
21432
|
+
let latLonExtent;
|
|
21432
21433
|
if (layer &&
|
|
21433
21434
|
layer.type === 'geojson' &&
|
|
21434
21435
|
'data' in layer &&
|
|
21435
21436
|
typeof layer.data === 'object' &&
|
|
21436
21437
|
layer.data.features[0] &&
|
|
21437
21438
|
layer.data.features[0].geometry) {
|
|
21438
|
-
|
|
21439
|
-
.readFeatures(
|
|
21439
|
+
latLonExtent = new GeoJSON()
|
|
21440
|
+
.readFeatures(layer.data)
|
|
21440
21441
|
.map((feature) => feature.getGeometry())
|
|
21441
21442
|
.filter((geom) => !!geom)
|
|
21442
|
-
.reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null)
|
|
21443
|
+
.reduce((prev, curr) => prev ? extend(prev, curr.getExtent()) : curr.getExtent(), null);
|
|
21443
21444
|
}
|
|
21444
21445
|
else if (layer && layer.type === 'wms') {
|
|
21445
|
-
|
|
21446
|
+
latLonExtent = await this.getWmsLayerExtent(layer);
|
|
21446
21447
|
}
|
|
21447
21448
|
else if (layer && layer.type === 'wmts') {
|
|
21448
21449
|
if (layer.extent) {
|
|
21449
|
-
|
|
21450
|
+
latLonExtent = layer.extent;
|
|
21450
21451
|
}
|
|
21451
21452
|
else {
|
|
21452
|
-
return
|
|
21453
|
+
return layer.options.tileGrid.getExtent();
|
|
21453
21454
|
}
|
|
21454
21455
|
}
|
|
21455
21456
|
else {
|
|
21456
|
-
return
|
|
21457
|
+
return null;
|
|
21458
|
+
}
|
|
21459
|
+
if (!latLonExtent || isEmpty(latLonExtent)) {
|
|
21460
|
+
return null;
|
|
21461
|
+
}
|
|
21462
|
+
return transformExtent(latLonExtent, 'EPSG:4326', 'EPSG:3857');
|
|
21463
|
+
}
|
|
21464
|
+
async getWmsLayerExtent(layer) {
|
|
21465
|
+
const endpoint = await new WmsEndpoint(this.proxy.getProxiedUrl(layer.url)).isReady();
|
|
21466
|
+
const { boundingBoxes } = endpoint.getLayerByName(layer.name);
|
|
21467
|
+
if (!Object.keys(boundingBoxes).length) {
|
|
21468
|
+
return null;
|
|
21469
|
+
}
|
|
21470
|
+
const lonLatCRS = Object.keys(boundingBoxes)?.find((crs) => LONLAT_CRS_CODES.includes(crs));
|
|
21471
|
+
if (lonLatCRS) {
|
|
21472
|
+
return boundingBoxes[lonLatCRS].map(parseFloat);
|
|
21473
|
+
}
|
|
21474
|
+
else {
|
|
21475
|
+
const availableEPSGCode = Object.keys(boundingBoxes)[0];
|
|
21476
|
+
register(proj4);
|
|
21477
|
+
const proj = await fromEPSGCode(availableEPSGCode);
|
|
21478
|
+
const bboxWithFiniteNumbers = boundingBoxes[availableEPSGCode].map(parseFloat);
|
|
21479
|
+
return transformExtent(bboxWithFiniteNumbers, proj, 'EPSG:4326');
|
|
21457
21480
|
}
|
|
21458
|
-
return geographicExtent.pipe(map$1((extent) => [
|
|
21459
|
-
...fromLonLat([extent[0], extent[1]], 'EPSG:3857'),
|
|
21460
|
-
...fromLonLat([extent[2], extent[3]], 'EPSG:3857'),
|
|
21461
|
-
]), map$1((extent) => (isEmpty(extent) ? null : extent)));
|
|
21462
21481
|
}
|
|
21463
21482
|
getWmtsLayerFromCapabilities(link) {
|
|
21464
21483
|
const getCapabilitiesUrl = new URL(link.url, window.location.toString());
|
|
@@ -21514,7 +21533,18 @@ ${e.stack || e.message || e}`);
|
|
|
21514
21533
|
])
|
|
21515
21534
|
.getArray());
|
|
21516
21535
|
}
|
|
21517
|
-
|
|
21536
|
+
getRecordExtent(record) {
|
|
21537
|
+
if (!('spatialExtents' in record)) {
|
|
21538
|
+
return null;
|
|
21539
|
+
}
|
|
21540
|
+
// transform an array of geojson geometries into a bbox
|
|
21541
|
+
const totalExtent = record.spatialExtents.reduce((prev, curr) => {
|
|
21542
|
+
const geom = GEOJSON.readGeometry(curr.geometry);
|
|
21543
|
+
return extend(prev, geom.getExtent());
|
|
21544
|
+
}, [Infinity, Infinity, -Infinity, -Infinity]);
|
|
21545
|
+
return transformExtent(totalExtent, 'EPSG:4326', 'EPSG:3857');
|
|
21546
|
+
}
|
|
21547
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, deps: [{ token: i1.HttpClient }, { token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21518
21548
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, providedIn: 'root' }); }
|
|
21519
21549
|
}
|
|
21520
21550
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapUtilsService, decorators: [{
|
|
@@ -21522,7 +21552,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21522
21552
|
args: [{
|
|
21523
21553
|
providedIn: 'root',
|
|
21524
21554
|
}]
|
|
21525
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type:
|
|
21555
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: ProxyService }]; } });
|
|
21526
21556
|
function dragPanCondition(event) {
|
|
21527
21557
|
const dragPanCondition = this.getPointerCount() === 2 || mouseOnly(event);
|
|
21528
21558
|
if (!dragPanCondition) {
|
|
@@ -24224,11 +24254,11 @@ class DownloadsListComponent {
|
|
|
24224
24254
|
return link.type === 'service' && link.accessServiceProtocol === 'wfs';
|
|
24225
24255
|
}
|
|
24226
24256
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24227
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DownloadsListComponent, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div
|
|
24257
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DownloadsListComponent, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-50')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromWfs]=\"isFromWfs(link)\"\n ></gn-ui-download-item>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromWfs"], outputs: ["exportUrl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24228
24258
|
}
|
|
24229
24259
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, decorators: [{
|
|
24230
24260
|
type: Component,
|
|
24231
|
-
args: [{ selector: 'gn-ui-downloads-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div
|
|
24261
|
+
args: [{ selector: 'gn-ui-downloads-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-50')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromWfs]=\"isFromWfs(link)\"\n ></gn-ui-download-item>\n</div>\n" }]
|
|
24232
24262
|
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; }, propDecorators: { links: [{
|
|
24233
24263
|
type: Input
|
|
24234
24264
|
}] } });
|
|
@@ -24477,6 +24507,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24477
24507
|
}]
|
|
24478
24508
|
}] });
|
|
24479
24509
|
|
|
24510
|
+
class InteractiveTableColumnComponent {
|
|
24511
|
+
constructor() {
|
|
24512
|
+
this.grow = false;
|
|
24513
|
+
this.sortable = false;
|
|
24514
|
+
this.activeSort = null;
|
|
24515
|
+
this.sortChange = new EventEmitter();
|
|
24516
|
+
}
|
|
24517
|
+
handleSortChange() {
|
|
24518
|
+
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
24519
|
+
this.sortChange.emit(this.activeSort);
|
|
24520
|
+
}
|
|
24521
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24522
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: InteractiveTableColumnComponent, isStandalone: true, selector: "gn-ui-interactive-table-column", inputs: { grow: "grow", sortable: "sortable", activeSort: "activeSort" }, outputs: { sortChange: "sortChange" }, queries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "cell", first: true, predicate: ["cell"], descendants: true }], ngImport: i0, template: "<span>empty</span>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24523
|
+
}
|
|
24524
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
24525
|
+
type: Component,
|
|
24526
|
+
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
24527
|
+
}], propDecorators: { header: [{
|
|
24528
|
+
type: ContentChild,
|
|
24529
|
+
args: ['header']
|
|
24530
|
+
}], cell: [{
|
|
24531
|
+
type: ContentChild,
|
|
24532
|
+
args: ['cell']
|
|
24533
|
+
}], grow: [{
|
|
24534
|
+
type: Input
|
|
24535
|
+
}], sortable: [{
|
|
24536
|
+
type: Input
|
|
24537
|
+
}], activeSort: [{
|
|
24538
|
+
type: Input
|
|
24539
|
+
}], sortChange: [{
|
|
24540
|
+
type: Output
|
|
24541
|
+
}] } });
|
|
24542
|
+
|
|
24543
|
+
class InteractiveTableComponent {
|
|
24544
|
+
constructor() {
|
|
24545
|
+
this.items = [];
|
|
24546
|
+
this.itemClick = new EventEmitter();
|
|
24547
|
+
}
|
|
24548
|
+
get gridStyle() {
|
|
24549
|
+
return {
|
|
24550
|
+
'grid-template-columns': this.columns
|
|
24551
|
+
.map((column) => column.grow ? `minmax(0px,1fr)` : `minmax(0px,max-content)`)
|
|
24552
|
+
.join(' '),
|
|
24553
|
+
};
|
|
24554
|
+
}
|
|
24555
|
+
handleRowClick(item) {
|
|
24556
|
+
this.itemClick.emit(item);
|
|
24557
|
+
}
|
|
24558
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24559
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items" }, outputs: { itemClick: "itemClick" }, queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24560
|
+
}
|
|
24561
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
24562
|
+
type: Component,
|
|
24563
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, InteractiveTableColumnComponent, MatIconModule], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n >expand_less</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n >expand_more</mat-icon\n >\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-4 py-3 flex items-center bg-white transition-colors duration-75 truncate group-hover:text-main group-hover:bg-gray-50 border-b border-gray-200\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".sort-button mat-icon{padding:0;margin:0;height:8px;line-height:8px;font-size:18px}.table-header-cell{@apply text-gray-700 px-4 py-5 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}\n"] }]
|
|
24564
|
+
}], propDecorators: { columns: [{
|
|
24565
|
+
type: ContentChildren,
|
|
24566
|
+
args: [InteractiveTableColumnComponent]
|
|
24567
|
+
}], items: [{
|
|
24568
|
+
type: Input
|
|
24569
|
+
}], itemClick: [{
|
|
24570
|
+
type: Output
|
|
24571
|
+
}] } });
|
|
24572
|
+
|
|
24480
24573
|
class LinkCardComponent {
|
|
24481
24574
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24482
24575
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, selector: "gn-ui-link-card", inputs: { link: "link" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group h-40 grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden lg:w-80\"\n>\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\">open_in_new</mat-icon>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -24522,11 +24615,11 @@ class MetadataContactComponent {
|
|
|
24522
24615
|
this.organizationClick.emit(this.shownOrganization);
|
|
24523
24616
|
}
|
|
24524
24617
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24525
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6
|
|
24618
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MetadataContactComponent, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.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]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24526
24619
|
}
|
|
24527
24620
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MetadataContactComponent, decorators: [{
|
|
24528
24621
|
type: Component,
|
|
24529
|
-
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6
|
|
24622
|
+
args: [{ selector: 'gn-ui-metadata-contact', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"py-5 px-5 rounded bg-gray-100 text-black mb-6\">\n <div class=\"grid gap-3\">\n <div>\n <p class=\"text-sm font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.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]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid gap-1\">\n <div class=\"flex\">\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <mat-icon\n class=\"material-symbols-outlined !w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n >open_in_new</mat-icon\n >\n </a>\n </div>\n </div>\n <div class=\"grid gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >call_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n mail_outline</mat-icon\n >\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >person_outline</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <mat-icon\n class=\"material-symbols-outlined !w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n >\n location_on</mat-icon\n >\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
24530
24623
|
}], propDecorators: { metadata: [{
|
|
24531
24624
|
type: Input
|
|
24532
24625
|
}], organizationClick: [{
|
|
@@ -24930,11 +25023,11 @@ class DropdownMultiselectComponent {
|
|
|
24930
25023
|
this.setFocus();
|
|
24931
25024
|
}
|
|
24932
25025
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$6.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24933
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice,
|
|
25026
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$6.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$6.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24934
25027
|
}
|
|
24935
25028
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24936
25029
|
type: Component,
|
|
24937
|
-
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice,
|
|
25030
|
+
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
24938
25031
|
}], ctorParameters: function () { return [{ type: i1$6.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24939
25032
|
type: Input
|
|
24940
25033
|
}], choices: [{
|
|
@@ -25193,11 +25286,11 @@ class AutocompleteComponent {
|
|
|
25193
25286
|
}
|
|
25194
25287
|
}
|
|
25195
25288
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25196
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(
|
|
25289
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25197
25290
|
}
|
|
25198
25291
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
25199
25292
|
type: Component,
|
|
25200
|
-
args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(
|
|
25293
|
+
args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
25201
25294
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
25202
25295
|
type: Input
|
|
25203
25296
|
}], action: [{
|
|
@@ -25573,11 +25666,11 @@ class CheckboxComponent {
|
|
|
25573
25666
|
this.changed.emit(this.checked);
|
|
25574
25667
|
}
|
|
25575
25668
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25576
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n
|
|
25669
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "component", type: i1$7.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25577
25670
|
}
|
|
25578
25671
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
25579
25672
|
type: Component,
|
|
25580
|
-
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n
|
|
25673
|
+
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"] }]
|
|
25581
25674
|
}], propDecorators: { type: [{
|
|
25582
25675
|
type: Input
|
|
25583
25676
|
}], checked: [{
|
|
@@ -25632,6 +25725,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25632
25725
|
args: [{ selector: 'gn-ui-date-range-picker', template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
25633
25726
|
}] });
|
|
25634
25727
|
|
|
25728
|
+
class EditableLabelDirective {
|
|
25729
|
+
constructor(el, renderer) {
|
|
25730
|
+
this.el = el;
|
|
25731
|
+
this.renderer = renderer;
|
|
25732
|
+
this.editableLabelChanged = new EventEmitter();
|
|
25733
|
+
}
|
|
25734
|
+
ngAfterViewInit() {
|
|
25735
|
+
if (this.gnUiEditableLabel !== false) {
|
|
25736
|
+
const appendedInput = this.renderer.createElement('input');
|
|
25737
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
25738
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
25739
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
25740
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
25741
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
25742
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
25743
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
25744
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
25745
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
25746
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
25747
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
25748
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
25749
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
25750
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
25751
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
25752
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
25753
|
+
});
|
|
25754
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
25755
|
+
}
|
|
25756
|
+
}
|
|
25757
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25758
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, isStandalone: true, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
25759
|
+
}
|
|
25760
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
25761
|
+
type: Directive,
|
|
25762
|
+
args: [{
|
|
25763
|
+
selector: '[gnUiEditableLabel]',
|
|
25764
|
+
standalone: true,
|
|
25765
|
+
}]
|
|
25766
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25767
|
+
type: Output
|
|
25768
|
+
}], gnUiEditableLabel: [{
|
|
25769
|
+
type: Input
|
|
25770
|
+
}] } });
|
|
25771
|
+
|
|
25635
25772
|
class UiInputsModule {
|
|
25636
25773
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25637
25774
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [DropdownSelectorComponent,
|
|
@@ -25671,7 +25808,8 @@ class UiInputsModule {
|
|
|
25671
25808
|
MatFormFieldModule,
|
|
25672
25809
|
MatInputModule,
|
|
25673
25810
|
MatDatepickerModule,
|
|
25674
|
-
MatNativeDateModule
|
|
25811
|
+
MatNativeDateModule,
|
|
25812
|
+
EditableLabelDirective], exports: [DropdownSelectorComponent,
|
|
25675
25813
|
AutocompleteComponent,
|
|
25676
25814
|
ButtonComponent,
|
|
25677
25815
|
TextInputComponent,
|
|
@@ -25687,7 +25825,8 @@ class UiInputsModule {
|
|
|
25687
25825
|
CopyTextButtonComponent,
|
|
25688
25826
|
CheckboxComponent,
|
|
25689
25827
|
SearchInputComponent,
|
|
25690
|
-
DateRangePickerComponent
|
|
25828
|
+
DateRangePickerComponent,
|
|
25829
|
+
EditableLabelDirective] }); }
|
|
25691
25830
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, imports: [CommonModule,
|
|
25692
25831
|
TranslateModule.forChild(),
|
|
25693
25832
|
NgxDropzoneModule,
|
|
@@ -25753,6 +25892,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25753
25892
|
MatInputModule,
|
|
25754
25893
|
MatDatepickerModule,
|
|
25755
25894
|
MatNativeDateModule,
|
|
25895
|
+
EditableLabelDirective,
|
|
25756
25896
|
],
|
|
25757
25897
|
exports: [
|
|
25758
25898
|
DropdownSelectorComponent,
|
|
@@ -25772,6 +25912,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25772
25912
|
CheckboxComponent,
|
|
25773
25913
|
SearchInputComponent,
|
|
25774
25914
|
DateRangePickerComponent,
|
|
25915
|
+
EditableLabelDirective,
|
|
25775
25916
|
],
|
|
25776
25917
|
}]
|
|
25777
25918
|
}] });
|
|
@@ -25937,11 +26078,11 @@ class ImageOverlayPreviewComponent {
|
|
|
25937
26078
|
basicLightbox.create(`<img src="${src}"/>`).show();
|
|
25938
26079
|
}
|
|
25939
26080
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25940
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-
|
|
26081
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { 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"] }] }); }
|
|
25941
26082
|
}
|
|
25942
26083
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, decorators: [{
|
|
25943
26084
|
type: Component,
|
|
25944
|
-
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-
|
|
26085
|
+
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"flex-shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n" }]
|
|
25945
26086
|
}], propDecorators: { imageUrl: [{
|
|
25946
26087
|
type: Input
|
|
25947
26088
|
}], isPlaceholderShown: [{
|
|
@@ -25996,6 +26137,7 @@ class UiElementsModule {
|
|
|
25996
26137
|
AvatarComponent,
|
|
25997
26138
|
UserPreviewComponent,
|
|
25998
26139
|
PaginationButtonsComponent,
|
|
26140
|
+
MaxLinesComponent,
|
|
25999
26141
|
RecordApiFormComponent,
|
|
26000
26142
|
MarkdownParserComponent,
|
|
26001
26143
|
ImageOverlayPreviewComponent] }); }
|
|
@@ -26068,6 +26210,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26068
26210
|
AvatarComponent,
|
|
26069
26211
|
UserPreviewComponent,
|
|
26070
26212
|
PaginationButtonsComponent,
|
|
26213
|
+
MaxLinesComponent,
|
|
26071
26214
|
RecordApiFormComponent,
|
|
26072
26215
|
MarkdownParserComponent,
|
|
26073
26216
|
ImageOverlayPreviewComponent,
|
|
@@ -26075,143 +26218,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26075
26218
|
}]
|
|
26076
26219
|
}] });
|
|
26077
26220
|
|
|
26078
|
-
class RecordTableComponent {
|
|
26079
|
-
constructor() {
|
|
26080
|
-
this.selectedRecords = [];
|
|
26081
|
-
this.records = [];
|
|
26082
|
-
this.recordClick = new EventEmitter();
|
|
26083
|
-
this.recordsSelect = new EventEmitter();
|
|
26084
|
-
this.recordsDeselect = new EventEmitter();
|
|
26085
|
-
this.sortByChange = new EventEmitter();
|
|
26086
|
-
}
|
|
26087
|
-
dateToString(date) {
|
|
26088
|
-
return date?.toLocaleDateString(undefined, {
|
|
26089
|
-
year: 'numeric',
|
|
26090
|
-
month: 'long',
|
|
26091
|
-
day: 'numeric',
|
|
26092
|
-
timeZone: 'UTC',
|
|
26093
|
-
});
|
|
26094
|
-
}
|
|
26095
|
-
getStatus(isPublishedToAll) {
|
|
26096
|
-
return isPublishedToAll ? 'published' : 'not published';
|
|
26097
|
-
}
|
|
26098
|
-
formatUserInfo(userInfo) {
|
|
26099
|
-
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
26100
|
-
if (infos && infos.length === 4) {
|
|
26101
|
-
return `${infos[2]} ${infos[1]}`;
|
|
26102
|
-
}
|
|
26103
|
-
return undefined;
|
|
26104
|
-
}
|
|
26105
|
-
getRecordFormats(record) {
|
|
26106
|
-
if (record.kind === 'service' || !('distributions' in record)) {
|
|
26107
|
-
return [];
|
|
26108
|
-
}
|
|
26109
|
-
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
26110
|
-
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
26111
|
-
return formats;
|
|
26112
|
-
}
|
|
26113
|
-
getBadgeColor(format) {
|
|
26114
|
-
return getBadgeColor(format);
|
|
26115
|
-
}
|
|
26116
|
-
getOrderForColumn(col) {
|
|
26117
|
-
if (!this.sortBy) {
|
|
26118
|
-
return null;
|
|
26119
|
-
}
|
|
26120
|
-
let order = null;
|
|
26121
|
-
const sortedArray = Array.isArray(this.sortBy[0])
|
|
26122
|
-
? this.sortBy
|
|
26123
|
-
: [this.sortBy];
|
|
26124
|
-
sortedArray.forEach((sortedCol) => {
|
|
26125
|
-
if (sortedCol[1] === col) {
|
|
26126
|
-
order = sortedCol[0];
|
|
26127
|
-
}
|
|
26128
|
-
});
|
|
26129
|
-
return order;
|
|
26130
|
-
}
|
|
26131
|
-
setSortBy(col) {
|
|
26132
|
-
const sortOrder = this.getOrderForColumn(col);
|
|
26133
|
-
let newOrder;
|
|
26134
|
-
if (sortOrder) {
|
|
26135
|
-
newOrder = sortOrder === 'asc' ? 'desc' : 'asc';
|
|
26136
|
-
}
|
|
26137
|
-
else {
|
|
26138
|
-
newOrder = 'asc';
|
|
26139
|
-
}
|
|
26140
|
-
this.sortByChange.emit([newOrder, col]);
|
|
26141
|
-
this.sortBy = [newOrder, col];
|
|
26142
|
-
}
|
|
26143
|
-
isSortedBy(col, order) {
|
|
26144
|
-
const sortOrder = this.getOrderForColumn(col);
|
|
26145
|
-
return sortOrder === order;
|
|
26146
|
-
}
|
|
26147
|
-
isChecked(record) {
|
|
26148
|
-
if (this.selectedRecords.includes(record.uniqueIdentifier)) {
|
|
26149
|
-
return true;
|
|
26150
|
-
}
|
|
26151
|
-
return false;
|
|
26152
|
-
}
|
|
26153
|
-
handleRecordSelectedChange(selected, record) {
|
|
26154
|
-
if (!selected) {
|
|
26155
|
-
this.recordsDeselect.emit([record]);
|
|
26156
|
-
this.selectedRecords = this.selectedRecords.filter((val) => val !== record.uniqueIdentifier);
|
|
26157
|
-
}
|
|
26158
|
-
else {
|
|
26159
|
-
this.recordsSelect.emit([record]);
|
|
26160
|
-
this.selectedRecords.push(record.uniqueIdentifier);
|
|
26161
|
-
}
|
|
26162
|
-
}
|
|
26163
|
-
selectAll() {
|
|
26164
|
-
if (this.isAllSelected()) {
|
|
26165
|
-
this.recordsDeselect.emit(this.records);
|
|
26166
|
-
this.selectedRecords = [];
|
|
26167
|
-
}
|
|
26168
|
-
else {
|
|
26169
|
-
this.recordsSelect.emit(this.records);
|
|
26170
|
-
this.selectedRecords = this.records.map((record) => {
|
|
26171
|
-
return record.uniqueIdentifier;
|
|
26172
|
-
});
|
|
26173
|
-
}
|
|
26174
|
-
}
|
|
26175
|
-
isAllSelected() {
|
|
26176
|
-
if (this.selectedRecords.length === this.records.length) {
|
|
26177
|
-
const allRecords = this.records.filter((record) => this.selectedRecords.includes(record.uniqueIdentifier));
|
|
26178
|
-
if (allRecords.length === this.records.length) {
|
|
26179
|
-
return true;
|
|
26180
|
-
}
|
|
26181
|
-
}
|
|
26182
|
-
return false;
|
|
26183
|
-
}
|
|
26184
|
-
isSomeSelected() {
|
|
26185
|
-
if (this.selectedRecords.length > 0 &&
|
|
26186
|
-
this.selectedRecords.length < this.records.length) {
|
|
26187
|
-
return true;
|
|
26188
|
-
}
|
|
26189
|
-
return false;
|
|
26190
|
-
}
|
|
26191
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26192
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordTableComponent, selector: "gn-ui-record-table", inputs: { selectedRecords: "selectedRecords", records: "records", totalHits: "totalHits", sortBy: "sortBy" }, outputs: { recordClick: "recordClick", recordsSelect: "recordsSelect", recordsDeselect: "recordsDeselect", sortByChange: "sortByChange" }, ngImport: i0, template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col text-16\">\n {{ record.name }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.username }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.emailAddresses[0] }}\n </div>\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"!records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"flex justify-center items-center\">\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"selectAll()\"\n type=\"default\"\n >\n </gn-ui-checkbox>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1 text-left\"\n (buttonClick)=\"setSortBy('resourceTitleObject.default.keyword')\"\n >\n <span translate>record.metadata.title</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div translate=\"\" class=\"record-table-header text-gray-400 flex gap-1\">\n record.metadata.formats\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('recordOwner')\"\n >\n <span translate>record.metadata.author</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('changeDate')\"\n >\n <span translate>record.metadata.updatedOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('createDate')\"\n >\n <span translate>record.metadata.createdOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col\">\n <gn-ui-checkbox\n [checked]=\"isChecked(record)\"\n (changed)=\"handleRecordSelectedChange($event, record)\"\n type=\"default\"\n ></gn-ui-checkbox>\n </div>\n <div\n [title]=\"record.title\"\n class=\"record-table-col text-16 self-center\"\n >\n {{ record.title }}\n </div>\n <div\n class=\"record-table-col flex justify-start items-center gap-2 text-16\"\n [title]=\"formats.join(', ')\"\n *ngIf=\"getRecordFormats(record) as formats\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div\n class=\"flex-shrink-0\"\n *ngIf=\"!record.name && formats.slice(2).length > 0\"\n >\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div class=\"record-table-col flex items-center gap-2 text-16\">\n <mat-icon class=\"material-symbols-outlined\"> person </mat-icon>\n <span class=\"\">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordUpdated) }}\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordCreated) }}\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".record-table-col{@apply px-5 py-3 items-center truncate;}.record-table-header{@apply record-table-col capitalize;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
26193
|
-
}
|
|
26194
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordTableComponent, decorators: [{
|
|
26195
|
-
type: Component,
|
|
26196
|
-
args: [{ selector: 'gn-ui-record-table', template: "<div>\n <div *ngIf=\"totalHits\" class=\"\">\n <div class=\"flex records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: records.length,\n hits: totalHits\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"selectedRecords.length > 0\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecords.length }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(3,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userDetail</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.username</span>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <span translate>dashboard.records.userEmail</span>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col text-16\">\n {{ record.name }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.username }}\n </div>\n <div class=\"record-table-col text-16\">\n {{ record.emailAddresses[0] }}\n </div>\n </div>\n </div>\n\n <div\n class=\"grid grid-cols-[repeat(6,minmax(0,max-content))] gap-x-4 gap-y-1\"\n *ngIf=\"!records[0].name\"\n >\n <div class=\"contents text-sm\">\n <div class=\"flex justify-center items-center\">\n <gn-ui-checkbox\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isSomeSelected()\"\n (changed)=\"selectAll()\"\n type=\"default\"\n >\n </gn-ui-checkbox>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1 text-left\"\n (buttonClick)=\"setSortBy('resourceTitleObject.default.keyword')\"\n >\n <span translate>record.metadata.title</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('resourceTitleObject.default.keyword', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div translate=\"\" class=\"record-table-header text-gray-400 flex gap-1\">\n record.metadata.formats\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('recordOwner')\"\n >\n <span translate>record.metadata.author</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('recordOwner', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('changeDate')\"\n >\n <span translate>record.metadata.updatedOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('changeDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n <div class=\"record-table-header text-gray-400 flex gap-1\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"px-3 pl-0 space-x-1\"\n (buttonClick)=\"setSortBy('createDate')\"\n >\n <span translate>record.metadata.createdOn</span>\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'desc')\"\n >\n expand_more</mat-icon\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"isSortedBy('createDate', 'asc')\"\n >\n expand_less</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n <div\n class=\"contents hover:text-gray-900 text-gray-800 cursor-pointer\"\n (click)=\"recordSelect.emit(record)\"\n *ngFor=\"let record of records\"\n >\n <div class=\"record-table-col\">\n <gn-ui-checkbox\n [checked]=\"isChecked(record)\"\n (changed)=\"handleRecordSelectedChange($event, record)\"\n type=\"default\"\n ></gn-ui-checkbox>\n </div>\n <div\n [title]=\"record.title\"\n class=\"record-table-col text-16 self-center\"\n >\n {{ record.title }}\n </div>\n <div\n class=\"record-table-col flex justify-start items-center gap-2 text-16\"\n [title]=\"formats.join(', ')\"\n *ngIf=\"getRecordFormats(record) as formats\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div\n class=\"flex-shrink-0\"\n *ngIf=\"!record.name && formats.slice(2).length > 0\"\n >\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div class=\"record-table-col flex items-center gap-2 text-16\">\n <mat-icon class=\"material-symbols-outlined\"> person </mat-icon>\n <span class=\"\">{{ formatUserInfo(record.extras?.ownerInfo) }}</span>\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordUpdated) }}\n </div>\n <div class=\"record-table-col text-16 self-center\">\n {{ dateToString(record.recordCreated) }}\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [".record-table-col{@apply px-5 py-3 items-center truncate;}.record-table-header{@apply record-table-col capitalize;}\n"] }]
|
|
26197
|
-
}], propDecorators: { selectedRecords: [{
|
|
26198
|
-
type: Input
|
|
26199
|
-
}], records: [{
|
|
26200
|
-
type: Input
|
|
26201
|
-
}], totalHits: [{
|
|
26202
|
-
type: Input
|
|
26203
|
-
}], sortBy: [{
|
|
26204
|
-
type: Input
|
|
26205
|
-
}], recordClick: [{
|
|
26206
|
-
type: Output
|
|
26207
|
-
}], recordsSelect: [{
|
|
26208
|
-
type: Output
|
|
26209
|
-
}], recordsDeselect: [{
|
|
26210
|
-
type: Output
|
|
26211
|
-
}], sortByChange: [{
|
|
26212
|
-
type: Output
|
|
26213
|
-
}] } });
|
|
26214
|
-
|
|
26215
26221
|
class UiSearchModule {
|
|
26216
26222
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
26217
26223
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, declarations: [RecordPreviewComponent,
|
|
@@ -26224,8 +26230,7 @@ class UiSearchModule {
|
|
|
26224
26230
|
ResultsHitsNumberComponent,
|
|
26225
26231
|
ResultsListItemComponent,
|
|
26226
26232
|
RecordPreviewFeedComponent,
|
|
26227
|
-
RecordPreviewRowComponent,
|
|
26228
|
-
RecordTableComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26233
|
+
RecordPreviewRowComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
26229
26234
|
FacetsModule$1,
|
|
26230
26235
|
FormsModule,
|
|
26231
26236
|
ReactiveFormsModule,
|
|
@@ -26236,7 +26241,8 @@ class UiSearchModule {
|
|
|
26236
26241
|
UiElementsModule,
|
|
26237
26242
|
MatIconModule,
|
|
26238
26243
|
MatCheckboxModule,
|
|
26239
|
-
RouterLink
|
|
26244
|
+
RouterLink,
|
|
26245
|
+
InteractiveTableComponent], exports: [RecordPreviewListComponent,
|
|
26240
26246
|
RecordPreviewCardComponent,
|
|
26241
26247
|
RecordPreviewTextComponent,
|
|
26242
26248
|
RecordPreviewTitleComponent,
|
|
@@ -26246,8 +26252,7 @@ class UiSearchModule {
|
|
|
26246
26252
|
RecordPreviewComponent,
|
|
26247
26253
|
ResultsHitsNumberComponent,
|
|
26248
26254
|
RecordPreviewFeedComponent,
|
|
26249
|
-
RecordPreviewRowComponent
|
|
26250
|
-
RecordTableComponent] }); }
|
|
26255
|
+
RecordPreviewRowComponent] }); }
|
|
26251
26256
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, providers: [
|
|
26252
26257
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
26253
26258
|
], imports: [CommonModule,
|
|
@@ -26262,7 +26267,8 @@ class UiSearchModule {
|
|
|
26262
26267
|
UiInputsModule,
|
|
26263
26268
|
UiElementsModule,
|
|
26264
26269
|
MatIconModule,
|
|
26265
|
-
MatCheckboxModule,
|
|
26270
|
+
MatCheckboxModule,
|
|
26271
|
+
InteractiveTableComponent, FacetsModule$1] }); }
|
|
26266
26272
|
}
|
|
26267
26273
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, decorators: [{
|
|
26268
26274
|
type: NgModule,
|
|
@@ -26279,7 +26285,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26279
26285
|
ResultsListItemComponent,
|
|
26280
26286
|
RecordPreviewFeedComponent,
|
|
26281
26287
|
RecordPreviewRowComponent,
|
|
26282
|
-
RecordTableComponent,
|
|
26283
26288
|
],
|
|
26284
26289
|
imports: [
|
|
26285
26290
|
CommonModule,
|
|
@@ -26296,6 +26301,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26296
26301
|
MatIconModule,
|
|
26297
26302
|
MatCheckboxModule,
|
|
26298
26303
|
RouterLink,
|
|
26304
|
+
InteractiveTableComponent,
|
|
26299
26305
|
],
|
|
26300
26306
|
exports: [
|
|
26301
26307
|
RecordPreviewListComponent,
|
|
@@ -26309,7 +26315,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26309
26315
|
ResultsHitsNumberComponent,
|
|
26310
26316
|
RecordPreviewFeedComponent,
|
|
26311
26317
|
RecordPreviewRowComponent,
|
|
26312
|
-
RecordTableComponent,
|
|
26313
26318
|
],
|
|
26314
26319
|
providers: [
|
|
26315
26320
|
{ provide: RESULTS_LAYOUT_CONFIG, useValue: DEFAULT_RESULTS_LAYOUT_CONFIG },
|
|
@@ -27356,8 +27361,11 @@ class FuzzySearchComponent {
|
|
|
27356
27361
|
this.searchService.updateFilters({ any });
|
|
27357
27362
|
}
|
|
27358
27363
|
}
|
|
27359
|
-
handleInputCleared() {
|
|
27360
|
-
this.
|
|
27364
|
+
async handleInputCleared() {
|
|
27365
|
+
const currentSearchFilters = await firstValueFrom(this.searchFacade.searchFilters$);
|
|
27366
|
+
if (currentSearchFilters.any) {
|
|
27367
|
+
this.searchService.updateFilters({ any: '' });
|
|
27368
|
+
}
|
|
27361
27369
|
}
|
|
27362
27370
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27363
27371
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n [value]=\"searchInputValue$ | async\"\n [clearOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n></gn-ui-autocomplete>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "action", "value", "clearOnSelection", "autoFocus", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -27698,9 +27706,11 @@ class SearchEffects {
|
|
|
27698
27706
|
// I could not get this to work (maybe a bug in rxjs?)
|
|
27699
27707
|
switchMap$1(([, state]) => this.favoritesService.myFavoritesUuid$.pipe(take(1), map$1((favorites) => [state, favorites]))), switchMap$1(([state, favorites]) => {
|
|
27700
27708
|
if (!state.params.useSpatialFilter || !this.filterGeometry$) {
|
|
27701
|
-
return of([state, favorites,
|
|
27709
|
+
return of([state, favorites, undefined]);
|
|
27702
27710
|
}
|
|
27703
27711
|
return this.filterGeometry$.pipe(tap$2((geom) => {
|
|
27712
|
+
if (!geom)
|
|
27713
|
+
return;
|
|
27704
27714
|
try {
|
|
27705
27715
|
const trace = valid$1(geom, true);
|
|
27706
27716
|
if (trace?.length > 0) {
|
|
@@ -27712,7 +27722,7 @@ class SearchEffects {
|
|
|
27712
27722
|
throw new Error();
|
|
27713
27723
|
}
|
|
27714
27724
|
}), map$1((geom) => [state, favorites, geom]), catchError((e) => {
|
|
27715
|
-
return of([state, favorites,
|
|
27725
|
+
return of([state, favorites, undefined]);
|
|
27716
27726
|
}));
|
|
27717
27727
|
}), switchMap$1(([state, favorites, geometry]) => {
|
|
27718
27728
|
const { currentPage, pageSize, sort } = state.params;
|
|
@@ -28251,6 +28261,115 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28251
28261
|
}]
|
|
28252
28262
|
}] });
|
|
28253
28263
|
|
|
28264
|
+
class ResultsTableComponent {
|
|
28265
|
+
constructor(searchFacade, searchService, selectionService) {
|
|
28266
|
+
this.searchFacade = searchFacade;
|
|
28267
|
+
this.searchService = searchService;
|
|
28268
|
+
this.selectionService = selectionService;
|
|
28269
|
+
this.recordClick = new EventEmitter();
|
|
28270
|
+
this.records$ = this.searchFacade.results$;
|
|
28271
|
+
this.recordCount$ = this.searchFacade.resultsHits$;
|
|
28272
|
+
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
28273
|
+
}
|
|
28274
|
+
dateToString(date) {
|
|
28275
|
+
return date?.toLocaleDateString(undefined, {
|
|
28276
|
+
year: 'numeric',
|
|
28277
|
+
month: 'long',
|
|
28278
|
+
day: 'numeric',
|
|
28279
|
+
timeZone: 'UTC',
|
|
28280
|
+
});
|
|
28281
|
+
}
|
|
28282
|
+
getStatus(isPublishedToAll) {
|
|
28283
|
+
return isPublishedToAll ? 'published' : 'not published';
|
|
28284
|
+
}
|
|
28285
|
+
getRecordFormats(record) {
|
|
28286
|
+
if (record.kind === 'service' || !('distributions' in record)) {
|
|
28287
|
+
return [];
|
|
28288
|
+
}
|
|
28289
|
+
const formats = Array.from(new Set(record.distributions.map((distribution) => getFileFormat(distribution)))).filter((format) => !!format);
|
|
28290
|
+
formats.sort((a, b) => getFormatPriority(b) - getFormatPriority(a));
|
|
28291
|
+
return formats;
|
|
28292
|
+
}
|
|
28293
|
+
formatUserInfo(userInfo) {
|
|
28294
|
+
const infos = (typeof userInfo === 'string' ? userInfo : '').split('|');
|
|
28295
|
+
if (infos && infos.length === 4) {
|
|
28296
|
+
return `${infos[2]} ${infos[1]}`;
|
|
28297
|
+
}
|
|
28298
|
+
return undefined;
|
|
28299
|
+
}
|
|
28300
|
+
getBadgeColor(format) {
|
|
28301
|
+
return getBadgeColor(format);
|
|
28302
|
+
}
|
|
28303
|
+
handleRecordClick(item) {
|
|
28304
|
+
this.recordClick.emit(item);
|
|
28305
|
+
}
|
|
28306
|
+
setSortBy(col, order) {
|
|
28307
|
+
this.searchService.setSortBy([order, col]);
|
|
28308
|
+
}
|
|
28309
|
+
isSortedBy(col) {
|
|
28310
|
+
return this.searchFacade.sortBy$.pipe(take(1), map$1((sortOrder) => {
|
|
28311
|
+
const sortArray = Array.isArray(sortOrder[0])
|
|
28312
|
+
? sortOrder
|
|
28313
|
+
: [sortOrder];
|
|
28314
|
+
for (const sort of sortArray) {
|
|
28315
|
+
if (sort[1] === col) {
|
|
28316
|
+
return sort[0];
|
|
28317
|
+
}
|
|
28318
|
+
}
|
|
28319
|
+
return null;
|
|
28320
|
+
}));
|
|
28321
|
+
}
|
|
28322
|
+
isChecked(record) {
|
|
28323
|
+
return this.selectedRecords$.pipe(take(1), map$1((selectedRecords) => {
|
|
28324
|
+
return selectedRecords.includes(record.uniqueIdentifier);
|
|
28325
|
+
}));
|
|
28326
|
+
}
|
|
28327
|
+
handleRecordSelectedChange(selected, record) {
|
|
28328
|
+
if (!selected) {
|
|
28329
|
+
this.selectionService.deselectRecords([record]);
|
|
28330
|
+
}
|
|
28331
|
+
else {
|
|
28332
|
+
this.selectionService.selectRecords([record]);
|
|
28333
|
+
}
|
|
28334
|
+
}
|
|
28335
|
+
async toggleSelectAll() {
|
|
28336
|
+
const records = await firstValueFrom(this.records$);
|
|
28337
|
+
if (await firstValueFrom(this.isAllSelected())) {
|
|
28338
|
+
this.selectionService.deselectRecords(records);
|
|
28339
|
+
}
|
|
28340
|
+
else {
|
|
28341
|
+
this.selectionService.selectRecords(records);
|
|
28342
|
+
}
|
|
28343
|
+
}
|
|
28344
|
+
isAllSelected() {
|
|
28345
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28346
|
+
return records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28347
|
+
}));
|
|
28348
|
+
}
|
|
28349
|
+
isSomeSelected() {
|
|
28350
|
+
return combineLatest([this.records$, this.selectedRecords$]).pipe(take(1), map$1(([records, selectedRecords]) => {
|
|
28351
|
+
const allSelected = records.every((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28352
|
+
const someSelected = records.some((record) => selectedRecords.includes(record.uniqueIdentifier));
|
|
28353
|
+
return !allSelected && someSelected;
|
|
28354
|
+
}));
|
|
28355
|
+
}
|
|
28356
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28357
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<div>\n <div class=\"flex\" data-cy=\"records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: (records$ | async).length,\n hits: (recordCount$ | async)\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"(selectedRecords$ | async).length as selectedRecordCount\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecordCount }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n >\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"flex-shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n </gn-ui-interactive-table>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
28358
|
+
}
|
|
28359
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
28360
|
+
type: Component,
|
|
28361
|
+
args: [{ selector: 'gn-ui-results-table', standalone: true, imports: [
|
|
28362
|
+
CommonModule,
|
|
28363
|
+
UiInputsModule,
|
|
28364
|
+
InteractiveTableComponent,
|
|
28365
|
+
InteractiveTableColumnComponent,
|
|
28366
|
+
MatIconModule,
|
|
28367
|
+
TranslateModule,
|
|
28368
|
+
], template: "<div>\n <div class=\"flex\" data-cy=\"records-information\">\n <div\n translate\n class=\"my-8 ml-4 block text-gray-800\"\n [translateParams]=\"{\n displayed: (records$ | async).length,\n hits: (recordCount$ | async)\n }\"\n >\n results.records.hits.displayedOn\n </div>\n <div\n *ngIf=\"(selectedRecords$ | async).length as selectedRecordCount\"\n class=\"my-8 ml-6 block text-gray-400 selected-records\"\n translate\n [translateParams]=\"{ amount: selectedRecordCount }\"\n >\n results.records.hits.selected\n </div>\n </div>\n\n <gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n >\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2 flex-shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"flex-shrink-0\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n </gn-ui-interactive-table>\n</div>\n" }]
|
|
28369
|
+
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }]; }, propDecorators: { recordClick: [{
|
|
28370
|
+
type: Output
|
|
28371
|
+
}] } });
|
|
28372
|
+
|
|
28254
28373
|
class AddLayerRecordPreviewComponent extends RecordPreviewComponent {
|
|
28255
28374
|
get mapLinks() {
|
|
28256
28375
|
return this.record.distributions.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API));
|
|
@@ -28577,6 +28696,121 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28577
28696
|
args: [{ selector: 'gn-ui-map-container', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-map-context [context]=\"context$ | async\"></gn-ui-map-context>\n" }]
|
|
28578
28697
|
}], ctorParameters: function () { return [{ type: MapFacade }]; } });
|
|
28579
28698
|
|
|
28699
|
+
const GEOCODING_PROVIDER = new InjectionToken('geocoding-provider');
|
|
28700
|
+
class GeocodingService {
|
|
28701
|
+
constructor(provider) {
|
|
28702
|
+
this.provider = provider;
|
|
28703
|
+
}
|
|
28704
|
+
query(text) {
|
|
28705
|
+
let queryObservable;
|
|
28706
|
+
switch (this.provider[0]) {
|
|
28707
|
+
case 'geoadmin':
|
|
28708
|
+
queryObservable = from(queryGeoadmin(text, this.provider[1]));
|
|
28709
|
+
break;
|
|
28710
|
+
case 'geonames':
|
|
28711
|
+
queryObservable = from(queryGeonames(text, this.provider[1]));
|
|
28712
|
+
break;
|
|
28713
|
+
case 'data-gouv-fr':
|
|
28714
|
+
queryObservable = from(queryDataGouvFr(text, this.provider[1]));
|
|
28715
|
+
break;
|
|
28716
|
+
default:
|
|
28717
|
+
return throwError(() => new Error(`Unsupported geocoding provider: ${this.provider[0]}`));
|
|
28718
|
+
}
|
|
28719
|
+
return queryObservable.pipe(catchError((error) => throwError(error)));
|
|
28720
|
+
}
|
|
28721
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, deps: [{ token: GEOCODING_PROVIDER }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
28722
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, providedIn: 'root' }); }
|
|
28723
|
+
}
|
|
28724
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingService, decorators: [{
|
|
28725
|
+
type: Injectable,
|
|
28726
|
+
args: [{
|
|
28727
|
+
providedIn: 'root',
|
|
28728
|
+
}]
|
|
28729
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
28730
|
+
type: Inject,
|
|
28731
|
+
args: [GEOCODING_PROVIDER]
|
|
28732
|
+
}] }]; } });
|
|
28733
|
+
|
|
28734
|
+
class GeocodingComponent {
|
|
28735
|
+
constructor(mapManager, geocodingService) {
|
|
28736
|
+
this.mapManager = mapManager;
|
|
28737
|
+
this.geocodingService = geocodingService;
|
|
28738
|
+
this.searchText = '';
|
|
28739
|
+
this.results = [];
|
|
28740
|
+
this.searchTextChanged = new Subject();
|
|
28741
|
+
this.destroy$ = new Subject();
|
|
28742
|
+
this.errorMessage = null;
|
|
28743
|
+
this.searchTextChanged
|
|
28744
|
+
.pipe(debounceTime(300), switchMap$1((searchText) => {
|
|
28745
|
+
return from(this.geocodingService.query(searchText)).pipe(catchError$1((error) => {
|
|
28746
|
+
this.errorMessage =
|
|
28747
|
+
'An error occurred while searching. Please try again.';
|
|
28748
|
+
console.error(error);
|
|
28749
|
+
return [];
|
|
28750
|
+
}));
|
|
28751
|
+
}), takeUntil(this.destroy$))
|
|
28752
|
+
.subscribe((results) => {
|
|
28753
|
+
this.results = results;
|
|
28754
|
+
});
|
|
28755
|
+
}
|
|
28756
|
+
ngOnDestroy() {
|
|
28757
|
+
this.destroy$.next();
|
|
28758
|
+
this.destroy$.complete();
|
|
28759
|
+
}
|
|
28760
|
+
onSearchChange(searchText) {
|
|
28761
|
+
if (!searchText) {
|
|
28762
|
+
this.clearSearch();
|
|
28763
|
+
return;
|
|
28764
|
+
}
|
|
28765
|
+
else {
|
|
28766
|
+
this.searchTextChanged.next(searchText);
|
|
28767
|
+
}
|
|
28768
|
+
}
|
|
28769
|
+
clearSearch() {
|
|
28770
|
+
this.searchText = '';
|
|
28771
|
+
this.results = [];
|
|
28772
|
+
this.errorMessage = null;
|
|
28773
|
+
}
|
|
28774
|
+
zoomToLocation(result) {
|
|
28775
|
+
const map = this.mapManager.map;
|
|
28776
|
+
const view = map.getView();
|
|
28777
|
+
const geometry = result.geom;
|
|
28778
|
+
if (geometry.type === 'Point') {
|
|
28779
|
+
this.zoomToPoint(geometry.coordinates, view);
|
|
28780
|
+
}
|
|
28781
|
+
else if (geometry.type === 'Polygon') {
|
|
28782
|
+
this.zoomToPolygon(geometry.coordinates, view);
|
|
28783
|
+
}
|
|
28784
|
+
else {
|
|
28785
|
+
console.error(`Unsupported geometry type: ${geometry.type}`);
|
|
28786
|
+
}
|
|
28787
|
+
}
|
|
28788
|
+
zoomToPoint(pointCoords, view) {
|
|
28789
|
+
const transformedCoords = fromLonLat(pointCoords);
|
|
28790
|
+
view.setCenter(transformedCoords);
|
|
28791
|
+
view.setZoom(12);
|
|
28792
|
+
}
|
|
28793
|
+
zoomToPolygon(polygonCoords, view) {
|
|
28794
|
+
const transformedCoords = polygonCoords[0].map((coord) => fromLonLat(coord));
|
|
28795
|
+
const polygon = new Polygon([transformedCoords]);
|
|
28796
|
+
view.fit(polygon, {
|
|
28797
|
+
duration: 100,
|
|
28798
|
+
maxZoom: 12,
|
|
28799
|
+
});
|
|
28800
|
+
}
|
|
28801
|
+
onEnterPress() {
|
|
28802
|
+
if (this.results && this.results.length > 0) {
|
|
28803
|
+
this.zoomToLocation(this.results[0]);
|
|
28804
|
+
}
|
|
28805
|
+
}
|
|
28806
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, deps: [{ token: MapManagerService }, { token: GeocodingService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28807
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: GeocodingComponent, selector: "gn-ui-geocoding", ngImport: i0, template: "<gn-ui-search-input\n [(value)]=\"searchText\"\n (valueChange)=\"onSearchChange($event)\"\n (keyup.enter)=\"onEnterPress()\"\n [placeholder]=\"'map.geocoding.placeholder' | translate\"\n>\n</gn-ui-search-input>\n<ul\n class=\"bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg\"\n *ngIf=\"results && results.length\"\n>\n <li\n *ngFor=\"let result of results\"\n (click)=\"zoomToLocation(result)\"\n class=\"flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out\"\n >\n <svg\n class=\"stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <span class=\"font-sans font-semibold ml-4\">{{ result.label }}</span>\n </li>\n</ul>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: ["value", "placeholder"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28808
|
+
}
|
|
28809
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GeocodingComponent, decorators: [{
|
|
28810
|
+
type: Component,
|
|
28811
|
+
args: [{ selector: 'gn-ui-geocoding', template: "<gn-ui-search-input\n [(value)]=\"searchText\"\n (valueChange)=\"onSearchChange($event)\"\n (keyup.enter)=\"onEnterPress()\"\n [placeholder]=\"'map.geocoding.placeholder' | translate\"\n>\n</gn-ui-search-input>\n<ul\n class=\"bg-gray-50 border border-gray-200 w-full mt-2 shadow-sm rounded-lg\"\n *ngIf=\"results && results.length\"\n>\n <li\n *ngFor=\"let result of results\"\n (click)=\"zoomToLocation(result)\"\n class=\"flex items-center pl-8 pr-4 py-2 border-b border-gray-200 relative cursor-pointer hover:bg-blue-100 hover:text-gray-800 transition duration-300 ease-in-out\"\n >\n <svg\n class=\"stroke-current text-blue-500 absolute w-5 h-5 left-3 top-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z\"\n />\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 11a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n <span class=\"font-sans font-semibold ml-4\">{{ result.label }}</span>\n </li>\n</ul>\n" }]
|
|
28812
|
+
}], ctorParameters: function () { return [{ type: MapManagerService }, { type: GeocodingService }]; } });
|
|
28813
|
+
|
|
28580
28814
|
class FeatureMapModule {
|
|
28581
28815
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28582
28816
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, declarations: [MapContextComponent,
|
|
@@ -28587,7 +28821,8 @@ class FeatureMapModule {
|
|
|
28587
28821
|
AddLayerRecordPreviewComponent,
|
|
28588
28822
|
AddLayerFromWmsComponent,
|
|
28589
28823
|
AddLayerFromFileComponent,
|
|
28590
|
-
AddLayerFromWfsComponent
|
|
28824
|
+
AddLayerFromWfsComponent,
|
|
28825
|
+
GeocodingComponent], imports: [CommonModule,
|
|
28591
28826
|
UiMapModule,
|
|
28592
28827
|
UiLayoutModule,
|
|
28593
28828
|
MatIconModule,
|
|
@@ -28598,13 +28833,18 @@ class FeatureMapModule {
|
|
|
28598
28833
|
MapInstanceDirective,
|
|
28599
28834
|
LayersPanelComponent,
|
|
28600
28835
|
AddLayerFromCatalogComponent,
|
|
28601
|
-
MapContainerComponent
|
|
28836
|
+
MapContainerComponent,
|
|
28837
|
+
GeocodingComponent] }); }
|
|
28602
28838
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureMapModule, providers: [
|
|
28603
28839
|
{
|
|
28604
28840
|
provide: FEATURE_MAP_OPTIONS,
|
|
28605
28841
|
useValue: defaultMapOptions,
|
|
28606
28842
|
},
|
|
28607
28843
|
MapFacade,
|
|
28844
|
+
{
|
|
28845
|
+
provide: GEOCODING_PROVIDER,
|
|
28846
|
+
useValue: ['geonames', { maxRows: 5 }],
|
|
28847
|
+
},
|
|
28608
28848
|
], imports: [CommonModule,
|
|
28609
28849
|
UiMapModule,
|
|
28610
28850
|
UiLayoutModule,
|
|
@@ -28630,6 +28870,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28630
28870
|
AddLayerFromWmsComponent,
|
|
28631
28871
|
AddLayerFromFileComponent,
|
|
28632
28872
|
AddLayerFromWfsComponent,
|
|
28873
|
+
GeocodingComponent,
|
|
28633
28874
|
],
|
|
28634
28875
|
exports: [
|
|
28635
28876
|
MapContextComponent,
|
|
@@ -28637,6 +28878,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28637
28878
|
LayersPanelComponent,
|
|
28638
28879
|
AddLayerFromCatalogComponent,
|
|
28639
28880
|
MapContainerComponent,
|
|
28881
|
+
GeocodingComponent,
|
|
28640
28882
|
],
|
|
28641
28883
|
imports: [
|
|
28642
28884
|
CommonModule,
|
|
@@ -28657,6 +28899,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
28657
28899
|
useValue: defaultMapOptions,
|
|
28658
28900
|
},
|
|
28659
28901
|
MapFacade,
|
|
28902
|
+
{
|
|
28903
|
+
provide: GEOCODING_PROVIDER,
|
|
28904
|
+
useValue: ['geonames', { maxRows: 5 }],
|
|
28905
|
+
},
|
|
28660
28906
|
],
|
|
28661
28907
|
}]
|
|
28662
28908
|
}] });
|
|
@@ -30018,15 +30264,16 @@ class DataService {
|
|
|
30018
30264
|
// Pour DL toutes les données
|
|
30019
30265
|
return this.getDownloadUrlsFromWfs(wfsLink.url.toString(), wfsLink.name).pipe(map$1((urls) => urls.all), map$1((urls) => Object.keys(urls).map((format) => ({
|
|
30020
30266
|
...wfsLink,
|
|
30267
|
+
type: 'download',
|
|
30021
30268
|
url: new URL(urls[format]),
|
|
30022
|
-
mimeType: getMimeTypeForFormat(
|
|
30269
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
30023
30270
|
}))));
|
|
30024
30271
|
}
|
|
30025
30272
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
30026
30273
|
return ['json', 'geojson'].map((format) => ({
|
|
30027
30274
|
...esriRestLink,
|
|
30028
30275
|
url: new URL(this.getDownloadUrlFromEsriRest(esriRestLink.url.toString(), format)),
|
|
30029
|
-
mimeType: getMimeTypeForFormat(
|
|
30276
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
30030
30277
|
}));
|
|
30031
30278
|
}
|
|
30032
30279
|
readAsGeoJson(link) {
|
|
@@ -30420,12 +30667,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
30420
30667
|
}] } });
|
|
30421
30668
|
|
|
30422
30669
|
class MapViewComponent {
|
|
30423
|
-
constructor(mdViewFacade, mapManager, mapUtils, dataService,
|
|
30670
|
+
constructor(mdViewFacade, mapManager, mapUtils, dataService, featureInfo, changeRef, styleService) {
|
|
30424
30671
|
this.mdViewFacade = mdViewFacade;
|
|
30425
30672
|
this.mapManager = mapManager;
|
|
30426
30673
|
this.mapUtils = mapUtils;
|
|
30427
30674
|
this.dataService = dataService;
|
|
30428
|
-
this.proxy = proxy;
|
|
30429
30675
|
this.featureInfo = featureInfo;
|
|
30430
30676
|
this.changeRef = changeRef;
|
|
30431
30677
|
this.styleService = styleService;
|
|
@@ -30460,7 +30706,7 @@ class MapViewComponent {
|
|
|
30460
30706
|
return of([]);
|
|
30461
30707
|
}), finalize(() => (this.loading = false)));
|
|
30462
30708
|
}));
|
|
30463
|
-
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => this.mapUtils.getLayerExtent(layers[0]).pipe(catchError((error) => {
|
|
30709
|
+
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => from(this.mapUtils.getLayerExtent(layers[0])).pipe(catchError((error) => {
|
|
30464
30710
|
console.warn(error); // FIXME: report this to the user somehow
|
|
30465
30711
|
return of(undefined);
|
|
30466
30712
|
}), map$1((extent) => ({
|
|
@@ -30468,7 +30714,18 @@ class MapViewComponent {
|
|
|
30468
30714
|
view: {
|
|
30469
30715
|
extent,
|
|
30470
30716
|
},
|
|
30471
|
-
})), tap$1(() => this.resetSelection()))))
|
|
30717
|
+
})), tap$1(() => this.resetSelection()))), withLatestFrom$1(this.mdViewFacade.metadata$), map$1(([context, metadata]) => {
|
|
30718
|
+
if (context.view.extent)
|
|
30719
|
+
return context;
|
|
30720
|
+
const extent = this.mapUtils.getRecordExtent(metadata);
|
|
30721
|
+
return {
|
|
30722
|
+
...context,
|
|
30723
|
+
view: {
|
|
30724
|
+
...context.view,
|
|
30725
|
+
extent,
|
|
30726
|
+
},
|
|
30727
|
+
};
|
|
30728
|
+
}));
|
|
30472
30729
|
}
|
|
30473
30730
|
ngOnDestroy() {
|
|
30474
30731
|
this.subscription.unsubscribe();
|
|
@@ -30521,13 +30778,13 @@ class MapViewComponent {
|
|
|
30521
30778
|
selectLinkToDisplay(link) {
|
|
30522
30779
|
this.selectedLinkIndex$.next(link);
|
|
30523
30780
|
}
|
|
30524
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapManagerService }, { token: MapUtilsService }, { token: DataService }, { token:
|
|
30781
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapManagerService }, { token: MapUtilsService }, { token: DataService }, { token: FeatureInfoService }, { token: i0.ChangeDetectorRef }, { token: MapStyleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30525
30782
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MapViewComponent, selector: "gn-ui-map-view", ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MapContextComponent, selector: "gn-ui-map-context", inputs: ["context", "mapConfig"], outputs: ["featureClicked"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "mapConfig"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30526
30783
|
}
|
|
30527
30784
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
30528
30785
|
type: Component,
|
|
30529
30786
|
args: [{ selector: 'gn-ui-map-view', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <div class=\"w-full flex justify-end mb-7 mt-1\">\n <gn-ui-dropdown-selector\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n <gn-ui-external-viewer-button\n class=\"shrink-0 py-1 place-self-end\"\n [link]=\"selectedLink$ | async\"\n [mapConfig]=\"mapConfig\"\n >\n </gn-ui-external-viewer-button>\n </div>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-context\n [context]=\"mapContext$ | async\"\n [mapConfig]=\"mapConfig\"\n ></gn-ui-map-context>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <button\n (click)=\"resetSelection()\"\n class=\"rounded bg-primary-opacity-25 text-white absolute right-[0.5em]\"\n >\n <mat-icon\n class=\"material-symbols-outlined align-middle text-sm\"\n style=\"height: 21px\"\n >close</mat-icon\n >\n </button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"error_outline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
|
|
30530
|
-
}], ctorParameters: function () { return [{ type: MdViewFacade }, { type: MapManagerService }, { type: MapUtilsService }, { type: DataService }, { type:
|
|
30787
|
+
}], ctorParameters: function () { return [{ type: MdViewFacade }, { type: MapManagerService }, { type: MapUtilsService }, { type: DataService }, { type: FeatureInfoService }, { type: i0.ChangeDetectorRef }, { type: MapStyleService }]; } });
|
|
30531
30788
|
|
|
30532
30789
|
class DataViewComponent {
|
|
30533
30790
|
constructor(mdViewFacade) {
|
|
@@ -30979,13 +31236,6 @@ class MyOrgService {
|
|
|
30979
31236
|
constructor(platformService, orgService) {
|
|
30980
31237
|
this.platformService = platformService;
|
|
30981
31238
|
this.orgService = orgService;
|
|
30982
|
-
this.myOrgDataSubject = new BehaviorSubject({
|
|
30983
|
-
orgName: '',
|
|
30984
|
-
logoUrl: '',
|
|
30985
|
-
recordCount: 0,
|
|
30986
|
-
userCount: 0,
|
|
30987
|
-
userList: [],
|
|
30988
|
-
});
|
|
30989
31239
|
this.myOrgData$ = combineLatest([
|
|
30990
31240
|
this.platformService.getMe(),
|
|
30991
31241
|
this.platformService.getUsers(),
|
|
@@ -31004,7 +31254,7 @@ class MyOrgService {
|
|
|
31004
31254
|
userList,
|
|
31005
31255
|
userCount,
|
|
31006
31256
|
};
|
|
31007
|
-
}));
|
|
31257
|
+
}), shareReplay(1));
|
|
31008
31258
|
}
|
|
31009
31259
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MyOrgService, deps: [{ token: PlatformServiceInterface }, { token: OrganizationsServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31010
31260
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MyOrgService, providedIn: 'root' }); }
|
|
@@ -31697,11 +31947,11 @@ class RecordFormComponent {
|
|
|
31697
31947
|
return field.config.model;
|
|
31698
31948
|
}
|
|
31699
31949
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, deps: [{ token: EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31700
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31950
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordFormComponent, isStandalone: true, selector: "gn-ui-record-form", ngImport: i0, template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: FormFieldComponent, selector: "gn-ui-form-field", inputs: ["config", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31701
31951
|
}
|
|
31702
31952
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
31703
31953
|
type: Component,
|
|
31704
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n" }]
|
|
31954
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, UiInputsModule], template: "<div class=\"flex flex-col gap-6\">\n <gn-ui-form-field\n *ngFor=\"let field of editorService.fields$ | async; trackBy: fieldTracker\"\n [config]=\"field.config\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field.config.model, $event)\"\n ></gn-ui-form-field>\n</div>\n" }]
|
|
31705
31955
|
}], ctorParameters: function () { return [{ type: EditorService }]; } });
|
|
31706
31956
|
|
|
31707
31957
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -32069,5 +32319,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32069
32319
|
* Generated bundle index. Do not edit.
|
|
32070
32320
|
*/
|
|
32071
32321
|
|
|
32072
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, Gn4MetadataMapper, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService,
|
|
32322
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldFileComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4MetadataMapper, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, LANGUAGES_LIST, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslateTestingModule, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, dragPanCondition, dropEmptyTranslations, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getThemeConfig, initSearch, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapLogo, mapOrganization, mapReducer, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$1 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, selectFallback, selectFallbackFields, selectField, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, toModel, toXml, totalPages, updateLayer };
|
|
32073
32323
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|