geonetwork-ui 2.3.0-dev.3efe236f → 2.3.0-dev.549700bf
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 +29 -8
- 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 +99 -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 +1505 -908
- 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 +1 -0
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/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 +1 -0
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +26 -8
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +2 -1
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +0 -1
- package/src/libs/feature/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 +126 -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,7 +8,7 @@ import * as i1$1 from '@ngx-translate/core';
|
|
|
8
8
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay,
|
|
11
|
+
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, distinctUntilChanged, finalize, first, throttleTime, share, pairwise, mergeMap } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
@@ -42,30 +42,33 @@ import TileLayer from 'ol/layer/Tile';
|
|
|
42
42
|
import XYZ from 'ol/source/XYZ';
|
|
43
43
|
import { bbox } from 'ol/loadingstrategy';
|
|
44
44
|
import WMTS from 'ol/source/WMTS';
|
|
45
|
-
import
|
|
45
|
+
import OGCVectorTile from 'ol/source/OGCVectorTile.js';
|
|
46
|
+
import { MVT, WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
47
|
+
import VectorTileLayer from 'ol/layer/VectorTile';
|
|
48
|
+
import OGCMapTile from 'ol/source/OGCMapTile.js';
|
|
49
|
+
import * as i2$4 from '@angular/material/tabs';
|
|
46
50
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
47
|
-
import * as i1$4 from '@angular/cdk/overlay';
|
|
48
|
-
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
49
51
|
import * as i2$1 from '@angular/forms';
|
|
50
52
|
import { UntypedFormControl, FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
51
|
-
import * as i5 from 'ngx-chips';
|
|
52
|
-
import { TagInputModule } from 'ngx-chips';
|
|
53
53
|
import * as i4 from '@angular/material/autocomplete';
|
|
54
54
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
55
|
-
import * as i5
|
|
55
|
+
import * as i5 from '@angular/material/core';
|
|
56
56
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
57
|
+
import * as i1$4 from '@angular/material/checkbox';
|
|
58
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
59
|
+
import * as i5$1 from 'ngx-chips';
|
|
60
|
+
import { TagInputModule } from 'ngx-chips';
|
|
61
|
+
import * as i2$2 from '@angular/material/tooltip';
|
|
62
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
63
|
+
import * as i2$3 from '@angular/material/datepicker';
|
|
64
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
57
65
|
import * as i3 from 'ngx-dropzone';
|
|
58
66
|
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
59
|
-
import * as i1$5 from '@angular/
|
|
67
|
+
import * as i1$5 from '@angular/cdk/overlay';
|
|
68
|
+
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
69
|
+
import * as i1$6 from '@angular/material/progress-spinner';
|
|
60
70
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
61
|
-
import * as i1$6 from '@angular/material/checkbox';
|
|
62
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
63
|
-
import * as i3$1 from '@angular/material/tooltip';
|
|
64
|
-
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
65
|
-
import * as i2$2 from '@angular/material/form-field';
|
|
66
71
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
67
|
-
import * as i3$2 from '@angular/material/datepicker';
|
|
68
|
-
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
69
72
|
import { MatInputModule } from '@angular/material/input';
|
|
70
73
|
import * as i1$7 from '@angular/router';
|
|
71
74
|
import { RouterModule, RouterLink, RouteReuseStrategy } from '@angular/router';
|
|
@@ -85,18 +88,17 @@ import { trigger, transition, animate, keyframes, style } from '@angular/animati
|
|
|
85
88
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
86
89
|
import * as i4$1 from '@angular/cdk/scrolling';
|
|
87
90
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
88
|
-
import * as i2$
|
|
91
|
+
import * as i2$5 from '@angular/material/sort';
|
|
89
92
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
90
93
|
import * as i1$9 from '@angular/material/table';
|
|
91
94
|
import { MatTableModule } from '@angular/material/table';
|
|
92
|
-
import * as i3$
|
|
95
|
+
import * as i3$1 from 'ng-table-virtual-scroll';
|
|
93
96
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
94
97
|
import * as Papa from 'papaparse';
|
|
95
98
|
import parseDate from 'date-fns/parse';
|
|
96
99
|
import parseIsoDate from 'date-fns/parseISO';
|
|
97
|
-
import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
98
100
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
99
|
-
import * as i3$
|
|
101
|
+
import * as i3$2 from '@ngrx/router-store';
|
|
100
102
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
101
103
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
102
104
|
|
|
@@ -856,7 +858,7 @@ function getUpdateFrequencyFromCustomPeriod(isoPeriod) {
|
|
|
856
858
|
else if (days <= 7) {
|
|
857
859
|
return {
|
|
858
860
|
per: 'week',
|
|
859
|
-
updatedTimes: Math.round(7 / days),
|
|
861
|
+
updatedTimes: Math.round(7 / days - 0.0001), // this is to make sure that 'every 2 days' = '3 times per week'
|
|
860
862
|
};
|
|
861
863
|
}
|
|
862
864
|
else if (days) {
|
|
@@ -1155,7 +1157,7 @@ function getISODuration(updateFrequency) {
|
|
|
1155
1157
|
duration.hours = Math.round(24 / updateFrequency.updatedTimes);
|
|
1156
1158
|
break;
|
|
1157
1159
|
case 'week':
|
|
1158
|
-
duration.days = Math.round(7 / updateFrequency.updatedTimes);
|
|
1160
|
+
duration.days = Math.round(7 / updateFrequency.updatedTimes - 0.0001); // this is to make sure that '2 times per week' = 'every 3 days'
|
|
1159
1161
|
break;
|
|
1160
1162
|
case 'month':
|
|
1161
1163
|
if (updateFrequency.updatedTimes <= 1)
|
|
@@ -17419,6 +17421,19 @@ var de = {
|
|
|
17419
17421
|
"downloads.format.unknown": "unbekannt",
|
|
17420
17422
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17421
17423
|
dropFile: dropFile$6,
|
|
17424
|
+
"editor.record.form.license": "Lizenz",
|
|
17425
|
+
"editor.record.form.license.cc-by": "",
|
|
17426
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
17427
|
+
"editor.record.form.license.cc-zero": "",
|
|
17428
|
+
"editor.record.form.license.etalab": "",
|
|
17429
|
+
"editor.record.form.license.etalab-v2": "",
|
|
17430
|
+
"editor.record.form.license.odbl": "",
|
|
17431
|
+
"editor.record.form.license.odc-by": "",
|
|
17432
|
+
"editor.record.form.license.pddl": "",
|
|
17433
|
+
"editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
17434
|
+
"editor.record.form.resourceUpdated": "",
|
|
17435
|
+
"editor.record.form.updateFrequency": "",
|
|
17436
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
17422
17437
|
"editor.record.loadError.body": "",
|
|
17423
17438
|
"editor.record.loadError.closeMessage": "",
|
|
17424
17439
|
"editor.record.loadError.title": "",
|
|
@@ -17489,6 +17504,7 @@ var de = {
|
|
|
17489
17504
|
"multiselect.filter.placeholder": "Suche",
|
|
17490
17505
|
"nav.back": "Zurück",
|
|
17491
17506
|
next: next$6,
|
|
17507
|
+
"ogc.unreachable.unknown": "Der Dienst konnte nicht erreicht werden",
|
|
17492
17508
|
"organisation.filter.placeholder": "Ergebnisse filtern",
|
|
17493
17509
|
"organisation.sort.sortBy": "Sortieren nach:",
|
|
17494
17510
|
"organisations.hits.found": "{hits, plural, =0{Keine Organisation gefunden} other{{hits} von {total} Organisationen angezeigt}}",
|
|
@@ -17553,14 +17569,6 @@ var de = {
|
|
|
17553
17569
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
17554
17570
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
17555
17571
|
"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
17572
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
17565
17573
|
"record.metadata.status": "Status",
|
|
17566
17574
|
"record.metadata.technical": "Technische Informationen",
|
|
@@ -17575,6 +17583,14 @@ var de = {
|
|
|
17575
17583
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
17576
17584
|
"record.metadata.updatedOn": "Letzte Aktualisierung der Dateninformationen",
|
|
17577
17585
|
"record.metadata.usage": "Nutzung und Einschränkungen",
|
|
17586
|
+
"record.metadata.userFeedbacks": "",
|
|
17587
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17588
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17589
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17590
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17591
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17592
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17593
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17578
17594
|
"record.more.details": "Weitere Details",
|
|
17579
17595
|
"record.tab.chart": "Diagramm",
|
|
17580
17596
|
"record.tab.data": "Tabelle",
|
|
@@ -17634,12 +17650,6 @@ var de = {
|
|
|
17634
17650
|
"table.loading.data": "Daten werden geladen...",
|
|
17635
17651
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
17636
17652
|
"table.select.data": "Datenquelle",
|
|
17637
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
17638
|
-
"timeSincePipe.minutesAgo": "",
|
|
17639
|
-
"timeSincePipe.hoursAgo": "",
|
|
17640
|
-
"timeSincePipe.daysAgo": "",
|
|
17641
|
-
"timeSincePipe.monthsAgo": "",
|
|
17642
|
-
"timeSincePipe.yearsAgo": "",
|
|
17643
17653
|
"tooltip.html.copy": "HTML kopieren",
|
|
17644
17654
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
17645
17655
|
"tooltip.url.copy": "URL kopieren",
|
|
@@ -17804,6 +17814,19 @@ var en = {
|
|
|
17804
17814
|
"downloads.format.unknown": "unknown",
|
|
17805
17815
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17806
17816
|
dropFile: dropFile$5,
|
|
17817
|
+
"editor.record.form.license": "License",
|
|
17818
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17819
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17820
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
17821
|
+
"editor.record.form.license.etalab": "Open Licence (Etalab)",
|
|
17822
|
+
"editor.record.form.license.etalab-v2": "Open Licence v2.0 (Etalab)",
|
|
17823
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
17824
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17825
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17826
|
+
"editor.record.form.license.unknown": "Unknown or absent",
|
|
17827
|
+
"editor.record.form.resourceUpdated": "Last update date",
|
|
17828
|
+
"editor.record.form.updateFrequency": "Update frequency",
|
|
17829
|
+
"editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
|
|
17807
17830
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17808
17831
|
"editor.record.loadError.closeMessage": "Understood",
|
|
17809
17832
|
"editor.record.loadError.title": "Error loading record",
|
|
@@ -17874,6 +17897,7 @@ var en = {
|
|
|
17874
17897
|
"multiselect.filter.placeholder": "Search",
|
|
17875
17898
|
"nav.back": "Back",
|
|
17876
17899
|
next: next$5,
|
|
17900
|
+
"ogc.unreachable.unknown": "The service could not be reached",
|
|
17877
17901
|
"organisation.filter.placeholder": "Filter results",
|
|
17878
17902
|
"organisation.sort.sortBy": "Sort by:",
|
|
17879
17903
|
"organisations.hits.found": "{hits, plural, =0{No organizations found} other{{hits} out of {total} organizations shown}}",
|
|
@@ -17938,14 +17962,6 @@ var en = {
|
|
|
17938
17962
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
17939
17963
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17940
17964
|
"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
17965
|
"record.metadata.sheet": "Original metadata",
|
|
17950
17966
|
"record.metadata.status": "Status",
|
|
17951
17967
|
"record.metadata.technical": "Technical information",
|
|
@@ -17960,6 +17976,14 @@ var en = {
|
|
|
17960
17976
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
17961
17977
|
"record.metadata.updatedOn": "Last Data Information Update",
|
|
17962
17978
|
"record.metadata.usage": "License and Conditions",
|
|
17979
|
+
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
17980
|
+
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
17981
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
17982
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
17983
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
17984
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
17985
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
17986
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17963
17987
|
"record.more.details": "Read more",
|
|
17964
17988
|
"record.tab.chart": "Chart",
|
|
17965
17989
|
"record.tab.data": "Table",
|
|
@@ -18019,12 +18043,6 @@ var en = {
|
|
|
18019
18043
|
"table.loading.data": "Loading data...",
|
|
18020
18044
|
"table.object.count": "objects in this dataset",
|
|
18021
18045
|
"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
18046
|
"tooltip.html.copy": "Copy HTML",
|
|
18029
18047
|
"tooltip.id.copy": "Copy unique identifier",
|
|
18030
18048
|
"tooltip.url.copy": "Copy URL",
|
|
@@ -18189,6 +18207,19 @@ var es = {
|
|
|
18189
18207
|
"downloads.format.unknown": "",
|
|
18190
18208
|
"downloads.wfs.featuretype.not.found": "",
|
|
18191
18209
|
dropFile: dropFile$4,
|
|
18210
|
+
"editor.record.form.license": "",
|
|
18211
|
+
"editor.record.form.license.cc-by": "",
|
|
18212
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18213
|
+
"editor.record.form.license.cc-zero": "",
|
|
18214
|
+
"editor.record.form.license.etalab": "",
|
|
18215
|
+
"editor.record.form.license.etalab-v2": "",
|
|
18216
|
+
"editor.record.form.license.odbl": "",
|
|
18217
|
+
"editor.record.form.license.odc-by": "",
|
|
18218
|
+
"editor.record.form.license.pddl": "",
|
|
18219
|
+
"editor.record.form.license.unknown": "",
|
|
18220
|
+
"editor.record.form.resourceUpdated": "",
|
|
18221
|
+
"editor.record.form.updateFrequency": "",
|
|
18222
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
18192
18223
|
"editor.record.loadError.body": "",
|
|
18193
18224
|
"editor.record.loadError.closeMessage": "",
|
|
18194
18225
|
"editor.record.loadError.title": "",
|
|
@@ -18259,6 +18290,7 @@ var es = {
|
|
|
18259
18290
|
"multiselect.filter.placeholder": "",
|
|
18260
18291
|
"nav.back": "",
|
|
18261
18292
|
next: next$4,
|
|
18293
|
+
"ogc.unreachable.unknown": "",
|
|
18262
18294
|
"organisation.filter.placeholder": "",
|
|
18263
18295
|
"organisation.sort.sortBy": "",
|
|
18264
18296
|
"organisations.hits.found": "",
|
|
@@ -18323,14 +18355,6 @@ var es = {
|
|
|
18323
18355
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
18324
18356
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18325
18357
|
"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
18358
|
"record.metadata.sheet": "",
|
|
18335
18359
|
"record.metadata.status": "",
|
|
18336
18360
|
"record.metadata.technical": "",
|
|
@@ -18345,6 +18369,14 @@ var es = {
|
|
|
18345
18369
|
"record.metadata.updateFrequency": "",
|
|
18346
18370
|
"record.metadata.updatedOn": "",
|
|
18347
18371
|
"record.metadata.usage": "",
|
|
18372
|
+
"record.metadata.userFeedbacks": "",
|
|
18373
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18374
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18375
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18376
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18377
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18378
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18379
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18348
18380
|
"record.more.details": "",
|
|
18349
18381
|
"record.tab.chart": "",
|
|
18350
18382
|
"record.tab.data": "",
|
|
@@ -18404,12 +18436,6 @@ var es = {
|
|
|
18404
18436
|
"table.loading.data": "",
|
|
18405
18437
|
"table.object.count": "",
|
|
18406
18438
|
"table.select.data": "",
|
|
18407
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
18408
|
-
"timeSincePipe.minutesAgo": "",
|
|
18409
|
-
"timeSincePipe.hoursAgo": "",
|
|
18410
|
-
"timeSincePipe.daysAgo": "",
|
|
18411
|
-
"timeSincePipe.monthsAgo": "",
|
|
18412
|
-
"timeSincePipe.yearsAgo": "",
|
|
18413
18439
|
"tooltip.html.copy": "",
|
|
18414
18440
|
"tooltip.id.copy": "",
|
|
18415
18441
|
"tooltip.url.copy": "",
|
|
@@ -18574,6 +18600,19 @@ var fr = {
|
|
|
18574
18600
|
"downloads.format.unknown": "inconnu",
|
|
18575
18601
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18576
18602
|
dropFile: dropFile$3,
|
|
18603
|
+
"editor.record.form.license": "Licence",
|
|
18604
|
+
"editor.record.form.license.cc-by": "",
|
|
18605
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18606
|
+
"editor.record.form.license.cc-zero": "",
|
|
18607
|
+
"editor.record.form.license.etalab": "Licence Ouverte (Etalab)",
|
|
18608
|
+
"editor.record.form.license.etalab-v2": "Licence Ouverte v2.0 (Etalab)",
|
|
18609
|
+
"editor.record.form.license.odbl": "",
|
|
18610
|
+
"editor.record.form.license.odc-by": "",
|
|
18611
|
+
"editor.record.form.license.pddl": "",
|
|
18612
|
+
"editor.record.form.license.unknown": "Non-reconnue ou absente",
|
|
18613
|
+
"editor.record.form.resourceUpdated": "Date de dernière révision",
|
|
18614
|
+
"editor.record.form.updateFrequency": "Fréquence de mise à jour",
|
|
18615
|
+
"editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
|
|
18577
18616
|
"editor.record.loadError.body": "",
|
|
18578
18617
|
"editor.record.loadError.closeMessage": "",
|
|
18579
18618
|
"editor.record.loadError.title": "",
|
|
@@ -18644,6 +18683,7 @@ var fr = {
|
|
|
18644
18683
|
"multiselect.filter.placeholder": "Rechercher",
|
|
18645
18684
|
"nav.back": "Retour",
|
|
18646
18685
|
next: next$3,
|
|
18686
|
+
"ogc.unreachable.unknown": "Le service n'est pas accessible",
|
|
18647
18687
|
"organisation.filter.placeholder": "Filtrer les résultats",
|
|
18648
18688
|
"organisation.sort.sortBy": "Trier par :",
|
|
18649
18689
|
"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 +18748,6 @@ var fr = {
|
|
|
18708
18748
|
"record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
|
|
18709
18749
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
18710
18750
|
"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
18751
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
18720
18752
|
"record.metadata.status": "Statut",
|
|
18721
18753
|
"record.metadata.technical": "Informations techniques",
|
|
@@ -18730,6 +18762,14 @@ var fr = {
|
|
|
18730
18762
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
18731
18763
|
"record.metadata.updatedOn": "Dernière mise à jour des informations sur les données",
|
|
18732
18764
|
"record.metadata.usage": "Licences et conditions d'utilisation",
|
|
18765
|
+
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18766
|
+
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18767
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18768
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18769
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18770
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18771
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18772
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18733
18773
|
"record.more.details": "Détails",
|
|
18734
18774
|
"record.tab.chart": "Graphique",
|
|
18735
18775
|
"record.tab.data": "Tableau",
|
|
@@ -18789,12 +18829,6 @@ var fr = {
|
|
|
18789
18829
|
"table.loading.data": "Chargement des données...",
|
|
18790
18830
|
"table.object.count": "enregistrements dans ces données",
|
|
18791
18831
|
"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
18832
|
"tooltip.html.copy": "Copier le HTML",
|
|
18799
18833
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
18800
18834
|
"tooltip.url.copy": "Copier l'URL",
|
|
@@ -18959,6 +18993,19 @@ var it = {
|
|
|
18959
18993
|
"downloads.format.unknown": "sconosciuto",
|
|
18960
18994
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
18961
18995
|
dropFile: dropFile$2,
|
|
18996
|
+
"editor.record.form.license": "Licenza",
|
|
18997
|
+
"editor.record.form.license.cc-by": "",
|
|
18998
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18999
|
+
"editor.record.form.license.cc-zero": "",
|
|
19000
|
+
"editor.record.form.license.etalab": "Licenza aperta (Etalab)",
|
|
19001
|
+
"editor.record.form.license.etalab-v2": "Licenza aperta v2.0 (Etalab)",
|
|
19002
|
+
"editor.record.form.license.odbl": "",
|
|
19003
|
+
"editor.record.form.license.odc-by": "",
|
|
19004
|
+
"editor.record.form.license.pddl": "",
|
|
19005
|
+
"editor.record.form.license.unknown": "Non riconosciuta o assente",
|
|
19006
|
+
"editor.record.form.resourceUpdated": "",
|
|
19007
|
+
"editor.record.form.updateFrequency": "",
|
|
19008
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
18962
19009
|
"editor.record.loadError.body": "",
|
|
18963
19010
|
"editor.record.loadError.closeMessage": "",
|
|
18964
19011
|
"editor.record.loadError.title": "",
|
|
@@ -19029,6 +19076,7 @@ var it = {
|
|
|
19029
19076
|
"multiselect.filter.placeholder": "Cerca",
|
|
19030
19077
|
"nav.back": "Indietro",
|
|
19031
19078
|
next: next$2,
|
|
19079
|
+
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
19032
19080
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
19033
19081
|
"organisation.sort.sortBy": "Ordina per:",
|
|
19034
19082
|
"organisations.hits.found": "{hits, plural, =0{Nessuna organizzazione trovata} one{1 organizzazione su {total} visualizzata} other{{hits} organizzazioni su {total} visualizzate}}",
|
|
@@ -19093,14 +19141,6 @@ var it = {
|
|
|
19093
19141
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
19094
19142
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
19095
19143
|
"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
19144
|
"record.metadata.sheet": "Origine del metadata",
|
|
19105
19145
|
"record.metadata.status": "Stato",
|
|
19106
19146
|
"record.metadata.technical": "Informazioni tecniche",
|
|
@@ -19115,6 +19155,14 @@ var it = {
|
|
|
19115
19155
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
19116
19156
|
"record.metadata.updatedOn": "Ultimo aggiornamento delle informazioni sui dati",
|
|
19117
19157
|
"record.metadata.usage": "Licenze e limiti di utilizzo",
|
|
19158
|
+
"record.metadata.userFeedbacks": "",
|
|
19159
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19160
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19161
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19162
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19163
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19164
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19165
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19118
19166
|
"record.more.details": "Dettagli",
|
|
19119
19167
|
"record.tab.chart": "Grafico",
|
|
19120
19168
|
"record.tab.data": "Tabella",
|
|
@@ -19174,12 +19222,6 @@ var it = {
|
|
|
19174
19222
|
"table.loading.data": "Caricamento dei dati...",
|
|
19175
19223
|
"table.object.count": "record in questi dati",
|
|
19176
19224
|
"table.select.data": "Sorgente dati",
|
|
19177
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19178
|
-
"timeSincePipe.minutesAgo": "",
|
|
19179
|
-
"timeSincePipe.hoursAgo": "",
|
|
19180
|
-
"timeSincePipe.daysAgo": "",
|
|
19181
|
-
"timeSincePipe.monthsAgo": "",
|
|
19182
|
-
"timeSincePipe.yearsAgo": "",
|
|
19183
19225
|
"tooltip.html.copy": "Copiare il HTML",
|
|
19184
19226
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
19185
19227
|
"tooltip.url.copy": "Copiare l'URL",
|
|
@@ -19344,6 +19386,19 @@ var nl = {
|
|
|
19344
19386
|
"downloads.format.unknown": "",
|
|
19345
19387
|
"downloads.wfs.featuretype.not.found": "",
|
|
19346
19388
|
dropFile: dropFile$1,
|
|
19389
|
+
"editor.record.form.license": "",
|
|
19390
|
+
"editor.record.form.license.cc-by": "",
|
|
19391
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19392
|
+
"editor.record.form.license.cc-zero": "",
|
|
19393
|
+
"editor.record.form.license.etalab": "",
|
|
19394
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19395
|
+
"editor.record.form.license.odbl": "",
|
|
19396
|
+
"editor.record.form.license.odc-by": "",
|
|
19397
|
+
"editor.record.form.license.pddl": "",
|
|
19398
|
+
"editor.record.form.license.unknown": "",
|
|
19399
|
+
"editor.record.form.resourceUpdated": "",
|
|
19400
|
+
"editor.record.form.updateFrequency": "",
|
|
19401
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
19347
19402
|
"editor.record.loadError.body": "",
|
|
19348
19403
|
"editor.record.loadError.closeMessage": "",
|
|
19349
19404
|
"editor.record.loadError.title": "",
|
|
@@ -19414,6 +19469,7 @@ var nl = {
|
|
|
19414
19469
|
"multiselect.filter.placeholder": "",
|
|
19415
19470
|
"nav.back": "",
|
|
19416
19471
|
next: next$1,
|
|
19472
|
+
"ogc.unreachable.unknown": "",
|
|
19417
19473
|
"organisation.filter.placeholder": "",
|
|
19418
19474
|
"organisation.sort.sortBy": "",
|
|
19419
19475
|
"organisations.hits.found": "",
|
|
@@ -19478,14 +19534,6 @@ var nl = {
|
|
|
19478
19534
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19479
19535
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19480
19536
|
"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
19537
|
"record.metadata.sheet": "",
|
|
19490
19538
|
"record.metadata.status": "",
|
|
19491
19539
|
"record.metadata.technical": "",
|
|
@@ -19500,6 +19548,14 @@ var nl = {
|
|
|
19500
19548
|
"record.metadata.updateFrequency": "",
|
|
19501
19549
|
"record.metadata.updatedOn": "",
|
|
19502
19550
|
"record.metadata.usage": "",
|
|
19551
|
+
"record.metadata.userFeedbacks": "",
|
|
19552
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19553
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19554
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19555
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19556
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19557
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19558
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19503
19559
|
"record.more.details": "",
|
|
19504
19560
|
"record.tab.chart": "",
|
|
19505
19561
|
"record.tab.data": "",
|
|
@@ -19559,12 +19615,6 @@ var nl = {
|
|
|
19559
19615
|
"table.loading.data": "",
|
|
19560
19616
|
"table.object.count": "",
|
|
19561
19617
|
"table.select.data": "",
|
|
19562
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19563
|
-
"timeSincePipe.minutesAgo": "",
|
|
19564
|
-
"timeSincePipe.hoursAgo": "",
|
|
19565
|
-
"timeSincePipe.daysAgo": "",
|
|
19566
|
-
"timeSincePipe.monthsAgo": "",
|
|
19567
|
-
"timeSincePipe.yearsAgo": "",
|
|
19568
19618
|
"tooltip.html.copy": "",
|
|
19569
19619
|
"tooltip.id.copy": "",
|
|
19570
19620
|
"tooltip.url.copy": "",
|
|
@@ -19729,6 +19779,19 @@ var pt = {
|
|
|
19729
19779
|
"downloads.format.unknown": "",
|
|
19730
19780
|
"downloads.wfs.featuretype.not.found": "",
|
|
19731
19781
|
dropFile: dropFile,
|
|
19782
|
+
"editor.record.form.license": "",
|
|
19783
|
+
"editor.record.form.license.cc-by": "",
|
|
19784
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19785
|
+
"editor.record.form.license.cc-zero": "",
|
|
19786
|
+
"editor.record.form.license.etalab": "",
|
|
19787
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19788
|
+
"editor.record.form.license.odbl": "",
|
|
19789
|
+
"editor.record.form.license.odc-by": "",
|
|
19790
|
+
"editor.record.form.license.pddl": "",
|
|
19791
|
+
"editor.record.form.license.unknown": "",
|
|
19792
|
+
"editor.record.form.resourceUpdated": "",
|
|
19793
|
+
"editor.record.form.updateFrequency": "",
|
|
19794
|
+
"editor.record.form.updateFrequency.planned": "",
|
|
19732
19795
|
"editor.record.loadError.body": "",
|
|
19733
19796
|
"editor.record.loadError.closeMessage": "",
|
|
19734
19797
|
"editor.record.loadError.title": "",
|
|
@@ -19799,6 +19862,7 @@ var pt = {
|
|
|
19799
19862
|
"multiselect.filter.placeholder": "",
|
|
19800
19863
|
"nav.back": "",
|
|
19801
19864
|
next: next,
|
|
19865
|
+
"ogc.unreachable.unknown": "",
|
|
19802
19866
|
"organisation.filter.placeholder": "",
|
|
19803
19867
|
"organisation.sort.sortBy": "",
|
|
19804
19868
|
"organisations.hits.found": "",
|
|
@@ -19863,14 +19927,6 @@ var pt = {
|
|
|
19863
19927
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19864
19928
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19865
19929
|
"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
19930
|
"record.metadata.sheet": "",
|
|
19875
19931
|
"record.metadata.status": "",
|
|
19876
19932
|
"record.metadata.technical": "",
|
|
@@ -19885,6 +19941,14 @@ var pt = {
|
|
|
19885
19941
|
"record.metadata.updateFrequency": "",
|
|
19886
19942
|
"record.metadata.updatedOn": "",
|
|
19887
19943
|
"record.metadata.usage": "",
|
|
19944
|
+
"record.metadata.userFeedbacks": "",
|
|
19945
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19946
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19947
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19948
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19949
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19950
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19951
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19888
19952
|
"record.more.details": "",
|
|
19889
19953
|
"record.tab.chart": "",
|
|
19890
19954
|
"record.tab.data": "",
|
|
@@ -19944,12 +20008,6 @@ var pt = {
|
|
|
19944
20008
|
"table.loading.data": "",
|
|
19945
20009
|
"table.object.count": "",
|
|
19946
20010
|
"table.select.data": "",
|
|
19947
|
-
"timeSincePipe.lessThanAMinute": "",
|
|
19948
|
-
"timeSincePipe.minutesAgo": "",
|
|
19949
|
-
"timeSincePipe.hoursAgo": "",
|
|
19950
|
-
"timeSincePipe.daysAgo": "",
|
|
19951
|
-
"timeSincePipe.monthsAgo": "",
|
|
19952
|
-
"timeSincePipe.yearsAgo": "",
|
|
19953
20011
|
"tooltip.html.copy": "",
|
|
19954
20012
|
"tooltip.id.copy": "",
|
|
19955
20013
|
"tooltip.url.copy": "",
|
|
@@ -21554,15 +21612,17 @@ class Gn4PlatformService {
|
|
|
21554
21612
|
return this.thesauri[uri];
|
|
21555
21613
|
}
|
|
21556
21614
|
getUserFeedbacks(uuid) {
|
|
21557
|
-
return this.userfeedbackApiService
|
|
21558
|
-
.
|
|
21559
|
-
|
|
21615
|
+
return this.userfeedbackApiService.getUserComments(uuid).pipe(map$1((userFeedbacks) => userFeedbacks.map(this.mapper.userFeedbacksFromApi)), catchError((error) => {
|
|
21616
|
+
console.error('Error fetching user feedbacks:', error);
|
|
21617
|
+
return of(undefined);
|
|
21618
|
+
}));
|
|
21560
21619
|
}
|
|
21561
21620
|
postUserFeedbacks(userFeedback) {
|
|
21562
21621
|
const mappedUserFeedBack = this.mapper.userFeedbacksToApi(userFeedback);
|
|
21563
|
-
return this.userfeedbackApiService
|
|
21564
|
-
.
|
|
21565
|
-
|
|
21622
|
+
return this.userfeedbackApiService.newUserFeedback(mappedUserFeedBack).pipe(map$1(() => undefined), catchError((error) => {
|
|
21623
|
+
console.error('Error posting user feedback:', error);
|
|
21624
|
+
return of(undefined);
|
|
21625
|
+
}));
|
|
21566
21626
|
}
|
|
21567
21627
|
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
21628
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
@@ -22296,6 +22356,27 @@ const FORMATS = {
|
|
|
22296
22356
|
color: '#de630b',
|
|
22297
22357
|
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
22298
22358
|
},
|
|
22359
|
+
html: {
|
|
22360
|
+
extensions: ['html', 'htm'],
|
|
22361
|
+
priority: 12,
|
|
22362
|
+
color: '#f2bb3a',
|
|
22363
|
+
mimeTypes: ['text/html'],
|
|
22364
|
+
},
|
|
22365
|
+
fgb: {
|
|
22366
|
+
extensions: ['fgb', 'flatgeobuf'],
|
|
22367
|
+
priority: 13,
|
|
22368
|
+
color: '#f2bb3a',
|
|
22369
|
+
mimeTypes: ['application/flatgeobuf'],
|
|
22370
|
+
},
|
|
22371
|
+
jsonfg: {
|
|
22372
|
+
extensions: ['jsonfg', 'jsonfgc'],
|
|
22373
|
+
priority: 14,
|
|
22374
|
+
color: '#f2bb3a',
|
|
22375
|
+
mimeTypes: [
|
|
22376
|
+
'application/vnd.ogc.fg+json',
|
|
22377
|
+
'application/vnd.ogc.fg+json;compatibility=geojson',
|
|
22378
|
+
],
|
|
22379
|
+
},
|
|
22299
22380
|
};
|
|
22300
22381
|
function getFormatPriority(linkFormat) {
|
|
22301
22382
|
for (const format in FORMATS) {
|
|
@@ -22427,7 +22508,7 @@ class LinkClassifierService {
|
|
|
22427
22508
|
case 'wmts':
|
|
22428
22509
|
return [LinkUsage.API, LinkUsage.MAP_API];
|
|
22429
22510
|
case 'ogcFeatures':
|
|
22430
|
-
return [LinkUsage.API];
|
|
22511
|
+
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
22431
22512
|
default:
|
|
22432
22513
|
return [LinkUsage.UNKNOWN];
|
|
22433
22514
|
}
|
|
@@ -23728,13 +23809,30 @@ class MapContextService {
|
|
|
23728
23809
|
const style = this.styleService.styles.default;
|
|
23729
23810
|
switch (type) {
|
|
23730
23811
|
case MapContextLayerTypeEnum.OGCAPI:
|
|
23731
|
-
|
|
23732
|
-
|
|
23733
|
-
|
|
23734
|
-
|
|
23735
|
-
|
|
23736
|
-
|
|
23737
|
-
|
|
23812
|
+
if (layerModel.layerType === 'vectorTiles') {
|
|
23813
|
+
return new VectorTileLayer({
|
|
23814
|
+
source: new OGCVectorTile({
|
|
23815
|
+
url: layerModel.url,
|
|
23816
|
+
format: new MVT(),
|
|
23817
|
+
}),
|
|
23818
|
+
});
|
|
23819
|
+
}
|
|
23820
|
+
else if (layerModel.layerType === 'mapTiles') {
|
|
23821
|
+
return new TileLayer({
|
|
23822
|
+
source: new OGCMapTile({
|
|
23823
|
+
url: layerModel.url,
|
|
23824
|
+
}),
|
|
23825
|
+
});
|
|
23826
|
+
}
|
|
23827
|
+
else {
|
|
23828
|
+
return new VectorLayer({
|
|
23829
|
+
source: new VectorSource({
|
|
23830
|
+
format: new GeoJSON(),
|
|
23831
|
+
url: layerModel.url,
|
|
23832
|
+
}),
|
|
23833
|
+
style,
|
|
23834
|
+
});
|
|
23835
|
+
}
|
|
23738
23836
|
case MapContextLayerTypeEnum.XYZ:
|
|
23739
23837
|
return new TileLayer({
|
|
23740
23838
|
source: new XYZ({
|
|
@@ -23973,6 +24071,173 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23973
24071
|
type: Input
|
|
23974
24072
|
}] } });
|
|
23975
24073
|
|
|
24074
|
+
class PopupAlertComponent {
|
|
24075
|
+
constructor(changeDetector) {
|
|
24076
|
+
this.changeDetector = changeDetector;
|
|
24077
|
+
this.type = 'info';
|
|
24078
|
+
this.position = 'top';
|
|
24079
|
+
this.expanded = false;
|
|
24080
|
+
this.timeout = null;
|
|
24081
|
+
}
|
|
24082
|
+
get showDuration() {
|
|
24083
|
+
const chars = this.content.nativeElement.innerHTML.length;
|
|
24084
|
+
return Math.max(3000, chars * 20);
|
|
24085
|
+
}
|
|
24086
|
+
ngOnInit() {
|
|
24087
|
+
this.expandAndClose();
|
|
24088
|
+
}
|
|
24089
|
+
expand() {
|
|
24090
|
+
this.expanded = true;
|
|
24091
|
+
this.changeDetector.detectChanges();
|
|
24092
|
+
clearTimeout(this.timeout);
|
|
24093
|
+
}
|
|
24094
|
+
expandAndClose() {
|
|
24095
|
+
this.expanded = true;
|
|
24096
|
+
this.changeDetector.detectChanges();
|
|
24097
|
+
clearTimeout(this.timeout);
|
|
24098
|
+
this.timeout = setTimeout(() => {
|
|
24099
|
+
this.expanded = false;
|
|
24100
|
+
this.changeDetector.detectChanges();
|
|
24101
|
+
}, this.showDuration);
|
|
24102
|
+
}
|
|
24103
|
+
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 }); }
|
|
24104
|
+
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 }); }
|
|
24105
|
+
}
|
|
24106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, decorators: [{
|
|
24107
|
+
type: Component,
|
|
24108
|
+
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"] }]
|
|
24109
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
|
|
24110
|
+
type: Input
|
|
24111
|
+
}], type: [{
|
|
24112
|
+
type: Input
|
|
24113
|
+
}], position: [{
|
|
24114
|
+
type: Input
|
|
24115
|
+
}], content: [{
|
|
24116
|
+
type: ViewChild,
|
|
24117
|
+
args: ['content']
|
|
24118
|
+
}] } });
|
|
24119
|
+
|
|
24120
|
+
class AutocompleteComponent {
|
|
24121
|
+
constructor(cdRef) {
|
|
24122
|
+
this.cdRef = cdRef;
|
|
24123
|
+
this.clearOnSelection = false;
|
|
24124
|
+
this.autoFocus = false;
|
|
24125
|
+
this.itemSelected = new EventEmitter();
|
|
24126
|
+
this.inputSubmitted = new EventEmitter();
|
|
24127
|
+
this.inputCleared = new EventEmitter();
|
|
24128
|
+
this.control = new UntypedFormControl();
|
|
24129
|
+
this.subscription = new Subscription();
|
|
24130
|
+
this.cancelEnter = true;
|
|
24131
|
+
this.selectionSubject = new ReplaySubject(1);
|
|
24132
|
+
this.lastInputValue$ = new ReplaySubject(1);
|
|
24133
|
+
this.error = null;
|
|
24134
|
+
this.displayWithFn = (item) => item;
|
|
24135
|
+
}
|
|
24136
|
+
ngOnChanges(changes) {
|
|
24137
|
+
const { value } = changes;
|
|
24138
|
+
if (value) {
|
|
24139
|
+
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24140
|
+
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24141
|
+
if (previousTextValue !== currentTextValue) {
|
|
24142
|
+
this.updateInputValue(value.currentValue);
|
|
24143
|
+
}
|
|
24144
|
+
}
|
|
24145
|
+
}
|
|
24146
|
+
ngOnInit() {
|
|
24147
|
+
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) => {
|
|
24148
|
+
this.error = error.message;
|
|
24149
|
+
return of([]);
|
|
24150
|
+
}), finalize(() => (this.searching = false)));
|
|
24151
|
+
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24152
|
+
if (any !== '') {
|
|
24153
|
+
this.cancelEnter = false;
|
|
24154
|
+
}
|
|
24155
|
+
});
|
|
24156
|
+
this.control.valueChanges
|
|
24157
|
+
.pipe(filter((value) => typeof value === 'string'))
|
|
24158
|
+
.subscribe(this.lastInputValue$);
|
|
24159
|
+
}
|
|
24160
|
+
ngAfterViewInit() {
|
|
24161
|
+
this.autocomplete.optionSelected.subscribe(this.selectionSubject);
|
|
24162
|
+
if (this.autoFocus) {
|
|
24163
|
+
this.inputRef.nativeElement.focus();
|
|
24164
|
+
this.cdRef.detectChanges();
|
|
24165
|
+
}
|
|
24166
|
+
}
|
|
24167
|
+
ngOnDestroy() {
|
|
24168
|
+
this.subscription.unsubscribe();
|
|
24169
|
+
}
|
|
24170
|
+
updateInputValue(value) {
|
|
24171
|
+
if (value) {
|
|
24172
|
+
this.control.setValue(value);
|
|
24173
|
+
}
|
|
24174
|
+
if (this.inputRef) {
|
|
24175
|
+
this.inputRef.nativeElement.value = value?.title || '';
|
|
24176
|
+
}
|
|
24177
|
+
}
|
|
24178
|
+
clear() {
|
|
24179
|
+
this.inputRef.nativeElement.value = '';
|
|
24180
|
+
this.inputCleared.emit();
|
|
24181
|
+
this.selectionSubject
|
|
24182
|
+
.pipe(take(1))
|
|
24183
|
+
.subscribe((selection) => selection && selection.option.deselect());
|
|
24184
|
+
this.inputRef.nativeElement.focus();
|
|
24185
|
+
this.triggerRef.closePanel();
|
|
24186
|
+
}
|
|
24187
|
+
handleEnter(any) {
|
|
24188
|
+
if (!this.cancelEnter) {
|
|
24189
|
+
this.inputSubmitted.emit(any);
|
|
24190
|
+
this.triggerRef.closePanel();
|
|
24191
|
+
}
|
|
24192
|
+
}
|
|
24193
|
+
handleClickSearch() {
|
|
24194
|
+
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24195
|
+
this.triggerRef.closePanel();
|
|
24196
|
+
}
|
|
24197
|
+
handleSelection(event) {
|
|
24198
|
+
this.cancelEnter = true;
|
|
24199
|
+
this.itemSelected.emit(event.option.value);
|
|
24200
|
+
if (this.clearOnSelection) {
|
|
24201
|
+
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24202
|
+
this.inputRef.nativeElement.value = any;
|
|
24203
|
+
});
|
|
24204
|
+
}
|
|
24205
|
+
}
|
|
24206
|
+
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 }); }
|
|
24207
|
+
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 }); }
|
|
24208
|
+
}
|
|
24209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
24210
|
+
type: Component,
|
|
24211
|
+
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"] }]
|
|
24212
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
24213
|
+
type: Input
|
|
24214
|
+
}], action: [{
|
|
24215
|
+
type: Input
|
|
24216
|
+
}], value: [{
|
|
24217
|
+
type: Input
|
|
24218
|
+
}], clearOnSelection: [{
|
|
24219
|
+
type: Input
|
|
24220
|
+
}], autoFocus: [{
|
|
24221
|
+
type: Input
|
|
24222
|
+
}], itemSelected: [{
|
|
24223
|
+
type: Output
|
|
24224
|
+
}], inputSubmitted: [{
|
|
24225
|
+
type: Output
|
|
24226
|
+
}], inputCleared: [{
|
|
24227
|
+
type: Output
|
|
24228
|
+
}], triggerRef: [{
|
|
24229
|
+
type: ViewChild,
|
|
24230
|
+
args: [MatAutocompleteTrigger]
|
|
24231
|
+
}], autocomplete: [{
|
|
24232
|
+
type: ViewChild,
|
|
24233
|
+
args: [MatAutocomplete]
|
|
24234
|
+
}], inputRef: [{
|
|
24235
|
+
type: ViewChild,
|
|
24236
|
+
args: ['searchInput']
|
|
24237
|
+
}], displayWithFn: [{
|
|
24238
|
+
type: Input
|
|
24239
|
+
}] } });
|
|
24240
|
+
|
|
23976
24241
|
class ButtonComponent {
|
|
23977
24242
|
constructor() {
|
|
23978
24243
|
this.btnClass = 'gn-ui-btn-default';
|
|
@@ -24024,171 +24289,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24024
24289
|
type: Output
|
|
24025
24290
|
}] } });
|
|
24026
24291
|
|
|
24027
|
-
|
|
24028
|
-
class DropdownSelectorComponent {
|
|
24292
|
+
class CheckToggleComponent {
|
|
24029
24293
|
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;
|
|
24294
|
+
this.color = 'primary';
|
|
24295
|
+
this.toggled = new EventEmitter();
|
|
24073
24296
|
}
|
|
24074
|
-
|
|
24075
|
-
this.
|
|
24076
|
-
this.selected = choice.value;
|
|
24077
|
-
this.selectValue.emit(this.selected);
|
|
24297
|
+
toggle(event) {
|
|
24298
|
+
this.toggled.emit(event);
|
|
24078
24299
|
}
|
|
24079
|
-
|
|
24080
|
-
|
|
24081
|
-
|
|
24082
|
-
|
|
24083
|
-
|
|
24084
|
-
|
|
24085
|
-
|
|
24086
|
-
|
|
24087
|
-
|
|
24088
|
-
|
|
24089
|
-
|
|
24090
|
-
|
|
24300
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24301
|
+
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 }); }
|
|
24302
|
+
}
|
|
24303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
24304
|
+
type: Component,
|
|
24305
|
+
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" }]
|
|
24306
|
+
}], propDecorators: { title: [{
|
|
24307
|
+
type: Input
|
|
24308
|
+
}], label: [{
|
|
24309
|
+
type: Input
|
|
24310
|
+
}], value: [{
|
|
24311
|
+
type: Input
|
|
24312
|
+
}], color: [{
|
|
24313
|
+
type: Input
|
|
24314
|
+
}], toggled: [{
|
|
24315
|
+
type: Output
|
|
24316
|
+
}] } });
|
|
24317
|
+
|
|
24318
|
+
class CheckboxComponent {
|
|
24319
|
+
constructor() {
|
|
24320
|
+
this.type = 'default';
|
|
24321
|
+
this.checked = false;
|
|
24322
|
+
this.indeterminate = false;
|
|
24323
|
+
this.changed = new EventEmitter();
|
|
24091
24324
|
}
|
|
24092
|
-
|
|
24093
|
-
this.
|
|
24325
|
+
get classList() {
|
|
24326
|
+
return `${this.type}`;
|
|
24094
24327
|
}
|
|
24095
|
-
|
|
24096
|
-
|
|
24328
|
+
handleClick(event) {
|
|
24329
|
+
event.stopPropagation();
|
|
24330
|
+
this.checked = !this.checked;
|
|
24331
|
+
this.changed.emit(this.checked);
|
|
24097
24332
|
}
|
|
24098
|
-
|
|
24099
|
-
|
|
24333
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24334
|
+
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 }); }
|
|
24335
|
+
}
|
|
24336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
24337
|
+
type: Component,
|
|
24338
|
+
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"] }]
|
|
24339
|
+
}], propDecorators: { type: [{
|
|
24340
|
+
type: Input
|
|
24341
|
+
}], checked: [{
|
|
24342
|
+
type: Input
|
|
24343
|
+
}], indeterminate: [{
|
|
24344
|
+
type: Input
|
|
24345
|
+
}], changed: [{
|
|
24346
|
+
type: Output
|
|
24347
|
+
}] } });
|
|
24348
|
+
|
|
24349
|
+
class ChipsInputComponent {
|
|
24350
|
+
onChange(event) {
|
|
24351
|
+
this.rawChange.next(event);
|
|
24100
24352
|
}
|
|
24101
|
-
|
|
24102
|
-
|
|
24103
|
-
|
|
24104
|
-
|
|
24105
|
-
|
|
24106
|
-
|
|
24107
|
-
|
|
24108
|
-
|
|
24109
|
-
|
|
24110
|
-
|
|
24111
|
-
|
|
24112
|
-
|
|
24113
|
-
|
|
24353
|
+
constructor(http, translate) {
|
|
24354
|
+
this.http = http;
|
|
24355
|
+
this.translate = translate;
|
|
24356
|
+
this.required = false;
|
|
24357
|
+
this.loadOnce = false;
|
|
24358
|
+
this.autocompleteItems = [];
|
|
24359
|
+
this.invalid = false;
|
|
24360
|
+
this.items = [];
|
|
24361
|
+
this.requestAutocompleteItems = (text) => {
|
|
24362
|
+
if (this.url) {
|
|
24363
|
+
if (this.loadOnce && this.loadedItems) {
|
|
24364
|
+
return this.loadedItems;
|
|
24365
|
+
}
|
|
24366
|
+
const url = this.url(text);
|
|
24367
|
+
const lang = LANG_2_TO_3_MAPPER[this.translate.currentLang.slice(0, 2)];
|
|
24368
|
+
return this.http
|
|
24369
|
+
.get(url.replace('${lang}', lang))
|
|
24370
|
+
.pipe(map$1((item) => item.map((i) => i.values[lang])));
|
|
24114
24371
|
}
|
|
24115
|
-
|
|
24116
|
-
this.
|
|
24117
|
-
|
|
24118
|
-
|
|
24119
|
-
|
|
24120
|
-
|
|
24121
|
-
|
|
24122
|
-
this.closeOverlay();
|
|
24123
|
-
}
|
|
24372
|
+
else {
|
|
24373
|
+
return of(this.autocompleteItems || []);
|
|
24374
|
+
}
|
|
24375
|
+
};
|
|
24376
|
+
this.rawChange = new Subject();
|
|
24377
|
+
this.itemsChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24378
|
+
this.subscription = new Subscription();
|
|
24124
24379
|
}
|
|
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();
|
|
24380
|
+
ngOnInit() {
|
|
24381
|
+
if (this.loadOnce) {
|
|
24382
|
+
this.loadedItems = this.requestAutocompleteItems('*').pipe(shareReplay(1));
|
|
24139
24383
|
}
|
|
24384
|
+
this.items = this.selectedItems;
|
|
24385
|
+
this.subscription = this.rawChange
|
|
24386
|
+
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24387
|
+
.subscribe();
|
|
24388
|
+
this.rawChange.next(this.items);
|
|
24140
24389
|
}
|
|
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();
|
|
24390
|
+
ngOnDestroy() {
|
|
24391
|
+
this.subscription.unsubscribe();
|
|
24149
24392
|
}
|
|
24150
|
-
|
|
24151
|
-
|
|
24393
|
+
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 }); }
|
|
24394
|
+
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"] }] }); }
|
|
24395
|
+
}
|
|
24396
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, decorators: [{
|
|
24397
|
+
type: Component,
|
|
24398
|
+
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"] }]
|
|
24399
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1$1.TranslateService }]; }, propDecorators: { url: [{
|
|
24400
|
+
type: Input
|
|
24401
|
+
}], placeholder: [{
|
|
24402
|
+
type: Input
|
|
24403
|
+
}], selectedItems: [{
|
|
24404
|
+
type: Input
|
|
24405
|
+
}], required: [{
|
|
24406
|
+
type: Input
|
|
24407
|
+
}], loadOnce: [{
|
|
24408
|
+
type: Input
|
|
24409
|
+
}], autocompleteItems: [{
|
|
24410
|
+
type: Input
|
|
24411
|
+
}], itemsChange: [{
|
|
24412
|
+
type: Output
|
|
24413
|
+
}] } });
|
|
24414
|
+
|
|
24415
|
+
class CopyTextButtonComponent {
|
|
24416
|
+
constructor() {
|
|
24417
|
+
this.displayText = true;
|
|
24418
|
+
this.rows = 1;
|
|
24152
24419
|
}
|
|
24153
|
-
|
|
24154
|
-
|
|
24155
|
-
|
|
24156
|
-
this.onSelectValue(choice);
|
|
24157
|
-
}
|
|
24420
|
+
copyText(event) {
|
|
24421
|
+
navigator.clipboard.writeText(this.text);
|
|
24422
|
+
event.target.blur();
|
|
24158
24423
|
}
|
|
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:
|
|
24424
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24425
|
+
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
24426
|
}
|
|
24162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24427
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
24163
24428
|
type: Component,
|
|
24164
|
-
args: [{ selector: 'gn-ui-
|
|
24165
|
-
}], propDecorators: {
|
|
24166
|
-
type: Input
|
|
24167
|
-
}], showTitle: [{
|
|
24429
|
+
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" }]
|
|
24430
|
+
}], propDecorators: { text: [{
|
|
24168
24431
|
type: Input
|
|
24169
|
-
}],
|
|
24432
|
+
}], tooltipText: [{
|
|
24170
24433
|
type: Input
|
|
24171
|
-
}],
|
|
24434
|
+
}], displayText: [{
|
|
24172
24435
|
type: Input
|
|
24173
|
-
}],
|
|
24436
|
+
}], rows: [{
|
|
24174
24437
|
type: Input
|
|
24175
|
-
}]
|
|
24438
|
+
}] } });
|
|
24439
|
+
|
|
24440
|
+
class DatePickerComponent {
|
|
24441
|
+
constructor() {
|
|
24442
|
+
this.dateChange = new EventEmitter();
|
|
24443
|
+
}
|
|
24444
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24445
|
+
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"] }] }); }
|
|
24446
|
+
}
|
|
24447
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
24448
|
+
type: Component,
|
|
24449
|
+
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"] }]
|
|
24450
|
+
}], propDecorators: { date: [{
|
|
24176
24451
|
type: Input
|
|
24177
|
-
}],
|
|
24452
|
+
}], dateChange: [{
|
|
24453
|
+
type: Output
|
|
24454
|
+
}] } });
|
|
24455
|
+
|
|
24456
|
+
class DateRangePickerComponent {
|
|
24457
|
+
startDateSelected(event) {
|
|
24458
|
+
this.startDate = event.value;
|
|
24459
|
+
}
|
|
24460
|
+
endDateSelected(event) {
|
|
24461
|
+
this.endDate = event.value;
|
|
24462
|
+
}
|
|
24463
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24464
|
+
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"] }] }); }
|
|
24465
|
+
}
|
|
24466
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
24467
|
+
type: Component,
|
|
24468
|
+
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"] }]
|
|
24469
|
+
}] });
|
|
24470
|
+
|
|
24471
|
+
const placeholder = 'dropFile';
|
|
24472
|
+
marker('dropFile');
|
|
24473
|
+
class DragAndDropFileInputComponent {
|
|
24474
|
+
constructor() {
|
|
24475
|
+
this.placeholder = placeholder;
|
|
24476
|
+
this.accept = '*';
|
|
24477
|
+
this.fileChange = new EventEmitter();
|
|
24478
|
+
this.selectedFile = null;
|
|
24479
|
+
}
|
|
24480
|
+
get fileName() {
|
|
24481
|
+
return this.selectedFile && this.selectedFile.name;
|
|
24482
|
+
}
|
|
24483
|
+
selectFile(event) {
|
|
24484
|
+
this.selectedFile = event.addedFiles[0];
|
|
24485
|
+
this.fileChange.emit(this.selectedFile);
|
|
24486
|
+
}
|
|
24487
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24488
|
+
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"] }] }); }
|
|
24489
|
+
}
|
|
24490
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
24491
|
+
type: Component,
|
|
24492
|
+
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"] }]
|
|
24493
|
+
}], propDecorators: { placeholder: [{
|
|
24178
24494
|
type: Input
|
|
24179
|
-
}],
|
|
24495
|
+
}], accept: [{
|
|
24180
24496
|
type: Input
|
|
24181
|
-
}],
|
|
24497
|
+
}], fileChange: [{
|
|
24182
24498
|
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
24499
|
}] } });
|
|
24193
24500
|
|
|
24194
24501
|
class DropdownMultiselectComponent {
|
|
@@ -24336,13 +24643,13 @@ class DropdownMultiselectComponent {
|
|
|
24336
24643
|
propagateToDocumentOnly(event);
|
|
24337
24644
|
this.setFocus();
|
|
24338
24645
|
}
|
|
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$
|
|
24646
|
+
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 }); }
|
|
24647
|
+
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
24648
|
}
|
|
24342
24649
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24343
24650
|
type: Component,
|
|
24344
24651
|
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$
|
|
24652
|
+
}], ctorParameters: function () { return [{ type: i1$5.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24346
24653
|
type: Input
|
|
24347
24654
|
}], choices: [{
|
|
24348
24655
|
type: Input
|
|
@@ -24373,123 +24680,300 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24373
24680
|
args: ['checkBox', { read: ElementRef }]
|
|
24374
24681
|
}] } });
|
|
24375
24682
|
|
|
24376
|
-
|
|
24683
|
+
const DEFAULT_ROW_NUMBERS = 6;
|
|
24684
|
+
class DropdownSelectorComponent {
|
|
24377
24685
|
constructor() {
|
|
24378
|
-
this.
|
|
24379
|
-
|
|
24380
|
-
|
|
24381
|
-
|
|
24382
|
-
|
|
24383
|
-
|
|
24384
|
-
|
|
24385
|
-
|
|
24386
|
-
|
|
24387
|
-
|
|
24388
|
-
|
|
24389
|
-
|
|
24390
|
-
|
|
24391
|
-
|
|
24392
|
-
|
|
24686
|
+
this.showTitle = true;
|
|
24687
|
+
this.extraBtnClass = '';
|
|
24688
|
+
this.minWidth = '';
|
|
24689
|
+
this.selectValue = new EventEmitter();
|
|
24690
|
+
this.overlayOpen = false;
|
|
24691
|
+
this.overlayWidth = 'auto';
|
|
24692
|
+
this.overlayMaxHeight = 'none';
|
|
24693
|
+
this.overlayPositions = [
|
|
24694
|
+
{
|
|
24695
|
+
originX: 'start',
|
|
24696
|
+
originY: 'bottom',
|
|
24697
|
+
overlayX: 'start',
|
|
24698
|
+
overlayY: 'top',
|
|
24699
|
+
offsetY: 8,
|
|
24700
|
+
},
|
|
24701
|
+
{
|
|
24702
|
+
originX: 'start',
|
|
24703
|
+
originY: 'top',
|
|
24704
|
+
overlayX: 'start',
|
|
24705
|
+
overlayY: 'bottom',
|
|
24706
|
+
offsetY: -8,
|
|
24707
|
+
},
|
|
24708
|
+
];
|
|
24393
24709
|
}
|
|
24394
|
-
get
|
|
24395
|
-
return
|
|
24710
|
+
get selectedChoice() {
|
|
24711
|
+
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
24712
|
+
this.choices[0]);
|
|
24396
24713
|
}
|
|
24397
|
-
|
|
24398
|
-
this.
|
|
24714
|
+
get id() {
|
|
24715
|
+
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
24399
24716
|
}
|
|
24400
|
-
|
|
24401
|
-
|
|
24717
|
+
getChoiceLabel() {
|
|
24718
|
+
return this.selectedChoice?.label;
|
|
24402
24719
|
}
|
|
24403
|
-
|
|
24404
|
-
|
|
24405
|
-
|
|
24406
|
-
this.
|
|
24720
|
+
ngOnInit() {
|
|
24721
|
+
if (!this.maxRows)
|
|
24722
|
+
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
24723
|
+
if (!this.choices || this.choices.length === 0) {
|
|
24724
|
+
this.choices = [];
|
|
24725
|
+
}
|
|
24407
24726
|
}
|
|
24408
|
-
|
|
24409
|
-
|
|
24727
|
+
isSelected(choice) {
|
|
24728
|
+
return choice === this.selectedChoice;
|
|
24729
|
+
}
|
|
24730
|
+
onSelectValue(choice) {
|
|
24731
|
+
this.closeOverlay();
|
|
24732
|
+
this.selected = choice.value;
|
|
24733
|
+
this.selectValue.emit(this.selected);
|
|
24734
|
+
}
|
|
24735
|
+
openOverlay() {
|
|
24736
|
+
this.overlayWidth =
|
|
24737
|
+
this.overlayOrigin.elementRef.nativeElement.getBoundingClientRect()
|
|
24738
|
+
.width + 'px';
|
|
24739
|
+
this.overlayMaxHeight = this.maxRows
|
|
24740
|
+
? `${this.maxRows * 29 + 60}px`
|
|
24741
|
+
: 'none';
|
|
24742
|
+
this.overlayOpen = true;
|
|
24743
|
+
return Promise.all([
|
|
24744
|
+
firstValueFrom(this.overlay.attach),
|
|
24745
|
+
firstValueFrom(this.choiceInputs.changes),
|
|
24746
|
+
]);
|
|
24747
|
+
}
|
|
24748
|
+
closeOverlay() {
|
|
24749
|
+
this.overlayOpen = false;
|
|
24750
|
+
}
|
|
24751
|
+
focusFirstItem() {
|
|
24752
|
+
this.choiceInputs.get(0).nativeElement.focus();
|
|
24753
|
+
}
|
|
24754
|
+
focusLastItem() {
|
|
24755
|
+
this.choiceInputs.get(this.choiceInputs.length - 1).nativeElement.focus();
|
|
24756
|
+
}
|
|
24757
|
+
async handleTriggerKeydown(event) {
|
|
24758
|
+
const keyCode = event.code;
|
|
24759
|
+
const isOpenKey = keyCode === 'ArrowDown' ||
|
|
24760
|
+
keyCode === 'ArrowUp' ||
|
|
24761
|
+
keyCode === 'ArrowLeft' ||
|
|
24762
|
+
keyCode === 'ArrowRight' ||
|
|
24763
|
+
keyCode === 'Enter' ||
|
|
24764
|
+
keyCode === 'Space';
|
|
24765
|
+
const isCloseKey = keyCode === 'Escape';
|
|
24766
|
+
if (isOpenKey) {
|
|
24767
|
+
event.preventDefault();
|
|
24768
|
+
if (!this.overlayOpen) {
|
|
24769
|
+
await this.openOverlay();
|
|
24770
|
+
}
|
|
24771
|
+
if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp')
|
|
24772
|
+
this.focusLastItem();
|
|
24773
|
+
else
|
|
24774
|
+
this.focusFirstItem();
|
|
24775
|
+
}
|
|
24776
|
+
else if (this.overlayOpen && isCloseKey) {
|
|
24777
|
+
event.preventDefault();
|
|
24778
|
+
this.closeOverlay();
|
|
24779
|
+
}
|
|
24780
|
+
}
|
|
24781
|
+
handleOverlayKeydown(event) {
|
|
24782
|
+
if (!this.overlayOpen)
|
|
24783
|
+
return;
|
|
24784
|
+
const keyCode = event.code;
|
|
24785
|
+
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
24786
|
+
event.preventDefault();
|
|
24787
|
+
this.shiftItemFocus(1);
|
|
24788
|
+
}
|
|
24789
|
+
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
24790
|
+
event.preventDefault();
|
|
24791
|
+
this.shiftItemFocus(-1);
|
|
24792
|
+
}
|
|
24793
|
+
else if (keyCode === 'Escape') {
|
|
24794
|
+
this.closeOverlay();
|
|
24795
|
+
}
|
|
24796
|
+
}
|
|
24797
|
+
shiftItemFocus(shift) {
|
|
24798
|
+
const index = this.focusedIndex;
|
|
24799
|
+
if (index === -1)
|
|
24800
|
+
return;
|
|
24801
|
+
const max = this.choiceInputs.length;
|
|
24802
|
+
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
24803
|
+
const newIndex = (((index + shift) % max) + max) % max;
|
|
24804
|
+
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24805
|
+
}
|
|
24806
|
+
get focusedIndex() {
|
|
24807
|
+
return this.choiceInputs.reduce((prev, curr, curIndex) => curr.nativeElement === document.activeElement ? curIndex : prev, -1);
|
|
24808
|
+
}
|
|
24809
|
+
selectIfEnter(event, choice) {
|
|
24810
|
+
if (event.code === 'Enter') {
|
|
24811
|
+
event.preventDefault();
|
|
24812
|
+
this.onSelectValue(choice);
|
|
24813
|
+
}
|
|
24814
|
+
}
|
|
24815
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24816
|
+
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
24817
|
}
|
|
24411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24818
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24412
24819
|
type: Component,
|
|
24413
|
-
args: [{ selector: 'gn-ui-
|
|
24414
|
-
|
|
24820
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
24821
|
+
CommonModule,
|
|
24822
|
+
ButtonComponent,
|
|
24823
|
+
OverlayModule,
|
|
24824
|
+
MatIconModule,
|
|
24825
|
+
TranslateModule,
|
|
24826
|
+
], 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" }]
|
|
24827
|
+
}], propDecorators: { title: [{
|
|
24415
24828
|
type: Input
|
|
24416
|
-
}],
|
|
24829
|
+
}], showTitle: [{
|
|
24417
24830
|
type: Input
|
|
24418
|
-
}],
|
|
24831
|
+
}], ariaName: [{
|
|
24419
24832
|
type: Input
|
|
24420
|
-
}],
|
|
24833
|
+
}], choices: [{
|
|
24421
24834
|
type: Input
|
|
24422
|
-
}],
|
|
24835
|
+
}], selected: [{
|
|
24836
|
+
type: Input
|
|
24837
|
+
}], maxRows: [{
|
|
24838
|
+
type: Input
|
|
24839
|
+
}], extraBtnClass: [{
|
|
24840
|
+
type: Input
|
|
24841
|
+
}], minWidth: [{
|
|
24842
|
+
type: Input
|
|
24843
|
+
}], disabled: [{
|
|
24844
|
+
type: Input
|
|
24845
|
+
}], selectValue: [{
|
|
24423
24846
|
type: Output
|
|
24424
|
-
}],
|
|
24847
|
+
}], overlayOrigin: [{
|
|
24425
24848
|
type: ViewChild,
|
|
24426
|
-
args: ['
|
|
24849
|
+
args: ['overlayOrigin']
|
|
24850
|
+
}], overlay: [{
|
|
24851
|
+
type: ViewChild,
|
|
24852
|
+
args: [CdkConnectedOverlay]
|
|
24853
|
+
}], choiceInputs: [{
|
|
24854
|
+
type: ViewChildren,
|
|
24855
|
+
args: ['choiceInputs', { read: ElementRef }]
|
|
24427
24856
|
}] } });
|
|
24428
24857
|
|
|
24429
|
-
class
|
|
24430
|
-
|
|
24431
|
-
this.
|
|
24858
|
+
class EditableLabelDirective {
|
|
24859
|
+
constructor(el, renderer) {
|
|
24860
|
+
this.el = el;
|
|
24861
|
+
this.renderer = renderer;
|
|
24862
|
+
this.editableLabelChanged = new EventEmitter();
|
|
24432
24863
|
}
|
|
24433
|
-
|
|
24434
|
-
this.
|
|
24435
|
-
|
|
24436
|
-
|
|
24437
|
-
|
|
24438
|
-
|
|
24439
|
-
|
|
24440
|
-
|
|
24441
|
-
|
|
24442
|
-
|
|
24443
|
-
|
|
24444
|
-
|
|
24445
|
-
|
|
24446
|
-
|
|
24447
|
-
|
|
24448
|
-
|
|
24449
|
-
|
|
24450
|
-
|
|
24451
|
-
|
|
24452
|
-
|
|
24453
|
-
|
|
24454
|
-
|
|
24455
|
-
|
|
24864
|
+
ngAfterViewInit() {
|
|
24865
|
+
if (this.gnUiEditableLabel !== false) {
|
|
24866
|
+
const appendedInput = this.renderer.createElement('input');
|
|
24867
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
24868
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
24869
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
24870
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
24871
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
24872
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
24873
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
24874
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
24875
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
24876
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
24877
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
24878
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
24879
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
24880
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
24881
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
24882
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
24883
|
+
});
|
|
24884
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
24885
|
+
}
|
|
24886
|
+
}
|
|
24887
|
+
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 }); }
|
|
24888
|
+
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 }); }
|
|
24889
|
+
}
|
|
24890
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
24891
|
+
type: Directive,
|
|
24892
|
+
args: [{
|
|
24893
|
+
selector: '[gnUiEditableLabel]',
|
|
24894
|
+
standalone: true,
|
|
24895
|
+
}]
|
|
24896
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
24897
|
+
type: Output
|
|
24898
|
+
}], gnUiEditableLabel: [{
|
|
24899
|
+
type: Input
|
|
24900
|
+
}] } });
|
|
24901
|
+
|
|
24902
|
+
class NavigationButtonComponent {
|
|
24903
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24904
|
+
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 }); }
|
|
24905
|
+
}
|
|
24906
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24907
|
+
type: Component,
|
|
24908
|
+
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"] }]
|
|
24909
|
+
}], propDecorators: { label: [{
|
|
24910
|
+
type: Input
|
|
24911
|
+
}], icon: [{
|
|
24912
|
+
type: Input
|
|
24913
|
+
}] } });
|
|
24914
|
+
|
|
24915
|
+
class SearchInputComponent {
|
|
24916
|
+
constructor() {
|
|
24917
|
+
this.value = '';
|
|
24918
|
+
this.placeholder = '';
|
|
24456
24919
|
this.rawChange = new Subject();
|
|
24457
|
-
this.
|
|
24458
|
-
this.subscription = new Subscription();
|
|
24920
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
24459
24921
|
}
|
|
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);
|
|
24922
|
+
handleChange($event) {
|
|
24923
|
+
const value = $event.target.value;
|
|
24924
|
+
this.rawChange.next(value);
|
|
24469
24925
|
}
|
|
24470
|
-
|
|
24471
|
-
this.
|
|
24926
|
+
clear() {
|
|
24927
|
+
this.value = null;
|
|
24928
|
+
this.rawChange.next(null);
|
|
24472
24929
|
}
|
|
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:
|
|
24930
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24931
|
+
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
24932
|
}
|
|
24476
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
24477
24934
|
type: Component,
|
|
24478
|
-
args: [{ selector: 'gn-ui-
|
|
24479
|
-
}],
|
|
24935
|
+
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" }]
|
|
24936
|
+
}], propDecorators: { value: [{
|
|
24480
24937
|
type: Input
|
|
24481
24938
|
}], placeholder: [{
|
|
24482
24939
|
type: Input
|
|
24483
|
-
}],
|
|
24484
|
-
type:
|
|
24485
|
-
}]
|
|
24486
|
-
|
|
24487
|
-
|
|
24940
|
+
}], valueChange: [{
|
|
24941
|
+
type: Output
|
|
24942
|
+
}] } });
|
|
24943
|
+
|
|
24944
|
+
class StarToggleComponent {
|
|
24945
|
+
constructor() {
|
|
24946
|
+
this.disabled = false;
|
|
24947
|
+
this.newValue = new EventEmitter();
|
|
24948
|
+
}
|
|
24949
|
+
toggle(event) {
|
|
24950
|
+
if (!this.disabled) {
|
|
24951
|
+
this.toggled = !this.toggled;
|
|
24952
|
+
if (this.toggled) {
|
|
24953
|
+
const anim = this.overlay.nativeElement.getAnimations()[0];
|
|
24954
|
+
anim.cancel();
|
|
24955
|
+
anim.play();
|
|
24956
|
+
}
|
|
24957
|
+
this.newValue.emit(this.toggled);
|
|
24958
|
+
}
|
|
24959
|
+
propagateToDocumentOnly(event);
|
|
24960
|
+
event.preventDefault();
|
|
24961
|
+
}
|
|
24962
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24963
|
+
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 }); }
|
|
24964
|
+
}
|
|
24965
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
24966
|
+
type: Component,
|
|
24967
|
+
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"] }]
|
|
24968
|
+
}], propDecorators: { toggled: [{
|
|
24488
24969
|
type: Input
|
|
24489
|
-
}],
|
|
24970
|
+
}], disabled: [{
|
|
24490
24971
|
type: Input
|
|
24491
|
-
}],
|
|
24972
|
+
}], newValue: [{
|
|
24492
24973
|
type: Output
|
|
24974
|
+
}], overlay: [{
|
|
24975
|
+
type: ViewChild,
|
|
24976
|
+
args: ['starOverlay']
|
|
24493
24977
|
}] } });
|
|
24494
24978
|
|
|
24495
24979
|
class TextAreaComponent {
|
|
@@ -24552,317 +25036,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24552
25036
|
args: ['input']
|
|
24553
25037
|
}] } });
|
|
24554
25038
|
|
|
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
|
-
}
|
|
25039
|
+
class TextInputComponent {
|
|
25040
|
+
constructor() {
|
|
25041
|
+
this.baseClass = [
|
|
25042
|
+
'appearance-none',
|
|
25043
|
+
'border border-gray-300',
|
|
25044
|
+
'rounded w-full',
|
|
25045
|
+
'p-2',
|
|
25046
|
+
'text-gray-700',
|
|
25047
|
+
'leading-tight',
|
|
25048
|
+
'focus:outline-none',
|
|
25049
|
+
'focus:border-primary',
|
|
25050
|
+
].join(' ');
|
|
25051
|
+
this.value = '';
|
|
25052
|
+
this.extraClass = '';
|
|
25053
|
+
this.required = false;
|
|
25054
|
+
this.rawChange = new Subject();
|
|
25055
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24626
25056
|
}
|
|
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$);
|
|
25057
|
+
get classList() {
|
|
25058
|
+
return `${this.baseClass} ${this.extraClass}`;
|
|
24640
25059
|
}
|
|
24641
25060
|
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
|
-
}
|
|
25061
|
+
this.checkRequired(this.input.nativeElement.value);
|
|
24673
25062
|
}
|
|
24674
|
-
|
|
24675
|
-
this.
|
|
24676
|
-
this.triggerRef.closePanel();
|
|
25063
|
+
checkRequired(value) {
|
|
25064
|
+
this.input.nativeElement.classList.toggle('invalid', this.required && value === '');
|
|
24677
25065
|
}
|
|
24678
|
-
|
|
24679
|
-
|
|
24680
|
-
this.
|
|
24681
|
-
|
|
24682
|
-
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24683
|
-
this.inputRef.nativeElement.value = any;
|
|
24684
|
-
});
|
|
24685
|
-
}
|
|
25066
|
+
handleChange($event) {
|
|
25067
|
+
const value = $event.target.value;
|
|
25068
|
+
this.checkRequired(value);
|
|
25069
|
+
this.rawChange.next(value);
|
|
24686
25070
|
}
|
|
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:
|
|
25071
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25072
|
+
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
25073
|
}
|
|
24690
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25074
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
24691
25075
|
type: Component,
|
|
24692
|
-
args: [{ selector: 'gn-ui-
|
|
24693
|
-
}],
|
|
24694
|
-
type: Input
|
|
24695
|
-
}], action: [{
|
|
24696
|
-
type: Input
|
|
24697
|
-
}], value: [{
|
|
24698
|
-
type: Input
|
|
24699
|
-
}], clearOnSelection: [{
|
|
25076
|
+
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"] }]
|
|
25077
|
+
}], propDecorators: { value: [{
|
|
24700
25078
|
type: Input
|
|
24701
|
-
}],
|
|
25079
|
+
}], extraClass: [{
|
|
24702
25080
|
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: [{
|
|
25081
|
+
}], hint: [{
|
|
24719
25082
|
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: [{
|
|
25083
|
+
}], required: [{
|
|
24747
25084
|
type: Input
|
|
24748
25085
|
}], disabled: [{
|
|
24749
25086
|
type: Input
|
|
24750
|
-
}],
|
|
25087
|
+
}], valueChange: [{
|
|
24751
25088
|
type: Output
|
|
24752
|
-
}],
|
|
25089
|
+
}], input: [{
|
|
24753
25090
|
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
|
|
25091
|
+
args: ['input']
|
|
24866
25092
|
}] } });
|
|
24867
25093
|
|
|
24868
25094
|
class ColorScaleComponent {
|
|
@@ -24970,7 +25196,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24970
25196
|
|
|
24971
25197
|
class LoadingMaskComponent {
|
|
24972
25198
|
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$
|
|
25199
|
+
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
25200
|
}
|
|
24975
25201
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, decorators: [{
|
|
24976
25202
|
type: Component,
|
|
@@ -25066,148 +25292,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25066
25292
|
}]
|
|
25067
25293
|
}] });
|
|
25068
25294
|
|
|
25069
|
-
class
|
|
25070
|
-
constructor() {
|
|
25071
|
-
this.
|
|
25072
|
-
this.
|
|
25295
|
+
class ViewportIntersectorComponent {
|
|
25296
|
+
constructor(vcRef) {
|
|
25297
|
+
this.vcRef = vcRef;
|
|
25298
|
+
this.isInViewport = new EventEmitter();
|
|
25299
|
+
this.entersViewport = this.isInViewport.pipe(filter((inViewport) => inViewport), map$1(() => undefined));
|
|
25300
|
+
this.exitsViewport = this.isInViewport.pipe(filter((inViewport) => !inViewport), map$1(() => undefined));
|
|
25073
25301
|
}
|
|
25074
|
-
|
|
25075
|
-
|
|
25076
|
-
|
|
25302
|
+
ngOnInit() {
|
|
25303
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25304
|
+
this.observeInputElement(elToObserve);
|
|
25077
25305
|
}
|
|
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();
|
|
25306
|
+
ngOnDestroy() {
|
|
25307
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25308
|
+
this.unObserveInputElement(elToObserve);
|
|
25100
25309
|
}
|
|
25101
|
-
|
|
25102
|
-
|
|
25310
|
+
observeInputElement(elToObserve) {
|
|
25311
|
+
if (!this.observer) {
|
|
25312
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
25313
|
+
entries.forEach((entry) => {
|
|
25314
|
+
this.isInViewport.emit(entry.isIntersecting);
|
|
25315
|
+
});
|
|
25316
|
+
}, { root: null, threshold: 0 });
|
|
25317
|
+
}
|
|
25318
|
+
this.observer.observe(elToObserve);
|
|
25103
25319
|
}
|
|
25104
|
-
|
|
25105
|
-
|
|
25106
|
-
this.checked = !this.checked;
|
|
25107
|
-
this.changed.emit(this.checked);
|
|
25320
|
+
unObserveInputElement(elToObserve) {
|
|
25321
|
+
this.observer?.unobserve(elToObserve);
|
|
25108
25322
|
}
|
|
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:
|
|
25323
|
+
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 }); }
|
|
25324
|
+
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
25325
|
}
|
|
25112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25326
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
25113
25327
|
type: Component,
|
|
25114
|
-
args: [{ selector: 'gn-ui-
|
|
25115
|
-
}],
|
|
25116
|
-
type: Input
|
|
25117
|
-
}], checked: [{
|
|
25118
|
-
type: Input
|
|
25119
|
-
}], indeterminate: [{
|
|
25120
|
-
type: Input
|
|
25121
|
-
}], changed: [{
|
|
25328
|
+
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
25329
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
25122
25330
|
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: [{
|
|
25331
|
+
}], entersViewport: [{
|
|
25151
25332
|
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: [{
|
|
25333
|
+
}], exitsViewport: [{
|
|
25208
25334
|
type: Output
|
|
25209
|
-
}], gnUiEditableLabel: [{
|
|
25210
|
-
type: Input
|
|
25211
25335
|
}] } });
|
|
25212
25336
|
|
|
25213
25337
|
class FilesDropDirective {
|
|
@@ -25399,7 +25523,7 @@ class ImageInputComponent {
|
|
|
25399
25523
|
});
|
|
25400
25524
|
}
|
|
25401
25525
|
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$
|
|
25526
|
+
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
25527
|
}
|
|
25404
25528
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, decorators: [{
|
|
25405
25529
|
type: Component,
|
|
@@ -25435,8 +25559,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25435
25559
|
|
|
25436
25560
|
class UiInputsModule {
|
|
25437
25561
|
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,
|
|
25562
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [AutocompleteComponent,
|
|
25440
25563
|
TextInputComponent,
|
|
25441
25564
|
DragAndDropFileInputComponent,
|
|
25442
25565
|
ChipsInputComponent,
|
|
@@ -25444,11 +25567,9 @@ class UiInputsModule {
|
|
|
25444
25567
|
StarToggleComponent,
|
|
25445
25568
|
DropdownMultiselectComponent,
|
|
25446
25569
|
ViewportIntersectorComponent,
|
|
25447
|
-
CheckToggleComponent,
|
|
25448
25570
|
CopyTextButtonComponent,
|
|
25449
25571
|
CheckboxComponent,
|
|
25450
|
-
SearchInputComponent,
|
|
25451
|
-
DateRangePickerComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25572
|
+
SearchInputComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25452
25573
|
FormsModule,
|
|
25453
25574
|
ReactiveFormsModule,
|
|
25454
25575
|
TagInputModule,
|
|
@@ -25466,7 +25587,10 @@ class UiInputsModule {
|
|
|
25466
25587
|
EditableLabelDirective,
|
|
25467
25588
|
TextAreaComponent,
|
|
25468
25589
|
ButtonComponent,
|
|
25469
|
-
ImageInputComponent
|
|
25590
|
+
ImageInputComponent,
|
|
25591
|
+
DropdownSelectorComponent,
|
|
25592
|
+
DateRangePickerComponent,
|
|
25593
|
+
CheckToggleComponent], exports: [DropdownSelectorComponent,
|
|
25470
25594
|
AutocompleteComponent,
|
|
25471
25595
|
ButtonComponent,
|
|
25472
25596
|
TextInputComponent,
|
|
@@ -25501,13 +25625,15 @@ class UiInputsModule {
|
|
|
25501
25625
|
MatInputModule,
|
|
25502
25626
|
MatDatepickerModule,
|
|
25503
25627
|
MatNativeDateModule,
|
|
25504
|
-
ImageInputComponent
|
|
25628
|
+
ImageInputComponent,
|
|
25629
|
+
DropdownSelectorComponent,
|
|
25630
|
+
DateRangePickerComponent,
|
|
25631
|
+
CheckToggleComponent] }); }
|
|
25505
25632
|
}
|
|
25506
25633
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, decorators: [{
|
|
25507
25634
|
type: NgModule,
|
|
25508
25635
|
args: [{
|
|
25509
25636
|
declarations: [
|
|
25510
|
-
DropdownSelectorComponent,
|
|
25511
25637
|
AutocompleteComponent,
|
|
25512
25638
|
TextInputComponent,
|
|
25513
25639
|
DragAndDropFileInputComponent,
|
|
@@ -25516,11 +25642,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25516
25642
|
StarToggleComponent,
|
|
25517
25643
|
DropdownMultiselectComponent,
|
|
25518
25644
|
ViewportIntersectorComponent,
|
|
25519
|
-
CheckToggleComponent,
|
|
25520
25645
|
CopyTextButtonComponent,
|
|
25521
25646
|
CheckboxComponent,
|
|
25522
25647
|
SearchInputComponent,
|
|
25523
|
-
DateRangePickerComponent,
|
|
25524
25648
|
],
|
|
25525
25649
|
imports: [
|
|
25526
25650
|
CommonModule,
|
|
@@ -25544,6 +25668,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25544
25668
|
TextAreaComponent,
|
|
25545
25669
|
ButtonComponent,
|
|
25546
25670
|
ImageInputComponent,
|
|
25671
|
+
DropdownSelectorComponent,
|
|
25672
|
+
DateRangePickerComponent,
|
|
25673
|
+
CheckToggleComponent,
|
|
25547
25674
|
],
|
|
25548
25675
|
exports: [
|
|
25549
25676
|
DropdownSelectorComponent,
|
|
@@ -25568,34 +25695,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25568
25695
|
}]
|
|
25569
25696
|
}] });
|
|
25570
25697
|
|
|
25698
|
+
class PreviousNextButtonsComponent {
|
|
25699
|
+
constructor() {
|
|
25700
|
+
this.directionButtonClicked = new EventEmitter();
|
|
25701
|
+
}
|
|
25702
|
+
previousButtonClicked() {
|
|
25703
|
+
this.directionButtonClicked.next('previous');
|
|
25704
|
+
}
|
|
25705
|
+
nextButtonClicked() {
|
|
25706
|
+
this.directionButtonClicked.next('next');
|
|
25707
|
+
}
|
|
25708
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25709
|
+
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 }); }
|
|
25710
|
+
}
|
|
25711
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
|
|
25712
|
+
type: Component,
|
|
25713
|
+
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"] }]
|
|
25714
|
+
}], propDecorators: { isFirst: [{
|
|
25715
|
+
type: Input
|
|
25716
|
+
}], isLast: [{
|
|
25717
|
+
type: Input
|
|
25718
|
+
}], directionButtonClicked: [{
|
|
25719
|
+
type: Output
|
|
25720
|
+
}] } });
|
|
25721
|
+
|
|
25571
25722
|
class AddLayerFromOgcApiComponent {
|
|
25572
25723
|
constructor(changeDetectorRef) {
|
|
25573
25724
|
this.changeDetectorRef = changeDetectorRef;
|
|
25574
25725
|
this.layerAdded = new EventEmitter();
|
|
25575
25726
|
this.urlChange = new Subject();
|
|
25576
|
-
this.layerUrl = '';
|
|
25577
25727
|
this.loading = false;
|
|
25578
25728
|
this.layers = [];
|
|
25579
|
-
this.ogcEndpoint = null;
|
|
25580
25729
|
this.errorMessage = null;
|
|
25730
|
+
this.selectedLayerTypes = {};
|
|
25581
25731
|
}
|
|
25582
25732
|
ngOnInit() {
|
|
25583
25733
|
this.urlChange.pipe(debounceTime$1(700)).subscribe(() => {
|
|
25584
25734
|
this.loadLayers();
|
|
25585
|
-
this.changeDetectorRef.detectChanges(); // manually trigger change detection
|
|
25586
25735
|
});
|
|
25587
25736
|
}
|
|
25588
25737
|
async loadLayers() {
|
|
25589
25738
|
this.errorMessage = null;
|
|
25590
25739
|
try {
|
|
25591
25740
|
this.loading = true;
|
|
25592
|
-
if (this.ogcUrl.trim()
|
|
25741
|
+
if (!this.ogcUrl.trim()) {
|
|
25593
25742
|
this.layers = [];
|
|
25594
25743
|
return;
|
|
25595
25744
|
}
|
|
25596
|
-
|
|
25597
|
-
|
|
25598
|
-
this.
|
|
25745
|
+
const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
25746
|
+
this.layers = await ogcEndpoint.allCollections;
|
|
25747
|
+
this.setDefaultLayerTypes();
|
|
25599
25748
|
}
|
|
25600
25749
|
catch (error) {
|
|
25601
25750
|
const err = error;
|
|
@@ -25607,21 +25756,75 @@ class AddLayerFromOgcApiComponent {
|
|
|
25607
25756
|
this.changeDetectorRef.markForCheck();
|
|
25608
25757
|
}
|
|
25609
25758
|
}
|
|
25610
|
-
|
|
25611
|
-
this.
|
|
25612
|
-
|
|
25613
|
-
|
|
25614
|
-
|
|
25615
|
-
|
|
25616
|
-
};
|
|
25617
|
-
|
|
25759
|
+
setDefaultLayerTypes() {
|
|
25760
|
+
this.layers.forEach((layer) => {
|
|
25761
|
+
const choices = this.getLayerChoices(layer);
|
|
25762
|
+
if (choices.length > 0) {
|
|
25763
|
+
this.selectedLayerTypes[layer.name] = choices[0].value;
|
|
25764
|
+
}
|
|
25765
|
+
});
|
|
25766
|
+
}
|
|
25767
|
+
getLayerChoices(layer) {
|
|
25768
|
+
const choices = [];
|
|
25769
|
+
if (layer.hasRecords) {
|
|
25770
|
+
choices.push({ label: 'Records', value: 'record' });
|
|
25771
|
+
}
|
|
25772
|
+
if (layer.hasFeatures) {
|
|
25773
|
+
choices.push({ label: 'Features', value: 'features' });
|
|
25774
|
+
}
|
|
25775
|
+
if (layer.hasVectorTiles) {
|
|
25776
|
+
choices.push({ label: 'Vector Tiles', value: 'vectorTiles' });
|
|
25777
|
+
}
|
|
25778
|
+
if (layer.hasMapTiles) {
|
|
25779
|
+
choices.push({ label: 'Map Tiles', value: 'mapTiles' });
|
|
25780
|
+
}
|
|
25781
|
+
return choices;
|
|
25782
|
+
}
|
|
25783
|
+
shouldDisplayLayer(layer) {
|
|
25784
|
+
return (layer.hasRecords ||
|
|
25785
|
+
layer.hasFeatures ||
|
|
25786
|
+
layer.hasVectorTiles ||
|
|
25787
|
+
layer.hasMapTiles);
|
|
25788
|
+
}
|
|
25789
|
+
onLayerTypeSelect(layerName, selectedType) {
|
|
25790
|
+
this.selectedLayerTypes[layerName] = selectedType
|
|
25791
|
+
? selectedType
|
|
25792
|
+
: this.getLayerChoices(layerName)[0]?.value;
|
|
25793
|
+
}
|
|
25794
|
+
async addLayer(layer, layerType) {
|
|
25795
|
+
try {
|
|
25796
|
+
const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
25797
|
+
let layerUrl;
|
|
25798
|
+
if (layerType === 'vectorTiles') {
|
|
25799
|
+
layerUrl = await ogcEndpoint.getVectorTilesetUrl(layer);
|
|
25800
|
+
}
|
|
25801
|
+
else if (layerType === 'mapTiles') {
|
|
25802
|
+
layerUrl = await ogcEndpoint.getMapTilesetUrl(layer);
|
|
25803
|
+
}
|
|
25804
|
+
else {
|
|
25805
|
+
layerUrl = await ogcEndpoint.getCollectionItemsUrl(layer, {
|
|
25806
|
+
outputFormat: 'json',
|
|
25807
|
+
});
|
|
25808
|
+
}
|
|
25809
|
+
const layerToAdd = {
|
|
25810
|
+
name: layer,
|
|
25811
|
+
url: layerUrl,
|
|
25812
|
+
type: MapContextLayerTypeEnum.OGCAPI,
|
|
25813
|
+
layerType: layerType,
|
|
25814
|
+
};
|
|
25815
|
+
this.layerAdded.emit({ ...layerToAdd, title: layer });
|
|
25816
|
+
}
|
|
25817
|
+
catch (error) {
|
|
25818
|
+
const err = error;
|
|
25819
|
+
console.error('Error adding layer:', err.message);
|
|
25820
|
+
}
|
|
25618
25821
|
}
|
|
25619
25822
|
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
|
|
25823
|
+
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
25824
|
}
|
|
25622
25825
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
|
|
25623
25826
|
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
|
|
25827
|
+
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
25828
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { ogcUrl: [{
|
|
25626
25829
|
type: Input
|
|
25627
25830
|
}], layerAdded: [{
|
|
@@ -26363,7 +26566,8 @@ class ApiCardComponent {
|
|
|
26363
26566
|
}
|
|
26364
26567
|
ngOnInit() {
|
|
26365
26568
|
this.displayApiFormButton =
|
|
26366
|
-
this.link.accessServiceProtocol === 'ogcFeatures'
|
|
26569
|
+
this.link.accessServiceProtocol === 'ogcFeatures' ||
|
|
26570
|
+
this.link.accessServiceProtocol === 'wfs';
|
|
26367
26571
|
}
|
|
26368
26572
|
ngOnChanges(changes) {
|
|
26369
26573
|
this.currentlyActive =
|
|
@@ -26376,7 +26580,7 @@ class ApiCardComponent {
|
|
|
26376
26580
|
}
|
|
26377
26581
|
}
|
|
26378
26582
|
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:
|
|
26583
|
+
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
26584
|
}
|
|
26381
26585
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
26382
26586
|
type: Component,
|
|
@@ -26507,7 +26711,7 @@ class DownloadsListComponent {
|
|
|
26507
26711
|
return getBadgeColor(getFileFormat(link));
|
|
26508
26712
|
}
|
|
26509
26713
|
isFromWfs(link) {
|
|
26510
|
-
return link.type === '
|
|
26714
|
+
return link.type === 'download' && link.accessServiceProtocol === 'wfs';
|
|
26511
26715
|
}
|
|
26512
26716
|
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
26717
|
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 +26743,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26539
26743
|
}] } });
|
|
26540
26744
|
|
|
26541
26745
|
class LinkCardComponent {
|
|
26746
|
+
constructor() {
|
|
26747
|
+
this.compact = false;
|
|
26748
|
+
}
|
|
26749
|
+
get title() {
|
|
26750
|
+
if (this.link.name && this.link.description) {
|
|
26751
|
+
return `${this.link.name} | ${this.link.description}`;
|
|
26752
|
+
}
|
|
26753
|
+
return this.link.name || this.link.description || '';
|
|
26754
|
+
}
|
|
26542
26755
|
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
|
|
26756
|
+
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
26757
|
}
|
|
26545
26758
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
26546
26759
|
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
|
|
26760
|
+
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
26761
|
}], propDecorators: { link: [{
|
|
26549
26762
|
type: Input
|
|
26763
|
+
}], compact: [{
|
|
26764
|
+
type: Input
|
|
26550
26765
|
}] } });
|
|
26551
26766
|
|
|
26552
26767
|
class MarkdownParserComponent {
|
|
@@ -27005,43 +27220,36 @@ const DEFAULT_PARAMS = {
|
|
|
27005
27220
|
};
|
|
27006
27221
|
class RecordApiFormComponent {
|
|
27007
27222
|
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
|
-
for (const [key, value] of Object.entries(params)) {
|
|
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
|
-
}));
|
|
27223
|
+
this.offset$ = new BehaviorSubject(DEFAULT_PARAMS.OFFSET);
|
|
27224
|
+
this.limit$ = new BehaviorSubject(DEFAULT_PARAMS.LIMIT);
|
|
27225
|
+
this.format$ = new BehaviorSubject(DEFAULT_PARAMS.FORMAT);
|
|
27226
|
+
this.endpoint$ = new BehaviorSubject(undefined);
|
|
27227
|
+
this.supportOffset = true;
|
|
27228
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27229
|
+
this.apiQueryUrl$ = combineLatest([
|
|
27230
|
+
this.offset$,
|
|
27231
|
+
this.limit$,
|
|
27232
|
+
this.format$,
|
|
27233
|
+
this.endpoint$,
|
|
27234
|
+
]).pipe(switchMap(([offset, limit, format]) => this.generateApiQueryUrl(offset, limit, format)));
|
|
27032
27235
|
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
27033
27236
|
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
27034
27237
|
}
|
|
27035
27238
|
set apiLink(value) {
|
|
27036
|
-
this.
|
|
27239
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27240
|
+
this.accessServiceProtocol = value ? value.accessServiceProtocol : undefined;
|
|
27241
|
+
this.apiFeatureType = value ? value.name : undefined;
|
|
27242
|
+
if (value) {
|
|
27243
|
+
this.apiBaseUrl = value.url.href;
|
|
27244
|
+
this.createEndpoint().then(() => this.parseOutputFormats());
|
|
27245
|
+
}
|
|
27037
27246
|
this.resetUrl();
|
|
27038
27247
|
}
|
|
27039
27248
|
setOffset(value) {
|
|
27040
27249
|
this.offset$.next(value);
|
|
27041
27250
|
}
|
|
27042
27251
|
setLimit(value) {
|
|
27043
|
-
|
|
27044
|
-
this.limit$.next(newLimit);
|
|
27252
|
+
this.limit$.next(value === '' ? '-1' : value);
|
|
27045
27253
|
}
|
|
27046
27254
|
setFormat(value) {
|
|
27047
27255
|
this.format$.next(String(value));
|
|
@@ -27051,19 +27259,86 @@ class RecordApiFormComponent {
|
|
|
27051
27259
|
this.limit$.next(DEFAULT_PARAMS.LIMIT);
|
|
27052
27260
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
27053
27261
|
}
|
|
27262
|
+
async parseOutputFormats() {
|
|
27263
|
+
if (!this.endpoint)
|
|
27264
|
+
return;
|
|
27265
|
+
const apiUrl = this.apiBaseUrl.endsWith('?')
|
|
27266
|
+
? this.apiBaseUrl.slice(0, -1)
|
|
27267
|
+
: this.apiBaseUrl;
|
|
27268
|
+
const outputFormats = await this.getOutputFormats(apiUrl);
|
|
27269
|
+
const formatsList = outputFormats.itemFormats
|
|
27270
|
+
? this.mapFormats(outputFormats.itemFormats)
|
|
27271
|
+
: this.mapFormats(outputFormats.outputFormats || []);
|
|
27272
|
+
this.outputFormats = this.outputFormats
|
|
27273
|
+
.concat(formatsList.filter(Boolean))
|
|
27274
|
+
.filter((format, index, self) => index === self.findIndex((t) => t.value === format.value))
|
|
27275
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
27276
|
+
}
|
|
27277
|
+
mapFormats(formats) {
|
|
27278
|
+
return formats.map((format) => {
|
|
27279
|
+
const normalizedFormat = mimeTypeToFormat(format);
|
|
27280
|
+
return normalizedFormat
|
|
27281
|
+
? { label: normalizedFormat.toUpperCase(), value: normalizedFormat }
|
|
27282
|
+
: null;
|
|
27283
|
+
});
|
|
27284
|
+
}
|
|
27285
|
+
async getOutputFormats(url) {
|
|
27286
|
+
if (!this.endpoint)
|
|
27287
|
+
return {};
|
|
27288
|
+
if (this.endpoint instanceof WfsEndpoint) {
|
|
27289
|
+
this.supportOffset = this.endpoint.supportsStartIndex();
|
|
27290
|
+
return this.endpoint.getServiceInfo();
|
|
27291
|
+
}
|
|
27292
|
+
else {
|
|
27293
|
+
{
|
|
27294
|
+
return (await this.endpoint.getCollectionInfo(this.firstCollection));
|
|
27295
|
+
}
|
|
27296
|
+
}
|
|
27297
|
+
}
|
|
27298
|
+
async createEndpoint() {
|
|
27299
|
+
if (!this.apiBaseUrl || !this.accessServiceProtocol)
|
|
27300
|
+
return;
|
|
27301
|
+
if (this.accessServiceProtocol === 'wfs') {
|
|
27302
|
+
this.endpoint = new WfsEndpoint(this.apiBaseUrl);
|
|
27303
|
+
await this.endpoint.isReady();
|
|
27304
|
+
}
|
|
27305
|
+
else {
|
|
27306
|
+
this.endpoint = new OgcApiEndpoint(this.apiBaseUrl);
|
|
27307
|
+
this.firstCollection = (await this.endpoint.featureCollections)[0];
|
|
27308
|
+
}
|
|
27309
|
+
this.endpoint$.next(this.endpoint);
|
|
27310
|
+
}
|
|
27311
|
+
async generateApiQueryUrl(offset, limit, format) {
|
|
27312
|
+
if (!this.apiBaseUrl || !this.endpoint || !this.apiFeatureType)
|
|
27313
|
+
return '';
|
|
27314
|
+
const options = {
|
|
27315
|
+
outputFormat: format,
|
|
27316
|
+
startIndex: offset ? Number(offset) : undefined,
|
|
27317
|
+
maxFeatures: limit !== '-1' ? Number(limit) : undefined,
|
|
27318
|
+
limit: limit !== '-1' ? Number(limit) : limit === '-1' ? -1 : undefined,
|
|
27319
|
+
offset: offset !== '' ? Number(offset) : undefined,
|
|
27320
|
+
};
|
|
27321
|
+
if (this.endpoint instanceof WfsEndpoint) {
|
|
27322
|
+
options.maxFeatures = limit !== '-1' ? Number(limit) : undefined;
|
|
27323
|
+
return this.endpoint.getFeatureUrl(this.apiFeatureType, options);
|
|
27324
|
+
}
|
|
27325
|
+
else {
|
|
27326
|
+
return await this.endpoint.getCollectionItemsUrl(this.firstCollection, options);
|
|
27327
|
+
}
|
|
27328
|
+
}
|
|
27054
27329
|
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
|
|
27330
|
+
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
27331
|
}
|
|
27057
27332
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
27058
27333
|
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
|
|
27334
|
+
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
27335
|
}], propDecorators: { apiLink: [{
|
|
27061
27336
|
type: Input
|
|
27062
27337
|
}] } });
|
|
27063
27338
|
|
|
27064
27339
|
class RelatedRecordCardComponent {
|
|
27065
27340
|
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:
|
|
27341
|
+
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
27342
|
}
|
|
27068
27343
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
27069
27344
|
type: Component,
|
|
@@ -27159,48 +27434,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27159
27434
|
}] } });
|
|
27160
27435
|
|
|
27161
27436
|
class CarouselComponent {
|
|
27437
|
+
get isFirstStep() {
|
|
27438
|
+
return this.currentStep === 0;
|
|
27439
|
+
}
|
|
27440
|
+
get isLastStep() {
|
|
27441
|
+
return this.currentStep === this.steps.length - 1;
|
|
27442
|
+
}
|
|
27443
|
+
get stepsCount() {
|
|
27444
|
+
return this.steps.length;
|
|
27445
|
+
}
|
|
27162
27446
|
constructor(changeDetector) {
|
|
27163
27447
|
this.changeDetector = changeDetector;
|
|
27164
27448
|
this.containerClass = '';
|
|
27165
|
-
this.stepsContainerClass = '';
|
|
27449
|
+
this.stepsContainerClass = 'w-full bottom-0 top-auto';
|
|
27450
|
+
this.currentStepChange = new EventEmitter();
|
|
27166
27451
|
this.steps = [];
|
|
27167
|
-
this.
|
|
27452
|
+
this.currentStep = 0;
|
|
27453
|
+
this.refreshSteps = () => {
|
|
27454
|
+
this.steps = this.emblaApi.scrollSnapList();
|
|
27455
|
+
this.currentStep = this.emblaApi.selectedScrollSnap();
|
|
27456
|
+
this.currentStepChange.emit(this.currentStep);
|
|
27457
|
+
this.changeDetector.detectChanges();
|
|
27458
|
+
};
|
|
27168
27459
|
}
|
|
27169
27460
|
ngAfterViewInit() {
|
|
27170
27461
|
this.emblaApi = EmblaCarousel(this.carouselOverflowContainer.nativeElement, {
|
|
27171
27462
|
duration: 15,
|
|
27172
27463
|
});
|
|
27173
|
-
const refreshSteps = () => {
|
|
27174
|
-
this.steps = this.emblaApi.scrollSnapList();
|
|
27175
|
-
this.selectedStep = this.emblaApi.selectedScrollSnap();
|
|
27176
|
-
this.changeDetector.detectChanges();
|
|
27177
|
-
};
|
|
27178
27464
|
this.emblaApi
|
|
27179
|
-
.on('init', refreshSteps)
|
|
27180
|
-
.on('reInit', refreshSteps)
|
|
27181
|
-
.on('select', refreshSteps);
|
|
27465
|
+
.on('init', this.refreshSteps)
|
|
27466
|
+
.on('reInit', this.refreshSteps)
|
|
27467
|
+
.on('select', this.refreshSteps);
|
|
27182
27468
|
}
|
|
27183
27469
|
scrollToStep(stepIndex) {
|
|
27184
27470
|
this.emblaApi.scrollTo(stepIndex);
|
|
27185
27471
|
}
|
|
27472
|
+
slideToPrevious() {
|
|
27473
|
+
if (this.isFirstStep)
|
|
27474
|
+
return;
|
|
27475
|
+
this.emblaApi.scrollPrev();
|
|
27476
|
+
}
|
|
27477
|
+
slideToNext() {
|
|
27478
|
+
if (this.isLastStep)
|
|
27479
|
+
return;
|
|
27480
|
+
this.emblaApi.scrollNext();
|
|
27481
|
+
}
|
|
27186
27482
|
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=\"
|
|
27483
|
+
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
27484
|
}
|
|
27189
27485
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
27190
27486
|
type: Component,
|
|
27191
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"
|
|
27192
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
27487
|
+
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"] }]
|
|
27488
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { carouselOverflowContainer: [{
|
|
27489
|
+
type: ViewChild,
|
|
27490
|
+
args: ['carouselOverflowContainer']
|
|
27491
|
+
}], containerClass: [{
|
|
27193
27492
|
type: Input
|
|
27194
27493
|
}], stepsContainerClass: [{
|
|
27195
27494
|
type: Input
|
|
27196
|
-
}],
|
|
27197
|
-
type:
|
|
27198
|
-
args: ['carouselOverflowContainer']
|
|
27495
|
+
}], currentStepChange: [{
|
|
27496
|
+
type: Output
|
|
27199
27497
|
}] } });
|
|
27200
27498
|
|
|
27201
27499
|
class FormFieldWrapperComponent {
|
|
27202
27500
|
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:
|
|
27501
|
+
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
27502
|
}
|
|
27205
27503
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
27206
27504
|
type: Component,
|
|
@@ -27349,17 +27647,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27349
27647
|
args: ['innerContainer']
|
|
27350
27648
|
}] } });
|
|
27351
27649
|
|
|
27650
|
+
class BlockListComponent {
|
|
27651
|
+
get pages() {
|
|
27652
|
+
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
27653
|
+
}
|
|
27654
|
+
get isFirstPage() {
|
|
27655
|
+
return this.currentPage === 0;
|
|
27656
|
+
}
|
|
27657
|
+
get isLastPage() {
|
|
27658
|
+
return this.currentPage === this.pagesCount - 1;
|
|
27659
|
+
}
|
|
27660
|
+
get pagesCount() {
|
|
27661
|
+
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
27662
|
+
}
|
|
27663
|
+
constructor(changeDetector) {
|
|
27664
|
+
this.changeDetector = changeDetector;
|
|
27665
|
+
this.pageSize = 5;
|
|
27666
|
+
this.containerClass = '';
|
|
27667
|
+
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
27668
|
+
this.minHeight = 0;
|
|
27669
|
+
this.currentPage = 0;
|
|
27670
|
+
this.refreshBlocksVisibility = () => {
|
|
27671
|
+
this.blocks.forEach((block, index) => {
|
|
27672
|
+
block.nativeElement.style.display =
|
|
27673
|
+
index >= this.currentPage * this.pageSize &&
|
|
27674
|
+
index < (this.currentPage + 1) * this.pageSize
|
|
27675
|
+
? null
|
|
27676
|
+
: 'none';
|
|
27677
|
+
});
|
|
27678
|
+
};
|
|
27679
|
+
}
|
|
27680
|
+
ngAfterViewInit() {
|
|
27681
|
+
this.blocks.changes.subscribe(this.refreshBlocksVisibility);
|
|
27682
|
+
this.refreshBlocksVisibility();
|
|
27683
|
+
// we store the first height as the min-height of the list container
|
|
27684
|
+
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
27685
|
+
this.changeDetector.detectChanges();
|
|
27686
|
+
}
|
|
27687
|
+
goToPage(index) {
|
|
27688
|
+
this.currentPage = Math.max(Math.min(index, this.pagesCount - 1), 0);
|
|
27689
|
+
this.changeDetector.detectChanges();
|
|
27690
|
+
this.refreshBlocksVisibility();
|
|
27691
|
+
}
|
|
27692
|
+
previousPage() {
|
|
27693
|
+
if (this.isFirstPage)
|
|
27694
|
+
return;
|
|
27695
|
+
this.goToPage(this.currentPage - 1);
|
|
27696
|
+
}
|
|
27697
|
+
nextPage() {
|
|
27698
|
+
if (this.isLastPage)
|
|
27699
|
+
return;
|
|
27700
|
+
this.goToPage(this.currentPage + 1);
|
|
27701
|
+
}
|
|
27702
|
+
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 }); }
|
|
27703
|
+
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 }); }
|
|
27704
|
+
}
|
|
27705
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
27706
|
+
type: Component,
|
|
27707
|
+
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"] }]
|
|
27708
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageSize: [{
|
|
27709
|
+
type: Input
|
|
27710
|
+
}], containerClass: [{
|
|
27711
|
+
type: Input
|
|
27712
|
+
}], paginationContainerClass: [{
|
|
27713
|
+
type: Input
|
|
27714
|
+
}], blocks: [{
|
|
27715
|
+
type: ContentChildren,
|
|
27716
|
+
args: ['block', { read: ElementRef }]
|
|
27717
|
+
}], blockContainer: [{
|
|
27718
|
+
type: ViewChild,
|
|
27719
|
+
args: ['blockContainer']
|
|
27720
|
+
}] } });
|
|
27721
|
+
|
|
27352
27722
|
class UiLayoutModule {
|
|
27353
27723
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27354
27724
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, declarations: [ExpandablePanelComponent,
|
|
27355
27725
|
StickyHeaderComponent,
|
|
27356
27726
|
AnchorLinkDirective,
|
|
27357
|
-
ExpandablePanelButtonComponent,
|
|
27358
|
-
CarouselComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27727
|
+
ExpandablePanelButtonComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27359
27728
|
StickyHeaderComponent,
|
|
27360
27729
|
AnchorLinkDirective,
|
|
27361
|
-
ExpandablePanelButtonComponent
|
|
27362
|
-
CarouselComponent] }); }
|
|
27730
|
+
ExpandablePanelButtonComponent] }); }
|
|
27363
27731
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, imports: [CommonModule, MatIconModule, TranslateModule.forChild()] }); }
|
|
27364
27732
|
}
|
|
27365
27733
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, decorators: [{
|
|
@@ -27371,14 +27739,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27371
27739
|
StickyHeaderComponent,
|
|
27372
27740
|
AnchorLinkDirective,
|
|
27373
27741
|
ExpandablePanelButtonComponent,
|
|
27374
|
-
CarouselComponent,
|
|
27375
27742
|
],
|
|
27376
27743
|
exports: [
|
|
27377
27744
|
ExpandablePanelComponent,
|
|
27378
27745
|
StickyHeaderComponent,
|
|
27379
27746
|
AnchorLinkDirective,
|
|
27380
27747
|
ExpandablePanelButtonComponent,
|
|
27381
|
-
CarouselComponent,
|
|
27382
27748
|
],
|
|
27383
27749
|
}]
|
|
27384
27750
|
}] });
|
|
@@ -27388,7 +27754,7 @@ class UserPreviewComponent {
|
|
|
27388
27754
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
27389
27755
|
}
|
|
27390
27756
|
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:
|
|
27757
|
+
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
27758
|
}
|
|
27393
27759
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
27394
27760
|
type: Component,
|
|
@@ -27484,17 +27850,15 @@ class UserFeedbackItemComponent {
|
|
|
27484
27850
|
this.onNewAnswerValueChange();
|
|
27485
27851
|
}
|
|
27486
27852
|
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",
|
|
27853
|
+
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
27854
|
}
|
|
27489
27855
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, decorators: [{
|
|
27490
27856
|
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=\"
|
|
27857
|
+
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
27858
|
}], propDecorators: { userFeedbackParent: [{
|
|
27493
27859
|
type: Input
|
|
27494
27860
|
}], userFeedBacksAnswers: [{
|
|
27495
27861
|
type: Input
|
|
27496
|
-
}], isActiveUserEditor: [{
|
|
27497
|
-
type: Input
|
|
27498
27862
|
}], activeUser: [{
|
|
27499
27863
|
type: Input
|
|
27500
27864
|
}], isLastComment: [{
|
|
@@ -27512,7 +27876,6 @@ class UiElementsModule {
|
|
|
27512
27876
|
DownloadItemComponent,
|
|
27513
27877
|
DownloadsListComponent,
|
|
27514
27878
|
ApiCardComponent,
|
|
27515
|
-
LinkCardComponent,
|
|
27516
27879
|
RelatedRecordCardComponent,
|
|
27517
27880
|
MetadataContactComponent,
|
|
27518
27881
|
MetadataCatalogComponent,
|
|
@@ -27543,7 +27906,6 @@ class UiElementsModule {
|
|
|
27543
27906
|
DownloadItemComponent,
|
|
27544
27907
|
DownloadsListComponent,
|
|
27545
27908
|
ApiCardComponent,
|
|
27546
|
-
LinkCardComponent,
|
|
27547
27909
|
RelatedRecordCardComponent,
|
|
27548
27910
|
MetadataContactComponent,
|
|
27549
27911
|
MetadataCatalogComponent,
|
|
@@ -27597,7 +27959,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27597
27959
|
DownloadItemComponent,
|
|
27598
27960
|
DownloadsListComponent,
|
|
27599
27961
|
ApiCardComponent,
|
|
27600
|
-
LinkCardComponent,
|
|
27601
27962
|
RelatedRecordCardComponent,
|
|
27602
27963
|
MetadataContactComponent,
|
|
27603
27964
|
MetadataCatalogComponent,
|
|
@@ -27620,7 +27981,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27620
27981
|
DownloadItemComponent,
|
|
27621
27982
|
DownloadsListComponent,
|
|
27622
27983
|
ApiCardComponent,
|
|
27623
|
-
LinkCardComponent,
|
|
27624
27984
|
RelatedRecordCardComponent,
|
|
27625
27985
|
MetadataContactComponent,
|
|
27626
27986
|
MetadataCatalogComponent,
|
|
@@ -28889,7 +29249,7 @@ class ResultsLayoutComponent {
|
|
|
28889
29249
|
this.searchFacade.setResultsLayout(layout);
|
|
28890
29250
|
}
|
|
28891
29251
|
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" }] }); }
|
|
29252
|
+
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
29253
|
}
|
|
28894
29254
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsLayoutComponent, decorators: [{
|
|
28895
29255
|
type: Component,
|
|
@@ -29097,7 +29457,7 @@ class SortByComponent {
|
|
|
29097
29457
|
this.searchService.setSortBy(criteriaAsString.split(','));
|
|
29098
29458
|
}
|
|
29099
29459
|
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" }] }); }
|
|
29460
|
+
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
29461
|
}
|
|
29102
29462
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SortByComponent, decorators: [{
|
|
29103
29463
|
type: Component,
|
|
@@ -29965,7 +30325,7 @@ class AddLayerFromWmsComponent {
|
|
|
29965
30325
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
29966
30326
|
}
|
|
29967
30327
|
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" }] }); }
|
|
30328
|
+
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
30329
|
}
|
|
29970
30330
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, decorators: [{
|
|
29971
30331
|
type: Component,
|
|
@@ -30116,7 +30476,7 @@ class AddLayerFromWfsComponent {
|
|
|
30116
30476
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
30117
30477
|
}
|
|
30118
30478
|
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" }] }); }
|
|
30479
|
+
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
30480
|
}
|
|
30121
30481
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, decorators: [{
|
|
30122
30482
|
type: Component,
|
|
@@ -30136,7 +30496,7 @@ class LayersPanelComponent {
|
|
|
30136
30496
|
this.mapFacade.addLayer(layer);
|
|
30137
30497
|
}
|
|
30138
30498
|
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$
|
|
30499
|
+
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
30500
|
}
|
|
30141
30501
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LayersPanelComponent, decorators: [{
|
|
30142
30502
|
type: Component,
|
|
@@ -30605,14 +30965,12 @@ on(setChartConfig, (state, { chartConfig }) => ({
|
|
|
30605
30965
|
*/
|
|
30606
30966
|
on(loadUserFeedbacks, (state) => ({
|
|
30607
30967
|
...state,
|
|
30608
|
-
error: null,
|
|
30609
30968
|
allUserFeedbacksLoading: true,
|
|
30610
30969
|
})), on(addUserFeedback, (state) => ({
|
|
30611
30970
|
...state,
|
|
30612
30971
|
addUserFeedbackLoading: true,
|
|
30613
30972
|
})), on(loadUserFeedbacksSuccess, (state, { userFeedbacks }) => ({
|
|
30614
30973
|
...state,
|
|
30615
|
-
error: null,
|
|
30616
30974
|
userFeedbacks: userFeedbacks,
|
|
30617
30975
|
addUserFeedbackLoading: false,
|
|
30618
30976
|
allUserFeedbacksLoading: false,
|
|
@@ -30994,7 +31352,7 @@ class TableComponent {
|
|
|
30994
31352
|
return rowIdPrefix + id;
|
|
30995
31353
|
}
|
|
30996
31354
|
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$
|
|
31355
|
+
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
31356
|
}
|
|
30999
31357
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, decorators: [{
|
|
31000
31358
|
type: Component,
|
|
@@ -31864,6 +32222,7 @@ marker('wfs.unreachable.http');
|
|
|
31864
32222
|
marker('wfs.unreachable.unknown');
|
|
31865
32223
|
marker('wfs.featuretype.notfound');
|
|
31866
32224
|
marker('wfs.geojsongml.notsupported');
|
|
32225
|
+
marker('ogc.unreachable.unknown');
|
|
31867
32226
|
marker('dataset.error.network');
|
|
31868
32227
|
marker('dataset.error.http');
|
|
31869
32228
|
marker('dataset.error.parse');
|
|
@@ -31943,6 +32302,27 @@ class DataService {
|
|
|
31943
32302
|
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
31944
32303
|
}))));
|
|
31945
32304
|
}
|
|
32305
|
+
async getDownloadLinksFromOgcApiFeatures(ogcApiLink) {
|
|
32306
|
+
const collectionInfo = await this.getDownloadUrlsFromOgcApi(ogcApiLink.url.href);
|
|
32307
|
+
return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
|
|
32308
|
+
return {
|
|
32309
|
+
...ogcApiLink,
|
|
32310
|
+
type: 'download',
|
|
32311
|
+
url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
|
|
32312
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
|
|
32313
|
+
};
|
|
32314
|
+
});
|
|
32315
|
+
}
|
|
32316
|
+
async getDownloadUrlsFromOgcApi(url) {
|
|
32317
|
+
const endpoint = new OgcApiEndpoint(this.proxy.getProxiedUrl(url));
|
|
32318
|
+
return await endpoint.featureCollections
|
|
32319
|
+
.then((collections) => {
|
|
32320
|
+
return endpoint.getCollectionInfo(collections[0]);
|
|
32321
|
+
})
|
|
32322
|
+
.catch((error) => {
|
|
32323
|
+
throw new Error(`ogc.unreachable.unknown`);
|
|
32324
|
+
});
|
|
32325
|
+
}
|
|
31946
32326
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
31947
32327
|
return ['json', 'geojson'].map((format) => ({
|
|
31948
32328
|
...esriRestLink,
|
|
@@ -31986,6 +32366,17 @@ class DataService {
|
|
|
31986
32366
|
const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
|
|
31987
32367
|
return from(openDataset(url, 'geojson')).pipe();
|
|
31988
32368
|
}
|
|
32369
|
+
else if (link.type === 'service' &&
|
|
32370
|
+
link.accessServiceProtocol === 'ogcFeatures') {
|
|
32371
|
+
return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
|
|
32372
|
+
const geojsonUrl = collectionInfo.jsonDownloadLink;
|
|
32373
|
+
return openDataset(geojsonUrl, 'geojson');
|
|
32374
|
+
}), tap$1((url) => {
|
|
32375
|
+
if (url === null) {
|
|
32376
|
+
throw new Error('wfs.geojsongml.notsupported');
|
|
32377
|
+
}
|
|
32378
|
+
}));
|
|
32379
|
+
}
|
|
31989
32380
|
return throwError(() => 'protocol not supported');
|
|
31990
32381
|
}
|
|
31991
32382
|
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 +32603,7 @@ class ChartViewComponent {
|
|
|
32212
32603
|
this.changeDetector.detectChanges();
|
|
32213
32604
|
}
|
|
32214
32605
|
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 }); }
|
|
32606
|
+
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
32607
|
}
|
|
32217
32608
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
32218
32609
|
type: Component,
|
|
@@ -32444,7 +32835,8 @@ class MapViewComponent {
|
|
|
32444
32835
|
}
|
|
32445
32836
|
else if ((link.type === 'service' &&
|
|
32446
32837
|
(link.accessServiceProtocol === 'wfs' ||
|
|
32447
|
-
link.accessServiceProtocol === 'esriRest'
|
|
32838
|
+
link.accessServiceProtocol === 'esriRest' ||
|
|
32839
|
+
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
32448
32840
|
link.type === 'download') {
|
|
32449
32841
|
return this.dataService.readAsGeoJson(link).pipe(map$1((data) => ({
|
|
32450
32842
|
type: MapContextLayerTypeEnum.GEOJSON,
|
|
@@ -32457,7 +32849,7 @@ class MapViewComponent {
|
|
|
32457
32849
|
this.selectedLinkIndex$.next(link);
|
|
32458
32850
|
}
|
|
32459
32851
|
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 }); }
|
|
32852
|
+
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
32853
|
}
|
|
32462
32854
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
32463
32855
|
type: Component,
|
|
@@ -32495,7 +32887,7 @@ class DataViewComponent {
|
|
|
32495
32887
|
this.selectedLink$.next(link);
|
|
32496
32888
|
}
|
|
32497
32889
|
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 }); }
|
|
32890
|
+
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
32891
|
}
|
|
32500
32892
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewComponent, decorators: [{
|
|
32501
32893
|
type: Component,
|
|
@@ -32589,7 +32981,7 @@ class OrganisationsFilterComponent {
|
|
|
32589
32981
|
this.filterByValueChange.next(inputValue);
|
|
32590
32982
|
}
|
|
32591
32983
|
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 }); }
|
|
32984
|
+
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
32985
|
}
|
|
32594
32986
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: OrganisationsFilterComponent, decorators: [{
|
|
32595
32987
|
type: Component,
|
|
@@ -32629,7 +33021,7 @@ class LanguageSwitcherComponent {
|
|
|
32629
33021
|
this.translate.use(value);
|
|
32630
33022
|
}
|
|
32631
33023
|
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"] }] }); }
|
|
33024
|
+
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
33025
|
}
|
|
32634
33026
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
32635
33027
|
type: Component,
|
|
@@ -33042,7 +33434,7 @@ class DataViewShareComponent {
|
|
|
33042
33434
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
33043
33435
|
}
|
|
33044
33436
|
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$
|
|
33437
|
+
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
33438
|
}
|
|
33047
33439
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewShareComponent, decorators: [{
|
|
33048
33440
|
type: Component,
|
|
@@ -33171,6 +33563,27 @@ const DEFAULT_FIELDS = [
|
|
|
33171
33563
|
},
|
|
33172
33564
|
onSaveProcess: '${dateNow()}',
|
|
33173
33565
|
},
|
|
33566
|
+
{
|
|
33567
|
+
model: 'licenses',
|
|
33568
|
+
formFieldConfig: {
|
|
33569
|
+
labelKey: marker('editor.record.form.license'),
|
|
33570
|
+
type: 'list',
|
|
33571
|
+
},
|
|
33572
|
+
},
|
|
33573
|
+
{
|
|
33574
|
+
model: 'resourceUpdated',
|
|
33575
|
+
formFieldConfig: {
|
|
33576
|
+
labelKey: marker('editor.record.form.resourceUpdated'),
|
|
33577
|
+
type: 'date',
|
|
33578
|
+
},
|
|
33579
|
+
},
|
|
33580
|
+
{
|
|
33581
|
+
model: 'updateFrequency',
|
|
33582
|
+
formFieldConfig: {
|
|
33583
|
+
labelKey: marker('editor.record.form.updateFrequency'),
|
|
33584
|
+
type: 'text',
|
|
33585
|
+
},
|
|
33586
|
+
},
|
|
33174
33587
|
];
|
|
33175
33588
|
|
|
33176
33589
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
@@ -33555,7 +33968,7 @@ class WizardFieldComponent {
|
|
|
33555
33968
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
33556
33969
|
},
|
|
33557
33970
|
{ 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:
|
|
33971
|
+
], 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
33972
|
}
|
|
33560
33973
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
33561
33974
|
type: Component,
|
|
@@ -33884,6 +34297,174 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33884
34297
|
args: [{ selector: 'gn-ui-form-field-temporal-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-temporal-extent works!</p>\n" }]
|
|
33885
34298
|
}] });
|
|
33886
34299
|
|
|
34300
|
+
class FormFieldLicenseComponent {
|
|
34301
|
+
constructor() {
|
|
34302
|
+
this.choices = [
|
|
34303
|
+
{
|
|
34304
|
+
value: 'cc-by',
|
|
34305
|
+
label: marker('editor.record.form.license.cc-by'),
|
|
34306
|
+
},
|
|
34307
|
+
{
|
|
34308
|
+
value: 'cc-by-sa',
|
|
34309
|
+
label: marker('editor.record.form.license.cc-by-sa'),
|
|
34310
|
+
},
|
|
34311
|
+
{
|
|
34312
|
+
value: 'cc-zero',
|
|
34313
|
+
label: marker('editor.record.form.license.cc-zero'),
|
|
34314
|
+
},
|
|
34315
|
+
{
|
|
34316
|
+
value: 'etalab',
|
|
34317
|
+
label: marker('editor.record.form.license.etalab'),
|
|
34318
|
+
},
|
|
34319
|
+
{
|
|
34320
|
+
value: 'etalab-v2',
|
|
34321
|
+
label: marker('editor.record.form.license.etalab-v2'),
|
|
34322
|
+
},
|
|
34323
|
+
{
|
|
34324
|
+
value: 'odbl',
|
|
34325
|
+
label: marker('editor.record.form.license.odbl'),
|
|
34326
|
+
},
|
|
34327
|
+
{
|
|
34328
|
+
value: 'odc-by',
|
|
34329
|
+
label: marker('editor.record.form.license.odc-by'),
|
|
34330
|
+
},
|
|
34331
|
+
{
|
|
34332
|
+
value: 'pddl',
|
|
34333
|
+
label: marker('editor.record.form.license.pddl'),
|
|
34334
|
+
},
|
|
34335
|
+
{
|
|
34336
|
+
value: 'unknown',
|
|
34337
|
+
label: marker('editor.record.form.license.unknown'),
|
|
34338
|
+
},
|
|
34339
|
+
];
|
|
34340
|
+
}
|
|
34341
|
+
get selected() {
|
|
34342
|
+
return this.control.value[0]?.text;
|
|
34343
|
+
}
|
|
34344
|
+
onSelectValue(value) {
|
|
34345
|
+
this.control.setValue([{ text: value }]);
|
|
34346
|
+
}
|
|
34347
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34348
|
+
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 }); }
|
|
34349
|
+
}
|
|
34350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, decorators: [{
|
|
34351
|
+
type: Component,
|
|
34352
|
+
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" }]
|
|
34353
|
+
}], propDecorators: { control: [{
|
|
34354
|
+
type: Input
|
|
34355
|
+
}], label: [{
|
|
34356
|
+
type: Input
|
|
34357
|
+
}] } });
|
|
34358
|
+
|
|
34359
|
+
class FormFieldResourceUpdatedComponent {
|
|
34360
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34361
|
+
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 }); }
|
|
34362
|
+
}
|
|
34363
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, decorators: [{
|
|
34364
|
+
type: Component,
|
|
34365
|
+
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" }]
|
|
34366
|
+
}], propDecorators: { control: [{
|
|
34367
|
+
type: Input
|
|
34368
|
+
}] } });
|
|
34369
|
+
|
|
34370
|
+
class FormFieldUpdateFrequencyComponent {
|
|
34371
|
+
get planned() {
|
|
34372
|
+
return this.control.value !== 'notPlanned';
|
|
34373
|
+
}
|
|
34374
|
+
constructor(translateService) {
|
|
34375
|
+
this.translateService = translateService;
|
|
34376
|
+
this.choices = [
|
|
34377
|
+
{
|
|
34378
|
+
value: 'day.1',
|
|
34379
|
+
label: this.translateService.instant('domain.record.updateFrequency.day', {
|
|
34380
|
+
count: 1,
|
|
34381
|
+
}),
|
|
34382
|
+
},
|
|
34383
|
+
{
|
|
34384
|
+
value: 'day.2',
|
|
34385
|
+
label: this.translateService.instant('domain.record.updateFrequency.day', {
|
|
34386
|
+
count: 2,
|
|
34387
|
+
}),
|
|
34388
|
+
},
|
|
34389
|
+
{
|
|
34390
|
+
value: 'week.1',
|
|
34391
|
+
label: this.translateService.instant('domain.record.updateFrequency.week', {
|
|
34392
|
+
count: 1,
|
|
34393
|
+
}),
|
|
34394
|
+
},
|
|
34395
|
+
{
|
|
34396
|
+
value: 'week.2',
|
|
34397
|
+
label: this.translateService.instant('domain.record.updateFrequency.week', {
|
|
34398
|
+
count: 2,
|
|
34399
|
+
}),
|
|
34400
|
+
},
|
|
34401
|
+
{
|
|
34402
|
+
value: 'month.1',
|
|
34403
|
+
label: this.translateService.instant('domain.record.updateFrequency.month', {
|
|
34404
|
+
count: 1,
|
|
34405
|
+
}),
|
|
34406
|
+
},
|
|
34407
|
+
{
|
|
34408
|
+
value: 'month.2',
|
|
34409
|
+
label: this.translateService.instant('domain.record.updateFrequency.month', {
|
|
34410
|
+
count: 2,
|
|
34411
|
+
}),
|
|
34412
|
+
},
|
|
34413
|
+
{
|
|
34414
|
+
value: 'year.1',
|
|
34415
|
+
label: this.translateService.instant('domain.record.updateFrequency.year', {
|
|
34416
|
+
count: 1,
|
|
34417
|
+
}),
|
|
34418
|
+
},
|
|
34419
|
+
{
|
|
34420
|
+
value: 'year.2',
|
|
34421
|
+
label: this.translateService.instant('domain.record.updateFrequency.year', {
|
|
34422
|
+
count: 2,
|
|
34423
|
+
}),
|
|
34424
|
+
},
|
|
34425
|
+
];
|
|
34426
|
+
}
|
|
34427
|
+
ngOnInit() {
|
|
34428
|
+
const updatedTimes = this.control.value?.updatedTimes;
|
|
34429
|
+
const per = this.control.value?.per;
|
|
34430
|
+
if (updatedTimes && updatedTimes !== 1 && updatedTimes !== 2) {
|
|
34431
|
+
this.choices = [
|
|
34432
|
+
{
|
|
34433
|
+
value: `${per}.${updatedTimes}`,
|
|
34434
|
+
label: this.translateService.instant(`domain.record.updateFrequency.${per}`, {
|
|
34435
|
+
count: updatedTimes,
|
|
34436
|
+
}),
|
|
34437
|
+
},
|
|
34438
|
+
...this.choices,
|
|
34439
|
+
];
|
|
34440
|
+
}
|
|
34441
|
+
}
|
|
34442
|
+
onPlannedToggled() {
|
|
34443
|
+
if (this.planned) {
|
|
34444
|
+
this.control.setValue('notPlanned');
|
|
34445
|
+
}
|
|
34446
|
+
else {
|
|
34447
|
+
this.control.setValue({ updatedTimes: 1, per: 'day' });
|
|
34448
|
+
}
|
|
34449
|
+
}
|
|
34450
|
+
get selectedFrequency() {
|
|
34451
|
+
const { updatedTimes, per } = this.control.value;
|
|
34452
|
+
return `${per}.${updatedTimes}`;
|
|
34453
|
+
}
|
|
34454
|
+
onSelectFrequencyValue(value) {
|
|
34455
|
+
const split = value.split('.');
|
|
34456
|
+
this.control.setValue({ updatedTimes: Number(split[1]), per: split[0] });
|
|
34457
|
+
}
|
|
34458
|
+
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 }); }
|
|
34459
|
+
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 }); }
|
|
34460
|
+
}
|
|
34461
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldUpdateFrequencyComponent, decorators: [{
|
|
34462
|
+
type: Component,
|
|
34463
|
+
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" }]
|
|
34464
|
+
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; }, propDecorators: { control: [{
|
|
34465
|
+
type: Input
|
|
34466
|
+
}] } });
|
|
34467
|
+
|
|
33887
34468
|
class FormFieldComponent {
|
|
33888
34469
|
set value(v) {
|
|
33889
34470
|
this.formControl.setValue(v, {
|
|
@@ -33938,8 +34519,20 @@ class FormFieldComponent {
|
|
|
33938
34519
|
get isAbstract() {
|
|
33939
34520
|
return this.model === 'abstract';
|
|
33940
34521
|
}
|
|
34522
|
+
get isLicenses() {
|
|
34523
|
+
return this.model === 'licenses';
|
|
34524
|
+
}
|
|
34525
|
+
get isResourceUpdated() {
|
|
34526
|
+
return this.model === 'resourceUpdated';
|
|
34527
|
+
}
|
|
34528
|
+
get isUpdateFrequency() {
|
|
34529
|
+
return this.model === 'updateFrequency';
|
|
34530
|
+
}
|
|
34531
|
+
get withoutWrapper() {
|
|
34532
|
+
return this.model === 'title' || this.model === 'abstract';
|
|
34533
|
+
}
|
|
33941
34534
|
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 <
|
|
34535
|
+
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
34536
|
}
|
|
33944
34537
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
33945
34538
|
type: Component,
|
|
@@ -33949,6 +34542,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33949
34542
|
EditableLabelDirective,
|
|
33950
34543
|
MatIconModule,
|
|
33951
34544
|
MatTooltipModule,
|
|
34545
|
+
FormFieldWrapperComponent,
|
|
34546
|
+
FormFieldLicenseComponent,
|
|
34547
|
+
FormFieldResourceUpdatedComponent,
|
|
34548
|
+
FormFieldUpdateFrequencyComponent,
|
|
33952
34549
|
FormFieldSimpleComponent,
|
|
33953
34550
|
FormFieldRichComponent,
|
|
33954
34551
|
FormFieldObjectComponent,
|
|
@@ -33957,7 +34554,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33957
34554
|
FormFieldFileComponent,
|
|
33958
34555
|
FormFieldArrayComponent,
|
|
33959
34556
|
TranslateModule,
|
|
33960
|
-
], template: "<div class=\"flex flex-col h-full\">\n <
|
|
34557
|
+
], 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
34558
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
33962
34559
|
type: Input
|
|
33963
34560
|
}], config: [{
|
|
@@ -34315,7 +34912,7 @@ class DefaultRouterModule {
|
|
|
34315
34912
|
};
|
|
34316
34913
|
}
|
|
34317
34914
|
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$
|
|
34915
|
+
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
34916
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
34320
34917
|
RouterFacade,
|
|
34321
34918
|
{
|
|
@@ -34358,5 +34955,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
34358
34955
|
* Generated bundle index. Do not edit.
|
|
34359
34956
|
*/
|
|
34360
34957
|
|
|
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 };
|
|
34958
|
+
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
34959
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|