geonetwork-ui 2.6.0-dev.857b51517 → 2.6.0-dev.97a89c313
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/common/distribution.mapper.mjs +3 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +2 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +2 -1
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +7 -4
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/chart-view/chart-view.component.mjs +45 -9
- package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +2 -2
- package/esm2022/libs/feature/dataviz/src/lib/service/data.service.mjs +32 -2
- package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +25 -6
- package/esm2022/libs/feature/record/src/index.mjs +2 -3
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +3 -3
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +33 -7
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +11 -13
- package/esm2022/libs/feature/search/src/lib/constants.mjs +2 -1
- package/esm2022/libs/feature/search/src/lib/results-list/results-list.container.component.mjs +6 -2
- package/esm2022/libs/ui/dataviz/src/lib/chart/chart.component.mjs +5 -3
- package/esm2022/libs/ui/dataviz/src/lib/data-table/data-table.component.mjs +11 -6
- package/esm2022/libs/ui/elements/src/index.mjs +3 -1
- package/esm2022/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.mjs +55 -0
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +27 -53
- package/esm2022/libs/ui/elements/src/lib/kind-badge/kind-badge.component.mjs +22 -5
- package/esm2022/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +51 -0
- package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +17 -7
- package/esm2022/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.mjs +12 -4
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -4
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.mjs +68 -0
- package/esm2022/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.mjs +34 -13
- package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +65 -14
- package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +29 -4
- package/esm2022/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.mjs +2 -1
- package/esm2022/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.mjs +4 -8
- package/esm2022/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.mjs +3 -3
- package/esm2022/libs/ui/search/src/lib/results-list/results-layout.config.mjs +2 -2
- package/esm2022/libs/ui/search/src/lib/results-list/results-list.component.mjs +3 -3
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +4 -1
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +4 -1
- package/esm2022/translations/de.json +6 -2
- package/esm2022/translations/en.json +7 -5
- package/esm2022/translations/es.json +6 -2
- package/esm2022/translations/fr.json +6 -4
- package/esm2022/translations/it.json +38 -34
- package/esm2022/translations/nl.json +6 -2
- package/esm2022/translations/pt.json +6 -2
- package/fesm2022/geonetwork-ui.mjs +1002 -588
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/lib/common/distribution.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +4 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts +12 -8
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts +1 -0
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +5 -2
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/index.d.ts +1 -2
- package/libs/feature/record/src/index.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 +26 -21
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts +1 -1
- package/libs/feature/search/src/lib/results-list/results-list.container.component.d.ts.map +1 -1
- package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts +2 -1
- package/libs/ui/dataviz/src/lib/chart/chart.component.d.ts.map +1 -1
- package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts +6 -1
- package/libs/ui/dataviz/src/lib/data-table/data-table.component.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +2 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts +15 -0
- package/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +3 -7
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts +3 -1
- package/libs/ui/elements/src/lib/kind-badge/kind-badge.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +16 -0
- package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +8 -1
- package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts +1 -0
- package/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +2 -1
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/index.d.ts +1 -0
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts +17 -0
- package/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts +15 -8
- package/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +15 -6
- package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +6 -2
- package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-list/results-list.component.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
- 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/common/distribution.mapper.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +2 -1
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +1 -0
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +9 -3
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +9 -2
- package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +10 -0
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +14 -0
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +1 -1
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.html +12 -9
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +54 -10
- package/src/libs/feature/dataviz/src/lib/service/data.service.ts +37 -0
- package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.html +1 -0
- package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +27 -1
- package/src/libs/feature/record/src/index.ts +1 -2
- package/src/libs/feature/record/src/lib/data-view/data-view.component.html +2 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +4 -1
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +35 -4
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +18 -15
- package/src/libs/feature/search/src/lib/constants.ts +1 -0
- package/src/libs/feature/search/src/lib/results-list/results-list.container.component.ts +2 -0
- package/src/libs/ui/dataviz/src/lib/chart/chart.component.ts +2 -1
- package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.html +6 -3
- package/src/libs/ui/dataviz/src/lib/data-table/data-table.component.ts +5 -4
- package/src/libs/ui/elements/src/index.ts +2 -0
- package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.css +4 -0
- package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.html +13 -0
- package/src/libs/ui/elements/src/lib/geo-data-badge/geo-data-badge.component.ts +54 -0
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +133 -138
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +19 -47
- package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.html +7 -5
- package/src/libs/ui/elements/src/lib/kind-badge/kind-badge.component.ts +21 -2
- package/src/libs/ui/elements/src/lib/metadata-contact/metadata-contact.component.html +6 -3
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +4 -0
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.html +1 -1
- package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +48 -0
- package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +52 -0
- package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +8 -29
- package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +14 -1
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.html +15 -1
- package/src/libs/ui/elements/src/lib/service-capabilities/service-capabilities.component.ts +9 -1
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +3 -1
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.css +0 -0
- package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.html +43 -0
- package/src/libs/ui/inputs/src/lib/search-feature-catalog/search-feature-catalog.component.ts +77 -0
- package/src/libs/ui/inputs/src/lib/star-toggle/star-toggle.component.html +1 -2
- package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.html +24 -8
- package/src/libs/ui/layout/src/lib/expandable-panel/expandable-panel.component.ts +36 -10
- package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +8 -10
- package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +75 -7
- package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +3 -3
- package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +27 -3
- package/src/libs/ui/map/src/lib/components/spatial-extent/spatial-extent.component.ts +1 -0
- package/src/libs/ui/search/src/lib/record-preview-row/record-preview-row.component.html +9 -81
- package/src/libs/ui/search/src/lib/results-hits-search-kind/results-hits-search-kind.component.html +1 -0
- package/src/libs/ui/search/src/lib/results-list/results-layout.config.ts +2 -2
- package/src/libs/ui/search/src/lib/results-list/results-list.component.html +1 -0
- package/src/libs/ui/search/src/lib/results-list/results-list.component.ts +0 -1
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +3 -0
- package/src/libs/util/shared/src/lib/links/link-utils.ts +3 -0
- package/translations/de.json +6 -2
- package/translations/en.json +7 -5
- package/translations/es.json +6 -2
- package/translations/fr.json +6 -4
- package/translations/it.json +38 -34
- package/translations/nl.json +6 -2
- package/translations/pt.json +6 -2
- package/translations/sk.json +6 -2
|
@@ -16,50 +16,50 @@ import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-comp
|
|
|
16
16
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
17
17
|
import { map as map$1, catchError, tap as tap$1, shareReplay, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, throttleTime, distinctUntilChanged, debounceTime, finalize, delay, first as first$1, share, pairwise, defaultIfEmpty, toArray } from 'rxjs/operators';
|
|
18
18
|
import * as i1$2 from '@angular/common';
|
|
19
|
-
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault,
|
|
19
|
+
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault, NgClass, NgIf, NgTemplateOutlet, NgOptimizedImage, DatePipe } from '@angular/common';
|
|
20
20
|
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, fromEvent, animationFrameScheduler, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, timer, filter as filter$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, startWith as startWith$1, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, shareReplay as shareReplay$1, pairwise as pairwise$1 } from 'rxjs';
|
|
21
21
|
import { lt, valid, coerce, satisfies, ltr } from 'semver';
|
|
22
22
|
import chroma from 'chroma-js';
|
|
23
|
-
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache } from '@camptocamp/ogc-client';
|
|
23
|
+
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache, TmsEndpoint } from '@camptocamp/ogc-client';
|
|
24
24
|
import * as i1$3 from '@ngrx/store';
|
|
25
25
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
26
26
|
import EmblaCarousel from 'embla-carousel';
|
|
27
27
|
import * as i2$2 from '@ng-icons/core';
|
|
28
28
|
import { provideIcons, NgIcon, NgIconComponent, provideNgIconsConfig, NgIconsModule } from '@ng-icons/core';
|
|
29
|
-
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirExpand, iconoirReduce, iconoirAppleWallet, iconoirAppleShortcuts, iconoirCode, iconoirCreditCard, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus,
|
|
30
|
-
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowBackIos, matArrowForwardIos, matCheck, matWarningAmber, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matWarning,
|
|
31
|
-
import * as
|
|
29
|
+
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirNavArrowDown, iconoirNavArrowUp, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirExpand, iconoirReduce, iconoirAppleWallet, iconoirAppleShortcuts, iconoirCode, iconoirCreditCard, iconoirInternet, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirUser, iconoirLock, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh } from '@ng-icons/iconoir';
|
|
30
|
+
import { matExpandMore, matExpandLess, matAdd, matRemove, matClose, matContentCopy, matSearch, matStar, matStarBorder, matChevronLeft, matChevronRight, matArrowBackIos, matArrowForwardIos, matCheck, matWarningAmber, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matWarning, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
|
|
31
|
+
import * as i3 from '@angular/material/tooltip';
|
|
32
32
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
33
33
|
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
34
34
|
import * as i2$1 from '@angular/forms';
|
|
35
35
|
import { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';
|
|
36
|
-
import * as i1$
|
|
36
|
+
import * as i1$5 from '@angular/material/autocomplete';
|
|
37
37
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
38
|
-
import * as i3 from 'ngx-dropzone';
|
|
38
|
+
import * as i3$1 from 'ngx-dropzone';
|
|
39
39
|
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
40
40
|
import { TagInputModule } from 'ngx-chips';
|
|
41
|
-
import * as i1$
|
|
41
|
+
import * as i1$4 from '@angular/material/progress-spinner';
|
|
42
42
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
43
43
|
import tippy from 'tippy.js';
|
|
44
|
-
import { matErrorOutlineOutline, matInfoOutline,
|
|
44
|
+
import { matErrorOutlineOutline, matLocationSearchingOutline, matInfoOutline, matEmailOutline, matPhoneOutline, matLocationOnOutline, matComputerOutline, matCallOutline, matSwipeOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline } from '@ng-icons/material-icons/outline';
|
|
45
45
|
import * as i2 from '@angular/material/core';
|
|
46
46
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
47
|
-
import * as i1$
|
|
47
|
+
import * as i1$6 from '@angular/material/checkbox';
|
|
48
48
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
49
|
-
import * as i1$
|
|
49
|
+
import * as i1$7 from '@angular/material/datepicker';
|
|
50
50
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
51
|
-
import * as i1$
|
|
51
|
+
import * as i1$8 from '@angular/cdk/overlay';
|
|
52
52
|
import { CdkConnectedOverlay, OverlayModule, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
53
|
-
import * as i1$
|
|
53
|
+
import * as i1$9 from '@angular/material/button-toggle';
|
|
54
54
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
55
55
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
56
56
|
import { MatInputModule } from '@angular/material/input';
|
|
57
|
-
import * as i1$
|
|
57
|
+
import * as i1$a from '@angular/material/dialog';
|
|
58
58
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
59
59
|
import { MatButtonModule } from '@angular/material/button';
|
|
60
60
|
import * as i2$3 from '@angular/material/tabs';
|
|
61
61
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
62
|
-
import * as i1$
|
|
62
|
+
import * as i1$c from '@angular/router';
|
|
63
63
|
import { RouterLink, RouterModule, RouteReuseStrategy } from '@angular/router';
|
|
64
64
|
import { marked } from 'marked';
|
|
65
65
|
import Duration from 'duration-relativetimeformat';
|
|
@@ -74,7 +74,7 @@ import { formatDistance } from 'date-fns/formatDistance';
|
|
|
74
74
|
import { enUS, sk, pt as pt$1, nl as nl$1, it as it$1, es as es$1, de as de$1, fr as fr$1 } from 'date-fns/locale';
|
|
75
75
|
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
76
76
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
77
|
-
import * as i1$
|
|
77
|
+
import * as i1$b from '@ngrx/effects';
|
|
78
78
|
import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
79
79
|
import { valid as valid$1 } from 'geojson-validation';
|
|
80
80
|
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
@@ -90,7 +90,7 @@ import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
|
90
90
|
import { tablerFolderOpen } from '@ng-icons/tabler-icons';
|
|
91
91
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
92
92
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
93
|
-
import * as i3$
|
|
93
|
+
import * as i3$2 from '@angular/material/sort';
|
|
94
94
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
95
95
|
import * as i2$4 from '@angular/material/table';
|
|
96
96
|
import { MatTableModule } from '@angular/material/table';
|
|
@@ -98,14 +98,14 @@ import * as i4 from '@angular/material/paginator';
|
|
|
98
98
|
import { MatPaginatorIntl, MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
99
99
|
import { LetDirective } from '@ngrx/component';
|
|
100
100
|
import axios from 'axios';
|
|
101
|
-
import * as i1$
|
|
101
|
+
import * as i1$d from '@angular/platform-browser';
|
|
102
102
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
103
103
|
import * as i4$1 from '@angular/material/radio';
|
|
104
104
|
import { MatRadioModule } from '@angular/material/radio';
|
|
105
105
|
import { MatIconModule } from '@angular/material/icon';
|
|
106
106
|
import * as i4$2 from '@angular/cdk/text-field';
|
|
107
107
|
import { TextFieldModule } from '@angular/cdk/text-field';
|
|
108
|
-
import * as i3$
|
|
108
|
+
import * as i3$3 from '@ngrx/router-store';
|
|
109
109
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
110
110
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
111
111
|
|
|
@@ -642,6 +642,8 @@ function matchProtocol(protocol) {
|
|
|
642
642
|
return 'wfs';
|
|
643
643
|
if (/wmts/i.test(protocol))
|
|
644
644
|
return 'wmts';
|
|
645
|
+
if (/tms/i.test(protocol))
|
|
646
|
+
return 'tms';
|
|
645
647
|
if (/wps/i.test(protocol))
|
|
646
648
|
return 'wps';
|
|
647
649
|
if (/ogc\W*api\W*features/i.test(protocol))
|
|
@@ -971,7 +973,7 @@ function kindToCodeListValue(record) {
|
|
|
971
973
|
}
|
|
972
974
|
|
|
973
975
|
function extractCharacterString() {
|
|
974
|
-
return pipe(fallback(findChildElement('gco:CharacterString', false), findChildElement('gmx:Anchor', false)), readText());
|
|
976
|
+
return pipe(fallback(findChildElement('gco:CharacterString', false), findChildElement('gmx:Anchor', false), findChildElement('gmx:MimeFileType', false)), readText());
|
|
975
977
|
}
|
|
976
978
|
/**
|
|
977
979
|
* Translated values will also be collected in the translations object
|
|
@@ -18965,8 +18967,9 @@ var de = {
|
|
|
18965
18967
|
"record.action.view": "Anzeigen",
|
|
18966
18968
|
"record.card.metadata.contact": "",
|
|
18967
18969
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
18970
|
+
"record.feature.catalog.number.total.attribute": "",
|
|
18971
|
+
"record.feature.catalog.number.total.object": "",
|
|
18968
18972
|
"record.feature.limit": "Die Vorschau wurde aufgrund zu vieler Elemente deaktiviert",
|
|
18969
|
-
"record.kind.data": "",
|
|
18970
18973
|
"record.kind.dataset": "",
|
|
18971
18974
|
"record.kind.reuse": "",
|
|
18972
18975
|
"record.kind.service": "",
|
|
@@ -19009,6 +19012,7 @@ var de = {
|
|
|
19009
19012
|
"record.metadata.creation": "Erstellungsdatum",
|
|
19010
19013
|
"record.metadata.details": "Über die Daten",
|
|
19011
19014
|
"record.metadata.download": "Downloads",
|
|
19015
|
+
"record.metadata.feature.catalog": "",
|
|
19012
19016
|
"record.metadata.formats": "Formate",
|
|
19013
19017
|
"record.metadata.keywords": "Stichworte",
|
|
19014
19018
|
"record.metadata.languages": "Sprachen",
|
|
@@ -19052,7 +19056,7 @@ var de = {
|
|
|
19052
19056
|
"record.metadata.temporalExtent.untilDate": "Bis {end}",
|
|
19053
19057
|
"record.metadata.title": "Titel",
|
|
19054
19058
|
"record.metadata.topics": "Kategorien",
|
|
19055
|
-
"record.metadata.
|
|
19059
|
+
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19056
19060
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
19057
19061
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
19058
19062
|
"record.metadata.updatedOn": "Geändert am",
|
|
@@ -19092,6 +19096,7 @@ var de = {
|
|
|
19092
19096
|
"search.error.recordNotFound": "Der Datensatz mit der Kennung \"{ id }\" konnte nicht gefunden werden.",
|
|
19093
19097
|
"search.field.any.placeholder": "Suche im katalog ...",
|
|
19094
19098
|
"search.field.sortBy": "Sortieren nach:",
|
|
19099
|
+
"search.filter.into.feature.catalog": "",
|
|
19095
19100
|
"search.filters.availableServices.download": "",
|
|
19096
19101
|
"search.filters.availableServices.view": "",
|
|
19097
19102
|
"search.filters.changeDate": "Letzte Aktualisierung",
|
|
@@ -19155,6 +19160,7 @@ var de = {
|
|
|
19155
19160
|
"service.metadata.other": "",
|
|
19156
19161
|
"service.metadata.question": "",
|
|
19157
19162
|
"service.metadata.search": "",
|
|
19163
|
+
"service.metadata.search.clear": "",
|
|
19158
19164
|
"service.metadata.spatialExtent": "",
|
|
19159
19165
|
"share.tab.permalink": "Teilen",
|
|
19160
19166
|
"share.tab.webComponent": "Integrieren",
|
|
@@ -19548,8 +19554,9 @@ var en = {
|
|
|
19548
19554
|
"record.action.view": "View",
|
|
19549
19555
|
"record.card.metadata.contact": "Metadata Contact",
|
|
19550
19556
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
19557
|
+
"record.feature.catalog.number.total.attribute": "Total amount of objects",
|
|
19558
|
+
"record.feature.catalog.number.total.object": "Total amount of attributes",
|
|
19551
19559
|
"record.feature.limit": "Preview disabled due to too many elements",
|
|
19552
|
-
"record.kind.data": "Data",
|
|
19553
19560
|
"record.kind.dataset": "Dataset",
|
|
19554
19561
|
"record.kind.reuse": "Reuse",
|
|
19555
19562
|
"record.kind.service": "Service",
|
|
@@ -19592,6 +19599,7 @@ var en = {
|
|
|
19592
19599
|
"record.metadata.creation": "Date of creation",
|
|
19593
19600
|
"record.metadata.details": "About the data",
|
|
19594
19601
|
"record.metadata.download": "Downloads",
|
|
19602
|
+
"record.metadata.feature.catalog": "Feature catalog",
|
|
19595
19603
|
"record.metadata.formats": "Formats",
|
|
19596
19604
|
"record.metadata.keywords": "Keywords",
|
|
19597
19605
|
"record.metadata.languages": "Languages",
|
|
@@ -19622,7 +19630,7 @@ var en = {
|
|
|
19622
19630
|
"record.metadata.quality.topic.success": "Topic is specified",
|
|
19623
19631
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19624
19632
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19625
|
-
"record.metadata.related": "Related
|
|
19633
|
+
"record.metadata.related": "Related records",
|
|
19626
19634
|
"record.metadata.related.contents": "Related content",
|
|
19627
19635
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19628
19636
|
"record.metadata.sheet": "Original metadata",
|
|
@@ -19635,7 +19643,7 @@ var en = {
|
|
|
19635
19643
|
"record.metadata.temporalExtent.untilDate": "Until { end }",
|
|
19636
19644
|
"record.metadata.title": "Title",
|
|
19637
19645
|
"record.metadata.topics": "Categories",
|
|
19638
|
-
"record.metadata.
|
|
19646
|
+
"record.metadata.isGeographical": "Geographical dataset",
|
|
19639
19647
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
19640
19648
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
19641
19649
|
"record.metadata.updatedOn": "Updated on",
|
|
@@ -19675,6 +19683,7 @@ var en = {
|
|
|
19675
19683
|
"search.error.recordNotFound": "The dataset with identifier \"{ id }\" could not be found.",
|
|
19676
19684
|
"search.field.any.placeholder": "Search in the catalog ...",
|
|
19677
19685
|
"search.field.sortBy": "Sort by:",
|
|
19686
|
+
"search.filter.into.feature.catalog": "Search a term",
|
|
19678
19687
|
"search.filters.availableServices.download": "",
|
|
19679
19688
|
"search.filters.availableServices.view": "",
|
|
19680
19689
|
"search.filters.changeDate": "Updated",
|
|
@@ -19738,6 +19747,7 @@ var en = {
|
|
|
19738
19747
|
"service.metadata.other": "Other information",
|
|
19739
19748
|
"service.metadata.question": "Ask a question",
|
|
19740
19749
|
"service.metadata.search": "Search through the layer list",
|
|
19750
|
+
"service.metadata.search.clear": "Clear the layer search",
|
|
19741
19751
|
"service.metadata.spatialExtent": "Spatial extent",
|
|
19742
19752
|
"share.tab.permalink": "Share",
|
|
19743
19753
|
"share.tab.webComponent": "Integrate",
|
|
@@ -19756,8 +19766,6 @@ var en = {
|
|
|
19756
19766
|
"tooltip.url.open": "Open URL",
|
|
19757
19767
|
"ui.readLess": "Read less",
|
|
19758
19768
|
"ui.readMore": "Read more",
|
|
19759
|
-
"ui.hideFullText": "Hide complete text",
|
|
19760
|
-
"ui.showAllText": "Show all text",
|
|
19761
19769
|
"wfs.feature.limit": "Too many features to display the WFS layer!",
|
|
19762
19770
|
"wfs.featuretype.notfound": "No matching feature type was found in the service",
|
|
19763
19771
|
"wfs.geojsongml.notsupported": "This service does not support the GeoJSON or GML format",
|
|
@@ -20133,8 +20141,9 @@ var es = {
|
|
|
20133
20141
|
"record.action.view": "",
|
|
20134
20142
|
"record.card.metadata.contact": "",
|
|
20135
20143
|
"record.externalViewer.open": "",
|
|
20144
|
+
"record.feature.catalog.number.total.attribute": "",
|
|
20145
|
+
"record.feature.catalog.number.total.object": "",
|
|
20136
20146
|
"record.feature.limit": "",
|
|
20137
|
-
"record.kind.data": "",
|
|
20138
20147
|
"record.kind.dataset": "",
|
|
20139
20148
|
"record.kind.reuse": "",
|
|
20140
20149
|
"record.kind.service": "",
|
|
@@ -20177,6 +20186,7 @@ var es = {
|
|
|
20177
20186
|
"record.metadata.creation": "",
|
|
20178
20187
|
"record.metadata.details": "",
|
|
20179
20188
|
"record.metadata.download": "",
|
|
20189
|
+
"record.metadata.feature.catalog": "",
|
|
20180
20190
|
"record.metadata.formats": "",
|
|
20181
20191
|
"record.metadata.keywords": "",
|
|
20182
20192
|
"record.metadata.languages": "",
|
|
@@ -20220,7 +20230,7 @@ var es = {
|
|
|
20220
20230
|
"record.metadata.temporalExtent.untilDate": "",
|
|
20221
20231
|
"record.metadata.title": "",
|
|
20222
20232
|
"record.metadata.topics": "",
|
|
20223
|
-
"record.metadata.
|
|
20233
|
+
"record.metadata.isGeographical": "",
|
|
20224
20234
|
"record.metadata.uniqueId": "",
|
|
20225
20235
|
"record.metadata.updateFrequency": "",
|
|
20226
20236
|
"record.metadata.updatedOn": "",
|
|
@@ -20260,6 +20270,7 @@ var es = {
|
|
|
20260
20270
|
"search.error.recordNotFound": "",
|
|
20261
20271
|
"search.field.any.placeholder": "",
|
|
20262
20272
|
"search.field.sortBy": "",
|
|
20273
|
+
"search.filter.into.feature.catalog": "",
|
|
20263
20274
|
"search.filters.availableServices.download": "",
|
|
20264
20275
|
"search.filters.availableServices.view": "",
|
|
20265
20276
|
"search.filters.changeDate": "Última actualización",
|
|
@@ -20323,6 +20334,7 @@ var es = {
|
|
|
20323
20334
|
"service.metadata.other": "",
|
|
20324
20335
|
"service.metadata.question": "",
|
|
20325
20336
|
"service.metadata.search": "",
|
|
20337
|
+
"service.metadata.search.clear": "",
|
|
20326
20338
|
"service.metadata.spatialExtent": "",
|
|
20327
20339
|
"share.tab.permalink": "",
|
|
20328
20340
|
"share.tab.webComponent": "",
|
|
@@ -20716,8 +20728,9 @@ var fr = {
|
|
|
20716
20728
|
"record.action.view": "Voir",
|
|
20717
20729
|
"record.card.metadata.contact": "Contact de la métadonnée ",
|
|
20718
20730
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
20731
|
+
"record.feature.catalog.number.total.attribute": "Nombre total d'attributs",
|
|
20732
|
+
"record.feature.catalog.number.total.object": "Nombre total d'objets",
|
|
20719
20733
|
"record.feature.limit": "L’aperçu a été désactivé en raison d’un trop grand nombre d'éléments",
|
|
20720
|
-
"record.kind.data": "Donnée",
|
|
20721
20734
|
"record.kind.dataset": "Donnée",
|
|
20722
20735
|
"record.kind.reuse": "Réutilisation",
|
|
20723
20736
|
"record.kind.service": "Service",
|
|
@@ -20760,6 +20773,7 @@ var fr = {
|
|
|
20760
20773
|
"record.metadata.creation": "Date de création",
|
|
20761
20774
|
"record.metadata.details": "À propos de la donnée",
|
|
20762
20775
|
"record.metadata.download": "Téléchargements",
|
|
20776
|
+
"record.metadata.feature.catalog": "Catalogue d'attributs",
|
|
20763
20777
|
"record.metadata.formats": "Formats",
|
|
20764
20778
|
"record.metadata.keywords": "Mots-clés",
|
|
20765
20779
|
"record.metadata.languages": "Langues",
|
|
@@ -20803,7 +20817,7 @@ var fr = {
|
|
|
20803
20817
|
"record.metadata.temporalExtent.untilDate": "Jusqu'au { end }",
|
|
20804
20818
|
"record.metadata.title": "Intitulé",
|
|
20805
20819
|
"record.metadata.topics": "Catégories",
|
|
20806
|
-
"record.metadata.
|
|
20820
|
+
"record.metadata.isGeographical": "Donnée géographique",
|
|
20807
20821
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
20808
20822
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
20809
20823
|
"record.metadata.updatedOn": "Modifié le",
|
|
@@ -20843,6 +20857,7 @@ var fr = {
|
|
|
20843
20857
|
"search.error.recordNotFound": "Cette donnée n'a pu être trouvée.",
|
|
20844
20858
|
"search.field.any.placeholder": "Rechercher dans le catalogue...",
|
|
20845
20859
|
"search.field.sortBy": "Trier par :",
|
|
20860
|
+
"search.filter.into.feature.catalog": "Rechercher un terme",
|
|
20846
20861
|
"search.filters.availableServices.download": "",
|
|
20847
20862
|
"search.filters.availableServices.view": "",
|
|
20848
20863
|
"search.filters.changeDate": "Mise à jour",
|
|
@@ -20906,6 +20921,7 @@ var fr = {
|
|
|
20906
20921
|
"service.metadata.other": "Autres informations",
|
|
20907
20922
|
"service.metadata.question": "Poser une question",
|
|
20908
20923
|
"service.metadata.search": "Rechercher dans la liste des couches",
|
|
20924
|
+
"service.metadata.search.clear": "Effacer la recherche des couches",
|
|
20909
20925
|
"service.metadata.spatialExtent": "Etendue spatiale",
|
|
20910
20926
|
"share.tab.permalink": "Partager",
|
|
20911
20927
|
"share.tab.webComponent": "Intégrer",
|
|
@@ -20924,8 +20940,6 @@ var fr = {
|
|
|
20924
20940
|
"tooltip.url.open": "Ouvrir l'URL",
|
|
20925
20941
|
"ui.readLess": "Réduire",
|
|
20926
20942
|
"ui.readMore": "Lire la suite",
|
|
20927
|
-
"ui.hideFullText": "Masquer le texte complet",
|
|
20928
|
-
"ui.showAllText": "Tout afficher",
|
|
20929
20943
|
"wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
|
|
20930
20944
|
"wfs.featuretype.notfound": "La classe d'objets n'a pas été trouvée dans le service",
|
|
20931
20945
|
"wfs.geojsongml.notsupported": "Le service ne supporte pas le format GeoJSON ou GML",
|
|
@@ -21012,7 +21026,7 @@ var it = {
|
|
|
21012
21026
|
"dataset.error.http": "Il caricamento dei dati non è riuscito a causa di un errore HTTP: \"{info}\"",
|
|
21013
21027
|
"dataset.error.network": "Il caricamento dei dati non è riuscito a causa di un errore di rete o di limitazioni CORS: \"{info}\"",
|
|
21014
21028
|
"dataset.error.parse": "I dati sono stati caricati ma la decodifica non è riuscita: \"{info}\"",
|
|
21015
|
-
"dataset.error.restrictedAccess": "",
|
|
21029
|
+
"dataset.error.restrictedAccess": "L'accesso a questa risorsa è limitato",
|
|
21016
21030
|
"dataset.error.unknown": "Impossibile visualizzare i dati: \"{info}\"",
|
|
21017
21031
|
"dataset.error.unsupportedType": "Il seguente tipo di contenuto non è supportato: \"{info}\"",
|
|
21018
21032
|
"domain.contact.role.author": "Autore",
|
|
@@ -21144,9 +21158,9 @@ var it = {
|
|
|
21144
21158
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
21145
21159
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
21146
21160
|
"editor.record.form.license.unknown": "Sconosciuto o assente",
|
|
21147
|
-
"editor.record.form.multilingual.enable": "",
|
|
21148
|
-
"editor.record.form.multilingual.open": "",
|
|
21149
|
-
"editor.record.form.multilingual.title": "",
|
|
21161
|
+
"editor.record.form.multilingual.enable": "Aprire il pannello multilingue",
|
|
21162
|
+
"editor.record.form.multilingual.open": "Modalità multilingue",
|
|
21163
|
+
"editor.record.form.multilingual.title": "Traduzioni",
|
|
21150
21164
|
"editor.record.form.page.accessAndContact": "Informazioni per l'uso",
|
|
21151
21165
|
"editor.record.form.page.description": "Descrizione del dataset",
|
|
21152
21166
|
"editor.record.form.page.resources": "Risorse",
|
|
@@ -21176,7 +21190,7 @@ var it = {
|
|
|
21176
21190
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21177
21191
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21178
21192
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21179
|
-
"editor.record.lock.format": "",
|
|
21193
|
+
"editor.record.lock.format": "I record con il formato 'servizio' o 'riutilizzo' non sono modificabili",
|
|
21180
21194
|
"editor.record.lock.reason": "Non è un editore di uno dei gruppi autorizzati",
|
|
21181
21195
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21182
21196
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
@@ -21275,7 +21289,7 @@ var it = {
|
|
|
21275
21289
|
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
21276
21290
|
"multiselect.filter.placeholder": "Cerca",
|
|
21277
21291
|
"nav.back": "Indietro",
|
|
21278
|
-
"navbar.mobile.menuTitle": "",
|
|
21292
|
+
"navbar.mobile.menuTitle": "Accesso rapido",
|
|
21279
21293
|
next: next$2,
|
|
21280
21294
|
"ogc.unreachable.unknown": "Il servizio non è accessibile",
|
|
21281
21295
|
"organisation.filter.placeholder": "Filtra i risultati",
|
|
@@ -21299,13 +21313,14 @@ var it = {
|
|
|
21299
21313
|
"record.action.duplicating": "Duplicazione",
|
|
21300
21314
|
"record.action.rollback": "Annulla",
|
|
21301
21315
|
"record.action.view": "Visualizza",
|
|
21302
|
-
"record.card.metadata.contact": "",
|
|
21316
|
+
"record.card.metadata.contact": "Contatto del metadata",
|
|
21303
21317
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
21318
|
+
"record.feature.catalog.number.total.attribute": "Quantità totale di oggetti",
|
|
21319
|
+
"record.feature.catalog.number.total.object": "Quantità totale di attributi",
|
|
21304
21320
|
"record.feature.limit": "La visualizzazione è stata disabilitata a causa di troppi elementi ",
|
|
21305
|
-
"record.kind.
|
|
21306
|
-
"record.kind.
|
|
21307
|
-
"record.kind.
|
|
21308
|
-
"record.kind.service": "",
|
|
21321
|
+
"record.kind.dataset": "Dataset",
|
|
21322
|
+
"record.kind.reuse": "Riutilizzato",
|
|
21323
|
+
"record.kind.service": "Servizio",
|
|
21309
21324
|
"record.metadata.about": "Descrizione",
|
|
21310
21325
|
"record.metadata.api": "API",
|
|
21311
21326
|
"record.metadata.api.form.closeButton": "Chiude",
|
|
@@ -21339,12 +21354,13 @@ var it = {
|
|
|
21339
21354
|
"record.metadata.api.form.zoneTitle": "Zona",
|
|
21340
21355
|
"record.metadata.api.form.zoneTooltip": "Menu a discesa per selezionare una zona geografica",
|
|
21341
21356
|
"record.metadata.api.gpfdl": "Scarica",
|
|
21342
|
-
"record.metadata.capabilities": "",
|
|
21357
|
+
"record.metadata.capabilities": "Capacità del servizio",
|
|
21343
21358
|
"record.metadata.catalog": "Catalogo",
|
|
21344
21359
|
"record.metadata.contact": "Contatto",
|
|
21345
21360
|
"record.metadata.creation": "Data di creazione",
|
|
21346
21361
|
"record.metadata.details": "A proposito del dati",
|
|
21347
21362
|
"record.metadata.download": "Download",
|
|
21363
|
+
"record.metadata.feature.catalog": "Catalogo dei oggetti",
|
|
21348
21364
|
"record.metadata.formats": "Formati",
|
|
21349
21365
|
"record.metadata.keywords": "Parole chiave",
|
|
21350
21366
|
"record.metadata.languages": "Lingue",
|
|
@@ -21376,7 +21392,7 @@ var it = {
|
|
|
21376
21392
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21377
21393
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21378
21394
|
"record.metadata.related": "Vedi anche",
|
|
21379
|
-
"record.metadata.related.contents": "",
|
|
21395
|
+
"record.metadata.related.contents": "Contenuti correlati",
|
|
21380
21396
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21381
21397
|
"record.metadata.sheet": "Origine del metadata",
|
|
21382
21398
|
"record.metadata.status": "Stato",
|
|
@@ -21388,7 +21404,7 @@ var it = {
|
|
|
21388
21404
|
"record.metadata.temporalExtent.untilDate": "Fino a {end}",
|
|
21389
21405
|
"record.metadata.title": "Titolo",
|
|
21390
21406
|
"record.metadata.topics": "Categorie",
|
|
21391
|
-
"record.metadata.
|
|
21407
|
+
"record.metadata.isGeographical": "Dati geografici",
|
|
21392
21408
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
21393
21409
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
21394
21410
|
"record.metadata.updatedOn": "Modificato il",
|
|
@@ -21418,7 +21434,7 @@ var it = {
|
|
|
21418
21434
|
"results.sortBy.popularity": "Popolarità",
|
|
21419
21435
|
"results.sortBy.qualityScore": "Indicatore di qualità",
|
|
21420
21436
|
"results.sortBy.relevancy": "Rilevanza",
|
|
21421
|
-
"reuse.metadata.access": "",
|
|
21437
|
+
"reuse.metadata.access": "Accedere al riutilizzo",
|
|
21422
21438
|
"search.autocomplete.error": "Impossibile recuperare le suggerimenti",
|
|
21423
21439
|
"search.error.couldNotReachApi": "Problema di connessione all'API",
|
|
21424
21440
|
"search.error.organizationHasNoDataset": "Questa organizzazione non ha ancora dati.",
|
|
@@ -21428,6 +21444,7 @@ var it = {
|
|
|
21428
21444
|
"search.error.recordNotFound": "Impossibile trovare questi dati.",
|
|
21429
21445
|
"search.field.any.placeholder": "Cerca del catalogo...",
|
|
21430
21446
|
"search.field.sortBy": "Ordina per:",
|
|
21447
|
+
"search.filter.into.feature.catalog": "Cerca una parola",
|
|
21431
21448
|
"search.filters.availableServices.download": "",
|
|
21432
21449
|
"search.filters.availableServices.view": "",
|
|
21433
21450
|
"search.filters.changeDate": "Aggiornato",
|
|
@@ -21473,25 +21490,26 @@ var it = {
|
|
|
21473
21490
|
"search.filters.useSpatialFilterHelp": "Se attivata, le schede relative all'area di interesse del catalogo saranno mostrate per prime; le schede al di fuori di questa area non appariranno nei risultati.",
|
|
21474
21491
|
"search.filters.user": "Editore",
|
|
21475
21492
|
"service.metadata.capabilities": "Informazioni tecniche",
|
|
21476
|
-
"service.metadata.capabilities.abstract": "",
|
|
21477
|
-
"service.metadata.capabilities.attribution": "",
|
|
21478
|
-
"service.metadata.capabilities.availableCrs": "",
|
|
21479
|
-
"service.metadata.capabilities.defaultCrs": "",
|
|
21480
|
-
"service.metadata.capabilities.geometryName": "",
|
|
21481
|
-
"service.metadata.capabilities.geometryType": "",
|
|
21482
|
-
"service.metadata.capabilities.keywords": "",
|
|
21483
|
-
"service.metadata.capabilities.name": "",
|
|
21484
|
-
"service.metadata.capabilities.objectCount": "",
|
|
21485
|
-
"service.metadata.capabilities.otherCrs": "",
|
|
21486
|
-
"service.metadata.capabilities.outputFormats": "",
|
|
21487
|
-
"service.metadata.capabilities.resourceLinks": "",
|
|
21488
|
-
"service.metadata.capabilities.title": "",
|
|
21489
|
-
"service.metadata.filter": "",
|
|
21490
|
-
"service.metadata.filter.noLayers": "",
|
|
21491
|
-
"service.metadata.other": "",
|
|
21492
|
-
"service.metadata.question": "",
|
|
21493
|
-
"service.metadata.search": "",
|
|
21494
|
-
"service.metadata.
|
|
21493
|
+
"service.metadata.capabilities.abstract": "Riassunto",
|
|
21494
|
+
"service.metadata.capabilities.attribution": "Attribuzione",
|
|
21495
|
+
"service.metadata.capabilities.availableCrs": "CRS disponibile",
|
|
21496
|
+
"service.metadata.capabilities.defaultCrs": "CRS predefinito",
|
|
21497
|
+
"service.metadata.capabilities.geometryName": "Nome della geometria",
|
|
21498
|
+
"service.metadata.capabilities.geometryType": "Tipo della geometria",
|
|
21499
|
+
"service.metadata.capabilities.keywords": "Parole chiave",
|
|
21500
|
+
"service.metadata.capabilities.name": "Nome",
|
|
21501
|
+
"service.metadata.capabilities.objectCount": "Oggetti conto",
|
|
21502
|
+
"service.metadata.capabilities.otherCrs": "Altri CRS",
|
|
21503
|
+
"service.metadata.capabilities.outputFormats": "Formato di output",
|
|
21504
|
+
"service.metadata.capabilities.resourceLinks": "Risorsa links",
|
|
21505
|
+
"service.metadata.capabilities.title": "Titolo",
|
|
21506
|
+
"service.metadata.filter": "I layers verranno filtrati per titolo e riassunto",
|
|
21507
|
+
"service.metadata.filter.noLayers": "Nessun layer abbina la ricerca",
|
|
21508
|
+
"service.metadata.other": "Altri informazioni",
|
|
21509
|
+
"service.metadata.question": "Fare una domanda",
|
|
21510
|
+
"service.metadata.search": "Cerca nella lista del layers",
|
|
21511
|
+
"service.metadata.search.clear": "Cancella la ricerca del layers",
|
|
21512
|
+
"service.metadata.spatialExtent": "Estensione spaziale",
|
|
21495
21513
|
"share.tab.permalink": "Condividere",
|
|
21496
21514
|
"share.tab.webComponent": "Incorporare",
|
|
21497
21515
|
"table.loading.data": "Caricamento dei dati...",
|
|
@@ -21884,8 +21902,9 @@ var nl = {
|
|
|
21884
21902
|
"record.action.view": "",
|
|
21885
21903
|
"record.card.metadata.contact": "",
|
|
21886
21904
|
"record.externalViewer.open": "",
|
|
21905
|
+
"record.feature.catalog.number.total.attribute": "",
|
|
21906
|
+
"record.feature.catalog.number.total.object": "",
|
|
21887
21907
|
"record.feature.limit": "",
|
|
21888
|
-
"record.kind.data": "",
|
|
21889
21908
|
"record.kind.dataset": "",
|
|
21890
21909
|
"record.kind.reuse": "",
|
|
21891
21910
|
"record.kind.service": "",
|
|
@@ -21928,6 +21947,7 @@ var nl = {
|
|
|
21928
21947
|
"record.metadata.creation": "",
|
|
21929
21948
|
"record.metadata.details": "",
|
|
21930
21949
|
"record.metadata.download": "",
|
|
21950
|
+
"record.metadata.feature.catalog": "",
|
|
21931
21951
|
"record.metadata.formats": "",
|
|
21932
21952
|
"record.metadata.keywords": "",
|
|
21933
21953
|
"record.metadata.languages": "",
|
|
@@ -21971,7 +21991,7 @@ var nl = {
|
|
|
21971
21991
|
"record.metadata.temporalExtent.untilDate": "",
|
|
21972
21992
|
"record.metadata.title": "",
|
|
21973
21993
|
"record.metadata.topics": "",
|
|
21974
|
-
"record.metadata.
|
|
21994
|
+
"record.metadata.isGeographical": "",
|
|
21975
21995
|
"record.metadata.uniqueId": "",
|
|
21976
21996
|
"record.metadata.updateFrequency": "",
|
|
21977
21997
|
"record.metadata.updatedOn": "",
|
|
@@ -22011,6 +22031,7 @@ var nl = {
|
|
|
22011
22031
|
"search.error.recordNotFound": "",
|
|
22012
22032
|
"search.field.any.placeholder": "",
|
|
22013
22033
|
"search.field.sortBy": "",
|
|
22034
|
+
"search.filter.into.feature.catalog": "",
|
|
22014
22035
|
"search.filters.availableServices.download": "",
|
|
22015
22036
|
"search.filters.availableServices.view": "",
|
|
22016
22037
|
"search.filters.changeDate": "",
|
|
@@ -22074,6 +22095,7 @@ var nl = {
|
|
|
22074
22095
|
"service.metadata.other": "",
|
|
22075
22096
|
"service.metadata.question": "",
|
|
22076
22097
|
"service.metadata.search": "",
|
|
22098
|
+
"service.metadata.search.clear": "",
|
|
22077
22099
|
"service.metadata.spatialExtent": "",
|
|
22078
22100
|
"share.tab.permalink": "",
|
|
22079
22101
|
"share.tab.webComponent": "",
|
|
@@ -22467,8 +22489,9 @@ var pt = {
|
|
|
22467
22489
|
"record.action.view": "",
|
|
22468
22490
|
"record.card.metadata.contact": "",
|
|
22469
22491
|
"record.externalViewer.open": "",
|
|
22492
|
+
"record.feature.catalog.number.total.attribute": "",
|
|
22493
|
+
"record.feature.catalog.number.total.object": "",
|
|
22470
22494
|
"record.feature.limit": "",
|
|
22471
|
-
"record.kind.data": "",
|
|
22472
22495
|
"record.kind.dataset": "",
|
|
22473
22496
|
"record.kind.reuse": "",
|
|
22474
22497
|
"record.kind.service": "",
|
|
@@ -22511,6 +22534,7 @@ var pt = {
|
|
|
22511
22534
|
"record.metadata.creation": "",
|
|
22512
22535
|
"record.metadata.details": "",
|
|
22513
22536
|
"record.metadata.download": "",
|
|
22537
|
+
"record.metadata.feature.catalog": "",
|
|
22514
22538
|
"record.metadata.formats": "",
|
|
22515
22539
|
"record.metadata.keywords": "",
|
|
22516
22540
|
"record.metadata.languages": "",
|
|
@@ -22554,7 +22578,7 @@ var pt = {
|
|
|
22554
22578
|
"record.metadata.temporalExtent.untilDate": "",
|
|
22555
22579
|
"record.metadata.title": "",
|
|
22556
22580
|
"record.metadata.topics": "",
|
|
22557
|
-
"record.metadata.
|
|
22581
|
+
"record.metadata.isGeographical": "",
|
|
22558
22582
|
"record.metadata.uniqueId": "",
|
|
22559
22583
|
"record.metadata.updateFrequency": "",
|
|
22560
22584
|
"record.metadata.updatedOn": "",
|
|
@@ -22594,6 +22618,7 @@ var pt = {
|
|
|
22594
22618
|
"search.error.recordNotFound": "",
|
|
22595
22619
|
"search.field.any.placeholder": "",
|
|
22596
22620
|
"search.field.sortBy": "",
|
|
22621
|
+
"search.filter.into.feature.catalog": "",
|
|
22597
22622
|
"search.filters.availableServices.download": "",
|
|
22598
22623
|
"search.filters.availableServices.view": "",
|
|
22599
22624
|
"search.filters.changeDate": "",
|
|
@@ -22657,6 +22682,7 @@ var pt = {
|
|
|
22657
22682
|
"service.metadata.other": "",
|
|
22658
22683
|
"service.metadata.question": "",
|
|
22659
22684
|
"service.metadata.search": "",
|
|
22685
|
+
"service.metadata.search.clear": "",
|
|
22660
22686
|
"service.metadata.spatialExtent": "",
|
|
22661
22687
|
"share.tab.permalink": "",
|
|
22662
22688
|
"share.tab.webComponent": "",
|
|
@@ -23027,6 +23053,7 @@ class Gn4FieldMapper {
|
|
|
23027
23053
|
/^OGC:WMS/.test(protocol) ||
|
|
23028
23054
|
/^OGC:WFS/.test(protocol) ||
|
|
23029
23055
|
/^OGC:WMTS/.test(protocol) ||
|
|
23056
|
+
/TMS/i.test(protocol) ||
|
|
23030
23057
|
/ogc\W*api\W*features/i.test(protocol) ||
|
|
23031
23058
|
(/^WWW:DOWNLOAD-/.test(protocol) && /data.geopf.fr/.test(url)) // TO DO : change with the good protocol when decided
|
|
23032
23059
|
) {
|
|
@@ -23151,6 +23178,7 @@ const ES_SOURCE_SUMMARY = [
|
|
|
23151
23178
|
'overview',
|
|
23152
23179
|
'logo',
|
|
23153
23180
|
'codelist_status_text',
|
|
23181
|
+
'link',
|
|
23154
23182
|
'linkProtocol',
|
|
23155
23183
|
'contactForResource.organisation',
|
|
23156
23184
|
'contact.organisation',
|
|
@@ -23726,7 +23754,9 @@ class Gn4Repository {
|
|
|
23726
23754
|
attributes: Array.isArray(featureType.attributeTable)
|
|
23727
23755
|
? featureType.attributeTable.map((attr) => ({
|
|
23728
23756
|
name: attr.name,
|
|
23757
|
+
code: attr.code,
|
|
23729
23758
|
title: attr.definition,
|
|
23759
|
+
type: attr.type,
|
|
23730
23760
|
}))
|
|
23731
23761
|
: [],
|
|
23732
23762
|
})),
|
|
@@ -23735,7 +23765,8 @@ class Gn4Repository {
|
|
|
23735
23765
|
getFeatureCatalog(record, visited = new Set() // prevent looping
|
|
23736
23766
|
) {
|
|
23737
23767
|
if (record.extras?.['featureTypes'] &&
|
|
23738
|
-
Array.isArray(record.extras['featureTypes'])
|
|
23768
|
+
Array.isArray(record.extras['featureTypes']) &&
|
|
23769
|
+
record.extras['featureTypes'].length > 0) {
|
|
23739
23770
|
return of(this.mapEmbeddedFeatureCatalog(record.extras['featureTypes']));
|
|
23740
23771
|
}
|
|
23741
23772
|
const featureCatalogIdentifier = record.extras['featureCatalogIdentifier'];
|
|
@@ -23822,8 +23853,8 @@ class Gn4Repository {
|
|
|
23822
23853
|
const converter = findConverterForDocument(fetchedRecordAsXml);
|
|
23823
23854
|
const record = await converter.readRecord(fetchedRecordAsXml);
|
|
23824
23855
|
record.title = `${record.title} (Copy)`;
|
|
23825
|
-
await converter.writeRecord(record, fetchedRecordAsXml);
|
|
23826
|
-
return this.saveRecord(record,
|
|
23856
|
+
const recordAsXml = await converter.writeRecord(record, fetchedRecordAsXml);
|
|
23857
|
+
return this.saveRecord(record, recordAsXml, false);
|
|
23827
23858
|
}), exhaustMap((uuidObservable) => uuidObservable), catchError((error) => {
|
|
23828
23859
|
return throwError(() => error);
|
|
23829
23860
|
}));
|
|
@@ -25230,6 +25261,9 @@ function getLinkLabel(link) {
|
|
|
25230
25261
|
case 'wmts':
|
|
25231
25262
|
format = 'WMTS';
|
|
25232
25263
|
break;
|
|
25264
|
+
case 'tms':
|
|
25265
|
+
format = 'TMS';
|
|
25266
|
+
break;
|
|
25233
25267
|
case 'esriRest':
|
|
25234
25268
|
format = 'REST';
|
|
25235
25269
|
break;
|
|
@@ -25309,7 +25343,10 @@ class LinkClassifierService {
|
|
|
25309
25343
|
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
25310
25344
|
case 'wms':
|
|
25311
25345
|
case 'wmts':
|
|
25346
|
+
case 'tms':
|
|
25312
25347
|
return [LinkUsage.API, LinkUsage.MAP_API];
|
|
25348
|
+
case 'maplibre-style':
|
|
25349
|
+
return [LinkUsage.GEODATA];
|
|
25313
25350
|
case 'ogcFeatures':
|
|
25314
25351
|
return [LinkUsage.API, LinkUsage.DOWNLOAD, LinkUsage.GEODATA];
|
|
25315
25352
|
case 'GPFDL':
|
|
@@ -25351,7 +25388,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25351
25388
|
}] });
|
|
25352
25389
|
|
|
25353
25390
|
var name = "geonetwork-ui";
|
|
25354
|
-
var version = "2.6.0-dev.
|
|
25391
|
+
var version = "2.6.0-dev.97a89c313";
|
|
25355
25392
|
var engines = {
|
|
25356
25393
|
node: ">=20"
|
|
25357
25394
|
};
|
|
@@ -25404,7 +25441,7 @@ var dependencies = {
|
|
|
25404
25441
|
"@nx/angular": "20.2.2",
|
|
25405
25442
|
"@rgrove/parse-xml": "4.2.0",
|
|
25406
25443
|
alasql: "4.6.0",
|
|
25407
|
-
axios: "1.
|
|
25444
|
+
axios: "1.8.2",
|
|
25408
25445
|
basiclightbox: "^5.0.4",
|
|
25409
25446
|
"chart.js": "4.4.7",
|
|
25410
25447
|
"chroma-js": "3.1.2",
|
|
@@ -25948,35 +25985,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25948
25985
|
}] } });
|
|
25949
25986
|
|
|
25950
25987
|
class ExpandablePanelComponent {
|
|
25951
|
-
constructor() {
|
|
25952
|
-
this.
|
|
25953
|
-
this.
|
|
25988
|
+
constructor(changeDetector) {
|
|
25989
|
+
this.changeDetector = changeDetector;
|
|
25990
|
+
this.iconColor = '';
|
|
25991
|
+
this._collapsed = true;
|
|
25992
|
+
}
|
|
25993
|
+
ngAfterViewInit() {
|
|
25994
|
+
if (this.contentDiv) {
|
|
25995
|
+
this.contentObserver = new ResizeObserver(() => {
|
|
25996
|
+
this.changeDetector.detectChanges();
|
|
25997
|
+
});
|
|
25998
|
+
this.contentObserver.observe(this.contentDiv.nativeElement);
|
|
25999
|
+
}
|
|
26000
|
+
}
|
|
26001
|
+
set collapsed(value) {
|
|
26002
|
+
this._collapsed = value;
|
|
26003
|
+
}
|
|
26004
|
+
get collapsed() {
|
|
26005
|
+
return this._collapsed;
|
|
25954
26006
|
}
|
|
25955
26007
|
toggle() {
|
|
25956
26008
|
this.collapsed = !this.collapsed;
|
|
25957
|
-
this.maxHeight = this.setMaxHeight();
|
|
25958
26009
|
}
|
|
25959
|
-
|
|
25960
|
-
|
|
26010
|
+
ngOnDestroy() {
|
|
26011
|
+
if (this.contentObserver) {
|
|
26012
|
+
this.contentObserver.disconnect();
|
|
26013
|
+
}
|
|
25961
26014
|
}
|
|
25962
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25963
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExpandablePanelComponent, isStandalone: true, selector: "gn-ui-expandable-panel", inputs: { title: "title", collapsed: "collapsed" }, viewQueries: [{ propertyName: "contentDiv", first: true, predicate: ["contentDiv"], descendants: true }], ngImport: i0, template: "<div\n class=\"group flex
|
|
26015
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26016
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExpandablePanelComponent, isStandalone: true, selector: "gn-ui-expandable-panel", inputs: { title: "title", iconColor: "iconColor", collapsed: "collapsed" }, queries: [{ propertyName: "titleTemplate", first: true, predicate: ["titleTemplate"], descendants: true }], viewQueries: [{ propertyName: "contentDiv", first: true, predicate: ["contentDiv"], descendants: true }], ngImport: i0, template: "<div\n class=\"group flex items-center justify-between title border-b border-gray-100 cursor-pointer\"\n (click)=\"toggle()\"\n data-cy=\"expandable-panel-header\"\n>\n <div class=\"grow py-2.5\">\n <ng-container *ngIf=\"titleTemplate; else simpleTitle\">\n <div data-cy=\"expandable-panel-custom-title\">\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n </div>\n </ng-container>\n <ng-template #simpleTitle>\n <div\n class=\"font-medium text-black text-sm\"\n data-cy=\"expandable-panel-title\"\n >\n {{ title }}\n </div>\n </ng-template>\n </div>\n <div\n class=\"w-8 opacity-25 text-primary group-hover:opacity-100 transition-opacity flex items-center shrink-0\"\n >\n <ng-icon\n [name]=\"collapsed ? 'matAdd' : 'matRemove'\"\n [style.color]=\"iconColor\"\n ></ng-icon>\n </div>\n</div>\n<div\n class=\"content overflow-hidden transition-all duration-300\"\n [ngClass]=\"collapsed ? 'ease-out' : 'ease-in'\"\n #contentDiv\n *ngIf=\"!collapsed\"\n data-cy=\"expandable-panel-content\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [provideIcons({ matAdd, matRemove })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25964
26017
|
}
|
|
25965
26018
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, decorators: [{
|
|
25966
26019
|
type: Component,
|
|
25967
|
-
args: [{ selector: 'gn-ui-expandable-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon], viewProviders: [provideIcons({ matAdd, matRemove })], template: "<div\n class=\"group flex
|
|
25968
|
-
}], propDecorators: { title: [{
|
|
26020
|
+
args: [{ selector: 'gn-ui-expandable-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon], viewProviders: [provideIcons({ matAdd, matRemove })], template: "<div\n class=\"group flex items-center justify-between title border-b border-gray-100 cursor-pointer\"\n (click)=\"toggle()\"\n data-cy=\"expandable-panel-header\"\n>\n <div class=\"grow py-2.5\">\n <ng-container *ngIf=\"titleTemplate; else simpleTitle\">\n <div data-cy=\"expandable-panel-custom-title\">\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n </div>\n </ng-container>\n <ng-template #simpleTitle>\n <div\n class=\"font-medium text-black text-sm\"\n data-cy=\"expandable-panel-title\"\n >\n {{ title }}\n </div>\n </ng-template>\n </div>\n <div\n class=\"w-8 opacity-25 text-primary group-hover:opacity-100 transition-opacity flex items-center shrink-0\"\n >\n <ng-icon\n [name]=\"collapsed ? 'matAdd' : 'matRemove'\"\n [style.color]=\"iconColor\"\n ></ng-icon>\n </div>\n</div>\n<div\n class=\"content overflow-hidden transition-all duration-300\"\n [ngClass]=\"collapsed ? 'ease-out' : 'ease-in'\"\n #contentDiv\n *ngIf=\"!collapsed\"\n data-cy=\"expandable-panel-content\"\n>\n <ng-content></ng-content>\n</div>\n" }]
|
|
26021
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
25969
26022
|
type: Input
|
|
25970
|
-
}],
|
|
26023
|
+
}], iconColor: [{
|
|
25971
26024
|
type: Input
|
|
26025
|
+
}], titleTemplate: [{
|
|
26026
|
+
type: ContentChild,
|
|
26027
|
+
args: ['titleTemplate']
|
|
25972
26028
|
}], contentDiv: [{
|
|
25973
26029
|
type: ViewChild,
|
|
25974
26030
|
args: ['contentDiv']
|
|
26031
|
+
}], collapsed: [{
|
|
26032
|
+
type: Input
|
|
25975
26033
|
}] } });
|
|
25976
26034
|
|
|
25977
26035
|
class FormFieldWrapperComponent {
|
|
25978
26036
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25979
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\" *ngIf=\"label; else onlyContent\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\" translate=\"\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n *ngIf=\"hint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1 mt-2\">\n <ng-container *ngTemplateOutlet=\"onlyContent\"> </ng-container>\n </div>\n</div>\n\n<ng-template #onlyContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type:
|
|
26037
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\" *ngIf=\"label; else onlyContent\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\" translate=\"\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n *ngIf=\"hint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1 mt-2\">\n <ng-container *ngTemplateOutlet=\"onlyContent\"> </ng-container>\n </div>\n</div>\n\n<ng-template #onlyContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25980
26038
|
}
|
|
25981
26039
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
25982
26040
|
type: Component,
|
|
@@ -26481,7 +26539,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26481
26539
|
|
|
26482
26540
|
class LoadingMaskComponent {
|
|
26483
26541
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26484
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoadingMaskComponent, isStandalone: true, 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: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$
|
|
26542
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LoadingMaskComponent, isStandalone: true, 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: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$4.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26485
26543
|
}
|
|
26486
26544
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingMaskComponent, decorators: [{
|
|
26487
26545
|
type: Component,
|
|
@@ -26811,7 +26869,7 @@ class AutocompleteComponent {
|
|
|
26811
26869
|
provideNgIconsConfig({
|
|
26812
26870
|
size: '1.75rem',
|
|
26813
26871
|
}),
|
|
26814
|
-
], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1$
|
|
26872
|
+
], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion text-start\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { 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: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26815
26873
|
}
|
|
26816
26874
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
26817
26875
|
type: Component,
|
|
@@ -26832,7 +26890,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26832
26890
|
provideNgIconsConfig({
|
|
26833
26891
|
size: '1.75rem',
|
|
26834
26892
|
}),
|
|
26835
|
-
], template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
26893
|
+
], template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion text-start\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
26836
26894
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { placeholder: [{
|
|
26837
26895
|
type: Input
|
|
26838
26896
|
}], enterButton: [{
|
|
@@ -26953,7 +27011,7 @@ class CheckboxComponent {
|
|
|
26953
27011
|
this.changed.emit(this.checked);
|
|
26954
27012
|
}
|
|
26955
27013
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26956
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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$
|
|
27014
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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$6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26957
27015
|
}
|
|
26958
27016
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
26959
27017
|
type: Component,
|
|
@@ -26978,7 +27036,7 @@ class CopyTextButtonComponent {
|
|
|
26978
27036
|
event.target.blur();
|
|
26979
27037
|
}
|
|
26980
27038
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26981
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopyTextButtonComponent, isStandalone: true, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <ng-icon\n name=\"matContentCopy\"\n class=\"pointer-events-none align-middle card-icon\"\n ></ng-icon>\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type:
|
|
27039
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CopyTextButtonComponent, isStandalone: true, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <ng-icon\n name=\"matContentCopy\"\n class=\"pointer-events-none align-middle card-icon\"\n ></ng-icon>\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [provideIcons({ matContentCopy })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26982
27040
|
}
|
|
26983
27041
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
26984
27042
|
type: Component,
|
|
@@ -27003,7 +27061,7 @@ class DatePickerComponent {
|
|
|
27003
27061
|
provideNgIconsConfig({
|
|
27004
27062
|
size: '1.5rem',
|
|
27005
27063
|
}),
|
|
27006
|
-
], ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <input\n class=\"gn-ui-text-input pr-[var(--text-padding)]\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <gn-ui-button\n type=\"light\"\n class=\"absolute inset-y-[var(--side-padding)] right-[var(--side-padding)] z-10\"\n (buttonClick)=\"picker.open()\"\n data-cy=\"date-picker-button\"\n extraClass=\"h-full\"\n >\n <ng-icon name=\"iconoirCalendar\" class=\"text-primary\"></ng-icon>\n </gn-ui-button>\n</span>\n<mat-datepicker #picker></mat-datepicker>\n", styles: [":host{--gn-ui-button-rounded: 8px;--gn-ui-button-width: 32px;--gn-ui-button-padding: 0;--side-padding: calc(var(--gn-ui-text-input-padding, .6em) - 6px);--text-padding: calc(var(--side-padding) + 40px)}\n"], dependencies: [{ kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$
|
|
27064
|
+
], ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <input\n class=\"gn-ui-text-input pr-[var(--text-padding)]\"\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <gn-ui-button\n type=\"light\"\n class=\"absolute inset-y-[var(--side-padding)] right-[var(--side-padding)] z-10\"\n (buttonClick)=\"picker.open()\"\n data-cy=\"date-picker-button\"\n extraClass=\"h-full\"\n >\n <ng-icon name=\"iconoirCalendar\" class=\"text-primary\"></ng-icon>\n </gn-ui-button>\n</span>\n<mat-datepicker #picker></mat-datepicker>\n", styles: [":host{--gn-ui-button-rounded: 8px;--gn-ui-button-width: 32px;--gn-ui-button-padding: 0;--side-padding: calc(var(--gn-ui-text-input-padding, .6em) - 6px);--text-padding: calc(var(--side-padding) + 40px)}\n"], dependencies: [{ kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$7.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i1$7.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27007
27065
|
}
|
|
27008
27066
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
27009
27067
|
type: Component,
|
|
@@ -27041,13 +27099,13 @@ class DateRangeDropdownComponent {
|
|
|
27041
27099
|
overlayContainerElement.querySelector('.mat-datepicker-content') !== null;
|
|
27042
27100
|
this.cdr.detectChanges();
|
|
27043
27101
|
}
|
|
27044
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDropdownComponent, deps: [{ token: i1$
|
|
27102
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDropdownComponent, deps: [{ token: i1$8.OverlayContainer }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27045
27103
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DateRangeDropdownComponent, isStandalone: true, selector: "gn-ui-date-range-dropdown", inputs: { title: "title", startDate: "startDate", endDate: "endDate" }, outputs: { startDateChange: "startDateChange", endDateChange: "endDateChange" }, providers: [
|
|
27046
27104
|
provideIcons({
|
|
27047
27105
|
matExpandMore,
|
|
27048
27106
|
matExpandLess,
|
|
27049
27107
|
}),
|
|
27050
|
-
], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n (buttonClick)=\"picker.open()\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n </div>\n <ng-icon\n [name]=\"isPickerDisplayed ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n<!--date range input is just present for output events and hidden from the DOM-->\n<mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n</mat-date-range-input>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host .mat-date-range-input-container{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$
|
|
27108
|
+
], viewQueries: [{ propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n (buttonClick)=\"picker.open()\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n </div>\n <ng-icon\n [name]=\"isPickerDisplayed ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n<!--date range input is just present for output events and hidden from the DOM-->\n<mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n</mat-date-range-input>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host .mat-date-range-input-container{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i1$7.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i1$7.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i1$7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }] }); }
|
|
27051
27109
|
}
|
|
27052
27110
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangeDropdownComponent, decorators: [{
|
|
27053
27111
|
type: Component,
|
|
@@ -27063,7 +27121,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
27063
27121
|
matExpandLess,
|
|
27064
27122
|
}),
|
|
27065
27123
|
], template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n (buttonClick)=\"picker.open()\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n </div>\n <ng-icon\n [name]=\"isPickerDisplayed ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n<!--date range input is just present for output events and hidden from the DOM-->\n<mat-date-range-input [rangePicker]=\"picker\">\n <input\n matStartDate\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n</mat-date-range-input>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host .mat-date-range-input-container{display:none}\n"] }]
|
|
27066
|
-
}], ctorParameters: () => [{ type: i1$
|
|
27124
|
+
}], ctorParameters: () => [{ type: i1$8.OverlayContainer }, { type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
27067
27125
|
type: Input
|
|
27068
27126
|
}], startDate: [{
|
|
27069
27127
|
type: Input
|
|
@@ -27089,7 +27147,7 @@ class DateRangePickerComponent {
|
|
|
27089
27147
|
provideNgIconsConfig({
|
|
27090
27148
|
size: '1.5rem',
|
|
27091
27149
|
}),
|
|
27092
|
-
], ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"gn-ui-text-input\">\n <input\n matStartDate\n placeholder=\"Start date\"\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n placeholder=\"End date\"\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n </mat-date-range-input>\n\n <gn-ui-button\n type=\"light\"\n class=\"absolute inset-y-[var(--side-padding)] right-[var(--side-padding)] z-10\"\n (buttonClick)=\"picker.open()\"\n extraClass=\"h-full\"\n data-cy=\"date-picker-button\"\n >\n <ng-icon name=\"iconoirCalendar\" class=\"text-primary\"></ng-icon>\n </gn-ui-button>\n</span>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host{--gn-ui-button-rounded: 8px;--gn-ui-button-width: 32px;--gn-ui-button-padding: 0;--side-padding: calc(var(--gn-ui-text-input-padding, .6em) - 6px);--text-padding: calc(var(--side-padding) + 40px)}\n"], dependencies: [{ kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$
|
|
27150
|
+
], ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"gn-ui-text-input\">\n <input\n matStartDate\n placeholder=\"Start date\"\n [value]=\"startDate\"\n (dateInput)=\"startDateChange.emit($event.value)\"\n />\n <input\n matEndDate\n placeholder=\"End date\"\n [value]=\"endDate\"\n (dateInput)=\"endDateChange.emit($event.value)\"\n />\n </mat-date-range-input>\n\n <gn-ui-button\n type=\"light\"\n class=\"absolute inset-y-[var(--side-padding)] right-[var(--side-padding)] z-10\"\n (buttonClick)=\"picker.open()\"\n extraClass=\"h-full\"\n data-cy=\"date-picker-button\"\n >\n <ng-icon name=\"iconoirCalendar\" class=\"text-primary\"></ng-icon>\n </gn-ui-button>\n</span>\n<mat-date-range-picker #picker></mat-date-range-picker>\n", styles: [":host{--gn-ui-button-rounded: 8px;--gn-ui-button-width: 32px;--gn-ui-button-padding: 0;--side-padding: calc(var(--gn-ui-text-input-padding, .6em) - 6px);--text-padding: calc(var(--side-padding) + 40px)}\n"], dependencies: [{ kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i1$7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i1$7.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i1$7.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i1$7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27093
27151
|
}
|
|
27094
27152
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
27095
27153
|
type: Component,
|
|
@@ -27131,7 +27189,7 @@ class DragAndDropFileInputComponent {
|
|
|
27131
27189
|
this.fileChange.emit(this.selectedFile);
|
|
27132
27190
|
}
|
|
27133
27191
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27134
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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$2.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"] }] }); }
|
|
27192
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3$1.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
27135
27193
|
}
|
|
27136
27194
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
27137
27195
|
type: Component,
|
|
@@ -27289,13 +27347,13 @@ class DropdownMultiselectComponent {
|
|
|
27289
27347
|
propagateToDocumentOnly(event);
|
|
27290
27348
|
this.setFocus();
|
|
27291
27349
|
}
|
|
27292
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$
|
|
27293
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row gap-[2px] flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: 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: "directive", type: i1$
|
|
27350
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$8.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27351
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", 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=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row gap-[2px] flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: 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: "directive", type: i1$8.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$8.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27294
27352
|
}
|
|
27295
27353
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
27296
27354
|
type: Component,
|
|
27297
27355
|
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=\"gn-ui-multiselect-counter shrink-0 rounded-full font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <ng-icon\n class=\"shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n name=\"matClose\"\n ></ng-icon>\n </button>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row gap-[2px] flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <ng-icon\n name=\"matClose\"\n class=\"!h-[12px] !w-[11px] text-[12px]\"\n ></ng-icon>\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <ng-icon class=\"!h-[10px] !w-[12px] text-[12px]\" name=\"matClose\">\n </ng-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
27298
|
-
}], ctorParameters: () => [{ type: i1$
|
|
27356
|
+
}], ctorParameters: () => [{ type: i1$8.ScrollStrategyOptions }], propDecorators: { title: [{
|
|
27299
27357
|
type: Input
|
|
27300
27358
|
}], choices: [{
|
|
27301
27359
|
type: Input
|
|
@@ -27467,7 +27525,7 @@ class DropdownSelectorComponent {
|
|
|
27467
27525
|
provideNgIconsConfig({
|
|
27468
27526
|
size: '1.5em',
|
|
27469
27527
|
}),
|
|
27470
|
-
], 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 [style.--gn-ui-button-padding]=\"'8px 8px 8px 16px'\"\n extraClass=\"bg-background flex flex-row w-full {{ extraBtnClass }}\"\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 truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-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$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$
|
|
27528
|
+
], 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 [style.--gn-ui-button-padding]=\"'8px 8px 8px 16px'\"\n extraClass=\"bg-background flex flex-row w-full {{ extraBtnClass }}\"\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 truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <ng-icon\n [name]=\"overlayOpen ? 'matExpandLess' : 'matExpandMore'\"\n class=\"shrink-0 opacity-40\"\n >\n </ng-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$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$8.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$8.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27471
27529
|
}
|
|
27472
27530
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
27473
27531
|
type: Component,
|
|
@@ -27767,7 +27825,7 @@ class FileInputComponent {
|
|
|
27767
27825
|
provideNgIconsConfig({
|
|
27768
27826
|
size: '1.5em',
|
|
27769
27827
|
}),
|
|
27770
|
-
], ngImport: i0, template: "<div class=\"w-full flex flex-col gap-[16px]\">\n <label\n gnUiFilesDrop\n class=\"flex-1 border-2 border-dashed rounded-lg p-6 flex flex-col items-center justify-center gap-4 transition-colors duration-100\"\n [ngClass]=\"{\n 'border-primary-lighter bg-primary-white': dragFilesOver,\n 'border-gray-300': !dragFilesOver,\n 'cursor-pointer hover:border-gray-500': !isUploadInProgress && !disabled,\n 'cursor-not-allowed': disabled,\n }\"\n [attr.tabindex]=\"isUploadInProgress || disabled ? null : 0\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n (keydown.enter)=\"fileInput.click()\"\n >\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n />\n\n <div\n class=\"w-14 h-14 rounded-md bg-gray-50 grid\"\n *ngIf=\"!isUploadInProgress\"\n >\n <ng-icon\n *ngIf=\"!dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirCloudUpload\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirFramePlusIn\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"isUploadInProgress\"\n class=\"w-14 h-14 grid items-center justify-center relative\"\n >\n <div class=\"text-gray-100 absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"100\"\n ></mat-progress-spinner>\n </div>\n <div class=\"text-primary absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n </div>\n <span class=\"text-sm text-main font-bold\">{{ uploadProgress }}%</span>\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">\n {{ getPrimaryText() | translate: { sizeMB: maxSizeMB.toFixed(0) } }}\n </p>\n <p\n class=\"text-sm\"\n [class]=\"\n isUploadInProgress\n ? 'font-bold text-primary cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick($event)\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <p class=\"w-full flex flex-row items-center justify-stretch gap-[16px]\">\n <span class=\"border-b border-gray-300 grow\"></span>\n <span class=\"text-sm font-medium text-gray-500 or-input-url\" translate>\n input.file.orInputUrl</span\n >\n <span class=\"border-b border-gray-300 grow\"></span>\n </p>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"isUploadInProgress || disabled\"\n (uploadClick)=\"handleUrlChange($event)\"\n ></gn-ui-url-input>\n </label>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$
|
|
27828
|
+
], ngImport: i0, template: "<div class=\"w-full flex flex-col gap-[16px]\">\n <label\n gnUiFilesDrop\n class=\"flex-1 border-2 border-dashed rounded-lg p-6 flex flex-col items-center justify-center gap-4 transition-colors duration-100\"\n [ngClass]=\"{\n 'border-primary-lighter bg-primary-white': dragFilesOver,\n 'border-gray-300': !dragFilesOver,\n 'cursor-pointer hover:border-gray-500': !isUploadInProgress && !disabled,\n 'cursor-not-allowed': disabled,\n }\"\n [attr.tabindex]=\"isUploadInProgress || disabled ? null : 0\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n (keydown.enter)=\"fileInput.click()\"\n >\n <input\n #fileInput\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n />\n\n <div\n class=\"w-14 h-14 rounded-md bg-gray-50 grid\"\n *ngIf=\"!isUploadInProgress\"\n >\n <ng-icon\n *ngIf=\"!dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirCloudUpload\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirFramePlusIn\"\n ></ng-icon>\n </div>\n <div\n *ngIf=\"isUploadInProgress\"\n class=\"w-14 h-14 grid items-center justify-center relative\"\n >\n <div class=\"text-gray-100 absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"100\"\n ></mat-progress-spinner>\n </div>\n <div class=\"text-primary absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n </div>\n <span class=\"text-sm text-main font-bold\">{{ uploadProgress }}%</span>\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">\n {{ getPrimaryText() | translate: { sizeMB: maxSizeMB.toFixed(0) } }}\n </p>\n <p\n class=\"text-sm\"\n [class]=\"\n isUploadInProgress\n ? 'font-bold text-primary cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick($event)\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <p class=\"w-full flex flex-row items-center justify-stretch gap-[16px]\">\n <span class=\"border-b border-gray-300 grow\"></span>\n <span class=\"text-sm font-medium text-gray-500 or-input-url\" translate>\n input.file.orInputUrl</span\n >\n <span class=\"border-b border-gray-300 grow\"></span>\n </p>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"isUploadInProgress || disabled\"\n (uploadClick)=\"handleUrlChange($event)\"\n ></gn-ui-url-input>\n </label>\n</div>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$4.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" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27771
27829
|
}
|
|
27772
27830
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileInputComponent, decorators: [{
|
|
27773
27831
|
type: Component,
|
|
@@ -27899,11 +27957,11 @@ class StarToggleComponent {
|
|
|
27899
27957
|
event.preventDefault();
|
|
27900
27958
|
}
|
|
27901
27959
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27902
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, 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\"
|
|
27960
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StarToggleComponent, isStandalone: true, 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\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-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))}.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: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], viewProviders: [provideIcons({ matStar, matStarBorder })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27903
27961
|
}
|
|
27904
27962
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StarToggleComponent, decorators: [{
|
|
27905
27963
|
type: Component,
|
|
27906
|
-
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, ButtonComponent], viewProviders: [provideIcons({ matStar, matStarBorder })], template: "<div class=\"inline-block relative align-middle\"
|
|
27964
|
+
args: [{ selector: 'gn-ui-star-toggle', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, ButtonComponent], viewProviders: [provideIcons({ matStar, matStarBorder })], template: "<div class=\"inline-block relative align-middle\">\n <gn-ui-button\n [type]=\"'outline'\"\n [disabled]=\"disabled\"\n (buttonClick)=\"toggle($event)\"\n [ngClass]=\"{\n enabled: toggled,\n disabled: !toggled || disabled,\n 'transition hover:scale-125 will-change-transform': !disabled,\n }\"\n >\n <ng-icon [name]=\"toggled ? 'matStar' : 'matStarBorder'\"></ng-icon>\n </gn-ui-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))}.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"] }]
|
|
27907
27965
|
}], propDecorators: { toggled: [{
|
|
27908
27966
|
type: Input
|
|
27909
27967
|
}], disabled: [{
|
|
@@ -27927,7 +27985,7 @@ class SwitchToggleComponent {
|
|
|
27927
27985
|
this.selectedValue.emit(selectedOption);
|
|
27928
27986
|
}
|
|
27929
27987
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwitchToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27930
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SwitchToggleComponent, isStandalone: true, selector: "gn-ui-switch-toggle", inputs: { options: "options", ariaLabel: "ariaLabel", extraClasses: "extraClasses", disabled: "disabled" }, outputs: { selectedValue: "selectedValue" }, ngImport: i0, template: "<mat-button-toggle-group\n #group=\"matButtonToggleGroup\"\n multiple=\"false\"\n class=\"flex w-full\"\n [disabled]=\"disabled\"\n>\n <mat-button-toggle\n *ngFor=\"let option of options\"\n [aria-label]=\"option.label\"\n [checked]=\"option.checked\"\n (change)=\"onChange(option)\"\n [class]=\"extraClasses\"\n >{{ option.label | translate }}</mat-button-toggle\n >\n</mat-button-toggle-group>\n", styles: [":host{--mat-standard-button-toggle-height: 32px}.mat-button-toggle-group-appearance-standard{background-color:var(--color-gray-200);padding:4px;display:flex;gap:4px;border-radius:8px}.mat-button-toggle-appearance-standard{color:#000;background-color:var(--color-gray-200);border-radius:4px;border-left:none;font-family:var(--font-family-main)}.mat-button-toggle-appearance-standard.mat-button-toggle-checked{background-color:#000;color:var(--color-background)}button.mat-button-toggle-button.mat-focus-indicator.mat-button-toggle-label-content,.mat-button-toggle-label-content{line-height:32px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i1$
|
|
27988
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SwitchToggleComponent, isStandalone: true, selector: "gn-ui-switch-toggle", inputs: { options: "options", ariaLabel: "ariaLabel", extraClasses: "extraClasses", disabled: "disabled" }, outputs: { selectedValue: "selectedValue" }, ngImport: i0, template: "<mat-button-toggle-group\n #group=\"matButtonToggleGroup\"\n multiple=\"false\"\n class=\"flex w-full\"\n [disabled]=\"disabled\"\n>\n <mat-button-toggle\n *ngFor=\"let option of options\"\n [aria-label]=\"option.label\"\n [checked]=\"option.checked\"\n (change)=\"onChange(option)\"\n [class]=\"extraClasses\"\n >{{ option.label | translate }}</mat-button-toggle\n >\n</mat-button-toggle-group>\n", styles: [":host{--mat-standard-button-toggle-height: 32px}.mat-button-toggle-group-appearance-standard{background-color:var(--color-gray-200);padding:4px;display:flex;gap:4px;border-radius:8px}.mat-button-toggle-appearance-standard{color:#000;background-color:var(--color-gray-200);border-radius:4px;border-left:none;font-family:var(--font-family-main)}.mat-button-toggle-appearance-standard.mat-button-toggle-checked{background-color:#000;color:var(--color-background)}button.mat-button-toggle-button.mat-focus-indicator.mat-button-toggle-label-content,.mat-button-toggle-label-content{line-height:32px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i1$9.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i1$9.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27931
27989
|
}
|
|
27932
27990
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwitchToggleComponent, decorators: [{
|
|
27933
27991
|
type: Component,
|
|
@@ -28200,6 +28258,61 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28200
28258
|
}]
|
|
28201
28259
|
}] });
|
|
28202
28260
|
|
|
28261
|
+
class SearchFeatureCatalogComponent {
|
|
28262
|
+
constructor() {
|
|
28263
|
+
this.filteredFeatureCatalogChange = new EventEmitter();
|
|
28264
|
+
this.filterAction = (searchTerm) => {
|
|
28265
|
+
of(searchTerm)
|
|
28266
|
+
.pipe(debounceTime(300), distinctUntilChanged(), tap$1(() => {
|
|
28267
|
+
const filtered = (this.featureCatalog?.featureTypes || []).filter((featureType) => {
|
|
28268
|
+
const fuzzyFilter = createFuzzyFilter(searchTerm);
|
|
28269
|
+
return (fuzzyFilter(featureType.name) ||
|
|
28270
|
+
(featureType.definition && fuzzyFilter(featureType.definition)));
|
|
28271
|
+
});
|
|
28272
|
+
this.filteredFeatureCatalog = {
|
|
28273
|
+
...this.featureCatalog,
|
|
28274
|
+
featureTypes: filtered,
|
|
28275
|
+
};
|
|
28276
|
+
this.filteredFeatureCatalogChange.emit(this.filteredFeatureCatalog);
|
|
28277
|
+
}))
|
|
28278
|
+
.subscribe();
|
|
28279
|
+
};
|
|
28280
|
+
}
|
|
28281
|
+
set featureCatalog(value) {
|
|
28282
|
+
this._featureCatalog = value;
|
|
28283
|
+
this.filteredFeatureCatalog = value;
|
|
28284
|
+
}
|
|
28285
|
+
get featureCatalog() {
|
|
28286
|
+
return this._featureCatalog;
|
|
28287
|
+
}
|
|
28288
|
+
get totalObjects() {
|
|
28289
|
+
return this.filteredFeatureCatalog?.featureTypes?.length || 0;
|
|
28290
|
+
}
|
|
28291
|
+
get totalAttributes() {
|
|
28292
|
+
return (this.filteredFeatureCatalog?.featureTypes?.reduce((total, featureType) => total + (featureType.attributes?.length || 0), 0) || 0);
|
|
28293
|
+
}
|
|
28294
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFeatureCatalogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28295
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchFeatureCatalogComponent, isStandalone: true, selector: "gn-ui-search-feature-catalog", inputs: { featureCatalog: "featureCatalog" }, outputs: { filteredFeatureCatalogChange: "filteredFeatureCatalogChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300\"\n>\n <div\n class=\"relative shrink-0\"\n *ngIf=\"featureCatalog?.featureTypes?.length > 1\"\n >\n <input\n type=\"text\"\n [placeholder]=\"'search.filter.into.feature.catalog' | translate\"\n class=\"w-[220px] h-8 pl-3 pr-10 py-2 border rounded-md\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"filterAction(searchTerm)\"\n />\n <ng-icon\n class=\"absolute right-2.5 top-1 w-6 h-6 text-black\"\n name=\"iconoirSearch\"\n ></ng-icon>\n </div>\n <div class=\"text-sm px-1 ml-auto hidden sm:inline\">\n <ng-container *ngIf=\"featureCatalog?.featureTypes?.length > 1\">\n <span\n class=\"text-sm font-medium text-gray-900\"\n data-cy=\"total-objects-label\"\n translate\n >record.feature.catalog.number.total.object</span\n ><span\n class=\"text-sm font-bold px-1 text-gray-900\"\n data-cy=\"total-objects\"\n >{{ totalObjects }}</span\n >\n <span class=\"px-1.5\">|</span>\n </ng-container>\n <span\n class=\"text-sm font-medium px-1 text-gray-900\"\n data-cy=\"total-attributes-label\"\n translate\n >record.feature.catalog.number.total.attribute</span\n ><span class=\"text-sm font-bold text-gray-900\" data-cy=\"total-attributes\">{{\n totalAttributes\n }}</span>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { 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: FormsModule }, { 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"] }], viewProviders: [
|
|
28296
|
+
provideIcons({ iconoirSearch }),
|
|
28297
|
+
provideNgIconsConfig({
|
|
28298
|
+
size: '1.5rem',
|
|
28299
|
+
}),
|
|
28300
|
+
] }); }
|
|
28301
|
+
}
|
|
28302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchFeatureCatalogComponent, decorators: [{
|
|
28303
|
+
type: Component,
|
|
28304
|
+
args: [{ selector: 'gn-ui-search-feature-catalog', standalone: true, imports: [CommonModule, NgIcon, TranslateModule, FormsModule], viewProviders: [
|
|
28305
|
+
provideIcons({ iconoirSearch }),
|
|
28306
|
+
provideNgIconsConfig({
|
|
28307
|
+
size: '1.5rem',
|
|
28308
|
+
}),
|
|
28309
|
+
], template: "<div\n class=\"flex items-center justify-between p-3 mt-8 bg-white rounded-lg border-b solid border-gray-300\"\n>\n <div\n class=\"relative shrink-0\"\n *ngIf=\"featureCatalog?.featureTypes?.length > 1\"\n >\n <input\n type=\"text\"\n [placeholder]=\"'search.filter.into.feature.catalog' | translate\"\n class=\"w-[220px] h-8 pl-3 pr-10 py-2 border rounded-md\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"filterAction(searchTerm)\"\n />\n <ng-icon\n class=\"absolute right-2.5 top-1 w-6 h-6 text-black\"\n name=\"iconoirSearch\"\n ></ng-icon>\n </div>\n <div class=\"text-sm px-1 ml-auto hidden sm:inline\">\n <ng-container *ngIf=\"featureCatalog?.featureTypes?.length > 1\">\n <span\n class=\"text-sm font-medium text-gray-900\"\n data-cy=\"total-objects-label\"\n translate\n >record.feature.catalog.number.total.object</span\n ><span\n class=\"text-sm font-bold px-1 text-gray-900\"\n data-cy=\"total-objects\"\n >{{ totalObjects }}</span\n >\n <span class=\"px-1.5\">|</span>\n </ng-container>\n <span\n class=\"text-sm font-medium px-1 text-gray-900\"\n data-cy=\"total-attributes-label\"\n translate\n >record.feature.catalog.number.total.attribute</span\n ><span class=\"text-sm font-bold text-gray-900\" data-cy=\"total-attributes\">{{\n totalAttributes\n }}</span>\n </div>\n</div>\n" }]
|
|
28310
|
+
}], propDecorators: { featureCatalog: [{
|
|
28311
|
+
type: Input
|
|
28312
|
+
}], filteredFeatureCatalogChange: [{
|
|
28313
|
+
type: Output
|
|
28314
|
+
}] } });
|
|
28315
|
+
|
|
28203
28316
|
class SortableListComponent {
|
|
28204
28317
|
constructor() {
|
|
28205
28318
|
this.itemsOrderChange = new EventEmitter();
|
|
@@ -28240,13 +28353,13 @@ class ModalDialogComponent {
|
|
|
28240
28353
|
onCancel() {
|
|
28241
28354
|
this.dialogRef.close(false);
|
|
28242
28355
|
}
|
|
28243
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalDialogComponent, deps: [{ token: i1$
|
|
28244
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ModalDialogComponent, isStandalone: true, selector: "gn-ui-modal-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>\n <ng-container\n *ngTemplateOutlet=\"data.body; context: { $implicit: data.bodyContext }\"\n ></ng-container>\n</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$
|
|
28356
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalDialogComponent, deps: [{ token: i1$a.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28357
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ModalDialogComponent, isStandalone: true, selector: "gn-ui-modal-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>\n <ng-container\n *ngTemplateOutlet=\"data.body; context: { $implicit: data.bodyContext }\"\n ></ng-container>\n</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$a.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$a.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$a.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28245
28358
|
}
|
|
28246
28359
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ModalDialogComponent, decorators: [{
|
|
28247
28360
|
type: Component,
|
|
28248
28361
|
args: [{ selector: 'gn-ui-modal-dialog', standalone: true, imports: [CommonModule, MatDialogModule, ButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>\n <ng-container\n *ngTemplateOutlet=\"data.body; context: { $implicit: data.bodyContext }\"\n ></ng-container>\n</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n" }]
|
|
28249
|
-
}], ctorParameters: () => [{ type: i1$
|
|
28362
|
+
}], ctorParameters: () => [{ type: i1$a.MatDialogRef }, { type: undefined, decorators: [{
|
|
28250
28363
|
type: Inject,
|
|
28251
28364
|
args: [MAT_DIALOG_DATA]
|
|
28252
28365
|
}] }] });
|
|
@@ -28374,20 +28487,70 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28374
28487
|
}] });
|
|
28375
28488
|
|
|
28376
28489
|
class TruncatedTextComponent {
|
|
28377
|
-
constructor(cd) {
|
|
28490
|
+
constructor(cd, ngZone, viewportRuler) {
|
|
28378
28491
|
this.cd = cd;
|
|
28492
|
+
this.ngZone = ngZone;
|
|
28493
|
+
this.viewportRuler = viewportRuler;
|
|
28379
28494
|
this.text = '';
|
|
28495
|
+
this.extraClass = '';
|
|
28380
28496
|
this.isTextTruncated = false;
|
|
28381
28497
|
this.isOpen = false;
|
|
28498
|
+
this.overlayPosition = {
|
|
28499
|
+
originX: 'end',
|
|
28500
|
+
originY: 'top',
|
|
28501
|
+
overlayX: 'end',
|
|
28502
|
+
overlayY: 'top',
|
|
28503
|
+
};
|
|
28504
|
+
this.resizeObserver = new ResizeObserver(() => {
|
|
28505
|
+
this.ngZone.run(() => this.checkTextTruncation());
|
|
28506
|
+
});
|
|
28507
|
+
this.mutationObserver = new MutationObserver(() => {
|
|
28508
|
+
this.ngZone.run(() => {
|
|
28509
|
+
this.checkTextTruncation();
|
|
28510
|
+
this.close();
|
|
28511
|
+
});
|
|
28512
|
+
});
|
|
28513
|
+
this.viewportSubscription = this.viewportRuler.change().subscribe(() => {
|
|
28514
|
+
if (this.isOpen) {
|
|
28515
|
+
this.updateOverlayPosition();
|
|
28516
|
+
}
|
|
28517
|
+
});
|
|
28382
28518
|
}
|
|
28383
28519
|
ngAfterViewInit() {
|
|
28520
|
+
const element = this.textElement.nativeElement;
|
|
28521
|
+
this.resizeObserver?.observe(element);
|
|
28522
|
+
this.mutationObserver?.observe(element.parentElement, {
|
|
28523
|
+
attributes: true,
|
|
28524
|
+
childList: true,
|
|
28525
|
+
subtree: true,
|
|
28526
|
+
});
|
|
28384
28527
|
this.checkTextTruncation();
|
|
28385
28528
|
}
|
|
28386
|
-
|
|
28387
|
-
this.
|
|
28529
|
+
ngOnDestroy() {
|
|
28530
|
+
this.resizeObserver?.disconnect();
|
|
28531
|
+
this.mutationObserver?.disconnect();
|
|
28532
|
+
this.viewportSubscription?.unsubscribe();
|
|
28533
|
+
this.close();
|
|
28388
28534
|
}
|
|
28389
28535
|
toggleOverlay() {
|
|
28390
28536
|
this.isOpen = !this.isOpen;
|
|
28537
|
+
if (this.isOpen) {
|
|
28538
|
+
this.updateOverlayPosition();
|
|
28539
|
+
}
|
|
28540
|
+
}
|
|
28541
|
+
updateOverlayPosition() {
|
|
28542
|
+
const element = this.textElement.nativeElement;
|
|
28543
|
+
const rect = element.getBoundingClientRect();
|
|
28544
|
+
const viewportWidth = this.viewportRuler.getViewportSize().width;
|
|
28545
|
+
const isMobile = viewportWidth < 640;
|
|
28546
|
+
const overlayWidth = isMobile ? 190 : 320;
|
|
28547
|
+
const isNearLeftEdge = rect.left < overlayWidth;
|
|
28548
|
+
this.overlayPosition = {
|
|
28549
|
+
originX: isNearLeftEdge ? 'start' : 'end',
|
|
28550
|
+
originY: 'top',
|
|
28551
|
+
overlayX: isNearLeftEdge ? 'start' : 'end',
|
|
28552
|
+
overlayY: 'top',
|
|
28553
|
+
};
|
|
28391
28554
|
}
|
|
28392
28555
|
close() {
|
|
28393
28556
|
this.isOpen = false;
|
|
@@ -28397,8 +28560,8 @@ class TruncatedTextComponent {
|
|
|
28397
28560
|
this.isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
28398
28561
|
this.cd.detectChanges();
|
|
28399
28562
|
}
|
|
28400
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28401
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TruncatedTextComponent, isStandalone: true, selector: "gn-ui-truncated-text", inputs: { text: "text" }, providers: [provideIcons({ iconoirExpand, iconoirReduce })], viewQueries: [{ propertyName: "textElement", first: true, predicate: ["textElement"], descendants: true }], ngImport: i0, template: "<div\n class=\"flex items-center justify-between w-full gap-2\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n>\n <span #textElement class=\"truncate\">\n {{ text }}\n </span>\n <gn-ui-button\n *ngIf=\"isTextTruncated\"\n type=\"outline\"\n extraClass=\"w-10 h-8 border rounded-lg\"\n (buttonClick)=\"toggleOverlay()\"\n >\n <ng-icon name=\"iconoirExpand\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[\n
|
|
28563
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1$8.ViewportRuler }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28564
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TruncatedTextComponent, isStandalone: true, selector: "gn-ui-truncated-text", inputs: { text: "text", extraClass: "extraClass" }, providers: [provideIcons({ iconoirExpand, iconoirReduce })], viewQueries: [{ propertyName: "textElement", first: true, predicate: ["textElement"], descendants: true }], ngImport: i0, template: "<div\n class=\"flex items-center justify-between w-full gap-2\"\n cdkOverlayOrigin\n [class]=\"extraClass\"\n #trigger=\"cdkOverlayOrigin\"\n>\n <span #textElement class=\"truncate\">\n {{ text }}\n </span>\n <gn-ui-button\n *ngIf=\"isTextTruncated\"\n type=\"outline\"\n extraClass=\"w-10 h-8 border rounded-lg\"\n (buttonClick)=\"toggleOverlay()\"\n >\n <ng-icon name=\"iconoirExpand\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[overlayPosition]\"\n cdkConnectedOverlayPush\n [cdkConnectedOverlayWidth]=\"'auto'\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n (detach)=\"close()\"\n >\n <div class=\"bg-white shadow-lg border border-gray-300 flex\">\n <div class=\"sm:w-64 xs:w-32\">\n <p class=\"m-2\">{{ text }}</p>\n </div>\n <gn-ui-button\n class=\"m-2 flex-shrink-0\"\n type=\"light\"\n (buttonClick)=\"close()\"\n extraClass=\"w-10 h-8 px-1 bg-white\"\n >\n <ng-icon name=\"iconoirReduce\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$8.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$8.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }] }); }
|
|
28402
28565
|
}
|
|
28403
28566
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, decorators: [{
|
|
28404
28567
|
type: Component,
|
|
@@ -28409,8 +28572,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28409
28572
|
OverlayModule,
|
|
28410
28573
|
ButtonComponent,
|
|
28411
28574
|
NgIconComponent,
|
|
28412
|
-
], providers: [provideIcons({ iconoirExpand, iconoirReduce })], template: "<div\n class=\"flex items-center justify-between w-full gap-2\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n>\n <span #textElement class=\"truncate\">\n {{ text }}\n </span>\n <gn-ui-button\n *ngIf=\"isTextTruncated\"\n type=\"outline\"\n extraClass=\"w-10 h-8 border rounded-lg\"\n (buttonClick)=\"toggleOverlay()\"\n >\n <ng-icon name=\"iconoirExpand\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[\n
|
|
28413
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { text: [{
|
|
28575
|
+
], providers: [provideIcons({ iconoirExpand, iconoirReduce })], template: "<div\n class=\"flex items-center justify-between w-full gap-2\"\n cdkOverlayOrigin\n [class]=\"extraClass\"\n #trigger=\"cdkOverlayOrigin\"\n>\n <span #textElement class=\"truncate\">\n {{ text }}\n </span>\n <gn-ui-button\n *ngIf=\"isTextTruncated\"\n type=\"outline\"\n extraClass=\"w-10 h-8 border rounded-lg\"\n (buttonClick)=\"toggleOverlay()\"\n >\n <ng-icon name=\"iconoirExpand\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[overlayPosition]\"\n cdkConnectedOverlayPush\n [cdkConnectedOverlayWidth]=\"'auto'\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n (detach)=\"close()\"\n >\n <div class=\"bg-white shadow-lg border border-gray-300 flex\">\n <div class=\"sm:w-64 xs:w-32\">\n <p class=\"m-2\">{{ text }}</p>\n </div>\n <gn-ui-button\n class=\"m-2 flex-shrink-0\"\n type=\"light\"\n (buttonClick)=\"close()\"\n extraClass=\"w-10 h-8 px-1 bg-white\"\n >\n <ng-icon name=\"iconoirReduce\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n </div>\n </ng-template>\n</div>\n" }]
|
|
28576
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1$8.ViewportRuler }], propDecorators: { text: [{
|
|
28577
|
+
type: Input
|
|
28578
|
+
}], extraClass: [{
|
|
28414
28579
|
type: Input
|
|
28415
28580
|
}], textElement: [{
|
|
28416
28581
|
type: ViewChild,
|
|
@@ -28888,6 +29053,108 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28888
29053
|
args: [{ selector: 'gn-ui-record-preview-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"h-40 bg-white transition duration-200 border border-gray-200 rounded-md hover:bg-gray-50 hover:border-primary hover:text-primary\"\n>\n <a\n [href]=\"record.landingPage\"\n [target]=\"linkTarget\"\n [title]=\"record.abstract\"\n >\n <div class=\"h-full flex flex-row items-center shadow-sm\">\n <gn-ui-thumbnail\n class=\"w-40 h-full shrink-0 border-r border-gray-200 bg-gray-100\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n\n <div class=\"grow h-full px-6 py-4 flex flex-col overflow-hidden\">\n <div class=\"title-font text-lg font-medium mb-2\">\n <h1 class=\"truncate\">{{ record.title }}</h1>\n </div>\n <p class=\"leading-relaxed clamp-3 text-sm text-gray-700\">\n {{ record.abstract }}\n </p>\n <div class=\"grow\"></div>\n <div class=\"flex flex-row items-center\">\n <div\n class=\"text-gray-500 text-xs truncate capitalize border-r mr-4 pr-4\"\n *ngIf=\"record.kind === 'dataset'\"\n >\n <span translate>{{ record.updateFrequency }}</span>\n </div>\n <div\n class=\"text-gray-500 text-xs border-gray-300 truncate viewable-downloadable\"\n *ngIf=\"isViewable || isDownloadable\"\n >\n <span *ngIf=\"isViewable\" translate>record.action.view</span>\n <span *ngIf=\"isViewable && isDownloadable\">, </span>\n <span *ngIf=\"isDownloadable\" translate>record.action.download</span>\n </div>\n </div>\n </div>\n </div>\n </a>\n</div>\n", styles: [".viewable-downloadable :first-child{text-transform:capitalize}\n"] }]
|
|
28889
29054
|
}] });
|
|
28890
29055
|
|
|
29056
|
+
class GeoDataBadgeComponent {
|
|
29057
|
+
isGeodata() {
|
|
29058
|
+
const links = 'onlineResources' in this.record ? this.record.onlineResources : [];
|
|
29059
|
+
const hasMapApi = links.some((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API));
|
|
29060
|
+
const hasGeoData = links.some((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA));
|
|
29061
|
+
return hasMapApi || hasGeoData;
|
|
29062
|
+
}
|
|
29063
|
+
get badgeClasses() {
|
|
29064
|
+
const baseClasses = 'flex shrink-0 items-center badge-btn text-xs px-2 h-6 min-h-6';
|
|
29065
|
+
switch (this.styling) {
|
|
29066
|
+
case 'light':
|
|
29067
|
+
return `${baseClasses} bg-primary-white text-primary-darkest`;
|
|
29068
|
+
case 'default':
|
|
29069
|
+
return `${baseClasses} bg-primary-darker text-white`;
|
|
29070
|
+
default:
|
|
29071
|
+
return 'flex shrink-0 items-center';
|
|
29072
|
+
}
|
|
29073
|
+
}
|
|
29074
|
+
constructor(linkClassifier) {
|
|
29075
|
+
this.linkClassifier = linkClassifier;
|
|
29076
|
+
this.showLabel = true;
|
|
29077
|
+
this.styling = 'default';
|
|
29078
|
+
}
|
|
29079
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoDataBadgeComponent, deps: [{ token: LinkClassifierService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29080
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoDataBadgeComponent, isStandalone: true, selector: "gn-ui-geo-data-badge", inputs: { showLabel: "showLabel", styling: "styling", record: "record" }, ngImport: i0, template: "<div\n [class]=\"badgeClasses\"\n [title]=\"'record.metadata.isGeographical' | translate\"\n *ngIf=\"isGeodata()\"\n>\n <ng-icon\n class=\"shrink-0 text-[0.75em]\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <span class=\"ml-1 hidden sm:inline-block shrink-0\" *ngIf=\"showLabel\" translate\n >record.metadata.isGeographical</span\n >\n</div>\n", styles: [":host{--gn-ui-geo-data-badge-background-color: var(--color-primary-white);--gn-ui-geo-data-badge-text-color: var(--color-primary-darkest)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { 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"] }], viewProviders: [
|
|
29081
|
+
provideIcons({
|
|
29082
|
+
matLocationSearchingOutline,
|
|
29083
|
+
}),
|
|
29084
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29085
|
+
}
|
|
29086
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoDataBadgeComponent, decorators: [{
|
|
29087
|
+
type: Component,
|
|
29088
|
+
args: [{ selector: 'gn-ui-geo-data-badge', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon, TranslateModule], viewProviders: [
|
|
29089
|
+
provideIcons({
|
|
29090
|
+
matLocationSearchingOutline,
|
|
29091
|
+
}),
|
|
29092
|
+
], template: "<div\n [class]=\"badgeClasses\"\n [title]=\"'record.metadata.isGeographical' | translate\"\n *ngIf=\"isGeodata()\"\n>\n <ng-icon\n class=\"shrink-0 text-[0.75em]\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <span class=\"ml-1 hidden sm:inline-block shrink-0\" *ngIf=\"showLabel\" translate\n >record.metadata.isGeographical</span\n >\n</div>\n", styles: [":host{--gn-ui-geo-data-badge-background-color: var(--color-primary-white);--gn-ui-geo-data-badge-text-color: var(--color-primary-darkest)}\n"] }]
|
|
29093
|
+
}], ctorParameters: () => [{ type: LinkClassifierService }], propDecorators: { showLabel: [{
|
|
29094
|
+
type: Input
|
|
29095
|
+
}], styling: [{
|
|
29096
|
+
type: Input
|
|
29097
|
+
}], record: [{
|
|
29098
|
+
type: Input
|
|
29099
|
+
}] } });
|
|
29100
|
+
|
|
29101
|
+
marker('record.kind.dataset');
|
|
29102
|
+
marker('record.kind.reuse');
|
|
29103
|
+
marker('record.kind.service');
|
|
29104
|
+
var KindConfig;
|
|
29105
|
+
(function (KindConfig) {
|
|
29106
|
+
KindConfig["all"] = "iconoirAppleWallet";
|
|
29107
|
+
KindConfig["dataset"] = "iconoirAppleShortcuts";
|
|
29108
|
+
KindConfig["service"] = "iconoirCode";
|
|
29109
|
+
KindConfig["reuse"] = "iconoirCreditCard";
|
|
29110
|
+
})(KindConfig || (KindConfig = {}));
|
|
29111
|
+
class KindBadgeComponent {
|
|
29112
|
+
constructor() {
|
|
29113
|
+
this.styling = 'default';
|
|
29114
|
+
this.hasProjectedContent = false;
|
|
29115
|
+
}
|
|
29116
|
+
get iconKind() {
|
|
29117
|
+
return KindConfig[this.kind] || KindConfig.dataset;
|
|
29118
|
+
}
|
|
29119
|
+
get badgeClasses() {
|
|
29120
|
+
const baseClasses = 'badge-btn text-white text-xs px-2 font-bold shrink-0 flex items-center h-6 min-h-6';
|
|
29121
|
+
switch (this.styling) {
|
|
29122
|
+
case 'outline':
|
|
29123
|
+
return `${baseClasses} bg-transparent border border-white py-1.5`;
|
|
29124
|
+
case 'default':
|
|
29125
|
+
return `${baseClasses} bg-primary py-0.5`;
|
|
29126
|
+
default:
|
|
29127
|
+
return 'flex items-center';
|
|
29128
|
+
}
|
|
29129
|
+
}
|
|
29130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KindBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: KindBadgeComponent, isStandalone: true, selector: "gn-ui-kind-badge", inputs: { styling: "styling", contentTemplate: "contentTemplate", kind: "kind" }, ngImport: i0, template: "<div [class]=\"badgeClasses\" *ngIf=\"kind\">\n <ng-icon [name]=\"iconKind\" class=\"mr-1 text-[0.85em]\"></ng-icon>\n\n <ng-container *ngIf=\"contentTemplate; else defaultContent\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #defaultContent>\n {{ 'record.kind.' + kind | translate }}\n</ng-template>\n", styles: [":host gn-ui-badge ng-icon{font-size:1.2rem;width:1.2rem;height:1.2rem;transform:translateY(-2px)}\n"], dependencies: [{ kind: "ngmodule", type: NgIconsModule }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], viewProviders: [
|
|
29132
|
+
provideIcons({
|
|
29133
|
+
iconoirAppleWallet,
|
|
29134
|
+
iconoirAppleShortcuts,
|
|
29135
|
+
iconoirCode,
|
|
29136
|
+
iconoirCreditCard,
|
|
29137
|
+
}),
|
|
29138
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29139
|
+
}
|
|
29140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KindBadgeComponent, decorators: [{
|
|
29141
|
+
type: Component,
|
|
29142
|
+
args: [{ selector: 'gn-ui-kind-badge', viewProviders: [
|
|
29143
|
+
provideIcons({
|
|
29144
|
+
iconoirAppleWallet,
|
|
29145
|
+
iconoirAppleShortcuts,
|
|
29146
|
+
iconoirCode,
|
|
29147
|
+
iconoirCreditCard,
|
|
29148
|
+
}),
|
|
29149
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIconsModule, CommonModule, TranslateModule], template: "<div [class]=\"badgeClasses\" *ngIf=\"kind\">\n <ng-icon [name]=\"iconKind\" class=\"mr-1 text-[0.85em]\"></ng-icon>\n\n <ng-container *ngIf=\"contentTemplate; else defaultContent\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #defaultContent>\n {{ 'record.kind.' + kind | translate }}\n</ng-template>\n", styles: [":host gn-ui-badge ng-icon{font-size:1.2rem;width:1.2rem;height:1.2rem;transform:translateY(-2px)}\n"] }]
|
|
29150
|
+
}], propDecorators: { styling: [{
|
|
29151
|
+
type: Input
|
|
29152
|
+
}], contentTemplate: [{
|
|
29153
|
+
type: Input
|
|
29154
|
+
}], kind: [{
|
|
29155
|
+
type: Input
|
|
29156
|
+
}] } });
|
|
29157
|
+
|
|
28891
29158
|
class MarkdownParserComponent {
|
|
28892
29159
|
get parsedMarkdown() {
|
|
28893
29160
|
return marked.parse(this.textContent ?? '');
|
|
@@ -28984,7 +29251,7 @@ class MetadataQualityComponent {
|
|
|
28984
29251
|
size: '1.2em',
|
|
28985
29252
|
strokeWidth: '1.5px',
|
|
28986
29253
|
}),
|
|
28987
|
-
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"min - w - 0\"\n [ngClass]=\"{ 'leading-[8px] m-h-[120px]': smaller }\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29254
|
+
], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"min - w - 0\"\n [ngClass]=\"{ 'text-xs leading-[8px] m-h-[120px]': smaller }\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: ProgressBarComponent, selector: "gn-ui-progress-bar", inputs: ["value", "type"] }, { kind: "component", type: MetadataQualityItemComponent, selector: "gn-ui-metadata-quality-item", inputs: ["name", "value"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28988
29255
|
}
|
|
28989
29256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataQualityComponent, decorators: [{
|
|
28990
29257
|
type: Component,
|
|
@@ -29003,7 +29270,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29003
29270
|
size: '1.2em',
|
|
29004
29271
|
strokeWidth: '1.5px',
|
|
29005
29272
|
}),
|
|
29006
|
-
], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"min - w - 0\"\n [ngClass]=\"{ 'leading-[8px] m-h-[120px]': smaller }\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
|
|
29273
|
+
], template: "<div *ngIf=\"metadataQualityDisplay\" class=\"metadata-quality\">\n <div\n class=\"flex items-center\"\n [class]=\"min - w - 0\"\n [ngClass]=\"{ 'text-xs leading-[8px] m-h-[120px]': smaller }\"\n >\n <gn-ui-progress-bar\n tabindex=\"0\"\n [value]=\"qualityScore\"\n [type]=\"'light'\"\n class=\"flex-grow\"\n ></gn-ui-progress-bar>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light-border\"\n [class]=\"smaller ? 'ml-2' : 'ml-2 mt-1'\"\n >\n <ng-icon\n name=\"matInfoOutline\"\n class=\"flex-shrink-0 text-gray-600\"\n ></ng-icon>\n </gn-ui-popover>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div class=\"mb-4 font-bold\" translate>record.metadata.quality.details</div>\n <gn-ui-metadata-quality-item\n *ngFor=\"let e of items\"\n [name]=\"e.name\"\n [value]=\"e.value\"\n ></gn-ui-metadata-quality-item>\n </div>\n</ng-template>\n", styles: [":host gn-ui-progress-bar{--progress-bar-font-weight: \"normal\"}\n"] }]
|
|
29007
29274
|
}], propDecorators: { metadata: [{
|
|
29008
29275
|
type: Input
|
|
29009
29276
|
}], smaller: [{
|
|
@@ -29012,17 +29279,139 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29012
29279
|
type: Input
|
|
29013
29280
|
}] } });
|
|
29014
29281
|
|
|
29282
|
+
class InternalLinkCardComponent {
|
|
29283
|
+
set size(value) {
|
|
29284
|
+
this._size = value;
|
|
29285
|
+
this.cardClass = this.sizeClassMap[value] || '';
|
|
29286
|
+
this.thumbnailContainerClass = this.thumbnailSizeClassMap[value] || 'hidden';
|
|
29287
|
+
}
|
|
29288
|
+
get size() {
|
|
29289
|
+
return this._size;
|
|
29290
|
+
}
|
|
29291
|
+
constructor(elementRef) {
|
|
29292
|
+
this.elementRef = elementRef;
|
|
29293
|
+
this.linkTarget = '_blank';
|
|
29294
|
+
this.linkHref = null;
|
|
29295
|
+
this.mdSelect = new EventEmitter();
|
|
29296
|
+
this.subscription = new Subscription();
|
|
29297
|
+
this.cardClass = '';
|
|
29298
|
+
this.thumbnailContainerClass = '';
|
|
29299
|
+
this._size = 'M';
|
|
29300
|
+
this.sizeClassMap = {
|
|
29301
|
+
L: 'min-h-[190px] w-full py-3 px-3 flex items-start gap-5',
|
|
29302
|
+
M: 'min-h-[140px] py-3 px-3 flex items-start gap-4',
|
|
29303
|
+
S: 'min-h-[220px] py-3 px-3 flex gap-4',
|
|
29304
|
+
XS: 'min-h-[108px] py-3 px-3 flex gap-4',
|
|
29305
|
+
};
|
|
29306
|
+
this.thumbnailSizeClassMap = {
|
|
29307
|
+
L: 'w-full md:w-[190px] h-[180px] rounded-lg overflow-hidden shrink-0',
|
|
29308
|
+
M: 'w-[110px] h-[140px] rounded-lg overflow-hidden shrink-0',
|
|
29309
|
+
S: 'hidden',
|
|
29310
|
+
XS: 'hidden',
|
|
29311
|
+
};
|
|
29312
|
+
this.titleClassMap = {
|
|
29313
|
+
L: 'text-xl line-clamp-1',
|
|
29314
|
+
M: 'text-base line-clamp-2',
|
|
29315
|
+
S: 'text-base line-clamp-3 ml-2',
|
|
29316
|
+
XS: 'text-base line-clamp-1 ml-2',
|
|
29317
|
+
};
|
|
29318
|
+
}
|
|
29319
|
+
ngOnInit() {
|
|
29320
|
+
this.abstract = removeWhitespace(stripHtml(this.record?.abstract));
|
|
29321
|
+
this.subscription.add(fromEvent(this.elementRef.nativeElement, 'click').subscribe(() => this.mdSelect.emit(this.record)));
|
|
29322
|
+
}
|
|
29323
|
+
get organization() {
|
|
29324
|
+
return this.record.ownerOrganization;
|
|
29325
|
+
}
|
|
29326
|
+
get contacts() {
|
|
29327
|
+
return ((this.record.kind === 'dataset'
|
|
29328
|
+
? this.record.contactsForResource
|
|
29329
|
+
: this.record.contacts) || []);
|
|
29330
|
+
}
|
|
29331
|
+
getTitleClass() {
|
|
29332
|
+
return this.titleClassMap[this._size];
|
|
29333
|
+
}
|
|
29334
|
+
openExternalUrl(event, url) {
|
|
29335
|
+
event.stopPropagation();
|
|
29336
|
+
window.open(url, '_blank');
|
|
29337
|
+
}
|
|
29338
|
+
openMailto(event, email) {
|
|
29339
|
+
event.stopPropagation();
|
|
29340
|
+
window.open(`mailto:${email}`, '_blank');
|
|
29341
|
+
}
|
|
29342
|
+
copyToClipboard(event, text) {
|
|
29343
|
+
event.stopPropagation();
|
|
29344
|
+
navigator.clipboard.writeText(text);
|
|
29345
|
+
}
|
|
29346
|
+
get shouldShowThumbnail() {
|
|
29347
|
+
return this.size === 'L' || this.size === 'M';
|
|
29348
|
+
}
|
|
29349
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29350
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InternalLinkCardComponent, isStandalone: true, selector: "gn-ui-internal-link-card", inputs: { record: "record", linkTarget: "linkTarget", linkHref: "linkHref", metadataQualityDisplay: "metadataQualityDisplay", favoriteTemplate: "favoriteTemplate", size: "size" }, outputs: { mdSelect: "mdSelect" }, providers: [
|
|
29351
|
+
provideIcons({
|
|
29352
|
+
iconoirInternet,
|
|
29353
|
+
matLocationSearchingOutline,
|
|
29354
|
+
matEmailOutline,
|
|
29355
|
+
matPhoneOutline,
|
|
29356
|
+
matLocationOnOutline,
|
|
29357
|
+
}),
|
|
29358
|
+
provideNgIconsConfig({
|
|
29359
|
+
size: '1.2em',
|
|
29360
|
+
}),
|
|
29361
|
+
], ngImport: i0, template: "<a [attr.href]=\"linkHref\" [target]=\"linkTarget\">\n <div\n class=\"group rounded-md bg-white hover:cursor-pointer hover:bg-slate-50 overflow-hidden w-full\"\n [ngClass]=\"cardClass\"\n >\n <div\n class=\"flex flex-row md:gap-0 justify-between w-full\"\n [ngClass]=\"{ 'flex-wrap md:flex-nowrap gap-3': size === 'L' }\"\n >\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"border mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grow flex flex-col gap-3\">\n <div class=\"flex items-center gap-2\">\n <div class=\"grow flex flex-wrap items-center gap-2\">\n <gn-ui-kind-badge\n [styling]=\"'default'\"\n [kind]=\"record?.kind\"\n ></gn-ui-kind-badge>\n <gn-ui-geo-data-badge\n [showLabel]=\"size === 'L'\"\n [styling]=\"'light'\"\n [record]=\"record\"\n ></gn-ui-geo-data-badge>\n <gn-ui-metadata-quality\n class=\"flex items-center\"\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div *ngIf=\"size !== 'XS'\" data-cy=\"recordFav\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n\n <div class=\"grow flex flex-col gap-2\">\n <div\n class=\"font-medium text-title group-hover:text-primary\"\n [title]=\"record.title\"\n >\n <h4\n class=\"mr-6 overflow-hidden\"\n [ngClass]=\"getTitleClass()\"\n data-cy=\"recordTitle\"\n [title]=\"record.title\"\n >\n {{ record.title }}\n </h4>\n </div>\n <div\n *ngIf=\"size === 'L'\"\n class=\"mr-6 text-xs text-gray-900 line-clamp-2 overflow-hidden\"\n data-cy=\"recordAbstract\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n </div>\n\n <div\n data-cy=\"recordOrg\"\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n class=\"flex items-center justify-evenly bg-gray-50 rounded-lg h-[53px] px-2\"\n >\n <div class=\"flex items-center flex-1 min-w-0\">\n <div\n class=\"w-[45px] h-[45px] rounded-lg overflow-hidden shrink-0 mr-3\"\n >\n <gn-ui-thumbnail\n [thumbnailUrl]=\"\n record.ownerOrganization?.logoUrl?.toString() || ''\n \"\n [fit]=\"'contain'\"\n class=\"w-full h-full rounded-lg\"\n ></gn-ui-thumbnail>\n </div>\n <div *ngIf=\"organization?.name\" class=\"flex-1 w-0 overflow-hidden\">\n <div\n class=\"text-xs text-black font-normal leading-tight truncate\"\n translate\n >\n record.card.metadata.contact\n </div>\n <div\n data-cy=\"recordOrgName\"\n class=\"text-xl text-primary-black font-medium truncate\"\n >\n {{ organization.name }}\n </div>\n </div>\n </div>\n <div *ngIf=\"size === 'L'\" class=\"ml-2 flex space-x-2\">\n <div *ngIf=\"organization?.website\" class=\"flex\">\n <button\n [title]=\"organization.website\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n (click)=\"openExternalUrl($event, organization.website)\"\n >\n <ng-icon name=\"iconoirInternet\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.email\" class=\"flex\">\n <button\n [title]=\"contacts[0].email\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n data-cy=\"contact-email\"\n (click)=\"openMailto($event, contacts[0].email)\"\n >\n <ng-icon name=\"matEmailOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.phone\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].phone)\"\n >\n <ng-icon name=\"matPhoneOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.address\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].address)\"\n >\n <ng-icon name=\"matLocationOnOutline\"></ng-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: GeoDataBadgeComponent, selector: "gn-ui-geo-data-badge", inputs: ["showLabel", "styling", "record"] }, { kind: "component", type: KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["styling", "contentTemplate", "kind"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }] }); }
|
|
29362
|
+
}
|
|
29363
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, decorators: [{
|
|
29364
|
+
type: Component,
|
|
29365
|
+
args: [{ selector: 'gn-ui-internal-link-card', standalone: true, imports: [
|
|
29366
|
+
NgClass,
|
|
29367
|
+
NgIf,
|
|
29368
|
+
ThumbnailComponent,
|
|
29369
|
+
MetadataQualityComponent,
|
|
29370
|
+
NgTemplateOutlet,
|
|
29371
|
+
NgIconComponent,
|
|
29372
|
+
TranslateModule,
|
|
29373
|
+
GeoDataBadgeComponent,
|
|
29374
|
+
KindBadgeComponent,
|
|
29375
|
+
MarkdownParserComponent,
|
|
29376
|
+
], providers: [
|
|
29377
|
+
provideIcons({
|
|
29378
|
+
iconoirInternet,
|
|
29379
|
+
matLocationSearchingOutline,
|
|
29380
|
+
matEmailOutline,
|
|
29381
|
+
matPhoneOutline,
|
|
29382
|
+
matLocationOnOutline,
|
|
29383
|
+
}),
|
|
29384
|
+
provideNgIconsConfig({
|
|
29385
|
+
size: '1.2em',
|
|
29386
|
+
}),
|
|
29387
|
+
], template: "<a [attr.href]=\"linkHref\" [target]=\"linkTarget\">\n <div\n class=\"group rounded-md bg-white hover:cursor-pointer hover:bg-slate-50 overflow-hidden w-full\"\n [ngClass]=\"cardClass\"\n >\n <div\n class=\"flex flex-row md:gap-0 justify-between w-full\"\n [ngClass]=\"{ 'flex-wrap md:flex-nowrap gap-3': size === 'L' }\"\n >\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"border mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grow flex flex-col gap-3\">\n <div class=\"flex items-center gap-2\">\n <div class=\"grow flex flex-wrap items-center gap-2\">\n <gn-ui-kind-badge\n [styling]=\"'default'\"\n [kind]=\"record?.kind\"\n ></gn-ui-kind-badge>\n <gn-ui-geo-data-badge\n [showLabel]=\"size === 'L'\"\n [styling]=\"'light'\"\n [record]=\"record\"\n ></gn-ui-geo-data-badge>\n <gn-ui-metadata-quality\n class=\"flex items-center\"\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div *ngIf=\"size !== 'XS'\" data-cy=\"recordFav\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n\n <div class=\"grow flex flex-col gap-2\">\n <div\n class=\"font-medium text-title group-hover:text-primary\"\n [title]=\"record.title\"\n >\n <h4\n class=\"mr-6 overflow-hidden\"\n [ngClass]=\"getTitleClass()\"\n data-cy=\"recordTitle\"\n [title]=\"record.title\"\n >\n {{ record.title }}\n </h4>\n </div>\n <div\n *ngIf=\"size === 'L'\"\n class=\"mr-6 text-xs text-gray-900 line-clamp-2 overflow-hidden\"\n data-cy=\"recordAbstract\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n </div>\n\n <div\n data-cy=\"recordOrg\"\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n class=\"flex items-center justify-evenly bg-gray-50 rounded-lg h-[53px] px-2\"\n >\n <div class=\"flex items-center flex-1 min-w-0\">\n <div\n class=\"w-[45px] h-[45px] rounded-lg overflow-hidden shrink-0 mr-3\"\n >\n <gn-ui-thumbnail\n [thumbnailUrl]=\"\n record.ownerOrganization?.logoUrl?.toString() || ''\n \"\n [fit]=\"'contain'\"\n class=\"w-full h-full rounded-lg\"\n ></gn-ui-thumbnail>\n </div>\n <div *ngIf=\"organization?.name\" class=\"flex-1 w-0 overflow-hidden\">\n <div\n class=\"text-xs text-black font-normal leading-tight truncate\"\n translate\n >\n record.card.metadata.contact\n </div>\n <div\n data-cy=\"recordOrgName\"\n class=\"text-xl text-primary-black font-medium truncate\"\n >\n {{ organization.name }}\n </div>\n </div>\n </div>\n <div *ngIf=\"size === 'L'\" class=\"ml-2 flex space-x-2\">\n <div *ngIf=\"organization?.website\" class=\"flex\">\n <button\n [title]=\"organization.website\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n (click)=\"openExternalUrl($event, organization.website)\"\n >\n <ng-icon name=\"iconoirInternet\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.email\" class=\"flex\">\n <button\n [title]=\"contacts[0].email\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n data-cy=\"contact-email\"\n (click)=\"openMailto($event, contacts[0].email)\"\n >\n <ng-icon name=\"matEmailOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.phone\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].phone)\"\n >\n <ng-icon name=\"matPhoneOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.address\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].address)\"\n >\n <ng-icon name=\"matLocationOnOutline\"></ng-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</a>\n" }]
|
|
29388
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { record: [{
|
|
29389
|
+
type: Input
|
|
29390
|
+
}], linkTarget: [{
|
|
29391
|
+
type: Input
|
|
29392
|
+
}], linkHref: [{
|
|
29393
|
+
type: Input
|
|
29394
|
+
}], metadataQualityDisplay: [{
|
|
29395
|
+
type: Input
|
|
29396
|
+
}], favoriteTemplate: [{
|
|
29397
|
+
type: Input
|
|
29398
|
+
}], size: [{
|
|
29399
|
+
type: Input
|
|
29400
|
+
}], mdSelect: [{
|
|
29401
|
+
type: Output
|
|
29402
|
+
}] } });
|
|
29403
|
+
|
|
29015
29404
|
class RecordPreviewRowComponent extends RecordPreviewComponent {
|
|
29016
29405
|
constructor(elementRef) {
|
|
29017
29406
|
super(elementRef);
|
|
29018
29407
|
this.elementRef = elementRef;
|
|
29019
29408
|
}
|
|
29020
29409
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordPreviewRowComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29021
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordPreviewRowComponent, selector: "gn-ui-record-preview-row", usesInheritance: true, ngImport: i0, template: "<
|
|
29410
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordPreviewRowComponent, selector: "gn-ui-record-preview-row", usesInheritance: true, ngImport: i0, template: "<gn-ui-internal-link-card\n [linkHref]=\"linkHref\"\n [linkTarget]=\"linkTarget\"\n [record]=\"record\"\n [favoriteTemplate]=\"favoriteTemplate\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n (mdSelect)=\"mdSelect.emit($event)\"\n size=\"L\"\n>\n</gn-ui-internal-link-card>\n", styles: [".limit-organisation-with-quality{max-width:calc(100% - 170px)}\n"], dependencies: [{ kind: "component", type: InternalLinkCardComponent, selector: "gn-ui-internal-link-card", inputs: ["record", "linkTarget", "linkHref", "metadataQualityDisplay", "favoriteTemplate", "size"], outputs: ["mdSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29022
29411
|
}
|
|
29023
29412
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordPreviewRowComponent, decorators: [{
|
|
29024
29413
|
type: Component,
|
|
29025
|
-
args: [{ selector: 'gn-ui-record-preview-row', changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
29414
|
+
args: [{ selector: 'gn-ui-record-preview-row', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-internal-link-card\n [linkHref]=\"linkHref\"\n [linkTarget]=\"linkTarget\"\n [record]=\"record\"\n [favoriteTemplate]=\"favoriteTemplate\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n (mdSelect)=\"mdSelect.emit($event)\"\n size=\"L\"\n>\n</gn-ui-internal-link-card>\n", styles: [".limit-organisation-with-quality{max-width:calc(100% - 170px)}\n"] }]
|
|
29026
29415
|
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
29027
29416
|
|
|
29028
29417
|
class RecordPreviewTextComponent extends RecordPreviewComponent {
|
|
@@ -29056,46 +29445,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29056
29445
|
type: Input
|
|
29057
29446
|
}] } });
|
|
29058
29447
|
|
|
29059
|
-
var KindConfig;
|
|
29060
|
-
(function (KindConfig) {
|
|
29061
|
-
KindConfig["all"] = "iconoirAppleWallet";
|
|
29062
|
-
KindConfig["dataset"] = "iconoirAppleShortcuts";
|
|
29063
|
-
KindConfig["service"] = "iconoirCode";
|
|
29064
|
-
KindConfig["reuse"] = "iconoirCreditCard";
|
|
29065
|
-
})(KindConfig || (KindConfig = {}));
|
|
29066
|
-
class KindBadgeComponent {
|
|
29067
|
-
constructor() {
|
|
29068
|
-
this.hasProjectedContent = false;
|
|
29069
|
-
}
|
|
29070
|
-
get iconKind() {
|
|
29071
|
-
return KindConfig[this.kind] || KindConfig.dataset;
|
|
29072
|
-
}
|
|
29073
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KindBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29074
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: KindBadgeComponent, isStandalone: true, selector: "gn-ui-kind-badge", inputs: { contentTemplate: "contentTemplate", kind: "kind" }, ngImport: i0, template: "<ng-icon [name]=\"iconKind\" class=\"mr-1\"></ng-icon>\n\n<ng-container *ngIf=\"contentTemplate; else defaultContent\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #defaultContent>\n {{ kind | translate }}\n</ng-template>\n", styles: [":host gn-ui-badge ng-icon{font-size:1.2rem;width:1.2rem;height:1.2rem;transform:translateY(-2px)}\n"], dependencies: [{ kind: "ngmodule", type: NgIconsModule }, { kind: "component", type: i2$2.NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], viewProviders: [
|
|
29075
|
-
provideIcons({
|
|
29076
|
-
iconoirAppleWallet,
|
|
29077
|
-
iconoirAppleShortcuts,
|
|
29078
|
-
iconoirCode,
|
|
29079
|
-
iconoirCreditCard,
|
|
29080
|
-
}),
|
|
29081
|
-
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29082
|
-
}
|
|
29083
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KindBadgeComponent, decorators: [{
|
|
29084
|
-
type: Component,
|
|
29085
|
-
args: [{ selector: 'gn-ui-kind-badge', viewProviders: [
|
|
29086
|
-
provideIcons({
|
|
29087
|
-
iconoirAppleWallet,
|
|
29088
|
-
iconoirAppleShortcuts,
|
|
29089
|
-
iconoirCode,
|
|
29090
|
-
iconoirCreditCard,
|
|
29091
|
-
}),
|
|
29092
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIconsModule, CommonModule, BadgeComponent, TranslateModule], template: "<ng-icon [name]=\"iconKind\" class=\"mr-1\"></ng-icon>\n\n<ng-container *ngIf=\"contentTemplate; else defaultContent\">\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #defaultContent>\n {{ kind | translate }}\n</ng-template>\n", styles: [":host gn-ui-badge ng-icon{font-size:1.2rem;width:1.2rem;height:1.2rem;transform:translateY(-2px)}\n"] }]
|
|
29093
|
-
}], propDecorators: { contentTemplate: [{
|
|
29094
|
-
type: Input
|
|
29095
|
-
}], kind: [{
|
|
29096
|
-
type: Input
|
|
29097
|
-
}] } });
|
|
29098
|
-
|
|
29099
29448
|
class ResultsHitsSearchKindComponent {
|
|
29100
29449
|
constructor() {
|
|
29101
29450
|
this.selected = [];
|
|
@@ -29130,11 +29479,11 @@ class ResultsHitsSearchKindComponent {
|
|
|
29130
29479
|
return this.selected.length === 0 && choiceValue === 'all';
|
|
29131
29480
|
}
|
|
29132
29481
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsSearchKindComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29133
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsSearchKindComponent, selector: "gn-ui-results-hits-search-kind", inputs: { selected: "selected", choices: "choices" }, outputs: { selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n", dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InlineFilterComponent, selector: "gn-ui-inline-filter", inputs: ["choices", "selected"], outputs: ["selectValues"] }, { kind: "component", type: KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["contentTemplate", "kind"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29482
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsHitsSearchKindComponent, selector: "gn-ui-results-hits-search-kind", inputs: { selected: "selected", choices: "choices" }, outputs: { selectionChanged: "selectionChanged" }, usesOnChanges: true, ngImport: i0, template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [styling]=\"'custom'\"\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n", dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: InlineFilterComponent, selector: "gn-ui-inline-filter", inputs: ["choices", "selected"], outputs: ["selectValues"] }, { kind: "component", type: KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["styling", "contentTemplate", "kind"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29134
29483
|
}
|
|
29135
29484
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsHitsSearchKindComponent, decorators: [{
|
|
29136
29485
|
type: Component,
|
|
29137
|
-
args: [{ selector: 'gn-ui-results-hits-search-kind', template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n" }]
|
|
29486
|
+
args: [{ selector: 'gn-ui-results-hits-search-kind', template: "<gn-ui-inline-filter\n [choices]=\"availableChoices\"\n [selected]=\"selected\"\n (selectValues)=\"onSelectedValues($event)\"\n>\n <ng-template let-choice>\n <gn-ui-kind-badge\n [styling]=\"'custom'\"\n [kind]=\"choice.value\"\n [contentTemplate]=\"customTemplate\"\n class=\"gn-ui-btn-outline rounded-md py-2 px-2 border-gray-400 cursor-pointer focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors bg-transparent hover:text-primary-darker focus:text-primary-darker active:text-primary-black\"\n [ngClass]=\"{\n '!bg-primary-lightest hover:bg-primary-lightest':\n isSelectedChoice(choice.value) || isAllChoice(choice.value),\n }\"\n >\n <ng-template #customTemplate>\n {{ 'search.filters.recordKind.' + choice.value | translate\n }}<span class=\"ml-1\" *ngIf=\"isSelectedChoice(choice.value)\"\n >({{ choice.count }})</span\n >\n </ng-template>\n </gn-ui-kind-badge>\n </ng-template>\n</gn-ui-inline-filter>\n" }]
|
|
29138
29487
|
}], propDecorators: { selected: [{
|
|
29139
29488
|
type: Input
|
|
29140
29489
|
}], choices: [{
|
|
@@ -29184,7 +29533,7 @@ class ResultsLayoutConfigItem {
|
|
|
29184
29533
|
const RESULTS_LAYOUT_CONFIG = new InjectionToken('results-layout.config');
|
|
29185
29534
|
const DEFAULT_RESULTS_LAYOUT_CONFIG = {
|
|
29186
29535
|
CARD: new ResultsLayoutConfigItem(RecordPreviewCardComponent, '', 'height: 24em;', 'grid md:grid-cols-2 lg:grid-cols-4 gap-4 p-4'),
|
|
29187
|
-
ROW: new ResultsLayoutConfigItem(RecordPreviewRowComponent, '
|
|
29536
|
+
ROW: new ResultsLayoutConfigItem(RecordPreviewRowComponent, 'py-2', '', 'grid grid-cols-1 divide-y divide-gray-100'),
|
|
29188
29537
|
FEED: new ResultsLayoutConfigItem(RecordPreviewFeedComponent, 'p-0', undefined, 'gap-0 p-0'),
|
|
29189
29538
|
LIST: new ResultsLayoutConfigItem(RecordPreviewListComponent),
|
|
29190
29539
|
TEXT: new ResultsLayoutConfigItem(RecordPreviewTextComponent),
|
|
@@ -29246,11 +29595,11 @@ class ResultsListComponent {
|
|
|
29246
29595
|
this.mdSelect = new EventEmitter();
|
|
29247
29596
|
}
|
|
29248
29597
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29249
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsListComponent, selector: "gn-ui-results-list", inputs: { records: "records", layoutConfig: "layoutConfig", favoriteTemplate: "favoriteTemplate", recordUrlGetter: "recordUrlGetter", metadataQualityDisplay: "metadataQualityDisplay" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<ng-container>\n <div [ngClass]=\"layoutConfig.containerClass\">\n <div\n [ngClass]=\"layoutConfig.itemClass\"\n [style]=\"layoutConfig.itemStyle\"\n *ngFor=\"let record of records\"\n >\n <gn-ui-results-list-item\n [record]=\"record\"\n [layoutConfig]=\"layoutConfig\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n (mdSelect)=\"mdSelect.emit($event)\"\n [favoriteTemplate]=\"favoriteTemplate\"\n [linkHref]=\"recordUrlGetter(record)\"\n ></gn-ui-results-list-item>\n </div>\n </div>\n</ng-container>\n\n<!--\n<ng-template #block>\n <div class=\"grid md:grid-cols-2 lg:grid-cols-4 gap-4 p-4\">\n <gn-ui-record-preview-card\n *ngFor=\"let record of records\"\n [record]=\"record\"\n (mdSelect)=\"mdSelect.emit($event)\"\n linkTarget=\"_blank\"\n style=\"height: 24em\"\n ></gn-ui-record-preview-card>\n </div>\n</ng-template>\n-->\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ResultsListItemComponent, selector: "gn-ui-results-list-item", inputs: ["layoutConfig", "record", "favoriteTemplate", "metadataQualityDisplay", "linkHref"], outputs: ["mdSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29598
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsListComponent, selector: "gn-ui-results-list", inputs: { records: "records", layoutConfig: "layoutConfig", favoriteTemplate: "favoriteTemplate", recordUrlGetter: "recordUrlGetter", metadataQualityDisplay: "metadataQualityDisplay" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<ng-container>\n <div [ngClass]=\"layoutConfig.containerClass\">\n <div\n [ngClass]=\"layoutConfig.itemClass\"\n [style]=\"layoutConfig.itemStyle\"\n *ngFor=\"let record of records\"\n >\n <gn-ui-results-list-item\n [attr.data-cy]=\"record.uniqueIdentifier\"\n [record]=\"record\"\n [layoutConfig]=\"layoutConfig\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n (mdSelect)=\"mdSelect.emit($event)\"\n [favoriteTemplate]=\"favoriteTemplate\"\n [linkHref]=\"recordUrlGetter(record)\"\n ></gn-ui-results-list-item>\n </div>\n </div>\n</ng-container>\n\n<!--\n<ng-template #block>\n <div class=\"grid md:grid-cols-2 lg:grid-cols-4 gap-4 p-4\">\n <gn-ui-record-preview-card\n *ngFor=\"let record of records\"\n [record]=\"record\"\n (mdSelect)=\"mdSelect.emit($event)\"\n linkTarget=\"_blank\"\n style=\"height: 24em\"\n ></gn-ui-record-preview-card>\n </div>\n</ng-template>\n-->\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ResultsListItemComponent, selector: "gn-ui-results-list-item", inputs: ["layoutConfig", "record", "favoriteTemplate", "metadataQualityDisplay", "linkHref"], outputs: ["mdSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29250
29599
|
}
|
|
29251
29600
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListComponent, decorators: [{
|
|
29252
29601
|
type: Component,
|
|
29253
|
-
args: [{ selector: 'gn-ui-results-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\n <div [ngClass]=\"layoutConfig.containerClass\">\n <div\n [ngClass]=\"layoutConfig.itemClass\"\n [style]=\"layoutConfig.itemStyle\"\n *ngFor=\"let record of records\"\n >\n <gn-ui-results-list-item\n [record]=\"record\"\n [layoutConfig]=\"layoutConfig\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n (mdSelect)=\"mdSelect.emit($event)\"\n [favoriteTemplate]=\"favoriteTemplate\"\n [linkHref]=\"recordUrlGetter(record)\"\n ></gn-ui-results-list-item>\n </div>\n </div>\n</ng-container>\n\n<!--\n<ng-template #block>\n <div class=\"grid md:grid-cols-2 lg:grid-cols-4 gap-4 p-4\">\n <gn-ui-record-preview-card\n *ngFor=\"let record of records\"\n [record]=\"record\"\n (mdSelect)=\"mdSelect.emit($event)\"\n linkTarget=\"_blank\"\n style=\"height: 24em\"\n ></gn-ui-record-preview-card>\n </div>\n</ng-template>\n-->\n" }]
|
|
29602
|
+
args: [{ selector: 'gn-ui-results-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\n <div [ngClass]=\"layoutConfig.containerClass\">\n <div\n [ngClass]=\"layoutConfig.itemClass\"\n [style]=\"layoutConfig.itemStyle\"\n *ngFor=\"let record of records\"\n >\n <gn-ui-results-list-item\n [attr.data-cy]=\"record.uniqueIdentifier\"\n [record]=\"record\"\n [layoutConfig]=\"layoutConfig\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n (mdSelect)=\"mdSelect.emit($event)\"\n [favoriteTemplate]=\"favoriteTemplate\"\n [linkHref]=\"recordUrlGetter(record)\"\n ></gn-ui-results-list-item>\n </div>\n </div>\n</ng-container>\n\n<!--\n<ng-template #block>\n <div class=\"grid md:grid-cols-2 lg:grid-cols-4 gap-4 p-4\">\n <gn-ui-record-preview-card\n *ngFor=\"let record of records\"\n [record]=\"record\"\n (mdSelect)=\"mdSelect.emit($event)\"\n linkTarget=\"_blank\"\n style=\"height: 24em\"\n ></gn-ui-record-preview-card>\n </div>\n</ng-template>\n-->\n" }]
|
|
29254
29603
|
}], propDecorators: { records: [{
|
|
29255
29604
|
type: Input
|
|
29256
29605
|
}], layoutConfig: [{
|
|
@@ -29306,7 +29655,7 @@ class ApiCardComponent {
|
|
|
29306
29655
|
}
|
|
29307
29656
|
}
|
|
29308
29657
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29309
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink", size: "size" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div class=\"flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "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: MatTooltipModule }, { kind: "directive", type:
|
|
29658
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ApiCardComponent, isStandalone: true, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink", size: "size" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex justify-between rounded filter overflow-hidden card-shadow\"\n [ngClass]=\"cardClass\"\n>\n <ng-container *ngIf=\"size !== 'S'\">\n <div class=\"flex-1 min-w-0\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div class=\"flex items-center min-w-[32px]\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #buttons>\n <div class=\"flex flex-row gap-2\">\n <gn-ui-copy-text-button\n [text]=\"link.url\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n class=\"border border-gray-300 rounded-lg pt-1 px-2 h-[34px]\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n class=\"gn-ui-card-icon\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText,\n }\"\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n (click)=\"openRecordApiFormPanel()\"\n >\n <ng-icon\n class=\"pointer-events-none align-middle card-icon\"\n name=\"iconoirSettings\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive,\n }\"\n ></ng-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template #content>\n <div class=\"flex-1 min-w-0\">\n <div class=\"gn-ui-card-title\">\n {{ link.description || link.name }}\n </div>\n <div class=\"gn-ui-card-detail\">\n {{ link.name }}\n </div>\n </div>\n <div class=\"flex flex-row justify-between\">\n <div class=\"flex flex-row gap-2.5 items-center pt-1\">\n <span\n *ngIf=\"link.accessServiceProtocol !== 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <span\n *ngIf=\"link.accessServiceProtocol === 'GPFDL'\"\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive,\n }\"\n translate\n >\n record.metadata.api.gpfdl</span\n >\n </div>\n <div *ngIf=\"size === 'S'\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "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: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [
|
|
29310
29659
|
provideIcons({
|
|
29311
29660
|
iconoirSettings,
|
|
29312
29661
|
}),
|
|
@@ -29362,13 +29711,13 @@ class ConfirmationDialogComponent {
|
|
|
29362
29711
|
onCancel() {
|
|
29363
29712
|
this.dialogRef.close(false);
|
|
29364
29713
|
}
|
|
29365
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i1$
|
|
29366
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ConfirmationDialogComponent, isStandalone: true, selector: "gn-ui-confirmation-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>{{ data.message }}</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n cdkFocusInitial\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$
|
|
29714
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmationDialogComponent, deps: [{ token: i1$a.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29715
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ConfirmationDialogComponent, isStandalone: true, selector: "gn-ui-confirmation-dialog", ngImport: i0, template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>{{ data.message }}</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n cdkFocusInitial\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$a.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$a.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$a.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29367
29716
|
}
|
|
29368
29717
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmationDialogComponent, decorators: [{
|
|
29369
29718
|
type: Component,
|
|
29370
29719
|
args: [{ selector: 'gn-ui-confirmation-dialog', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatDialogModule, ButtonComponent], template: "<h1 mat-dialog-title>{{ data.title }}</h1>\n<div mat-dialog-content>{{ data.message }}</div>\n<div mat-dialog-actions>\n <gn-ui-button (buttonClick)=\"onCancel()\">{{ data.cancelText }}</gn-ui-button>\n <gn-ui-button\n (buttonClick)=\"onConfirm()\"\n cdkFocusInitial\n class=\"ml-2\"\n data-cy=\"confirm-button\"\n >{{ data.confirmText }}</gn-ui-button\n >\n</div>\n" }]
|
|
29371
|
-
}], ctorParameters: () => [{ type: i1$
|
|
29720
|
+
}], ctorParameters: () => [{ type: i1$a.MatDialogRef }, { type: undefined, decorators: [{
|
|
29372
29721
|
type: Inject,
|
|
29373
29722
|
args: [MAT_DIALOG_DATA]
|
|
29374
29723
|
}] }] });
|
|
@@ -29774,7 +30123,7 @@ class ImageInputComponent {
|
|
|
29774
30123
|
provideNgIconsConfig({
|
|
29775
30124
|
size: '1.5rem',
|
|
29776
30125
|
}),
|
|
29777
|
-
], ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-80 h-full flex flex-col gap-2\">\n <gn-ui-image-overlay-preview class=\"h-48\" [imageUrl]=\"previewUrl\">\n </gn-ui-image-overlay-preview>\n <gn-ui-text-input\n *ngIf=\"showAltTextInput\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText ?? ''\"\n (valueChange)=\"handleAltTextChange($event)\"\n extraClass=\"gn-ui-editor-textarea\"\n ></gn-ui-text-input>\n <div class=\"flex flex-row gap-2 mt-2\">\n <gn-ui-button\n type=\"gray\"\n (buttonClick)=\"handleDelete()\"\n data-cy=\"delete-image\"\n >\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirBin\"></ng-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n type=\"gray\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"me-1 text-primary\"></ng-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=\"flex-1 border-2 border-dashed rounded-lg p-6 flex flex-col items-center justify-center gap-4 transition-colors duration-100\"\n [ngClass]=\"{\n 'border-primary-lighter bg-primary-white': dragFilesOver,\n 'border-gray-300': !dragFilesOver,\n 'cursor-pointer hover:border-gray-500': !getIsActionBlocked(),\n 'cursor-not-allowed': disabled,\n }\"\n [attr.tabindex]=\"getIsActionBlocked() ? null : 0\"\n (keydown.enter)=\"fileInput.click()\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div\n class=\"w-14 h-14 rounded-md bg-gray-50 grid\"\n *ngIf=\"!isUploadInProgress && !imageFileError\"\n >\n <ng-icon\n *ngIf=\"!dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirMediaImage\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirFramePlusIn\"\n ></ng-icon>\n </div>\n\n <div\n *ngIf=\"isUploadInProgress && !imageFileError\"\n class=\"w-14 h-14 grid items-center justify-center relative\"\n >\n <div class=\"text-gray-100 absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"100\"\n ></mat-progress-spinner>\n </div>\n <div class=\"text-primary absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n </div>\n <span class=\"text-sm text-main font-bold\">{{ uploadProgress }}%</span>\n </div>\n\n <div class=\"w-14 h-14 rounded-md bg-gray-50 grid\" *ngIf=\"imageFileError\">\n <ng-icon\n name=\"iconoirMediaImageXmark\"\n class=\"place-self-center text-rose-500\"\n data-cy=\"imgErrorIcon\"\n ></ng-icon>\n </div>\n\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\" data-cy=\"imgInputMsgPrimary\">\n {{ getPrimaryText() | translate }}\n </p>\n <p\n class=\"text-sm\"\n data-cy=\"imgInputMsgSecondary\"\n [class]=\"\n isUploadInProgress\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick($event)\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n #fileInput\n accept=\"image/*\"\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n />\n </label>\n\n <div *ngIf=\"!showUrlInput\" class=\"flex-none mt-2\">\n <gn-ui-button\n data-cy=\"imgUrlBtn\"\n (buttonClick)=\"displayUrlInput()\"\n type=\"gray\"\n [disabled]=\"disabled\"\n [extraClass]=\"disabled && 'cursor-not-allowed'\"\n >\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirLink\"></ng-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n\n <gn-ui-url-input\n *ngIf=\"showUrlInput\"\n class=\"mt-3.5\"\n data-cy=\"imgUrlInput\"\n (uploadClick)=\"downloadUrl($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n >\n </gn-ui-url-input>\n </div>\n</ng-template>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$
|
|
30126
|
+
], ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-80 h-full flex flex-col gap-2\">\n <gn-ui-image-overlay-preview class=\"h-48\" [imageUrl]=\"previewUrl\">\n </gn-ui-image-overlay-preview>\n <gn-ui-text-input\n *ngIf=\"showAltTextInput\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText ?? ''\"\n (valueChange)=\"handleAltTextChange($event)\"\n extraClass=\"gn-ui-editor-textarea\"\n ></gn-ui-text-input>\n <div class=\"flex flex-row gap-2 mt-2\">\n <gn-ui-button\n type=\"gray\"\n (buttonClick)=\"handleDelete()\"\n data-cy=\"delete-image\"\n >\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirBin\"></ng-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n type=\"gray\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <ng-icon name=\"iconoirPlus\" class=\"me-1 text-primary\"></ng-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=\"flex-1 border-2 border-dashed rounded-lg p-6 flex flex-col items-center justify-center gap-4 transition-colors duration-100\"\n [ngClass]=\"{\n 'border-primary-lighter bg-primary-white': dragFilesOver,\n 'border-gray-300': !dragFilesOver,\n 'cursor-pointer hover:border-gray-500': !getIsActionBlocked(),\n 'cursor-not-allowed': disabled,\n }\"\n [attr.tabindex]=\"getIsActionBlocked() ? null : 0\"\n (keydown.enter)=\"fileInput.click()\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div\n class=\"w-14 h-14 rounded-md bg-gray-50 grid\"\n *ngIf=\"!isUploadInProgress && !imageFileError\"\n >\n <ng-icon\n *ngIf=\"!dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirMediaImage\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"dragFilesOver\"\n class=\"place-self-center text-primary\"\n name=\"iconoirFramePlusIn\"\n ></ng-icon>\n </div>\n\n <div\n *ngIf=\"isUploadInProgress && !imageFileError\"\n class=\"w-14 h-14 grid items-center justify-center relative\"\n >\n <div class=\"text-gray-100 absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"100\"\n ></mat-progress-spinner>\n </div>\n <div class=\"text-primary absolute\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n mode=\"determinate\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n </div>\n <span class=\"text-sm text-main font-bold\">{{ uploadProgress }}%</span>\n </div>\n\n <div class=\"w-14 h-14 rounded-md bg-gray-50 grid\" *ngIf=\"imageFileError\">\n <ng-icon\n name=\"iconoirMediaImageXmark\"\n class=\"place-self-center text-rose-500\"\n data-cy=\"imgErrorIcon\"\n ></ng-icon>\n </div>\n\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\" data-cy=\"imgInputMsgPrimary\">\n {{ getPrimaryText() | translate }}\n </p>\n <p\n class=\"text-sm\"\n data-cy=\"imgInputMsgSecondary\"\n [class]=\"\n isUploadInProgress\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick($event)\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n #fileInput\n accept=\"image/*\"\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n />\n </label>\n\n <div *ngIf=\"!showUrlInput\" class=\"flex-none mt-2\">\n <gn-ui-button\n data-cy=\"imgUrlBtn\"\n (buttonClick)=\"displayUrlInput()\"\n type=\"gray\"\n [disabled]=\"disabled\"\n [extraClass]=\"disabled && 'cursor-not-allowed'\"\n >\n <ng-icon class=\"me-1 text-primary\" name=\"iconoirLink\"></ng-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n\n <gn-ui-url-input\n *ngIf=\"showUrlInput\"\n class=\"mt-3.5\"\n data-cy=\"imgUrlInput\"\n (uploadClick)=\"downloadUrl($event)\"\n [disabled]=\"isUploadInProgress || disabled\"\n >\n </gn-ui-url-input>\n </div>\n</ng-template>\n", styles: [":host{--gn-ui-button-padding: 8px 8px;--gn-ui-button-rounded: 8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$4.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" }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: ["imageUrl"], outputs: ["isPlaceholderShown"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
29778
30127
|
}
|
|
29779
30128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageInputComponent, decorators: [{
|
|
29780
30129
|
type: Component,
|
|
@@ -29946,7 +30295,7 @@ class MetadataContactComponent {
|
|
|
29946
30295
|
this.organizationClick.emit(this.shownOrganization);
|
|
29947
30296
|
}
|
|
29948
30297
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29949
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataContactComponent, isStandalone: true, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div
|
|
30298
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataContactComponent, isStandalone: true, selector: "gn-ui-metadata-contact", inputs: { metadata: "metadata" }, outputs: { organizationClick: "organizationClick", contactClick: "contactClick" }, ngImport: i0, template: "<div\n class=\"py-5 px-5 rounded bg-gray-100 text-black\"\n data-cy=\"metadata-organization\"\n>\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-base font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid grid-cols-1 gap-1\">\n <div class=\"flex\">\n <div\n class=\"font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name-link\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n </div>\n <div class=\"grid grid-cols-1 gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matCallOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex gap-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"break-all text-sm hover:underline\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matPersonOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], viewProviders: [
|
|
29950
30299
|
provideIcons({
|
|
29951
30300
|
matOpenInNew,
|
|
29952
30301
|
matCallOutline,
|
|
@@ -29966,7 +30315,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29966
30315
|
matPersonOutline,
|
|
29967
30316
|
matLocationOnOutline,
|
|
29968
30317
|
}),
|
|
29969
|
-
], template: "<div
|
|
30318
|
+
], template: "<div\n class=\"py-5 px-5 rounded bg-gray-100 text-black\"\n data-cy=\"metadata-organization\"\n>\n <div class=\"grid gap-3 overflow-hidden\">\n <div>\n <p class=\"text-base font-medium\" translate>record.metadata.contact</p>\n </div>\n <div\n *ngIf=\"shownOrganization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"shownOrganization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grid grid-cols-1 gap-1\">\n <div class=\"flex\">\n <div\n class=\"font-title text-21 mr-2 cursor-pointer hover:underline\"\n (click)=\"onOrganizationClick()\"\n data-cy=\"organization-name-link\"\n >\n {{ shownOrganization?.name }}\n </div>\n </div>\n <div *ngIf=\"shownOrganization?.website\">\n <a\n [href]=\"shownOrganization.website\"\n target=\"_blank\"\n class=\"contact-website text-sm cursor-pointer hover:underline transition-all\"\n >{{ shownOrganization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n </div>\n <div class=\"grid grid-cols-1 gap-5 py-3 overflow-hidden\">\n <div *ngIf=\"contacts[0]?.phone\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matCallOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">{{ contacts[0].phone }}</p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.email\">\n <div class=\"flex gap-2\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"contacts.length\"\n [href]=\"'mailto:' + contacts[0].email\"\n class=\"break-all text-sm hover:underline\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ contacts[0].email }}</a\n >\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.firstName || contacts[0]?.lastName\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matPersonOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p class=\"text-sm\">\n {{ contacts[0]?.firstName || '' }}\n {{ contacts[0]?.lastName || '' }}\n </p>\n </div>\n </div>\n </div>\n <div *ngIf=\"contacts[0]?.address\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matLocationOnOutline\"\n ></ng-icon>\n <div class=\"flex flex-col ml-2\">\n <p *ngFor=\"let addressPart of address\" class=\"text-sm\">\n {{ addressPart }}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
29970
30319
|
}], propDecorators: { metadata: [{
|
|
29971
30320
|
type: Input
|
|
29972
30321
|
}], organizationClick: [{
|
|
@@ -30210,19 +30559,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30210
30559
|
|
|
30211
30560
|
const geometryKeys = ['geometry', 'the_geom'];
|
|
30212
30561
|
class FeatureDetailComponent {
|
|
30562
|
+
constructor() {
|
|
30563
|
+
this._featureAttributes = [];
|
|
30564
|
+
}
|
|
30565
|
+
set featureCatalog(value) {
|
|
30566
|
+
if (value)
|
|
30567
|
+
this._featureAttributes = value.featureTypes[0].attributes;
|
|
30568
|
+
}
|
|
30213
30569
|
get properties() {
|
|
30214
30570
|
if (!this.feature)
|
|
30215
30571
|
return [];
|
|
30216
|
-
return
|
|
30572
|
+
return this.setProperties();
|
|
30573
|
+
}
|
|
30574
|
+
setProperties() {
|
|
30575
|
+
const properties = Object.keys(this.feature.properties)
|
|
30576
|
+
.filter((p) => !geometryKeys.includes(p))
|
|
30577
|
+
.reduce((acc, p) => {
|
|
30578
|
+
let key = p;
|
|
30579
|
+
if (this._featureAttributes.length) {
|
|
30580
|
+
const matchingAttribute = this._featureAttributes.find((attr) => attr.name === p);
|
|
30581
|
+
if (matchingAttribute && matchingAttribute.code) {
|
|
30582
|
+
key = matchingAttribute.code;
|
|
30583
|
+
}
|
|
30584
|
+
}
|
|
30585
|
+
acc[key] = this.feature.properties[p];
|
|
30586
|
+
return acc;
|
|
30587
|
+
}, {});
|
|
30588
|
+
return properties;
|
|
30217
30589
|
}
|
|
30218
30590
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30219
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureDetailComponent, isStandalone: true, selector: "gn-ui-feature-detail", inputs: { feature: "feature" }, ngImport: i0, template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let
|
|
30591
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureDetailComponent, isStandalone: true, selector: "gn-ui-feature-detail", inputs: { feature: "feature", featureCatalog: "featureCatalog" }, ngImport: i0, template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let prop of properties | keyvalue\">\n <div>{{ prop.key }}</div>\n <div class=\"font-bold\">{{ prop.value }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30220
30592
|
}
|
|
30221
30593
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureDetailComponent, decorators: [{
|
|
30222
30594
|
type: Component,
|
|
30223
|
-
args: [{ selector: 'gn-ui-feature-detail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let
|
|
30595
|
+
args: [{ selector: 'gn-ui-feature-detail', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div *ngIf=\"feature\" class=\"root\">\n <div class=\"property\" *ngFor=\"let prop of properties | keyvalue\">\n <div>{{ prop.key }}</div>\n <div class=\"font-bold\">{{ prop.value }}</div>\n </div>\n</div>\n", styles: [".property{border-bottom:1px solid #f2f2f2;padding-bottom:.625rem;margin-bottom:.625rem;font-size:.75rem}\n"] }]
|
|
30224
30596
|
}], propDecorators: { feature: [{
|
|
30225
30597
|
type: Input
|
|
30598
|
+
}], featureCatalog: [{
|
|
30599
|
+
type: Input
|
|
30226
30600
|
}] } });
|
|
30227
30601
|
|
|
30228
30602
|
class MapLegendComponent {
|
|
@@ -30326,6 +30700,7 @@ class SpatialExtentComponent {
|
|
|
30326
30700
|
style: {
|
|
30327
30701
|
'stroke-color': 'black',
|
|
30328
30702
|
'stroke-width': 2,
|
|
30703
|
+
'fill-color': 'rgba(153, 153, 153, 0.3)',
|
|
30329
30704
|
},
|
|
30330
30705
|
};
|
|
30331
30706
|
const view = await createViewFromLayer(layer);
|
|
@@ -30435,7 +30810,7 @@ class MetadataInfoComponent {
|
|
|
30435
30810
|
return this.dateService.formatDateTime(date);
|
|
30436
30811
|
}
|
|
30437
30812
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MetadataInfoComponent, deps: [{ token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30438
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "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: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
|
|
30813
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MetadataInfoComponent, isStandalone: true, selector: "gn-ui-metadata-info", inputs: { metadata: "metadata", incomplete: "incomplete" }, outputs: { keyword: "keyword" }, ngImport: i0, template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "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: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MaxLinesComponent, selector: "gn-ui-max-lines", inputs: ["maxLines"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: GnUiLinkifyDirective, selector: "[gnUiLinkify]" }, { kind: "component", type: SpatialExtentComponent, selector: "gn-ui-spatial-extent", inputs: ["spatialExtents"] }], viewProviders: [
|
|
30439
30814
|
provideIcons({
|
|
30440
30815
|
matOpenInNew,
|
|
30441
30816
|
matMailOutline: matMailOutline$1,
|
|
@@ -30463,7 +30838,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30463
30838
|
matOpenInNew,
|
|
30464
30839
|
matMailOutline: matMailOutline$1,
|
|
30465
30840
|
}),
|
|
30466
|
-
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
|
|
30841
|
+
], template: "<div class=\"mb-6 md-description sm:mb-4 sm:pr-16\">\n <gn-ui-content-ghost\n ghostClass=\"h-[178px]\"\n [showContent]=\"fieldReady('abstract')\"\n >\n <gn-ui-max-lines [maxLines]=\"6\" *ngIf=\"metadata.abstract\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n [textContent]=\"metadata.abstract\"\n ></gn-ui-markdown-parser>\n </div>\n </gn-ui-max-lines>\n </gn-ui-content-ghost>\n\n <p\n class=\"mt-6 mb-3 font-medium text-black text-sm\"\n translate\n *ngIf=\"!fieldReady('keywords') || metadata.keywords?.length\"\n >\n record.metadata.keywords\n </p>\n\n <gn-ui-content-ghost\n ghostClass=\"h-[31px] w-3/4\"\n [showContent]=\"fieldReady('keywords')\"\n >\n <div *ngIf=\"metadata.keywords?.length\">\n <div class=\"metadata-info-keywords sm:pb-4 flex flex-wrap gap-2\">\n <gn-ui-badge\n class=\"inline-block lowercase\"\n (click)=\"onKeywordClick(keyword)\"\n [clickable]=\"true\"\n *ngFor=\"let keyword of metadata.keywords\"\n >{{ keyword.label }}</gn-ui-badge\n >\n </div>\n </div>\n </gn-ui-content-ghost>\n</div>\n\n<gn-ui-expandable-panel\n *ngIf=\"\n metadata.licenses ||\n metadata.legalConstraints ||\n metadata.securityConstraints ||\n metadata.otherConstraints\n \"\n [title]=\"'record.metadata.usage' | translate\"\n data-test=\"usage-panel\"\n>\n <div class=\"flex flex-col gap-[10px] mr-4 py-[12px] rounded text-gray-900\">\n <ng-container *ngFor=\"let license of licenses\">\n <div *ngIf=\"license.url; else noUrl\" class=\"text-primary\">\n <a\n [href]=\"license.url\"\n target=\"_blank\"\n class=\"cursor-pointer hover:underline transition-all\"\n >\n {{ license.text }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <ng-template #noUrl>\n <div class=\"text-primary\" gnUiLinkify>\n {{ license.text }}\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"legalConstraints.length\">\n <div class=\"mb-6\">\n <gn-ui-markdown-parser\n *ngFor=\"let constraint of legalConstraints\"\n [textContent]=\"constraint\"\n >\n </gn-ui-markdown-parser>\n </div>\n </ng-container>\n <ng-container *ngIf=\"otherConstraints.length\">\n <div gnUiLinkify *ngFor=\"let constraint of otherConstraints\">\n <span\n translate\n class=\"font-medium text-black text-sm mb-[2px] mt-[16px]\"\n >\n record.metadata.otherConstraints\n </span>\n <div class=\"mb-6\">\n <gn-ui-markdown-parser [textContent]=\"constraint\">\n </gn-ui-markdown-parser>\n </div>\n </div>\n </ng-container>\n\n <span class=\"noUsage\" *ngIf=\"!hasUsage\">\n {{ 'record.metadata.noUsage' | translate }}\n </span>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"\n (metadata.kind === 'dataset' && metadata.lineage) ||\n metadata.resourceUpdated ||\n metadata.updateFrequency ||\n (metadata.kind === 'dataset' && metadata.status)\n \"\n [title]=\"'record.metadata.details' | translate\"\n data-test=\"details-panel\"\n>\n <div *ngIf=\"metadata.lineage\" class=\"text-gray-900 flex flex-col mt-4 gap-2\">\n <p class=\"whitespace-pre-line break-words text-gray-900\" gnUiLinkify>\n {{ metadata.lineage }}\n </p>\n </div>\n <div class=\"flex flex-row gap-6 mt-5 mb-8\" *ngIf=\"resourceContact\">\n <div\n *ngIf=\"resourceContact.organization?.logoUrl?.href\"\n class=\"flex items-center justify-center border-solid border border-gray-300 rounded-md bg-white h-32 overflow-hidden\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"resourceContact.organization.logoUrl.href\"\n fit=\"contain\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-sm font-medium\" translate>record.metadata.producer</p>\n <div\n class=\"text-primary font-title text-21 mr-2 cursor-pointer hover:underline\"\n data-cy=\"organization-name\"\n >\n {{ resourceContact.organization?.name }}\n </div>\n <div *ngIf=\"resourceContact.organization?.website\">\n <a\n [href]=\"resourceContact.organization.website\"\n target=\"_blank\"\n class=\"contact-website text-primary text-sm cursor-pointer hover:underline transition-all\"\n >{{ resourceContact.organization.website }}\n <ng-icon\n class=\"!w-[12px] !h-[12px] !text-[12px] opacity-75 shrink-0\"\n name=\"matOpenInNew\"\n ></ng-icon>\n </a>\n </div>\n <div class=\"mt-4\" *ngIf=\"resourceContact.email\">\n <div class=\"flex\">\n <ng-icon\n class=\"!w-5 !h-5 !text-[20px] opacity-75 shrink-0\"\n name=\"matMailOutline\"\n ></ng-icon>\n <a\n *ngIf=\"resourceContact.email\"\n [href]=\"'mailto:' + resourceContact.email\"\n class=\"text-sm hover:underline ml-2\"\n target=\"_blank\"\n data-cy=\"contact-email\"\n >{{ resourceContact?.email }}</a\n >\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"py-6 px-6 rounded bg-gray-100 grid grid-cols-2 gap-y-6 gap-x-[20px] text-gray-700\"\n >\n <div *ngIf=\"metadata.resourceCreated\">\n <p class=\"text-sm\" translate>record.metadata.creation</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourceCreated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.resourcePublished\">\n <p class=\"text-sm\" translate>record.metadata.publication</p>\n <p class=\"text-primary font-medium mt-1\">\n {{ formatDate(metadata.resourcePublished) }}\n </p>\n </div>\n <div *ngIf=\"updateFrequency\">\n <p class=\"text-sm\" translate>record.metadata.updateFrequency</p>\n <p\n class=\"text-primary font-medium mt-1 updateFrequency\"\n translate\n [translateParams]=\"{ count: updatedTimes }\"\n >\n {{ updateFrequency }}\n </p>\n </div>\n <div *ngIf=\"metadata.otherLanguages?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.languages</p>\n <div class=\"flex flex-row gap-1 flex-wrap\">\n <p\n class=\"text-primary font-medium\"\n translate\n *ngFor=\"let language of metadata.otherLanguages\"\n >\n language.{{ language }}\n </p>\n </div>\n </div>\n <div *ngIf=\"temporalExtent\">\n <p class=\"text-sm\" translate>record.metadata.temporalExtent</p>\n <div class=\"flex flex-row gap-1 mb-1 text-primary font-medium\">\n <p\n *ngIf=\"temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{\n start: temporalExtent.start,\n end: temporalExtent.end,\n }\"\n >\n record.metadata.temporalExtent.fromDateToDate\n </p>\n <p\n *ngIf=\"temporalExtent.start && !temporalExtent.end\"\n translate\n [translateParams]=\"{ start: temporalExtent.start }\"\n >\n record.metadata.temporalExtent.sinceDate\n </p>\n <p\n *ngIf=\"!temporalExtent.start && temporalExtent.end\"\n translate\n [translateParams]=\"{ end: temporalExtent.end }\"\n >\n record.metadata.temporalExtent.untilDate\n </p>\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.kind !== 'dataset' && metadata.spatialExtents\"\n [title]=\"'service.metadata.spatialExtent' | translate\"\n data-test=\"spatial-extent-panel\"\n>\n <gn-ui-spatial-extent\n class=\"flex h-[271px] w-full rounded-lg border border-gray-100 mt-3 mb-6\"\n [spatialExtents]=\"metadata.spatialExtents\"\n ></gn-ui-spatial-extent>\n</gn-ui-expandable-panel>\n<gn-ui-expandable-panel\n *ngIf=\"metadata.landingPage\"\n [title]=\"'service.metadata.other' | translate\"\n data-test=\"other-panel\"\n>\n <div class=\"flex flex-col gap-4 mr-4 py-5 rounded text-gray-700\">\n <div *ngIf=\"metadata.recordUpdated\">\n <p class=\"text-sm\" translate>record.metadata.updatedOn</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.recordUpdated && formatDateTime(metadata.recordUpdated) }}\n </p>\n </div>\n <div *ngIf=\"metadata.landingPage\">\n <p class=\"text-sm\" translate>record.metadata.sheet</p>\n <p class=\"text-primary font-medium\" translate>\n <a [href]=\"metadata.landingPage\" target=\"_blank\">\n <span class=\"break-all\" gnUiLinkify>{{ metadata.landingPage }}</span>\n </a>\n </p>\n </div>\n <div *ngIf=\"metadata.ownerOrganization\">\n <p class=\"text-sm\" translate>record.metadata.owner</p>\n <p class=\"text-primary font-medium\">\n {{ metadata.ownerOrganization.name }}\n </p>\n </div>\n <div *ngIf=\"metadata.uniqueIdentifier\">\n <p class=\"text-sm\" translate>record.metadata.uniqueId</p>\n <div class=\"flex flex-row content-align items-end gap-1\">\n <gn-ui-copy-text-button\n [text]=\"metadata.uniqueIdentifier\"\n [tooltipText]=\"'tooltip.id.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <p class=\"text-primary font-medium\">\n {{ metadata.uniqueIdentifier }}\n </p>\n </div>\n </div>\n <div *ngIf=\"metadata.topics?.length\">\n <p class=\"text-sm mb-1\" translate>record.metadata.topics</p>\n <div class=\"sm:pb-4 sm:pr-16\">\n <gn-ui-badge\n [clickable]=\"false\"\n class=\"inline-block mr-2 mb-2 lowercase\"\n *ngFor=\"let topic of metadata.topics\"\n >{{ topic }}</gn-ui-badge\n >\n </div>\n </div>\n </div>\n</gn-ui-expandable-panel>\n", styles: [".md-description ::ng-deep a{@apply underline text-blue-600 hover:text-blue-800;}.info-grid>:nth-last-child(n+3){padding-bottom:10px;@apply border-b border-gray-300;}:host ::ng-deep gn-ui-copy-text-button button ng-icon{transform:scale(.8)}:host{--gn-ui-badge-background-color: var(--color-primary-white);--gn-ui-badge-text-color: var(--color-primary-darkest)}:host .metadata-info-keywords ::ng-deep gn-ui-badge:hover{--gn-ui-badge-text-color: white}\n"] }]
|
|
30467
30842
|
}], ctorParameters: () => [{ type: DateService }], propDecorators: { metadata: [{
|
|
30468
30843
|
type: Input
|
|
30469
30844
|
}], incomplete: [{
|
|
@@ -30661,6 +31036,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30661
31036
|
|
|
30662
31037
|
class RelatedRecordCardComponent {
|
|
30663
31038
|
constructor() {
|
|
31039
|
+
this.linkHref = null;
|
|
30664
31040
|
this.extraClass = '';
|
|
30665
31041
|
this.baseClasses = [
|
|
30666
31042
|
'w-72',
|
|
@@ -30678,21 +31054,30 @@ class RelatedRecordCardComponent {
|
|
|
30678
31054
|
return `${this.baseClasses} ${this.extraClass}`;
|
|
30679
31055
|
}
|
|
30680
31056
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30681
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RelatedRecordCardComponent, isStandalone: true, selector: "gn-ui-related-record-card", inputs: { record: "record", extraClass: "extraClass" }, ngImport: i0, template: "<
|
|
31057
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RelatedRecordCardComponent, isStandalone: true, selector: "gn-ui-related-record-card", inputs: { linkHref: "linkHref", record: "record", extraClass: "extraClass", favoriteTemplate: "favoriteTemplate", metadataQualityDisplay: "metadataQualityDisplay", size: "size" }, ngImport: i0, template: "<gn-ui-internal-link-card\n [linkHref]=\"linkHref\"\n [linkTarget]=\"'_blank'\"\n [record]=\"record\"\n [favoriteTemplate]=\"favoriteTemplate\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n [size]=\"size\"\n>\n</gn-ui-internal-link-card>\n", styles: [""], dependencies: [{ kind: "component", type: InternalLinkCardComponent, selector: "gn-ui-internal-link-card", inputs: ["record", "linkTarget", "linkHref", "metadataQualityDisplay", "favoriteTemplate", "size"], outputs: ["mdSelect"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: TranslateModule }], viewProviders: [provideIcons({ matOpenInNew })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30682
31058
|
}
|
|
30683
31059
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
30684
31060
|
type: Component,
|
|
30685
31061
|
args: [{ selector: 'gn-ui-related-record-card', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
31062
|
+
InternalLinkCardComponent,
|
|
30686
31063
|
ThumbnailComponent,
|
|
30687
31064
|
RouterLink,
|
|
30688
31065
|
MatTooltipModule,
|
|
30689
31066
|
NgIcon,
|
|
30690
31067
|
TranslateModule,
|
|
30691
|
-
], standalone: true, viewProviders: [provideIcons({ matOpenInNew })], template: "<
|
|
30692
|
-
}], ctorParameters: () => [], propDecorators: {
|
|
31068
|
+
], standalone: true, viewProviders: [provideIcons({ matOpenInNew })], template: "<gn-ui-internal-link-card\n [linkHref]=\"linkHref\"\n [linkTarget]=\"'_blank'\"\n [record]=\"record\"\n [favoriteTemplate]=\"favoriteTemplate\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n [size]=\"size\"\n>\n</gn-ui-internal-link-card>\n" }]
|
|
31069
|
+
}], ctorParameters: () => [], propDecorators: { linkHref: [{
|
|
31070
|
+
type: Input
|
|
31071
|
+
}], record: [{
|
|
30693
31072
|
type: Input
|
|
30694
31073
|
}], extraClass: [{
|
|
30695
31074
|
type: Input
|
|
31075
|
+
}], favoriteTemplate: [{
|
|
31076
|
+
type: Input
|
|
31077
|
+
}], metadataQualityDisplay: [{
|
|
31078
|
+
type: Input
|
|
31079
|
+
}], size: [{
|
|
31080
|
+
type: Input
|
|
30696
31081
|
}] } });
|
|
30697
31082
|
|
|
30698
31083
|
class TimeSincePipe {
|
|
@@ -30753,7 +31138,7 @@ class UserPreviewComponent {
|
|
|
30753
31138
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
30754
31139
|
}
|
|
30755
31140
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30756
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div class=\"w-10 h-10 rounded-full capitalize\" [matTooltip]=\"userFullName\">\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type:
|
|
31141
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div class=\"w-10 h-10 rounded-full capitalize\" [matTooltip]=\"userFullName\">\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30757
31142
|
}
|
|
30758
31143
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
30759
31144
|
type: Component,
|
|
@@ -30835,154 +31220,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
30835
31220
|
type: Input
|
|
30836
31221
|
}] } });
|
|
30837
31222
|
|
|
30838
|
-
marker('record.kind.data');
|
|
30839
|
-
marker('record.kind.reuse');
|
|
30840
|
-
marker('record.kind.service');
|
|
30841
|
-
class InternalLinkCardComponent {
|
|
30842
|
-
set size(value) {
|
|
30843
|
-
this._size = value;
|
|
30844
|
-
this.cardClass = this.sizeClassMap[value] || '';
|
|
30845
|
-
this.thumbnailContainerClass = this.thumbnailSizeClassMap[value] || 'hidden';
|
|
30846
|
-
}
|
|
30847
|
-
get size() {
|
|
30848
|
-
return this._size;
|
|
30849
|
-
}
|
|
30850
|
-
constructor(elementRef) {
|
|
30851
|
-
this.elementRef = elementRef;
|
|
30852
|
-
this.linkHref = null;
|
|
30853
|
-
this.mdSelect = new EventEmitter();
|
|
30854
|
-
this.subscription = new Subscription();
|
|
30855
|
-
this.cardClass = '';
|
|
30856
|
-
this.thumbnailContainerClass = '';
|
|
30857
|
-
this._size = 'M';
|
|
30858
|
-
this.sizeClassMap = {
|
|
30859
|
-
L: 'min-h-[190px] md:w-[992px] py-3 px-3 flex items-start gap-5',
|
|
30860
|
-
M: 'min-h-[140px] md:w-[570px] py-3 px-3 flex items-start gap-4',
|
|
30861
|
-
S: 'min-h-[220px] md:w-[370px] py-3 px-3 flex gap-4',
|
|
30862
|
-
XS: 'min-h-[108px] md:w-[570px] py-3 px-3 flex gap-4',
|
|
30863
|
-
};
|
|
30864
|
-
this.thumbnailSizeClassMap = {
|
|
30865
|
-
L: 'w-[190px] h-[180px] rounded-lg overflow-hidden shrink-0',
|
|
30866
|
-
M: 'w-[110px] h-[140px] rounded-lg overflow-hidden shrink-0',
|
|
30867
|
-
S: 'hidden',
|
|
30868
|
-
XS: 'hidden',
|
|
30869
|
-
};
|
|
30870
|
-
this.titleClassMap = {
|
|
30871
|
-
L: 'text-xl line-clamp-2',
|
|
30872
|
-
M: 'text-base line-clamp-2',
|
|
30873
|
-
S: 'text-base line-clamp-3',
|
|
30874
|
-
XS: 'text-base mt-3 line-clamp-2',
|
|
30875
|
-
};
|
|
30876
|
-
}
|
|
30877
|
-
ngOnInit() {
|
|
30878
|
-
this.abstract = removeWhitespace(stripHtml(this.record?.abstract));
|
|
30879
|
-
this.subscription.add(fromEvent(this.elementRef.nativeElement, 'click').subscribe((event) => {
|
|
30880
|
-
event.preventDefault();
|
|
30881
|
-
propagateToDocumentOnly(event);
|
|
30882
|
-
this.mdSelect.emit(this.record);
|
|
30883
|
-
}));
|
|
30884
|
-
}
|
|
30885
|
-
get organization() {
|
|
30886
|
-
return this.record.ownerOrganization;
|
|
30887
|
-
}
|
|
30888
|
-
get contacts() {
|
|
30889
|
-
return ((this.record.kind === 'dataset'
|
|
30890
|
-
? this.record.contactsForResource
|
|
30891
|
-
: this.record.contacts) || []);
|
|
30892
|
-
}
|
|
30893
|
-
getTitleClass() {
|
|
30894
|
-
return (this.titleClassMap[this._size] +
|
|
30895
|
-
' ' +
|
|
30896
|
-
(this.record.ownerOrganization?.name ? '' : 'mt-3') || '');
|
|
30897
|
-
}
|
|
30898
|
-
openExternalUrl(event, url) {
|
|
30899
|
-
event.stopPropagation();
|
|
30900
|
-
window.open(url, '_blank');
|
|
30901
|
-
}
|
|
30902
|
-
openMailto(event, email) {
|
|
30903
|
-
event.stopPropagation();
|
|
30904
|
-
window.open(`mailto:${email}`, '_blank');
|
|
30905
|
-
}
|
|
30906
|
-
copyToClipboard(event, text) {
|
|
30907
|
-
event.stopPropagation();
|
|
30908
|
-
navigator.clipboard.writeText(text);
|
|
30909
|
-
}
|
|
30910
|
-
get shouldShowThumbnail() {
|
|
30911
|
-
return this.size === 'L' || this.size === 'M';
|
|
30912
|
-
}
|
|
30913
|
-
getKindInfo() {
|
|
30914
|
-
if (!this.record?.kind)
|
|
30915
|
-
return { text: '', icon: '' };
|
|
30916
|
-
switch (this.record.kind.toLowerCase()) {
|
|
30917
|
-
case 'dataset':
|
|
30918
|
-
return { text: 'record.kind.data', icon: 'iconoirDatabase' };
|
|
30919
|
-
case 'reuse':
|
|
30920
|
-
return { text: 'record.kind.reuse', icon: 'iconoirMap' };
|
|
30921
|
-
case 'service':
|
|
30922
|
-
return { text: 'record.kind.service', icon: 'matCode' };
|
|
30923
|
-
default:
|
|
30924
|
-
return { text: '', icon: '' };
|
|
30925
|
-
}
|
|
30926
|
-
}
|
|
30927
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30928
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InternalLinkCardComponent, isStandalone: true, selector: "gn-ui-internal-link-card", inputs: { record: "record", metadataQualityDisplay: "metadataQualityDisplay", favoriteTemplate: "favoriteTemplate", linkHref: "linkHref", isGeodata: "isGeodata", size: "size" }, outputs: { mdSelect: "mdSelect" }, providers: [
|
|
30929
|
-
provideIcons({
|
|
30930
|
-
matLocationSearchingOutline,
|
|
30931
|
-
matCode,
|
|
30932
|
-
iconoirDatabase,
|
|
30933
|
-
iconoirMap,
|
|
30934
|
-
iconoirInternet,
|
|
30935
|
-
matEmailOutline,
|
|
30936
|
-
matPhoneOutline,
|
|
30937
|
-
matLocationOnOutline,
|
|
30938
|
-
}),
|
|
30939
|
-
provideNgIconsConfig({
|
|
30940
|
-
size: '1.2em',
|
|
30941
|
-
}),
|
|
30942
|
-
], ngImport: i0, template: "<div\n class=\"rounded-lg group card-shadow cursor-pointer overflow-hidden hover:bg-gray-50\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-row justify-between w-full\">\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div\n class=\"flex flex-col flex-1 relative\"\n [ngClass]=\"{\n 'justify-between': record.ownerOrganization?.name && size !== 'XS',\n }\"\n >\n <div class=\"flex items-center space-x-2\">\n <span\n *ngIf=\"getKindInfo().text\"\n class=\"badge-btn text-white text-xs px-2 py-0.5 font-bold shrink-0 bg-primary leading-tight flex items-center justify-evenly h-6 min-h-6\"\n >\n <ng-icon\n class=\"text-[0.9em] text-white mr-1\"\n [name]=\"getKindInfo().icon\"\n ></ng-icon>\n <span class=\"font-medium text-white text-xs\" translate>\n {{ getKindInfo().text }}\n </span>\n </span>\n <span\n *ngIf=\"isGeodata\"\n class=\"badge-btn text-black text-xs px-2 py-0.5 font-bold shrink-0 bg-primary-white leading-tight flex items-center justify-evenly h-6 min-h-6\"\n [ngClass]=\"size === 'L' ? 'w-[164px]' : 'w-8'\"\n >\n <ng-icon\n class=\"text-[0.9em] text-primary-darkest\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <ng-container *ngIf=\"size === 'L'\">\n <span\n class=\"font-medium text-primary-darkest text-xs ml-1\"\n translate\n >\n record.metadata.type\n </span>\n </ng-container>\n </span>\n <div class=\"flex items-center\">\n <gn-ui-metadata-quality\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div class=\"absolute top-0 right-0 items-center\">\n <ng-container\n *ngIf=\"size !== 'XS'\"\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n <div\n class=\"font-medium text-title group-hover:text-primary overflow-hidden break-words\"\n [ngClass]=\"getTitleClass()\"\n >\n {{ record.title }}\n </div>\n <div\n *ngIf=\"size === 'L'\"\n class=\"mt-1 mb-2 font-normal text-xs text-gray-900 line-clamp-2 overflow-hidden\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n <div\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n class=\"flex items-center justify-evenly bg-gray-50 rounded-lg h-[53px] px-2\"\n >\n <div class=\"flex items-center flex-1 min-w-0\">\n <div\n class=\"w-[45px] h-[45px] rounded-lg overflow-hidden shrink-0 mr-3\"\n >\n <gn-ui-thumbnail\n [thumbnailUrl]=\"\n record.ownerOrganization?.logoUrl?.toString() || ''\n \"\n [fit]=\"'contain'\"\n class=\"w-full h-full rounded-lg\"\n ></gn-ui-thumbnail>\n </div>\n <div *ngIf=\"organization?.name\" class=\"flex-1 w-0 overflow-hidden\">\n <div\n class=\"text-xs text-black font-normal leading-tight truncate\"\n translate\n >\n record.card.metadata.contact\n </div>\n <div class=\"text-xl text-primary-black font-medium truncate\">\n {{ organization.name }}\n </div>\n </div>\n </div>\n <div *ngIf=\"size === 'L'\" class=\"ml-2 flex space-x-2\">\n <div *ngIf=\"organization?.website\" class=\"flex\">\n <button\n [title]=\"organization.website\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n (click)=\"openExternalUrl($event, organization.website)\"\n >\n <ng-icon name=\"iconoirInternet\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.email\" class=\"flex\">\n <button\n [title]=\"contacts[0].email\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n data-cy=\"contact-email\"\n (click)=\"openMailto($event, contacts[0].email)\"\n >\n <ng-icon name=\"matEmailOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.phone\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].phone)\"\n >\n <ng-icon name=\"matPhoneOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.address\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].address)\"\n >\n <ng-icon name=\"matLocationOnOutline\"></ng-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }] }); }
|
|
30943
|
-
}
|
|
30944
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, decorators: [{
|
|
30945
|
-
type: Component,
|
|
30946
|
-
args: [{ selector: 'gn-ui-internal-link-card', standalone: true, imports: [
|
|
30947
|
-
NgClass,
|
|
30948
|
-
NgIf,
|
|
30949
|
-
ThumbnailComponent,
|
|
30950
|
-
MetadataQualityComponent,
|
|
30951
|
-
NgTemplateOutlet,
|
|
30952
|
-
NgIconComponent,
|
|
30953
|
-
TranslateModule,
|
|
30954
|
-
MarkdownParserComponent,
|
|
30955
|
-
], providers: [
|
|
30956
|
-
provideIcons({
|
|
30957
|
-
matLocationSearchingOutline,
|
|
30958
|
-
matCode,
|
|
30959
|
-
iconoirDatabase,
|
|
30960
|
-
iconoirMap,
|
|
30961
|
-
iconoirInternet,
|
|
30962
|
-
matEmailOutline,
|
|
30963
|
-
matPhoneOutline,
|
|
30964
|
-
matLocationOnOutline,
|
|
30965
|
-
}),
|
|
30966
|
-
provideNgIconsConfig({
|
|
30967
|
-
size: '1.2em',
|
|
30968
|
-
}),
|
|
30969
|
-
], template: "<div\n class=\"rounded-lg group card-shadow cursor-pointer overflow-hidden hover:bg-gray-50\"\n [ngClass]=\"cardClass\"\n>\n <div class=\"flex flex-row justify-between w-full\">\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div\n class=\"flex flex-col flex-1 relative\"\n [ngClass]=\"{\n 'justify-between': record.ownerOrganization?.name && size !== 'XS',\n }\"\n >\n <div class=\"flex items-center space-x-2\">\n <span\n *ngIf=\"getKindInfo().text\"\n class=\"badge-btn text-white text-xs px-2 py-0.5 font-bold shrink-0 bg-primary leading-tight flex items-center justify-evenly h-6 min-h-6\"\n >\n <ng-icon\n class=\"text-[0.9em] text-white mr-1\"\n [name]=\"getKindInfo().icon\"\n ></ng-icon>\n <span class=\"font-medium text-white text-xs\" translate>\n {{ getKindInfo().text }}\n </span>\n </span>\n <span\n *ngIf=\"isGeodata\"\n class=\"badge-btn text-black text-xs px-2 py-0.5 font-bold shrink-0 bg-primary-white leading-tight flex items-center justify-evenly h-6 min-h-6\"\n [ngClass]=\"size === 'L' ? 'w-[164px]' : 'w-8'\"\n >\n <ng-icon\n class=\"text-[0.9em] text-primary-darkest\"\n name=\"matLocationSearchingOutline\"\n ></ng-icon>\n <ng-container *ngIf=\"size === 'L'\">\n <span\n class=\"font-medium text-primary-darkest text-xs ml-1\"\n translate\n >\n record.metadata.type\n </span>\n </ng-container>\n </span>\n <div class=\"flex items-center\">\n <gn-ui-metadata-quality\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div class=\"absolute top-0 right-0 items-center\">\n <ng-container\n *ngIf=\"size !== 'XS'\"\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n <div\n class=\"font-medium text-title group-hover:text-primary overflow-hidden break-words\"\n [ngClass]=\"getTitleClass()\"\n >\n {{ record.title }}\n </div>\n <div\n *ngIf=\"size === 'L'\"\n class=\"mt-1 mb-2 font-normal text-xs text-gray-900 line-clamp-2 overflow-hidden\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n <div\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n class=\"flex items-center justify-evenly bg-gray-50 rounded-lg h-[53px] px-2\"\n >\n <div class=\"flex items-center flex-1 min-w-0\">\n <div\n class=\"w-[45px] h-[45px] rounded-lg overflow-hidden shrink-0 mr-3\"\n >\n <gn-ui-thumbnail\n [thumbnailUrl]=\"\n record.ownerOrganization?.logoUrl?.toString() || ''\n \"\n [fit]=\"'contain'\"\n class=\"w-full h-full rounded-lg\"\n ></gn-ui-thumbnail>\n </div>\n <div *ngIf=\"organization?.name\" class=\"flex-1 w-0 overflow-hidden\">\n <div\n class=\"text-xs text-black font-normal leading-tight truncate\"\n translate\n >\n record.card.metadata.contact\n </div>\n <div class=\"text-xl text-primary-black font-medium truncate\">\n {{ organization.name }}\n </div>\n </div>\n </div>\n <div *ngIf=\"size === 'L'\" class=\"ml-2 flex space-x-2\">\n <div *ngIf=\"organization?.website\" class=\"flex\">\n <button\n [title]=\"organization.website\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n (click)=\"openExternalUrl($event, organization.website)\"\n >\n <ng-icon name=\"iconoirInternet\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.email\" class=\"flex\">\n <button\n [title]=\"contacts[0].email\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest\"\n data-cy=\"contact-email\"\n (click)=\"openMailto($event, contacts[0].email)\"\n >\n <ng-icon name=\"matEmailOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.phone\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].phone)\"\n >\n <ng-icon name=\"matPhoneOutline\"></ng-icon>\n </button>\n </div>\n <div *ngIf=\"contacts[0]?.address\" class=\"flex\">\n <button\n [title]=\"'Copy to clipboard'\"\n class=\"w-[40px] h-[32px] flex items-center justify-center rounded-lg border border-[#D4D3D7] px-[8px] py-[4px] hover:bg-primary-lightest relative group\"\n data-cy=\"contact-phone\"\n (click)=\"copyToClipboard($event, contacts[0].address)\"\n >\n <ng-icon name=\"matLocationOnOutline\"></ng-icon>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
30970
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { record: [{
|
|
30971
|
-
type: Input
|
|
30972
|
-
}], metadataQualityDisplay: [{
|
|
30973
|
-
type: Input
|
|
30974
|
-
}], favoriteTemplate: [{
|
|
30975
|
-
type: Input
|
|
30976
|
-
}], linkHref: [{
|
|
30977
|
-
type: Input
|
|
30978
|
-
}], isGeodata: [{
|
|
30979
|
-
type: Input
|
|
30980
|
-
}], size: [{
|
|
30981
|
-
type: Input
|
|
30982
|
-
}], mdSelect: [{
|
|
30983
|
-
type: Output
|
|
30984
|
-
}] } });
|
|
30985
|
-
|
|
30986
31223
|
marker(`service.metadata.search`);
|
|
30987
31224
|
marker(`service.metadata.capabilities.title`);
|
|
30988
31225
|
marker(`service.metadata.capabilities.abstract`);
|
|
@@ -31041,6 +31278,11 @@ class ServiceCapabilitiesComponent {
|
|
|
31041
31278
|
this.searchLayers();
|
|
31042
31279
|
}
|
|
31043
31280
|
}
|
|
31281
|
+
clearSearch() {
|
|
31282
|
+
this.searchActive = false;
|
|
31283
|
+
this.searchQuery = '';
|
|
31284
|
+
this.filteredLayers = this.availableLayers;
|
|
31285
|
+
}
|
|
31044
31286
|
async loadLayers() {
|
|
31045
31287
|
if (this.apiLinks.length > 0 &&
|
|
31046
31288
|
this.apiLinks[0].accessServiceProtocol !== 'ogcFeatures') {
|
|
@@ -31099,15 +31341,16 @@ class ServiceCapabilitiesComponent {
|
|
|
31099
31341
|
}
|
|
31100
31342
|
}
|
|
31101
31343
|
getExtraClass(layerItem) {
|
|
31102
|
-
return layerItem
|
|
31344
|
+
return layerItem === this.selectedLayer
|
|
31103
31345
|
? `h-8 rounded-lg bg-primary-darker text-white hover:text-primary-darker hover:bg-white`
|
|
31104
31346
|
: `h-8 rounded-lg`;
|
|
31105
31347
|
}
|
|
31106
31348
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ServiceCapabilitiesComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31107
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ServiceCapabilitiesComponent, isStandalone: true, selector: "gn-ui-service-capabilities", inputs: { apiLinks: "apiLinks" }, ngImport: i0, template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 420px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "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: "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", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }], viewProviders: [
|
|
31349
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ServiceCapabilitiesComponent, isStandalone: true, selector: "gn-ui-service-capabilities", inputs: { apiLinks: "apiLinks" }, ngImport: i0, template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 420px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [(value)]=\"searchQuery\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div\n class=\"absolute right-14 h-14 w-14 flex items-center justify-center\"\n >\n <button\n #inputBtn\n *ngIf=\"searchQuery\"\n [aria-label]=\"'service.metadata.search.clear' | translate\"\n (click)=\"clearSearch()\"\n class=\"h-12 w-12 border-0 flex items-center justify-center\"\n >\n <ng-icon name=\"matClose\"></ng-icon>\n </button>\n </div>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1 bg-white\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "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: "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", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: PopoverComponent, selector: "gn-ui-popover", inputs: ["content", "theme"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }], viewProviders: [
|
|
31108
31350
|
provideIcons({
|
|
31109
31351
|
iconoirSearch,
|
|
31110
31352
|
matInfoOutline,
|
|
31353
|
+
matClose,
|
|
31111
31354
|
}),
|
|
31112
31355
|
] }); }
|
|
31113
31356
|
}
|
|
@@ -31125,8 +31368,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31125
31368
|
provideIcons({
|
|
31126
31369
|
iconoirSearch,
|
|
31127
31370
|
matInfoOutline,
|
|
31371
|
+
matClose,
|
|
31128
31372
|
}),
|
|
31129
|
-
], template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 420px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n" }]
|
|
31373
|
+
], template: "<div style=\"height: 652px\" id=\"preview\" *ngIf=\"apiLinks.length > 0\">\n <div class=\"bg-primary-opacity-10 overflow-visible\" style=\"height: 420px\">\n <div class=\"container-lg px-4 lg:mx-auto\">\n <div>\n <div class=\"gn-ui-section-title mb-6\" translate>\n service.metadata.capabilities\n </div>\n <div\n *ngIf=\"loading\"\n class=\"flex justify-center w-full h-[200px] items-center\"\n >\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n <div *ngIf=\"!loading\">\n <div class=\"flex flex-row gap-5\">\n <div class=\"h-14 md:w-2/5 w-full mb-4 flex flex-row relative\">\n <gn-ui-text-input\n class=\"w-full\"\n [(value)]=\"searchQuery\"\n [extraClass]=\"getExtraInputClass()\"\n [placeholder]=\"'service.metadata.search' | translate\"\n (input)=\"onSearchChange($event)\"\n (keydown.enter)=\"onSearchEnter($event)\"\n >\n </gn-ui-text-input>\n <div\n class=\"absolute right-14 h-14 w-14 flex items-center justify-center\"\n >\n <button\n #inputBtn\n *ngIf=\"searchQuery\"\n [aria-label]=\"'service.metadata.search.clear' | translate\"\n (click)=\"clearSearch()\"\n class=\"h-12 w-12 border-0 flex items-center justify-center\"\n >\n <ng-icon name=\"matClose\"></ng-icon>\n </button>\n </div>\n <div class=\"border-l absolute border-gray-200 right-0 h-14 w-14\">\n <gn-ui-button\n #inputBtn\n type=\"outline\"\n extraClass=\"h-12 w-12 border-0 absolute right-1 top-1 bg-white\"\n (buttonClick)=\"searchLayers()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n </div>\n </div>\n <gn-ui-popover\n [content]=\"popoverItems\"\n theme=\"light\"\n class=\"w-14 h-14 border border-gray-300 rounded-lg flex justify-center items-center\"\n >\n <ng-icon name=\"matInfoOutline\" class=\"w-6 h-6 pt-0.5\"></ng-icon>\n </gn-ui-popover>\n </div>\n <div\n style=\"height: 500px\"\n class=\"bg-white shadow-xl rounded p-0 flex md:flex-row flex-col\"\n >\n <div\n class=\"flex flex-col gap-2 bg-gray-100 md:w-1/2 md:h-full w-full h-1/2 rounded-l overflow-y-auto py-5 pr-1 pl-3\"\n data-test=\"layer-list\"\n >\n <gn-ui-button\n *ngFor=\"let layerItem of filteredLayers\"\n type=\"outline\"\n [extraClass]=\"getExtraClass(layerItem)\"\n (buttonClick)=\"selectLayer(layerItem)\"\n >\n {{ layerItem.title || layerItem.name }}\n </gn-ui-button>\n <span *ngIf=\"filteredLayers.length === 0\" class=\"text-gray-800\">\n {{ 'service.metadata.filter.noLayers' | translate }}\n </span>\n </div>\n <div\n data-test=\"layer-information\"\n class=\"flex flex-col gap-4 md:h-full md:w-1/2 w-full h-1/2 py-5 px-10 overflow-y-auto\"\n >\n <div\n *ngFor=\"let item of layerInformation\"\n class=\"flex flex-row gap-4 border-b border-gray-200\"\n >\n <span class=\"font-semibold w-24\">{{ item.displayName }}</span>\n <div *ngIf=\"isList(item.value)\">\n <div\n *ngFor=\"let subItem of item.value\"\n class=\"flex flex-row break-words max-w-72\"\n >\n {{ subItem }}\n </div>\n </div>\n <div class=\"break-words max-w-72\" *ngIf=\"!isList(item.value)\">\n {{ item.value }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #popoverItems>\n <div class=\"p-2 py-4\">\n <div translate>service.metadata.filter</div>\n </div>\n</ng-template>\n" }]
|
|
31130
31374
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { apiLinks: [{
|
|
31131
31375
|
type: Input
|
|
31132
31376
|
}] } });
|
|
@@ -31152,7 +31396,8 @@ class UiElementsModule {
|
|
|
31152
31396
|
ApplicationBannerComponent,
|
|
31153
31397
|
InternalLinkCardComponent,
|
|
31154
31398
|
ServiceCapabilitiesComponent,
|
|
31155
|
-
KindBadgeComponent
|
|
31399
|
+
KindBadgeComponent,
|
|
31400
|
+
GeoDataBadgeComponent], exports: [ThumbnailComponent,
|
|
31156
31401
|
AvatarComponent,
|
|
31157
31402
|
UserPreviewComponent,
|
|
31158
31403
|
MarkdownParserComponent,
|
|
@@ -31160,7 +31405,8 @@ class UiElementsModule {
|
|
|
31160
31405
|
ApplicationBannerComponent,
|
|
31161
31406
|
InternalLinkCardComponent,
|
|
31162
31407
|
ServiceCapabilitiesComponent,
|
|
31163
|
-
KindBadgeComponent
|
|
31408
|
+
KindBadgeComponent,
|
|
31409
|
+
GeoDataBadgeComponent] }); }
|
|
31164
31410
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, providers: [
|
|
31165
31411
|
provideNgIconsConfig({
|
|
31166
31412
|
size: '1.5em',
|
|
@@ -31183,7 +31429,8 @@ class UiElementsModule {
|
|
|
31183
31429
|
ApplicationBannerComponent,
|
|
31184
31430
|
InternalLinkCardComponent,
|
|
31185
31431
|
ServiceCapabilitiesComponent,
|
|
31186
|
-
KindBadgeComponent
|
|
31432
|
+
KindBadgeComponent,
|
|
31433
|
+
GeoDataBadgeComponent] }); }
|
|
31187
31434
|
}
|
|
31188
31435
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
31189
31436
|
type: NgModule,
|
|
@@ -31211,6 +31458,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31211
31458
|
InternalLinkCardComponent,
|
|
31212
31459
|
ServiceCapabilitiesComponent,
|
|
31213
31460
|
KindBadgeComponent,
|
|
31461
|
+
GeoDataBadgeComponent,
|
|
31214
31462
|
],
|
|
31215
31463
|
providers: [
|
|
31216
31464
|
provideNgIconsConfig({
|
|
@@ -31228,6 +31476,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31228
31476
|
InternalLinkCardComponent,
|
|
31229
31477
|
ServiceCapabilitiesComponent,
|
|
31230
31478
|
KindBadgeComponent,
|
|
31479
|
+
GeoDataBadgeComponent,
|
|
31231
31480
|
],
|
|
31232
31481
|
}]
|
|
31233
31482
|
}] });
|
|
@@ -31299,6 +31548,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31299
31548
|
type: Output
|
|
31300
31549
|
}] } });
|
|
31301
31550
|
|
|
31551
|
+
class FeatureCatalogListComponent {
|
|
31552
|
+
constructor() {
|
|
31553
|
+
this.columns = [
|
|
31554
|
+
{
|
|
31555
|
+
key: 'type',
|
|
31556
|
+
label: 'feature.catalog.attribute.type',
|
|
31557
|
+
width: '19%',
|
|
31558
|
+
},
|
|
31559
|
+
{
|
|
31560
|
+
key: 'name',
|
|
31561
|
+
label: 'feature.catalog.attribute.name',
|
|
31562
|
+
width: '32%',
|
|
31563
|
+
},
|
|
31564
|
+
{
|
|
31565
|
+
key: 'code',
|
|
31566
|
+
label: 'feature.catalog.attribute.code',
|
|
31567
|
+
width: '24%',
|
|
31568
|
+
},
|
|
31569
|
+
{
|
|
31570
|
+
key: 'title',
|
|
31571
|
+
label: 'feature.catalog.attribute.description',
|
|
31572
|
+
width: '25%',
|
|
31573
|
+
},
|
|
31574
|
+
];
|
|
31575
|
+
this.gridTemplateColumns = '';
|
|
31576
|
+
}
|
|
31577
|
+
ngOnInit() {
|
|
31578
|
+
this.gridTemplateColumns = this.columns.map((col) => col.width).join(' ');
|
|
31579
|
+
}
|
|
31580
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCatalogListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31581
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureCatalogListComponent, isStandalone: true, selector: "gn-ui-feature-catalog-list", inputs: { filteredFeatureCatalog: "filteredFeatureCatalog" }, ngImport: i0, template: "<div class=\"flex flex-col gap-2 py-5 px-5 h-[562px] overflow-y-auto\">\n <div\n *ngFor=\"let featureType of filteredFeatureCatalog?.featureTypes\"\n class=\"rounded shadow bg-white\"\n >\n <gn-ui-expandable-panel\n [collapsed]=\"filteredFeatureCatalog?.featureTypes?.length !== 1\"\n iconColor=\"black\"\n >\n <ng-template #titleTemplate>\n <div class=\"px-2\">\n <div class=\"text-lg font-bold\">{{ featureType.name }}</div>\n <div class=\"text-sm\" *ngIf=\"featureType.definition\">\n {{ featureType.definition }}\n </div>\n </div>\n </ng-template>\n <div\n class=\"grid gap-0\"\n [style.grid-template-columns]=\"gridTemplateColumns\"\n data-cy=\"feature-type-content\"\n >\n <div\n class=\"py-1 px-2 text-sm font-bold text-left border-t\"\n [class.border-l]=\"i > 0\"\n [class.border-gray-300]=\"i > 0\"\n *ngFor=\"let col of columns; let i = index\"\n data-test=\"column-label\"\n >\n {{ col.label | translate }}\n </div>\n <ng-container *ngFor=\"let row of featureType.attributes\">\n <div\n class=\"bg-white text-sm font-normal text-left border-t\"\n [class.border-l]=\"i > 0\"\n [class.border-gray-300]=\"i > 0\"\n *ngFor=\"let col of columns; let i = index\"\n >\n <gn-ui-truncated-text\n extraClass=\"py-3 px-2\"\n [text]=\"row[col.key]\"\n ></gn-ui-truncated-text>\n </div>\n </ng-container>\n </div>\n </gn-ui-expandable-panel>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "component", type: ExpandablePanelComponent, selector: "gn-ui-expandable-panel", inputs: ["title", "iconColor", "collapsed"] }, { kind: "component", type: TruncatedTextComponent, selector: "gn-ui-truncated-text", inputs: ["text", "extraClass"] }] }); }
|
|
31582
|
+
}
|
|
31583
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCatalogListComponent, decorators: [{
|
|
31584
|
+
type: Component,
|
|
31585
|
+
args: [{ selector: 'gn-ui-feature-catalog-list', standalone: true, imports: [
|
|
31586
|
+
CommonModule,
|
|
31587
|
+
TranslateModule,
|
|
31588
|
+
ExpandablePanelComponent,
|
|
31589
|
+
TruncatedTextComponent,
|
|
31590
|
+
], template: "<div class=\"flex flex-col gap-2 py-5 px-5 h-[562px] overflow-y-auto\">\n <div\n *ngFor=\"let featureType of filteredFeatureCatalog?.featureTypes\"\n class=\"rounded shadow bg-white\"\n >\n <gn-ui-expandable-panel\n [collapsed]=\"filteredFeatureCatalog?.featureTypes?.length !== 1\"\n iconColor=\"black\"\n >\n <ng-template #titleTemplate>\n <div class=\"px-2\">\n <div class=\"text-lg font-bold\">{{ featureType.name }}</div>\n <div class=\"text-sm\" *ngIf=\"featureType.definition\">\n {{ featureType.definition }}\n </div>\n </div>\n </ng-template>\n <div\n class=\"grid gap-0\"\n [style.grid-template-columns]=\"gridTemplateColumns\"\n data-cy=\"feature-type-content\"\n >\n <div\n class=\"py-1 px-2 text-sm font-bold text-left border-t\"\n [class.border-l]=\"i > 0\"\n [class.border-gray-300]=\"i > 0\"\n *ngFor=\"let col of columns; let i = index\"\n data-test=\"column-label\"\n >\n {{ col.label | translate }}\n </div>\n <ng-container *ngFor=\"let row of featureType.attributes\">\n <div\n class=\"bg-white text-sm font-normal text-left border-t\"\n [class.border-l]=\"i > 0\"\n [class.border-gray-300]=\"i > 0\"\n *ngFor=\"let col of columns; let i = index\"\n >\n <gn-ui-truncated-text\n extraClass=\"py-3 px-2\"\n [text]=\"row[col.key]\"\n ></gn-ui-truncated-text>\n </div>\n </ng-container>\n </div>\n </gn-ui-expandable-panel>\n </div>\n</div>\n" }]
|
|
31591
|
+
}], propDecorators: { filteredFeatureCatalog: [{
|
|
31592
|
+
type: Input
|
|
31593
|
+
}] } });
|
|
31594
|
+
|
|
31302
31595
|
class UiSearchModule {
|
|
31303
31596
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
31304
31597
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: UiSearchModule, declarations: [RecordPreviewComponent,
|
|
@@ -31455,7 +31748,7 @@ class ActionMenuComponent {
|
|
|
31455
31748
|
}
|
|
31456
31749
|
this.cdr.markForCheck();
|
|
31457
31750
|
}
|
|
31458
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, deps: [{ token: i1$
|
|
31751
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, deps: [{ token: i1$a.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31459
31752
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage" }, outputs: { duplicate: "duplicate", delete: "delete", closeActionMenu: "closeActionMenu", rollback: "rollback" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"!isDraftPage\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"!isDraftPage\" translate>record.action.delete</span>\n <span *ngIf=\"isDraftPage\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDialogModule }, { 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"] }] }); }
|
|
31460
31753
|
}
|
|
31461
31754
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
@@ -31468,7 +31761,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31468
31761
|
ConfirmationDialogComponent,
|
|
31469
31762
|
TranslateModule,
|
|
31470
31763
|
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"!isDraftPage\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"!isDraftPage\" translate>record.action.delete</span>\n <span *ngIf=\"isDraftPage\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n" }]
|
|
31471
|
-
}], ctorParameters: () => [{ type: i1$
|
|
31764
|
+
}], ctorParameters: () => [{ type: i1$a.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
|
|
31472
31765
|
type: Input
|
|
31473
31766
|
}], canDelete: [{
|
|
31474
31767
|
type: Input
|
|
@@ -31613,7 +31906,7 @@ class ResultsTableComponent {
|
|
|
31613
31906
|
handleRecordSelectedChange(selected, record) {
|
|
31614
31907
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
31615
31908
|
}
|
|
31616
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, deps: [{ token: i1$
|
|
31909
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, deps: [{ token: i1$8.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: DateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31617
31910
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", rollbackDraft: "rollbackDraft", recordsSelectedChange: "recordsSelectedChange" }, providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"(!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"(item.extras?.edit || isDraftPage) && item.kind === 'dataset'\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\n \"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n [isDraftPage]=\"isDraftPage\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: BadgeComponent, selector: "gn-ui-badge", inputs: ["clickable", "removable"], outputs: ["badgeRemoveClicked"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items", "isDraftPage"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "width", "sortable", "activeSort"], outputs: ["sortChange"] }, { 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: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "canDelete", "isDraftPage"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }] }); }
|
|
31618
31911
|
}
|
|
31619
31912
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
@@ -31629,7 +31922,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31629
31922
|
NgIconComponent,
|
|
31630
31923
|
CdkOverlayOrigin,
|
|
31631
31924
|
], providers: [provideIcons({ iconoirUser, iconoirLock, matMoreVert })], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"(!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\"\n ></ng-icon>\n <gn-ui-checkbox\n *ngIf=\"(item.extras?.edit || isDraftPage) && item.kind === 'dataset'\"\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [grow]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword')\"\n (sortChange)=\"setSortBy('resourceTitleObject.default.keyword', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.title</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex flex-row items-center gap-2 max-w-full font-semibold\">\n <span data-cy=\"resultItemTitle\" class=\"overflow-hidden text-ellipsis\">{{\n item.title\n }}</span>\n <gn-ui-badge\n *ngIf=\"hasDraft(item)\"\n [style.--gn-ui-badge-padding]=\"'0.2em 0.6em'\"\n [style.--gn-ui-badge-text-size]=\"'12px'\"\n [style.--gn-ui-badge-text-color]=\"'#3d2006'\"\n [style.--gn-ui-badge-background-color]=\"'#ffbc7b'\"\n [style.--gn-ui-badge-rounded]=\"'4px'\"\n >\n <span translate>dashboard.records.hasDraft</span>\n </gn-ui-badge>\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'9rem'\">\n <ng-template #header>\n <span translate>record.metadata.formats</span>\n </ng-template>\n <ng-template #cell let-item>\n <div\n class=\"flex justify-start items-center gap-2 font-medium\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[0])\"\n *ngIf=\"formats[0]\"\n >\n {{ formats[0] }}\n </span>\n <span\n class=\"badge-btn min-w-[45px] text-xs text-gray-900 px-2 shrink-0\"\n [style.background-color]=\"getBadgeColor(formats[1])\"\n *ngIf=\"formats[1]\"\n >\n {{ formats[1] }}\n </span>\n <div class=\"shrink-0 text-xs\" *ngIf=\"formats.slice(2).length > 0\">\n <span>+{{ formats.slice(2).length }}</span>\n </div>\n </div>\n <div *ngIf=\"!getRecordFormats(item)\"></div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- OWNER COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'12rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner')\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.user</span>\n </ng-template>\n <ng-template #cell let-item>\n <ng-icon name=\"iconoirUser\" size=\"16px\"></ng-icon>\n <span data-cy=\"ownerInfo\" class=\"text-xs\">{{\n formatUserInfo(item.extras?.ownerInfo)\n }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'6rem'\">\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n <span class=\"text-xs\">\n {{\n (item.extras?.['isPublishedToAll']\n ? 'record.metadata.status.published'\n : 'record.metadata.status.notPublished'\n ) | translate\n }}</span\n >\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [width]=\"'8rem'\"\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate')\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>search.filters.changeDate</span>\n </ng-template>\n <ng-template #cell let-item>\n <div class=\"flex text-left w-full text-xs\">\n {{\n item.extras?.['isPublishedToAll']\n ? dateToString(item.recordUpdated)\n : '-'\n }}\n </div>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- ACTION MENU COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header> </ng-template>\n <ng-template #cell let-item>\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n [disabled]=\"\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset'\n \"\n >\n <ng-icon\n [ngClass]=\"{\n 'text-purple-light':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n }\"\n name=\"matMoreVert\"\n ></ng-icon>\n </gn-ui-button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item) && !isDuplicating\"\n [canDelete]=\"canDelete(item)\"\n [isDraftPage]=\"isDraftPage\"\n (duplicate)=\"handleDuplicate(item)\"\n (delete)=\"handleDelete(item)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (rollback)=\"handleRollback(item)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
31632
|
-
}], ctorParameters: () => [{ type: i1$
|
|
31925
|
+
}], ctorParameters: () => [{ type: i1$8.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }], propDecorators: { records: [{
|
|
31633
31926
|
type: Input
|
|
31634
31927
|
}], selectedRecordsIdentifiers: [{
|
|
31635
31928
|
type: Input
|
|
@@ -31881,6 +32174,7 @@ const FIELDS_SUMMARY = [
|
|
|
31881
32174
|
'overview',
|
|
31882
32175
|
'logo',
|
|
31883
32176
|
'codelist_status_text',
|
|
32177
|
+
'link',
|
|
31884
32178
|
'linkProtocol',
|
|
31885
32179
|
'contactForResource*.organisation*',
|
|
31886
32180
|
'contact*.organisation*',
|
|
@@ -32949,7 +33243,7 @@ class ResultsListContainerComponent {
|
|
|
32949
33243
|
const urlKind = tokenMap[metadata.kind];
|
|
32950
33244
|
return urlKind.replace('${uuid}', metadata.uniqueIdentifier);
|
|
32951
33245
|
}
|
|
32952
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token: RECORD_DATASET_URL_TOKEN, optional: true }, { token: RECORD_SERVICE_URL_TOKEN }, { token: RECORD_REUSE_URL_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33246
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, deps: [{ token: SearchFacade }, { token: RESULTS_LAYOUT_CONFIG }, { token: RECORD_DATASET_URL_TOKEN, optional: true }, { token: RECORD_SERVICE_URL_TOKEN, optional: true }, { token: RECORD_REUSE_URL_TOKEN, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32953
33247
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: { metadataQualityDisplay: "metadataQualityDisplay", layout: "layout", showMore: "showMore" }, outputs: { mdSelect: "mdSelect" }, ngImport: i0, template: "<div *ngIf=\"(error$ | async) === null\" class=\"search-results relative\">\n <gn-ui-results-list\n [records]=\"facade.results$ | async\"\n [layoutConfig]=\"layoutConfig$ | async\"\n [metadataQualityDisplay]=\"\n metadataQualityDisplay && (pipelineForQualityScoreActivated | async)\n \"\n [favoriteTemplate]=\"favoriteToggle\"\n [recordUrlGetter]=\"recordUrlGetter\"\n (mdSelect)=\"onMetadataSelection($event)\"\n ></gn-ui-results-list>\n <ng-container *ngIf=\"allowShowMore$ | async\">\n <div class=\"show-more h-[100px] pt-[30px]\" *ngIf=\"showMore === 'button'\">\n <gn-ui-button\n data-cy=\"addMoreBtn\"\n type=\"secondary\"\n (buttonClick)=\"onShowMore()\"\n extraClass=\"m-auto !p-[22px]\"\n [style.--gn-ui-button-width]=\"!auto\"\n >\n <span class=\"uppercase font-medium tracking-widest\" translate\n >results.showMore</span\n >\n </gn-ui-button>\n </div>\n <div class=\"show-more h-[100px]\" *ngIf=\"showMore === 'auto'\">\n <gn-ui-viewport-intersector\n (entersViewport)=\"onShowMore()\"\n ></gn-ui-viewport-intersector>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"(facade.isLoading$ | async) === true\">\n <div class=\"loading flex justify-center h-[100px] pt-[45px]\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n</div>\n\n<div class=\"p-4 max-w-[600px] m-auto text-[13px]\">\n <gn-ui-error\n *ngIf=\"(errorCode$ | async) === 0\"\n [type]=\"errorTypes.COULD_NOT_REACH_API\"\n >\n </gn-ui-error>\n <gn-ui-error\n *ngIf=\"(error$ | async) !== null && (errorCode$ | async) !== 0\"\n [type]=\"errorTypes.RECEIVED_ERROR\"\n [error]=\"errorMessage$ | async\"\n ></gn-ui-error>\n</div>\n\n<ng-template #favoriteToggle let-record>\n <gn-ui-favorite-star [record]=\"record\"></gn-ui-favorite-star>\n</ng-template>\n", styles: [":host{--gn-ui-button-height: 24px;--gn-ui-button-width: 24px;--gn-ui-button-color: var(--color-secondary);--gn-ui-button-border-width: 0px}\n"], dependencies: [{ kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ResultsListComponent, selector: "gn-ui-results-list", inputs: ["records", "layoutConfig", "favoriteTemplate", "recordUrlGetter", "metadataQualityDisplay"], outputs: ["mdSelect"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: ["isInViewport", "entersViewport", "exitsViewport"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ErrorComponent, selector: "gn-ui-error", inputs: ["type", "error", "recordId"] }, { kind: "component", type: FavoriteStarComponent, selector: "gn-ui-favorite-star", inputs: ["displayCount", "record"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
32954
33248
|
}
|
|
32955
33249
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsListContainerComponent, decorators: [{
|
|
@@ -32964,9 +33258,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32964
33258
|
type: Inject,
|
|
32965
33259
|
args: [RECORD_DATASET_URL_TOKEN]
|
|
32966
33260
|
}] }, { type: undefined, decorators: [{
|
|
33261
|
+
type: Optional
|
|
33262
|
+
}, {
|
|
32967
33263
|
type: Inject,
|
|
32968
33264
|
args: [RECORD_SERVICE_URL_TOKEN]
|
|
32969
33265
|
}] }, { type: undefined, decorators: [{
|
|
33266
|
+
type: Optional
|
|
33267
|
+
}, {
|
|
32970
33268
|
type: Inject,
|
|
32971
33269
|
args: [RECORD_REUSE_URL_TOKEN]
|
|
32972
33270
|
}] }], propDecorators: { metadataQualityDisplay: [{
|
|
@@ -33154,12 +33452,12 @@ class SearchEffects {
|
|
|
33154
33452
|
);
|
|
33155
33453
|
});
|
|
33156
33454
|
}
|
|
33157
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchEffects, deps: [{ token: i1$
|
|
33455
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchEffects, deps: [{ token: i1$b.Actions }, { token: i1$3.Store }, { token: RecordsRepositoryInterface }, { token: FavoritesService }, { token: PlatformServiceInterface }, { token: FILTER_GEOMETRY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33158
33456
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchEffects }); }
|
|
33159
33457
|
}
|
|
33160
33458
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchEffects, decorators: [{
|
|
33161
33459
|
type: Injectable
|
|
33162
|
-
}], ctorParameters: () => [{ type: i1$
|
|
33460
|
+
}], ctorParameters: () => [{ type: i1$b.Actions }, { type: i1$3.Store }, { type: RecordsRepositoryInterface }, { type: FavoritesService }, { type: PlatformServiceInterface }, { type: Promise, decorators: [{
|
|
33163
33461
|
type: Optional
|
|
33164
33462
|
}, {
|
|
33165
33463
|
type: Inject,
|
|
@@ -33785,7 +34083,7 @@ class FeatureSearchModule {
|
|
|
33785
34083
|
ResultsListContainerComponent,
|
|
33786
34084
|
ResultsHitsContainerComponent,
|
|
33787
34085
|
SearchStateContainerDirective,
|
|
33788
|
-
FilterDropdownComponent], imports: [CommonModule, i1$1.TranslateModule, i1$3.StoreFeatureModule, i1$
|
|
34086
|
+
FilterDropdownComponent], imports: [CommonModule, i1$1.TranslateModule, i1$3.StoreFeatureModule, i1$b.EffectsFeatureModule, HttpClientModule,
|
|
33789
34087
|
HttpClientXsrfModule,
|
|
33790
34088
|
UiSearchModule,
|
|
33791
34089
|
UiInputsModule,
|
|
@@ -37045,6 +37343,36 @@ class DataService {
|
|
|
37045
37343
|
throw new Error(`ogc.unreachable.unknown`);
|
|
37046
37344
|
});
|
|
37047
37345
|
}
|
|
37346
|
+
async getGeodataLinksFromTms(tmsLink, keepOriginalLink = false) {
|
|
37347
|
+
const endpoint = new TmsEndpoint(tmsLink.url.toString());
|
|
37348
|
+
const tileMaps = await endpoint.allTileMaps;
|
|
37349
|
+
if (!tileMaps?.length)
|
|
37350
|
+
return null;
|
|
37351
|
+
// TODO: at some point use the identifierInService field if more that one layers in the TMS service
|
|
37352
|
+
const tileMapInfo = await endpoint.getTileMapInfo(tileMaps[0].href);
|
|
37353
|
+
// case 1: no styles; return a plain TMS link
|
|
37354
|
+
if (!tileMapInfo?.metadata?.length)
|
|
37355
|
+
return [tmsLink];
|
|
37356
|
+
// case 2: styles present; return each as a separate link
|
|
37357
|
+
const styleLinks = tileMapInfo.metadata
|
|
37358
|
+
.filter((meta) => meta.href)
|
|
37359
|
+
.map((meta) => {
|
|
37360
|
+
const fileName = meta.href.split('/').pop() || '';
|
|
37361
|
+
const linkName = tmsLink.description || ('name' in tmsLink ? tmsLink.name : '');
|
|
37362
|
+
const styleName = fileName.split('.')[0];
|
|
37363
|
+
const name = `${linkName} - ${styleName}`;
|
|
37364
|
+
return {
|
|
37365
|
+
type: 'service',
|
|
37366
|
+
url: new URL(meta.href),
|
|
37367
|
+
name,
|
|
37368
|
+
accessServiceProtocol: 'maplibre-style',
|
|
37369
|
+
};
|
|
37370
|
+
});
|
|
37371
|
+
if (keepOriginalLink) {
|
|
37372
|
+
styleLinks.unshift(tmsLink);
|
|
37373
|
+
}
|
|
37374
|
+
return styleLinks;
|
|
37375
|
+
}
|
|
37048
37376
|
getDownloadLinksFromEsriRest(esriRestLink) {
|
|
37049
37377
|
return ['json', 'geojson'].map((format) => ({
|
|
37050
37378
|
...esriRestLink,
|
|
@@ -37199,7 +37527,7 @@ class ChartComponent {
|
|
|
37199
37527
|
labels: this.getDataProxy(this.labelProperty),
|
|
37200
37528
|
datasets: [
|
|
37201
37529
|
{
|
|
37202
|
-
label: this.
|
|
37530
|
+
label: this.prettyLabel,
|
|
37203
37531
|
data,
|
|
37204
37532
|
},
|
|
37205
37533
|
],
|
|
@@ -37309,7 +37637,7 @@ class ChartComponent {
|
|
|
37309
37637
|
this.chart = this.createChart();
|
|
37310
37638
|
}
|
|
37311
37639
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37312
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartComponent, isStandalone: true, selector: "gn-ui-chart", inputs: { data: "data", labelProperty: "labelProperty", valueProperty: "valueProperty", secondaryValueProperty: "secondaryValueProperty", type: "type" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["chartCanvas"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full flex justify-center items-center p-1\">\n <canvas #chartCanvas></canvas>\n</div>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37640
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartComponent, isStandalone: true, selector: "gn-ui-chart", inputs: { data: "data", labelProperty: "labelProperty", prettyLabel: "prettyLabel", valueProperty: "valueProperty", secondaryValueProperty: "secondaryValueProperty", type: "type" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["chartCanvas"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"h-full flex justify-center items-center p-1\">\n <canvas #chartCanvas></canvas>\n</div>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37313
37641
|
}
|
|
37314
37642
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartComponent, decorators: [{
|
|
37315
37643
|
type: Component,
|
|
@@ -37318,6 +37646,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37318
37646
|
type: Input
|
|
37319
37647
|
}], labelProperty: [{
|
|
37320
37648
|
type: Input
|
|
37649
|
+
}], prettyLabel: [{
|
|
37650
|
+
type: Input
|
|
37321
37651
|
}], valueProperty: [{
|
|
37322
37652
|
type: Input
|
|
37323
37653
|
}], secondaryValueProperty: [{
|
|
@@ -37398,17 +37728,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37398
37728
|
|
|
37399
37729
|
const rowIdPrefix = 'table-item-';
|
|
37400
37730
|
class DataTableComponent {
|
|
37731
|
+
set featureAttributes(value) {
|
|
37732
|
+
this._featureAttributes = value;
|
|
37733
|
+
this.properties$.next(value.map((attr) => attr.value));
|
|
37734
|
+
}
|
|
37401
37735
|
set dataset(value) {
|
|
37402
|
-
this.properties$.next(null);
|
|
37403
37736
|
this.dataset_ = value;
|
|
37404
37737
|
this.dataset_.load();
|
|
37405
|
-
this.dataset_.properties.then((properties) => this.properties$.next(properties.map((p) => p.name)));
|
|
37406
37738
|
this.dataset_.info.then((info) => (this.count = info.itemsCount));
|
|
37407
37739
|
}
|
|
37408
37740
|
constructor(eltRef, cdr, translateService) {
|
|
37409
37741
|
this.eltRef = eltRef;
|
|
37410
37742
|
this.cdr = cdr;
|
|
37411
37743
|
this.translateService = translateService;
|
|
37744
|
+
this._featureAttributes = [];
|
|
37412
37745
|
this.selected = new EventEmitter();
|
|
37413
37746
|
this.properties$ = new BehaviorSubject(null);
|
|
37414
37747
|
this.loading$ = new BehaviorSubject(false);
|
|
@@ -37481,7 +37814,7 @@ class DataTableComponent {
|
|
|
37481
37814
|
}
|
|
37482
37815
|
}
|
|
37483
37816
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37484
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataTableComponent, isStandalone: true, selector: "gn-ui-data-table", inputs: { dataset: "dataset", activeId: "activeId" }, outputs: { selected: "selected" }, providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container
|
|
37817
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataTableComponent, isStandalone: true, selector: "gn-ui-data-table", inputs: { featureAttributes: "featureAttributes", dataset: "dataset", activeId: "activeId" }, outputs: { selected: "selected" }, providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container\n *ngFor=\"let attr of _featureAttributes\"\n [matColumnDef]=\"attr.value\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ attr.label }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[attr.value] }}\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]=\"\n activeId !== undefined && activeId !== null && row.id === activeId\n \"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 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\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}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:#f5f5f5}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)}.mat-mdc-paginator{background:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i3$2.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$2.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i4.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: ScrollingModule }, { 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: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37485
37818
|
}
|
|
37486
37819
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
|
|
37487
37820
|
type: Component,
|
|
@@ -37495,8 +37828,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37495
37828
|
LoadingMaskComponent,
|
|
37496
37829
|
PopupAlertComponent,
|
|
37497
37830
|
LetDirective,
|
|
37498
|
-
], providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], selector: 'gn-ui-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container
|
|
37499
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: {
|
|
37831
|
+
], providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], selector: 'gn-ui-data-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container\n *ngFor=\"let attr of _featureAttributes\"\n [matColumnDef]=\"attr.value\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ attr.label }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[attr.value] }}\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]=\"\n activeId !== undefined && activeId !== null && row.id === activeId\n \"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 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\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}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:#f5f5f5}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)}.mat-mdc-paginator{background:none}\n"] }]
|
|
37832
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { featureAttributes: [{
|
|
37833
|
+
type: Input
|
|
37834
|
+
}], dataset: [{
|
|
37500
37835
|
type: Input
|
|
37501
37836
|
}], activeId: [{
|
|
37502
37837
|
type: Input
|
|
@@ -37603,8 +37938,14 @@ marker('chart.aggregation.min');
|
|
|
37603
37938
|
marker('chart.aggregation.average');
|
|
37604
37939
|
marker('chart.aggregation.count');
|
|
37605
37940
|
class ChartViewComponent {
|
|
37941
|
+
set featureCatalog(value) {
|
|
37942
|
+
this.featureCatalog$.next(value);
|
|
37943
|
+
}
|
|
37606
37944
|
set link(value) {
|
|
37607
37945
|
this.currentLink$.next(value);
|
|
37946
|
+
if (value) {
|
|
37947
|
+
this.aggregation$.next('sum');
|
|
37948
|
+
}
|
|
37608
37949
|
}
|
|
37609
37950
|
set aggregation(value) {
|
|
37610
37951
|
this.aggregation$.next(value);
|
|
@@ -37647,6 +37988,7 @@ class ChartViewComponent {
|
|
|
37647
37988
|
this.dataService = dataService;
|
|
37648
37989
|
this.changeDetector = changeDetector;
|
|
37649
37990
|
this.translateService = translateService;
|
|
37991
|
+
this.featureCatalog$ = new BehaviorSubject(null);
|
|
37650
37992
|
this.cacheActive = true;
|
|
37651
37993
|
this.currentLink$ = new BehaviorSubject(null);
|
|
37652
37994
|
this.aggregation$ = new BehaviorSubject('sum');
|
|
@@ -37686,10 +38028,7 @@ class ChartViewComponent {
|
|
|
37686
38028
|
return EMPTY;
|
|
37687
38029
|
}));
|
|
37688
38030
|
}), shareReplay(1));
|
|
37689
|
-
this.properties$ = this.dataset
|
|
37690
|
-
this.handleError(error);
|
|
37691
|
-
return [];
|
|
37692
|
-
})), shareReplay(1));
|
|
38031
|
+
this.properties$ = combineLatest([this.dataset$, this.featureCatalog$]).pipe(switchMap$1(([dataset, catalog]) => this.setProperties(dataset, catalog)), shareReplay(1));
|
|
37693
38032
|
this.yChoices$ = this.properties$.pipe(map$1((properties) => properties
|
|
37694
38033
|
.filter((prop) => prop.type === 'number' || prop.type === 'date')
|
|
37695
38034
|
.map((prop) => ({ value: prop.name, label: prop.label || prop.name }))), tap$1((choices) => {
|
|
@@ -37716,7 +38055,7 @@ class ChartViewComponent {
|
|
|
37716
38055
|
this.xProperty$.pipe(filter((value) => value !== undefined)),
|
|
37717
38056
|
this.yProperty$.pipe(filter((value) => value !== undefined)),
|
|
37718
38057
|
this.aggregation$,
|
|
37719
|
-
]).pipe(switchMap$1(([dataset, xProp, yProp, aggregation]) => {
|
|
38058
|
+
]).pipe(filter(([_, x, y]) => !!x || !!y), switchMap$1(([dataset, xProp, yProp, aggregation]) => {
|
|
37720
38059
|
const fieldAgg = aggregation === 'count' ? ['count'] : [aggregation, yProp];
|
|
37721
38060
|
return dataset
|
|
37722
38061
|
.groupBy(['distinct', xProp])
|
|
@@ -37730,6 +38069,36 @@ class ChartViewComponent {
|
|
|
37730
38069
|
this.loading = false;
|
|
37731
38070
|
});
|
|
37732
38071
|
}), map$1(getJsonDataItemsProxy), startWith([]), shareReplay(1));
|
|
38072
|
+
this.prettyLabel$ = combineLatest([
|
|
38073
|
+
this.aggregation$,
|
|
38074
|
+
this.properties$,
|
|
38075
|
+
this.yProperty$,
|
|
38076
|
+
]).pipe(map$1(([aggregation, properties, yProperty]) => {
|
|
38077
|
+
if (aggregation === 'count')
|
|
38078
|
+
return 'count()';
|
|
38079
|
+
const prop = properties.find((p) => p.name === yProperty);
|
|
38080
|
+
return prop ? `${aggregation}(${prop.label})` : '';
|
|
38081
|
+
}));
|
|
38082
|
+
}
|
|
38083
|
+
setProperties(dataset, catalog) {
|
|
38084
|
+
return dataset.properties
|
|
38085
|
+
.then((properties) => {
|
|
38086
|
+
return properties.map((p) => {
|
|
38087
|
+
if (catalog) {
|
|
38088
|
+
const featureAttributes = catalog?.featureTypes[0]?.attributes ?? [];
|
|
38089
|
+
const matchingAttribute = featureAttributes.find((attr) => attr.name === p.label);
|
|
38090
|
+
if (matchingAttribute?.code) {
|
|
38091
|
+
return { ...p, label: matchingAttribute.code };
|
|
38092
|
+
}
|
|
38093
|
+
return p;
|
|
38094
|
+
}
|
|
38095
|
+
return p;
|
|
38096
|
+
});
|
|
38097
|
+
})
|
|
38098
|
+
.catch((error) => {
|
|
38099
|
+
this.handleError(error);
|
|
38100
|
+
return [];
|
|
38101
|
+
});
|
|
37733
38102
|
}
|
|
37734
38103
|
handleError(error) {
|
|
37735
38104
|
if (error instanceof FetchError) {
|
|
@@ -37750,7 +38119,7 @@ class ChartViewComponent {
|
|
|
37750
38119
|
this.changeDetector.detectChanges();
|
|
37751
38120
|
}
|
|
37752
38121
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, deps: [{ token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37753
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { cacheActive: "cacheActive", 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
|
|
38122
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChartViewComponent, isStandalone: true, selector: "gn-ui-chart-view", inputs: { featureCatalog: "featureCatalog", cacheActive: "cacheActive", 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 <ng-container *ngIf=\"yChoices$ | async as yChoices\">\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices\"\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 </ng-container>\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 *ngIf=\"!error\"\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [prettyLabel]=\"prettyLabel$ | async\"\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=\"matErrorOutlineOutline\"\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: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: 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" }, { kind: "component", type: ChartComponent, selector: "gn-ui-chart", inputs: ["data", "labelProperty", "prettyLabel", "valueProperty", "secondaryValueProperty", "type"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37754
38123
|
}
|
|
37755
38124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartViewComponent, decorators: [{
|
|
37756
38125
|
type: Component,
|
|
@@ -37761,8 +38130,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37761
38130
|
ChartComponent,
|
|
37762
38131
|
LoadingMaskComponent,
|
|
37763
38132
|
PopupAlertComponent,
|
|
37764
|
-
], standalone: true, 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
|
|
37765
|
-
}], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: {
|
|
38133
|
+
], standalone: true, 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 <ng-container *ngIf=\"yChoices$ | async as yChoices\">\n <gn-ui-dropdown-selector\n class=\"basis-1/4\"\n *ngIf=\"!isCountAggregation\"\n [choices]=\"yChoices\"\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 </ng-container>\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 *ngIf=\"!error\"\n [data]=\"chartData$ | async\"\n [type]=\"chartType$.value\"\n [prettyLabel]=\"prettyLabel$ | async\"\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=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n</div>\n" }]
|
|
38134
|
+
}], ctorParameters: () => [{ type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { featureCatalog: [{
|
|
38135
|
+
type: Input
|
|
38136
|
+
}], cacheActive: [{
|
|
37766
38137
|
type: Input
|
|
37767
38138
|
}], link: [{
|
|
37768
38139
|
type: Input
|
|
@@ -37915,7 +38286,7 @@ class GeoTableViewComponent {
|
|
|
37915
38286
|
this.subscription.unsubscribe();
|
|
37916
38287
|
}
|
|
37917
38288
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37918
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoTableViewComponent, isStandalone: true, selector: "gn-ui-geo-table-view", inputs: { dataset: "dataset" }, viewQueries: [{ propertyName: "uiTable", first: true, predicate: ["table"], descendants: true }, { propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-data-table\n #table\n class=\"w-1/2 overflow-auto\"\n [dataset]=\"dataset\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38289
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: GeoTableViewComponent, isStandalone: true, selector: "gn-ui-geo-table-view", inputs: { dataset: "dataset" }, viewQueries: [{ propertyName: "uiTable", first: true, predicate: ["table"], descendants: true }, { propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-row h-full overflow-auto\">\n <gn-ui-data-table\n #table\n class=\"w-1/2 overflow-auto\"\n [dataset]=\"dataset\"\n [activeId]=\"selectionId\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-map-container\n #mapContainer\n class=\"w-1/2 h-full\"\n [context]=\"mapContext\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n ></gn-ui-map-container>\n <gn-ui-feature-detail\n style=\"width: 300px\"\n class=\"p-3 shrink-0 overflow-auto\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature", "featureCatalog"] }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["featureAttributes", "dataset", "activeId"], outputs: ["selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37919
38290
|
}
|
|
37920
38291
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GeoTableViewComponent, decorators: [{
|
|
37921
38292
|
type: Component,
|
|
@@ -37937,6 +38308,7 @@ class TableViewComponent {
|
|
|
37937
38308
|
constructor(dataService, translateService) {
|
|
37938
38309
|
this.dataService = dataService;
|
|
37939
38310
|
this.translateService = translateService;
|
|
38311
|
+
this.featureAttributes = [];
|
|
37940
38312
|
this.cacheActive = true;
|
|
37941
38313
|
this.currentLink$ = new BehaviorSubject(null);
|
|
37942
38314
|
this.loading = false;
|
|
@@ -37950,7 +38322,7 @@ class TableViewComponent {
|
|
|
37950
38322
|
return of([]);
|
|
37951
38323
|
}
|
|
37952
38324
|
this.loading = true;
|
|
37953
|
-
return this.getDatasetReader(link).pipe(catchError((error) => {
|
|
38325
|
+
return this.getDatasetReader(link).pipe(tap$1((dataset) => this.setProperties(dataset)), catchError((error) => {
|
|
37954
38326
|
this.handleError(error);
|
|
37955
38327
|
return of(undefined);
|
|
37956
38328
|
}), finalize(() => {
|
|
@@ -37981,8 +38353,24 @@ class TableViewComponent {
|
|
|
37981
38353
|
}
|
|
37982
38354
|
this.loading = false;
|
|
37983
38355
|
}
|
|
38356
|
+
setProperties(dataset) {
|
|
38357
|
+
dataset.properties.then((properties) => {
|
|
38358
|
+
const updatedProperties = properties.map((p) => {
|
|
38359
|
+
let label = p.name;
|
|
38360
|
+
if (this.featureCatalog) {
|
|
38361
|
+
const attributes = this.featureCatalog.featureTypes[0].attributes;
|
|
38362
|
+
const matchingAttribute = attributes.find((attr) => attr.name === p.name);
|
|
38363
|
+
if (matchingAttribute && matchingAttribute.code) {
|
|
38364
|
+
label = matchingAttribute.code;
|
|
38365
|
+
}
|
|
38366
|
+
}
|
|
38367
|
+
return { value: p.name, label };
|
|
38368
|
+
});
|
|
38369
|
+
this.featureAttributes = updatedProperties;
|
|
38370
|
+
});
|
|
38371
|
+
}
|
|
37984
38372
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, deps: [{ token: DataService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37985
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { cacheActive: "cacheActive", link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <ng-content *ngIf=\"error\">\n <div class=\"border border-gray-300 rounded-lg bg-white h-full\"></div>\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["dataset", "activeId"], outputs: ["selected"] }, { 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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38373
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableViewComponent, isStandalone: true, selector: "gn-ui-table-view", inputs: { featureCatalog: "featureCatalog", cacheActive: "cacheActive", link: "link" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n [featureAttributes]=\"featureAttributes\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <ng-content *ngIf=\"error\">\n <div class=\"border border-gray-300 rounded-lg bg-white h-full\"></div>\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DataTableComponent, selector: "gn-ui-data-table", inputs: ["featureAttributes", "dataset", "activeId"], outputs: ["selected"] }, { 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: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
37986
38374
|
}
|
|
37987
38375
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableViewComponent, decorators: [{
|
|
37988
38376
|
type: Component,
|
|
@@ -37992,8 +38380,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37992
38380
|
LoadingMaskComponent,
|
|
37993
38381
|
PopupAlertComponent,
|
|
37994
38382
|
TranslateModule,
|
|
37995
|
-
], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <ng-content *ngIf=\"error\">\n <div class=\"border border-gray-300 rounded-lg bg-white h-full\"></div>\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </ng-content>\n </div>\n</div>\n" }]
|
|
37996
|
-
}], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: {
|
|
38383
|
+
], standalone: true, template: "<div class=\"w-full h-full flex flex-col\">\n <div class=\"relative h-full\">\n <gn-ui-data-table\n *ngIf=\"tableData$ | async as dataset\"\n class=\"overflow-auto grow\"\n [dataset]=\"dataset\"\n [featureAttributes]=\"featureAttributes\"\n (selected)=\"onTableSelect($event)\"\n ></gn-ui-data-table>\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <ng-content *ngIf=\"error\">\n <div class=\"border border-gray-300 rounded-lg bg-white h-full\"></div>\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </ng-content>\n </div>\n</div>\n" }]
|
|
38384
|
+
}], ctorParameters: () => [{ type: DataService }, { type: i1$1.TranslateService }], propDecorators: { featureCatalog: [{
|
|
38385
|
+
type: Input
|
|
38386
|
+
}], cacheActive: [{
|
|
37997
38387
|
type: Input
|
|
37998
38388
|
}], link: [{
|
|
37999
38389
|
type: Input
|
|
@@ -38026,17 +38416,9 @@ class MdViewFacade {
|
|
|
38026
38416
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
38027
38417
|
this.related$ = this.store.pipe(select(getRelated));
|
|
38028
38418
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
38029
|
-
this.allLinks$ = this.metadata$.pipe(map$1((record) =>
|
|
38030
|
-
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links
|
|
38031
|
-
|
|
38032
|
-
// Put links to IGN Géoplateforme first
|
|
38033
|
-
.sort((dd1, dd2) => {
|
|
38034
|
-
return dd2
|
|
38035
|
-
.accessServiceProtocol === 'GPFDL'
|
|
38036
|
-
? 1
|
|
38037
|
-
: undefined; // do not change the sorting otherwise
|
|
38038
|
-
})));
|
|
38039
|
-
this.mapApiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API))));
|
|
38419
|
+
this.allLinks$ = this.metadata$.pipe(map$1((record) => 'onlineResources' in record ? record.onlineResources : []), shareReplay(1));
|
|
38420
|
+
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))), shareReplay(1));
|
|
38421
|
+
this.mapApiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.MAP_API))), shareReplay(1));
|
|
38040
38422
|
this.downloadLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DOWNLOAD))));
|
|
38041
38423
|
this.dataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.DATA))));
|
|
38042
38424
|
this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
|
|
@@ -38095,6 +38477,12 @@ class MdViewFacade {
|
|
|
38095
38477
|
loadUserFeedbacks(datasetUuid) {
|
|
38096
38478
|
this.store.dispatch(loadUserFeedbacks({ datasetUuid }));
|
|
38097
38479
|
}
|
|
38480
|
+
/**
|
|
38481
|
+
* loadFeatureCatalog
|
|
38482
|
+
*/
|
|
38483
|
+
loadFeatureCatalog(metadata) {
|
|
38484
|
+
this.store.dispatch(loadFeatureCatalog({ metadata }));
|
|
38485
|
+
}
|
|
38098
38486
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewFacade, deps: [{ token: i1$3.Store }, { token: LinkClassifierService }, { token: AvatarServiceInterface }, { token: DataService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38099
38487
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewFacade }); }
|
|
38100
38488
|
}
|
|
@@ -38147,12 +38535,12 @@ class MdViewEffects {
|
|
|
38147
38535
|
}));
|
|
38148
38536
|
})))));
|
|
38149
38537
|
}
|
|
38150
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$
|
|
38538
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$b.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }, { token: i1$c.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38151
38539
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects }); }
|
|
38152
38540
|
}
|
|
38153
38541
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
38154
38542
|
type: Injectable
|
|
38155
|
-
}], ctorParameters: () => [{ type: i1$
|
|
38543
|
+
}], ctorParameters: () => [{ type: i1$b.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }, { type: i1$c.Router }] });
|
|
38156
38544
|
|
|
38157
38545
|
class CatalogTitleComponent {
|
|
38158
38546
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CatalogTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -38576,7 +38964,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38576
38964
|
|
|
38577
38965
|
class FeatureRecordModule {
|
|
38578
38966
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureRecordModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
38579
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: FeatureRecordModule, imports: [CommonModule, i1$3.StoreFeatureModule, i1$
|
|
38967
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: FeatureRecordModule, imports: [CommonModule, i1$3.StoreFeatureModule, i1$b.EffectsFeatureModule, UiLayoutModule,
|
|
38580
38968
|
FeatureMapModule,
|
|
38581
38969
|
FeatureCatalogModule,
|
|
38582
38970
|
UiInputsModule,
|
|
@@ -38748,7 +39136,7 @@ class DataViewComponent {
|
|
|
38748
39136
|
.subscribe();
|
|
38749
39137
|
}
|
|
38750
39138
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, deps: [{ token: MdViewFacade }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38751
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource", exceedsLimit: "exceedsLimit" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"w-full py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"h-[44px] w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <ng-container *ngIf=\"hidePreview; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { 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: ["cacheActive", "link"] }, { 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: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["cacheActive", "link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataViewComponent, isStandalone: true, selector: "gn-ui-data-view", inputs: { mode: "mode", displaySource: "displaySource", exceedsLimit: "exceedsLimit" }, outputs: { chartConfig$: "chartConfig$" }, ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"w-full py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"h-[44px] w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <ng-container *ngIf=\"hidePreview; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { 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: ["featureCatalog", "cacheActive", "link"] }, { 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: "component", type: ChartViewComponent, selector: "gn-ui-chart-view", inputs: ["featureCatalog", "cacheActive", "link", "aggregation", "xProperty", "yProperty", "chartType"], outputs: ["chartConfig$"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
38752
39140
|
}
|
|
38753
39141
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataViewComponent, decorators: [{
|
|
38754
39142
|
type: Component,
|
|
@@ -38759,7 +39147,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38759
39147
|
TranslateModule,
|
|
38760
39148
|
ChartViewComponent,
|
|
38761
39149
|
PopupAlertComponent,
|
|
38762
|
-
], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"w-full py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"h-[44px] w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <ng-container *ngIf=\"hidePreview; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\n" }]
|
|
39150
|
+
], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"w-full py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"dropdownChoices$ | async as choices\"\n [ngClass]=\"{ hidden: !displaySource }\"\n [title]=\"'table.select.data' | translate\"\n class=\"h-[44px] w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [choices]=\"choices\"\n (selectValue)=\"selectLink($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <ng-container *ngIf=\"hidePreview; else dataView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #dataView>\n <div class=\"relative h-[460px]\">\n <gn-ui-table-view\n *ngIf=\"mode === 'table'\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n ></gn-ui-table-view>\n <gn-ui-chart-view\n *ngIf=\"mode === 'chart'\"\n (chartConfig$)=\"setChartConfig($event)\"\n [cacheActive]=\"cacheActive$ | async\"\n [link]=\"selectedLink$ | async\"\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n ></gn-ui-chart-view>\n </div>\n </ng-template>\n</div>\n" }]
|
|
38763
39151
|
}], ctorParameters: () => [{ type: MdViewFacade }], propDecorators: { mode: [{
|
|
38764
39152
|
type: Input
|
|
38765
39153
|
}], displaySource: [{
|
|
@@ -38933,196 +39321,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
38933
39321
|
type: Input
|
|
38934
39322
|
}] } });
|
|
38935
39323
|
|
|
38936
|
-
marker('map.dropdown.placeholder');
|
|
38937
|
-
marker('wfs.feature.limit');
|
|
38938
|
-
marker('dataset.error.restrictedAccess');
|
|
38939
|
-
class MapViewComponent {
|
|
38940
|
-
set exceedsLimit(value) {
|
|
38941
|
-
this.excludeWfs$.next(value);
|
|
38942
|
-
}
|
|
38943
|
-
toggleLegend() {
|
|
38944
|
-
this.showLegend = !this.showLegend;
|
|
38945
|
-
}
|
|
38946
|
-
onLegendStatusChange(status) {
|
|
38947
|
-
this.legendExists = status;
|
|
38948
|
-
}
|
|
38949
|
-
constructor(mdViewFacade, mapUtils, dataService, changeRef, translateService) {
|
|
38950
|
-
this.mdViewFacade = mdViewFacade;
|
|
38951
|
-
this.mapUtils = mapUtils;
|
|
38952
|
-
this.dataService = dataService;
|
|
38953
|
-
this.changeRef = changeRef;
|
|
38954
|
-
this.translateService = translateService;
|
|
38955
|
-
this.displaySource = true;
|
|
38956
|
-
this.excludeWfs$ = new BehaviorSubject(false);
|
|
38957
|
-
this.hidePreview = false;
|
|
38958
|
-
this.showLegend = true;
|
|
38959
|
-
this.legendExists = false;
|
|
38960
|
-
this.compatibleMapLinks$ = combineLatest([
|
|
38961
|
-
this.mdViewFacade.mapApiLinks$,
|
|
38962
|
-
this.mdViewFacade.geoDataLinksWithGeometry$,
|
|
38963
|
-
]).pipe(map$1(([mapApiLinks, geoDataLinksWithGeometry]) => {
|
|
38964
|
-
return [...mapApiLinks, ...geoDataLinksWithGeometry];
|
|
38965
|
-
}));
|
|
38966
|
-
this.dropdownChoices$ = this.compatibleMapLinks$.pipe(map$1((links) => links.length
|
|
38967
|
-
? links.map((link, index) => ({
|
|
38968
|
-
label: getLinkLabel(link),
|
|
38969
|
-
value: index,
|
|
38970
|
-
}))
|
|
38971
|
-
: [{ label: 'map.dropdown.placeholder', value: 0 }]));
|
|
38972
|
-
this.selectedLinkIndex$ = new BehaviorSubject(0);
|
|
38973
|
-
this.loading = false;
|
|
38974
|
-
this.error = null;
|
|
38975
|
-
this.selectedLink$ = combineLatest([
|
|
38976
|
-
this.compatibleMapLinks$,
|
|
38977
|
-
this.selectedLinkIndex$.pipe(distinctUntilChanged()),
|
|
38978
|
-
]).pipe(map$1(([links, index]) => links[index]));
|
|
38979
|
-
this.currentLayers$ = combineLatest([this.selectedLink$, this.excludeWfs$]).pipe(switchMap$1(([link, excludeWfs]) => {
|
|
38980
|
-
if (!link) {
|
|
38981
|
-
return of([]);
|
|
38982
|
-
}
|
|
38983
|
-
if (excludeWfs && link.accessServiceProtocol === 'wfs') {
|
|
38984
|
-
this.hidePreview = true;
|
|
38985
|
-
return of([]);
|
|
38986
|
-
}
|
|
38987
|
-
this.hidePreview = false;
|
|
38988
|
-
this.loading = true;
|
|
38989
|
-
this.error = null;
|
|
38990
|
-
if (link.accessRestricted) {
|
|
38991
|
-
this.handleError('dataset.error.restrictedAccess');
|
|
38992
|
-
return of([]);
|
|
38993
|
-
}
|
|
38994
|
-
return this.getLayerFromLink(link).pipe(map$1((layer) => [layer]), catchError((e) => {
|
|
38995
|
-
this.handleError(e);
|
|
38996
|
-
return of([]);
|
|
38997
|
-
}), finalize(() => (this.loading = false)));
|
|
38998
|
-
}));
|
|
38999
|
-
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => from(createViewFromLayer(layers[0])).pipe(catchError(() => of(null)), // could not zoom on the layer: use the record extent
|
|
39000
|
-
map$1((view) => ({
|
|
39001
|
-
layers,
|
|
39002
|
-
view,
|
|
39003
|
-
})), tap$1(() => {
|
|
39004
|
-
this.resetSelection();
|
|
39005
|
-
}))), startWith$1({
|
|
39006
|
-
layers: [],
|
|
39007
|
-
view: null,
|
|
39008
|
-
}), withLatestFrom$1(this.mdViewFacade.metadata$), map$1(([context, metadata]) => {
|
|
39009
|
-
if (context.view)
|
|
39010
|
-
return context;
|
|
39011
|
-
const extent = this.mapUtils.getRecordExtent(metadata);
|
|
39012
|
-
const view = extent ? { extent } : null;
|
|
39013
|
-
return {
|
|
39014
|
-
...context,
|
|
39015
|
-
view,
|
|
39016
|
-
};
|
|
39017
|
-
}), shareReplay(1));
|
|
39018
|
-
}
|
|
39019
|
-
async ngAfterViewInit() {
|
|
39020
|
-
const map = await this.mapContainer.openlayersMap;
|
|
39021
|
-
prioritizePageScroll(map.getInteractions());
|
|
39022
|
-
}
|
|
39023
|
-
onMapFeatureSelect(features) {
|
|
39024
|
-
this.resetSelection();
|
|
39025
|
-
this.selection = features?.length > 0 && features[0];
|
|
39026
|
-
if (this.selection) {
|
|
39027
|
-
// FIXME: restore styling of selected feature
|
|
39028
|
-
// this.selection.setStyle(this.selectionStyle)
|
|
39029
|
-
}
|
|
39030
|
-
this.changeRef.detectChanges();
|
|
39031
|
-
}
|
|
39032
|
-
onSourceLoadError(error) {
|
|
39033
|
-
if (error.httpStatus === 403 || error.httpStatus === 401) {
|
|
39034
|
-
this.error = this.translateService.instant(`dataset.error.forbidden`);
|
|
39035
|
-
}
|
|
39036
|
-
else {
|
|
39037
|
-
this.error = this.translateService.instant(`dataset.error.http`, {
|
|
39038
|
-
info: error.httpStatus,
|
|
39039
|
-
});
|
|
39040
|
-
}
|
|
39041
|
-
}
|
|
39042
|
-
resetSelection() {
|
|
39043
|
-
if (this.selection) {
|
|
39044
|
-
// FIXME: restore styling of selected feature
|
|
39045
|
-
// this.selection.setStyle(null)
|
|
39046
|
-
}
|
|
39047
|
-
this.selection = null;
|
|
39048
|
-
}
|
|
39049
|
-
getLayerFromLink(link) {
|
|
39050
|
-
if (link.type === 'service' && link.accessServiceProtocol === 'wms') {
|
|
39051
|
-
return of({
|
|
39052
|
-
url: link.url.toString(),
|
|
39053
|
-
type: 'wms',
|
|
39054
|
-
name: link.name,
|
|
39055
|
-
});
|
|
39056
|
-
}
|
|
39057
|
-
else if (link.type === 'service' &&
|
|
39058
|
-
link.accessServiceProtocol === 'wmts') {
|
|
39059
|
-
return of({
|
|
39060
|
-
url: link.url.toString(),
|
|
39061
|
-
type: 'wmts',
|
|
39062
|
-
name: link.name,
|
|
39063
|
-
});
|
|
39064
|
-
}
|
|
39065
|
-
else if ((link.type === 'service' &&
|
|
39066
|
-
(link.accessServiceProtocol === 'wfs' ||
|
|
39067
|
-
link.accessServiceProtocol === 'esriRest' ||
|
|
39068
|
-
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
39069
|
-
link.type === 'download') {
|
|
39070
|
-
const cacheActive = true; // TODO implement whether should be true or false
|
|
39071
|
-
return this.dataService.readAsGeoJson(link, cacheActive).pipe(map$1((data) => ({
|
|
39072
|
-
type: 'geojson',
|
|
39073
|
-
data,
|
|
39074
|
-
})));
|
|
39075
|
-
}
|
|
39076
|
-
return throwError(() => 'protocol not supported');
|
|
39077
|
-
}
|
|
39078
|
-
selectLinkToDisplay(link) {
|
|
39079
|
-
this.selectedLinkIndex$.next(link);
|
|
39080
|
-
}
|
|
39081
|
-
handleError(error) {
|
|
39082
|
-
if (error instanceof FetchError) {
|
|
39083
|
-
this.error = this.translateService.instant(`dataset.error.${error.type}`, {
|
|
39084
|
-
info: error.info,
|
|
39085
|
-
});
|
|
39086
|
-
console.warn(error.message);
|
|
39087
|
-
}
|
|
39088
|
-
else if (error instanceof Error) {
|
|
39089
|
-
this.error = this.translateService.instant(error.message);
|
|
39090
|
-
console.warn(error.stack || error);
|
|
39091
|
-
}
|
|
39092
|
-
else {
|
|
39093
|
-
this.error = this.translateService.instant(error);
|
|
39094
|
-
console.warn(error);
|
|
39095
|
-
}
|
|
39096
|
-
this.loading = false;
|
|
39097
|
-
this.changeRef.detectChanges();
|
|
39098
|
-
}
|
|
39099
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapUtilsService }, { token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39100
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", displaySource: "displaySource" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <div class=\"grow min-w-0\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <div class=\"self-end\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\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 <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\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=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { 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: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "extraClass"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: MapLegendComponent, selector: "gn-ui-map-legend", inputs: ["context"], outputs: ["legendStatusChange"] }], viewProviders: [provideIcons({ matClose })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39101
|
-
}
|
|
39102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
39103
|
-
type: Component,
|
|
39104
|
-
args: [{ selector: 'gn-ui-map-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
39105
|
-
CommonModule,
|
|
39106
|
-
DropdownSelectorComponent,
|
|
39107
|
-
MapContainerComponent,
|
|
39108
|
-
FeatureDetailComponent,
|
|
39109
|
-
PopupAlertComponent,
|
|
39110
|
-
TranslateModule,
|
|
39111
|
-
LoadingMaskComponent,
|
|
39112
|
-
NgIconComponent,
|
|
39113
|
-
ExternalViewerButtonComponent,
|
|
39114
|
-
ButtonComponent,
|
|
39115
|
-
MapLegendComponent,
|
|
39116
|
-
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <div class=\"grow min-w-0\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <div class=\"self-end\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\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 <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail [feature]=\"selection\"></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\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=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n" }]
|
|
39117
|
-
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { exceedsLimit: [{
|
|
39118
|
-
type: Input
|
|
39119
|
-
}], displaySource: [{
|
|
39120
|
-
type: Input
|
|
39121
|
-
}], mapContainer: [{
|
|
39122
|
-
type: ViewChild,
|
|
39123
|
-
args: ['mapContainer']
|
|
39124
|
-
}] } });
|
|
39125
|
-
|
|
39126
39324
|
class GpfApiDlListItemComponent {
|
|
39127
39325
|
constructor(http) {
|
|
39128
39326
|
this.http = http;
|
|
@@ -39314,6 +39512,222 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39314
39512
|
type: Input
|
|
39315
39513
|
}] } });
|
|
39316
39514
|
|
|
39515
|
+
marker('map.dropdown.placeholder');
|
|
39516
|
+
marker('wfs.feature.limit');
|
|
39517
|
+
marker('dataset.error.restrictedAccess');
|
|
39518
|
+
class MapViewComponent {
|
|
39519
|
+
set exceedsLimit(value) {
|
|
39520
|
+
this.excludeWfs$.next(value);
|
|
39521
|
+
}
|
|
39522
|
+
toggleLegend() {
|
|
39523
|
+
this.showLegend = !this.showLegend;
|
|
39524
|
+
}
|
|
39525
|
+
onLegendStatusChange(status) {
|
|
39526
|
+
this.legendExists = status;
|
|
39527
|
+
}
|
|
39528
|
+
constructor(mdViewFacade, mapUtils, dataService, changeRef, translateService) {
|
|
39529
|
+
this.mdViewFacade = mdViewFacade;
|
|
39530
|
+
this.mapUtils = mapUtils;
|
|
39531
|
+
this.dataService = dataService;
|
|
39532
|
+
this.changeRef = changeRef;
|
|
39533
|
+
this.translateService = translateService;
|
|
39534
|
+
this.displaySource = true;
|
|
39535
|
+
this.excludeWfs$ = new BehaviorSubject(false);
|
|
39536
|
+
this.hidePreview = false;
|
|
39537
|
+
this.showLegend = true;
|
|
39538
|
+
this.legendExists = false;
|
|
39539
|
+
this.compatibleMapLinks$ = combineLatest([
|
|
39540
|
+
this.mdViewFacade.mapApiLinks$,
|
|
39541
|
+
this.mdViewFacade.geoDataLinksWithGeometry$,
|
|
39542
|
+
]).pipe(switchMap$1(async ([mapApiLinks, geoDataLinksWithGeometry]) => {
|
|
39543
|
+
// looking for TMS links to process
|
|
39544
|
+
let processedMapApiLinks = await Promise.all(mapApiLinks.map((link) => {
|
|
39545
|
+
if (link.type === 'service' && link.accessServiceProtocol === 'tms') {
|
|
39546
|
+
return this.dataService.getGeodataLinksFromTms(link);
|
|
39547
|
+
}
|
|
39548
|
+
return link;
|
|
39549
|
+
}));
|
|
39550
|
+
processedMapApiLinks = processedMapApiLinks.flat();
|
|
39551
|
+
return [...processedMapApiLinks, ...geoDataLinksWithGeometry];
|
|
39552
|
+
}), shareReplay(1));
|
|
39553
|
+
this.dropdownChoices$ = this.compatibleMapLinks$.pipe(map$1((links) => links.length
|
|
39554
|
+
? links.map((link, index) => ({
|
|
39555
|
+
label: getLinkLabel(link),
|
|
39556
|
+
value: index,
|
|
39557
|
+
}))
|
|
39558
|
+
: [{ label: 'map.dropdown.placeholder', value: 0 }]));
|
|
39559
|
+
this.selectedLinkIndex$ = new BehaviorSubject(0);
|
|
39560
|
+
this.loading = false;
|
|
39561
|
+
this.error = null;
|
|
39562
|
+
this.selectedLink$ = combineLatest([
|
|
39563
|
+
this.compatibleMapLinks$,
|
|
39564
|
+
this.selectedLinkIndex$.pipe(distinctUntilChanged()),
|
|
39565
|
+
]).pipe(map$1(([links, index]) => links[index]));
|
|
39566
|
+
this.currentLayers$ = combineLatest([this.selectedLink$, this.excludeWfs$]).pipe(switchMap$1(([link, excludeWfs]) => {
|
|
39567
|
+
if (!link) {
|
|
39568
|
+
return of([]);
|
|
39569
|
+
}
|
|
39570
|
+
if (excludeWfs && link.accessServiceProtocol === 'wfs') {
|
|
39571
|
+
this.hidePreview = true;
|
|
39572
|
+
return of([]);
|
|
39573
|
+
}
|
|
39574
|
+
this.hidePreview = false;
|
|
39575
|
+
this.loading = true;
|
|
39576
|
+
this.error = null;
|
|
39577
|
+
if (link.accessRestricted) {
|
|
39578
|
+
this.handleError('dataset.error.restrictedAccess');
|
|
39579
|
+
return of([]);
|
|
39580
|
+
}
|
|
39581
|
+
return this.getLayerFromLink(link).pipe(map$1((layer) => [layer]), catchError((e) => {
|
|
39582
|
+
this.handleError(e);
|
|
39583
|
+
return of([]);
|
|
39584
|
+
}), finalize(() => (this.loading = false)));
|
|
39585
|
+
}));
|
|
39586
|
+
this.mapContext$ = this.currentLayers$.pipe(switchMap$1((layers) => from(createViewFromLayer(layers[0])).pipe(catchError(() => of(null)), // could not zoom on the layer: use the record extent
|
|
39587
|
+
map$1((view) => ({
|
|
39588
|
+
layers,
|
|
39589
|
+
view,
|
|
39590
|
+
})), tap$1(() => {
|
|
39591
|
+
this.resetSelection();
|
|
39592
|
+
}))), startWith$1({
|
|
39593
|
+
layers: [],
|
|
39594
|
+
view: null,
|
|
39595
|
+
}), withLatestFrom$1(this.mdViewFacade.metadata$), map$1(([context, metadata]) => {
|
|
39596
|
+
if (context.view)
|
|
39597
|
+
return context;
|
|
39598
|
+
const extent = this.mapUtils.getRecordExtent(metadata);
|
|
39599
|
+
const view = extent ? { extent } : null;
|
|
39600
|
+
return {
|
|
39601
|
+
...context,
|
|
39602
|
+
view,
|
|
39603
|
+
};
|
|
39604
|
+
}), shareReplay(1));
|
|
39605
|
+
}
|
|
39606
|
+
async ngAfterViewInit() {
|
|
39607
|
+
const map = await this.mapContainer.openlayersMap;
|
|
39608
|
+
prioritizePageScroll(map.getInteractions());
|
|
39609
|
+
}
|
|
39610
|
+
onMapFeatureSelect(features) {
|
|
39611
|
+
this.resetSelection();
|
|
39612
|
+
this.selection = features?.length > 0 && features[0];
|
|
39613
|
+
if (this.selection) {
|
|
39614
|
+
// FIXME: restore styling of selected feature
|
|
39615
|
+
// this.selection.setStyle(this.selectionStyle)
|
|
39616
|
+
}
|
|
39617
|
+
this.changeRef.detectChanges();
|
|
39618
|
+
}
|
|
39619
|
+
onSourceLoadError(error) {
|
|
39620
|
+
if (error.httpStatus === 403 || error.httpStatus === 401) {
|
|
39621
|
+
this.error = this.translateService.instant(`dataset.error.forbidden`);
|
|
39622
|
+
}
|
|
39623
|
+
else {
|
|
39624
|
+
this.error = this.translateService.instant(`dataset.error.http`, {
|
|
39625
|
+
info: error.httpStatus,
|
|
39626
|
+
});
|
|
39627
|
+
}
|
|
39628
|
+
}
|
|
39629
|
+
resetSelection() {
|
|
39630
|
+
if (this.selection) {
|
|
39631
|
+
// FIXME: restore styling of selected feature
|
|
39632
|
+
// this.selection.setStyle(null)
|
|
39633
|
+
}
|
|
39634
|
+
this.selection = null;
|
|
39635
|
+
}
|
|
39636
|
+
getLayerFromLink(link) {
|
|
39637
|
+
if (link.type === 'service' && link.accessServiceProtocol === 'wms') {
|
|
39638
|
+
return of({
|
|
39639
|
+
url: link.url.toString(),
|
|
39640
|
+
type: 'wms',
|
|
39641
|
+
name: link.name,
|
|
39642
|
+
});
|
|
39643
|
+
}
|
|
39644
|
+
else if (link.type === 'service' &&
|
|
39645
|
+
link.accessServiceProtocol === 'tms') {
|
|
39646
|
+
// FIXME: here we're assuming that the TMS serves vector tiles only; should be checked with ogc-client first
|
|
39647
|
+
return of({
|
|
39648
|
+
url: link.url.toString().replace(/\/?$/, '/{z}/{x}/{y}.pbf'),
|
|
39649
|
+
type: 'xyz',
|
|
39650
|
+
tileFormat: 'application/vnd.mapbox-vector-tile',
|
|
39651
|
+
name: link.name,
|
|
39652
|
+
});
|
|
39653
|
+
}
|
|
39654
|
+
else if (link.type === 'service' &&
|
|
39655
|
+
link.accessServiceProtocol === 'maplibre-style') {
|
|
39656
|
+
return of({
|
|
39657
|
+
type: 'maplibre-style',
|
|
39658
|
+
name: link.name,
|
|
39659
|
+
styleUrl: link.url.toString(),
|
|
39660
|
+
});
|
|
39661
|
+
}
|
|
39662
|
+
else if (link.type === 'service' &&
|
|
39663
|
+
link.accessServiceProtocol === 'wmts') {
|
|
39664
|
+
return of({
|
|
39665
|
+
url: link.url.toString(),
|
|
39666
|
+
type: 'wmts',
|
|
39667
|
+
name: link.name,
|
|
39668
|
+
});
|
|
39669
|
+
}
|
|
39670
|
+
else if ((link.type === 'service' &&
|
|
39671
|
+
(link.accessServiceProtocol === 'wfs' ||
|
|
39672
|
+
link.accessServiceProtocol === 'esriRest' ||
|
|
39673
|
+
link.accessServiceProtocol === 'ogcFeatures')) ||
|
|
39674
|
+
link.type === 'download') {
|
|
39675
|
+
const cacheActive = true; // TODO implement whether should be true or false
|
|
39676
|
+
return this.dataService.readAsGeoJson(link, cacheActive).pipe(map$1((data) => ({
|
|
39677
|
+
type: 'geojson',
|
|
39678
|
+
data,
|
|
39679
|
+
})));
|
|
39680
|
+
}
|
|
39681
|
+
return throwError(() => 'protocol not supported');
|
|
39682
|
+
}
|
|
39683
|
+
selectLinkToDisplay(link) {
|
|
39684
|
+
this.selectedLinkIndex$.next(link);
|
|
39685
|
+
}
|
|
39686
|
+
handleError(error) {
|
|
39687
|
+
if (error instanceof FetchError) {
|
|
39688
|
+
this.error = this.translateService.instant(`dataset.error.${error.type}`, {
|
|
39689
|
+
info: error.info,
|
|
39690
|
+
});
|
|
39691
|
+
console.warn(error.message);
|
|
39692
|
+
}
|
|
39693
|
+
else if (error instanceof Error) {
|
|
39694
|
+
this.error = this.translateService.instant(error.message);
|
|
39695
|
+
console.warn(error.stack || error);
|
|
39696
|
+
}
|
|
39697
|
+
else {
|
|
39698
|
+
this.error = this.translateService.instant(error);
|
|
39699
|
+
console.warn(error);
|
|
39700
|
+
}
|
|
39701
|
+
this.loading = false;
|
|
39702
|
+
this.changeRef.detectChanges();
|
|
39703
|
+
}
|
|
39704
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapUtilsService }, { token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39705
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", displaySource: "displaySource" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <div class=\"grow min-w-0\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <div class=\"self-end\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\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 <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\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=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature", "featureCatalog"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { 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: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "extraClass"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: MapLegendComponent, selector: "gn-ui-map-legend", inputs: ["context"], outputs: ["legendStatusChange"] }], viewProviders: [provideIcons({ matClose })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39706
|
+
}
|
|
39707
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
39708
|
+
type: Component,
|
|
39709
|
+
args: [{ selector: 'gn-ui-map-view', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
39710
|
+
CommonModule,
|
|
39711
|
+
DropdownSelectorComponent,
|
|
39712
|
+
MapContainerComponent,
|
|
39713
|
+
FeatureDetailComponent,
|
|
39714
|
+
PopupAlertComponent,
|
|
39715
|
+
TranslateModule,
|
|
39716
|
+
LoadingMaskComponent,
|
|
39717
|
+
NgIconComponent,
|
|
39718
|
+
ExternalViewerButtonComponent,
|
|
39719
|
+
ButtonComponent,
|
|
39720
|
+
MapLegendComponent,
|
|
39721
|
+
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <div class=\"grow min-w-0\">\n <gn-ui-dropdown-selector\n [ngClass]=\"{ hidden: !displaySource }\"\n class=\"w-full\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </div>\n <div class=\"self-end\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\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 <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\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=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n" }]
|
|
39722
|
+
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { exceedsLimit: [{
|
|
39723
|
+
type: Input
|
|
39724
|
+
}], displaySource: [{
|
|
39725
|
+
type: Input
|
|
39726
|
+
}], mapContainer: [{
|
|
39727
|
+
type: ViewChild,
|
|
39728
|
+
args: ['mapContainer']
|
|
39729
|
+
}] } });
|
|
39730
|
+
|
|
39317
39731
|
class RecordMetaComponent {
|
|
39318
39732
|
constructor(meta) {
|
|
39319
39733
|
this.meta = meta;
|
|
@@ -39340,7 +39754,7 @@ class RecordMetaComponent {
|
|
|
39340
39754
|
this.meta.removeTag('property="og:url"');
|
|
39341
39755
|
this.meta.removeTag('property="og:title"');
|
|
39342
39756
|
}
|
|
39343
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$
|
|
39757
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, deps: [{ token: i1$d.Meta }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39344
39758
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RecordMetaComponent, isStandalone: true, selector: "gn-ui-record-meta", inputs: { metadata: "metadata" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
39345
39759
|
}
|
|
39346
39760
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RecordMetaComponent, decorators: [{
|
|
@@ -39351,7 +39765,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39351
39765
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
39352
39766
|
standalone: true,
|
|
39353
39767
|
}]
|
|
39354
|
-
}], ctorParameters: () => [{ type: i1$
|
|
39768
|
+
}], ctorParameters: () => [{ type: i1$d.Meta }], propDecorators: { metadata: [{
|
|
39355
39769
|
type: Input
|
|
39356
39770
|
}] } });
|
|
39357
39771
|
|
|
@@ -40151,7 +40565,7 @@ class WizardFieldComponent {
|
|
|
40151
40565
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
40152
40566
|
},
|
|
40153
40567
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
40154
|
-
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], 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 placeholder=\"\"\n ></gn-ui-text-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:#fff;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$2.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: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i1$
|
|
40568
|
+
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], 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 placeholder=\"\"\n ></gn-ui-text-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:#fff;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$2.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: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i1$7.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i1$7.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40155
40569
|
}
|
|
40156
40570
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
40157
40571
|
type: Component,
|
|
@@ -40297,7 +40711,7 @@ class FeatureEditorModule {
|
|
|
40297
40711
|
MatNativeDateModule,
|
|
40298
40712
|
MatFormFieldModule,
|
|
40299
40713
|
HttpClientModule,
|
|
40300
|
-
HttpClientXsrfModule, i1$3.StoreFeatureModule, i1$
|
|
40714
|
+
HttpClientXsrfModule, i1$3.StoreFeatureModule, i1$b.EffectsFeatureModule, TextInputComponent], exports: [WizardComponent, WizardSummarizeComponent] }); }
|
|
40301
40715
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureEditorModule, providers: [EditorFacade, Gn4PlatformService], imports: [CommonModule,
|
|
40302
40716
|
UiInputsModule,
|
|
40303
40717
|
UiWidgetsModule,
|
|
@@ -40399,7 +40813,7 @@ class ImportRecordComponent {
|
|
|
40399
40813
|
},
|
|
40400
40814
|
});
|
|
40401
40815
|
}
|
|
40402
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$
|
|
40816
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImportRecordComponent, deps: [{ token: i1$c.Router }, { token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: NotificationsService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40403
40817
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ImportRecordComponent, isStandalone: true, selector: "gn-ui-import-record", outputs: { closeImportMenu: "closeImportMenu" }, providers: [
|
|
40404
40818
|
provideIcons({
|
|
40405
40819
|
iconoirImport,
|
|
@@ -40430,7 +40844,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
40430
40844
|
size: '1.5em',
|
|
40431
40845
|
}),
|
|
40432
40846
|
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"importMenuMainSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <li *ngFor=\"let menuItem of importMenuItems\">\n <gn-ui-button\n [attr.data-test]=\"menuItem.dataTest\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"menuItem.action()\"\n [disabled]=\"menuItem.disabled\"\n [title]=\"\n (menuItem.disabled ? 'editor.temporary.disabled' : '') | translate\n \"\n ><ng-icon [name]=\"menuItem.icon\"></ng-icon\n ><span>{{ menuItem.label }}</span></gn-ui-button\n >\n </li>\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'importExternalFile'\">\n <div\n data-test=\"importMenuImportExternalFileSection\"\n class=\"p-6 flex flex-col gap-2 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-button\n data-test=\"importMenuImportExternalFileSectionBackButton\"\n type=\"light\"\n (buttonClick)=\"displayMainMenu()\"\n >\n <ng-icon name=\"iconoirArrowLeft\"></ng-icon>\n </gn-ui-button>\n <span class=\"font-bold\" translate\n >dashboard.importRecord.importExternal.title</span\n >\n <span translate>dashboard.importRecord.importExternal.subtitle</span>\n </div>\n <gn-ui-url-input\n (uploadClick)=\"importRecord($event)\"\n [disabled]=\"isRecordImportInProgress\"\n ></gn-ui-url-input>\n </div>\n </ng-container>\n</ng-container>\n" }]
|
|
40433
|
-
}], ctorParameters: () => [{ type: i1$
|
|
40847
|
+
}], ctorParameters: () => [{ type: i1$c.Router }, { type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: NotificationsService }, { type: RecordsRepositoryInterface }], propDecorators: { closeImportMenu: [{
|
|
40434
40848
|
type: Output
|
|
40435
40849
|
}] } });
|
|
40436
40850
|
|
|
@@ -41321,7 +41735,7 @@ class FormFieldOnlineLinkResourcesComponent {
|
|
|
41321
41735
|
]);
|
|
41322
41736
|
});
|
|
41323
41737
|
}
|
|
41324
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, deps: [{ token: NotificationsService }, { token: i1$1.TranslateService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i1$
|
|
41738
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, deps: [{ token: NotificationsService }, { token: i1$1.TranslateService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i1$a.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41325
41739
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineLinkResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-link-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41326
41740
|
}
|
|
41327
41741
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineLinkResourcesComponent, decorators: [{
|
|
@@ -41336,7 +41750,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41336
41750
|
UrlInputComponent,
|
|
41337
41751
|
TranslateModule,
|
|
41338
41752
|
], template: "<div class=\"flex flex-col\">\n <gn-ui-file-input\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleUrlChange($event)\"\n ></gn-ui-file-input>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"linkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </div>\n </ng-template>\n</div>\n" }]
|
|
41339
|
-
}], ctorParameters: () => [{ type: NotificationsService }, { type: i1$1.TranslateService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i1$
|
|
41753
|
+
}], ctorParameters: () => [{ type: NotificationsService }, { type: i1$1.TranslateService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i1$a.MatDialog }], propDecorators: { metadataUuid: [{
|
|
41340
41754
|
type: Input
|
|
41341
41755
|
}], value: [{
|
|
41342
41756
|
type: Input
|
|
@@ -41468,7 +41882,7 @@ class OnlineServiceResourceInputComponent {
|
|
|
41468
41882
|
provideNgIconsConfig({
|
|
41469
41883
|
size: '1.5em',
|
|
41470
41884
|
}),
|
|
41471
|
-
], ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"_service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"_service.url?.toString()\"\n [showValidateButton]=\"activeLayerSuggestion\"\n [resetUrlOnChange]=\"resetUrlOnChange\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirRefresh\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"_service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (_service.url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submit()\"\n [disabled]=\"disabled || !_service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (_service.url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$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: "ngmodule", type: MatTooltipModule }, { kind: "directive", type:
|
|
41885
|
+
], ngImport: i0, template: "<div class=\"flex flex-row justify-between\">\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.protocol\n </h3>\n <span\n *ngIf=\"protocolHint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"protocolHint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n</div>\n<div class=\"flex flex-row items-center gap-4 h-[48px]\">\n <mat-radio-group\n aria-labelledby=\"example-radio-group-label\"\n class=\"flex flex-row gap-[8px]\"\n [(ngModel)]=\"_service.accessServiceProtocol\"\n [disabled]=\"disabled\"\n (change)=\"resetAllFormFields()\"\n >\n <mat-radio-button\n *ngFor=\"let protocolOption of protocolOptions\"\n [value]=\"protocolOption.value\"\n >\n {{ protocolOption.label | translate }}\n </mat-radio-button>\n </mat-radio-group>\n</div>\n\n<div class=\"flex flex-col gap-4\">\n <gn-ui-url-input\n class=\"w-full\"\n (uploadClick)=\"handleUploadClick($event)\"\n (valueChange)=\"handleUrlValueChange($event)\"\n [disabled]=\"disabled\"\n [value]=\"_service.url?.toString()\"\n [showValidateButton]=\"activeLayerSuggestion\"\n [resetUrlOnChange]=\"resetUrlOnChange\"\n >\n <ng-content *ngIf=\"activeLayerSuggestion\">\n <ng-icon name=\"iconoirRefresh\"></ng-icon>\n </ng-content>\n </gn-ui-url-input>\n\n <p class=\"text-sm text-red-500 pl-4\" *ngIf=\"errorMessage\" translate>\n editor.record.form.field.onlineResource.edit.identifier.error\n </p>\n\n <gn-ui-text-input\n class=\"grow border-b border-gray-300 pb-4\"\n [(value)]=\"_service.identifierInService\"\n [placeholder]=\"getIdentifierPlaceholder() | translate\"\n data-cy=\"identifier-in-service\"\n [disabled]=\"disabled\"\n *ngIf=\"\n !activeLayerSuggestion ||\n (_service.url && errorMessage) ||\n (modifyMode && (layers$ | async).length === 0)\n \"\n ></gn-ui-text-input>\n <gn-ui-autocomplete\n class=\"border-b border-gray-300 pb-4\"\n [placeholder]=\"\n 'editor.record.form.field.onlineResource.edit.identifier.select.label'\n | translate\n \"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleSelectValue($event)\"\n [displayWithFn]=\"displayWithFn\"\n [minCharacterCount]=\"0\"\n [clearOnSelection]=\"false\"\n *ngIf=\"activeLayerSuggestion && (layers$ | async)?.length > 0\"\n >\n </gn-ui-autocomplete>\n <gn-ui-button\n (buttonClick)=\"submit()\"\n [disabled]=\"disabled || !_service.identifierInService\"\n type=\"primary\"\n *ngIf=\"\n !modifyMode &&\n ((activeLayerSuggestion && (layers$ | async)) ||\n !activeLayerSuggestion ||\n (_service.url && errorMessage))\n \"\n >\n <span class=\"text-white font-bold\" translate>\n editor.record.form.field.onlineResource.edit.identifier.submit</span\n >\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: ["placeholder", "enterButton", "action", "value", "clearOnSelection", "preventCompleteOnSelection", "autoFocus", "minCharacterCount", "allowSubmit", "forceTrackPosition", "displayWithFn"], outputs: ["itemSelected", "inputSubmitted", "inputCleared", "isSearchActive"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2$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: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i4$1.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i4$1.MatRadioButton, selector: "mat-radio-button", inputs: ["id", "name", "aria-label", "aria-labelledby", "aria-describedby", "disableRipple", "tabIndex", "checked", "value", "labelPosition", "disabled", "required", "color", "disabledInteractive"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "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: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41472
41886
|
}
|
|
41473
41887
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OnlineServiceResourceInputComponent, decorators: [{
|
|
41474
41888
|
type: Component,
|
|
@@ -41636,7 +42050,7 @@ class FormFieldOnlineResourcesComponent {
|
|
|
41636
42050
|
]);
|
|
41637
42051
|
});
|
|
41638
42052
|
}
|
|
41639
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineResourcesComponent, deps: [{ token: NotificationsService }, { token: i1$1.TranslateService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i1$
|
|
42053
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineResourcesComponent, deps: [{ token: NotificationsService }, { token: i1$1.TranslateService }, { token: PlatformServiceInterface }, { token: i0.ChangeDetectorRef }, { token: i1$a.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41640
42054
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldOnlineResourcesComponent, isStandalone: true, selector: "gn-ui-form-field-online-resources", inputs: { metadataUuid: "metadataUuid", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col\">\n <gn-ui-switch-toggle\n [options]=\"typeOptions\"\n (selectedValue)=\"onSelectedTypeChange($event.value)\"\n extraClasses=\"grow text-sm\"\n data-cy=\"online-resources-type\"\n ></gn-ui-switch-toggle>\n <div class=\"h-[8px]\"></div>\n <gn-ui-file-input\n *ngIf=\"selectedType === 'download'\"\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleDownloadUrlChange($event)\"\n ></gn-ui-file-input>\n <div\n *ngIf=\"selectedType === 'service'\"\n class=\"w-full border-2 border-dashed rounded-lg p-6 flex flex-col gap-[16px]\"\n >\n <gn-ui-online-service-resource-input\n [service]=\"newService\"\n (serviceChange)=\"handleServiceChange($event)\"\n ></gn-ui-online-service-resource-input>\n </div>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"notLinkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <ng-container *ngIf=\"onlineResource.type === 'service'; else urlInput\">\n <gn-ui-online-service-resource-input\n [service]=\"onlineResource\"\n [modifyMode]=\"true\"\n [disabled]=\"true\"\n ></gn-ui-online-service-resource-input>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n </ng-container>\n <ng-template #urlInput>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </ng-template>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: SwitchToggleComponent, selector: "gn-ui-switch-toggle", inputs: ["options", "ariaLabel", "extraClasses", "disabled"], outputs: ["selectedValue"] }, { kind: "component", type: FileInputComponent, selector: "gn-ui-file-input", inputs: ["maxSizeMB", "uploadProgress", "disabled"], outputs: ["fileChange", "urlChange", "uploadCancel"] }, { kind: "component", type: OnlineServiceResourceInputComponent, selector: "gn-ui-online-service-resource-input", inputs: ["service", "protocolHint", "disabled", "modifyMode"], outputs: ["serviceChange"] }, { kind: "component", type: UrlInputComponent, selector: "gn-ui-url-input", inputs: ["value", "extraClass", "placeholder", "disabled", "showValidateButton", "resetUrlOnChange"], outputs: ["valueChange", "uploadClick"] }, { kind: "component", type: SortableListComponent, selector: "gn-ui-sortable-list", inputs: ["elementTemplate", "items"], outputs: ["itemsOrderChange"] }, { kind: "component", type: OnlineResourceCardComponent, selector: "gn-ui-online-resource-card", inputs: ["onlineResource"], outputs: ["modifyClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "placeholder", "required", "disabled"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
41641
42055
|
}
|
|
41642
42056
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldOnlineResourcesComponent, decorators: [{
|
|
@@ -41653,7 +42067,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
41653
42067
|
TextAreaComponent,
|
|
41654
42068
|
TranslateModule,
|
|
41655
42069
|
], template: "<div class=\"flex flex-col\">\n <gn-ui-switch-toggle\n [options]=\"typeOptions\"\n (selectedValue)=\"onSelectedTypeChange($event.value)\"\n extraClasses=\"grow text-sm\"\n data-cy=\"online-resources-type\"\n ></gn-ui-switch-toggle>\n <div class=\"h-[8px]\"></div>\n <gn-ui-file-input\n *ngIf=\"selectedType === 'download'\"\n [maxSizeMB]=\"MAX_UPLOAD_SIZE_MB\"\n (fileChange)=\"handleFileChange($event)\"\n (uploadCancel)=\"handleUploadCancel()\"\n [uploadProgress]=\"uploadProgress\"\n (urlChange)=\"handleDownloadUrlChange($event)\"\n ></gn-ui-file-input>\n <div\n *ngIf=\"selectedType === 'service'\"\n class=\"w-full border-2 border-dashed rounded-lg p-6 flex flex-col gap-[16px]\"\n >\n <gn-ui-online-service-resource-input\n [service]=\"newService\"\n (serviceChange)=\"handleServiceChange($event)\"\n ></gn-ui-online-service-resource-input>\n </div>\n <div class=\"h-[8px]\"></div>\n <gn-ui-sortable-list\n [items]=\"notLinkResources\"\n (itemsOrderChange)=\"handleResourcesChange($event)\"\n [elementTemplate]=\"template\"\n >\n </gn-ui-sortable-list>\n <ng-template #template let-onlineResource let-index=\"index\">\n <gn-ui-online-resource-card\n [onlineResource]=\"onlineResource\"\n (modifyClick)=\"handleResourceModify(onlineResource, index)\"\n ></gn-ui-online-resource-card>\n </ng-template>\n\n <ng-template #dialogTemplate let-onlineResource>\n <div class=\"flex flex-col gap-[16px]\">\n <ng-container *ngIf=\"onlineResource.type === 'service'; else urlInput\">\n <gn-ui-online-service-resource-input\n [service]=\"onlineResource\"\n [modifyMode]=\"true\"\n [disabled]=\"true\"\n ></gn-ui-online-service-resource-input>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n </ng-container>\n <ng-template #urlInput>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.title\n </h3>\n <gn-ui-text-input [(value)]=\"onlineResource.name\"></gn-ui-text-input>\n </div>\n <div>\n <h3 class=\"text-[16px] font-bold text-main mb-[12px]\" translate>\n editor.record.form.field.onlineResource.edit.description\n </h3>\n <gn-ui-text-area\n [(value)]=\"onlineResource.description\"\n ></gn-ui-text-area>\n </div>\n <span class=\"w-full border-b border-gray-300\"></span>\n <gn-ui-url-input\n class=\"w-full\"\n [disabled]=\"true\"\n [value]=\"onlineResource.url\"\n [showValidateButton]=\"false\"\n ></gn-ui-url-input>\n </ng-template>\n </div>\n </ng-template>\n</div>\n" }]
|
|
41656
|
-
}], ctorParameters: () => [{ type: NotificationsService }, { type: i1$1.TranslateService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i1$
|
|
42070
|
+
}], ctorParameters: () => [{ type: NotificationsService }, { type: i1$1.TranslateService }, { type: PlatformServiceInterface }, { type: i0.ChangeDetectorRef }, { type: i1$a.MatDialog }], propDecorators: { metadataUuid: [{
|
|
41657
42071
|
type: Input
|
|
41658
42072
|
}], value: [{
|
|
41659
42073
|
type: Input
|
|
@@ -42236,7 +42650,7 @@ class FormFieldComponent {
|
|
|
42236
42650
|
return this.value;
|
|
42237
42651
|
}
|
|
42238
42652
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42239
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n *ngIf=\"config.hintKey\"\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifier'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i1$4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordLicences"], outputs: ["recordLicencesChange"] }, { kind: "component", type: FormFieldDateComponent, selector: "gn-ui-form-field-date", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "readonly", "invalid", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "component", type: FormFieldSpatialToggleComponent, selector: "gn-ui-form-field-spatial-toggle" }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i4$2.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
42653
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { uniqueIdentifier: "uniqueIdentifier", model: "model", modelSpecifier: "modelSpecifier", componentName: "componentName", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<!-- TEMPORARY - disabling the open data switch -->\n<!-- <ng-container *ngIf=\"model === 'licenses'\">\n <gn-ui-form-field-open-data\n [value]=\"valueAsConstraints\"\n (valueChange)=\"valueChange.emit($event)\"\n (openDataChange)=\"toggleIsOpenData($event)\"\n ></gn-ui-form-field-open-data>\n</ng-container> -->\n<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container [ngSwitch]=\"model\">\n <ng-container *ngSwitchCase=\"'title'\">\n <div class=\"flex flex-row flex-start items-center gap-3 mb-[12px]\">\n <textarea\n #titleInput\n cdkTextareaAutosize\n #autosize=\"cdkTextareaAutosize\"\n cdkAutosizeMinRows=\"1\"\n data-test=\"recordTitleInput\"\n class=\"grow font-title text-3xl font-normal overflow-hidden text-black/80\"\n (change)=\"valueChange.emit($event.target.value)\"\n [placeholder]=\"\n 'editor.record.form.field.title.placeholder' | translate\n \"\n >{{ valueAsString }}</textarea\n >\n <div class=\"flex flex-row justify-between self-start mt-0.5\">\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n *ngIf=\"config.hintKey\"\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey! | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'abstract'\">\n <gn-ui-form-field-rich\n [label]=\"config.labelKey! | translate\"\n [hint]=\"config.hintKey! | translate\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngSwitchCase=\"'overviews'\">\n <gn-ui-form-field-overviews\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOverviews\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-overviews>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceIdentifier'\">\n <gn-ui-form-field-simple\n [type]=\"'text'\"\n [value]=\"valueAsString\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceCreated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'resourceUpdated'\">\n <gn-ui-form-field-date\n [value]=\"valueAsDate\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-date>\n </ng-container>\n <ng-container *ngSwitchCase=\"'updateFrequency'\">\n <gn-ui-form-field-update-frequency\n [value]=\"valueAsUpdateFrequency\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-update-frequency>\n </ng-container>\n <ng-container *ngSwitchCase=\"'temporalExtents'\">\n <gn-ui-form-field-temporal-extents\n [value]=\"valueAsTemporalExtents\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-temporal-extents>\n </ng-container>\n <ng-container *ngSwitchCase=\"'spatialExtents'\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngSwitchCase=\"'keywords'\">\n <gn-ui-form-field-keywords\n [value]=\"valueAsKeywords\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-keywords>\n </ng-container>\n <ng-container *ngSwitchCase=\"'licenses'\">\n <gn-ui-form-field-license\n [label]=\"config.labelKey! | translate\"\n [recordLicences]=\"valueAsConstraints\"\n (recordLicencesChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-license>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'legalConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'securityConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'otherConstraints'\">\n <ng-container *ngTemplateOutlet=\"formFieldConstraints\"></ng-container\n ></ng-container>\n <ng-template #formFieldConstraints>\n <gn-ui-form-field-constraints\n [label]=\"config.labelKey\"\n [value]=\"valueAsConstraints\"\n [constraintType]=\"model\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-constraints\n ></ng-template>\n\n <ng-container *ngSwitchCase=\"'contactsForResource'\">\n <gn-ui-form-field-contacts-for-resource\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts-for-resource>\n </ng-container>\n <ng-container *ngSwitchCase=\"'contacts'\">\n <gn-ui-form-field-contacts\n [value]=\"valueAsIndividuals\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-contacts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:!link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-resources>\n </ng-container>\n <ng-container *ngSwitchCase=\"'onlineResources'\">\n <gn-ui-form-field-online-link-resources\n *ngIf=\"modelSpecifier === 'onlineResourceType:link'\"\n [metadataUuid]=\"uniqueIdentifier\"\n [value]=\"valueAsOnlineResources\"\n (valueChange)=\"valueChange.emit($event)\"\n ></gn-ui-form-field-online-link-resources>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!model\">\n <ng-container [ngSwitch]=\"componentName\">\n <ng-container *ngSwitchCase=\"'form-field-constraints-shortcuts'\">\n <gn-ui-form-field-constraints-shortcuts></gn-ui-form-field-constraints-shortcuts>\n </ng-container>\n <ng-container *ngSwitchCase=\"'form-field-spatial-toggle'\">\n <gn-ui-form-field-spatial-toggle></gn-ui-form-field-spatial-toggle>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["label", "recordLicences"], outputs: ["recordLicencesChange"] }, { kind: "component", type: FormFieldDateComponent, selector: "gn-ui-form-field-date", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldUpdateFrequencyComponent, selector: "gn-ui-form-field-update-frequency", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldTemporalExtentsComponent, selector: "gn-ui-form-field-temporal-extents", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "readonly", "invalid", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["label", "hint", "placeholder", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldKeywordsComponent, selector: "gn-ui-form-field-keywords", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOverviewsComponent, selector: "gn-ui-form-field-overviews", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsForResourceComponent, selector: "gn-ui-form-field-contacts-for-resource", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineResourcesComponent, selector: "gn-ui-form-field-online-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldOnlineLinkResourcesComponent, selector: "gn-ui-form-field-online-link-resources", inputs: ["metadataUuid", "value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldContactsComponent, selector: "gn-ui-form-field-contacts", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsComponent, selector: "gn-ui-form-field-constraints", inputs: ["label", "value", "constraintType"], outputs: ["valueChange"] }, { kind: "component", type: FormFieldConstraintsShortcutsComponent, selector: "gn-ui-form-field-constraints-shortcuts" }, { kind: "component", type: FormFieldSpatialToggleComponent, selector: "gn-ui-form-field-spatial-toggle" }, { kind: "ngmodule", type: TextFieldModule }, { kind: "directive", type: i4$2.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
42240
42654
|
}
|
|
42241
42655
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
42242
42656
|
type: Component,
|
|
@@ -42381,7 +42795,7 @@ class RouterService {
|
|
|
42381
42795
|
getOrganizationPageRoute() {
|
|
42382
42796
|
return ROUTER_ROUTE_ORGANIZATION;
|
|
42383
42797
|
}
|
|
42384
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$
|
|
42798
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, deps: [{ token: ROUTER_CONFIG }, { token: i1$c.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42385
42799
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, providedIn: 'root' }); }
|
|
42386
42800
|
}
|
|
42387
42801
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterService, decorators: [{
|
|
@@ -42392,7 +42806,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
42392
42806
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
42393
42807
|
type: Inject,
|
|
42394
42808
|
args: [ROUTER_CONFIG]
|
|
42395
|
-
}] }, { type: i1$
|
|
42809
|
+
}] }, { type: i1$c.Router }] });
|
|
42396
42810
|
|
|
42397
42811
|
const goAction = createAction('[Router] Go', props());
|
|
42398
42812
|
const backAction = createAction('[Router] Back');
|
|
@@ -42703,12 +43117,12 @@ class RouterEffects {
|
|
|
42703
43117
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
42704
43118
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
42705
43119
|
}
|
|
42706
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$
|
|
43120
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, deps: [{ token: i1$b.Actions }, { token: i1$c.Router }, { token: i1$2.Location }, { token: RouterFacade }, { token: ROUTER_CONFIG }, { token: FieldsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
42707
43121
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects }); }
|
|
42708
43122
|
}
|
|
42709
43123
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RouterEffects, decorators: [{
|
|
42710
43124
|
type: Injectable
|
|
42711
|
-
}], ctorParameters: () => [{ type: i1$
|
|
43125
|
+
}], ctorParameters: () => [{ type: i1$b.Actions }, { type: i1$c.Router }, { type: i1$2.Location }, { type: RouterFacade }, { type: undefined, decorators: [{
|
|
42712
43126
|
type: Inject,
|
|
42713
43127
|
args: [ROUTER_CONFIG]
|
|
42714
43128
|
}] }, { type: FieldsService }] });
|
|
@@ -42725,7 +43139,7 @@ class DefaultRouterModule {
|
|
|
42725
43139
|
};
|
|
42726
43140
|
}
|
|
42727
43141
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
42728
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$3.StoreFeatureModule, i3$
|
|
43142
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$3.StoreFeatureModule, i3$3.StoreRouterConnectingModule, i1$b.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
42729
43143
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
42730
43144
|
RouterFacade,
|
|
42731
43145
|
{
|
|
@@ -42768,5 +43182,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
42768
43182
|
* Generated bundle index. Do not edit.
|
|
42769
43183
|
*/
|
|
42770
43184
|
|
|
42771
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
43185
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogListComponent, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
42772
43186
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|