geonetwork-ui 2.3.0-dev.3efe236f → 2.3.0-dev.431347d3
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/iso19139/read-parts.mjs +2 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +9 -7
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +35 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +64 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +15 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +104 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +25 -6
- package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +23 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +73 -20
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +37 -8
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +6 -2
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +4 -3
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +1 -3
- package/esm2022/libs/feature/search/src/index.mjs +2 -1
- package/esm2022/libs/feature/search/src/lib/results-layout/results-layout.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/sort-by/sort-by.component.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/utils/service/fields.service.mjs +1 -1
- package/esm2022/libs/ui/catalog/src/lib/language-switcher/language-switcher.component.mjs +1 -1
- package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/lib/api-card/api-card.component.mjs +3 -2
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +16 -3
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +98 -36
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +1 -6
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +3 -5
- package/esm2022/libs/ui/inputs/src/index.mjs +16 -15
- package/esm2022/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.mjs +4 -3
- package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +22 -0
- package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +7 -5
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +19 -8
- package/esm2022/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.mjs +29 -0
- package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +5 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +14 -11
- package/esm2022/libs/ui/layout/src/index.mjs +2 -1
- package/esm2022/libs/ui/layout/src/lib/block-list/block-list.component.mjs +76 -0
- package/esm2022/libs/ui/layout/src/lib/carousel/carousel.component.mjs +42 -18
- package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +3 -8
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +2 -2
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +22 -1
- package/esm2022/translations/de.json +22 -14
- package/esm2022/translations/en.json +22 -14
- package/esm2022/translations/es.json +22 -14
- package/esm2022/translations/fr.json +22 -14
- package/esm2022/translations/it.json +22 -14
- package/esm2022/translations/nl.json +22 -14
- package/esm2022/translations/pt.json +22 -14
- package/fesm2022/geonetwork-ui.mjs +1520 -912
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +3 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +39 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +8 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts +21 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +4 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +10 -5
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +7 -0
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/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.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
- package/libs/feature/search/src/index.d.ts +1 -0
- package/libs/feature/search/src/index.d.ts.map +1 -1
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts +3 -3
- package/libs/feature/search/src/lib/utils/service/fields.service.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/api-card/api-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +3 -1
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +24 -4
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +29 -30
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts +1 -2
- package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +15 -14
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +9 -0
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +2 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts +12 -0
- package/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +2 -1
- package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +35 -35
- package/libs/ui/layout/src/index.d.ts +1 -0
- package/libs/ui/layout/src/index.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts +25 -0
- package/libs/ui/layout/src/lib/block-list/block-list.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts +13 -6
- package/libs/ui/layout/src/lib/carousel/carousel.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/ui-layout.module.d.ts +4 -5
- package/libs/ui/layout/src/lib/ui-layout.module.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +18 -0
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +1 -4
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +16 -10
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +8 -0
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +2 -2
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +51 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.html +8 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +64 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.html +4 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.ts +15 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +14 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +143 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +38 -33
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +21 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +22 -0
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.css +7 -0
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.html +32 -18
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +72 -17
- package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +7 -0
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +34 -8
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +5 -1
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +2 -1
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +0 -1
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +0 -2
- package/src/libs/feature/search/src/index.ts +1 -0
- package/src/libs/feature/search/src/lib/utils/service/fields.service.ts +2 -2
- package/src/libs/ui/elements/src/lib/api-card/api-card.component.ts +2 -1
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +1 -1
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.html +38 -20
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +12 -0
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +26 -10
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.ts +125 -30
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +0 -2
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +1 -1
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +0 -1
- package/src/libs/ui/inputs/src/index.ts +15 -14
- package/src/libs/ui/inputs/src/lib/check-toggle/check-toggle.component.ts +3 -0
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +3 -0
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +11 -0
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +16 -0
- package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +8 -1
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.html +1 -0
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +14 -0
- package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.css +6 -0
- package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.html +26 -0
- package/src/libs/ui/inputs/src/lib/previous-next-buttons/previous-next-buttons.component.ts +32 -0
- package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +1 -0
- package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +1 -0
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +3 -3
- package/src/libs/ui/layout/src/index.ts +1 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.css +23 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.html +20 -0
- package/src/libs/ui/layout/src/lib/block-list/block-list.component.ts +84 -0
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.css +8 -4
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.html +4 -4
- package/src/libs/ui/layout/src/lib/carousel/carousel.component.ts +45 -15
- package/src/libs/ui/layout/src/lib/ui-layout.module.ts +0 -2
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +1 -1
- package/src/libs/util/shared/src/lib/links/link-utils.ts +21 -0
- package/translations/de.json +22 -14
- package/translations/en.json +22 -14
- package/translations/es.json +22 -14
- package/translations/fr.json +22 -14
- package/translations/it.json +22 -14
- package/translations/nl.json +22 -14
- package/translations/pt.json +22 -14
- package/translations/sk.json +22 -14
|
@@ -8,11 +8,11 @@ import * as i1$1 from '@ngx-translate/core';
|
|
|
8
8
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay,
|
|
11
|
+
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, distinctUntilChanged, finalize, first, throttleTime, share, pairwise, mergeMap } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, firstValueFrom, Subject, merge, throwError, BehaviorSubject, fromEvent, timer, Subscription, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, animationFrameScheduler, from, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, exhaustMap, mergeMap as mergeMap$1, EMPTY, withLatestFrom as withLatestFrom$1,
|
|
15
|
+
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, firstValueFrom, Subject, merge, throwError, BehaviorSubject, fromEvent, timer, Subscription, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, filter as filter$1, animationFrameScheduler, from, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, exhaustMap, mergeMap as mergeMap$1, 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, Store } from '@ngrx/store';
|
|
@@ -28,8 +28,9 @@ import { transformExtent, fromLonLat } from 'ol/proj';
|
|
|
28
28
|
import ImageWMS from 'ol/source/ImageWMS';
|
|
29
29
|
import TileWMS from 'ol/source/TileWMS';
|
|
30
30
|
import VectorSource from 'ol/source/Vector';
|
|
31
|
-
import { defaults, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
31
|
+
import { defaults as defaults$1, DragPan, MouseWheelZoom } from 'ol/interaction';
|
|
32
32
|
import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } from 'ol/events/condition';
|
|
33
|
+
import { defaults } from 'ol/control.js';
|
|
33
34
|
import chroma from 'chroma-js';
|
|
34
35
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
35
36
|
import { register, fromEPSGCode } from 'ol/proj/proj4';
|
|
@@ -42,30 +43,33 @@ import TileLayer from 'ol/layer/Tile';
|
|
|
42
43
|
import XYZ from 'ol/source/XYZ';
|
|
43
44
|
import { bbox } from 'ol/loadingstrategy';
|
|
44
45
|
import WMTS from 'ol/source/WMTS';
|
|
45
|
-
import
|
|
46
|
+
import OGCVectorTile from 'ol/source/OGCVectorTile.js';
|
|
47
|
+
import { MVT, WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
48
|
+
import VectorTileLayer from 'ol/layer/VectorTile';
|
|
49
|
+
import OGCMapTile from 'ol/source/OGCMapTile.js';
|
|
50
|
+
import * as i2$4 from '@angular/material/tabs';
|
|
46
51
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
47
|
-
import * as i1$4 from '@angular/cdk/overlay';
|
|
48
|
-
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
49
52
|
import * as i2$1 from '@angular/forms';
|
|
50
53
|
import { UntypedFormControl, FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
51
|
-
import * as i5 from 'ngx-chips';
|
|
52
|
-
import { TagInputModule } from 'ngx-chips';
|
|
53
54
|
import * as i4 from '@angular/material/autocomplete';
|
|
54
55
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
55
|
-
import * as i5
|
|
56
|
+
import * as i5 from '@angular/material/core';
|
|
56
57
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
58
|
+
import * as i1$4 from '@angular/material/checkbox';
|
|
59
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
60
|
+
import * as i5$1 from 'ngx-chips';
|
|
61
|
+
import { TagInputModule } from 'ngx-chips';
|
|
62
|
+
import * as i2$2 from '@angular/material/tooltip';
|
|
63
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
64
|
+
import * as i2$3 from '@angular/material/datepicker';
|
|
65
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
57
66
|
import * as i3 from 'ngx-dropzone';
|
|
58
67
|
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
59
|
-
import * as i1$5 from '@angular/
|
|
68
|
+
import * as i1$5 from '@angular/cdk/overlay';
|
|
69
|
+
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
70
|
+
import * as i1$6 from '@angular/material/progress-spinner';
|
|
60
71
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
61
|
-
import * as i1$6 from '@angular/material/checkbox';
|
|
62
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
63
|
-
import * as i3$1 from '@angular/material/tooltip';
|
|
64
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
65
|
-
import * as i2$2 from '@angular/material/form-field';
|
|
66
72
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
67
|
-
import * as i3$2 from '@angular/material/datepicker';
|
|
68
|
-
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
69
73
|
import { MatInputModule } from '@angular/material/input';
|
|
70
74
|
import * as i1$7 from '@angular/router';
|
|
71
75
|
import { RouterModule, RouterLink, RouteReuseStrategy } from '@angular/router';
|
|
@@ -85,18 +89,17 @@ import { trigger, transition, animate, keyframes, style } from '@angular/animati
|
|
|
85
89
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
86
90
|
import * as i4$1 from '@angular/cdk/scrolling';
|
|
87
91
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
88
|
-
import * as i2$
|
|
92
|
+
import * as i2$5 from '@angular/material/sort';
|
|
89
93
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
90
94
|
import * as i1$9 from '@angular/material/table';
|
|
91
95
|
import { MatTableModule } from '@angular/material/table';
|
|
92
|
-
import * as i3$
|
|
96
|
+
import * as i3$1 from 'ng-table-virtual-scroll';
|
|
93
97
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
94
98
|
import * as Papa from 'papaparse';
|
|
95
99
|
import parseDate from 'date-fns/parse';
|
|
96
100
|
import parseIsoDate from 'date-fns/parseISO';
|
|
97
|
-
import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
98
101
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
99
|
-
import * as i3$
|
|
102
|
+
import * as i3$2 from '@ngrx/router-store';
|
|
100
103
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
101
104
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
102
105
|
|
|
@@ -856,7 +859,7 @@ function getUpdateFrequencyFromCustomPeriod(isoPeriod) {
|
|
|
856
859
|
else if (days <= 7) {
|
|
857
860
|
return {
|
|
858
861
|
per: 'week',
|
|
859
|
-
updatedTimes: Math.round(7 / days),
|
|
862
|
+
updatedTimes: Math.round(7 / days - 0.0001), // this is to make sure that 'every 2 days' = '3 times per week'
|
|
860
863
|
};
|
|
861
864
|
}
|
|
862
865
|
else if (days) {
|
|
@@ -1155,7 +1158,7 @@ function getISODuration(updateFrequency) {
|
|
|
1155
1158
|
duration.hours = Math.round(24 / updateFrequency.updatedTimes);
|
|
1156
1159
|
break;
|
|
1157
1160
|
case 'week':
|
|
1158
|
-
duration.days = Math.round(7 / updateFrequency.updatedTimes);
|
|
1161
|
+
duration.days = Math.round(7 / updateFrequency.updatedTimes - 0.0001); // this is to make sure that '2 times per week' = 'every 3 days'
|
|
1159
1162
|
break;
|
|
1160
1163
|
case 'month':
|
|
1161
1164
|
if (updateFrequency.updatedTimes <= 1)
|
|
@@ -17419,6 +17422,19 @@ var de = {
|
|
|
17419
17422
|
"downloads.format.unknown": "unbekannt",
|
|
17420
17423
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17421
17424
|
dropFile: dropFile$6,
|
|
17425
|
+
"editor.record.form.license": "Lizenz",
|
|
17426
|
+
"editor.record.form.license.cc-by": "",
|
|
17427
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
17428
|
+
"editor.record.form.license.cc-zero": "",
|
|
17429
|
+
"editor.record.form.license.etalab": "",
|
|
17430
|
+
"editor.record.form.license.etalab-v2": "",
|
|
17431
|
+
"editor.record.form.license.odbl": "",
|
|
17432
|
+
"editor.record.form.license.odc-by": "",
|
|
17433
|
+
"editor.record.form.license.pddl": "",
|
|
17434
|
+
"editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
17435
|
+
"editor.record.form.resourceUpdated": "",
|
|
17436
|
+
"editor.record.form.updateFrequency": "",
|
|
17437
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
17422
17438
|
"editor.record.loadError.body": "",
|
|
17423
17439
|
"editor.record.loadError.closeMessage": "",
|
|
17424
17440
|
"editor.record.loadError.title": "",
|
|
@@ -17489,6 +17505,7 @@ var de = {
|
|
|
17489
17505
|
"multiselect.filter.placeholder": "Suche",
|
|
17490
17506
|
"nav.back": "Zurück",
|
|
17491
17507
|
next: next$6,
|
|
17508
|
+
"ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
|
|
17492
17509
|
"organisation.filter.placeholder": "Ergebnisse filtern",
|
|
17493
17510
|
"organisation.sort.sortBy": "Sortieren nach:",
|
|
17494
17511
|
"organisations.hits.found": "{hits, plural, =0{Keine Organisation gefunden} other{{hits} von {total} Organisationen angezeigt}}",
|
|
@@ -17553,14 +17570,6 @@ var de = {
|
|
|
17553
17570
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
17554
17571
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
17555
17572
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
17556
|
-
"record.metadata.userFeedbacks": "",
|
|
17557
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17558
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17559
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17560
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17561
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17562
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17563
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17564
17573
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
17565
17574
|
"record.metadata.status": "Status",
|
|
17566
17575
|
"record.metadata.technical": "Technische Informationen",
|
|
@@ -17575,6 +17584,14 @@ var de = {
|
|
|
17575
17584
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
17576
17585
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
17577
17586
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
17587
|
+
"record.metadata.userFeedbacks": "",
|
|
17588
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17589
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17590
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17591
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17592
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17593
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17594
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17578
17595
|
"record.more.details": "Weitere Details",
|
|
17579
17596
|
"record.tab.chart": "Diagramm",
|
|
17580
17597
|
"record.tab.data": "Tabelle",
|
|
@@ -17634,12 +17651,6 @@ var de = {
|
|
|
17634
17651
|
"table.loading.data": "Daten werden geladen...",
|
|
17635
17652
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
17636
17653
|
"table.select.data": "Datenquelle",
|
|
17637
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
17638
|
-
"timeSincePipe.minutesAgo": "",
|
|
17639
|
-
"timeSincePipe.hoursAgo": "",
|
|
17640
|
-
"timeSincePipe.daysAgo": "",
|
|
17641
|
-
"timeSincePipe.monthsAgo": "",
|
|
17642
|
-
"timeSincePipe.yearsAgo": "",
|
|
17643
17654
|
"tooltip.html.copy": "HTML kopieren",
|
|
17644
17655
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
17645
17656
|
"tooltip.url.copy": "URL kopieren",
|
|
@@ -17804,6 +17815,19 @@ var en = {
|
|
|
17804
17815
|
"downloads.format.unknown": "unknown",
|
|
17805
17816
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17806
17817
|
dropFile: dropFile$5,
|
|
17818
|
+
"editor.record.form.license": "License",
|
|
17819
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17820
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17821
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
17822
|
+
"editor.record.form.license.etalab": "Open Licence (Etalab)",
|
|
17823
|
+
"editor.record.form.license.etalab-v2": "Open Licence v2.0 (Etalab)",
|
|
17824
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
17825
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17826
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17827
|
+
"editor.record.form.license.unknown": "Unknown or absent",
|
|
17828
|
+
"editor.record.form.resourceUpdated": "Last update date",
|
|
17829
|
+
"editor.record.form.updateFrequency": "Update frequency",
|
|
17830
|
+
"editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
|
|
17807
17831
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17808
17832
|
"editor.record.loadError.closeMessage": "Understood",
|
|
17809
17833
|
"editor.record.loadError.title": "Error loading record",
|
|
@@ -17874,6 +17898,7 @@ var en = {
|
|
|
17874
17898
|
"multiselect.filter.placeholder": "Search",
|
|
17875
17899
|
"nav.back": "Back",
|
|
17876
17900
|
next: next$5,
|
|
17901
|
+
"ogc.unreachable.unknown": "The service could not be reached",
|
|
17877
17902
|
"organisation.filter.placeholder": "Filter results",
|
|
17878
17903
|
"organisation.sort.sortBy": "Sort by:",
|
|
17879
17904
|
"organisations.hits.found": "{hits, plural, =0{No organizations found} other{{hits} out of {total} organizations shown}}",
|
|
@@ -17938,14 +17963,6 @@ var en = {
|
|
|
17938
17963
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
17939
17964
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17940
17965
|
"record.metadata.related": "Related records",
|
|
17941
|
-
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
17942
|
-
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
17943
|
-
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17944
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
17945
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
17946
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
17947
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
17948
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
17949
17966
|
"record.metadata.sheet": "Original metadata",
|
|
17950
17967
|
"record.metadata.status": "Status",
|
|
17951
17968
|
"record.metadata.technical": "Technical information",
|
|
@@ -17960,6 +17977,14 @@ var en = {
|
|
|
17960
17977
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17961
17978
|
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17962
17979
|
"record.metadata.usage": "License and Conditions",
|
|
17980
|
+
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
17981
|
+
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
17982
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
17983
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
17984
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
17985
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
17986
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
17987
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17963
17988
|
"record.more.details": "Read more",
|
|
17964
17989
|
"record.tab.chart": "Chart",
|
|
17965
17990
|
"record.tab.data": "Table",
|
|
@@ -18019,12 +18044,6 @@ var en = {
|
|
|
18019
18044
|
"table.loading.data": "Loading data...",
|
|
18020
18045
|
"table.object.count": "objects in this dataset",
|
|
18021
18046
|
"table.select.data": "Data source",
|
|
18022
|
-
"timeSincePipe.lessThanAMinute": "Less than a minute ago",
|
|
18023
|
-
"timeSincePipe.minutesAgo": "{value} minute{s} ago",
|
|
18024
|
-
"timeSincePipe.hoursAgo": "{value} hour{s} ago",
|
|
18025
|
-
"timeSincePipe.daysAgo": "{value} day{s} ago",
|
|
18026
|
-
"timeSincePipe.monthsAgo": "{value} month{s} ago",
|
|
18027
|
-
"timeSincePipe.yearsAgo": "{value} year{s} ago",
|
|
18028
18047
|
"tooltip.html.copy": "Copy HTML",
|
|
18029
18048
|
"tooltip.id.copy": "Copy unique identifier",
|
|
18030
18049
|
"tooltip.url.copy": "Copy URL",
|
|
@@ -18189,6 +18208,19 @@ var es = {
|
|
|
18189
18208
|
"downloads.format.unknown": "",
|
|
18190
18209
|
"downloads.wfs.featuretype.not.found": "",
|
|
18191
18210
|
dropFile: dropFile$4,
|
|
18211
|
+
"editor.record.form.license": "",
|
|
18212
|
+
"editor.record.form.license.cc-by": "",
|
|
18213
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18214
|
+
"editor.record.form.license.cc-zero": "",
|
|
18215
|
+
"editor.record.form.license.etalab": "",
|
|
18216
|
+
"editor.record.form.license.etalab-v2": "",
|
|
18217
|
+
"editor.record.form.license.odbl": "",
|
|
18218
|
+
"editor.record.form.license.odc-by": "",
|
|
18219
|
+
"editor.record.form.license.pddl": "",
|
|
18220
|
+
"editor.record.form.license.unknown": "",
|
|
18221
|
+
"editor.record.form.resourceUpdated": "",
|
|
18222
|
+
"editor.record.form.updateFrequency": "",
|
|
18223
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
18192
18224
|
"editor.record.loadError.body": "",
|
|
18193
18225
|
"editor.record.loadError.closeMessage": "",
|
|
18194
18226
|
"editor.record.loadError.title": "",
|
|
@@ -18259,6 +18291,7 @@ var es = {
|
|
|
18259
18291
|
"multiselect.filter.placeholder": "",
|
|
18260
18292
|
"nav.back": "",
|
|
18261
18293
|
next: next$4,
|
|
18294
|
+
"ogc.unreachable.unknown": "",
|
|
18262
18295
|
"organisation.filter.placeholder": "",
|
|
18263
18296
|
"organisation.sort.sortBy": "",
|
|
18264
18297
|
"organisations.hits.found": "",
|
|
@@ -18323,14 +18356,6 @@ var es = {
|
|
|
18323
18356
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
18324
18357
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18325
18358
|
"record.metadata.related": "",
|
|
18326
|
-
"record.metadata.userFeedbacks": "",
|
|
18327
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18328
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18329
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18330
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18331
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18332
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18333
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18334
18359
|
"record.metadata.sheet": "",
|
|
18335
18360
|
"record.metadata.status": "",
|
|
18336
18361
|
"record.metadata.technical": "",
|
|
@@ -18345,6 +18370,14 @@ var es = {
|
|
|
18345
18370
|
"record.metadata.updateFrequency": "",
|
|
18346
18371
|
"record.metadata.updatedOn": "",
|
|
18347
18372
|
"record.metadata.usage": "",
|
|
18373
|
+
"record.metadata.userFeedbacks": "",
|
|
18374
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18375
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18376
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18377
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18378
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18379
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18380
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18348
18381
|
"record.more.details": "",
|
|
18349
18382
|
"record.tab.chart": "",
|
|
18350
18383
|
"record.tab.data": "",
|
|
@@ -18404,12 +18437,6 @@ var es = {
|
|
|
18404
18437
|
"table.loading.data": "",
|
|
18405
18438
|
"table.object.count": "",
|
|
18406
18439
|
"table.select.data": "",
|
|
18407
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
18408
|
-
"timeSincePipe.minutesAgo": "",
|
|
18409
|
-
"timeSincePipe.hoursAgo": "",
|
|
18410
|
-
"timeSincePipe.daysAgo": "",
|
|
18411
|
-
"timeSincePipe.monthsAgo": "",
|
|
18412
|
-
"timeSincePipe.yearsAgo": "",
|
|
18413
18440
|
"tooltip.html.copy": "",
|
|
18414
18441
|
"tooltip.id.copy": "",
|
|
18415
18442
|
"tooltip.url.copy": "",
|
|
@@ -18574,6 +18601,19 @@ var fr = {
|
|
|
18574
18601
|
"downloads.format.unknown": "inconnu",
|
|
18575
18602
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18576
18603
|
dropFile: dropFile$3,
|
|
18604
|
+
"editor.record.form.license": "Licence",
|
|
18605
|
+
"editor.record.form.license.cc-by": "",
|
|
18606
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18607
|
+
"editor.record.form.license.cc-zero": "",
|
|
18608
|
+
"editor.record.form.license.etalab": "Licence Ouverte (Etalab)",
|
|
18609
|
+
"editor.record.form.license.etalab-v2": "Licence Ouverte v2.0 (Etalab)",
|
|
18610
|
+
"editor.record.form.license.odbl": "",
|
|
18611
|
+
"editor.record.form.license.odc-by": "",
|
|
18612
|
+
"editor.record.form.license.pddl": "",
|
|
18613
|
+
"editor.record.form.license.unknown": "Non-reconnue ou absente",
|
|
18614
|
+
"editor.record.form.resourceUpdated": "Date de dernière révision",
|
|
18615
|
+
"editor.record.form.updateFrequency": "Fréquence de mise à jour",
|
|
18616
|
+
"editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
|
|
18577
18617
|
"editor.record.loadError.body": "",
|
|
18578
18618
|
"editor.record.loadError.closeMessage": "",
|
|
18579
18619
|
"editor.record.loadError.title": "",
|
|
@@ -18644,6 +18684,7 @@ var fr = {
|
|
|
18644
18684
|
"multiselect.filter.placeholder": "Rechercher",
|
|
18645
18685
|
"nav.back": "Retour",
|
|
18646
18686
|
next: next$3,
|
|
18687
|
+
"ogc.unreachable.unknown": "Le service n'est pas accessible",
|
|
18647
18688
|
"organisation.filter.placeholder": "Filtrer les résultats",
|
|
18648
18689
|
"organisation.sort.sortBy": "Trier par :",
|
|
18649
18690
|
"organisations.hits.found": "{hits, plural, =0{Aucune organisation trouvé} one{1 organisation sur {total} affichée} other{{hits} organisations sur {total} affichées}}",
|
|
@@ -18708,14 +18749,6 @@ var fr = {
|
|
|
18708
18749
|
"record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
|
|
18709
18750
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
18710
18751
|
"record.metadata.related": "Voir aussi",
|
|
18711
|
-
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18712
|
-
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18713
|
-
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18714
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18715
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18716
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18717
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18718
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18719
18752
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
18720
18753
|
"record.metadata.status": "Statut",
|
|
18721
18754
|
"record.metadata.technical": "Informations techniques",
|
|
@@ -18730,6 +18763,14 @@ var fr = {
|
|
|
18730
18763
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
18731
18764
|
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
18732
18765
|
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
18766
|
+
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18767
|
+
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18768
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18769
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18770
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18771
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18772
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18773
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18733
18774
|
"record.more.details": "Détails",
|
|
18734
18775
|
"record.tab.chart": "Graphique",
|
|
18735
18776
|
"record.tab.data": "Tableau",
|
|
@@ -18789,12 +18830,6 @@ var fr = {
|
|
|
18789
18830
|
"table.loading.data": "Chargement des données...",
|
|
18790
18831
|
"table.object.count": "enregistrements dans ces données",
|
|
18791
18832
|
"table.select.data": "Source de données",
|
|
18792
|
-
"timeSincePipe.lessThanAMinute": "Il y a moins d'une minute",
|
|
18793
|
-
"timeSincePipe.minutesAgo": "Il y a {value} minute{s}",
|
|
18794
|
-
"timeSincePipe.hoursAgo": "Il y a {value} heure{s}",
|
|
18795
|
-
"timeSincePipe.daysAgo": "Il y a {value} jour{s}",
|
|
18796
|
-
"timeSincePipe.monthsAgo": "Il y a {value} mois",
|
|
18797
|
-
"timeSincePipe.yearsAgo": "Il y a {value} an{s}",
|
|
18798
18833
|
"tooltip.html.copy": "Copier le HTML",
|
|
18799
18834
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
18800
18835
|
"tooltip.url.copy": "Copier l'URL",
|
|
@@ -18959,6 +18994,19 @@ var it = {
|
|
|
18959
18994
|
"downloads.format.unknown": "sconosciuto",
|
|
18960
18995
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
18961
18996
|
dropFile: dropFile$2,
|
|
18997
|
+
"editor.record.form.license": "Licenza",
|
|
18998
|
+
"editor.record.form.license.cc-by": "",
|
|
18999
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19000
|
+
"editor.record.form.license.cc-zero": "",
|
|
19001
|
+
"editor.record.form.license.etalab": "Licenza aperta (Etalab)",
|
|
19002
|
+
"editor.record.form.license.etalab-v2": "Licenza aperta v2.0 (Etalab)",
|
|
19003
|
+
"editor.record.form.license.odbl": "",
|
|
19004
|
+
"editor.record.form.license.odc-by": "",
|
|
19005
|
+
"editor.record.form.license.pddl": "",
|
|
19006
|
+
"editor.record.form.license.unknown": "Non riconosciuta o assente",
|
|
19007
|
+
"editor.record.form.resourceUpdated": "",
|
|
19008
|
+
"editor.record.form.updateFrequency": "",
|
|
19009
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
18962
19010
|
"editor.record.loadError.body": "",
|
|
18963
19011
|
"editor.record.loadError.closeMessage": "",
|
|
18964
19012
|
"editor.record.loadError.title": "",
|
|
@@ -19029,6 +19077,7 @@ var it = {
|
|
|
19029
19077
|
"multiselect.filter.placeholder": "Cerca",
|
|
19030
19078
|
"nav.back": "Indietro",
|
|
19031
19079
|
next: next$2,
|
|
19080
|
+
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
19032
19081
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
19033
19082
|
"organisation.sort.sortBy": "Ordina per:",
|
|
19034
19083
|
"organisations.hits.found": "{hits, plural, =0{Nessuna organizzazione trovata} one{1 organizzazione su {total} visualizzata} other{{hits} organizzazioni su {total} visualizzate}}",
|
|
@@ -19093,14 +19142,6 @@ var it = {
|
|
|
19093
19142
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
19094
19143
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
19095
19144
|
"record.metadata.related": "Vedi anche",
|
|
19096
|
-
"record.metadata.userFeedbacks": "",
|
|
19097
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19098
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19099
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19100
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19101
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19102
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19103
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19104
19145
|
"record.metadata.sheet": "Origine del metadata",
|
|
19105
19146
|
"record.metadata.status": "Stato",
|
|
19106
19147
|
"record.metadata.technical": "Informazioni tecniche",
|
|
@@ -19115,6 +19156,14 @@ var it = {
|
|
|
19115
19156
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
19116
19157
|
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
19117
19158
|
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
19159
|
+
"record.metadata.userFeedbacks": "",
|
|
19160
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19161
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19162
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19163
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19164
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19165
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19166
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19118
19167
|
"record.more.details": "Dettagli",
|
|
19119
19168
|
"record.tab.chart": "Grafico",
|
|
19120
19169
|
"record.tab.data": "Tabella",
|
|
@@ -19174,12 +19223,6 @@ var it = {
|
|
|
19174
19223
|
"table.loading.data": "Caricamento dei dati...",
|
|
19175
19224
|
"table.object.count": "record in questi dati",
|
|
19176
19225
|
"table.select.data": "Sorgente dati",
|
|
19177
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19178
|
-
"timeSincePipe.minutesAgo": "",
|
|
19179
|
-
"timeSincePipe.hoursAgo": "",
|
|
19180
|
-
"timeSincePipe.daysAgo": "",
|
|
19181
|
-
"timeSincePipe.monthsAgo": "",
|
|
19182
|
-
"timeSincePipe.yearsAgo": "",
|
|
19183
19226
|
"tooltip.html.copy": "Copiare il HTML",
|
|
19184
19227
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
19185
19228
|
"tooltip.url.copy": "Copiare l'URL",
|
|
@@ -19344,6 +19387,19 @@ var nl = {
|
|
|
19344
19387
|
"downloads.format.unknown": "",
|
|
19345
19388
|
"downloads.wfs.featuretype.not.found": "",
|
|
19346
19389
|
dropFile: dropFile$1,
|
|
19390
|
+
"editor.record.form.license": "",
|
|
19391
|
+
"editor.record.form.license.cc-by": "",
|
|
19392
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19393
|
+
"editor.record.form.license.cc-zero": "",
|
|
19394
|
+
"editor.record.form.license.etalab": "",
|
|
19395
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19396
|
+
"editor.record.form.license.odbl": "",
|
|
19397
|
+
"editor.record.form.license.odc-by": "",
|
|
19398
|
+
"editor.record.form.license.pddl": "",
|
|
19399
|
+
"editor.record.form.license.unknown": "",
|
|
19400
|
+
"editor.record.form.resourceUpdated": "",
|
|
19401
|
+
"editor.record.form.updateFrequency": "",
|
|
19402
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
19347
19403
|
"editor.record.loadError.body": "",
|
|
19348
19404
|
"editor.record.loadError.closeMessage": "",
|
|
19349
19405
|
"editor.record.loadError.title": "",
|
|
@@ -19414,6 +19470,7 @@ var nl = {
|
|
|
19414
19470
|
"multiselect.filter.placeholder": "",
|
|
19415
19471
|
"nav.back": "",
|
|
19416
19472
|
next: next$1,
|
|
19473
|
+
"ogc.unreachable.unknown": "",
|
|
19417
19474
|
"organisation.filter.placeholder": "",
|
|
19418
19475
|
"organisation.sort.sortBy": "",
|
|
19419
19476
|
"organisations.hits.found": "",
|
|
@@ -19478,14 +19535,6 @@ var nl = {
|
|
|
19478
19535
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19479
19536
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19480
19537
|
"record.metadata.related": "",
|
|
19481
|
-
"record.metadata.userFeedbacks": "",
|
|
19482
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19483
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19484
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19485
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19486
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19487
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19488
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19489
19538
|
"record.metadata.sheet": "",
|
|
19490
19539
|
"record.metadata.status": "",
|
|
19491
19540
|
"record.metadata.technical": "",
|
|
@@ -19500,6 +19549,14 @@ var nl = {
|
|
|
19500
19549
|
"record.metadata.updateFrequency": "",
|
|
19501
19550
|
"record.metadata.updatedOn": "",
|
|
19502
19551
|
"record.metadata.usage": "",
|
|
19552
|
+
"record.metadata.userFeedbacks": "",
|
|
19553
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19554
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19555
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19556
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19557
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19558
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19559
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19503
19560
|
"record.more.details": "",
|
|
19504
19561
|
"record.tab.chart": "",
|
|
19505
19562
|
"record.tab.data": "",
|
|
@@ -19559,12 +19616,6 @@ var nl = {
|
|
|
19559
19616
|
"table.loading.data": "",
|
|
19560
19617
|
"table.object.count": "",
|
|
19561
19618
|
"table.select.data": "",
|
|
19562
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19563
|
-
"timeSincePipe.minutesAgo": "",
|
|
19564
|
-
"timeSincePipe.hoursAgo": "",
|
|
19565
|
-
"timeSincePipe.daysAgo": "",
|
|
19566
|
-
"timeSincePipe.monthsAgo": "",
|
|
19567
|
-
"timeSincePipe.yearsAgo": "",
|
|
19568
19619
|
"tooltip.html.copy": "",
|
|
19569
19620
|
"tooltip.id.copy": "",
|
|
19570
19621
|
"tooltip.url.copy": "",
|
|
@@ -19729,6 +19780,19 @@ var pt = {
|
|
|
19729
19780
|
"downloads.format.unknown": "",
|
|
19730
19781
|
"downloads.wfs.featuretype.not.found": "",
|
|
19731
19782
|
dropFile: dropFile,
|
|
19783
|
+
"editor.record.form.license": "",
|
|
19784
|
+
"editor.record.form.license.cc-by": "",
|
|
19785
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19786
|
+
"editor.record.form.license.cc-zero": "",
|
|
19787
|
+
"editor.record.form.license.etalab": "",
|
|
19788
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19789
|
+
"editor.record.form.license.odbl": "",
|
|
19790
|
+
"editor.record.form.license.odc-by": "",
|
|
19791
|
+
"editor.record.form.license.pddl": "",
|
|
19792
|
+
"editor.record.form.license.unknown": "",
|
|
19793
|
+
"editor.record.form.resourceUpdated": "",
|
|
19794
|
+
"editor.record.form.updateFrequency": "",
|
|
19795
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
19732
19796
|
"editor.record.loadError.body": "",
|
|
19733
19797
|
"editor.record.loadError.closeMessage": "",
|
|
19734
19798
|
"editor.record.loadError.title": "",
|
|
@@ -19799,6 +19863,7 @@ var pt = {
|
|
|
19799
19863
|
"multiselect.filter.placeholder": "",
|
|
19800
19864
|
"nav.back": "",
|
|
19801
19865
|
next: next,
|
|
19866
|
+
"ogc.unreachable.unknown": "",
|
|
19802
19867
|
"organisation.filter.placeholder": "",
|
|
19803
19868
|
"organisation.sort.sortBy": "",
|
|
19804
19869
|
"organisations.hits.found": "",
|
|
@@ -19863,14 +19928,6 @@ var pt = {
|
|
|
19863
19928
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19864
19929
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19865
19930
|
"record.metadata.related": "",
|
|
19866
|
-
"record.metadata.userFeedbacks": "",
|
|
19867
|
-
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19868
|
-
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19869
|
-
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19870
|
-
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19871
|
-
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19872
|
-
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19873
|
-
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19874
19931
|
"record.metadata.sheet": "",
|
|
19875
19932
|
"record.metadata.status": "",
|
|
19876
19933
|
"record.metadata.technical": "",
|
|
@@ -19885,6 +19942,14 @@ var pt = {
|
|
|
19885
19942
|
"record.metadata.updateFrequency": "",
|
|
19886
19943
|
"record.metadata.updatedOn": "",
|
|
19887
19944
|
"record.metadata.usage": "",
|
|
19945
|
+
"record.metadata.userFeedbacks": "",
|
|
19946
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19947
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19948
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19949
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19950
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19951
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19952
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19888
19953
|
"record.more.details": "",
|
|
19889
19954
|
"record.tab.chart": "",
|
|
19890
19955
|
"record.tab.data": "",
|
|
@@ -19944,12 +20009,6 @@ var pt = {
|
|
|
19944
20009
|
"table.loading.data": "",
|
|
19945
20010
|
"table.object.count": "",
|
|
19946
20011
|
"table.select.data": "",
|
|
19947
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19948
|
-
"timeSincePipe.minutesAgo": "",
|
|
19949
|
-
"timeSincePipe.hoursAgo": "",
|
|
19950
|
-
"timeSincePipe.daysAgo": "",
|
|
19951
|
-
"timeSincePipe.monthsAgo": "",
|
|
19952
|
-
"timeSincePipe.yearsAgo": "",
|
|
19953
20012
|
"tooltip.html.copy": "",
|
|
19954
20013
|
"tooltip.id.copy": "",
|
|
19955
20014
|
"tooltip.url.copy": "",
|
|
@@ -21554,15 +21613,17 @@ class Gn4PlatformService {
|
|
|
21554
21613
|
return this.thesauri[uri];
|
|
21555
21614
|
}
|
|
21556
21615
|
getUserFeedbacks(uuid) {
|
|
21557
|
-
return this.userfeedbackApiService
|
|
21558
|
-
.
|
|
21559
|
-
|
|
21616
|
+
return this.userfeedbackApiService.getUserComments(uuid).pipe(map$1((userFeedbacks) => userFeedbacks.map(this.mapper.userFeedbacksFromApi)), catchError((error) => {
|
|
21617
|
+
console.error('Error fetching user feedbacks:', error);
|
|
21618
|
+
return of(undefined);
|
|
21619
|
+
}));
|
|
21560
21620
|
}
|
|
21561
21621
|
postUserFeedbacks(userFeedback) {
|
|
21562
21622
|
const mappedUserFeedBack = this.mapper.userFeedbacksToApi(userFeedback);
|
|
21563
|
-
return this.userfeedbackApiService
|
|
21564
|
-
.
|
|
21565
|
-
|
|
21623
|
+
return this.userfeedbackApiService.newUserFeedback(mappedUserFeedBack).pipe(map$1(() => undefined), catchError((error) => {
|
|
21624
|
+
console.error('Error posting user feedback:', error);
|
|
21625
|
+
return of(undefined);
|
|
21626
|
+
}));
|
|
21566
21627
|
}
|
|
21567
21628
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }, { token: LangService }, { token: UserfeedbackApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21568
21629
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
@@ -22296,6 +22357,27 @@ const FORMATS = {
|
|
|
22296
22357
|
color: '#de630b',
|
|
22297
22358
|
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
22298
22359
|
},
|
|
22360
|
+
html: {
|
|
22361
|
+
extensions: ['html', 'htm'],
|
|
22362
|
+
priority: 12,
|
|
22363
|
+
color: '#f2bb3a',
|
|
22364
|
+
mimeTypes: ['text/html'],
|
|
22365
|
+
},
|
|
22366
|
+
fgb: {
|
|
22367
|
+
extensions: ['fgb', 'flatgeobuf'],
|
|
22368
|
+
priority: 13,
|
|
22369
|
+
color: '#f2bb3a',
|
|
22370
|
+
mimeTypes: ['application/flatgeobuf'],
|
|
22371
|
+
},
|
|
22372
|
+
jsonfg: {
|
|
22373
|
+
extensions: ['jsonfg', 'jsonfgc'],
|
|
22374
|
+
priority: 14,
|
|
22375
|
+
color: '#f2bb3a',
|
|
22376
|
+
mimeTypes: [
|
|
22377
|
+
'application/vnd.ogc.fg+json',
|
|
22378
|
+
'application/vnd.ogc.fg+json;compatibility=geojson',
|
|
22379
|
+
],
|
|
22380
|
+
},
|
|
22299
22381
|
};
|
|
22300
22382
|
function getFormatPriority(linkFormat) {
|
|
22301
22383
|
for (const format in FORMATS) {
|
|
@@ -22427,7 +22509,7 @@ class LinkClassifierService {
|
|
|
22427
22509
|
case 'wmts':
|
|
22428
22510
|
return [LinkUsage.API, LinkUsage.MAP_API];
|
|
22429
22511
|
case 'ogcFeatures':
|
|
22430
|
-
return [LinkUsage.API];
|
|
22512
|
+
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
22431
22513
|
default:
|
|
22432
22514
|
return [LinkUsage.UNKNOWN];
|
|
22433
22515
|
}
|
|
@@ -22480,7 +22562,10 @@ class MapUtilsService {
|
|
|
22480
22562
|
}
|
|
22481
22563
|
createEmptyMap() {
|
|
22482
22564
|
return new Map$1({
|
|
22483
|
-
controls:
|
|
22565
|
+
controls: defaults({
|
|
22566
|
+
attribution: true,
|
|
22567
|
+
attributionOptions: { collapsible: false },
|
|
22568
|
+
}),
|
|
22484
22569
|
pixelRatio: 1,
|
|
22485
22570
|
});
|
|
22486
22571
|
}
|
|
@@ -22579,7 +22664,7 @@ class MapUtilsService {
|
|
|
22579
22664
|
}
|
|
22580
22665
|
prioritizePageScroll(interactions) {
|
|
22581
22666
|
interactions.clear();
|
|
22582
|
-
interactions.extend(defaults({
|
|
22667
|
+
interactions.extend(defaults$1({
|
|
22583
22668
|
// remove rotate interactions
|
|
22584
22669
|
altShiftDragRotate: false,
|
|
22585
22670
|
pinchRotate: false,
|
|
@@ -23696,6 +23781,7 @@ const DEFAULT_BASELAYER_CONTEXT = {
|
|
|
23696
23781
|
`https://b.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
23697
23782
|
`https://c.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png`,
|
|
23698
23783
|
],
|
|
23784
|
+
attributions: `<span>© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, © <a href="https://carto.com/">Carto</a></span>`,
|
|
23699
23785
|
};
|
|
23700
23786
|
const DEFAULT_VIEW = {
|
|
23701
23787
|
center: [0, 15],
|
|
@@ -23728,18 +23814,39 @@ class MapContextService {
|
|
|
23728
23814
|
const style = this.styleService.styles.default;
|
|
23729
23815
|
switch (type) {
|
|
23730
23816
|
case MapContextLayerTypeEnum.OGCAPI:
|
|
23731
|
-
|
|
23732
|
-
|
|
23733
|
-
|
|
23734
|
-
|
|
23735
|
-
|
|
23736
|
-
|
|
23737
|
-
|
|
23817
|
+
if (layerModel.layerType === 'vectorTiles') {
|
|
23818
|
+
return new VectorTileLayer({
|
|
23819
|
+
source: new OGCVectorTile({
|
|
23820
|
+
url: layerModel.url,
|
|
23821
|
+
format: new MVT(),
|
|
23822
|
+
attributions: layerModel.attributions,
|
|
23823
|
+
}),
|
|
23824
|
+
});
|
|
23825
|
+
}
|
|
23826
|
+
else if (layerModel.layerType === 'mapTiles') {
|
|
23827
|
+
return new TileLayer({
|
|
23828
|
+
source: new OGCMapTile({
|
|
23829
|
+
url: layerModel.url,
|
|
23830
|
+
attributions: layerModel.attributions,
|
|
23831
|
+
}),
|
|
23832
|
+
});
|
|
23833
|
+
}
|
|
23834
|
+
else {
|
|
23835
|
+
return new VectorLayer({
|
|
23836
|
+
source: new VectorSource({
|
|
23837
|
+
format: new GeoJSON(),
|
|
23838
|
+
url: layerModel.url,
|
|
23839
|
+
attributions: layerModel.attributions,
|
|
23840
|
+
}),
|
|
23841
|
+
style,
|
|
23842
|
+
});
|
|
23843
|
+
}
|
|
23738
23844
|
case MapContextLayerTypeEnum.XYZ:
|
|
23739
23845
|
return new TileLayer({
|
|
23740
23846
|
source: new XYZ({
|
|
23741
23847
|
url: 'url' in layerModel ? layerModel.url : undefined,
|
|
23742
23848
|
urls: 'urls' in layerModel ? layerModel.urls : undefined,
|
|
23849
|
+
attributions: layerModel.attributions,
|
|
23743
23850
|
}),
|
|
23744
23851
|
});
|
|
23745
23852
|
case MapContextLayerTypeEnum.WMS:
|
|
@@ -23748,6 +23855,7 @@ class MapContextService {
|
|
|
23748
23855
|
url: layerModel.url,
|
|
23749
23856
|
params: { LAYERS: layerModel.name },
|
|
23750
23857
|
gutter: 20,
|
|
23858
|
+
attributions: layerModel.attributions,
|
|
23751
23859
|
}),
|
|
23752
23860
|
});
|
|
23753
23861
|
case MapContextLayerTypeEnum.WMTS: {
|
|
@@ -23771,6 +23879,7 @@ class MapContextService {
|
|
|
23771
23879
|
tileGrid,
|
|
23772
23880
|
projection: matrixSet.crs,
|
|
23773
23881
|
dimensions,
|
|
23882
|
+
attributions: layerModel.attributions,
|
|
23774
23883
|
}));
|
|
23775
23884
|
});
|
|
23776
23885
|
return olLayer;
|
|
@@ -23793,6 +23902,7 @@ class MapContextService {
|
|
|
23793
23902
|
});
|
|
23794
23903
|
},
|
|
23795
23904
|
strategy: bbox,
|
|
23905
|
+
attributions: layerModel.attributions,
|
|
23796
23906
|
}));
|
|
23797
23907
|
});
|
|
23798
23908
|
return olLayer;
|
|
@@ -23973,6 +24083,173 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23973
24083
|
type: Input
|
|
23974
24084
|
}] } });
|
|
23975
24085
|
|
|
24086
|
+
class PopupAlertComponent {
|
|
24087
|
+
constructor(changeDetector) {
|
|
24088
|
+
this.changeDetector = changeDetector;
|
|
24089
|
+
this.type = 'info';
|
|
24090
|
+
this.position = 'top';
|
|
24091
|
+
this.expanded = false;
|
|
24092
|
+
this.timeout = null;
|
|
24093
|
+
}
|
|
24094
|
+
get showDuration() {
|
|
24095
|
+
const chars = this.content.nativeElement.innerHTML.length;
|
|
24096
|
+
return Math.max(3000, chars * 20);
|
|
24097
|
+
}
|
|
24098
|
+
ngOnInit() {
|
|
24099
|
+
this.expandAndClose();
|
|
24100
|
+
}
|
|
24101
|
+
expand() {
|
|
24102
|
+
this.expanded = true;
|
|
24103
|
+
this.changeDetector.detectChanges();
|
|
24104
|
+
clearTimeout(this.timeout);
|
|
24105
|
+
}
|
|
24106
|
+
expandAndClose() {
|
|
24107
|
+
this.expanded = true;
|
|
24108
|
+
this.changeDetector.detectChanges();
|
|
24109
|
+
clearTimeout(this.timeout);
|
|
24110
|
+
this.timeout = setTimeout(() => {
|
|
24111
|
+
this.expanded = false;
|
|
24112
|
+
this.changeDetector.detectChanges();
|
|
24113
|
+
}, this.showDuration);
|
|
24114
|
+
}
|
|
24115
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24116
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: { icon: "icon", type: "type", position: "position" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24117
|
+
}
|
|
24118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, decorators: [{
|
|
24119
|
+
type: Component,
|
|
24120
|
+
args: [{ selector: 'gn-ui-popup-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"] }]
|
|
24121
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
|
|
24122
|
+
type: Input
|
|
24123
|
+
}], type: [{
|
|
24124
|
+
type: Input
|
|
24125
|
+
}], position: [{
|
|
24126
|
+
type: Input
|
|
24127
|
+
}], content: [{
|
|
24128
|
+
type: ViewChild,
|
|
24129
|
+
args: ['content']
|
|
24130
|
+
}] } });
|
|
24131
|
+
|
|
24132
|
+
class AutocompleteComponent {
|
|
24133
|
+
constructor(cdRef) {
|
|
24134
|
+
this.cdRef = cdRef;
|
|
24135
|
+
this.clearOnSelection = false;
|
|
24136
|
+
this.autoFocus = false;
|
|
24137
|
+
this.itemSelected = new EventEmitter();
|
|
24138
|
+
this.inputSubmitted = new EventEmitter();
|
|
24139
|
+
this.inputCleared = new EventEmitter();
|
|
24140
|
+
this.control = new UntypedFormControl();
|
|
24141
|
+
this.subscription = new Subscription();
|
|
24142
|
+
this.cancelEnter = true;
|
|
24143
|
+
this.selectionSubject = new ReplaySubject(1);
|
|
24144
|
+
this.lastInputValue$ = new ReplaySubject(1);
|
|
24145
|
+
this.error = null;
|
|
24146
|
+
this.displayWithFn = (item) => item;
|
|
24147
|
+
}
|
|
24148
|
+
ngOnChanges(changes) {
|
|
24149
|
+
const { value } = changes;
|
|
24150
|
+
if (value) {
|
|
24151
|
+
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24152
|
+
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24153
|
+
if (previousTextValue !== currentTextValue) {
|
|
24154
|
+
this.updateInputValue(value.currentValue);
|
|
24155
|
+
}
|
|
24156
|
+
}
|
|
24157
|
+
}
|
|
24158
|
+
ngOnInit() {
|
|
24159
|
+
this.suggestions$ = merge(this.control.valueChanges.pipe(filter((value) => typeof value === 'string'), filter((value) => value.length > 2), debounceTime(400), distinctUntilChanged(), tap$1(() => (this.searching = true))), this.control.valueChanges.pipe(filter((value) => typeof value === 'object' && value.title), map$1((item) => item.title))).pipe(switchMap$1((value) => (value ? this.action(value) : of([]))), catchError((error) => {
|
|
24160
|
+
this.error = error.message;
|
|
24161
|
+
return of([]);
|
|
24162
|
+
}), finalize(() => (this.searching = false)));
|
|
24163
|
+
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24164
|
+
if (any !== '') {
|
|
24165
|
+
this.cancelEnter = false;
|
|
24166
|
+
}
|
|
24167
|
+
});
|
|
24168
|
+
this.control.valueChanges
|
|
24169
|
+
.pipe(filter((value) => typeof value === 'string'))
|
|
24170
|
+
.subscribe(this.lastInputValue$);
|
|
24171
|
+
}
|
|
24172
|
+
ngAfterViewInit() {
|
|
24173
|
+
this.autocomplete.optionSelected.subscribe(this.selectionSubject);
|
|
24174
|
+
if (this.autoFocus) {
|
|
24175
|
+
this.inputRef.nativeElement.focus();
|
|
24176
|
+
this.cdRef.detectChanges();
|
|
24177
|
+
}
|
|
24178
|
+
}
|
|
24179
|
+
ngOnDestroy() {
|
|
24180
|
+
this.subscription.unsubscribe();
|
|
24181
|
+
}
|
|
24182
|
+
updateInputValue(value) {
|
|
24183
|
+
if (value) {
|
|
24184
|
+
this.control.setValue(value);
|
|
24185
|
+
}
|
|
24186
|
+
if (this.inputRef) {
|
|
24187
|
+
this.inputRef.nativeElement.value = value?.title || '';
|
|
24188
|
+
}
|
|
24189
|
+
}
|
|
24190
|
+
clear() {
|
|
24191
|
+
this.inputRef.nativeElement.value = '';
|
|
24192
|
+
this.inputCleared.emit();
|
|
24193
|
+
this.selectionSubject
|
|
24194
|
+
.pipe(take(1))
|
|
24195
|
+
.subscribe((selection) => selection && selection.option.deselect());
|
|
24196
|
+
this.inputRef.nativeElement.focus();
|
|
24197
|
+
this.triggerRef.closePanel();
|
|
24198
|
+
}
|
|
24199
|
+
handleEnter(any) {
|
|
24200
|
+
if (!this.cancelEnter) {
|
|
24201
|
+
this.inputSubmitted.emit(any);
|
|
24202
|
+
this.triggerRef.closePanel();
|
|
24203
|
+
}
|
|
24204
|
+
}
|
|
24205
|
+
handleClickSearch() {
|
|
24206
|
+
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24207
|
+
this.triggerRef.closePanel();
|
|
24208
|
+
}
|
|
24209
|
+
handleSelection(event) {
|
|
24210
|
+
this.cancelEnter = true;
|
|
24211
|
+
this.itemSelected.emit(event.option.value);
|
|
24212
|
+
if (this.clearOnSelection) {
|
|
24213
|
+
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24214
|
+
this.inputRef.nativeElement.value = any;
|
|
24215
|
+
});
|
|
24216
|
+
}
|
|
24217
|
+
}
|
|
24218
|
+
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 }); }
|
|
24219
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24220
|
+
}
|
|
24221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
24222
|
+
type: Component,
|
|
24223
|
+
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"] }]
|
|
24224
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
24225
|
+
type: Input
|
|
24226
|
+
}], action: [{
|
|
24227
|
+
type: Input
|
|
24228
|
+
}], value: [{
|
|
24229
|
+
type: Input
|
|
24230
|
+
}], clearOnSelection: [{
|
|
24231
|
+
type: Input
|
|
24232
|
+
}], autoFocus: [{
|
|
24233
|
+
type: Input
|
|
24234
|
+
}], itemSelected: [{
|
|
24235
|
+
type: Output
|
|
24236
|
+
}], inputSubmitted: [{
|
|
24237
|
+
type: Output
|
|
24238
|
+
}], inputCleared: [{
|
|
24239
|
+
type: Output
|
|
24240
|
+
}], triggerRef: [{
|
|
24241
|
+
type: ViewChild,
|
|
24242
|
+
args: [MatAutocompleteTrigger]
|
|
24243
|
+
}], autocomplete: [{
|
|
24244
|
+
type: ViewChild,
|
|
24245
|
+
args: [MatAutocomplete]
|
|
24246
|
+
}], inputRef: [{
|
|
24247
|
+
type: ViewChild,
|
|
24248
|
+
args: ['searchInput']
|
|
24249
|
+
}], displayWithFn: [{
|
|
24250
|
+
type: Input
|
|
24251
|
+
}] } });
|
|
24252
|
+
|
|
23976
24253
|
class ButtonComponent {
|
|
23977
24254
|
constructor() {
|
|
23978
24255
|
this.btnClass = 'gn-ui-btn-default';
|
|
@@ -24024,171 +24301,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24024
24301
|
type: Output
|
|
24025
24302
|
}] } });
|
|
24026
24303
|
|
|
24027
|
-
|
|
24028
|
-
class DropdownSelectorComponent {
|
|
24304
|
+
class CheckToggleComponent {
|
|
24029
24305
|
constructor() {
|
|
24030
|
-
this.
|
|
24031
|
-
this.
|
|
24032
|
-
this.minWidth = '';
|
|
24033
|
-
this.selectValue = new EventEmitter();
|
|
24034
|
-
this.overlayOpen = false;
|
|
24035
|
-
this.overlayWidth = 'auto';
|
|
24036
|
-
this.overlayMaxHeight = 'none';
|
|
24037
|
-
this.overlayPositions = [
|
|
24038
|
-
{
|
|
24039
|
-
originX: 'start',
|
|
24040
|
-
originY: 'bottom',
|
|
24041
|
-
overlayX: 'start',
|
|
24042
|
-
overlayY: 'top',
|
|
24043
|
-
offsetY: 8,
|
|
24044
|
-
},
|
|
24045
|
-
{
|
|
24046
|
-
originX: 'start',
|
|
24047
|
-
originY: 'top',
|
|
24048
|
-
overlayX: 'start',
|
|
24049
|
-
overlayY: 'bottom',
|
|
24050
|
-
offsetY: -8,
|
|
24051
|
-
},
|
|
24052
|
-
];
|
|
24053
|
-
}
|
|
24054
|
-
get selectedChoice() {
|
|
24055
|
-
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
24056
|
-
this.choices[0]);
|
|
24057
|
-
}
|
|
24058
|
-
get id() {
|
|
24059
|
-
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
24060
|
-
}
|
|
24061
|
-
getChoiceLabel() {
|
|
24062
|
-
return this.selectedChoice?.label;
|
|
24063
|
-
}
|
|
24064
|
-
ngOnInit() {
|
|
24065
|
-
if (!this.maxRows)
|
|
24066
|
-
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
24067
|
-
if (!this.choices || this.choices.length === 0) {
|
|
24068
|
-
this.choices = [];
|
|
24069
|
-
}
|
|
24070
|
-
}
|
|
24071
|
-
isSelected(choice) {
|
|
24072
|
-
return choice === this.selectedChoice;
|
|
24306
|
+
this.color = 'primary';
|
|
24307
|
+
this.toggled = new EventEmitter();
|
|
24073
24308
|
}
|
|
24074
|
-
|
|
24075
|
-
this.
|
|
24076
|
-
this.selected = choice.value;
|
|
24077
|
-
this.selectValue.emit(this.selected);
|
|
24309
|
+
toggle(event) {
|
|
24310
|
+
this.toggled.emit(event);
|
|
24078
24311
|
}
|
|
24079
|
-
|
|
24080
|
-
|
|
24081
|
-
|
|
24082
|
-
|
|
24083
|
-
|
|
24084
|
-
|
|
24085
|
-
|
|
24086
|
-
|
|
24087
|
-
|
|
24088
|
-
|
|
24089
|
-
|
|
24090
|
-
|
|
24312
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24313
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckToggleComponent, isStandalone: true, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24314
|
+
}
|
|
24315
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
24316
|
+
type: Component,
|
|
24317
|
+
args: [{ selector: 'gn-ui-check-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [FormsModule], template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n" }]
|
|
24318
|
+
}], propDecorators: { title: [{
|
|
24319
|
+
type: Input
|
|
24320
|
+
}], label: [{
|
|
24321
|
+
type: Input
|
|
24322
|
+
}], value: [{
|
|
24323
|
+
type: Input
|
|
24324
|
+
}], color: [{
|
|
24325
|
+
type: Input
|
|
24326
|
+
}], toggled: [{
|
|
24327
|
+
type: Output
|
|
24328
|
+
}] } });
|
|
24329
|
+
|
|
24330
|
+
class CheckboxComponent {
|
|
24331
|
+
constructor() {
|
|
24332
|
+
this.type = 'default';
|
|
24333
|
+
this.checked = false;
|
|
24334
|
+
this.indeterminate = false;
|
|
24335
|
+
this.changed = new EventEmitter();
|
|
24091
24336
|
}
|
|
24092
|
-
|
|
24093
|
-
this.
|
|
24337
|
+
get classList() {
|
|
24338
|
+
return `${this.type}`;
|
|
24094
24339
|
}
|
|
24095
|
-
|
|
24096
|
-
|
|
24340
|
+
handleClick(event) {
|
|
24341
|
+
event.stopPropagation();
|
|
24342
|
+
this.checked = !this.checked;
|
|
24343
|
+
this.changed.emit(this.checked);
|
|
24097
24344
|
}
|
|
24098
|
-
|
|
24099
|
-
|
|
24345
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24346
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "component", type: i1$4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24347
|
+
}
|
|
24348
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
24349
|
+
type: Component,
|
|
24350
|
+
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"] }]
|
|
24351
|
+
}], propDecorators: { type: [{
|
|
24352
|
+
type: Input
|
|
24353
|
+
}], checked: [{
|
|
24354
|
+
type: Input
|
|
24355
|
+
}], indeterminate: [{
|
|
24356
|
+
type: Input
|
|
24357
|
+
}], changed: [{
|
|
24358
|
+
type: Output
|
|
24359
|
+
}] } });
|
|
24360
|
+
|
|
24361
|
+
class ChipsInputComponent {
|
|
24362
|
+
onChange(event) {
|
|
24363
|
+
this.rawChange.next(event);
|
|
24100
24364
|
}
|
|
24101
|
-
|
|
24102
|
-
|
|
24103
|
-
|
|
24104
|
-
|
|
24105
|
-
|
|
24106
|
-
|
|
24107
|
-
|
|
24108
|
-
|
|
24109
|
-
|
|
24110
|
-
|
|
24111
|
-
|
|
24112
|
-
|
|
24113
|
-
|
|
24365
|
+
constructor(http, translate) {
|
|
24366
|
+
this.http = http;
|
|
24367
|
+
this.translate = translate;
|
|
24368
|
+
this.required = false;
|
|
24369
|
+
this.loadOnce = false;
|
|
24370
|
+
this.autocompleteItems = [];
|
|
24371
|
+
this.invalid = false;
|
|
24372
|
+
this.items = [];
|
|
24373
|
+
this.requestAutocompleteItems = (text) => {
|
|
24374
|
+
if (this.url) {
|
|
24375
|
+
if (this.loadOnce && this.loadedItems) {
|
|
24376
|
+
return this.loadedItems;
|
|
24377
|
+
}
|
|
24378
|
+
const url = this.url(text);
|
|
24379
|
+
const lang = LANG_2_TO_3_MAPPER[this.translate.currentLang.slice(0, 2)];
|
|
24380
|
+
return this.http
|
|
24381
|
+
.get(url.replace('${lang}', lang))
|
|
24382
|
+
.pipe(map$1((item) => item.map((i) => i.values[lang])));
|
|
24114
24383
|
}
|
|
24115
|
-
|
|
24116
|
-
this.
|
|
24117
|
-
|
|
24118
|
-
|
|
24119
|
-
|
|
24120
|
-
|
|
24121
|
-
|
|
24122
|
-
this.closeOverlay();
|
|
24123
|
-
}
|
|
24384
|
+
else {
|
|
24385
|
+
return of(this.autocompleteItems || []);
|
|
24386
|
+
}
|
|
24387
|
+
};
|
|
24388
|
+
this.rawChange = new Subject();
|
|
24389
|
+
this.itemsChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24390
|
+
this.subscription = new Subscription();
|
|
24124
24391
|
}
|
|
24125
|
-
|
|
24126
|
-
if (
|
|
24127
|
-
|
|
24128
|
-
const keyCode = event.code;
|
|
24129
|
-
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
24130
|
-
event.preventDefault();
|
|
24131
|
-
this.shiftItemFocus(1);
|
|
24132
|
-
}
|
|
24133
|
-
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
24134
|
-
event.preventDefault();
|
|
24135
|
-
this.shiftItemFocus(-1);
|
|
24136
|
-
}
|
|
24137
|
-
else if (keyCode === 'Escape') {
|
|
24138
|
-
this.closeOverlay();
|
|
24392
|
+
ngOnInit() {
|
|
24393
|
+
if (this.loadOnce) {
|
|
24394
|
+
this.loadedItems = this.requestAutocompleteItems('*').pipe(shareReplay(1));
|
|
24139
24395
|
}
|
|
24396
|
+
this.items = this.selectedItems;
|
|
24397
|
+
this.subscription = this.rawChange
|
|
24398
|
+
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24399
|
+
.subscribe();
|
|
24400
|
+
this.rawChange.next(this.items);
|
|
24140
24401
|
}
|
|
24141
|
-
|
|
24142
|
-
|
|
24143
|
-
if (index === -1)
|
|
24144
|
-
return;
|
|
24145
|
-
const max = this.choiceInputs.length;
|
|
24146
|
-
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
24147
|
-
const newIndex = (((index + shift) % max) + max) % max;
|
|
24148
|
-
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24402
|
+
ngOnDestroy() {
|
|
24403
|
+
this.subscription.unsubscribe();
|
|
24149
24404
|
}
|
|
24150
|
-
|
|
24151
|
-
|
|
24405
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, deps: [{ token: i1.HttpClient }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24406
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: { url: "url", placeholder: "placeholder", selectedItems: "selectedItems", required: "required", loadOnce: "loadOnce", autocompleteItems: "autocompleteItems" }, outputs: { itemsChange: "itemsChange" }, ngImport: i0, template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.TagInputComponent, selector: "tag-input", inputs: ["separatorKeys", "separatorKeyCodes", "placeholder", "secondaryPlaceholder", "maxItems", "validators", "asyncValidators", "onlyFromAutocomplete", "errorMessages", "theme", "onTextChangeDebounce", "inputId", "inputClass", "clearOnBlur", "hideForm", "addOnBlur", "addOnPaste", "pasteSplitPattern", "blinkIfDupe", "removable", "editable", "allowDupes", "modelAsStrings", "trimTags", "inputText", "ripple", "tabindex", "disable", "dragZone", "onRemoving", "onAdding", "animationDuration"], outputs: ["onAdd", "onRemove", "onSelect", "onFocus", "onBlur", "onTextChange", "onPaste", "onValidationError", "onTagEdited", "inputTextChange"] }, { kind: "component", type: i5$1.TagInputDropdown, selector: "tag-input-dropdown", inputs: ["offset", "focusFirstElement", "showDropdownIfEmpty", "autocompleteObservable", "minimumTextLength", "limitItemsTo", "displayBy", "identifyBy", "matchingFn", "appendToBody", "keepOpen", "dynamicUpdate", "zIndex", "autocompleteItems"] }] }); }
|
|
24407
|
+
}
|
|
24408
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, decorators: [{
|
|
24409
|
+
type: Component,
|
|
24410
|
+
args: [{ selector: 'gn-ui-chips-input', template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"] }]
|
|
24411
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1$1.TranslateService }]; }, propDecorators: { url: [{
|
|
24412
|
+
type: Input
|
|
24413
|
+
}], placeholder: [{
|
|
24414
|
+
type: Input
|
|
24415
|
+
}], selectedItems: [{
|
|
24416
|
+
type: Input
|
|
24417
|
+
}], required: [{
|
|
24418
|
+
type: Input
|
|
24419
|
+
}], loadOnce: [{
|
|
24420
|
+
type: Input
|
|
24421
|
+
}], autocompleteItems: [{
|
|
24422
|
+
type: Input
|
|
24423
|
+
}], itemsChange: [{
|
|
24424
|
+
type: Output
|
|
24425
|
+
}] } });
|
|
24426
|
+
|
|
24427
|
+
class CopyTextButtonComponent {
|
|
24428
|
+
constructor() {
|
|
24429
|
+
this.displayText = true;
|
|
24430
|
+
this.rows = 1;
|
|
24152
24431
|
}
|
|
24153
|
-
|
|
24154
|
-
|
|
24155
|
-
|
|
24156
|
-
this.onSelectValue(choice);
|
|
24157
|
-
}
|
|
24432
|
+
copyText(event) {
|
|
24433
|
+
navigator.clipboard.writeText(this.text);
|
|
24434
|
+
event.target.blur();
|
|
24158
24435
|
}
|
|
24159
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24160
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24436
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24437
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24161
24438
|
}
|
|
24162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
24163
24440
|
type: Component,
|
|
24164
|
-
args: [{ selector: 'gn-ui-
|
|
24165
|
-
}], propDecorators: {
|
|
24166
|
-
type: Input
|
|
24167
|
-
}], showTitle: [{
|
|
24441
|
+
args: [{ selector: 'gn-ui-copy-text-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n" }]
|
|
24442
|
+
}], propDecorators: { text: [{
|
|
24168
24443
|
type: Input
|
|
24169
|
-
}],
|
|
24444
|
+
}], tooltipText: [{
|
|
24170
24445
|
type: Input
|
|
24171
|
-
}],
|
|
24446
|
+
}], displayText: [{
|
|
24172
24447
|
type: Input
|
|
24173
|
-
}],
|
|
24448
|
+
}], rows: [{
|
|
24174
24449
|
type: Input
|
|
24175
|
-
}]
|
|
24450
|
+
}] } });
|
|
24451
|
+
|
|
24452
|
+
class DatePickerComponent {
|
|
24453
|
+
constructor() {
|
|
24454
|
+
this.dateChange = new EventEmitter();
|
|
24455
|
+
}
|
|
24456
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24457
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between pl-3 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
|
|
24458
|
+
}
|
|
24459
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
24460
|
+
type: Component,
|
|
24461
|
+
args: [{ selector: 'gn-ui-date-picker', standalone: true, imports: [MatIconModule, MatNativeDateModule, MatDatepickerModule], template: "<div\n class=\"flex items-center justify-between pl-3 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
24462
|
+
}], propDecorators: { date: [{
|
|
24176
24463
|
type: Input
|
|
24177
|
-
}],
|
|
24464
|
+
}], dateChange: [{
|
|
24465
|
+
type: Output
|
|
24466
|
+
}] } });
|
|
24467
|
+
|
|
24468
|
+
class DateRangePickerComponent {
|
|
24469
|
+
startDateSelected(event) {
|
|
24470
|
+
this.startDate = event.value;
|
|
24471
|
+
}
|
|
24472
|
+
endDateSelected(event) {
|
|
24473
|
+
this.endDate = event.value;
|
|
24474
|
+
}
|
|
24475
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24476
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", ngImport: i0, template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$3.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$3.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$3.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
|
|
24477
|
+
}
|
|
24478
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
24479
|
+
type: Component,
|
|
24480
|
+
args: [{ selector: 'gn-ui-date-range-picker', standalone: true, imports: [MatIconModule, MatNativeDateModule, MatDatepickerModule], template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
24481
|
+
}] });
|
|
24482
|
+
|
|
24483
|
+
const placeholder = 'dropFile';
|
|
24484
|
+
marker('dropFile');
|
|
24485
|
+
class DragAndDropFileInputComponent {
|
|
24486
|
+
constructor() {
|
|
24487
|
+
this.placeholder = placeholder;
|
|
24488
|
+
this.accept = '*';
|
|
24489
|
+
this.fileChange = new EventEmitter();
|
|
24490
|
+
this.selectedFile = null;
|
|
24491
|
+
}
|
|
24492
|
+
get fileName() {
|
|
24493
|
+
return this.selectedFile && this.selectedFile.name;
|
|
24494
|
+
}
|
|
24495
|
+
selectFile(event) {
|
|
24496
|
+
this.selectedFile = event.addedFiles[0];
|
|
24497
|
+
this.fileChange.emit(this.selectedFile);
|
|
24498
|
+
}
|
|
24499
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24500
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
24501
|
+
}
|
|
24502
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
24503
|
+
type: Component,
|
|
24504
|
+
args: [{ selector: 'gn-ui-drag-and-drop-file-input', template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"] }]
|
|
24505
|
+
}], propDecorators: { placeholder: [{
|
|
24178
24506
|
type: Input
|
|
24179
|
-
}],
|
|
24507
|
+
}], accept: [{
|
|
24180
24508
|
type: Input
|
|
24181
|
-
}],
|
|
24509
|
+
}], fileChange: [{
|
|
24182
24510
|
type: Output
|
|
24183
|
-
}], overlayOrigin: [{
|
|
24184
|
-
type: ViewChild,
|
|
24185
|
-
args: ['overlayOrigin']
|
|
24186
|
-
}], overlay: [{
|
|
24187
|
-
type: ViewChild,
|
|
24188
|
-
args: [CdkConnectedOverlay]
|
|
24189
|
-
}], choiceInputs: [{
|
|
24190
|
-
type: ViewChildren,
|
|
24191
|
-
args: ['choiceInputs', { read: ElementRef }]
|
|
24192
24511
|
}] } });
|
|
24193
24512
|
|
|
24194
24513
|
class DropdownMultiselectComponent {
|
|
@@ -24336,13 +24655,13 @@ class DropdownMultiselectComponent {
|
|
|
24336
24655
|
propagateToDocumentOnly(event);
|
|
24337
24656
|
this.setFocus();
|
|
24338
24657
|
}
|
|
24339
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$
|
|
24340
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$
|
|
24658
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$5.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24659
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24341
24660
|
}
|
|
24342
24661
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24343
24662
|
type: Component,
|
|
24344
24663
|
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
24345
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
24664
|
+
}], ctorParameters: function () { return [{ type: i1$5.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24346
24665
|
type: Input
|
|
24347
24666
|
}], choices: [{
|
|
24348
24667
|
type: Input
|
|
@@ -24373,123 +24692,300 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24373
24692
|
args: ['checkBox', { read: ElementRef }]
|
|
24374
24693
|
}] } });
|
|
24375
24694
|
|
|
24376
|
-
|
|
24695
|
+
const DEFAULT_ROW_NUMBERS = 6;
|
|
24696
|
+
class DropdownSelectorComponent {
|
|
24377
24697
|
constructor() {
|
|
24378
|
-
this.
|
|
24379
|
-
|
|
24380
|
-
|
|
24381
|
-
|
|
24382
|
-
|
|
24383
|
-
|
|
24384
|
-
|
|
24385
|
-
|
|
24386
|
-
|
|
24387
|
-
|
|
24388
|
-
|
|
24389
|
-
|
|
24390
|
-
|
|
24391
|
-
|
|
24392
|
-
|
|
24698
|
+
this.showTitle = true;
|
|
24699
|
+
this.extraBtnClass = '';
|
|
24700
|
+
this.minWidth = '';
|
|
24701
|
+
this.selectValue = new EventEmitter();
|
|
24702
|
+
this.overlayOpen = false;
|
|
24703
|
+
this.overlayWidth = 'auto';
|
|
24704
|
+
this.overlayMaxHeight = 'none';
|
|
24705
|
+
this.overlayPositions = [
|
|
24706
|
+
{
|
|
24707
|
+
originX: 'start',
|
|
24708
|
+
originY: 'bottom',
|
|
24709
|
+
overlayX: 'start',
|
|
24710
|
+
overlayY: 'top',
|
|
24711
|
+
offsetY: 8,
|
|
24712
|
+
},
|
|
24713
|
+
{
|
|
24714
|
+
originX: 'start',
|
|
24715
|
+
originY: 'top',
|
|
24716
|
+
overlayX: 'start',
|
|
24717
|
+
overlayY: 'bottom',
|
|
24718
|
+
offsetY: -8,
|
|
24719
|
+
},
|
|
24720
|
+
];
|
|
24393
24721
|
}
|
|
24394
|
-
get
|
|
24395
|
-
return
|
|
24722
|
+
get selectedChoice() {
|
|
24723
|
+
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
24724
|
+
this.choices[0]);
|
|
24396
24725
|
}
|
|
24397
|
-
|
|
24398
|
-
this.
|
|
24726
|
+
get id() {
|
|
24727
|
+
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
24399
24728
|
}
|
|
24400
|
-
|
|
24401
|
-
|
|
24729
|
+
getChoiceLabel() {
|
|
24730
|
+
return this.selectedChoice?.label;
|
|
24402
24731
|
}
|
|
24403
|
-
|
|
24404
|
-
|
|
24405
|
-
|
|
24406
|
-
this.
|
|
24732
|
+
ngOnInit() {
|
|
24733
|
+
if (!this.maxRows)
|
|
24734
|
+
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
24735
|
+
if (!this.choices || this.choices.length === 0) {
|
|
24736
|
+
this.choices = [];
|
|
24737
|
+
}
|
|
24407
24738
|
}
|
|
24408
|
-
|
|
24409
|
-
|
|
24739
|
+
isSelected(choice) {
|
|
24740
|
+
return choice === this.selectedChoice;
|
|
24741
|
+
}
|
|
24742
|
+
onSelectValue(choice) {
|
|
24743
|
+
this.closeOverlay();
|
|
24744
|
+
this.selected = choice.value;
|
|
24745
|
+
this.selectValue.emit(this.selected);
|
|
24746
|
+
}
|
|
24747
|
+
openOverlay() {
|
|
24748
|
+
this.overlayWidth =
|
|
24749
|
+
this.overlayOrigin.elementRef.nativeElement.getBoundingClientRect()
|
|
24750
|
+
.width + 'px';
|
|
24751
|
+
this.overlayMaxHeight = this.maxRows
|
|
24752
|
+
? `${this.maxRows * 29 + 60}px`
|
|
24753
|
+
: 'none';
|
|
24754
|
+
this.overlayOpen = true;
|
|
24755
|
+
return Promise.all([
|
|
24756
|
+
firstValueFrom(this.overlay.attach),
|
|
24757
|
+
firstValueFrom(this.choiceInputs.changes),
|
|
24758
|
+
]);
|
|
24759
|
+
}
|
|
24760
|
+
closeOverlay() {
|
|
24761
|
+
this.overlayOpen = false;
|
|
24762
|
+
}
|
|
24763
|
+
focusFirstItem() {
|
|
24764
|
+
this.choiceInputs.get(0).nativeElement.focus();
|
|
24765
|
+
}
|
|
24766
|
+
focusLastItem() {
|
|
24767
|
+
this.choiceInputs.get(this.choiceInputs.length - 1).nativeElement.focus();
|
|
24768
|
+
}
|
|
24769
|
+
async handleTriggerKeydown(event) {
|
|
24770
|
+
const keyCode = event.code;
|
|
24771
|
+
const isOpenKey = keyCode === 'ArrowDown' ||
|
|
24772
|
+
keyCode === 'ArrowUp' ||
|
|
24773
|
+
keyCode === 'ArrowLeft' ||
|
|
24774
|
+
keyCode === 'ArrowRight' ||
|
|
24775
|
+
keyCode === 'Enter' ||
|
|
24776
|
+
keyCode === 'Space';
|
|
24777
|
+
const isCloseKey = keyCode === 'Escape';
|
|
24778
|
+
if (isOpenKey) {
|
|
24779
|
+
event.preventDefault();
|
|
24780
|
+
if (!this.overlayOpen) {
|
|
24781
|
+
await this.openOverlay();
|
|
24782
|
+
}
|
|
24783
|
+
if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp')
|
|
24784
|
+
this.focusLastItem();
|
|
24785
|
+
else
|
|
24786
|
+
this.focusFirstItem();
|
|
24787
|
+
}
|
|
24788
|
+
else if (this.overlayOpen && isCloseKey) {
|
|
24789
|
+
event.preventDefault();
|
|
24790
|
+
this.closeOverlay();
|
|
24791
|
+
}
|
|
24792
|
+
}
|
|
24793
|
+
handleOverlayKeydown(event) {
|
|
24794
|
+
if (!this.overlayOpen)
|
|
24795
|
+
return;
|
|
24796
|
+
const keyCode = event.code;
|
|
24797
|
+
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
24798
|
+
event.preventDefault();
|
|
24799
|
+
this.shiftItemFocus(1);
|
|
24800
|
+
}
|
|
24801
|
+
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
24802
|
+
event.preventDefault();
|
|
24803
|
+
this.shiftItemFocus(-1);
|
|
24804
|
+
}
|
|
24805
|
+
else if (keyCode === 'Escape') {
|
|
24806
|
+
this.closeOverlay();
|
|
24807
|
+
}
|
|
24808
|
+
}
|
|
24809
|
+
shiftItemFocus(shift) {
|
|
24810
|
+
const index = this.focusedIndex;
|
|
24811
|
+
if (index === -1)
|
|
24812
|
+
return;
|
|
24813
|
+
const max = this.choiceInputs.length;
|
|
24814
|
+
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
24815
|
+
const newIndex = (((index + shift) % max) + max) % max;
|
|
24816
|
+
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24817
|
+
}
|
|
24818
|
+
get focusedIndex() {
|
|
24819
|
+
return this.choiceInputs.reduce((prev, curr, curIndex) => curr.nativeElement === document.activeElement ? curIndex : prev, -1);
|
|
24820
|
+
}
|
|
24821
|
+
selectIfEnter(event, choice) {
|
|
24822
|
+
if (event.code === 'Enter') {
|
|
24823
|
+
event.preventDefault();
|
|
24824
|
+
this.onSelectValue(choice);
|
|
24825
|
+
}
|
|
24826
|
+
}
|
|
24827
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24828
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, isStandalone: true, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth", disabled: "disabled" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n [disabled]=\"disabled\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$5.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24410
24829
|
}
|
|
24411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24830
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24412
24831
|
type: Component,
|
|
24413
|
-
args: [{ selector: 'gn-ui-
|
|
24414
|
-
|
|
24832
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
24833
|
+
CommonModule,
|
|
24834
|
+
ButtonComponent,
|
|
24835
|
+
OverlayModule,
|
|
24836
|
+
MatIconModule,
|
|
24837
|
+
TranslateModule,
|
|
24838
|
+
], template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n [disabled]=\"disabled\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
24839
|
+
}], propDecorators: { title: [{
|
|
24415
24840
|
type: Input
|
|
24416
|
-
}],
|
|
24841
|
+
}], showTitle: [{
|
|
24417
24842
|
type: Input
|
|
24418
|
-
}],
|
|
24843
|
+
}], ariaName: [{
|
|
24419
24844
|
type: Input
|
|
24420
|
-
}],
|
|
24845
|
+
}], choices: [{
|
|
24421
24846
|
type: Input
|
|
24422
|
-
}],
|
|
24847
|
+
}], selected: [{
|
|
24848
|
+
type: Input
|
|
24849
|
+
}], maxRows: [{
|
|
24850
|
+
type: Input
|
|
24851
|
+
}], extraBtnClass: [{
|
|
24852
|
+
type: Input
|
|
24853
|
+
}], minWidth: [{
|
|
24854
|
+
type: Input
|
|
24855
|
+
}], disabled: [{
|
|
24856
|
+
type: Input
|
|
24857
|
+
}], selectValue: [{
|
|
24423
24858
|
type: Output
|
|
24424
|
-
}],
|
|
24859
|
+
}], overlayOrigin: [{
|
|
24425
24860
|
type: ViewChild,
|
|
24426
|
-
args: ['
|
|
24861
|
+
args: ['overlayOrigin']
|
|
24862
|
+
}], overlay: [{
|
|
24863
|
+
type: ViewChild,
|
|
24864
|
+
args: [CdkConnectedOverlay]
|
|
24865
|
+
}], choiceInputs: [{
|
|
24866
|
+
type: ViewChildren,
|
|
24867
|
+
args: ['choiceInputs', { read: ElementRef }]
|
|
24427
24868
|
}] } });
|
|
24428
24869
|
|
|
24429
|
-
class
|
|
24430
|
-
|
|
24431
|
-
this.
|
|
24870
|
+
class EditableLabelDirective {
|
|
24871
|
+
constructor(el, renderer) {
|
|
24872
|
+
this.el = el;
|
|
24873
|
+
this.renderer = renderer;
|
|
24874
|
+
this.editableLabelChanged = new EventEmitter();
|
|
24432
24875
|
}
|
|
24433
|
-
|
|
24434
|
-
this.
|
|
24435
|
-
|
|
24436
|
-
|
|
24437
|
-
|
|
24438
|
-
|
|
24439
|
-
|
|
24440
|
-
|
|
24441
|
-
|
|
24442
|
-
|
|
24443
|
-
|
|
24444
|
-
|
|
24445
|
-
|
|
24446
|
-
|
|
24447
|
-
|
|
24448
|
-
|
|
24449
|
-
|
|
24450
|
-
|
|
24451
|
-
|
|
24452
|
-
|
|
24453
|
-
|
|
24454
|
-
|
|
24455
|
-
|
|
24876
|
+
ngAfterViewInit() {
|
|
24877
|
+
if (this.gnUiEditableLabel !== false) {
|
|
24878
|
+
const appendedInput = this.renderer.createElement('input');
|
|
24879
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
24880
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
24881
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
24882
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
24883
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
24884
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
24885
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
24886
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
24887
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
24888
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
24889
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
24890
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
24891
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
24892
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
24893
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
24894
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
24895
|
+
});
|
|
24896
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
24897
|
+
}
|
|
24898
|
+
}
|
|
24899
|
+
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 }); }
|
|
24900
|
+
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 }); }
|
|
24901
|
+
}
|
|
24902
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
24903
|
+
type: Directive,
|
|
24904
|
+
args: [{
|
|
24905
|
+
selector: '[gnUiEditableLabel]',
|
|
24906
|
+
standalone: true,
|
|
24907
|
+
}]
|
|
24908
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
24909
|
+
type: Output
|
|
24910
|
+
}], gnUiEditableLabel: [{
|
|
24911
|
+
type: Input
|
|
24912
|
+
}] } });
|
|
24913
|
+
|
|
24914
|
+
class NavigationButtonComponent {
|
|
24915
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24916
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24917
|
+
}
|
|
24918
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24919
|
+
type: Component,
|
|
24920
|
+
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
24921
|
+
}], propDecorators: { label: [{
|
|
24922
|
+
type: Input
|
|
24923
|
+
}], icon: [{
|
|
24924
|
+
type: Input
|
|
24925
|
+
}] } });
|
|
24926
|
+
|
|
24927
|
+
class SearchInputComponent {
|
|
24928
|
+
constructor() {
|
|
24929
|
+
this.value = '';
|
|
24930
|
+
this.placeholder = '';
|
|
24456
24931
|
this.rawChange = new Subject();
|
|
24457
|
-
this.
|
|
24458
|
-
this.subscription = new Subscription();
|
|
24932
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
24459
24933
|
}
|
|
24460
|
-
|
|
24461
|
-
|
|
24462
|
-
|
|
24463
|
-
}
|
|
24464
|
-
this.items = this.selectedItems;
|
|
24465
|
-
this.subscription = this.rawChange
|
|
24466
|
-
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24467
|
-
.subscribe();
|
|
24468
|
-
this.rawChange.next(this.items);
|
|
24934
|
+
handleChange($event) {
|
|
24935
|
+
const value = $event.target.value;
|
|
24936
|
+
this.rawChange.next(value);
|
|
24469
24937
|
}
|
|
24470
|
-
|
|
24471
|
-
this.
|
|
24938
|
+
clear() {
|
|
24939
|
+
this.value = null;
|
|
24940
|
+
this.rawChange.next(null);
|
|
24472
24941
|
}
|
|
24473
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24474
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24942
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24943
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: { value: "value", placeholder: "placeholder" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24475
24944
|
}
|
|
24476
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24945
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
24477
24946
|
type: Component,
|
|
24478
|
-
args: [{ selector: 'gn-ui-
|
|
24479
|
-
}],
|
|
24947
|
+
args: [{ selector: 'gn-ui-search-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n" }]
|
|
24948
|
+
}], propDecorators: { value: [{
|
|
24480
24949
|
type: Input
|
|
24481
24950
|
}], placeholder: [{
|
|
24482
24951
|
type: Input
|
|
24483
|
-
}],
|
|
24484
|
-
type:
|
|
24485
|
-
}]
|
|
24486
|
-
|
|
24487
|
-
|
|
24952
|
+
}], valueChange: [{
|
|
24953
|
+
type: Output
|
|
24954
|
+
}] } });
|
|
24955
|
+
|
|
24956
|
+
class StarToggleComponent {
|
|
24957
|
+
constructor() {
|
|
24958
|
+
this.disabled = false;
|
|
24959
|
+
this.newValue = new EventEmitter();
|
|
24960
|
+
}
|
|
24961
|
+
toggle(event) {
|
|
24962
|
+
if (!this.disabled) {
|
|
24963
|
+
this.toggled = !this.toggled;
|
|
24964
|
+
if (this.toggled) {
|
|
24965
|
+
const anim = this.overlay.nativeElement.getAnimations()[0];
|
|
24966
|
+
anim.cancel();
|
|
24967
|
+
anim.play();
|
|
24968
|
+
}
|
|
24969
|
+
this.newValue.emit(this.toggled);
|
|
24970
|
+
}
|
|
24971
|
+
propagateToDocumentOnly(event);
|
|
24972
|
+
event.preventDefault();
|
|
24973
|
+
}
|
|
24974
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24975
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40;stroke:var(--color-primary-darker)}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24976
|
+
}
|
|
24977
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
24978
|
+
type: Component,
|
|
24979
|
+
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40;stroke:var(--color-primary-darker)}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
|
|
24980
|
+
}], propDecorators: { toggled: [{
|
|
24488
24981
|
type: Input
|
|
24489
|
-
}],
|
|
24982
|
+
}], disabled: [{
|
|
24490
24983
|
type: Input
|
|
24491
|
-
}],
|
|
24984
|
+
}], newValue: [{
|
|
24492
24985
|
type: Output
|
|
24986
|
+
}], overlay: [{
|
|
24987
|
+
type: ViewChild,
|
|
24988
|
+
args: ['starOverlay']
|
|
24493
24989
|
}] } });
|
|
24494
24990
|
|
|
24495
24991
|
class TextAreaComponent {
|
|
@@ -24552,317 +25048,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24552
25048
|
args: ['input']
|
|
24553
25049
|
}] } });
|
|
24554
25050
|
|
|
24555
|
-
class
|
|
24556
|
-
constructor(
|
|
24557
|
-
this.
|
|
24558
|
-
|
|
24559
|
-
|
|
24560
|
-
|
|
24561
|
-
|
|
24562
|
-
|
|
24563
|
-
|
|
24564
|
-
|
|
24565
|
-
|
|
24566
|
-
|
|
24567
|
-
|
|
24568
|
-
this.
|
|
24569
|
-
|
|
24570
|
-
|
|
24571
|
-
this.
|
|
24572
|
-
this.changeDetector.detectChanges();
|
|
24573
|
-
clearTimeout(this.timeout);
|
|
24574
|
-
}
|
|
24575
|
-
expandAndClose() {
|
|
24576
|
-
this.expanded = true;
|
|
24577
|
-
this.changeDetector.detectChanges();
|
|
24578
|
-
clearTimeout(this.timeout);
|
|
24579
|
-
this.timeout = setTimeout(() => {
|
|
24580
|
-
this.expanded = false;
|
|
24581
|
-
this.changeDetector.detectChanges();
|
|
24582
|
-
}, this.showDuration);
|
|
24583
|
-
}
|
|
24584
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24585
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: { icon: "icon", type: "type", position: "position" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24586
|
-
}
|
|
24587
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, decorators: [{
|
|
24588
|
-
type: Component,
|
|
24589
|
-
args: [{ selector: 'gn-ui-popup-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"] }]
|
|
24590
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
|
|
24591
|
-
type: Input
|
|
24592
|
-
}], type: [{
|
|
24593
|
-
type: Input
|
|
24594
|
-
}], position: [{
|
|
24595
|
-
type: Input
|
|
24596
|
-
}], content: [{
|
|
24597
|
-
type: ViewChild,
|
|
24598
|
-
args: ['content']
|
|
24599
|
-
}] } });
|
|
24600
|
-
|
|
24601
|
-
class AutocompleteComponent {
|
|
24602
|
-
constructor(cdRef) {
|
|
24603
|
-
this.cdRef = cdRef;
|
|
24604
|
-
this.clearOnSelection = false;
|
|
24605
|
-
this.autoFocus = false;
|
|
24606
|
-
this.itemSelected = new EventEmitter();
|
|
24607
|
-
this.inputSubmitted = new EventEmitter();
|
|
24608
|
-
this.inputCleared = new EventEmitter();
|
|
24609
|
-
this.control = new UntypedFormControl();
|
|
24610
|
-
this.subscription = new Subscription();
|
|
24611
|
-
this.cancelEnter = true;
|
|
24612
|
-
this.selectionSubject = new ReplaySubject(1);
|
|
24613
|
-
this.lastInputValue$ = new ReplaySubject(1);
|
|
24614
|
-
this.error = null;
|
|
24615
|
-
this.displayWithFn = (item) => item;
|
|
24616
|
-
}
|
|
24617
|
-
ngOnChanges(changes) {
|
|
24618
|
-
const { value } = changes;
|
|
24619
|
-
if (value) {
|
|
24620
|
-
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24621
|
-
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24622
|
-
if (previousTextValue !== currentTextValue) {
|
|
24623
|
-
this.updateInputValue(value.currentValue);
|
|
24624
|
-
}
|
|
24625
|
-
}
|
|
25051
|
+
class TextInputComponent {
|
|
25052
|
+
constructor() {
|
|
25053
|
+
this.baseClass = [
|
|
25054
|
+
'appearance-none',
|
|
25055
|
+
'border border-gray-300',
|
|
25056
|
+
'rounded w-full',
|
|
25057
|
+
'p-2',
|
|
25058
|
+
'text-gray-700',
|
|
25059
|
+
'leading-tight',
|
|
25060
|
+
'focus:outline-none',
|
|
25061
|
+
'focus:border-primary',
|
|
25062
|
+
].join(' ');
|
|
25063
|
+
this.value = '';
|
|
25064
|
+
this.extraClass = '';
|
|
25065
|
+
this.required = false;
|
|
25066
|
+
this.rawChange = new Subject();
|
|
25067
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24626
25068
|
}
|
|
24627
|
-
|
|
24628
|
-
|
|
24629
|
-
this.error = error.message;
|
|
24630
|
-
return of([]);
|
|
24631
|
-
}), finalize(() => (this.searching = false)));
|
|
24632
|
-
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24633
|
-
if (any !== '') {
|
|
24634
|
-
this.cancelEnter = false;
|
|
24635
|
-
}
|
|
24636
|
-
});
|
|
24637
|
-
this.control.valueChanges
|
|
24638
|
-
.pipe(filter((value) => typeof value === 'string'))
|
|
24639
|
-
.subscribe(this.lastInputValue$);
|
|
25069
|
+
get classList() {
|
|
25070
|
+
return `${this.baseClass} ${this.extraClass}`;
|
|
24640
25071
|
}
|
|
24641
25072
|
ngAfterViewInit() {
|
|
24642
|
-
this.
|
|
24643
|
-
if (this.autoFocus) {
|
|
24644
|
-
this.inputRef.nativeElement.focus();
|
|
24645
|
-
this.cdRef.detectChanges();
|
|
24646
|
-
}
|
|
24647
|
-
}
|
|
24648
|
-
ngOnDestroy() {
|
|
24649
|
-
this.subscription.unsubscribe();
|
|
24650
|
-
}
|
|
24651
|
-
updateInputValue(value) {
|
|
24652
|
-
if (value) {
|
|
24653
|
-
this.control.setValue(value);
|
|
24654
|
-
}
|
|
24655
|
-
if (this.inputRef) {
|
|
24656
|
-
this.inputRef.nativeElement.value = value?.title || '';
|
|
24657
|
-
}
|
|
24658
|
-
}
|
|
24659
|
-
clear() {
|
|
24660
|
-
this.inputRef.nativeElement.value = '';
|
|
24661
|
-
this.inputCleared.emit();
|
|
24662
|
-
this.selectionSubject
|
|
24663
|
-
.pipe(take(1))
|
|
24664
|
-
.subscribe((selection) => selection && selection.option.deselect());
|
|
24665
|
-
this.inputRef.nativeElement.focus();
|
|
24666
|
-
this.triggerRef.closePanel();
|
|
24667
|
-
}
|
|
24668
|
-
handleEnter(any) {
|
|
24669
|
-
if (!this.cancelEnter) {
|
|
24670
|
-
this.inputSubmitted.emit(any);
|
|
24671
|
-
this.triggerRef.closePanel();
|
|
24672
|
-
}
|
|
25073
|
+
this.checkRequired(this.input.nativeElement.value);
|
|
24673
25074
|
}
|
|
24674
|
-
|
|
24675
|
-
this.
|
|
24676
|
-
this.triggerRef.closePanel();
|
|
25075
|
+
checkRequired(value) {
|
|
25076
|
+
this.input.nativeElement.classList.toggle('invalid', this.required && value === '');
|
|
24677
25077
|
}
|
|
24678
|
-
|
|
24679
|
-
|
|
24680
|
-
this.
|
|
24681
|
-
|
|
24682
|
-
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24683
|
-
this.inputRef.nativeElement.value = any;
|
|
24684
|
-
});
|
|
24685
|
-
}
|
|
25078
|
+
handleChange($event) {
|
|
25079
|
+
const value = $event.target.value;
|
|
25080
|
+
this.checkRequired(value);
|
|
25081
|
+
this.rawChange.next(value);
|
|
24686
25082
|
}
|
|
24687
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24688
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
25083
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25084
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextInputComponent, selector: "gn-ui-text-input", inputs: { value: "value", extraClass: "extraClass", hint: "hint", required: "required", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n [disabled]=\"disabled\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
24689
25085
|
}
|
|
24690
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25086
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
24691
25087
|
type: Component,
|
|
24692
|
-
args: [{ selector: 'gn-ui-
|
|
24693
|
-
}],
|
|
24694
|
-
type: Input
|
|
24695
|
-
}], action: [{
|
|
24696
|
-
type: Input
|
|
24697
|
-
}], value: [{
|
|
24698
|
-
type: Input
|
|
24699
|
-
}], clearOnSelection: [{
|
|
25088
|
+
args: [{ selector: 'gn-ui-text-input', template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n [disabled]=\"disabled\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25089
|
+
}], propDecorators: { value: [{
|
|
24700
25090
|
type: Input
|
|
24701
|
-
}],
|
|
25091
|
+
}], extraClass: [{
|
|
24702
25092
|
type: Input
|
|
24703
|
-
}],
|
|
24704
|
-
type: Output
|
|
24705
|
-
}], inputSubmitted: [{
|
|
24706
|
-
type: Output
|
|
24707
|
-
}], inputCleared: [{
|
|
24708
|
-
type: Output
|
|
24709
|
-
}], triggerRef: [{
|
|
24710
|
-
type: ViewChild,
|
|
24711
|
-
args: [MatAutocompleteTrigger]
|
|
24712
|
-
}], autocomplete: [{
|
|
24713
|
-
type: ViewChild,
|
|
24714
|
-
args: [MatAutocomplete]
|
|
24715
|
-
}], inputRef: [{
|
|
24716
|
-
type: ViewChild,
|
|
24717
|
-
args: ['searchInput']
|
|
24718
|
-
}], displayWithFn: [{
|
|
25093
|
+
}], hint: [{
|
|
24719
25094
|
type: Input
|
|
24720
|
-
}]
|
|
24721
|
-
|
|
24722
|
-
class StarToggleComponent {
|
|
24723
|
-
constructor() {
|
|
24724
|
-
this.disabled = false;
|
|
24725
|
-
this.newValue = new EventEmitter();
|
|
24726
|
-
}
|
|
24727
|
-
toggle(event) {
|
|
24728
|
-
if (!this.disabled) {
|
|
24729
|
-
this.toggled = !this.toggled;
|
|
24730
|
-
if (this.toggled) {
|
|
24731
|
-
const anim = this.overlay.nativeElement.getAnimations()[0];
|
|
24732
|
-
anim.cancel();
|
|
24733
|
-
anim.play();
|
|
24734
|
-
}
|
|
24735
|
-
this.newValue.emit(this.toggled);
|
|
24736
|
-
}
|
|
24737
|
-
propagateToDocumentOnly(event);
|
|
24738
|
-
event.preventDefault();
|
|
24739
|
-
}
|
|
24740
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24741
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: StarToggleComponent, selector: "gn-ui-star-toggle", inputs: { toggled: "toggled", disabled: "disabled" }, outputs: { newValue: "newValue" }, viewQueries: [{ propertyName: "overlay", first: true, predicate: ["starOverlay"], descendants: true }], ngImport: i0, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40;stroke:var(--color-primary-darker)}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24742
|
-
}
|
|
24743
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
24744
|
-
type: Component,
|
|
24745
|
-
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"inline-block relative align-middle\" style=\"line-height: 0.7em\">\n <button\n type=\"button\"\n class=\"-m-[8px] p-[8px]\"\n (click)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n 'disabled opacity-45': !toggled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n 'cursor-default': disabled\n }\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n [ngClass]=\"{ 'star-filled': toggled }\"\n >star</mat-icon\n >\n </button>\n <svg\n #starOverlay\n class=\"star-toggle-overlay\"\n width=\"40px\"\n height=\"40px\"\n viewBox=\"-15 -15 30 30\"\n >\n <g>\n <path d=\"M 0,13.229167 V 0\" />\n <path d=\"M -12.484186,4.0880377 0,0\" />\n <path d=\"M -7.6784102,-10.70262 0,0\" />\n <path d=\"M 7.8734079,-10.70262 0,0\" />\n <path d=\"M 12.679184,4.0880376 0,0\" />\n </g>\n </svg>\n</div>\n", styles: ["button.enabled{color:var(--star-toggle-enabled-color, var(--color-secondary))}button.disabled{color:var(--star-toggle-disabled-color, var(--color-primary))}mat-icon{width:1em;height:1em;font-size:1.5em;margin-top:-.1em;font-variation-settings:\"opsz\" 40;stroke:var(--color-primary-darker)}.star-filled{font-variation-settings:\"FILL\" 1}.star-toggle-overlay{stroke:var(--color-secondary);stroke-width:3.5px;stroke-linecap:round;position:absolute;top:50%;left:50%;width:2.5em;height:2.5em;transform:translate(-50%,-50%);pointer-events:none;stroke-dasharray:5 20;stroke-dashoffset:-15;animation:overlay-dash .8s cubic-bezier(.16,.66,.44,.96) forwards;animation-play-state:paused}@keyframes overlay-dash{to{stroke-dashoffset:7}}\n"] }]
|
|
24746
|
-
}], propDecorators: { toggled: [{
|
|
25095
|
+
}], required: [{
|
|
24747
25096
|
type: Input
|
|
24748
25097
|
}], disabled: [{
|
|
24749
25098
|
type: Input
|
|
24750
|
-
}],
|
|
25099
|
+
}], valueChange: [{
|
|
24751
25100
|
type: Output
|
|
24752
|
-
}],
|
|
25101
|
+
}], input: [{
|
|
24753
25102
|
type: ViewChild,
|
|
24754
|
-
args: ['
|
|
24755
|
-
}] } });
|
|
24756
|
-
|
|
24757
|
-
class ViewportIntersectorComponent {
|
|
24758
|
-
constructor(vcRef) {
|
|
24759
|
-
this.vcRef = vcRef;
|
|
24760
|
-
this.isInViewport = new EventEmitter();
|
|
24761
|
-
this.entersViewport = this.isInViewport.pipe(filter((inViewport) => inViewport), map$1(() => undefined));
|
|
24762
|
-
this.exitsViewport = this.isInViewport.pipe(filter((inViewport) => !inViewport), map$1(() => undefined));
|
|
24763
|
-
}
|
|
24764
|
-
ngOnInit() {
|
|
24765
|
-
const elToObserve = this.vcRef.element.nativeElement;
|
|
24766
|
-
this.observeInputElement(elToObserve);
|
|
24767
|
-
}
|
|
24768
|
-
ngOnDestroy() {
|
|
24769
|
-
const elToObserve = this.vcRef.element.nativeElement;
|
|
24770
|
-
this.unObserveInputElement(elToObserve);
|
|
24771
|
-
}
|
|
24772
|
-
observeInputElement(elToObserve) {
|
|
24773
|
-
if (!this.observer) {
|
|
24774
|
-
this.observer = new IntersectionObserver((entries) => {
|
|
24775
|
-
entries.forEach((entry) => {
|
|
24776
|
-
this.isInViewport.emit(entry.isIntersecting);
|
|
24777
|
-
});
|
|
24778
|
-
}, { root: null, threshold: 0 });
|
|
24779
|
-
}
|
|
24780
|
-
this.observer.observe(elToObserve);
|
|
24781
|
-
}
|
|
24782
|
-
unObserveInputElement(elToObserve) {
|
|
24783
|
-
this.observer?.unobserve(elToObserve);
|
|
24784
|
-
}
|
|
24785
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24786
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: { isInViewport: "isInViewport", entersViewport: "entersViewport", exitsViewport: "exitsViewport" }, ngImport: i0, template: "<div class=\"w-full h-full\"></div>\n", styles: [""] }); }
|
|
24787
|
-
}
|
|
24788
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
24789
|
-
type: Component,
|
|
24790
|
-
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
24791
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
24792
|
-
type: Output
|
|
24793
|
-
}], entersViewport: [{
|
|
24794
|
-
type: Output
|
|
24795
|
-
}], exitsViewport: [{
|
|
24796
|
-
type: Output
|
|
24797
|
-
}] } });
|
|
24798
|
-
|
|
24799
|
-
class CheckToggleComponent {
|
|
24800
|
-
constructor() {
|
|
24801
|
-
this.color = 'primary';
|
|
24802
|
-
this.toggled = new EventEmitter();
|
|
24803
|
-
}
|
|
24804
|
-
toggle(event) {
|
|
24805
|
-
this.toggled.emit(event);
|
|
24806
|
-
}
|
|
24807
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24808
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24809
|
-
}
|
|
24810
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
24811
|
-
type: Component,
|
|
24812
|
-
args: [{ selector: 'gn-ui-check-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n" }]
|
|
24813
|
-
}], propDecorators: { title: [{
|
|
24814
|
-
type: Input
|
|
24815
|
-
}], label: [{
|
|
24816
|
-
type: Input
|
|
24817
|
-
}], value: [{
|
|
24818
|
-
type: Input
|
|
24819
|
-
}], color: [{
|
|
24820
|
-
type: Input
|
|
24821
|
-
}], toggled: [{
|
|
24822
|
-
type: Output
|
|
24823
|
-
}] } });
|
|
24824
|
-
|
|
24825
|
-
const placeholder = 'dropFile';
|
|
24826
|
-
marker('dropFile');
|
|
24827
|
-
class DragAndDropFileInputComponent {
|
|
24828
|
-
constructor() {
|
|
24829
|
-
this.placeholder = placeholder;
|
|
24830
|
-
this.accept = '*';
|
|
24831
|
-
this.fileChange = new EventEmitter();
|
|
24832
|
-
this.selectedFile = null;
|
|
24833
|
-
}
|
|
24834
|
-
get fileName() {
|
|
24835
|
-
return this.selectedFile && this.selectedFile.name;
|
|
24836
|
-
}
|
|
24837
|
-
selectFile(event) {
|
|
24838
|
-
this.selectedFile = event.addedFiles[0];
|
|
24839
|
-
this.fileChange.emit(this.selectedFile);
|
|
24840
|
-
}
|
|
24841
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24842
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
24843
|
-
}
|
|
24844
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
24845
|
-
type: Component,
|
|
24846
|
-
args: [{ selector: 'gn-ui-drag-and-drop-file-input', template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"] }]
|
|
24847
|
-
}], propDecorators: { placeholder: [{
|
|
24848
|
-
type: Input
|
|
24849
|
-
}], accept: [{
|
|
24850
|
-
type: Input
|
|
24851
|
-
}], fileChange: [{
|
|
24852
|
-
type: Output
|
|
24853
|
-
}] } });
|
|
24854
|
-
|
|
24855
|
-
class NavigationButtonComponent {
|
|
24856
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24857
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24858
|
-
}
|
|
24859
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24860
|
-
type: Component,
|
|
24861
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
24862
|
-
}], propDecorators: { label: [{
|
|
24863
|
-
type: Input
|
|
24864
|
-
}], icon: [{
|
|
24865
|
-
type: Input
|
|
25103
|
+
args: ['input']
|
|
24866
25104
|
}] } });
|
|
24867
25105
|
|
|
24868
25106
|
class ColorScaleComponent {
|
|
@@ -24970,7 +25208,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24970
25208
|
|
|
24971
25209
|
class LoadingMaskComponent {
|
|
24972
25210
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24973
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"], dependencies: [{ kind: "component", type: i1$
|
|
25211
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"], dependencies: [{ kind: "component", type: i1$6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24974
25212
|
}
|
|
24975
25213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, decorators: [{
|
|
24976
25214
|
type: Component,
|
|
@@ -25066,148 +25304,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25066
25304
|
}]
|
|
25067
25305
|
}] });
|
|
25068
25306
|
|
|
25069
|
-
class
|
|
25070
|
-
constructor() {
|
|
25071
|
-
this.
|
|
25072
|
-
this.
|
|
25307
|
+
class ViewportIntersectorComponent {
|
|
25308
|
+
constructor(vcRef) {
|
|
25309
|
+
this.vcRef = vcRef;
|
|
25310
|
+
this.isInViewport = new EventEmitter();
|
|
25311
|
+
this.entersViewport = this.isInViewport.pipe(filter((inViewport) => inViewport), map$1(() => undefined));
|
|
25312
|
+
this.exitsViewport = this.isInViewport.pipe(filter((inViewport) => !inViewport), map$1(() => undefined));
|
|
25073
25313
|
}
|
|
25074
|
-
|
|
25075
|
-
|
|
25076
|
-
|
|
25314
|
+
ngOnInit() {
|
|
25315
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25316
|
+
this.observeInputElement(elToObserve);
|
|
25077
25317
|
}
|
|
25078
|
-
|
|
25079
|
-
|
|
25080
|
-
|
|
25081
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
25082
|
-
type: Component,
|
|
25083
|
-
args: [{ selector: 'gn-ui-copy-text-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n" }]
|
|
25084
|
-
}], propDecorators: { text: [{
|
|
25085
|
-
type: Input
|
|
25086
|
-
}], tooltipText: [{
|
|
25087
|
-
type: Input
|
|
25088
|
-
}], displayText: [{
|
|
25089
|
-
type: Input
|
|
25090
|
-
}], rows: [{
|
|
25091
|
-
type: Input
|
|
25092
|
-
}] } });
|
|
25093
|
-
|
|
25094
|
-
class CheckboxComponent {
|
|
25095
|
-
constructor() {
|
|
25096
|
-
this.type = 'default';
|
|
25097
|
-
this.checked = false;
|
|
25098
|
-
this.indeterminate = false;
|
|
25099
|
-
this.changed = new EventEmitter();
|
|
25318
|
+
ngOnDestroy() {
|
|
25319
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25320
|
+
this.unObserveInputElement(elToObserve);
|
|
25100
25321
|
}
|
|
25101
|
-
|
|
25102
|
-
|
|
25322
|
+
observeInputElement(elToObserve) {
|
|
25323
|
+
if (!this.observer) {
|
|
25324
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
25325
|
+
entries.forEach((entry) => {
|
|
25326
|
+
this.isInViewport.emit(entry.isIntersecting);
|
|
25327
|
+
});
|
|
25328
|
+
}, { root: null, threshold: 0 });
|
|
25329
|
+
}
|
|
25330
|
+
this.observer.observe(elToObserve);
|
|
25103
25331
|
}
|
|
25104
|
-
|
|
25105
|
-
|
|
25106
|
-
this.checked = !this.checked;
|
|
25107
|
-
this.changed.emit(this.checked);
|
|
25332
|
+
unObserveInputElement(elToObserve) {
|
|
25333
|
+
this.observer?.unobserve(elToObserve);
|
|
25108
25334
|
}
|
|
25109
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25110
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
25335
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25336
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: { isInViewport: "isInViewport", entersViewport: "entersViewport", exitsViewport: "exitsViewport" }, ngImport: i0, template: "<div class=\"w-full h-full\"></div>\n", styles: [""] }); }
|
|
25111
25337
|
}
|
|
25112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25338
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
25113
25339
|
type: Component,
|
|
25114
|
-
args: [{ selector: 'gn-ui-
|
|
25115
|
-
}],
|
|
25116
|
-
type: Input
|
|
25117
|
-
}], checked: [{
|
|
25118
|
-
type: Input
|
|
25119
|
-
}], indeterminate: [{
|
|
25120
|
-
type: Input
|
|
25121
|
-
}], changed: [{
|
|
25340
|
+
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
25341
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
25122
25342
|
type: Output
|
|
25123
|
-
}]
|
|
25124
|
-
|
|
25125
|
-
class SearchInputComponent {
|
|
25126
|
-
constructor() {
|
|
25127
|
-
this.value = '';
|
|
25128
|
-
this.placeholder = '';
|
|
25129
|
-
this.rawChange = new Subject();
|
|
25130
|
-
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
25131
|
-
}
|
|
25132
|
-
handleChange($event) {
|
|
25133
|
-
const value = $event.target.value;
|
|
25134
|
-
this.rawChange.next(value);
|
|
25135
|
-
}
|
|
25136
|
-
clear() {
|
|
25137
|
-
this.value = null;
|
|
25138
|
-
this.rawChange.next(null);
|
|
25139
|
-
}
|
|
25140
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25141
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: { value: "value", placeholder: "placeholder" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25142
|
-
}
|
|
25143
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
25144
|
-
type: Component,
|
|
25145
|
-
args: [{ selector: 'gn-ui-search-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n" }]
|
|
25146
|
-
}], propDecorators: { value: [{
|
|
25147
|
-
type: Input
|
|
25148
|
-
}], placeholder: [{
|
|
25149
|
-
type: Input
|
|
25150
|
-
}], valueChange: [{
|
|
25343
|
+
}], entersViewport: [{
|
|
25151
25344
|
type: Output
|
|
25152
|
-
}]
|
|
25153
|
-
|
|
25154
|
-
class DateRangePickerComponent {
|
|
25155
|
-
startDateSelected(event) {
|
|
25156
|
-
this.startDate = event.value;
|
|
25157
|
-
}
|
|
25158
|
-
endDateSelected(event) {
|
|
25159
|
-
this.endDate = event.value;
|
|
25160
|
-
}
|
|
25161
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25162
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DateRangePickerComponent, selector: "gn-ui-date-range-picker", ngImport: i0, template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i3$2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3$2.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3$2.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3$2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
|
|
25163
|
-
}
|
|
25164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
25165
|
-
type: Component,
|
|
25166
|
-
args: [{ selector: 'gn-ui-date-range-picker', template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
25167
|
-
}] });
|
|
25168
|
-
|
|
25169
|
-
class EditableLabelDirective {
|
|
25170
|
-
constructor(el, renderer) {
|
|
25171
|
-
this.el = el;
|
|
25172
|
-
this.renderer = renderer;
|
|
25173
|
-
this.editableLabelChanged = new EventEmitter();
|
|
25174
|
-
}
|
|
25175
|
-
ngAfterViewInit() {
|
|
25176
|
-
if (this.gnUiEditableLabel !== false) {
|
|
25177
|
-
const appendedInput = this.renderer.createElement('input');
|
|
25178
|
-
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
25179
|
-
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
25180
|
-
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
25181
|
-
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
25182
|
-
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
25183
|
-
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
25184
|
-
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
25185
|
-
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
25186
|
-
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
25187
|
-
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
25188
|
-
const hostContent = this.el.nativeElement.textContent || '';
|
|
25189
|
-
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
25190
|
-
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
25191
|
-
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
25192
|
-
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
25193
|
-
this.editableLabelChanged.emit(event.target.value);
|
|
25194
|
-
});
|
|
25195
|
-
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
25196
|
-
}
|
|
25197
|
-
}
|
|
25198
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
25199
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, isStandalone: true, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
25200
|
-
}
|
|
25201
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
25202
|
-
type: Directive,
|
|
25203
|
-
args: [{
|
|
25204
|
-
selector: '[gnUiEditableLabel]',
|
|
25205
|
-
standalone: true,
|
|
25206
|
-
}]
|
|
25207
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25345
|
+
}], exitsViewport: [{
|
|
25208
25346
|
type: Output
|
|
25209
|
-
}], gnUiEditableLabel: [{
|
|
25210
|
-
type: Input
|
|
25211
25347
|
}] } });
|
|
25212
25348
|
|
|
25213
25349
|
class FilesDropDirective {
|
|
@@ -25399,7 +25535,7 @@ class ImageInputComponent {
|
|
|
25399
25535
|
});
|
|
25400
25536
|
}
|
|
25401
25537
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25402
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$
|
|
25538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25403
25539
|
}
|
|
25404
25540
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, decorators: [{
|
|
25405
25541
|
type: Component,
|
|
@@ -25435,8 +25571,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25435
25571
|
|
|
25436
25572
|
class UiInputsModule {
|
|
25437
25573
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25438
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [
|
|
25439
|
-
AutocompleteComponent,
|
|
25574
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [AutocompleteComponent,
|
|
25440
25575
|
TextInputComponent,
|
|
25441
25576
|
DragAndDropFileInputComponent,
|
|
25442
25577
|
ChipsInputComponent,
|
|
@@ -25444,11 +25579,9 @@ class UiInputsModule {
|
|
|
25444
25579
|
StarToggleComponent,
|
|
25445
25580
|
DropdownMultiselectComponent,
|
|
25446
25581
|
ViewportIntersectorComponent,
|
|
25447
|
-
CheckToggleComponent,
|
|
25448
25582
|
CopyTextButtonComponent,
|
|
25449
25583
|
CheckboxComponent,
|
|
25450
|
-
SearchInputComponent,
|
|
25451
|
-
DateRangePickerComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25584
|
+
SearchInputComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25452
25585
|
FormsModule,
|
|
25453
25586
|
ReactiveFormsModule,
|
|
25454
25587
|
TagInputModule,
|
|
@@ -25466,7 +25599,10 @@ class UiInputsModule {
|
|
|
25466
25599
|
EditableLabelDirective,
|
|
25467
25600
|
TextAreaComponent,
|
|
25468
25601
|
ButtonComponent,
|
|
25469
|
-
ImageInputComponent
|
|
25602
|
+
ImageInputComponent,
|
|
25603
|
+
DropdownSelectorComponent,
|
|
25604
|
+
DateRangePickerComponent,
|
|
25605
|
+
CheckToggleComponent], exports: [DropdownSelectorComponent,
|
|
25470
25606
|
AutocompleteComponent,
|
|
25471
25607
|
ButtonComponent,
|
|
25472
25608
|
TextInputComponent,
|
|
@@ -25501,13 +25637,15 @@ class UiInputsModule {
|
|
|
25501
25637
|
MatInputModule,
|
|
25502
25638
|
MatDatepickerModule,
|
|
25503
25639
|
MatNativeDateModule,
|
|
25504
|
-
ImageInputComponent
|
|
25640
|
+
ImageInputComponent,
|
|
25641
|
+
DropdownSelectorComponent,
|
|
25642
|
+
DateRangePickerComponent,
|
|
25643
|
+
CheckToggleComponent] }); }
|
|
25505
25644
|
}
|
|
25506
25645
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, decorators: [{
|
|
25507
25646
|
type: NgModule,
|
|
25508
25647
|
args: [{
|
|
25509
25648
|
declarations: [
|
|
25510
|
-
DropdownSelectorComponent,
|
|
25511
25649
|
AutocompleteComponent,
|
|
25512
25650
|
TextInputComponent,
|
|
25513
25651
|
DragAndDropFileInputComponent,
|
|
@@ -25516,11 +25654,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25516
25654
|
StarToggleComponent,
|
|
25517
25655
|
DropdownMultiselectComponent,
|
|
25518
25656
|
ViewportIntersectorComponent,
|
|
25519
|
-
CheckToggleComponent,
|
|
25520
25657
|
CopyTextButtonComponent,
|
|
25521
25658
|
CheckboxComponent,
|
|
25522
25659
|
SearchInputComponent,
|
|
25523
|
-
DateRangePickerComponent,
|
|
25524
25660
|
],
|
|
25525
25661
|
imports: [
|
|
25526
25662
|
CommonModule,
|
|
@@ -25544,6 +25680,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25544
25680
|
TextAreaComponent,
|
|
25545
25681
|
ButtonComponent,
|
|
25546
25682
|
ImageInputComponent,
|
|
25683
|
+
DropdownSelectorComponent,
|
|
25684
|
+
DateRangePickerComponent,
|
|
25685
|
+
CheckToggleComponent,
|
|
25547
25686
|
],
|
|
25548
25687
|
exports: [
|
|
25549
25688
|
DropdownSelectorComponent,
|
|
@@ -25568,34 +25707,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25568
25707
|
}]
|
|
25569
25708
|
}] });
|
|
25570
25709
|
|
|
25710
|
+
class PreviousNextButtonsComponent {
|
|
25711
|
+
constructor() {
|
|
25712
|
+
this.directionButtonClicked = new EventEmitter();
|
|
25713
|
+
}
|
|
25714
|
+
previousButtonClicked() {
|
|
25715
|
+
this.directionButtonClicked.next('previous');
|
|
25716
|
+
}
|
|
25717
|
+
nextButtonClicked() {
|
|
25718
|
+
this.directionButtonClicked.next('next');
|
|
25719
|
+
}
|
|
25720
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25721
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PreviousNextButtonsComponent, isStandalone: true, selector: "gn-ui-previous-next-buttons", inputs: { isFirst: "isFirst", isLast: "isLast" }, outputs: { directionButtonClicked: "directionButtonClicked" }, ngImport: i0, template: "<div class=\"flex flex-row gap-x-4 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n [type]=\"isFirst ? 'default' : 'outline'\"\n [disabled]=\"isFirst\"\n (buttonClick)=\"previousButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_back\n </mat-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n [type]=\"isLast ? 'default' : 'outline'\"\n [disabled]=\"isLast\"\n (buttonClick)=\"nextButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_forward\n </mat-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25722
|
+
}
|
|
25723
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
|
|
25724
|
+
type: Component,
|
|
25725
|
+
args: [{ selector: 'gn-ui-previous-next-buttons', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ButtonComponent, MatIconModule], template: "<div class=\"flex flex-row gap-x-4 items-center\">\n <gn-ui-button\n data-test=\"previousButton\"\n [type]=\"isFirst ? 'default' : 'outline'\"\n [disabled]=\"isFirst\"\n (buttonClick)=\"previousButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_back\n </mat-icon>\n </gn-ui-button>\n <gn-ui-button\n data-test=\"nextButton\"\n [type]=\"isLast ? 'default' : 'outline'\"\n [disabled]=\"isLast\"\n (buttonClick)=\"nextButtonClicked()\"\n >\n <mat-icon\n class=\"material-symbols-outlined text-[14px] text-center pt-[5px]\"\n >\n arrow_forward\n </mat-icon>\n </gn-ui-button>\n</div>\n", styles: [":host{--gn-ui-button-rounded: 100%;--gn-ui-button-width: 8px;--gn-ui-button-height: 8px;--gn-ui-button-padding: 12px}\n"] }]
|
|
25726
|
+
}], propDecorators: { isFirst: [{
|
|
25727
|
+
type: Input
|
|
25728
|
+
}], isLast: [{
|
|
25729
|
+
type: Input
|
|
25730
|
+
}], directionButtonClicked: [{
|
|
25731
|
+
type: Output
|
|
25732
|
+
}] } });
|
|
25733
|
+
|
|
25571
25734
|
class AddLayerFromOgcApiComponent {
|
|
25572
25735
|
constructor(changeDetectorRef) {
|
|
25573
25736
|
this.changeDetectorRef = changeDetectorRef;
|
|
25574
25737
|
this.layerAdded = new EventEmitter();
|
|
25575
25738
|
this.urlChange = new Subject();
|
|
25576
|
-
this.layerUrl = '';
|
|
25577
25739
|
this.loading = false;
|
|
25578
25740
|
this.layers = [];
|
|
25579
|
-
this.ogcEndpoint = null;
|
|
25580
25741
|
this.errorMessage = null;
|
|
25742
|
+
this.selectedLayerTypes = {};
|
|
25581
25743
|
}
|
|
25582
25744
|
ngOnInit() {
|
|
25583
25745
|
this.urlChange.pipe(debounceTime$1(700)).subscribe(() => {
|
|
25584
25746
|
this.loadLayers();
|
|
25585
|
-
this.changeDetectorRef.detectChanges(); // manually trigger change detection
|
|
25586
25747
|
});
|
|
25587
25748
|
}
|
|
25588
25749
|
async loadLayers() {
|
|
25589
25750
|
this.errorMessage = null;
|
|
25590
25751
|
try {
|
|
25591
25752
|
this.loading = true;
|
|
25592
|
-
if (this.ogcUrl.trim()
|
|
25753
|
+
if (!this.ogcUrl.trim()) {
|
|
25593
25754
|
this.layers = [];
|
|
25594
25755
|
return;
|
|
25595
25756
|
}
|
|
25596
|
-
|
|
25597
|
-
|
|
25598
|
-
this.
|
|
25757
|
+
const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
25758
|
+
this.layers = await ogcEndpoint.allCollections;
|
|
25759
|
+
this.setDefaultLayerTypes();
|
|
25599
25760
|
}
|
|
25600
25761
|
catch (error) {
|
|
25601
25762
|
const err = error;
|
|
@@ -25607,21 +25768,75 @@ class AddLayerFromOgcApiComponent {
|
|
|
25607
25768
|
this.changeDetectorRef.markForCheck();
|
|
25608
25769
|
}
|
|
25609
25770
|
}
|
|
25610
|
-
|
|
25611
|
-
this.
|
|
25612
|
-
|
|
25613
|
-
|
|
25614
|
-
|
|
25615
|
-
|
|
25616
|
-
};
|
|
25617
|
-
|
|
25771
|
+
setDefaultLayerTypes() {
|
|
25772
|
+
this.layers.forEach((layer) => {
|
|
25773
|
+
const choices = this.getLayerChoices(layer);
|
|
25774
|
+
if (choices.length > 0) {
|
|
25775
|
+
this.selectedLayerTypes[layer.name] = choices[0].value;
|
|
25776
|
+
}
|
|
25777
|
+
});
|
|
25778
|
+
}
|
|
25779
|
+
getLayerChoices(layer) {
|
|
25780
|
+
const choices = [];
|
|
25781
|
+
if (layer.hasRecords) {
|
|
25782
|
+
choices.push({ label: 'Records', value: 'record' });
|
|
25783
|
+
}
|
|
25784
|
+
if (layer.hasFeatures) {
|
|
25785
|
+
choices.push({ label: 'Features', value: 'features' });
|
|
25786
|
+
}
|
|
25787
|
+
if (layer.hasVectorTiles) {
|
|
25788
|
+
choices.push({ label: 'Vector Tiles', value: 'vectorTiles' });
|
|
25789
|
+
}
|
|
25790
|
+
if (layer.hasMapTiles) {
|
|
25791
|
+
choices.push({ label: 'Map Tiles', value: 'mapTiles' });
|
|
25792
|
+
}
|
|
25793
|
+
return choices;
|
|
25794
|
+
}
|
|
25795
|
+
shouldDisplayLayer(layer) {
|
|
25796
|
+
return (layer.hasRecords ||
|
|
25797
|
+
layer.hasFeatures ||
|
|
25798
|
+
layer.hasVectorTiles ||
|
|
25799
|
+
layer.hasMapTiles);
|
|
25800
|
+
}
|
|
25801
|
+
onLayerTypeSelect(layerName, selectedType) {
|
|
25802
|
+
this.selectedLayerTypes[layerName] = selectedType
|
|
25803
|
+
? selectedType
|
|
25804
|
+
: this.getLayerChoices(layerName)[0]?.value;
|
|
25805
|
+
}
|
|
25806
|
+
async addLayer(layer, layerType) {
|
|
25807
|
+
try {
|
|
25808
|
+
const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
25809
|
+
let layerUrl;
|
|
25810
|
+
if (layerType === 'vectorTiles') {
|
|
25811
|
+
layerUrl = await ogcEndpoint.getVectorTilesetUrl(layer);
|
|
25812
|
+
}
|
|
25813
|
+
else if (layerType === 'mapTiles') {
|
|
25814
|
+
layerUrl = await ogcEndpoint.getMapTilesetUrl(layer);
|
|
25815
|
+
}
|
|
25816
|
+
else {
|
|
25817
|
+
layerUrl = await ogcEndpoint.getCollectionItemsUrl(layer, {
|
|
25818
|
+
outputFormat: 'json',
|
|
25819
|
+
});
|
|
25820
|
+
}
|
|
25821
|
+
const layerToAdd = {
|
|
25822
|
+
name: layer,
|
|
25823
|
+
url: layerUrl,
|
|
25824
|
+
type: MapContextLayerTypeEnum.OGCAPI,
|
|
25825
|
+
layerType: layerType,
|
|
25826
|
+
};
|
|
25827
|
+
this.layerAdded.emit({ ...layerToAdd, title: layer });
|
|
25828
|
+
}
|
|
25829
|
+
catch (error) {
|
|
25830
|
+
const err = error;
|
|
25831
|
+
console.error('Error adding layer:', err.message);
|
|
25832
|
+
}
|
|
25618
25833
|
}
|
|
25619
25834
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25620
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n
|
|
25835
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n ></gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<ng-container *ngFor=\"let layer of layers\">\n <div\n *ngIf=\"shouldDisplayLayer(layer)\"\n class=\"flex items-center justify-between my-2 layer-item-tree\"\n >\n <div class=\"flex flex-col items-start w-full\">\n <p\n class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\"\n [title]=\"layer.name\"\n >\n {{ layer.name }}\n </p>\n <div class=\"flex justify-between items-center w-full\">\n <gn-ui-dropdown-selector\n [title]=\"'Add Layer As' | translate\"\n [choices]=\"getLayerChoices(layer)\"\n (selectValue)=\"onLayerTypeSelect(layer.name, $event)\"\n [selected]=\"selectedLayerTypes[layer.name]\"\n extraBtnClass=\"w-6 h-5 !text-sm !px-2 !py-1\"\n ></gn-ui-dropdown-selector>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer.name, selectedLayerTypes[layer.name])\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n >\n <span translate>map.layer.add</span>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".dropdown-content{display:none}.relative:hover .dropdown-content{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }] }); }
|
|
25621
25836
|
}
|
|
25622
25837
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
|
|
25623
25838
|
type: Component,
|
|
25624
|
-
args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n
|
|
25839
|
+
args: [{ selector: 'gn-ui-add-layer-from-ogc-api', standalone: true, imports: [CommonModule, TranslateModule, UiInputsModule], template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n ></gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<ng-container *ngFor=\"let layer of layers\">\n <div\n *ngIf=\"shouldDisplayLayer(layer)\"\n class=\"flex items-center justify-between my-2 layer-item-tree\"\n >\n <div class=\"flex flex-col items-start w-full\">\n <p\n class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\"\n [title]=\"layer.name\"\n >\n {{ layer.name }}\n </p>\n <div class=\"flex justify-between items-center w-full\">\n <gn-ui-dropdown-selector\n [title]=\"'Add Layer As' | translate\"\n [choices]=\"getLayerChoices(layer)\"\n (selectValue)=\"onLayerTypeSelect(layer.name, $event)\"\n [selected]=\"selectedLayerTypes[layer.name]\"\n extraBtnClass=\"w-6 h-5 !text-sm !px-2 !py-1\"\n ></gn-ui-dropdown-selector>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer.name, selectedLayerTypes[layer.name])\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n >\n <span translate>map.layer.add</span>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</ng-container>\n", styles: [".dropdown-content{display:none}.relative:hover .dropdown-content{display:block}\n"] }]
|
|
25625
25840
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { ogcUrl: [{
|
|
25626
25841
|
type: Input
|
|
25627
25842
|
}], layerAdded: [{
|
|
@@ -26363,7 +26578,8 @@ class ApiCardComponent {
|
|
|
26363
26578
|
}
|
|
26364
26579
|
ngOnInit() {
|
|
26365
26580
|
this.displayApiFormButton =
|
|
26366
|
-
this.link.accessServiceProtocol === 'ogcFeatures'
|
|
26581
|
+
this.link.accessServiceProtocol === 'ogcFeatures' ||
|
|
26582
|
+
this.link.accessServiceProtocol === 'wfs';
|
|
26367
26583
|
}
|
|
26368
26584
|
ngOnChanges(changes) {
|
|
26369
26585
|
this.currentlyActive =
|
|
@@ -26376,7 +26592,7 @@ class ApiCardComponent {
|
|
|
26376
26592
|
}
|
|
26377
26593
|
}
|
|
26378
26594
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26379
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
|
26595
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26380
26596
|
}
|
|
26381
26597
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
26382
26598
|
type: Component,
|
|
@@ -26507,7 +26723,7 @@ class DownloadsListComponent {
|
|
|
26507
26723
|
return getBadgeColor(getFileFormat(link));
|
|
26508
26724
|
}
|
|
26509
26725
|
isFromWfs(link) {
|
|
26510
|
-
return link.type === '
|
|
26726
|
+
return link.type === 'download' && link.accessServiceProtocol === 'wfs';
|
|
26511
26727
|
}
|
|
26512
26728
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DownloadsListComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26513
26729
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DownloadsListComponent, selector: "gn-ui-downloads-list", inputs: { links: "links" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap justify-between mt-8 mb-6 sm:mt-12 sm:mb-2\"\n *ngIf=\"links && links.length > 0\"\n>\n <p\n class=\"font-title text-[28px] text-title font-medium mr-4 pb-4 text-center sm:text-left\"\n translate\n >\n record.metadata.download\n </p>\n <div\n class=\"flex flex-wrap justify-start sm:justify-end sm:pb-4\"\n data-cy=\"download-format-filters\"\n >\n <gn-ui-button\n class=\"m-1 format-filter\"\n [extraClass]=\"\n '!px-[12px] !py-[8px] !text-[15px]' +\n (isFilterActive(format) ? ' opacity-100' : ' opacity-50')\n \"\n (buttonClick)=\"toggleFilterFormat(format)\"\n [attr.data-format]=\"format\"\n *ngFor=\"let format of visibleFormats\"\n >\n {{ getFilterFormatTitle(format) }}\n </gn-ui-button>\n </div>\n</div>\n<div class=\"mb-2 sm:mb-3\" *ngFor=\"let link of filteredLinks\">\n <gn-ui-download-item\n [link]=\"link\"\n [color]=\"getLinkColor(link)\"\n [format]=\"getLinkFormat(link)\"\n [isFromWfs]=\"isFromWfs(link)\"\n ></gn-ui-download-item>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: DownloadItemComponent, selector: "gn-ui-download-item", inputs: ["link", "color", "format", "isFromWfs"], outputs: ["exportUrl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -26539,14 +26755,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26539
26755
|
}] } });
|
|
26540
26756
|
|
|
26541
26757
|
class LinkCardComponent {
|
|
26758
|
+
constructor() {
|
|
26759
|
+
this.compact = false;
|
|
26760
|
+
}
|
|
26761
|
+
get title() {
|
|
26762
|
+
if (this.link.name && this.link.description) {
|
|
26763
|
+
return `${this.link.name} | ${this.link.description}`;
|
|
26764
|
+
}
|
|
26765
|
+
return this.link.name || this.link.description || '';
|
|
26766
|
+
}
|
|
26542
26767
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26543
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, selector: "gn-ui-link-card", inputs: { link: "link" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group
|
|
26768
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LinkCardComponent, isStandalone: true, selector: "gn-ui-link-card", inputs: { link: "link", compact: "compact" }, ngImport: i0, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden\"\n [ngClass]=\"{ 'h-40': !compact }\"\n [title]=\"title\"\n>\n <ng-container *ngIf=\"!compact; else compactTpl\">\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-container>\n <ng-template #compactTpl>\n <div class=\"flex items-center justify-between gap-4\">\n <p\n class=\"overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap\"\n >\n {{ link.name || link.description }}\n </p>\n <mat-icon class=\"material-symbols-outlined card-icon flex-shrink-0\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-template>\n</a>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26544
26769
|
}
|
|
26545
26770
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
26546
26771
|
type: Component,
|
|
26547
|
-
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group
|
|
26772
|
+
args: [{ selector: 'gn-ui-link-card', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, MatIconModule], template: "<a\n [href]=\"link.url\"\n target=\"_blank\"\n class=\"flex flex-col justify-between group grow py-5 px-5 bg-white rounded border-gray-300 filter card-shadow overflow-hidden\"\n [ngClass]=\"{ 'h-40': !compact }\"\n [title]=\"title\"\n>\n <ng-container *ngIf=\"!compact; else compactTpl\">\n <div class=\"max-h-24 overflow-hidden text-ellipsis\">\n <p\n class=\"font-title font-medium text-21 text-black break-words mb-1 line-clamp-2\"\n >\n {{ link.name }}\n </p>\n <p class=\"font-medium text-sm break-words\">\n {{ link.description }}\n </p>\n <p\n *ngIf=\"!link.name && !link.description\"\n class=\"font-medium text-sm break-words truncate\"\n >\n {{ link.url }}\n </p>\n </div>\n <div>\n <mat-icon class=\"material-symbols-outlined card-icon\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-container>\n <ng-template #compactTpl>\n <div class=\"flex items-center justify-between gap-4\">\n <p\n class=\"overflow-hidden font-title font-medium text-21 text-black text-ellipsis whitespace-nowrap\"\n >\n {{ link.name || link.description }}\n </p>\n <mat-icon class=\"material-symbols-outlined card-icon flex-shrink-0\"\n >open_in_new</mat-icon\n >\n </div>\n </ng-template>\n</a>\n" }]
|
|
26548
26773
|
}], propDecorators: { link: [{
|
|
26549
26774
|
type: Input
|
|
26775
|
+
}], compact: [{
|
|
26776
|
+
type: Input
|
|
26550
26777
|
}] } });
|
|
26551
26778
|
|
|
26552
26779
|
class MarkdownParserComponent {
|
|
@@ -27005,43 +27232,37 @@ const DEFAULT_PARAMS = {
|
|
|
27005
27232
|
};
|
|
27006
27233
|
class RecordApiFormComponent {
|
|
27007
27234
|
constructor() {
|
|
27008
|
-
this.offset$ = new BehaviorSubject(
|
|
27009
|
-
this.limit$ = new BehaviorSubject(
|
|
27010
|
-
this.format$ = new BehaviorSubject(
|
|
27011
|
-
this.
|
|
27012
|
-
|
|
27013
|
-
|
|
27014
|
-
|
|
27015
|
-
|
|
27016
|
-
|
|
27017
|
-
|
|
27018
|
-
|
|
27019
|
-
|
|
27020
|
-
|
|
27021
|
-
if (value && value !== '0') {
|
|
27022
|
-
url.searchParams.set(key, value);
|
|
27023
|
-
}
|
|
27024
|
-
else {
|
|
27025
|
-
url.searchParams.delete(key);
|
|
27026
|
-
}
|
|
27027
|
-
}
|
|
27028
|
-
outputUrl = url.toString();
|
|
27029
|
-
}
|
|
27030
|
-
return outputUrl;
|
|
27031
|
-
}));
|
|
27235
|
+
this.offset$ = new BehaviorSubject(DEFAULT_PARAMS.OFFSET);
|
|
27236
|
+
this.limit$ = new BehaviorSubject(DEFAULT_PARAMS.LIMIT);
|
|
27237
|
+
this.format$ = new BehaviorSubject(DEFAULT_PARAMS.FORMAT);
|
|
27238
|
+
this.endpoint$ = new BehaviorSubject(undefined);
|
|
27239
|
+
this.supportOffset = true;
|
|
27240
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27241
|
+
this.apiQueryUrl$ = combineLatest([
|
|
27242
|
+
this.offset$,
|
|
27243
|
+
this.limit$,
|
|
27244
|
+
this.format$,
|
|
27245
|
+
// only compute the url if the endpoint was created
|
|
27246
|
+
this.endpoint$.pipe(filter$1((endpoint) => !!endpoint)),
|
|
27247
|
+
]).pipe(switchMap(([offset, limit, format]) => this.generateApiQueryUrl(offset, limit, format)));
|
|
27032
27248
|
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
27033
27249
|
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
27034
27250
|
}
|
|
27035
27251
|
set apiLink(value) {
|
|
27036
|
-
this.
|
|
27252
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27253
|
+
this.accessServiceProtocol = value ? value.accessServiceProtocol : undefined;
|
|
27254
|
+
this.apiFeatureType = value ? value.name : undefined;
|
|
27255
|
+
if (value) {
|
|
27256
|
+
this.apiBaseUrl = value.url.href;
|
|
27257
|
+
this.createEndpoint().then(() => this.parseOutputFormats());
|
|
27258
|
+
}
|
|
27037
27259
|
this.resetUrl();
|
|
27038
27260
|
}
|
|
27039
27261
|
setOffset(value) {
|
|
27040
27262
|
this.offset$.next(value);
|
|
27041
27263
|
}
|
|
27042
27264
|
setLimit(value) {
|
|
27043
|
-
|
|
27044
|
-
this.limit$.next(newLimit);
|
|
27265
|
+
this.limit$.next(value === '' ? '-1' : value);
|
|
27045
27266
|
}
|
|
27046
27267
|
setFormat(value) {
|
|
27047
27268
|
this.format$.next(String(value));
|
|
@@ -27051,19 +27272,84 @@ class RecordApiFormComponent {
|
|
|
27051
27272
|
this.limit$.next(DEFAULT_PARAMS.LIMIT);
|
|
27052
27273
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
27053
27274
|
}
|
|
27275
|
+
async parseOutputFormats() {
|
|
27276
|
+
if (!this.endpoint)
|
|
27277
|
+
return;
|
|
27278
|
+
const apiUrl = this.apiBaseUrl.endsWith('?')
|
|
27279
|
+
? this.apiBaseUrl.slice(0, -1)
|
|
27280
|
+
: this.apiBaseUrl;
|
|
27281
|
+
const outputFormats = await this.getOutputFormats(apiUrl);
|
|
27282
|
+
const formatsList = outputFormats.itemFormats
|
|
27283
|
+
? this.mapFormats(outputFormats.itemFormats)
|
|
27284
|
+
: this.mapFormats(outputFormats.outputFormats || []);
|
|
27285
|
+
this.outputFormats = this.outputFormats
|
|
27286
|
+
.concat(formatsList.filter(Boolean))
|
|
27287
|
+
.filter((format, index, self) => index === self.findIndex((t) => t.value === format.value))
|
|
27288
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
27289
|
+
}
|
|
27290
|
+
mapFormats(formats) {
|
|
27291
|
+
return formats.map((format) => {
|
|
27292
|
+
const normalizedFormat = mimeTypeToFormat(format);
|
|
27293
|
+
return normalizedFormat
|
|
27294
|
+
? { label: normalizedFormat.toUpperCase(), value: normalizedFormat }
|
|
27295
|
+
: null;
|
|
27296
|
+
});
|
|
27297
|
+
}
|
|
27298
|
+
async getOutputFormats(url) {
|
|
27299
|
+
if (!this.endpoint)
|
|
27300
|
+
return {};
|
|
27301
|
+
if (this.endpoint instanceof WfsEndpoint) {
|
|
27302
|
+
this.supportOffset = this.endpoint.supportsStartIndex();
|
|
27303
|
+
return this.endpoint.getServiceInfo();
|
|
27304
|
+
}
|
|
27305
|
+
else {
|
|
27306
|
+
return (await this.endpoint.getCollectionInfo(this.firstCollection));
|
|
27307
|
+
}
|
|
27308
|
+
}
|
|
27309
|
+
async createEndpoint() {
|
|
27310
|
+
if (!this.apiBaseUrl || !this.accessServiceProtocol)
|
|
27311
|
+
return;
|
|
27312
|
+
if (this.accessServiceProtocol === 'wfs') {
|
|
27313
|
+
this.endpoint = new WfsEndpoint(this.apiBaseUrl);
|
|
27314
|
+
await this.endpoint.isReady();
|
|
27315
|
+
}
|
|
27316
|
+
else {
|
|
27317
|
+
this.endpoint = new OgcApiEndpoint(this.apiBaseUrl);
|
|
27318
|
+
this.firstCollection = (await this.endpoint.allCollections)[0].name;
|
|
27319
|
+
}
|
|
27320
|
+
this.endpoint$.next(this.endpoint);
|
|
27321
|
+
}
|
|
27322
|
+
async generateApiQueryUrl(offset, limit, format) {
|
|
27323
|
+
if (!this.apiBaseUrl || !this.endpoint || !this.apiFeatureType)
|
|
27324
|
+
return '';
|
|
27325
|
+
const options = {
|
|
27326
|
+
outputFormat: format,
|
|
27327
|
+
startIndex: offset ? Number(offset) : undefined,
|
|
27328
|
+
maxFeatures: limit !== '-1' ? Number(limit) : undefined,
|
|
27329
|
+
limit: limit !== '-1' ? Number(limit) : limit === '-1' ? -1 : undefined,
|
|
27330
|
+
offset: offset !== '' ? Number(offset) : undefined,
|
|
27331
|
+
};
|
|
27332
|
+
if (this.endpoint instanceof WfsEndpoint) {
|
|
27333
|
+
options.maxFeatures = limit !== '-1' ? Number(limit) : undefined;
|
|
27334
|
+
return this.endpoint.getFeatureUrl(this.apiFeatureType, options);
|
|
27335
|
+
}
|
|
27336
|
+
else {
|
|
27337
|
+
return await this.endpoint.getCollectionItemsUrl(this.firstCollection, options);
|
|
27338
|
+
}
|
|
27339
|
+
}
|
|
27054
27340
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27055
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate
|
|
27341
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27056
27342
|
}
|
|
27057
27343
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
27058
27344
|
type: Component,
|
|
27059
|
-
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate
|
|
27345
|
+
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 relative\">\n <p class=\"text-sm\" [class.text-gray-600]=\"!supportOffset\" translate>\n record.metadata.api.form.offset\n </p>\n <div class=\"flex items-center\">\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n [disabled]=\"!supportOffset\"\n (valueChange)=\"supportOffset ? setOffset($event) : null\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div\n *ngIf=\"!supportOffset\"\n class=\"flex items-center gap-2 text-orange-500 z-10 ml-3\"\n >\n <span\n class=\"material-symbols-outlined\"\n matTooltip=\"Not supported on this service\"\n >\n warning\n </span>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"outputFormats\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"] }]
|
|
27060
27346
|
}], propDecorators: { apiLink: [{
|
|
27061
27347
|
type: Input
|
|
27062
27348
|
}] } });
|
|
27063
27349
|
|
|
27064
27350
|
class RelatedRecordCardComponent {
|
|
27065
27351
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27066
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
|
27352
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27067
27353
|
}
|
|
27068
27354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
27069
27355
|
type: Component,
|
|
@@ -27159,48 +27445,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27159
27445
|
}] } });
|
|
27160
27446
|
|
|
27161
27447
|
class CarouselComponent {
|
|
27448
|
+
get isFirstStep() {
|
|
27449
|
+
return this.currentStep === 0;
|
|
27450
|
+
}
|
|
27451
|
+
get isLastStep() {
|
|
27452
|
+
return this.currentStep === this.steps.length - 1;
|
|
27453
|
+
}
|
|
27454
|
+
get stepsCount() {
|
|
27455
|
+
return this.steps.length;
|
|
27456
|
+
}
|
|
27162
27457
|
constructor(changeDetector) {
|
|
27163
27458
|
this.changeDetector = changeDetector;
|
|
27164
27459
|
this.containerClass = '';
|
|
27165
|
-
this.stepsContainerClass = '';
|
|
27460
|
+
this.stepsContainerClass = 'w-full bottom-0 top-auto';
|
|
27461
|
+
this.currentStepChange = new EventEmitter();
|
|
27166
27462
|
this.steps = [];
|
|
27167
|
-
this.
|
|
27463
|
+
this.currentStep = 0;
|
|
27464
|
+
this.refreshSteps = () => {
|
|
27465
|
+
this.steps = this.emblaApi.scrollSnapList();
|
|
27466
|
+
this.currentStep = this.emblaApi.selectedScrollSnap();
|
|
27467
|
+
this.currentStepChange.emit(this.currentStep);
|
|
27468
|
+
this.changeDetector.detectChanges();
|
|
27469
|
+
};
|
|
27168
27470
|
}
|
|
27169
27471
|
ngAfterViewInit() {
|
|
27170
27472
|
this.emblaApi = EmblaCarousel(this.carouselOverflowContainer.nativeElement, {
|
|
27171
27473
|
duration: 15,
|
|
27172
27474
|
});
|
|
27173
|
-
const refreshSteps = () => {
|
|
27174
|
-
this.steps = this.emblaApi.scrollSnapList();
|
|
27175
|
-
this.selectedStep = this.emblaApi.selectedScrollSnap();
|
|
27176
|
-
this.changeDetector.detectChanges();
|
|
27177
|
-
};
|
|
27178
27475
|
this.emblaApi
|
|
27179
|
-
.on('init', refreshSteps)
|
|
27180
|
-
.on('reInit', refreshSteps)
|
|
27181
|
-
.on('select', refreshSteps);
|
|
27476
|
+
.on('init', this.refreshSteps)
|
|
27477
|
+
.on('reInit', this.refreshSteps)
|
|
27478
|
+
.on('select', this.refreshSteps);
|
|
27182
27479
|
}
|
|
27183
27480
|
scrollToStep(stepIndex) {
|
|
27184
27481
|
this.emblaApi.scrollTo(stepIndex);
|
|
27185
27482
|
}
|
|
27483
|
+
slideToPrevious() {
|
|
27484
|
+
if (this.isFirstStep)
|
|
27485
|
+
return;
|
|
27486
|
+
this.emblaApi.scrollPrev();
|
|
27487
|
+
}
|
|
27488
|
+
slideToNext() {
|
|
27489
|
+
if (this.isLastStep)
|
|
27490
|
+
return;
|
|
27491
|
+
this.emblaApi.scrollNext();
|
|
27492
|
+
}
|
|
27186
27493
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27187
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"
|
|
27494
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CarouselComponent, isStandalone: true, selector: "gn-ui-carousel", inputs: { containerClass: "containerClass", stepsContainerClass: "stepsContainerClass" }, outputs: { currentStepChange: "currentStepChange" }, viewQueries: [{ propertyName: "carouselOverflowContainer", first: true, predicate: ["carouselOverflowContainer"], descendants: true }], ngImport: i0, template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"currentStep === i ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative;display:block}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27188
27495
|
}
|
|
27189
27496
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
27190
27497
|
type: Component,
|
|
27191
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"
|
|
27192
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
27498
|
+
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div #carouselOverflowContainer class=\"w-full\">\n <div class=\"carousel-container flex\" [ngClass]=\"containerClass\">\n <ng-content></ng-content>\n </div>\n</div>\n<div\n *ngIf=\"steps.length > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"stepsContainerClass\"\n>\n <button\n *ngFor=\"let step of steps; let i = index\"\n class=\"carousel-step-dot\"\n (click)=\"scrollToStep(i)\"\n [ngClass]=\"currentStep === i ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .carousel-container ::ng-deep>*{flex-shrink:0}:host{position:relative;display:block}.carousel-step-dot{width:6px;height:6px;border-radius:6px;position:relative}.carousel-step-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"] }]
|
|
27499
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { carouselOverflowContainer: [{
|
|
27500
|
+
type: ViewChild,
|
|
27501
|
+
args: ['carouselOverflowContainer']
|
|
27502
|
+
}], containerClass: [{
|
|
27193
27503
|
type: Input
|
|
27194
27504
|
}], stepsContainerClass: [{
|
|
27195
27505
|
type: Input
|
|
27196
|
-
}],
|
|
27197
|
-
type:
|
|
27198
|
-
args: ['carouselOverflowContainer']
|
|
27506
|
+
}], currentStepChange: [{
|
|
27507
|
+
type: Output
|
|
27199
27508
|
}] } });
|
|
27200
27509
|
|
|
27201
27510
|
class FormFieldWrapperComponent {
|
|
27202
27511
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27203
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type:
|
|
27512
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27204
27513
|
}
|
|
27205
27514
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
27206
27515
|
type: Component,
|
|
@@ -27349,17 +27658,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27349
27658
|
args: ['innerContainer']
|
|
27350
27659
|
}] } });
|
|
27351
27660
|
|
|
27661
|
+
class BlockListComponent {
|
|
27662
|
+
get pages() {
|
|
27663
|
+
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
27664
|
+
}
|
|
27665
|
+
get isFirstPage() {
|
|
27666
|
+
return this.currentPage === 0;
|
|
27667
|
+
}
|
|
27668
|
+
get isLastPage() {
|
|
27669
|
+
return this.currentPage === this.pagesCount - 1;
|
|
27670
|
+
}
|
|
27671
|
+
get pagesCount() {
|
|
27672
|
+
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
27673
|
+
}
|
|
27674
|
+
constructor(changeDetector) {
|
|
27675
|
+
this.changeDetector = changeDetector;
|
|
27676
|
+
this.pageSize = 5;
|
|
27677
|
+
this.containerClass = '';
|
|
27678
|
+
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
27679
|
+
this.minHeight = 0;
|
|
27680
|
+
this.currentPage = 0;
|
|
27681
|
+
this.refreshBlocksVisibility = () => {
|
|
27682
|
+
this.blocks.forEach((block, index) => {
|
|
27683
|
+
block.nativeElement.style.display =
|
|
27684
|
+
index >= this.currentPage * this.pageSize &&
|
|
27685
|
+
index < (this.currentPage + 1) * this.pageSize
|
|
27686
|
+
? null
|
|
27687
|
+
: 'none';
|
|
27688
|
+
});
|
|
27689
|
+
};
|
|
27690
|
+
}
|
|
27691
|
+
ngAfterViewInit() {
|
|
27692
|
+
this.blocks.changes.subscribe(this.refreshBlocksVisibility);
|
|
27693
|
+
this.refreshBlocksVisibility();
|
|
27694
|
+
// we store the first height as the min-height of the list container
|
|
27695
|
+
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
27696
|
+
this.changeDetector.detectChanges();
|
|
27697
|
+
}
|
|
27698
|
+
goToPage(index) {
|
|
27699
|
+
this.currentPage = Math.max(Math.min(index, this.pagesCount - 1), 0);
|
|
27700
|
+
this.changeDetector.detectChanges();
|
|
27701
|
+
this.refreshBlocksVisibility();
|
|
27702
|
+
}
|
|
27703
|
+
previousPage() {
|
|
27704
|
+
if (this.isFirstPage)
|
|
27705
|
+
return;
|
|
27706
|
+
this.goToPage(this.currentPage - 1);
|
|
27707
|
+
}
|
|
27708
|
+
nextPage() {
|
|
27709
|
+
if (this.isLastPage)
|
|
27710
|
+
return;
|
|
27711
|
+
this.goToPage(this.currentPage + 1);
|
|
27712
|
+
}
|
|
27713
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27714
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: BlockListComponent, isStandalone: true, selector: "gn-ui-block-list", inputs: { pageSize: "pageSize", containerClass: "containerClass", paginationContainerClass: "paginationContainerClass" }, queries: [{ propertyName: "blocks", predicate: ["block"], read: ElementRef }], viewQueries: [{ propertyName: "blockContainer", first: true, predicate: ["blockContainer"], descendants: true }], ngImport: i0, template: "<div\n class=\"block-list-container flex flex-col\"\n #blockContainer\n [ngClass]=\"containerClass\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"pagesCount > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"paginationContainerClass\"\n>\n <button\n *ngFor=\"let page of pages\"\n class=\"list-page-dot\"\n (click)=\"goToPage(page)\"\n [ngClass]=\"currentPage === page ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.list-page-dot{width:6px;height:6px;border-radius:6px;position:relative}.list-page-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27715
|
+
}
|
|
27716
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
27717
|
+
type: Component,
|
|
27718
|
+
args: [{ selector: 'gn-ui-block-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div\n class=\"block-list-container flex flex-col\"\n #blockContainer\n [ngClass]=\"containerClass\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<div\n *ngIf=\"pagesCount > 1\"\n class=\"absolute flex flex-row justify-center gap-[14px] p-1\"\n [ngClass]=\"paginationContainerClass\"\n>\n <button\n *ngFor=\"let page of pages\"\n class=\"list-page-dot\"\n (click)=\"goToPage(page)\"\n [ngClass]=\"currentPage === page ? 'bg-primary' : 'bg-gray-400'\"\n ></button>\n</div>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}.list-page-dot{width:6px;height:6px;border-radius:6px;position:relative}.list-page-dot:after{content:\"\";position:absolute;left:-7px;top:-7px;width:20px;height:20px}\n"] }]
|
|
27719
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageSize: [{
|
|
27720
|
+
type: Input
|
|
27721
|
+
}], containerClass: [{
|
|
27722
|
+
type: Input
|
|
27723
|
+
}], paginationContainerClass: [{
|
|
27724
|
+
type: Input
|
|
27725
|
+
}], blocks: [{
|
|
27726
|
+
type: ContentChildren,
|
|
27727
|
+
args: ['block', { read: ElementRef }]
|
|
27728
|
+
}], blockContainer: [{
|
|
27729
|
+
type: ViewChild,
|
|
27730
|
+
args: ['blockContainer']
|
|
27731
|
+
}] } });
|
|
27732
|
+
|
|
27352
27733
|
class UiLayoutModule {
|
|
27353
27734
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27354
27735
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, declarations: [ExpandablePanelComponent,
|
|
27355
27736
|
StickyHeaderComponent,
|
|
27356
27737
|
AnchorLinkDirective,
|
|
27357
|
-
ExpandablePanelButtonComponent,
|
|
27358
|
-
CarouselComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27738
|
+
ExpandablePanelButtonComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27359
27739
|
StickyHeaderComponent,
|
|
27360
27740
|
AnchorLinkDirective,
|
|
27361
|
-
ExpandablePanelButtonComponent
|
|
27362
|
-
CarouselComponent] }); }
|
|
27741
|
+
ExpandablePanelButtonComponent] }); }
|
|
27363
27742
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, imports: [CommonModule, MatIconModule, TranslateModule.forChild()] }); }
|
|
27364
27743
|
}
|
|
27365
27744
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, decorators: [{
|
|
@@ -27371,14 +27750,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27371
27750
|
StickyHeaderComponent,
|
|
27372
27751
|
AnchorLinkDirective,
|
|
27373
27752
|
ExpandablePanelButtonComponent,
|
|
27374
|
-
CarouselComponent,
|
|
27375
27753
|
],
|
|
27376
27754
|
exports: [
|
|
27377
27755
|
ExpandablePanelComponent,
|
|
27378
27756
|
StickyHeaderComponent,
|
|
27379
27757
|
AnchorLinkDirective,
|
|
27380
27758
|
ExpandablePanelButtonComponent,
|
|
27381
|
-
CarouselComponent,
|
|
27382
27759
|
],
|
|
27383
27760
|
}]
|
|
27384
27761
|
}] });
|
|
@@ -27388,7 +27765,7 @@ class UserPreviewComponent {
|
|
|
27388
27765
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
27389
27766
|
}
|
|
27390
27767
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27391
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type:
|
|
27768
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27392
27769
|
}
|
|
27393
27770
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
27394
27771
|
type: Component,
|
|
@@ -27484,17 +27861,15 @@ class UserFeedbackItemComponent {
|
|
|
27484
27861
|
this.onNewAnswerValueChange();
|
|
27485
27862
|
}
|
|
27486
27863
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27487
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: { userFeedbackParent: "userFeedbackParent", userFeedBacksAnswers: "userFeedBacksAnswers",
|
|
27864
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: { userFeedbackParent: "userFeedbackParent", userFeedBacksAnswers: "userFeedBacksAnswers", activeUser: "activeUser", isLastComment: "isLastComment", isAddUserFeedbackLoading: "isAddUserFeedbackLoading" }, outputs: { newUserFeedbackAnswer: "newUserFeedbackAnswer" }, ngImport: i0, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span> {{ userFeedbackParent.date | timeSince }}</span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"activeUser\" class=\"mt-2 flex flex-col\">\n <hr class=\"-mx-4 my-4\" />\n <div\n id=\"new-comment-buttons\"\n class=\"flex flex-row gap-2 items-center justify-end\"\n >\n <gn-ui-text-area\n [disabled]=\"isAddUserFeedbackLoading\"\n [(value)]=\"newAnswer\"\n (valueChange)=\"onNewAnswerValueChange()\"\n (keyup.control.enter)=\"publishNewAnswer()\"\n [placeholder]=\"\n 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate\n \"\n class=\"grow\"\n extraClass=\"bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9\"\n ></gn-ui-text-area>\n <div *ngIf=\"!isAnswerEmpty\" class=\"flex flex-row justify-end\">\n <gn-ui-button\n [disabled]=\"isAddUserFeedbackLoading\"\n [type]=\"'outline'\"\n (buttonClick)=\"publishNewAnswer()\"\n [title]=\"\n 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate\n \"\n extraClass=\"!p-[0.5em] text-primary-darker border-primary-darker h-9\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"!isAddUserFeedbackLoading\"\n >\n send\n </mat-icon>\n <ng-container *ngIf=\"isAddUserFeedbackLoading\">\n <div class=\"flex justify-center w-full\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: ["userFeedbackParent", "userFeedBacksAnswers", "activeUser", "isLastComment", "isAddUserFeedbackLoading"], outputs: ["newUserFeedbackAnswer"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: TimeSincePipe, name: "timeSince" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27488
27865
|
}
|
|
27489
27866
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, decorators: [{
|
|
27490
27867
|
type: Component,
|
|
27491
|
-
args: [{ selector: 'gn-ui-user-feedback-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span> {{ userFeedbackParent.date | timeSince }}</span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"
|
|
27868
|
+
args: [{ selector: 'gn-ui-user-feedback-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span> {{ userFeedbackParent.date | timeSince }}</span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"activeUser\" class=\"mt-2 flex flex-col\">\n <hr class=\"-mx-4 my-4\" />\n <div\n id=\"new-comment-buttons\"\n class=\"flex flex-row gap-2 items-center justify-end\"\n >\n <gn-ui-text-area\n [disabled]=\"isAddUserFeedbackLoading\"\n [(value)]=\"newAnswer\"\n (valueChange)=\"onNewAnswerValueChange()\"\n (keyup.control.enter)=\"publishNewAnswer()\"\n [placeholder]=\"\n 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate\n \"\n class=\"grow\"\n extraClass=\"bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9\"\n ></gn-ui-text-area>\n <div *ngIf=\"!isAnswerEmpty\" class=\"flex flex-row justify-end\">\n <gn-ui-button\n [disabled]=\"isAddUserFeedbackLoading\"\n [type]=\"'outline'\"\n (buttonClick)=\"publishNewAnswer()\"\n [title]=\"\n 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate\n \"\n extraClass=\"!p-[0.5em] text-primary-darker border-primary-darker h-9\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"!isAddUserFeedbackLoading\"\n >\n send\n </mat-icon>\n <ng-container *ngIf=\"isAddUserFeedbackLoading\">\n <div class=\"flex justify-center w-full\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
27492
27869
|
}], propDecorators: { userFeedbackParent: [{
|
|
27493
27870
|
type: Input
|
|
27494
27871
|
}], userFeedBacksAnswers: [{
|
|
27495
27872
|
type: Input
|
|
27496
|
-
}], isActiveUserEditor: [{
|
|
27497
|
-
type: Input
|
|
27498
27873
|
}], activeUser: [{
|
|
27499
27874
|
type: Input
|
|
27500
27875
|
}], isLastComment: [{
|
|
@@ -27512,7 +27887,6 @@ class UiElementsModule {
|
|
|
27512
27887
|
DownloadItemComponent,
|
|
27513
27888
|
DownloadsListComponent,
|
|
27514
27889
|
ApiCardComponent,
|
|
27515
|
-
LinkCardComponent,
|
|
27516
27890
|
RelatedRecordCardComponent,
|
|
27517
27891
|
MetadataContactComponent,
|
|
27518
27892
|
MetadataCatalogComponent,
|
|
@@ -27543,7 +27917,6 @@ class UiElementsModule {
|
|
|
27543
27917
|
DownloadItemComponent,
|
|
27544
27918
|
DownloadsListComponent,
|
|
27545
27919
|
ApiCardComponent,
|
|
27546
|
-
LinkCardComponent,
|
|
27547
27920
|
RelatedRecordCardComponent,
|
|
27548
27921
|
MetadataContactComponent,
|
|
27549
27922
|
MetadataCatalogComponent,
|
|
@@ -27597,7 +27970,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27597
27970
|
DownloadItemComponent,
|
|
27598
27971
|
DownloadsListComponent,
|
|
27599
27972
|
ApiCardComponent,
|
|
27600
|
-
LinkCardComponent,
|
|
27601
27973
|
RelatedRecordCardComponent,
|
|
27602
27974
|
MetadataContactComponent,
|
|
27603
27975
|
MetadataCatalogComponent,
|
|
@@ -27620,7 +27992,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27620
27992
|
DownloadItemComponent,
|
|
27621
27993
|
DownloadsListComponent,
|
|
27622
27994
|
ApiCardComponent,
|
|
27623
|
-
LinkCardComponent,
|
|
27624
27995
|
RelatedRecordCardComponent,
|
|
27625
27996
|
MetadataContactComponent,
|
|
27626
27997
|
MetadataCatalogComponent,
|
|
@@ -28889,7 +29260,7 @@ class ResultsLayoutComponent {
|
|
|
28889
29260
|
this.searchFacade.setResultsLayout(layout);
|
|
28890
29261
|
}
|
|
28891
29262
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsLayoutComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28892
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsLayoutComponent, selector: "gn-ui-results-layout", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'results.layout.selectOne' | translate\"\n [ariaName]=\"'results.layout.selectOne' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"change($event)\"\n [selected]=\"searchFacade.layout$ | async\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29263
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsLayoutComponent, selector: "gn-ui-results-layout", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'results.layout.selectOne' | translate\"\n [ariaName]=\"'results.layout.selectOne' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"change($event)\"\n [selected]=\"searchFacade.layout$ | async\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
28893
29264
|
}
|
|
28894
29265
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsLayoutComponent, decorators: [{
|
|
28895
29266
|
type: Component,
|
|
@@ -29097,7 +29468,7 @@ class SortByComponent {
|
|
|
29097
29468
|
this.searchService.setSortBy(criteriaAsString.split(','));
|
|
29098
29469
|
}
|
|
29099
29470
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SortByComponent, deps: [{ token: SearchFacade }, { token: SearchService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29100
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SortByComponent, selector: "gn-ui-sort-by", inputs: { isQualitySortable: "isQualitySortable" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'search.field.sortBy' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"changeSortBy($event)\"\n [selected]=\"currentSortBy$ | async\"\n ariaName=\"search-sort-by\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29471
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SortByComponent, selector: "gn-ui-sort-by", inputs: { isQualitySortable: "isQualitySortable" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'search.field.sortBy' | translate\"\n [choices]=\"choices\"\n (selectValue)=\"changeSortBy($event)\"\n [selected]=\"currentSortBy$ | async\"\n ariaName=\"search-sort-by\"\n></gn-ui-dropdown-selector>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29101
29472
|
}
|
|
29102
29473
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SortByComponent, decorators: [{
|
|
29103
29474
|
type: Component,
|
|
@@ -29965,7 +30336,7 @@ class AddLayerFromWmsComponent {
|
|
|
29965
30336
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
29966
30337
|
}
|
|
29967
30338
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29968
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30339
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29969
30340
|
}
|
|
29970
30341
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, decorators: [{
|
|
29971
30342
|
type: Component,
|
|
@@ -30116,7 +30487,7 @@ class AddLayerFromWfsComponent {
|
|
|
30116
30487
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
30117
30488
|
}
|
|
30118
30489
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30119
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30490
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30120
30491
|
}
|
|
30121
30492
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, decorators: [{
|
|
30122
30493
|
type: Component,
|
|
@@ -30136,7 +30507,7 @@ class LayersPanelComponent {
|
|
|
30136
30507
|
this.mapFacade.addLayer(layer);
|
|
30137
30508
|
}
|
|
30138
30509
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, deps: [{ token: MapFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30139
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$
|
|
30510
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LayersPanelComponent, selector: "gn-ui-layers-panel", ngImport: i0, template: "<div\n class=\"bg-white rounded shadow shadow-lg relative h-full w-[400px] overflow-hidden\"\n>\n <div class=\"p-3 border-b border-gray-300 flex items-center\">\n <mat-icon class=\"material-symbols-outlined mr-2\">layers</mat-icon>\n <span translate>map.layers.list</span>\n </div>\n <div class=\"flex flex-col px-4 divide-y divide-y-gray-50\">\n <div\n *ngFor=\"let layer of layers$ | async; let index = index\"\n class=\"flex flex-row py-3\"\n >\n <mat-icon class=\"material-symbols-outlined -ml-2 mr-2 shrink-0\"\n >chevron_right</mat-icon\n >\n <span class=\"mr-2 grow\">{{ layer.title }}</span>\n <a\n href\n class=\"underline text-sm text-red-700 hover:text-red-900\"\n (click)=\"deleteLayer(index)\"\n >\n delete\n </a>\n </div>\n </div>\n <gn-ui-expandable-panel-button [titleTemplate]=\"addLayerTitle\">\n <mat-tab-group animationDuration=\"200ms\" class=\"h-full\">\n <mat-tab [label]=\"'map.add.layer.catalog' | translate\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-catalog></gn-ui-add-layer-from-catalog>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wms' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wms></gn-ui-add-layer-from-wms>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.wfs' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-wfs></gn-ui-add-layer-from-wfs>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.ogc.api' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-ogc-api\n [ogcUrl]=\"ogcUrl\"\n (layerAdded)=\"addLayer($event)\"\n ></gn-ui-add-layer-from-ogc-api>\n </div>\n </mat-tab>\n <mat-tab [label]=\"'map.add.layer.file' | translate\" bodyClass=\"h-full\">\n <div class=\"p-3\">\n <gn-ui-add-layer-from-file></gn-ui-add-layer-from-file>\n </div>\n </mat-tab>\n </mat-tab-group>\n </gn-ui-expandable-panel-button>\n</div>\n\n<ng-template #addLayerTitle>\n <mat-icon class=\"material-symbols-outlined mr-4\">add_circle</mat-icon>\n <span translate>map.add.layer</span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ExpandablePanelButtonComponent, selector: "gn-ui-expandable-panel-button", inputs: ["titleTemplate", "collapsed"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: AddLayerFromOgcApiComponent, selector: "gn-ui-add-layer-from-ogc-api", inputs: ["ogcUrl"], outputs: ["layerAdded"] }, { kind: "component", type: AddLayerFromCatalogComponent, selector: "gn-ui-add-layer-from-catalog" }, { kind: "component", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms" }, { kind: "component", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file" }, { kind: "component", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30140
30511
|
}
|
|
30141
30512
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
30142
30513
|
type: Component,
|
|
@@ -30605,14 +30976,12 @@ on(setChartConfig, (state, { chartConfig }) => ({
|
|
|
30605
30976
|
*/
|
|
30606
30977
|
on(loadUserFeedbacks, (state) => ({
|
|
30607
30978
|
...state,
|
|
30608
|
-
error: null,
|
|
30609
30979
|
allUserFeedbacksLoading: true,
|
|
30610
30980
|
})), on(addUserFeedback, (state) => ({
|
|
30611
30981
|
...state,
|
|
30612
30982
|
addUserFeedbackLoading: true,
|
|
30613
30983
|
})), on(loadUserFeedbacksSuccess, (state, { userFeedbacks }) => ({
|
|
30614
30984
|
...state,
|
|
30615
|
-
error: null,
|
|
30616
30985
|
userFeedbacks: userFeedbacks,
|
|
30617
30986
|
addUserFeedbackLoading: false,
|
|
30618
30987
|
allUserFeedbacksLoading: false,
|
|
@@ -30994,7 +31363,7 @@ class TableComponent {
|
|
|
30994
31363
|
return rowIdPrefix + id;
|
|
30995
31364
|
}
|
|
30996
31365
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30997
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$
|
|
31366
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n</div>\n", styles: ["table{width:100%;background:white}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:whitesmoke}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$5.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$1.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30998
31367
|
}
|
|
30999
31368
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, decorators: [{
|
|
31000
31369
|
type: Component,
|
|
@@ -31864,6 +32233,7 @@ marker('wfs.unreachable.http');
|
|
|
31864
32233
|
marker('wfs.unreachable.unknown');
|
|
31865
32234
|
marker('wfs.featuretype.notfound');
|
|
31866
32235
|
marker('wfs.geojsongml.notsupported');
|
|
32236
|
+
marker('ogc.unreachable.unknown');
|
|
31867
32237
|
marker('dataset.error.network');
|
|
31868
32238
|
marker('dataset.error.http');
|
|
31869
32239
|
marker('dataset.error.parse');
|
|
@@ -31943,6 +32313,27 @@ class DataService {
|
|
|
31943
32313
|
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
31944
32314
|
}))));
|
|
31945
32315
|
}
|
|
32316
|
+
async getDownloadLinksFromOgcApiFeatures(ogcApiLink) {
|
|
32317
|
+
const collectionInfo = await this.getDownloadUrlsFromOgcApi(ogcApiLink.url.href);
|
|
32318
|
+
return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
|
|
32319
|
+
return {
|
|
32320
|
+
...ogcApiLink,
|
|
32321
|
+
type: 'download',
|
|
32322
|
+
url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
|
|
32323
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
|
|
32324
|
+
};
|
|
32325
|
+
});
|
|
32326
|
+
}
|
|
32327
|
+
async getDownloadUrlsFromOgcApi(url) {
|
|
32328
|
+
const endpoint = new OgcApiEndpoint(this.proxy.getProxiedUrl(url));
|
|
32329
|
+
return await endpoint.allCollections
|
|
32330
|
+
.then((collections) => {
|
|
32331
|
+
return endpoint.getCollectionInfo(collections[0].name);
|
|
32332
|
+
})
|
|
32333
|
+
.catch((error) => {
|
|
32334
|
+
throw new Error(`ogc.unreachable.unknown`);
|
|
32335
|
+
});
|
|
32336
|
+
}
|
|
31946
32337
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
31947
32338
|
return ['json', 'geojson'].map((format) => ({
|
|
31948
32339
|
...esriRestLink,
|
|
@@ -31986,6 +32377,17 @@ class DataService {
|
|
|
31986
32377
|
const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
|
|
31987
32378
|
return from(openDataset(url, 'geojson')).pipe();
|
|
31988
32379
|
}
|
|
32380
|
+
else if (link.type === 'service' &&
|
|
32381
|
+
link.accessServiceProtocol === 'ogcFeatures') {
|
|
32382
|
+
return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
|
|
32383
|
+
const geojsonUrl = collectionInfo.jsonDownloadLink;
|
|
32384
|
+
return openDataset(geojsonUrl, 'geojson');
|
|
32385
|
+
}), tap$1((url) => {
|
|
32386
|
+
if (url === null) {
|
|
32387
|
+
throw new Error('wfs.geojsongml.notsupported');
|
|
32388
|
+
}
|
|
32389
|
+
}));
|
|
32390
|
+
}
|
|
31989
32391
|
return throwError(() => 'protocol not supported');
|
|
31990
32392
|
}
|
|
31991
32393
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataService, deps: [{ token: ProxyService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -32212,7 +32614,7 @@ class ChartViewComponent {
|
|
|
32212
32614
|
this.changeDetector.detectChanges();
|
|
32213
32615
|
}
|
|
32214
32616
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChartViewComponent, deps: [{ token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32215
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.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>{{ 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: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32617
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: { link: "link", aggregation: "aggregation", xProperty: "xProperty", yProperty: "yProperty", chartType: "chartType" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div\n class=\"flex flex-col space-y-2 sm:flex-row sm:space-y-0 sm:space-x-2 justify-between text-[13px]\"\n >\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"typeChoices\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"chartType$.next($event)\"\n [selected]=\"chartType$.value\"\n [title]=\"'chart.dropdown.type' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"xChoices$ | async\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n (selectValue)=\"xProperty$.next($event)\"\n [selected]=\"xProperty$.value\"\n [title]=\"'chart.dropdown.xProperty' | translate\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices$ | async\"\n (selectValue)=\"yProperty$.next($event)\"\n [selected]=\"yProperty$.value\"\n [title]=\"'chart.dropdown.yProperty' | translate\"\n class=\"select-y-prop\"\n ></gn-ui-dropdown-selector>\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n [choices]=\"aggregationChoices\"\n class=\"aggregation-choices\"\n (selectValue)=\"aggregation$.next($event)\"\n [selected]=\"aggregation$.value\"\n [title]=\"'chart.dropdown.aggregation' | translate\"\n ></gn-ui-dropdown-selector>\n </div>\n <div\n class=\"relative h-full mt-2 bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-chart\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [labelProperty]=\"labelProperty\"\n [valueProperty]=\"valueProperty\"\n ></gn-ui-chart>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'chart.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>{{ 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: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32216
32618
|
}
|
|
32217
32619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
32218
32620
|
type: Component,
|
|
@@ -32444,7 +32846,8 @@ class MapViewComponent {
|
|
|
32444
32846
|
}
|
|
32445
32847
|
else if ((link.type === 'service' &&
|
|
32446
32848
|
(link.accessServiceProtocol === 'wfs' ||
|
|
32447
|
-
link.accessServiceProtocol === 'esriRest'
|
|
32849
|
+
link.accessServiceProtocol === 'esriRest' ||
|
|
32850
|
+
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
32448
32851
|
link.type === 'download') {
|
|
32449
32852
|
return this.dataService.readAsGeoJson(link).pipe(map$1((data) => ({
|
|
32450
32853
|
type: MapContextLayerTypeEnum.GEOJSON,
|
|
@@ -32457,7 +32860,7 @@ class MapViewComponent {
|
|
|
32457
32860
|
this.selectedLinkIndex$.next(link);
|
|
32458
32861
|
}
|
|
32459
32862
|
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 }); }
|
|
32460
|
-
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 }); }
|
|
32863
|
+
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", "disabled"], 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 }); }
|
|
32461
32864
|
}
|
|
32462
32865
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
32463
32866
|
type: Component,
|
|
@@ -32495,7 +32898,7 @@ class DataViewComponent {
|
|
|
32495
32898
|
this.selectedLink$.next(link);
|
|
32496
32899
|
}
|
|
32497
32900
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewComponent, deps: [{ token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32498
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewComponent, selector: "gn-ui-data-view", inputs: { mode: "mode" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32901
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewComponent, selector: "gn-ui-data-view", inputs: { mode: "mode" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col p-1\">\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [title]=\"'table.select.data' | translate\"\n class=\"truncate p-1 -mx-1\"\n extraBtnClass=\"!text-primary font-sans font-medium\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n <div class=\"relative h-[420px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TableViewComponent, selector: "gn-ui-table-view", inputs: ["link"] }, { kind: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32499
32902
|
}
|
|
32500
32903
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewComponent, decorators: [{
|
|
32501
32904
|
type: Component,
|
|
@@ -32589,7 +32992,7 @@ class OrganisationsFilterComponent {
|
|
|
32589
32992
|
this.filterByValueChange.next(inputValue);
|
|
32590
32993
|
}
|
|
32591
32994
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: OrganisationsFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32592
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: OrganisationsFilterComponent, selector: "gn-ui-organisations-filter", outputs: { sortBy: "sortBy", filterBy: "filterBy" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap sm:flex-nowrap justify-between bg-white shadow-xl p-5 rounded-lg\"\n>\n <span class=\"grow mb-4 mr-4 sm:mb-0 sm:mr-16 sm:max-w-sm\">\n <gn-ui-search-input\n (valueChange)=\"filterOrganisations($event)\"\n [placeholder]=\"'organisation.filter.placeholder' | translate\"\n ></gn-ui-search-input>\n </span>\n <span class=\"flex flex-wrap sm:flex-nowrap sm:shrink-0\">\n <gn-ui-dropdown-selector\n [title]=\"'organisation.sort.sortBy' | translate\"\n class=\"shrink\"\n [choices]=\"choices\"\n [minWidth]=\"'180px'\"\n [showTitle]=\"true\"\n (selectValue)=\"selectOrderToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </span>\n</div>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: ["value", "placeholder"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32995
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: OrganisationsFilterComponent, selector: "gn-ui-organisations-filter", outputs: { sortBy: "sortBy", filterBy: "filterBy" }, ngImport: i0, template: "<div\n class=\"flex flex-wrap sm:flex-nowrap justify-between bg-white shadow-xl p-5 rounded-lg\"\n>\n <span class=\"grow mb-4 mr-4 sm:mb-0 sm:mr-16 sm:max-w-sm\">\n <gn-ui-search-input\n (valueChange)=\"filterOrganisations($event)\"\n [placeholder]=\"'organisation.filter.placeholder' | translate\"\n ></gn-ui-search-input>\n </span>\n <span class=\"flex flex-wrap sm:flex-nowrap sm:shrink-0\">\n <gn-ui-dropdown-selector\n [title]=\"'organisation.sort.sortBy' | translate\"\n class=\"shrink\"\n [choices]=\"choices\"\n [minWidth]=\"'180px'\"\n [showTitle]=\"true\"\n (selectValue)=\"selectOrderToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </span>\n</div>\n", dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: ["value", "placeholder"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32593
32996
|
}
|
|
32594
32997
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: OrganisationsFilterComponent, decorators: [{
|
|
32595
32998
|
type: Component,
|
|
@@ -32629,7 +33032,7 @@ class LanguageSwitcherComponent {
|
|
|
32629
33032
|
this.translate.use(value);
|
|
32630
33033
|
}
|
|
32631
33034
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, deps: [{ token: LANGUAGES_LIST, optional: true }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32632
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }] }); }
|
|
33035
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LanguageSwitcherComponent, selector: "gn-ui-language-switcher", ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"'languages'\"\n [choices]=\"languageList\"\n (selectValue)=\"changeLanguage($event)\"\n [selected]=\"currentLang\"\n ariaName=\"languages\"\n [showTitle]=\"false\"\n extraBtnClass=\"bg-transparent flex justify-items-center !pl-2 !py-1\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }] }); }
|
|
32633
33036
|
}
|
|
32634
33037
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
32635
33038
|
type: Component,
|
|
@@ -33042,7 +33445,7 @@ class DataViewShareComponent {
|
|
|
33042
33445
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
33043
33446
|
}
|
|
33044
33447
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewShareComponent, deps: [{ token: WEB_COMPONENT_EMBEDDER_URL, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33045
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewShareComponent, selector: "gn-ui-data-view-share", ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$
|
|
33448
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DataViewShareComponent, selector: "gn-ui-data-view-share", ngImport: i0, template: "<div class=\"container-lg px-5 my-1 lg:mx-auto\">\n <mat-tab-group\n [selectedIndex]=\"0\"\n animationDuration=\"0ms\"\n mat-stretch-tabs=\"false\"\n mat-align-tabs=\"start\"\n [disableRipple]=\"!wcEmbedderBaseUrl\"\n >\n <mat-tab *ngIf=\"wcEmbedderBaseUrl\">\n <ng-template mat-tab-label>\n <span class=\"tab-header-label-gray\" translate>share.tab.permalink</span>\n </ng-template>\n <gn-ui-data-view-permalink></gn-ui-data-view-permalink>\n </mat-tab>\n <mat-tab>\n <ng-template mat-tab-label>\n <span\n [class]=\"\n wcEmbedderBaseUrl\n ? 'tab-header-label-gray'\n : 'single-tab-header-label-gray'\n \"\n translate\n >share.tab.webComponent</span\n >\n </ng-template>\n <gn-ui-data-view-web-component></gn-ui-data-view-web-component>\n </mat-tab>\n </mat-tab-group>\n</div>\n", styles: ["::ng-deep .mat-mdc-tab.mdc-tab.mdc-tab--active .tab-header-label-gray{opacity:100%;font-weight:700}.tab-header-label-gray{@apply text-sm text-gray-700 opacity-75 hover:text-gray-900;}.single-tab-header-label-gray{@apply text-sm text-gray-900;}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$4.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i2$4.MatTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i2$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple", "fitInkBarToContent", "mat-stretch-tabs"], exportAs: ["matTabGroup"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DataViewPermalinkComponent, selector: "gn-ui-data-view-permalink" }, { kind: "component", type: DataViewWebComponentComponent, selector: "gn-ui-data-view-web-component" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33046
33449
|
}
|
|
33047
33450
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewShareComponent, decorators: [{
|
|
33048
33451
|
type: Component,
|
|
@@ -33171,6 +33574,27 @@ const DEFAULT_FIELDS = [
|
|
|
33171
33574
|
},
|
|
33172
33575
|
onSaveProcess: '${dateNow()}',
|
|
33173
33576
|
},
|
|
33577
|
+
{
|
|
33578
|
+
model: 'licenses',
|
|
33579
|
+
formFieldConfig: {
|
|
33580
|
+
labelKey: marker('editor.record.form.license'),
|
|
33581
|
+
type: 'list',
|
|
33582
|
+
},
|
|
33583
|
+
},
|
|
33584
|
+
{
|
|
33585
|
+
model: 'resourceUpdated',
|
|
33586
|
+
formFieldConfig: {
|
|
33587
|
+
labelKey: marker('editor.record.form.resourceUpdated'),
|
|
33588
|
+
type: 'date',
|
|
33589
|
+
},
|
|
33590
|
+
},
|
|
33591
|
+
{
|
|
33592
|
+
model: 'updateFrequency',
|
|
33593
|
+
formFieldConfig: {
|
|
33594
|
+
labelKey: marker('editor.record.form.updateFrequency'),
|
|
33595
|
+
type: 'text',
|
|
33596
|
+
},
|
|
33597
|
+
},
|
|
33174
33598
|
];
|
|
33175
33599
|
|
|
33176
33600
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
@@ -33555,7 +33979,7 @@ class WizardFieldComponent {
|
|
|
33555
33979
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
33556
33980
|
},
|
|
33557
33981
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
33558
|
-
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type:
|
|
33982
|
+
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33559
33983
|
}
|
|
33560
33984
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
33561
33985
|
type: Component,
|
|
@@ -33884,6 +34308,174 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33884
34308
|
args: [{ selector: 'gn-ui-form-field-temporal-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-temporal-extent works!</p>\n" }]
|
|
33885
34309
|
}] });
|
|
33886
34310
|
|
|
34311
|
+
class FormFieldLicenseComponent {
|
|
34312
|
+
constructor() {
|
|
34313
|
+
this.choices = [
|
|
34314
|
+
{
|
|
34315
|
+
value: 'cc-by',
|
|
34316
|
+
label: marker('editor.record.form.license.cc-by'),
|
|
34317
|
+
},
|
|
34318
|
+
{
|
|
34319
|
+
value: 'cc-by-sa',
|
|
34320
|
+
label: marker('editor.record.form.license.cc-by-sa'),
|
|
34321
|
+
},
|
|
34322
|
+
{
|
|
34323
|
+
value: 'cc-zero',
|
|
34324
|
+
label: marker('editor.record.form.license.cc-zero'),
|
|
34325
|
+
},
|
|
34326
|
+
{
|
|
34327
|
+
value: 'etalab',
|
|
34328
|
+
label: marker('editor.record.form.license.etalab'),
|
|
34329
|
+
},
|
|
34330
|
+
{
|
|
34331
|
+
value: 'etalab-v2',
|
|
34332
|
+
label: marker('editor.record.form.license.etalab-v2'),
|
|
34333
|
+
},
|
|
34334
|
+
{
|
|
34335
|
+
value: 'odbl',
|
|
34336
|
+
label: marker('editor.record.form.license.odbl'),
|
|
34337
|
+
},
|
|
34338
|
+
{
|
|
34339
|
+
value: 'odc-by',
|
|
34340
|
+
label: marker('editor.record.form.license.odc-by'),
|
|
34341
|
+
},
|
|
34342
|
+
{
|
|
34343
|
+
value: 'pddl',
|
|
34344
|
+
label: marker('editor.record.form.license.pddl'),
|
|
34345
|
+
},
|
|
34346
|
+
{
|
|
34347
|
+
value: 'unknown',
|
|
34348
|
+
label: marker('editor.record.form.license.unknown'),
|
|
34349
|
+
},
|
|
34350
|
+
];
|
|
34351
|
+
}
|
|
34352
|
+
get selected() {
|
|
34353
|
+
return this.control.value[0]?.text;
|
|
34354
|
+
}
|
|
34355
|
+
onSelectValue(value) {
|
|
34356
|
+
this.control.setValue([{ text: value }]);
|
|
34357
|
+
}
|
|
34358
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34359
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldLicenseComponent, isStandalone: true, selector: "gn-ui-form-field-license", inputs: { control: "control", label: "label" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"label\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selected\"\n (selectValue)=\"onSelectValue($event)\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34360
|
+
}
|
|
34361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, decorators: [{
|
|
34362
|
+
type: Component,
|
|
34363
|
+
args: [{ selector: 'gn-ui-form-field-license', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [DropdownSelectorComponent], template: "<gn-ui-dropdown-selector\n [title]=\"label\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selected\"\n (selectValue)=\"onSelectValue($event)\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
34364
|
+
}], propDecorators: { control: [{
|
|
34365
|
+
type: Input
|
|
34366
|
+
}], label: [{
|
|
34367
|
+
type: Input
|
|
34368
|
+
}] } });
|
|
34369
|
+
|
|
34370
|
+
class FormFieldResourceUpdatedComponent {
|
|
34371
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34372
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldResourceUpdatedComponent, isStandalone: true, selector: "gn-ui-form-field-resource-updated", inputs: { control: "control" }, ngImport: i0, template: "<gn-ui-date-picker\n [date]=\"control.value\"\n (dateChange)=\"control.setValue($event)\"\n></gn-ui-date-picker>\n", styles: [""], dependencies: [{ kind: "component", type: DatePickerComponent, selector: "gn-ui-date-picker", inputs: ["date"], outputs: ["dateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34373
|
+
}
|
|
34374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, decorators: [{
|
|
34375
|
+
type: Component,
|
|
34376
|
+
args: [{ selector: 'gn-ui-form-field-resource-updated', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [DatePickerComponent], template: "<gn-ui-date-picker\n [date]=\"control.value\"\n (dateChange)=\"control.setValue($event)\"\n></gn-ui-date-picker>\n" }]
|
|
34377
|
+
}], propDecorators: { control: [{
|
|
34378
|
+
type: Input
|
|
34379
|
+
}] } });
|
|
34380
|
+
|
|
34381
|
+
class FormFieldUpdateFrequencyComponent {
|
|
34382
|
+
get planned() {
|
|
34383
|
+
return this.control.value !== 'notPlanned';
|
|
34384
|
+
}
|
|
34385
|
+
constructor(translateService) {
|
|
34386
|
+
this.translateService = translateService;
|
|
34387
|
+
this.choices = [
|
|
34388
|
+
{
|
|
34389
|
+
value: 'day.1',
|
|
34390
|
+
label: this.translateService.instant('domain.record.updateFrequency.day', {
|
|
34391
|
+
count: 1,
|
|
34392
|
+
}),
|
|
34393
|
+
},
|
|
34394
|
+
{
|
|
34395
|
+
value: 'day.2',
|
|
34396
|
+
label: this.translateService.instant('domain.record.updateFrequency.day', {
|
|
34397
|
+
count: 2,
|
|
34398
|
+
}),
|
|
34399
|
+
},
|
|
34400
|
+
{
|
|
34401
|
+
value: 'week.1',
|
|
34402
|
+
label: this.translateService.instant('domain.record.updateFrequency.week', {
|
|
34403
|
+
count: 1,
|
|
34404
|
+
}),
|
|
34405
|
+
},
|
|
34406
|
+
{
|
|
34407
|
+
value: 'week.2',
|
|
34408
|
+
label: this.translateService.instant('domain.record.updateFrequency.week', {
|
|
34409
|
+
count: 2,
|
|
34410
|
+
}),
|
|
34411
|
+
},
|
|
34412
|
+
{
|
|
34413
|
+
value: 'month.1',
|
|
34414
|
+
label: this.translateService.instant('domain.record.updateFrequency.month', {
|
|
34415
|
+
count: 1,
|
|
34416
|
+
}),
|
|
34417
|
+
},
|
|
34418
|
+
{
|
|
34419
|
+
value: 'month.2',
|
|
34420
|
+
label: this.translateService.instant('domain.record.updateFrequency.month', {
|
|
34421
|
+
count: 2,
|
|
34422
|
+
}),
|
|
34423
|
+
},
|
|
34424
|
+
{
|
|
34425
|
+
value: 'year.1',
|
|
34426
|
+
label: this.translateService.instant('domain.record.updateFrequency.year', {
|
|
34427
|
+
count: 1,
|
|
34428
|
+
}),
|
|
34429
|
+
},
|
|
34430
|
+
{
|
|
34431
|
+
value: 'year.2',
|
|
34432
|
+
label: this.translateService.instant('domain.record.updateFrequency.year', {
|
|
34433
|
+
count: 2,
|
|
34434
|
+
}),
|
|
34435
|
+
},
|
|
34436
|
+
];
|
|
34437
|
+
}
|
|
34438
|
+
ngOnInit() {
|
|
34439
|
+
const updatedTimes = this.control.value?.updatedTimes;
|
|
34440
|
+
const per = this.control.value?.per;
|
|
34441
|
+
if (updatedTimes && updatedTimes !== 1 && updatedTimes !== 2) {
|
|
34442
|
+
this.choices = [
|
|
34443
|
+
{
|
|
34444
|
+
value: `${per}.${updatedTimes}`,
|
|
34445
|
+
label: this.translateService.instant(`domain.record.updateFrequency.${per}`, {
|
|
34446
|
+
count: updatedTimes,
|
|
34447
|
+
}),
|
|
34448
|
+
},
|
|
34449
|
+
...this.choices,
|
|
34450
|
+
];
|
|
34451
|
+
}
|
|
34452
|
+
}
|
|
34453
|
+
onPlannedToggled() {
|
|
34454
|
+
if (this.planned) {
|
|
34455
|
+
this.control.setValue('notPlanned');
|
|
34456
|
+
}
|
|
34457
|
+
else {
|
|
34458
|
+
this.control.setValue({ updatedTimes: 1, per: 'day' });
|
|
34459
|
+
}
|
|
34460
|
+
}
|
|
34461
|
+
get selectedFrequency() {
|
|
34462
|
+
const { updatedTimes, per } = this.control.value;
|
|
34463
|
+
return `${per}.${updatedTimes}`;
|
|
34464
|
+
}
|
|
34465
|
+
onSelectFrequencyValue(value) {
|
|
34466
|
+
const split = value.split('.');
|
|
34467
|
+
this.control.setValue({ updatedTimes: Number(split[1]), per: split[0] });
|
|
34468
|
+
}
|
|
34469
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldUpdateFrequencyComponent, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34470
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldUpdateFrequencyComponent, isStandalone: true, selector: "gn-ui-form-field-update-frequency", inputs: { control: "control" }, ngImport: i0, template: "<gn-ui-check-toggle\n [label]=\"'editor.record.form.updateFrequency.planned' | translate\"\n [value]=\"planned\"\n (toggled)=\"onPlannedToggled()\"\n></gn-ui-check-toggle>\n<gn-ui-dropdown-selector\n title=\"updateFrequency\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selectedFrequency\"\n (selectValue)=\"onSelectFrequencyValue($event)\"\n [disabled]=\"!planned\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: ["title", "label", "value", "color"], outputs: ["toggled"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34471
|
+
}
|
|
34472
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldUpdateFrequencyComponent, decorators: [{
|
|
34473
|
+
type: Component,
|
|
34474
|
+
args: [{ selector: 'gn-ui-form-field-update-frequency', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CheckToggleComponent, DropdownSelectorComponent, TranslateModule], template: "<gn-ui-check-toggle\n [label]=\"'editor.record.form.updateFrequency.planned' | translate\"\n [value]=\"planned\"\n (toggled)=\"onPlannedToggled()\"\n></gn-ui-check-toggle>\n<gn-ui-dropdown-selector\n title=\"updateFrequency\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selectedFrequency\"\n (selectValue)=\"onSelectFrequencyValue($event)\"\n [disabled]=\"!planned\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
34475
|
+
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; }, propDecorators: { control: [{
|
|
34476
|
+
type: Input
|
|
34477
|
+
}] } });
|
|
34478
|
+
|
|
33887
34479
|
class FormFieldComponent {
|
|
33888
34480
|
set value(v) {
|
|
33889
34481
|
this.formControl.setValue(v, {
|
|
@@ -33938,8 +34530,20 @@ class FormFieldComponent {
|
|
|
33938
34530
|
get isAbstract() {
|
|
33939
34531
|
return this.model === 'abstract';
|
|
33940
34532
|
}
|
|
34533
|
+
get isLicenses() {
|
|
34534
|
+
return this.model === 'licenses';
|
|
34535
|
+
}
|
|
34536
|
+
get isResourceUpdated() {
|
|
34537
|
+
return this.model === 'resourceUpdated';
|
|
34538
|
+
}
|
|
34539
|
+
get isUpdateFrequency() {
|
|
34540
|
+
return this.model === 'updateFrequency';
|
|
34541
|
+
}
|
|
34542
|
+
get withoutWrapper() {
|
|
34543
|
+
return this.model === 'title' || this.model === 'abstract';
|
|
34544
|
+
}
|
|
33941
34545
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33942
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <
|
|
34546
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2$2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldObjectComponent, selector: "gn-ui-form-field-object" }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldTemporalExtentComponent, selector: "gn-ui-form-field-temporal-extent" }, { kind: "component", type: FormFieldFileComponent, selector: "gn-ui-form-field-file", inputs: ["control", "readonly", "invalid", "placeholder"] }, { kind: "component", type: FormFieldArrayComponent, selector: "gn-ui-form-field-array" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33943
34547
|
}
|
|
33944
34548
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
33945
34549
|
type: Component,
|
|
@@ -33949,6 +34553,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33949
34553
|
EditableLabelDirective,
|
|
33950
34554
|
MatIconModule,
|
|
33951
34555
|
MatTooltipModule,
|
|
34556
|
+
FormFieldWrapperComponent,
|
|
34557
|
+
FormFieldLicenseComponent,
|
|
34558
|
+
FormFieldResourceUpdatedComponent,
|
|
34559
|
+
FormFieldUpdateFrequencyComponent,
|
|
33952
34560
|
FormFieldSimpleComponent,
|
|
33953
34561
|
FormFieldRichComponent,
|
|
33954
34562
|
FormFieldObjectComponent,
|
|
@@ -33957,7 +34565,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33957
34565
|
FormFieldFileComponent,
|
|
33958
34566
|
FormFieldArrayComponent,
|
|
33959
34567
|
TranslateModule,
|
|
33960
|
-
], template: "<div class=\"flex flex-col h-full\">\n <
|
|
34568
|
+
], template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isUpdateFrequency\">\n <gn-ui-form-field-update-frequency\n [control]=\"formControl\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n" }]
|
|
33961
34569
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
33962
34570
|
type: Input
|
|
33963
34571
|
}], config: [{
|
|
@@ -34315,7 +34923,7 @@ class DefaultRouterModule {
|
|
|
34315
34923
|
};
|
|
34316
34924
|
}
|
|
34317
34925
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
34318
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$
|
|
34926
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$2.StoreRouterConnectingModule, i1$8.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
34319
34927
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
34320
34928
|
RouterFacade,
|
|
34321
34929
|
{
|
|
@@ -34358,5 +34966,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
34358
34966
|
* Generated bundle index. Do not edit.
|
|
34359
34967
|
*/
|
|
34360
34968
|
|
|
34361
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
34969
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MultilingualSearchField, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
34362
34970
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|