geonetwork-ui 2.3.0-dev.61774f7d → 2.3.0-dev.639c48f8
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/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/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/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 +1495 -896
- 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/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/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/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/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/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/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": "",
|
|
@@ -22296,6 +22354,27 @@ const FORMATS = {
|
|
|
22296
22354
|
color: '#de630b',
|
|
22297
22355
|
mimeTypes: ['application/x-dxf', 'image/x-dxf'],
|
|
22298
22356
|
},
|
|
22357
|
+
html: {
|
|
22358
|
+
extensions: ['html', 'htm'],
|
|
22359
|
+
priority: 12,
|
|
22360
|
+
color: '#f2bb3a',
|
|
22361
|
+
mimeTypes: ['text/html'],
|
|
22362
|
+
},
|
|
22363
|
+
fgb: {
|
|
22364
|
+
extensions: ['fgb', 'flatgeobuf'],
|
|
22365
|
+
priority: 13,
|
|
22366
|
+
color: '#f2bb3a',
|
|
22367
|
+
mimeTypes: ['application/flatgeobuf'],
|
|
22368
|
+
},
|
|
22369
|
+
jsonfg: {
|
|
22370
|
+
extensions: ['jsonfg', 'jsonfgc'],
|
|
22371
|
+
priority: 14,
|
|
22372
|
+
color: '#f2bb3a',
|
|
22373
|
+
mimeTypes: [
|
|
22374
|
+
'application/vnd.ogc.fg+json',
|
|
22375
|
+
'application/vnd.ogc.fg+json;compatibility=geojson',
|
|
22376
|
+
],
|
|
22377
|
+
},
|
|
22299
22378
|
};
|
|
22300
22379
|
function getFormatPriority(linkFormat) {
|
|
22301
22380
|
for (const format in FORMATS) {
|
|
@@ -22427,7 +22506,7 @@ class LinkClassifierService {
|
|
|
22427
22506
|
case 'wmts':
|
|
22428
22507
|
return [LinkUsage.API, LinkUsage.MAP_API];
|
|
22429
22508
|
case 'ogcFeatures':
|
|
22430
|
-
return [LinkUsage.API];
|
|
22509
|
+
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
22431
22510
|
default:
|
|
22432
22511
|
return [LinkUsage.UNKNOWN];
|
|
22433
22512
|
}
|
|
@@ -23728,13 +23807,30 @@ class MapContextService {
|
|
|
23728
23807
|
const style = this.styleService.styles.default;
|
|
23729
23808
|
switch (type) {
|
|
23730
23809
|
case MapContextLayerTypeEnum.OGCAPI:
|
|
23731
|
-
|
|
23732
|
-
|
|
23733
|
-
|
|
23734
|
-
|
|
23735
|
-
|
|
23736
|
-
|
|
23737
|
-
|
|
23810
|
+
if (layerModel.layerType === 'vectorTiles') {
|
|
23811
|
+
return new VectorTileLayer({
|
|
23812
|
+
source: new OGCVectorTile({
|
|
23813
|
+
url: layerModel.url,
|
|
23814
|
+
format: new MVT(),
|
|
23815
|
+
}),
|
|
23816
|
+
});
|
|
23817
|
+
}
|
|
23818
|
+
else if (layerModel.layerType === 'mapTiles') {
|
|
23819
|
+
return new TileLayer({
|
|
23820
|
+
source: new OGCMapTile({
|
|
23821
|
+
url: layerModel.url,
|
|
23822
|
+
}),
|
|
23823
|
+
});
|
|
23824
|
+
}
|
|
23825
|
+
else {
|
|
23826
|
+
return new VectorLayer({
|
|
23827
|
+
source: new VectorSource({
|
|
23828
|
+
format: new GeoJSON(),
|
|
23829
|
+
url: layerModel.url,
|
|
23830
|
+
}),
|
|
23831
|
+
style,
|
|
23832
|
+
});
|
|
23833
|
+
}
|
|
23738
23834
|
case MapContextLayerTypeEnum.XYZ:
|
|
23739
23835
|
return new TileLayer({
|
|
23740
23836
|
source: new XYZ({
|
|
@@ -23973,6 +24069,173 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23973
24069
|
type: Input
|
|
23974
24070
|
}] } });
|
|
23975
24071
|
|
|
24072
|
+
class PopupAlertComponent {
|
|
24073
|
+
constructor(changeDetector) {
|
|
24074
|
+
this.changeDetector = changeDetector;
|
|
24075
|
+
this.type = 'info';
|
|
24076
|
+
this.position = 'top';
|
|
24077
|
+
this.expanded = false;
|
|
24078
|
+
this.timeout = null;
|
|
24079
|
+
}
|
|
24080
|
+
get showDuration() {
|
|
24081
|
+
const chars = this.content.nativeElement.innerHTML.length;
|
|
24082
|
+
return Math.max(3000, chars * 20);
|
|
24083
|
+
}
|
|
24084
|
+
ngOnInit() {
|
|
24085
|
+
this.expandAndClose();
|
|
24086
|
+
}
|
|
24087
|
+
expand() {
|
|
24088
|
+
this.expanded = true;
|
|
24089
|
+
this.changeDetector.detectChanges();
|
|
24090
|
+
clearTimeout(this.timeout);
|
|
24091
|
+
}
|
|
24092
|
+
expandAndClose() {
|
|
24093
|
+
this.expanded = true;
|
|
24094
|
+
this.changeDetector.detectChanges();
|
|
24095
|
+
clearTimeout(this.timeout);
|
|
24096
|
+
this.timeout = setTimeout(() => {
|
|
24097
|
+
this.expanded = false;
|
|
24098
|
+
this.changeDetector.detectChanges();
|
|
24099
|
+
}, this.showDuration);
|
|
24100
|
+
}
|
|
24101
|
+
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 }); }
|
|
24102
|
+
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 }); }
|
|
24103
|
+
}
|
|
24104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, decorators: [{
|
|
24105
|
+
type: Component,
|
|
24106
|
+
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"] }]
|
|
24107
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
|
|
24108
|
+
type: Input
|
|
24109
|
+
}], type: [{
|
|
24110
|
+
type: Input
|
|
24111
|
+
}], position: [{
|
|
24112
|
+
type: Input
|
|
24113
|
+
}], content: [{
|
|
24114
|
+
type: ViewChild,
|
|
24115
|
+
args: ['content']
|
|
24116
|
+
}] } });
|
|
24117
|
+
|
|
24118
|
+
class AutocompleteComponent {
|
|
24119
|
+
constructor(cdRef) {
|
|
24120
|
+
this.cdRef = cdRef;
|
|
24121
|
+
this.clearOnSelection = false;
|
|
24122
|
+
this.autoFocus = false;
|
|
24123
|
+
this.itemSelected = new EventEmitter();
|
|
24124
|
+
this.inputSubmitted = new EventEmitter();
|
|
24125
|
+
this.inputCleared = new EventEmitter();
|
|
24126
|
+
this.control = new UntypedFormControl();
|
|
24127
|
+
this.subscription = new Subscription();
|
|
24128
|
+
this.cancelEnter = true;
|
|
24129
|
+
this.selectionSubject = new ReplaySubject(1);
|
|
24130
|
+
this.lastInputValue$ = new ReplaySubject(1);
|
|
24131
|
+
this.error = null;
|
|
24132
|
+
this.displayWithFn = (item) => item;
|
|
24133
|
+
}
|
|
24134
|
+
ngOnChanges(changes) {
|
|
24135
|
+
const { value } = changes;
|
|
24136
|
+
if (value) {
|
|
24137
|
+
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24138
|
+
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24139
|
+
if (previousTextValue !== currentTextValue) {
|
|
24140
|
+
this.updateInputValue(value.currentValue);
|
|
24141
|
+
}
|
|
24142
|
+
}
|
|
24143
|
+
}
|
|
24144
|
+
ngOnInit() {
|
|
24145
|
+
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) => {
|
|
24146
|
+
this.error = error.message;
|
|
24147
|
+
return of([]);
|
|
24148
|
+
}), finalize(() => (this.searching = false)));
|
|
24149
|
+
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24150
|
+
if (any !== '') {
|
|
24151
|
+
this.cancelEnter = false;
|
|
24152
|
+
}
|
|
24153
|
+
});
|
|
24154
|
+
this.control.valueChanges
|
|
24155
|
+
.pipe(filter((value) => typeof value === 'string'))
|
|
24156
|
+
.subscribe(this.lastInputValue$);
|
|
24157
|
+
}
|
|
24158
|
+
ngAfterViewInit() {
|
|
24159
|
+
this.autocomplete.optionSelected.subscribe(this.selectionSubject);
|
|
24160
|
+
if (this.autoFocus) {
|
|
24161
|
+
this.inputRef.nativeElement.focus();
|
|
24162
|
+
this.cdRef.detectChanges();
|
|
24163
|
+
}
|
|
24164
|
+
}
|
|
24165
|
+
ngOnDestroy() {
|
|
24166
|
+
this.subscription.unsubscribe();
|
|
24167
|
+
}
|
|
24168
|
+
updateInputValue(value) {
|
|
24169
|
+
if (value) {
|
|
24170
|
+
this.control.setValue(value);
|
|
24171
|
+
}
|
|
24172
|
+
if (this.inputRef) {
|
|
24173
|
+
this.inputRef.nativeElement.value = value?.title || '';
|
|
24174
|
+
}
|
|
24175
|
+
}
|
|
24176
|
+
clear() {
|
|
24177
|
+
this.inputRef.nativeElement.value = '';
|
|
24178
|
+
this.inputCleared.emit();
|
|
24179
|
+
this.selectionSubject
|
|
24180
|
+
.pipe(take(1))
|
|
24181
|
+
.subscribe((selection) => selection && selection.option.deselect());
|
|
24182
|
+
this.inputRef.nativeElement.focus();
|
|
24183
|
+
this.triggerRef.closePanel();
|
|
24184
|
+
}
|
|
24185
|
+
handleEnter(any) {
|
|
24186
|
+
if (!this.cancelEnter) {
|
|
24187
|
+
this.inputSubmitted.emit(any);
|
|
24188
|
+
this.triggerRef.closePanel();
|
|
24189
|
+
}
|
|
24190
|
+
}
|
|
24191
|
+
handleClickSearch() {
|
|
24192
|
+
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24193
|
+
this.triggerRef.closePanel();
|
|
24194
|
+
}
|
|
24195
|
+
handleSelection(event) {
|
|
24196
|
+
this.cancelEnter = true;
|
|
24197
|
+
this.itemSelected.emit(event.option.value);
|
|
24198
|
+
if (this.clearOnSelection) {
|
|
24199
|
+
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24200
|
+
this.inputRef.nativeElement.value = any;
|
|
24201
|
+
});
|
|
24202
|
+
}
|
|
24203
|
+
}
|
|
24204
|
+
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 }); }
|
|
24205
|
+
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 }); }
|
|
24206
|
+
}
|
|
24207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
24208
|
+
type: Component,
|
|
24209
|
+
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"] }]
|
|
24210
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
24211
|
+
type: Input
|
|
24212
|
+
}], action: [{
|
|
24213
|
+
type: Input
|
|
24214
|
+
}], value: [{
|
|
24215
|
+
type: Input
|
|
24216
|
+
}], clearOnSelection: [{
|
|
24217
|
+
type: Input
|
|
24218
|
+
}], autoFocus: [{
|
|
24219
|
+
type: Input
|
|
24220
|
+
}], itemSelected: [{
|
|
24221
|
+
type: Output
|
|
24222
|
+
}], inputSubmitted: [{
|
|
24223
|
+
type: Output
|
|
24224
|
+
}], inputCleared: [{
|
|
24225
|
+
type: Output
|
|
24226
|
+
}], triggerRef: [{
|
|
24227
|
+
type: ViewChild,
|
|
24228
|
+
args: [MatAutocompleteTrigger]
|
|
24229
|
+
}], autocomplete: [{
|
|
24230
|
+
type: ViewChild,
|
|
24231
|
+
args: [MatAutocomplete]
|
|
24232
|
+
}], inputRef: [{
|
|
24233
|
+
type: ViewChild,
|
|
24234
|
+
args: ['searchInput']
|
|
24235
|
+
}], displayWithFn: [{
|
|
24236
|
+
type: Input
|
|
24237
|
+
}] } });
|
|
24238
|
+
|
|
23976
24239
|
class ButtonComponent {
|
|
23977
24240
|
constructor() {
|
|
23978
24241
|
this.btnClass = 'gn-ui-btn-default';
|
|
@@ -24024,171 +24287,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24024
24287
|
type: Output
|
|
24025
24288
|
}] } });
|
|
24026
24289
|
|
|
24027
|
-
|
|
24028
|
-
class DropdownSelectorComponent {
|
|
24290
|
+
class CheckToggleComponent {
|
|
24029
24291
|
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;
|
|
24292
|
+
this.color = 'primary';
|
|
24293
|
+
this.toggled = new EventEmitter();
|
|
24073
24294
|
}
|
|
24074
|
-
|
|
24075
|
-
this.
|
|
24076
|
-
this.selected = choice.value;
|
|
24077
|
-
this.selectValue.emit(this.selected);
|
|
24295
|
+
toggle(event) {
|
|
24296
|
+
this.toggled.emit(event);
|
|
24078
24297
|
}
|
|
24079
|
-
|
|
24080
|
-
|
|
24081
|
-
|
|
24082
|
-
|
|
24083
|
-
|
|
24084
|
-
|
|
24085
|
-
|
|
24086
|
-
|
|
24087
|
-
|
|
24088
|
-
|
|
24089
|
-
|
|
24090
|
-
|
|
24298
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24299
|
+
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 }); }
|
|
24300
|
+
}
|
|
24301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
24302
|
+
type: Component,
|
|
24303
|
+
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" }]
|
|
24304
|
+
}], propDecorators: { title: [{
|
|
24305
|
+
type: Input
|
|
24306
|
+
}], label: [{
|
|
24307
|
+
type: Input
|
|
24308
|
+
}], value: [{
|
|
24309
|
+
type: Input
|
|
24310
|
+
}], color: [{
|
|
24311
|
+
type: Input
|
|
24312
|
+
}], toggled: [{
|
|
24313
|
+
type: Output
|
|
24314
|
+
}] } });
|
|
24315
|
+
|
|
24316
|
+
class CheckboxComponent {
|
|
24317
|
+
constructor() {
|
|
24318
|
+
this.type = 'default';
|
|
24319
|
+
this.checked = false;
|
|
24320
|
+
this.indeterminate = false;
|
|
24321
|
+
this.changed = new EventEmitter();
|
|
24091
24322
|
}
|
|
24092
|
-
|
|
24093
|
-
this.
|
|
24323
|
+
get classList() {
|
|
24324
|
+
return `${this.type}`;
|
|
24094
24325
|
}
|
|
24095
|
-
|
|
24096
|
-
|
|
24326
|
+
handleClick(event) {
|
|
24327
|
+
event.stopPropagation();
|
|
24328
|
+
this.checked = !this.checked;
|
|
24329
|
+
this.changed.emit(this.checked);
|
|
24097
24330
|
}
|
|
24098
|
-
|
|
24099
|
-
|
|
24331
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24332
|
+
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 }); }
|
|
24333
|
+
}
|
|
24334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
24335
|
+
type: Component,
|
|
24336
|
+
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"] }]
|
|
24337
|
+
}], propDecorators: { type: [{
|
|
24338
|
+
type: Input
|
|
24339
|
+
}], checked: [{
|
|
24340
|
+
type: Input
|
|
24341
|
+
}], indeterminate: [{
|
|
24342
|
+
type: Input
|
|
24343
|
+
}], changed: [{
|
|
24344
|
+
type: Output
|
|
24345
|
+
}] } });
|
|
24346
|
+
|
|
24347
|
+
class ChipsInputComponent {
|
|
24348
|
+
onChange(event) {
|
|
24349
|
+
this.rawChange.next(event);
|
|
24100
24350
|
}
|
|
24101
|
-
|
|
24102
|
-
|
|
24103
|
-
|
|
24104
|
-
|
|
24105
|
-
|
|
24106
|
-
|
|
24107
|
-
|
|
24108
|
-
|
|
24109
|
-
|
|
24110
|
-
|
|
24111
|
-
|
|
24112
|
-
|
|
24113
|
-
|
|
24351
|
+
constructor(http, translate) {
|
|
24352
|
+
this.http = http;
|
|
24353
|
+
this.translate = translate;
|
|
24354
|
+
this.required = false;
|
|
24355
|
+
this.loadOnce = false;
|
|
24356
|
+
this.autocompleteItems = [];
|
|
24357
|
+
this.invalid = false;
|
|
24358
|
+
this.items = [];
|
|
24359
|
+
this.requestAutocompleteItems = (text) => {
|
|
24360
|
+
if (this.url) {
|
|
24361
|
+
if (this.loadOnce && this.loadedItems) {
|
|
24362
|
+
return this.loadedItems;
|
|
24363
|
+
}
|
|
24364
|
+
const url = this.url(text);
|
|
24365
|
+
const lang = LANG_2_TO_3_MAPPER[this.translate.currentLang.slice(0, 2)];
|
|
24366
|
+
return this.http
|
|
24367
|
+
.get(url.replace('${lang}', lang))
|
|
24368
|
+
.pipe(map$1((item) => item.map((i) => i.values[lang])));
|
|
24114
24369
|
}
|
|
24115
|
-
|
|
24116
|
-
this.
|
|
24117
|
-
|
|
24118
|
-
|
|
24119
|
-
|
|
24120
|
-
|
|
24121
|
-
|
|
24122
|
-
this.closeOverlay();
|
|
24123
|
-
}
|
|
24370
|
+
else {
|
|
24371
|
+
return of(this.autocompleteItems || []);
|
|
24372
|
+
}
|
|
24373
|
+
};
|
|
24374
|
+
this.rawChange = new Subject();
|
|
24375
|
+
this.itemsChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24376
|
+
this.subscription = new Subscription();
|
|
24124
24377
|
}
|
|
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();
|
|
24378
|
+
ngOnInit() {
|
|
24379
|
+
if (this.loadOnce) {
|
|
24380
|
+
this.loadedItems = this.requestAutocompleteItems('*').pipe(shareReplay(1));
|
|
24139
24381
|
}
|
|
24382
|
+
this.items = this.selectedItems;
|
|
24383
|
+
this.subscription = this.rawChange
|
|
24384
|
+
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24385
|
+
.subscribe();
|
|
24386
|
+
this.rawChange.next(this.items);
|
|
24140
24387
|
}
|
|
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();
|
|
24388
|
+
ngOnDestroy() {
|
|
24389
|
+
this.subscription.unsubscribe();
|
|
24149
24390
|
}
|
|
24150
|
-
|
|
24151
|
-
|
|
24391
|
+
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 }); }
|
|
24392
|
+
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"] }] }); }
|
|
24393
|
+
}
|
|
24394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, decorators: [{
|
|
24395
|
+
type: Component,
|
|
24396
|
+
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"] }]
|
|
24397
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1$1.TranslateService }]; }, propDecorators: { url: [{
|
|
24398
|
+
type: Input
|
|
24399
|
+
}], placeholder: [{
|
|
24400
|
+
type: Input
|
|
24401
|
+
}], selectedItems: [{
|
|
24402
|
+
type: Input
|
|
24403
|
+
}], required: [{
|
|
24404
|
+
type: Input
|
|
24405
|
+
}], loadOnce: [{
|
|
24406
|
+
type: Input
|
|
24407
|
+
}], autocompleteItems: [{
|
|
24408
|
+
type: Input
|
|
24409
|
+
}], itemsChange: [{
|
|
24410
|
+
type: Output
|
|
24411
|
+
}] } });
|
|
24412
|
+
|
|
24413
|
+
class CopyTextButtonComponent {
|
|
24414
|
+
constructor() {
|
|
24415
|
+
this.displayText = true;
|
|
24416
|
+
this.rows = 1;
|
|
24152
24417
|
}
|
|
24153
|
-
|
|
24154
|
-
|
|
24155
|
-
|
|
24156
|
-
this.onSelectValue(choice);
|
|
24157
|
-
}
|
|
24418
|
+
copyText(event) {
|
|
24419
|
+
navigator.clipboard.writeText(this.text);
|
|
24420
|
+
event.target.blur();
|
|
24158
24421
|
}
|
|
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:
|
|
24422
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24423
|
+
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
24424
|
}
|
|
24162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24425
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
24163
24426
|
type: Component,
|
|
24164
|
-
args: [{ selector: 'gn-ui-
|
|
24165
|
-
}], propDecorators: {
|
|
24166
|
-
type: Input
|
|
24167
|
-
}], showTitle: [{
|
|
24427
|
+
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" }]
|
|
24428
|
+
}], propDecorators: { text: [{
|
|
24168
24429
|
type: Input
|
|
24169
|
-
}],
|
|
24430
|
+
}], tooltipText: [{
|
|
24170
24431
|
type: Input
|
|
24171
|
-
}],
|
|
24432
|
+
}], displayText: [{
|
|
24172
24433
|
type: Input
|
|
24173
|
-
}],
|
|
24434
|
+
}], rows: [{
|
|
24174
24435
|
type: Input
|
|
24175
|
-
}]
|
|
24436
|
+
}] } });
|
|
24437
|
+
|
|
24438
|
+
class DatePickerComponent {
|
|
24439
|
+
constructor() {
|
|
24440
|
+
this.dateChange = new EventEmitter();
|
|
24441
|
+
}
|
|
24442
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24443
|
+
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"] }] }); }
|
|
24444
|
+
}
|
|
24445
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
24446
|
+
type: Component,
|
|
24447
|
+
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"] }]
|
|
24448
|
+
}], propDecorators: { date: [{
|
|
24176
24449
|
type: Input
|
|
24177
|
-
}],
|
|
24450
|
+
}], dateChange: [{
|
|
24451
|
+
type: Output
|
|
24452
|
+
}] } });
|
|
24453
|
+
|
|
24454
|
+
class DateRangePickerComponent {
|
|
24455
|
+
startDateSelected(event) {
|
|
24456
|
+
this.startDate = event.value;
|
|
24457
|
+
}
|
|
24458
|
+
endDateSelected(event) {
|
|
24459
|
+
this.endDate = event.value;
|
|
24460
|
+
}
|
|
24461
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24462
|
+
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"] }] }); }
|
|
24463
|
+
}
|
|
24464
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
24465
|
+
type: Component,
|
|
24466
|
+
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"] }]
|
|
24467
|
+
}] });
|
|
24468
|
+
|
|
24469
|
+
const placeholder = 'dropFile';
|
|
24470
|
+
marker('dropFile');
|
|
24471
|
+
class DragAndDropFileInputComponent {
|
|
24472
|
+
constructor() {
|
|
24473
|
+
this.placeholder = placeholder;
|
|
24474
|
+
this.accept = '*';
|
|
24475
|
+
this.fileChange = new EventEmitter();
|
|
24476
|
+
this.selectedFile = null;
|
|
24477
|
+
}
|
|
24478
|
+
get fileName() {
|
|
24479
|
+
return this.selectedFile && this.selectedFile.name;
|
|
24480
|
+
}
|
|
24481
|
+
selectFile(event) {
|
|
24482
|
+
this.selectedFile = event.addedFiles[0];
|
|
24483
|
+
this.fileChange.emit(this.selectedFile);
|
|
24484
|
+
}
|
|
24485
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24486
|
+
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"] }] }); }
|
|
24487
|
+
}
|
|
24488
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
24489
|
+
type: Component,
|
|
24490
|
+
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"] }]
|
|
24491
|
+
}], propDecorators: { placeholder: [{
|
|
24178
24492
|
type: Input
|
|
24179
|
-
}],
|
|
24493
|
+
}], accept: [{
|
|
24180
24494
|
type: Input
|
|
24181
|
-
}],
|
|
24495
|
+
}], fileChange: [{
|
|
24182
24496
|
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
24497
|
}] } });
|
|
24193
24498
|
|
|
24194
24499
|
class DropdownMultiselectComponent {
|
|
@@ -24336,13 +24641,13 @@ class DropdownMultiselectComponent {
|
|
|
24336
24641
|
propagateToDocumentOnly(event);
|
|
24337
24642
|
this.setFocus();
|
|
24338
24643
|
}
|
|
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$
|
|
24644
|
+
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 }); }
|
|
24645
|
+
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
24646
|
}
|
|
24342
24647
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24343
24648
|
type: Component,
|
|
24344
24649
|
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$
|
|
24650
|
+
}], ctorParameters: function () { return [{ type: i1$5.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24346
24651
|
type: Input
|
|
24347
24652
|
}], choices: [{
|
|
24348
24653
|
type: Input
|
|
@@ -24373,123 +24678,300 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24373
24678
|
args: ['checkBox', { read: ElementRef }]
|
|
24374
24679
|
}] } });
|
|
24375
24680
|
|
|
24376
|
-
|
|
24681
|
+
const DEFAULT_ROW_NUMBERS = 6;
|
|
24682
|
+
class DropdownSelectorComponent {
|
|
24377
24683
|
constructor() {
|
|
24378
|
-
this.
|
|
24379
|
-
|
|
24380
|
-
|
|
24381
|
-
|
|
24382
|
-
|
|
24383
|
-
|
|
24384
|
-
|
|
24385
|
-
|
|
24386
|
-
|
|
24387
|
-
|
|
24388
|
-
|
|
24389
|
-
|
|
24390
|
-
|
|
24391
|
-
|
|
24392
|
-
|
|
24684
|
+
this.showTitle = true;
|
|
24685
|
+
this.extraBtnClass = '';
|
|
24686
|
+
this.minWidth = '';
|
|
24687
|
+
this.selectValue = new EventEmitter();
|
|
24688
|
+
this.overlayOpen = false;
|
|
24689
|
+
this.overlayWidth = 'auto';
|
|
24690
|
+
this.overlayMaxHeight = 'none';
|
|
24691
|
+
this.overlayPositions = [
|
|
24692
|
+
{
|
|
24693
|
+
originX: 'start',
|
|
24694
|
+
originY: 'bottom',
|
|
24695
|
+
overlayX: 'start',
|
|
24696
|
+
overlayY: 'top',
|
|
24697
|
+
offsetY: 8,
|
|
24698
|
+
},
|
|
24699
|
+
{
|
|
24700
|
+
originX: 'start',
|
|
24701
|
+
originY: 'top',
|
|
24702
|
+
overlayX: 'start',
|
|
24703
|
+
overlayY: 'bottom',
|
|
24704
|
+
offsetY: -8,
|
|
24705
|
+
},
|
|
24706
|
+
];
|
|
24393
24707
|
}
|
|
24394
|
-
get
|
|
24395
|
-
return
|
|
24708
|
+
get selectedChoice() {
|
|
24709
|
+
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
24710
|
+
this.choices[0]);
|
|
24396
24711
|
}
|
|
24397
|
-
|
|
24398
|
-
this.
|
|
24712
|
+
get id() {
|
|
24713
|
+
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
24399
24714
|
}
|
|
24400
|
-
|
|
24401
|
-
|
|
24715
|
+
getChoiceLabel() {
|
|
24716
|
+
return this.selectedChoice?.label;
|
|
24402
24717
|
}
|
|
24403
|
-
|
|
24404
|
-
|
|
24405
|
-
|
|
24406
|
-
this.
|
|
24718
|
+
ngOnInit() {
|
|
24719
|
+
if (!this.maxRows)
|
|
24720
|
+
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
24721
|
+
if (!this.choices || this.choices.length === 0) {
|
|
24722
|
+
this.choices = [];
|
|
24723
|
+
}
|
|
24407
24724
|
}
|
|
24408
|
-
|
|
24409
|
-
|
|
24725
|
+
isSelected(choice) {
|
|
24726
|
+
return choice === this.selectedChoice;
|
|
24727
|
+
}
|
|
24728
|
+
onSelectValue(choice) {
|
|
24729
|
+
this.closeOverlay();
|
|
24730
|
+
this.selected = choice.value;
|
|
24731
|
+
this.selectValue.emit(this.selected);
|
|
24732
|
+
}
|
|
24733
|
+
openOverlay() {
|
|
24734
|
+
this.overlayWidth =
|
|
24735
|
+
this.overlayOrigin.elementRef.nativeElement.getBoundingClientRect()
|
|
24736
|
+
.width + 'px';
|
|
24737
|
+
this.overlayMaxHeight = this.maxRows
|
|
24738
|
+
? `${this.maxRows * 29 + 60}px`
|
|
24739
|
+
: 'none';
|
|
24740
|
+
this.overlayOpen = true;
|
|
24741
|
+
return Promise.all([
|
|
24742
|
+
firstValueFrom(this.overlay.attach),
|
|
24743
|
+
firstValueFrom(this.choiceInputs.changes),
|
|
24744
|
+
]);
|
|
24745
|
+
}
|
|
24746
|
+
closeOverlay() {
|
|
24747
|
+
this.overlayOpen = false;
|
|
24748
|
+
}
|
|
24749
|
+
focusFirstItem() {
|
|
24750
|
+
this.choiceInputs.get(0).nativeElement.focus();
|
|
24751
|
+
}
|
|
24752
|
+
focusLastItem() {
|
|
24753
|
+
this.choiceInputs.get(this.choiceInputs.length - 1).nativeElement.focus();
|
|
24754
|
+
}
|
|
24755
|
+
async handleTriggerKeydown(event) {
|
|
24756
|
+
const keyCode = event.code;
|
|
24757
|
+
const isOpenKey = keyCode === 'ArrowDown' ||
|
|
24758
|
+
keyCode === 'ArrowUp' ||
|
|
24759
|
+
keyCode === 'ArrowLeft' ||
|
|
24760
|
+
keyCode === 'ArrowRight' ||
|
|
24761
|
+
keyCode === 'Enter' ||
|
|
24762
|
+
keyCode === 'Space';
|
|
24763
|
+
const isCloseKey = keyCode === 'Escape';
|
|
24764
|
+
if (isOpenKey) {
|
|
24765
|
+
event.preventDefault();
|
|
24766
|
+
if (!this.overlayOpen) {
|
|
24767
|
+
await this.openOverlay();
|
|
24768
|
+
}
|
|
24769
|
+
if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp')
|
|
24770
|
+
this.focusLastItem();
|
|
24771
|
+
else
|
|
24772
|
+
this.focusFirstItem();
|
|
24773
|
+
}
|
|
24774
|
+
else if (this.overlayOpen && isCloseKey) {
|
|
24775
|
+
event.preventDefault();
|
|
24776
|
+
this.closeOverlay();
|
|
24777
|
+
}
|
|
24778
|
+
}
|
|
24779
|
+
handleOverlayKeydown(event) {
|
|
24780
|
+
if (!this.overlayOpen)
|
|
24781
|
+
return;
|
|
24782
|
+
const keyCode = event.code;
|
|
24783
|
+
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
24784
|
+
event.preventDefault();
|
|
24785
|
+
this.shiftItemFocus(1);
|
|
24786
|
+
}
|
|
24787
|
+
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
24788
|
+
event.preventDefault();
|
|
24789
|
+
this.shiftItemFocus(-1);
|
|
24790
|
+
}
|
|
24791
|
+
else if (keyCode === 'Escape') {
|
|
24792
|
+
this.closeOverlay();
|
|
24793
|
+
}
|
|
24794
|
+
}
|
|
24795
|
+
shiftItemFocus(shift) {
|
|
24796
|
+
const index = this.focusedIndex;
|
|
24797
|
+
if (index === -1)
|
|
24798
|
+
return;
|
|
24799
|
+
const max = this.choiceInputs.length;
|
|
24800
|
+
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
24801
|
+
const newIndex = (((index + shift) % max) + max) % max;
|
|
24802
|
+
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24803
|
+
}
|
|
24804
|
+
get focusedIndex() {
|
|
24805
|
+
return this.choiceInputs.reduce((prev, curr, curIndex) => curr.nativeElement === document.activeElement ? curIndex : prev, -1);
|
|
24806
|
+
}
|
|
24807
|
+
selectIfEnter(event, choice) {
|
|
24808
|
+
if (event.code === 'Enter') {
|
|
24809
|
+
event.preventDefault();
|
|
24810
|
+
this.onSelectValue(choice);
|
|
24811
|
+
}
|
|
24812
|
+
}
|
|
24813
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24814
|
+
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
24815
|
}
|
|
24411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24816
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24412
24817
|
type: Component,
|
|
24413
|
-
args: [{ selector: 'gn-ui-
|
|
24414
|
-
|
|
24818
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
24819
|
+
CommonModule,
|
|
24820
|
+
ButtonComponent,
|
|
24821
|
+
OverlayModule,
|
|
24822
|
+
MatIconModule,
|
|
24823
|
+
TranslateModule,
|
|
24824
|
+
], 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" }]
|
|
24825
|
+
}], propDecorators: { title: [{
|
|
24415
24826
|
type: Input
|
|
24416
|
-
}],
|
|
24827
|
+
}], showTitle: [{
|
|
24417
24828
|
type: Input
|
|
24418
|
-
}],
|
|
24829
|
+
}], ariaName: [{
|
|
24419
24830
|
type: Input
|
|
24420
|
-
}],
|
|
24831
|
+
}], choices: [{
|
|
24421
24832
|
type: Input
|
|
24422
|
-
}],
|
|
24833
|
+
}], selected: [{
|
|
24834
|
+
type: Input
|
|
24835
|
+
}], maxRows: [{
|
|
24836
|
+
type: Input
|
|
24837
|
+
}], extraBtnClass: [{
|
|
24838
|
+
type: Input
|
|
24839
|
+
}], minWidth: [{
|
|
24840
|
+
type: Input
|
|
24841
|
+
}], disabled: [{
|
|
24842
|
+
type: Input
|
|
24843
|
+
}], selectValue: [{
|
|
24423
24844
|
type: Output
|
|
24424
|
-
}],
|
|
24845
|
+
}], overlayOrigin: [{
|
|
24425
24846
|
type: ViewChild,
|
|
24426
|
-
args: ['
|
|
24847
|
+
args: ['overlayOrigin']
|
|
24848
|
+
}], overlay: [{
|
|
24849
|
+
type: ViewChild,
|
|
24850
|
+
args: [CdkConnectedOverlay]
|
|
24851
|
+
}], choiceInputs: [{
|
|
24852
|
+
type: ViewChildren,
|
|
24853
|
+
args: ['choiceInputs', { read: ElementRef }]
|
|
24427
24854
|
}] } });
|
|
24428
24855
|
|
|
24429
|
-
class
|
|
24430
|
-
|
|
24431
|
-
this.
|
|
24856
|
+
class EditableLabelDirective {
|
|
24857
|
+
constructor(el, renderer) {
|
|
24858
|
+
this.el = el;
|
|
24859
|
+
this.renderer = renderer;
|
|
24860
|
+
this.editableLabelChanged = new EventEmitter();
|
|
24432
24861
|
}
|
|
24433
|
-
|
|
24434
|
-
this.
|
|
24435
|
-
|
|
24436
|
-
|
|
24437
|
-
|
|
24438
|
-
|
|
24439
|
-
|
|
24440
|
-
|
|
24441
|
-
|
|
24442
|
-
|
|
24443
|
-
|
|
24444
|
-
|
|
24445
|
-
|
|
24446
|
-
|
|
24447
|
-
|
|
24448
|
-
|
|
24449
|
-
|
|
24450
|
-
|
|
24451
|
-
|
|
24452
|
-
|
|
24453
|
-
|
|
24454
|
-
|
|
24455
|
-
|
|
24862
|
+
ngAfterViewInit() {
|
|
24863
|
+
if (this.gnUiEditableLabel !== false) {
|
|
24864
|
+
const appendedInput = this.renderer.createElement('input');
|
|
24865
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
24866
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
24867
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
24868
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
24869
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
24870
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
24871
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
24872
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
24873
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
24874
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
24875
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
24876
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
24877
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
24878
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
24879
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
24880
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
24881
|
+
});
|
|
24882
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
24883
|
+
}
|
|
24884
|
+
}
|
|
24885
|
+
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 }); }
|
|
24886
|
+
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 }); }
|
|
24887
|
+
}
|
|
24888
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
24889
|
+
type: Directive,
|
|
24890
|
+
args: [{
|
|
24891
|
+
selector: '[gnUiEditableLabel]',
|
|
24892
|
+
standalone: true,
|
|
24893
|
+
}]
|
|
24894
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
24895
|
+
type: Output
|
|
24896
|
+
}], gnUiEditableLabel: [{
|
|
24897
|
+
type: Input
|
|
24898
|
+
}] } });
|
|
24899
|
+
|
|
24900
|
+
class NavigationButtonComponent {
|
|
24901
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24902
|
+
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 }); }
|
|
24903
|
+
}
|
|
24904
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24905
|
+
type: Component,
|
|
24906
|
+
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"] }]
|
|
24907
|
+
}], propDecorators: { label: [{
|
|
24908
|
+
type: Input
|
|
24909
|
+
}], icon: [{
|
|
24910
|
+
type: Input
|
|
24911
|
+
}] } });
|
|
24912
|
+
|
|
24913
|
+
class SearchInputComponent {
|
|
24914
|
+
constructor() {
|
|
24915
|
+
this.value = '';
|
|
24916
|
+
this.placeholder = '';
|
|
24456
24917
|
this.rawChange = new Subject();
|
|
24457
|
-
this.
|
|
24458
|
-
this.subscription = new Subscription();
|
|
24918
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
24459
24919
|
}
|
|
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);
|
|
24920
|
+
handleChange($event) {
|
|
24921
|
+
const value = $event.target.value;
|
|
24922
|
+
this.rawChange.next(value);
|
|
24469
24923
|
}
|
|
24470
|
-
|
|
24471
|
-
this.
|
|
24924
|
+
clear() {
|
|
24925
|
+
this.value = null;
|
|
24926
|
+
this.rawChange.next(null);
|
|
24472
24927
|
}
|
|
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:
|
|
24928
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24929
|
+
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
24930
|
}
|
|
24476
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24931
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
24477
24932
|
type: Component,
|
|
24478
|
-
args: [{ selector: 'gn-ui-
|
|
24479
|
-
}],
|
|
24933
|
+
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" }]
|
|
24934
|
+
}], propDecorators: { value: [{
|
|
24480
24935
|
type: Input
|
|
24481
24936
|
}], placeholder: [{
|
|
24482
24937
|
type: Input
|
|
24483
|
-
}],
|
|
24484
|
-
type:
|
|
24485
|
-
}]
|
|
24486
|
-
|
|
24487
|
-
|
|
24938
|
+
}], valueChange: [{
|
|
24939
|
+
type: Output
|
|
24940
|
+
}] } });
|
|
24941
|
+
|
|
24942
|
+
class StarToggleComponent {
|
|
24943
|
+
constructor() {
|
|
24944
|
+
this.disabled = false;
|
|
24945
|
+
this.newValue = new EventEmitter();
|
|
24946
|
+
}
|
|
24947
|
+
toggle(event) {
|
|
24948
|
+
if (!this.disabled) {
|
|
24949
|
+
this.toggled = !this.toggled;
|
|
24950
|
+
if (this.toggled) {
|
|
24951
|
+
const anim = this.overlay.nativeElement.getAnimations()[0];
|
|
24952
|
+
anim.cancel();
|
|
24953
|
+
anim.play();
|
|
24954
|
+
}
|
|
24955
|
+
this.newValue.emit(this.toggled);
|
|
24956
|
+
}
|
|
24957
|
+
propagateToDocumentOnly(event);
|
|
24958
|
+
event.preventDefault();
|
|
24959
|
+
}
|
|
24960
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24961
|
+
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 }); }
|
|
24962
|
+
}
|
|
24963
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
24964
|
+
type: Component,
|
|
24965
|
+
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"] }]
|
|
24966
|
+
}], propDecorators: { toggled: [{
|
|
24488
24967
|
type: Input
|
|
24489
|
-
}],
|
|
24968
|
+
}], disabled: [{
|
|
24490
24969
|
type: Input
|
|
24491
|
-
}],
|
|
24970
|
+
}], newValue: [{
|
|
24492
24971
|
type: Output
|
|
24972
|
+
}], overlay: [{
|
|
24973
|
+
type: ViewChild,
|
|
24974
|
+
args: ['starOverlay']
|
|
24493
24975
|
}] } });
|
|
24494
24976
|
|
|
24495
24977
|
class TextAreaComponent {
|
|
@@ -24552,317 +25034,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24552
25034
|
args: ['input']
|
|
24553
25035
|
}] } });
|
|
24554
25036
|
|
|
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
|
-
}
|
|
25037
|
+
class TextInputComponent {
|
|
25038
|
+
constructor() {
|
|
25039
|
+
this.baseClass = [
|
|
25040
|
+
'appearance-none',
|
|
25041
|
+
'border border-gray-300',
|
|
25042
|
+
'rounded w-full',
|
|
25043
|
+
'p-2',
|
|
25044
|
+
'text-gray-700',
|
|
25045
|
+
'leading-tight',
|
|
25046
|
+
'focus:outline-none',
|
|
25047
|
+
'focus:border-primary',
|
|
25048
|
+
].join(' ');
|
|
25049
|
+
this.value = '';
|
|
25050
|
+
this.extraClass = '';
|
|
25051
|
+
this.required = false;
|
|
25052
|
+
this.rawChange = new Subject();
|
|
25053
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24626
25054
|
}
|
|
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$);
|
|
25055
|
+
get classList() {
|
|
25056
|
+
return `${this.baseClass} ${this.extraClass}`;
|
|
24640
25057
|
}
|
|
24641
25058
|
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
|
-
}
|
|
25059
|
+
this.checkRequired(this.input.nativeElement.value);
|
|
24673
25060
|
}
|
|
24674
|
-
|
|
24675
|
-
this.
|
|
24676
|
-
this.triggerRef.closePanel();
|
|
25061
|
+
checkRequired(value) {
|
|
25062
|
+
this.input.nativeElement.classList.toggle('invalid', this.required && value === '');
|
|
24677
25063
|
}
|
|
24678
|
-
|
|
24679
|
-
|
|
24680
|
-
this.
|
|
24681
|
-
|
|
24682
|
-
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24683
|
-
this.inputRef.nativeElement.value = any;
|
|
24684
|
-
});
|
|
24685
|
-
}
|
|
25064
|
+
handleChange($event) {
|
|
25065
|
+
const value = $event.target.value;
|
|
25066
|
+
this.checkRequired(value);
|
|
25067
|
+
this.rawChange.next(value);
|
|
24686
25068
|
}
|
|
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:
|
|
25069
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25070
|
+
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
25071
|
}
|
|
24690
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25072
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
24691
25073
|
type: Component,
|
|
24692
|
-
args: [{ selector: 'gn-ui-
|
|
24693
|
-
}],
|
|
24694
|
-
type: Input
|
|
24695
|
-
}], action: [{
|
|
24696
|
-
type: Input
|
|
24697
|
-
}], value: [{
|
|
24698
|
-
type: Input
|
|
24699
|
-
}], clearOnSelection: [{
|
|
25074
|
+
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"] }]
|
|
25075
|
+
}], propDecorators: { value: [{
|
|
24700
25076
|
type: Input
|
|
24701
|
-
}],
|
|
25077
|
+
}], extraClass: [{
|
|
24702
25078
|
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: [{
|
|
25079
|
+
}], hint: [{
|
|
24719
25080
|
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: [{
|
|
25081
|
+
}], required: [{
|
|
24747
25082
|
type: Input
|
|
24748
25083
|
}], disabled: [{
|
|
24749
25084
|
type: Input
|
|
24750
|
-
}],
|
|
25085
|
+
}], valueChange: [{
|
|
24751
25086
|
type: Output
|
|
24752
|
-
}],
|
|
25087
|
+
}], input: [{
|
|
24753
25088
|
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
|
|
25089
|
+
args: ['input']
|
|
24866
25090
|
}] } });
|
|
24867
25091
|
|
|
24868
25092
|
class ColorScaleComponent {
|
|
@@ -24970,7 +25194,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24970
25194
|
|
|
24971
25195
|
class LoadingMaskComponent {
|
|
24972
25196
|
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$
|
|
25197
|
+
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
25198
|
}
|
|
24975
25199
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, decorators: [{
|
|
24976
25200
|
type: Component,
|
|
@@ -25066,148 +25290,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25066
25290
|
}]
|
|
25067
25291
|
}] });
|
|
25068
25292
|
|
|
25069
|
-
class
|
|
25070
|
-
constructor() {
|
|
25071
|
-
this.
|
|
25072
|
-
this.
|
|
25293
|
+
class ViewportIntersectorComponent {
|
|
25294
|
+
constructor(vcRef) {
|
|
25295
|
+
this.vcRef = vcRef;
|
|
25296
|
+
this.isInViewport = new EventEmitter();
|
|
25297
|
+
this.entersViewport = this.isInViewport.pipe(filter((inViewport) => inViewport), map$1(() => undefined));
|
|
25298
|
+
this.exitsViewport = this.isInViewport.pipe(filter((inViewport) => !inViewport), map$1(() => undefined));
|
|
25073
25299
|
}
|
|
25074
|
-
|
|
25075
|
-
|
|
25076
|
-
|
|
25300
|
+
ngOnInit() {
|
|
25301
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25302
|
+
this.observeInputElement(elToObserve);
|
|
25077
25303
|
}
|
|
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();
|
|
25304
|
+
ngOnDestroy() {
|
|
25305
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25306
|
+
this.unObserveInputElement(elToObserve);
|
|
25100
25307
|
}
|
|
25101
|
-
|
|
25102
|
-
|
|
25308
|
+
observeInputElement(elToObserve) {
|
|
25309
|
+
if (!this.observer) {
|
|
25310
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
25311
|
+
entries.forEach((entry) => {
|
|
25312
|
+
this.isInViewport.emit(entry.isIntersecting);
|
|
25313
|
+
});
|
|
25314
|
+
}, { root: null, threshold: 0 });
|
|
25315
|
+
}
|
|
25316
|
+
this.observer.observe(elToObserve);
|
|
25103
25317
|
}
|
|
25104
|
-
|
|
25105
|
-
|
|
25106
|
-
this.checked = !this.checked;
|
|
25107
|
-
this.changed.emit(this.checked);
|
|
25318
|
+
unObserveInputElement(elToObserve) {
|
|
25319
|
+
this.observer?.unobserve(elToObserve);
|
|
25108
25320
|
}
|
|
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:
|
|
25321
|
+
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 }); }
|
|
25322
|
+
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
25323
|
}
|
|
25112
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25324
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
25113
25325
|
type: Component,
|
|
25114
|
-
args: [{ selector: 'gn-ui-
|
|
25115
|
-
}],
|
|
25116
|
-
type: Input
|
|
25117
|
-
}], checked: [{
|
|
25118
|
-
type: Input
|
|
25119
|
-
}], indeterminate: [{
|
|
25120
|
-
type: Input
|
|
25121
|
-
}], changed: [{
|
|
25326
|
+
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
25327
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
25122
25328
|
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: [{
|
|
25329
|
+
}], entersViewport: [{
|
|
25151
25330
|
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: [{
|
|
25331
|
+
}], exitsViewport: [{
|
|
25208
25332
|
type: Output
|
|
25209
|
-
}], gnUiEditableLabel: [{
|
|
25210
|
-
type: Input
|
|
25211
25333
|
}] } });
|
|
25212
25334
|
|
|
25213
25335
|
class FilesDropDirective {
|
|
@@ -25399,7 +25521,7 @@ class ImageInputComponent {
|
|
|
25399
25521
|
});
|
|
25400
25522
|
}
|
|
25401
25523
|
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$
|
|
25524
|
+
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
25525
|
}
|
|
25404
25526
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, decorators: [{
|
|
25405
25527
|
type: Component,
|
|
@@ -25435,8 +25557,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25435
25557
|
|
|
25436
25558
|
class UiInputsModule {
|
|
25437
25559
|
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,
|
|
25560
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [AutocompleteComponent,
|
|
25440
25561
|
TextInputComponent,
|
|
25441
25562
|
DragAndDropFileInputComponent,
|
|
25442
25563
|
ChipsInputComponent,
|
|
@@ -25444,11 +25565,9 @@ class UiInputsModule {
|
|
|
25444
25565
|
StarToggleComponent,
|
|
25445
25566
|
DropdownMultiselectComponent,
|
|
25446
25567
|
ViewportIntersectorComponent,
|
|
25447
|
-
CheckToggleComponent,
|
|
25448
25568
|
CopyTextButtonComponent,
|
|
25449
25569
|
CheckboxComponent,
|
|
25450
|
-
SearchInputComponent,
|
|
25451
|
-
DateRangePickerComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25570
|
+
SearchInputComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25452
25571
|
FormsModule,
|
|
25453
25572
|
ReactiveFormsModule,
|
|
25454
25573
|
TagInputModule,
|
|
@@ -25466,7 +25585,10 @@ class UiInputsModule {
|
|
|
25466
25585
|
EditableLabelDirective,
|
|
25467
25586
|
TextAreaComponent,
|
|
25468
25587
|
ButtonComponent,
|
|
25469
|
-
ImageInputComponent
|
|
25588
|
+
ImageInputComponent,
|
|
25589
|
+
DropdownSelectorComponent,
|
|
25590
|
+
DateRangePickerComponent,
|
|
25591
|
+
CheckToggleComponent], exports: [DropdownSelectorComponent,
|
|
25470
25592
|
AutocompleteComponent,
|
|
25471
25593
|
ButtonComponent,
|
|
25472
25594
|
TextInputComponent,
|
|
@@ -25501,13 +25623,15 @@ class UiInputsModule {
|
|
|
25501
25623
|
MatInputModule,
|
|
25502
25624
|
MatDatepickerModule,
|
|
25503
25625
|
MatNativeDateModule,
|
|
25504
|
-
ImageInputComponent
|
|
25626
|
+
ImageInputComponent,
|
|
25627
|
+
DropdownSelectorComponent,
|
|
25628
|
+
DateRangePickerComponent,
|
|
25629
|
+
CheckToggleComponent] }); }
|
|
25505
25630
|
}
|
|
25506
25631
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, decorators: [{
|
|
25507
25632
|
type: NgModule,
|
|
25508
25633
|
args: [{
|
|
25509
25634
|
declarations: [
|
|
25510
|
-
DropdownSelectorComponent,
|
|
25511
25635
|
AutocompleteComponent,
|
|
25512
25636
|
TextInputComponent,
|
|
25513
25637
|
DragAndDropFileInputComponent,
|
|
@@ -25516,11 +25640,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25516
25640
|
StarToggleComponent,
|
|
25517
25641
|
DropdownMultiselectComponent,
|
|
25518
25642
|
ViewportIntersectorComponent,
|
|
25519
|
-
CheckToggleComponent,
|
|
25520
25643
|
CopyTextButtonComponent,
|
|
25521
25644
|
CheckboxComponent,
|
|
25522
25645
|
SearchInputComponent,
|
|
25523
|
-
DateRangePickerComponent,
|
|
25524
25646
|
],
|
|
25525
25647
|
imports: [
|
|
25526
25648
|
CommonModule,
|
|
@@ -25544,6 +25666,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25544
25666
|
TextAreaComponent,
|
|
25545
25667
|
ButtonComponent,
|
|
25546
25668
|
ImageInputComponent,
|
|
25669
|
+
DropdownSelectorComponent,
|
|
25670
|
+
DateRangePickerComponent,
|
|
25671
|
+
CheckToggleComponent,
|
|
25547
25672
|
],
|
|
25548
25673
|
exports: [
|
|
25549
25674
|
DropdownSelectorComponent,
|
|
@@ -25568,34 +25693,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25568
25693
|
}]
|
|
25569
25694
|
}] });
|
|
25570
25695
|
|
|
25696
|
+
class PreviousNextButtonsComponent {
|
|
25697
|
+
constructor() {
|
|
25698
|
+
this.directionButtonClicked = new EventEmitter();
|
|
25699
|
+
}
|
|
25700
|
+
previousButtonClicked() {
|
|
25701
|
+
this.directionButtonClicked.next('previous');
|
|
25702
|
+
}
|
|
25703
|
+
nextButtonClicked() {
|
|
25704
|
+
this.directionButtonClicked.next('next');
|
|
25705
|
+
}
|
|
25706
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25707
|
+
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 }); }
|
|
25708
|
+
}
|
|
25709
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PreviousNextButtonsComponent, decorators: [{
|
|
25710
|
+
type: Component,
|
|
25711
|
+
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"] }]
|
|
25712
|
+
}], propDecorators: { isFirst: [{
|
|
25713
|
+
type: Input
|
|
25714
|
+
}], isLast: [{
|
|
25715
|
+
type: Input
|
|
25716
|
+
}], directionButtonClicked: [{
|
|
25717
|
+
type: Output
|
|
25718
|
+
}] } });
|
|
25719
|
+
|
|
25571
25720
|
class AddLayerFromOgcApiComponent {
|
|
25572
25721
|
constructor(changeDetectorRef) {
|
|
25573
25722
|
this.changeDetectorRef = changeDetectorRef;
|
|
25574
25723
|
this.layerAdded = new EventEmitter();
|
|
25575
25724
|
this.urlChange = new Subject();
|
|
25576
|
-
this.layerUrl = '';
|
|
25577
25725
|
this.loading = false;
|
|
25578
25726
|
this.layers = [];
|
|
25579
|
-
this.ogcEndpoint = null;
|
|
25580
25727
|
this.errorMessage = null;
|
|
25728
|
+
this.selectedLayerTypes = {};
|
|
25581
25729
|
}
|
|
25582
25730
|
ngOnInit() {
|
|
25583
25731
|
this.urlChange.pipe(debounceTime$1(700)).subscribe(() => {
|
|
25584
25732
|
this.loadLayers();
|
|
25585
|
-
this.changeDetectorRef.detectChanges(); // manually trigger change detection
|
|
25586
25733
|
});
|
|
25587
25734
|
}
|
|
25588
25735
|
async loadLayers() {
|
|
25589
25736
|
this.errorMessage = null;
|
|
25590
25737
|
try {
|
|
25591
25738
|
this.loading = true;
|
|
25592
|
-
if (this.ogcUrl.trim()
|
|
25739
|
+
if (!this.ogcUrl.trim()) {
|
|
25593
25740
|
this.layers = [];
|
|
25594
25741
|
return;
|
|
25595
25742
|
}
|
|
25596
|
-
|
|
25597
|
-
|
|
25598
|
-
this.
|
|
25743
|
+
const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
25744
|
+
this.layers = await ogcEndpoint.allCollections;
|
|
25745
|
+
this.setDefaultLayerTypes();
|
|
25599
25746
|
}
|
|
25600
25747
|
catch (error) {
|
|
25601
25748
|
const err = error;
|
|
@@ -25607,21 +25754,75 @@ class AddLayerFromOgcApiComponent {
|
|
|
25607
25754
|
this.changeDetectorRef.markForCheck();
|
|
25608
25755
|
}
|
|
25609
25756
|
}
|
|
25610
|
-
|
|
25611
|
-
this.
|
|
25612
|
-
|
|
25613
|
-
|
|
25614
|
-
|
|
25615
|
-
|
|
25616
|
-
};
|
|
25617
|
-
|
|
25757
|
+
setDefaultLayerTypes() {
|
|
25758
|
+
this.layers.forEach((layer) => {
|
|
25759
|
+
const choices = this.getLayerChoices(layer);
|
|
25760
|
+
if (choices.length > 0) {
|
|
25761
|
+
this.selectedLayerTypes[layer.name] = choices[0].value;
|
|
25762
|
+
}
|
|
25763
|
+
});
|
|
25764
|
+
}
|
|
25765
|
+
getLayerChoices(layer) {
|
|
25766
|
+
const choices = [];
|
|
25767
|
+
if (layer.hasRecords) {
|
|
25768
|
+
choices.push({ label: 'Records', value: 'record' });
|
|
25769
|
+
}
|
|
25770
|
+
if (layer.hasFeatures) {
|
|
25771
|
+
choices.push({ label: 'Features', value: 'features' });
|
|
25772
|
+
}
|
|
25773
|
+
if (layer.hasVectorTiles) {
|
|
25774
|
+
choices.push({ label: 'Vector Tiles', value: 'vectorTiles' });
|
|
25775
|
+
}
|
|
25776
|
+
if (layer.hasMapTiles) {
|
|
25777
|
+
choices.push({ label: 'Map Tiles', value: 'mapTiles' });
|
|
25778
|
+
}
|
|
25779
|
+
return choices;
|
|
25780
|
+
}
|
|
25781
|
+
shouldDisplayLayer(layer) {
|
|
25782
|
+
return (layer.hasRecords ||
|
|
25783
|
+
layer.hasFeatures ||
|
|
25784
|
+
layer.hasVectorTiles ||
|
|
25785
|
+
layer.hasMapTiles);
|
|
25786
|
+
}
|
|
25787
|
+
onLayerTypeSelect(layerName, selectedType) {
|
|
25788
|
+
this.selectedLayerTypes[layerName] = selectedType
|
|
25789
|
+
? selectedType
|
|
25790
|
+
: this.getLayerChoices(layerName)[0]?.value;
|
|
25791
|
+
}
|
|
25792
|
+
async addLayer(layer, layerType) {
|
|
25793
|
+
try {
|
|
25794
|
+
const ogcEndpoint = await new OgcApiEndpoint(this.ogcUrl);
|
|
25795
|
+
let layerUrl;
|
|
25796
|
+
if (layerType === 'vectorTiles') {
|
|
25797
|
+
layerUrl = await ogcEndpoint.getVectorTilesetUrl(layer);
|
|
25798
|
+
}
|
|
25799
|
+
else if (layerType === 'mapTiles') {
|
|
25800
|
+
layerUrl = await ogcEndpoint.getMapTilesetUrl(layer);
|
|
25801
|
+
}
|
|
25802
|
+
else {
|
|
25803
|
+
layerUrl = await ogcEndpoint.getCollectionItemsUrl(layer, {
|
|
25804
|
+
outputFormat: 'json',
|
|
25805
|
+
});
|
|
25806
|
+
}
|
|
25807
|
+
const layerToAdd = {
|
|
25808
|
+
name: layer,
|
|
25809
|
+
url: layerUrl,
|
|
25810
|
+
type: MapContextLayerTypeEnum.OGCAPI,
|
|
25811
|
+
layerType: layerType,
|
|
25812
|
+
};
|
|
25813
|
+
this.layerAdded.emit({ ...layerToAdd, title: layer });
|
|
25814
|
+
}
|
|
25815
|
+
catch (error) {
|
|
25816
|
+
const err = error;
|
|
25817
|
+
console.error('Error adding layer:', err.message);
|
|
25818
|
+
}
|
|
25618
25819
|
}
|
|
25619
25820
|
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
|
|
25821
|
+
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
25822
|
}
|
|
25622
25823
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
|
|
25623
25824
|
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
|
|
25825
|
+
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
25826
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { ogcUrl: [{
|
|
25626
25827
|
type: Input
|
|
25627
25828
|
}], layerAdded: [{
|
|
@@ -26363,7 +26564,8 @@ class ApiCardComponent {
|
|
|
26363
26564
|
}
|
|
26364
26565
|
ngOnInit() {
|
|
26365
26566
|
this.displayApiFormButton =
|
|
26366
|
-
this.link.accessServiceProtocol === 'ogcFeatures'
|
|
26567
|
+
this.link.accessServiceProtocol === 'ogcFeatures' ||
|
|
26568
|
+
this.link.accessServiceProtocol === 'wfs';
|
|
26367
26569
|
}
|
|
26368
26570
|
ngOnChanges(changes) {
|
|
26369
26571
|
this.currentlyActive =
|
|
@@ -26376,7 +26578,7 @@ class ApiCardComponent {
|
|
|
26376
26578
|
}
|
|
26377
26579
|
}
|
|
26378
26580
|
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:
|
|
26581
|
+
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
26582
|
}
|
|
26381
26583
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
26382
26584
|
type: Component,
|
|
@@ -26507,7 +26709,7 @@ class DownloadsListComponent {
|
|
|
26507
26709
|
return getBadgeColor(getFileFormat(link));
|
|
26508
26710
|
}
|
|
26509
26711
|
isFromWfs(link) {
|
|
26510
|
-
return link.type === '
|
|
26712
|
+
return link.type === 'download' && link.accessServiceProtocol === 'wfs';
|
|
26511
26713
|
}
|
|
26512
26714
|
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
26715
|
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 +26741,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26539
26741
|
}] } });
|
|
26540
26742
|
|
|
26541
26743
|
class LinkCardComponent {
|
|
26744
|
+
constructor() {
|
|
26745
|
+
this.compact = false;
|
|
26746
|
+
}
|
|
26747
|
+
get title() {
|
|
26748
|
+
if (this.link.name && this.link.description) {
|
|
26749
|
+
return `${this.link.name} | ${this.link.description}`;
|
|
26750
|
+
}
|
|
26751
|
+
return this.link.name || this.link.description || '';
|
|
26752
|
+
}
|
|
26542
26753
|
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
|
|
26754
|
+
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
26755
|
}
|
|
26545
26756
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LinkCardComponent, decorators: [{
|
|
26546
26757
|
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
|
|
26758
|
+
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
26759
|
}], propDecorators: { link: [{
|
|
26549
26760
|
type: Input
|
|
26761
|
+
}], compact: [{
|
|
26762
|
+
type: Input
|
|
26550
26763
|
}] } });
|
|
26551
26764
|
|
|
26552
26765
|
class MarkdownParserComponent {
|
|
@@ -27005,43 +27218,36 @@ const DEFAULT_PARAMS = {
|
|
|
27005
27218
|
};
|
|
27006
27219
|
class RecordApiFormComponent {
|
|
27007
27220
|
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
|
-
}));
|
|
27221
|
+
this.offset$ = new BehaviorSubject(DEFAULT_PARAMS.OFFSET);
|
|
27222
|
+
this.limit$ = new BehaviorSubject(DEFAULT_PARAMS.LIMIT);
|
|
27223
|
+
this.format$ = new BehaviorSubject(DEFAULT_PARAMS.FORMAT);
|
|
27224
|
+
this.endpoint$ = new BehaviorSubject(undefined);
|
|
27225
|
+
this.supportOffset = true;
|
|
27226
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27227
|
+
this.apiQueryUrl$ = combineLatest([
|
|
27228
|
+
this.offset$,
|
|
27229
|
+
this.limit$,
|
|
27230
|
+
this.format$,
|
|
27231
|
+
this.endpoint$,
|
|
27232
|
+
]).pipe(switchMap(([offset, limit, format]) => this.generateApiQueryUrl(offset, limit, format)));
|
|
27032
27233
|
this.noLimitChecked$ = this.limit$.pipe(map$2((limit) => limit === '-1' || limit === ''));
|
|
27033
27234
|
this.displayLimit$ = this.limit$.pipe(map$2((limit) => (limit !== '-1' ? limit : '')));
|
|
27034
27235
|
}
|
|
27035
27236
|
set apiLink(value) {
|
|
27036
|
-
this.
|
|
27237
|
+
this.outputFormats = [{ value: 'json', label: 'JSON' }];
|
|
27238
|
+
this.accessServiceProtocol = value ? value.accessServiceProtocol : undefined;
|
|
27239
|
+
this.apiFeatureType = value ? value.name : undefined;
|
|
27240
|
+
if (value) {
|
|
27241
|
+
this.apiBaseUrl = value.url.href;
|
|
27242
|
+
this.createEndpoint().then(() => this.parseOutputFormats());
|
|
27243
|
+
}
|
|
27037
27244
|
this.resetUrl();
|
|
27038
27245
|
}
|
|
27039
27246
|
setOffset(value) {
|
|
27040
27247
|
this.offset$.next(value);
|
|
27041
27248
|
}
|
|
27042
27249
|
setLimit(value) {
|
|
27043
|
-
|
|
27044
|
-
this.limit$.next(newLimit);
|
|
27250
|
+
this.limit$.next(value === '' ? '-1' : value);
|
|
27045
27251
|
}
|
|
27046
27252
|
setFormat(value) {
|
|
27047
27253
|
this.format$.next(String(value));
|
|
@@ -27051,19 +27257,86 @@ class RecordApiFormComponent {
|
|
|
27051
27257
|
this.limit$.next(DEFAULT_PARAMS.LIMIT);
|
|
27052
27258
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
27053
27259
|
}
|
|
27260
|
+
async parseOutputFormats() {
|
|
27261
|
+
if (!this.endpoint)
|
|
27262
|
+
return;
|
|
27263
|
+
const apiUrl = this.apiBaseUrl.endsWith('?')
|
|
27264
|
+
? this.apiBaseUrl.slice(0, -1)
|
|
27265
|
+
: this.apiBaseUrl;
|
|
27266
|
+
const outputFormats = await this.getOutputFormats(apiUrl);
|
|
27267
|
+
const formatsList = outputFormats.itemFormats
|
|
27268
|
+
? this.mapFormats(outputFormats.itemFormats)
|
|
27269
|
+
: this.mapFormats(outputFormats.outputFormats || []);
|
|
27270
|
+
this.outputFormats = this.outputFormats
|
|
27271
|
+
.concat(formatsList.filter(Boolean))
|
|
27272
|
+
.filter((format, index, self) => index === self.findIndex((t) => t.value === format.value))
|
|
27273
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
27274
|
+
}
|
|
27275
|
+
mapFormats(formats) {
|
|
27276
|
+
return formats.map((format) => {
|
|
27277
|
+
const normalizedFormat = mimeTypeToFormat(format);
|
|
27278
|
+
return normalizedFormat
|
|
27279
|
+
? { label: normalizedFormat.toUpperCase(), value: normalizedFormat }
|
|
27280
|
+
: null;
|
|
27281
|
+
});
|
|
27282
|
+
}
|
|
27283
|
+
async getOutputFormats(url) {
|
|
27284
|
+
if (!this.endpoint)
|
|
27285
|
+
return {};
|
|
27286
|
+
if (this.endpoint instanceof WfsEndpoint) {
|
|
27287
|
+
this.supportOffset = this.endpoint.supportsStartIndex();
|
|
27288
|
+
return this.endpoint.getServiceInfo();
|
|
27289
|
+
}
|
|
27290
|
+
else {
|
|
27291
|
+
{
|
|
27292
|
+
return (await this.endpoint.getCollectionInfo(this.firstCollection));
|
|
27293
|
+
}
|
|
27294
|
+
}
|
|
27295
|
+
}
|
|
27296
|
+
async createEndpoint() {
|
|
27297
|
+
if (!this.apiBaseUrl || !this.accessServiceProtocol)
|
|
27298
|
+
return;
|
|
27299
|
+
if (this.accessServiceProtocol === 'wfs') {
|
|
27300
|
+
this.endpoint = new WfsEndpoint(this.apiBaseUrl);
|
|
27301
|
+
await this.endpoint.isReady();
|
|
27302
|
+
}
|
|
27303
|
+
else {
|
|
27304
|
+
this.endpoint = new OgcApiEndpoint(this.apiBaseUrl);
|
|
27305
|
+
this.firstCollection = (await this.endpoint.featureCollections)[0];
|
|
27306
|
+
}
|
|
27307
|
+
this.endpoint$.next(this.endpoint);
|
|
27308
|
+
}
|
|
27309
|
+
async generateApiQueryUrl(offset, limit, format) {
|
|
27310
|
+
if (!this.apiBaseUrl || !this.endpoint || !this.apiFeatureType)
|
|
27311
|
+
return '';
|
|
27312
|
+
const options = {
|
|
27313
|
+
outputFormat: format,
|
|
27314
|
+
startIndex: offset ? Number(offset) : undefined,
|
|
27315
|
+
maxFeatures: limit !== '-1' ? Number(limit) : undefined,
|
|
27316
|
+
limit: limit !== '-1' ? Number(limit) : limit === '-1' ? -1 : undefined,
|
|
27317
|
+
offset: offset !== '' ? Number(offset) : undefined,
|
|
27318
|
+
};
|
|
27319
|
+
if (this.endpoint instanceof WfsEndpoint) {
|
|
27320
|
+
options.maxFeatures = limit !== '-1' ? Number(limit) : undefined;
|
|
27321
|
+
return this.endpoint.getFeatureUrl(this.apiFeatureType, options);
|
|
27322
|
+
}
|
|
27323
|
+
else {
|
|
27324
|
+
return await this.endpoint.getCollectionItemsUrl(this.firstCollection, options);
|
|
27325
|
+
}
|
|
27326
|
+
}
|
|
27054
27327
|
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
|
|
27328
|
+
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
27329
|
}
|
|
27057
27330
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
27058
27331
|
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
|
|
27332
|
+
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
27333
|
}], propDecorators: { apiLink: [{
|
|
27061
27334
|
type: Input
|
|
27062
27335
|
}] } });
|
|
27063
27336
|
|
|
27064
27337
|
class RelatedRecordCardComponent {
|
|
27065
27338
|
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:
|
|
27339
|
+
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
27340
|
}
|
|
27068
27341
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
27069
27342
|
type: Component,
|
|
@@ -27159,48 +27432,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27159
27432
|
}] } });
|
|
27160
27433
|
|
|
27161
27434
|
class CarouselComponent {
|
|
27435
|
+
get isFirstStep() {
|
|
27436
|
+
return this.currentStep === 0;
|
|
27437
|
+
}
|
|
27438
|
+
get isLastStep() {
|
|
27439
|
+
return this.currentStep === this.steps.length - 1;
|
|
27440
|
+
}
|
|
27441
|
+
get stepsCount() {
|
|
27442
|
+
return this.steps.length;
|
|
27443
|
+
}
|
|
27162
27444
|
constructor(changeDetector) {
|
|
27163
27445
|
this.changeDetector = changeDetector;
|
|
27164
27446
|
this.containerClass = '';
|
|
27165
|
-
this.stepsContainerClass = '';
|
|
27447
|
+
this.stepsContainerClass = 'w-full bottom-0 top-auto';
|
|
27448
|
+
this.currentStepChange = new EventEmitter();
|
|
27166
27449
|
this.steps = [];
|
|
27167
|
-
this.
|
|
27450
|
+
this.currentStep = 0;
|
|
27451
|
+
this.refreshSteps = () => {
|
|
27452
|
+
this.steps = this.emblaApi.scrollSnapList();
|
|
27453
|
+
this.currentStep = this.emblaApi.selectedScrollSnap();
|
|
27454
|
+
this.currentStepChange.emit(this.currentStep);
|
|
27455
|
+
this.changeDetector.detectChanges();
|
|
27456
|
+
};
|
|
27168
27457
|
}
|
|
27169
27458
|
ngAfterViewInit() {
|
|
27170
27459
|
this.emblaApi = EmblaCarousel(this.carouselOverflowContainer.nativeElement, {
|
|
27171
27460
|
duration: 15,
|
|
27172
27461
|
});
|
|
27173
|
-
const refreshSteps = () => {
|
|
27174
|
-
this.steps = this.emblaApi.scrollSnapList();
|
|
27175
|
-
this.selectedStep = this.emblaApi.selectedScrollSnap();
|
|
27176
|
-
this.changeDetector.detectChanges();
|
|
27177
|
-
};
|
|
27178
27462
|
this.emblaApi
|
|
27179
|
-
.on('init', refreshSteps)
|
|
27180
|
-
.on('reInit', refreshSteps)
|
|
27181
|
-
.on('select', refreshSteps);
|
|
27463
|
+
.on('init', this.refreshSteps)
|
|
27464
|
+
.on('reInit', this.refreshSteps)
|
|
27465
|
+
.on('select', this.refreshSteps);
|
|
27182
27466
|
}
|
|
27183
27467
|
scrollToStep(stepIndex) {
|
|
27184
27468
|
this.emblaApi.scrollTo(stepIndex);
|
|
27185
27469
|
}
|
|
27470
|
+
slideToPrevious() {
|
|
27471
|
+
if (this.isFirstStep)
|
|
27472
|
+
return;
|
|
27473
|
+
this.emblaApi.scrollPrev();
|
|
27474
|
+
}
|
|
27475
|
+
slideToNext() {
|
|
27476
|
+
if (this.isLastStep)
|
|
27477
|
+
return;
|
|
27478
|
+
this.emblaApi.scrollNext();
|
|
27479
|
+
}
|
|
27186
27480
|
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=\"
|
|
27481
|
+
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
27482
|
}
|
|
27189
27483
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
27190
27484
|
type: Component,
|
|
27191
|
-
args: [{ selector: 'gn-ui-carousel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #carouselOverflowContainer class=\"
|
|
27192
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
27485
|
+
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"] }]
|
|
27486
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { carouselOverflowContainer: [{
|
|
27487
|
+
type: ViewChild,
|
|
27488
|
+
args: ['carouselOverflowContainer']
|
|
27489
|
+
}], containerClass: [{
|
|
27193
27490
|
type: Input
|
|
27194
27491
|
}], stepsContainerClass: [{
|
|
27195
27492
|
type: Input
|
|
27196
|
-
}],
|
|
27197
|
-
type:
|
|
27198
|
-
args: ['carouselOverflowContainer']
|
|
27493
|
+
}], currentStepChange: [{
|
|
27494
|
+
type: Output
|
|
27199
27495
|
}] } });
|
|
27200
27496
|
|
|
27201
27497
|
class FormFieldWrapperComponent {
|
|
27202
27498
|
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:
|
|
27499
|
+
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
27500
|
}
|
|
27205
27501
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
27206
27502
|
type: Component,
|
|
@@ -27349,17 +27645,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27349
27645
|
args: ['innerContainer']
|
|
27350
27646
|
}] } });
|
|
27351
27647
|
|
|
27648
|
+
class BlockListComponent {
|
|
27649
|
+
get pages() {
|
|
27650
|
+
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
27651
|
+
}
|
|
27652
|
+
get isFirstPage() {
|
|
27653
|
+
return this.currentPage === 0;
|
|
27654
|
+
}
|
|
27655
|
+
get isLastPage() {
|
|
27656
|
+
return this.currentPage === this.pagesCount - 1;
|
|
27657
|
+
}
|
|
27658
|
+
get pagesCount() {
|
|
27659
|
+
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
27660
|
+
}
|
|
27661
|
+
constructor(changeDetector) {
|
|
27662
|
+
this.changeDetector = changeDetector;
|
|
27663
|
+
this.pageSize = 5;
|
|
27664
|
+
this.containerClass = '';
|
|
27665
|
+
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
27666
|
+
this.minHeight = 0;
|
|
27667
|
+
this.currentPage = 0;
|
|
27668
|
+
this.refreshBlocksVisibility = () => {
|
|
27669
|
+
this.blocks.forEach((block, index) => {
|
|
27670
|
+
block.nativeElement.style.display =
|
|
27671
|
+
index >= this.currentPage * this.pageSize &&
|
|
27672
|
+
index < (this.currentPage + 1) * this.pageSize
|
|
27673
|
+
? null
|
|
27674
|
+
: 'none';
|
|
27675
|
+
});
|
|
27676
|
+
};
|
|
27677
|
+
}
|
|
27678
|
+
ngAfterViewInit() {
|
|
27679
|
+
this.blocks.changes.subscribe(this.refreshBlocksVisibility);
|
|
27680
|
+
this.refreshBlocksVisibility();
|
|
27681
|
+
// we store the first height as the min-height of the list container
|
|
27682
|
+
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
27683
|
+
this.changeDetector.detectChanges();
|
|
27684
|
+
}
|
|
27685
|
+
goToPage(index) {
|
|
27686
|
+
this.currentPage = Math.max(Math.min(index, this.pagesCount - 1), 0);
|
|
27687
|
+
this.changeDetector.detectChanges();
|
|
27688
|
+
this.refreshBlocksVisibility();
|
|
27689
|
+
}
|
|
27690
|
+
previousPage() {
|
|
27691
|
+
if (this.isFirstPage)
|
|
27692
|
+
return;
|
|
27693
|
+
this.goToPage(this.currentPage - 1);
|
|
27694
|
+
}
|
|
27695
|
+
nextPage() {
|
|
27696
|
+
if (this.isLastPage)
|
|
27697
|
+
return;
|
|
27698
|
+
this.goToPage(this.currentPage + 1);
|
|
27699
|
+
}
|
|
27700
|
+
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 }); }
|
|
27701
|
+
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 }); }
|
|
27702
|
+
}
|
|
27703
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
27704
|
+
type: Component,
|
|
27705
|
+
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"] }]
|
|
27706
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { pageSize: [{
|
|
27707
|
+
type: Input
|
|
27708
|
+
}], containerClass: [{
|
|
27709
|
+
type: Input
|
|
27710
|
+
}], paginationContainerClass: [{
|
|
27711
|
+
type: Input
|
|
27712
|
+
}], blocks: [{
|
|
27713
|
+
type: ContentChildren,
|
|
27714
|
+
args: ['block', { read: ElementRef }]
|
|
27715
|
+
}], blockContainer: [{
|
|
27716
|
+
type: ViewChild,
|
|
27717
|
+
args: ['blockContainer']
|
|
27718
|
+
}] } });
|
|
27719
|
+
|
|
27352
27720
|
class UiLayoutModule {
|
|
27353
27721
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27354
27722
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, declarations: [ExpandablePanelComponent,
|
|
27355
27723
|
StickyHeaderComponent,
|
|
27356
27724
|
AnchorLinkDirective,
|
|
27357
|
-
ExpandablePanelButtonComponent,
|
|
27358
|
-
CarouselComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27725
|
+
ExpandablePanelButtonComponent], imports: [CommonModule, MatIconModule, i1$1.TranslateModule], exports: [ExpandablePanelComponent,
|
|
27359
27726
|
StickyHeaderComponent,
|
|
27360
27727
|
AnchorLinkDirective,
|
|
27361
|
-
ExpandablePanelButtonComponent
|
|
27362
|
-
CarouselComponent] }); }
|
|
27728
|
+
ExpandablePanelButtonComponent] }); }
|
|
27363
27729
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, imports: [CommonModule, MatIconModule, TranslateModule.forChild()] }); }
|
|
27364
27730
|
}
|
|
27365
27731
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiLayoutModule, decorators: [{
|
|
@@ -27371,14 +27737,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27371
27737
|
StickyHeaderComponent,
|
|
27372
27738
|
AnchorLinkDirective,
|
|
27373
27739
|
ExpandablePanelButtonComponent,
|
|
27374
|
-
CarouselComponent,
|
|
27375
27740
|
],
|
|
27376
27741
|
exports: [
|
|
27377
27742
|
ExpandablePanelComponent,
|
|
27378
27743
|
StickyHeaderComponent,
|
|
27379
27744
|
AnchorLinkDirective,
|
|
27380
27745
|
ExpandablePanelButtonComponent,
|
|
27381
|
-
CarouselComponent,
|
|
27382
27746
|
],
|
|
27383
27747
|
}]
|
|
27384
27748
|
}] });
|
|
@@ -27388,7 +27752,7 @@ class UserPreviewComponent {
|
|
|
27388
27752
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
27389
27753
|
}
|
|
27390
27754
|
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:
|
|
27755
|
+
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
27756
|
}
|
|
27393
27757
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
27394
27758
|
type: Component,
|
|
@@ -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,
|
|
@@ -30994,7 +31354,7 @@ class TableComponent {
|
|
|
30994
31354
|
return rowIdPrefix + id;
|
|
30995
31355
|
}
|
|
30996
31356
|
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$
|
|
31357
|
+
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
31358
|
}
|
|
30999
31359
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, decorators: [{
|
|
31000
31360
|
type: Component,
|
|
@@ -31864,6 +32224,7 @@ marker('wfs.unreachable.http');
|
|
|
31864
32224
|
marker('wfs.unreachable.unknown');
|
|
31865
32225
|
marker('wfs.featuretype.notfound');
|
|
31866
32226
|
marker('wfs.geojsongml.notsupported');
|
|
32227
|
+
marker('ogc.unreachable.unknown');
|
|
31867
32228
|
marker('dataset.error.network');
|
|
31868
32229
|
marker('dataset.error.http');
|
|
31869
32230
|
marker('dataset.error.parse');
|
|
@@ -31943,6 +32304,27 @@ class DataService {
|
|
|
31943
32304
|
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(format)),
|
|
31944
32305
|
}))));
|
|
31945
32306
|
}
|
|
32307
|
+
async getDownloadLinksFromOgcApiFeatures(ogcApiLink) {
|
|
32308
|
+
const collectionInfo = await this.getDownloadUrlsFromOgcApi(ogcApiLink.url.href);
|
|
32309
|
+
return Object.keys(collectionInfo.bulkDownloadLinks).map((downloadLink) => {
|
|
32310
|
+
return {
|
|
32311
|
+
...ogcApiLink,
|
|
32312
|
+
type: 'download',
|
|
32313
|
+
url: new URL(collectionInfo.bulkDownloadLinks[downloadLink]),
|
|
32314
|
+
mimeType: getMimeTypeForFormat(getFileFormatFromServiceOutput(downloadLink)),
|
|
32315
|
+
};
|
|
32316
|
+
});
|
|
32317
|
+
}
|
|
32318
|
+
async getDownloadUrlsFromOgcApi(url) {
|
|
32319
|
+
const endpoint = new OgcApiEndpoint(this.proxy.getProxiedUrl(url));
|
|
32320
|
+
return await endpoint.featureCollections
|
|
32321
|
+
.then((collections) => {
|
|
32322
|
+
return endpoint.getCollectionInfo(collections[0]);
|
|
32323
|
+
})
|
|
32324
|
+
.catch((error) => {
|
|
32325
|
+
throw new Error(`ogc.unreachable.unknown`);
|
|
32326
|
+
});
|
|
32327
|
+
}
|
|
31946
32328
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
31947
32329
|
return ['json', 'geojson'].map((format) => ({
|
|
31948
32330
|
...esriRestLink,
|
|
@@ -31986,6 +32368,17 @@ class DataService {
|
|
|
31986
32368
|
const url = this.getDownloadUrlFromEsriRest(link.url.toString(), 'geojson');
|
|
31987
32369
|
return from(openDataset(url, 'geojson')).pipe();
|
|
31988
32370
|
}
|
|
32371
|
+
else if (link.type === 'service' &&
|
|
32372
|
+
link.accessServiceProtocol === 'ogcFeatures') {
|
|
32373
|
+
return from(this.getDownloadUrlsFromOgcApi(link.url.href)).pipe(switchMap$1((collectionInfo) => {
|
|
32374
|
+
const geojsonUrl = collectionInfo.jsonDownloadLink;
|
|
32375
|
+
return openDataset(geojsonUrl, 'geojson');
|
|
32376
|
+
}), tap$1((url) => {
|
|
32377
|
+
if (url === null) {
|
|
32378
|
+
throw new Error('wfs.geojsongml.notsupported');
|
|
32379
|
+
}
|
|
32380
|
+
}));
|
|
32381
|
+
}
|
|
31989
32382
|
return throwError(() => 'protocol not supported');
|
|
31990
32383
|
}
|
|
31991
32384
|
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 +32605,7 @@ class ChartViewComponent {
|
|
|
32212
32605
|
this.changeDetector.detectChanges();
|
|
32213
32606
|
}
|
|
32214
32607
|
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 }); }
|
|
32608
|
+
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
32609
|
}
|
|
32217
32610
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
32218
32611
|
type: Component,
|
|
@@ -32444,7 +32837,8 @@ class MapViewComponent {
|
|
|
32444
32837
|
}
|
|
32445
32838
|
else if ((link.type === 'service' &&
|
|
32446
32839
|
(link.accessServiceProtocol === 'wfs' ||
|
|
32447
|
-
link.accessServiceProtocol === 'esriRest'
|
|
32840
|
+
link.accessServiceProtocol === 'esriRest' ||
|
|
32841
|
+
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
32448
32842
|
link.type === 'download') {
|
|
32449
32843
|
return this.dataService.readAsGeoJson(link).pipe(map$1((data) => ({
|
|
32450
32844
|
type: MapContextLayerTypeEnum.GEOJSON,
|
|
@@ -32457,7 +32851,7 @@ class MapViewComponent {
|
|
|
32457
32851
|
this.selectedLinkIndex$.next(link);
|
|
32458
32852
|
}
|
|
32459
32853
|
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 }); }
|
|
32854
|
+
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
32855
|
}
|
|
32462
32856
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
32463
32857
|
type: Component,
|
|
@@ -32495,7 +32889,7 @@ class DataViewComponent {
|
|
|
32495
32889
|
this.selectedLink$.next(link);
|
|
32496
32890
|
}
|
|
32497
32891
|
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 }); }
|
|
32892
|
+
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
32893
|
}
|
|
32500
32894
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewComponent, decorators: [{
|
|
32501
32895
|
type: Component,
|
|
@@ -32589,7 +32983,7 @@ class OrganisationsFilterComponent {
|
|
|
32589
32983
|
this.filterByValueChange.next(inputValue);
|
|
32590
32984
|
}
|
|
32591
32985
|
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 }); }
|
|
32986
|
+
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
32987
|
}
|
|
32594
32988
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: OrganisationsFilterComponent, decorators: [{
|
|
32595
32989
|
type: Component,
|
|
@@ -32629,7 +33023,7 @@ class LanguageSwitcherComponent {
|
|
|
32629
33023
|
this.translate.use(value);
|
|
32630
33024
|
}
|
|
32631
33025
|
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"] }] }); }
|
|
33026
|
+
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
33027
|
}
|
|
32634
33028
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LanguageSwitcherComponent, decorators: [{
|
|
32635
33029
|
type: Component,
|
|
@@ -33042,7 +33436,7 @@ class DataViewShareComponent {
|
|
|
33042
33436
|
this.wcEmbedderBaseUrl = wcEmbedderBaseUrl;
|
|
33043
33437
|
}
|
|
33044
33438
|
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$
|
|
33439
|
+
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
33440
|
}
|
|
33047
33441
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DataViewShareComponent, decorators: [{
|
|
33048
33442
|
type: Component,
|
|
@@ -33171,6 +33565,27 @@ const DEFAULT_FIELDS = [
|
|
|
33171
33565
|
},
|
|
33172
33566
|
onSaveProcess: '${dateNow()}',
|
|
33173
33567
|
},
|
|
33568
|
+
{
|
|
33569
|
+
model: 'licenses',
|
|
33570
|
+
formFieldConfig: {
|
|
33571
|
+
labelKey: marker('editor.record.form.license'),
|
|
33572
|
+
type: 'list',
|
|
33573
|
+
},
|
|
33574
|
+
},
|
|
33575
|
+
{
|
|
33576
|
+
model: 'resourceUpdated',
|
|
33577
|
+
formFieldConfig: {
|
|
33578
|
+
labelKey: marker('editor.record.form.resourceUpdated'),
|
|
33579
|
+
type: 'date',
|
|
33580
|
+
},
|
|
33581
|
+
},
|
|
33582
|
+
{
|
|
33583
|
+
model: 'updateFrequency',
|
|
33584
|
+
formFieldConfig: {
|
|
33585
|
+
labelKey: marker('editor.record.form.updateFrequency'),
|
|
33586
|
+
type: 'text',
|
|
33587
|
+
},
|
|
33588
|
+
},
|
|
33174
33589
|
];
|
|
33175
33590
|
|
|
33176
33591
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
@@ -33555,7 +33970,7 @@ class WizardFieldComponent {
|
|
|
33555
33970
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
33556
33971
|
},
|
|
33557
33972
|
{ 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:
|
|
33973
|
+
], 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
33974
|
}
|
|
33560
33975
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
33561
33976
|
type: Component,
|
|
@@ -33884,6 +34299,174 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33884
34299
|
args: [{ selector: 'gn-ui-form-field-temporal-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-temporal-extent works!</p>\n" }]
|
|
33885
34300
|
}] });
|
|
33886
34301
|
|
|
34302
|
+
class FormFieldLicenseComponent {
|
|
34303
|
+
constructor() {
|
|
34304
|
+
this.choices = [
|
|
34305
|
+
{
|
|
34306
|
+
value: 'cc-by',
|
|
34307
|
+
label: marker('editor.record.form.license.cc-by'),
|
|
34308
|
+
},
|
|
34309
|
+
{
|
|
34310
|
+
value: 'cc-by-sa',
|
|
34311
|
+
label: marker('editor.record.form.license.cc-by-sa'),
|
|
34312
|
+
},
|
|
34313
|
+
{
|
|
34314
|
+
value: 'cc-zero',
|
|
34315
|
+
label: marker('editor.record.form.license.cc-zero'),
|
|
34316
|
+
},
|
|
34317
|
+
{
|
|
34318
|
+
value: 'etalab',
|
|
34319
|
+
label: marker('editor.record.form.license.etalab'),
|
|
34320
|
+
},
|
|
34321
|
+
{
|
|
34322
|
+
value: 'etalab-v2',
|
|
34323
|
+
label: marker('editor.record.form.license.etalab-v2'),
|
|
34324
|
+
},
|
|
34325
|
+
{
|
|
34326
|
+
value: 'odbl',
|
|
34327
|
+
label: marker('editor.record.form.license.odbl'),
|
|
34328
|
+
},
|
|
34329
|
+
{
|
|
34330
|
+
value: 'odc-by',
|
|
34331
|
+
label: marker('editor.record.form.license.odc-by'),
|
|
34332
|
+
},
|
|
34333
|
+
{
|
|
34334
|
+
value: 'pddl',
|
|
34335
|
+
label: marker('editor.record.form.license.pddl'),
|
|
34336
|
+
},
|
|
34337
|
+
{
|
|
34338
|
+
value: 'unknown',
|
|
34339
|
+
label: marker('editor.record.form.license.unknown'),
|
|
34340
|
+
},
|
|
34341
|
+
];
|
|
34342
|
+
}
|
|
34343
|
+
get selected() {
|
|
34344
|
+
return this.control.value[0]?.text;
|
|
34345
|
+
}
|
|
34346
|
+
onSelectValue(value) {
|
|
34347
|
+
this.control.setValue([{ text: value }]);
|
|
34348
|
+
}
|
|
34349
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34350
|
+
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 }); }
|
|
34351
|
+
}
|
|
34352
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, decorators: [{
|
|
34353
|
+
type: Component,
|
|
34354
|
+
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" }]
|
|
34355
|
+
}], propDecorators: { control: [{
|
|
34356
|
+
type: Input
|
|
34357
|
+
}], label: [{
|
|
34358
|
+
type: Input
|
|
34359
|
+
}] } });
|
|
34360
|
+
|
|
34361
|
+
class FormFieldResourceUpdatedComponent {
|
|
34362
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34363
|
+
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 }); }
|
|
34364
|
+
}
|
|
34365
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, decorators: [{
|
|
34366
|
+
type: Component,
|
|
34367
|
+
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" }]
|
|
34368
|
+
}], propDecorators: { control: [{
|
|
34369
|
+
type: Input
|
|
34370
|
+
}] } });
|
|
34371
|
+
|
|
34372
|
+
class FormFieldUpdateFrequencyComponent {
|
|
34373
|
+
get planned() {
|
|
34374
|
+
return this.control.value !== 'notPlanned';
|
|
34375
|
+
}
|
|
34376
|
+
constructor(translateService) {
|
|
34377
|
+
this.translateService = translateService;
|
|
34378
|
+
this.choices = [
|
|
34379
|
+
{
|
|
34380
|
+
value: 'day.1',
|
|
34381
|
+
label: this.translateService.instant('domain.record.updateFrequency.day', {
|
|
34382
|
+
count: 1,
|
|
34383
|
+
}),
|
|
34384
|
+
},
|
|
34385
|
+
{
|
|
34386
|
+
value: 'day.2',
|
|
34387
|
+
label: this.translateService.instant('domain.record.updateFrequency.day', {
|
|
34388
|
+
count: 2,
|
|
34389
|
+
}),
|
|
34390
|
+
},
|
|
34391
|
+
{
|
|
34392
|
+
value: 'week.1',
|
|
34393
|
+
label: this.translateService.instant('domain.record.updateFrequency.week', {
|
|
34394
|
+
count: 1,
|
|
34395
|
+
}),
|
|
34396
|
+
},
|
|
34397
|
+
{
|
|
34398
|
+
value: 'week.2',
|
|
34399
|
+
label: this.translateService.instant('domain.record.updateFrequency.week', {
|
|
34400
|
+
count: 2,
|
|
34401
|
+
}),
|
|
34402
|
+
},
|
|
34403
|
+
{
|
|
34404
|
+
value: 'month.1',
|
|
34405
|
+
label: this.translateService.instant('domain.record.updateFrequency.month', {
|
|
34406
|
+
count: 1,
|
|
34407
|
+
}),
|
|
34408
|
+
},
|
|
34409
|
+
{
|
|
34410
|
+
value: 'month.2',
|
|
34411
|
+
label: this.translateService.instant('domain.record.updateFrequency.month', {
|
|
34412
|
+
count: 2,
|
|
34413
|
+
}),
|
|
34414
|
+
},
|
|
34415
|
+
{
|
|
34416
|
+
value: 'year.1',
|
|
34417
|
+
label: this.translateService.instant('domain.record.updateFrequency.year', {
|
|
34418
|
+
count: 1,
|
|
34419
|
+
}),
|
|
34420
|
+
},
|
|
34421
|
+
{
|
|
34422
|
+
value: 'year.2',
|
|
34423
|
+
label: this.translateService.instant('domain.record.updateFrequency.year', {
|
|
34424
|
+
count: 2,
|
|
34425
|
+
}),
|
|
34426
|
+
},
|
|
34427
|
+
];
|
|
34428
|
+
}
|
|
34429
|
+
ngOnInit() {
|
|
34430
|
+
const updatedTimes = this.control.value?.updatedTimes;
|
|
34431
|
+
const per = this.control.value?.per;
|
|
34432
|
+
if (updatedTimes && updatedTimes !== 1 && updatedTimes !== 2) {
|
|
34433
|
+
this.choices = [
|
|
34434
|
+
{
|
|
34435
|
+
value: `${per}.${updatedTimes}`,
|
|
34436
|
+
label: this.translateService.instant(`domain.record.updateFrequency.${per}`, {
|
|
34437
|
+
count: updatedTimes,
|
|
34438
|
+
}),
|
|
34439
|
+
},
|
|
34440
|
+
...this.choices,
|
|
34441
|
+
];
|
|
34442
|
+
}
|
|
34443
|
+
}
|
|
34444
|
+
onPlannedToggled() {
|
|
34445
|
+
if (this.planned) {
|
|
34446
|
+
this.control.setValue('notPlanned');
|
|
34447
|
+
}
|
|
34448
|
+
else {
|
|
34449
|
+
this.control.setValue({ updatedTimes: 1, per: 'day' });
|
|
34450
|
+
}
|
|
34451
|
+
}
|
|
34452
|
+
get selectedFrequency() {
|
|
34453
|
+
const { updatedTimes, per } = this.control.value;
|
|
34454
|
+
return `${per}.${updatedTimes}`;
|
|
34455
|
+
}
|
|
34456
|
+
onSelectFrequencyValue(value) {
|
|
34457
|
+
const split = value.split('.');
|
|
34458
|
+
this.control.setValue({ updatedTimes: Number(split[1]), per: split[0] });
|
|
34459
|
+
}
|
|
34460
|
+
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 }); }
|
|
34461
|
+
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 }); }
|
|
34462
|
+
}
|
|
34463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldUpdateFrequencyComponent, decorators: [{
|
|
34464
|
+
type: Component,
|
|
34465
|
+
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" }]
|
|
34466
|
+
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; }, propDecorators: { control: [{
|
|
34467
|
+
type: Input
|
|
34468
|
+
}] } });
|
|
34469
|
+
|
|
33887
34470
|
class FormFieldComponent {
|
|
33888
34471
|
set value(v) {
|
|
33889
34472
|
this.formControl.setValue(v, {
|
|
@@ -33938,8 +34521,20 @@ class FormFieldComponent {
|
|
|
33938
34521
|
get isAbstract() {
|
|
33939
34522
|
return this.model === 'abstract';
|
|
33940
34523
|
}
|
|
34524
|
+
get isLicenses() {
|
|
34525
|
+
return this.model === 'licenses';
|
|
34526
|
+
}
|
|
34527
|
+
get isResourceUpdated() {
|
|
34528
|
+
return this.model === 'resourceUpdated';
|
|
34529
|
+
}
|
|
34530
|
+
get isUpdateFrequency() {
|
|
34531
|
+
return this.model === 'updateFrequency';
|
|
34532
|
+
}
|
|
34533
|
+
get withoutWrapper() {
|
|
34534
|
+
return this.model === 'title' || this.model === 'abstract';
|
|
34535
|
+
}
|
|
33941
34536
|
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 <
|
|
34537
|
+
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
34538
|
}
|
|
33944
34539
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
33945
34540
|
type: Component,
|
|
@@ -33949,6 +34544,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33949
34544
|
EditableLabelDirective,
|
|
33950
34545
|
MatIconModule,
|
|
33951
34546
|
MatTooltipModule,
|
|
34547
|
+
FormFieldWrapperComponent,
|
|
34548
|
+
FormFieldLicenseComponent,
|
|
34549
|
+
FormFieldResourceUpdatedComponent,
|
|
34550
|
+
FormFieldUpdateFrequencyComponent,
|
|
33952
34551
|
FormFieldSimpleComponent,
|
|
33953
34552
|
FormFieldRichComponent,
|
|
33954
34553
|
FormFieldObjectComponent,
|
|
@@ -33957,7 +34556,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33957
34556
|
FormFieldFileComponent,
|
|
33958
34557
|
FormFieldArrayComponent,
|
|
33959
34558
|
TranslateModule,
|
|
33960
|
-
], template: "<div class=\"flex flex-col h-full\">\n <
|
|
34559
|
+
], 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
34560
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
33962
34561
|
type: Input
|
|
33963
34562
|
}], config: [{
|
|
@@ -34315,7 +34914,7 @@ class DefaultRouterModule {
|
|
|
34315
34914
|
};
|
|
34316
34915
|
}
|
|
34317
34916
|
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$
|
|
34917
|
+
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
34918
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
34320
34919
|
RouterFacade,
|
|
34321
34920
|
{
|
|
@@ -34358,5 +34957,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
34358
34957
|
* Generated bundle index. Do not edit.
|
|
34359
34958
|
*/
|
|
34360
34959
|
|
|
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 };
|
|
34960
|
+
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
34961
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|