geonetwork-ui 2.6.0-dev.b1563a5e0 → 2.6.0-dev.c49d02679
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +13 -2
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.mjs +1 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +8 -4
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +5 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-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 +53 -14
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +7 -1
- package/esm2022/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.mjs +2 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.mjs +266 -11
- package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +49 -23
- package/esm2022/libs/feature/search/src/lib/constants.mjs +3 -2
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +5 -3
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +19 -34
- package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +59 -0
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +35 -10
- package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +5 -1
- package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +50 -29
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +7 -3
- package/esm2022/libs/ui/layout/src/index.mjs +2 -1
- package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +20 -10
- package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +15 -49
- package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +2 -2
- package/esm2022/libs/ui/search/src/index.mjs +2 -1
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +21 -12
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +39 -18
- package/esm2022/libs/ui/search/src/lib/ui-search.module.mjs +10 -4
- package/esm2022/libs/util/i18n/src/lib/i18n.constants.mjs +42 -1
- package/esm2022/libs/util/i18n/src/lib/language-codes.mjs +24 -2
- package/esm2022/translations/de.json +42 -6
- package/esm2022/translations/en.json +42 -6
- package/esm2022/translations/es.json +41 -5
- package/esm2022/translations/fr.json +42 -6
- package/esm2022/translations/it.json +41 -5
- package/esm2022/translations/nl.json +41 -5
- package/esm2022/translations/pt.json +41 -5
- package/fesm2022/geonetwork-ui.mjs +1573 -733
- package/fesm2022/geonetwork-ui.mjs.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/gn4/types/metadata.model.d.ts +0 -1
- package/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +10 -2
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -0
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts +1 -0
- package/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +20 -17
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +4 -0
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts +48 -3
- package/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -5
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +3 -6
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts +14 -0
- package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts +3 -0
- package/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.d.ts +20 -9
- package/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.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/layout/src/index.d.ts +1 -0
- package/libs/ui/layout/src/index.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts +28 -0
- package/libs/ui/layout/src/lib/cell-popin/cell-popin.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts +4 -2
- package/libs/ui/layout/src/lib/interactive-table/interactive-table.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts +5 -10
- package/libs/ui/layout/src/lib/truncated-text/truncated-text.component.d.ts.map +1 -1
- package/libs/ui/search/src/index.d.ts +1 -0
- package/libs/ui/search/src/index.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +4 -3
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +10 -4
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts +2 -1
- package/libs/ui/search/src/lib/ui-search.module.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/i18n.constants.d.ts +1 -0
- package/libs/util/i18n/src/lib/i18n.constants.d.ts.map +1 -1
- package/libs/util/i18n/src/lib/language-codes.d.ts +23 -1
- package/libs/util/i18n/src/lib/language-codes.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +18 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/types/metadata.model.ts +0 -1
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +13 -3
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +6 -3
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +4 -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 +70 -13
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +11 -0
- package/src/libs/api/repository/src/lib/gn4/settings/gn4-settings.service.ts +3 -0
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +20 -14
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +4 -0
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +63 -0
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +117 -11
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +316 -6
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +27 -9
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +84 -27
- package/src/libs/feature/search/src/lib/constants.ts +2 -1
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +7 -75
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +20 -51
- package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
- package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +48 -9
- package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +4 -0
- package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +96 -37
- package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +60 -29
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -0
- package/src/libs/ui/layout/src/index.ts +1 -0
- package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
- package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +3 -2
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.ts +13 -6
- package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.html +25 -42
- package/src/libs/ui/layout/src/lib/truncated-text/truncated-text.component.ts +10 -49
- package/src/libs/ui/layout/src/lib/ui-layout.module.ts +1 -1
- package/src/libs/ui/search/src/index.ts +1 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +16 -6
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +15 -11
- package/src/libs/ui/search/src/lib/results-table/results-table.component.css +4 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +31 -27
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +33 -15
- package/src/libs/ui/search/src/lib/ui-search.module.ts +3 -0
- package/src/libs/util/i18n/src/lib/i18n.constants.ts +42 -0
- package/src/libs/util/i18n/src/lib/language-codes.ts +23 -1
- package/tailwind.base.css +1 -1
- package/translations/de.json +42 -6
- package/translations/en.json +42 -6
- package/translations/es.json +41 -5
- package/translations/fr.json +42 -6
- package/translations/it.json +41 -5
- package/translations/nl.json +41 -5
- package/translations/pt.json +41 -5
- package/translations/sk.json +41 -5
|
@@ -7,17 +7,17 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
|
7
7
|
import { format } from 'date-fns/format';
|
|
8
8
|
import { Namespace, Literal, lit, parse as parse$2, sym, BlankNode, graph } from 'rdflib';
|
|
9
9
|
import * as i0 from '@angular/core';
|
|
10
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output,
|
|
10
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, TemplateRef, ElementRef, ViewChildren, ContentChild, ContentChildren, Host, ViewContainerRef, ViewEncapsulation, Pipe, inject } from '@angular/core';
|
|
11
11
|
import * as i1 from '@angular/common/http';
|
|
12
12
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpEventType, HttpClientXsrfModule } from '@angular/common/http';
|
|
13
13
|
import * as i1$1 from '@ngx-translate/core';
|
|
14
14
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
15
15
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
16
16
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
17
|
-
import { map as map$1, catchError, tap as tap$1,
|
|
17
|
+
import { map as map$1, shareReplay, catchError, tap as tap$1, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, distinctUntilChanged, debounceTime, finalize, throttleTime, 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,
|
|
20
|
-
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject,
|
|
19
|
+
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault, NgIf, NgClass, NgTemplateOutlet, NgOptimizedImage, DatePipe } from '@angular/common';
|
|
20
|
+
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, fromEvent, animationFrameScheduler, timer, filter as filter$1, take as take$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
23
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache, TmsEndpoint } from '@camptocamp/ogc-client';
|
|
@@ -25,12 +25,11 @@ 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
|
-
import { provideIcons,
|
|
29
|
-
import { iconoirNavArrowRight, iconoirNavArrowLeft,
|
|
30
|
-
import {
|
|
31
|
-
import * as
|
|
32
|
-
import {
|
|
33
|
-
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
28
|
+
import { provideIcons, NgIconComponent, provideNgIconsConfig, NgIcon, NgIconsModule } from '@ng-icons/core';
|
|
29
|
+
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirReduce, iconoirNavArrowDown, iconoirNavArrowUp, iconoirExpand, iconoirAppleWallet, iconoirAppleShortcuts, iconoirCode, iconoirCreditCard, iconoirInternet, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirList, iconoirUser, iconoirLock, iconoirTranslate, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh, iconoirCheckCircle, iconoirCircle } from '@ng-icons/iconoir';
|
|
30
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
31
|
+
import * as i1$8 from '@angular/cdk/overlay';
|
|
32
|
+
import { CdkConnectedOverlay, OverlayModule, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
34
33
|
import * as i2$1 from '@angular/forms';
|
|
35
34
|
import { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';
|
|
36
35
|
import * as i1$5 from '@angular/material/autocomplete';
|
|
@@ -41,22 +40,23 @@ import { TagInputModule } from 'ngx-chips';
|
|
|
41
40
|
import * as i1$4 from '@angular/material/progress-spinner';
|
|
42
41
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
43
42
|
import tippy from 'tippy.js';
|
|
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';
|
|
43
|
+
import { matErrorOutlineOutline, matLocationSearchingOutline, matInfoOutline, matEmailOutline, matPhoneOutline, matLocationOnOutline, matComputerOutline, matCallOutline, matSwipeOutline, matMailOutline as matMailOutline$1, matWarningAmberOutline, matCloseOutline, matSendOutline, matMapOutline, matCloudDownloadOutline, matHomeWorkOutline, matLayersOutline, matAddCircleOutlineOutline, matMoreHorizOutline } from '@ng-icons/material-icons/outline';
|
|
44
|
+
import { matClose, matContentCopy, matExpandMore, matExpandLess, matSearch, matStar, matStarBorder, matAdd, matRemove, matChevronLeft, matChevronRight, matArrowBackIos, matArrowForwardIos, matCheck, matWarningAmber, matFace, matQuestionMark, matMoodBad, matZoomOutMap, matOpenInNew, matMailOutline, matPersonOutline, matCheckCircleOutline, matWarning, matMoreVert, matCorporateFare } from '@ng-icons/material-icons/baseline';
|
|
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
47
|
import * as i1$6 from '@angular/material/checkbox';
|
|
48
48
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
49
|
+
import * as i3 from '@angular/material/tooltip';
|
|
50
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
49
51
|
import * as i1$7 from '@angular/material/datepicker';
|
|
50
52
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
51
|
-
import * as i1$8 from '@angular/cdk/overlay';
|
|
52
|
-
import { CdkConnectedOverlay, OverlayModule, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
53
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 { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
57
58
|
import * as i1$a from '@angular/material/dialog';
|
|
58
59
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
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
62
|
import * as i1$c from '@angular/router';
|
|
@@ -72,6 +72,8 @@ import { mouseOnly, noModifierKeys, primaryAction, platformModifierKeyOnly } fro
|
|
|
72
72
|
import { Polygon } from 'ol/geom';
|
|
73
73
|
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
|
+
import * as i3$2 from '@angular/cdk/scrolling';
|
|
76
|
+
import { ScrollingModule, CdkScrollable } from '@angular/cdk/scrolling';
|
|
75
77
|
import { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';
|
|
76
78
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
77
79
|
import * as i1$b from '@ngrx/effects';
|
|
@@ -89,8 +91,7 @@ import { parseISO } from 'date-fns/parseISO';
|
|
|
89
91
|
import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
90
92
|
import { tablerFolderOpen } from '@ng-icons/tabler-icons';
|
|
91
93
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
92
|
-
import
|
|
93
|
-
import * as i3$2 from '@angular/material/sort';
|
|
94
|
+
import * as i3$3 from '@angular/material/sort';
|
|
94
95
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
95
96
|
import * as i2$4 from '@angular/material/table';
|
|
96
97
|
import { MatTableModule } from '@angular/material/table';
|
|
@@ -105,7 +106,7 @@ import { MatRadioModule } from '@angular/material/radio';
|
|
|
105
106
|
import { MatIconModule } from '@angular/material/icon';
|
|
106
107
|
import * as i4$2 from '@angular/cdk/text-field';
|
|
107
108
|
import { TextFieldModule } from '@angular/cdk/text-field';
|
|
108
|
-
import * as i3$
|
|
109
|
+
import * as i3$4 from '@ngrx/router-store';
|
|
109
110
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
110
111
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
111
112
|
|
|
@@ -909,6 +910,17 @@ const LANG_3_TO_2_MAPPER = {
|
|
|
909
910
|
chi: 'zh',
|
|
910
911
|
slo: 'sk',
|
|
911
912
|
roh: 'rm',
|
|
913
|
+
ara: 'ar',
|
|
914
|
+
dan: 'da',
|
|
915
|
+
nor: 'no',
|
|
916
|
+
pol: 'pl',
|
|
917
|
+
swe: 'sv',
|
|
918
|
+
tur: 'tr',
|
|
919
|
+
arm: 'hy',
|
|
920
|
+
aze: 'az',
|
|
921
|
+
geo: 'ka',
|
|
922
|
+
ukr: 'uk',
|
|
923
|
+
wel: 'cy',
|
|
912
924
|
};
|
|
913
925
|
const LANGUAGE_NAMES = {
|
|
914
926
|
en: 'English',
|
|
@@ -926,7 +938,18 @@ const LANGUAGE_NAMES = {
|
|
|
926
938
|
ru: 'Русский',
|
|
927
939
|
zh: '中文',
|
|
928
940
|
sk: 'Slovenčina',
|
|
929
|
-
|
|
941
|
+
rm: 'Rumantsch',
|
|
942
|
+
ar: 'العربية',
|
|
943
|
+
da: 'Dansk',
|
|
944
|
+
no: 'Norsk',
|
|
945
|
+
pl: 'Polski',
|
|
946
|
+
sv: 'Swedish',
|
|
947
|
+
tr: 'Türkçe',
|
|
948
|
+
hy: 'հայերեն',
|
|
949
|
+
az: 'Azərbaycan dili',
|
|
950
|
+
ka: 'ქართული',
|
|
951
|
+
uk: 'українська',
|
|
952
|
+
wel: 'Cymraeg',
|
|
930
953
|
};
|
|
931
954
|
const LANG_2_TO_3_MAPPER = Object.entries(LANG_3_TO_2_MAPPER).reduce((mapperObject, langEntry) => {
|
|
932
955
|
return { ...mapperObject, [langEntry[1]]: langEntry[0] };
|
|
@@ -1437,10 +1460,10 @@ function readSpatialExtents$1(rootEl) {
|
|
|
1437
1460
|
}
|
|
1438
1461
|
function readOtherLanguages$1(rootEl) {
|
|
1439
1462
|
const defaultLanguage = readDefaultLanguage$2(rootEl);
|
|
1440
|
-
return pipe(findChildrenElement('gmd:locale', false), mapArray(pipe(findChildElement('
|
|
1463
|
+
return pipe(findChildrenElement('gmd:locale', false), mapArray(pipe(findChildElement('lan:LanguageCode'), readAttribute('codeListValue'), map((lang) => LANG_3_TO_2_MAPPER[lang.toLowerCase()] ?? lang))), map((languages) => languages.filter((lang) => lang !== null)), map((languages) => (languages.length ? languages : [defaultLanguage])))(rootEl);
|
|
1441
1464
|
}
|
|
1442
1465
|
function readDefaultLanguage$2(rootEl) {
|
|
1443
|
-
return pipe(findChildElement('gmd:language', false), findChildElement('
|
|
1466
|
+
return pipe(findChildElement('gmd:language', false), findChildElement('lan:LanguageCode'), readAttribute('codeListValue'), map((lang) => (lang ? LANG_3_TO_2_MAPPER[lang.toLowerCase()] : null)))(rootEl);
|
|
1444
1467
|
}
|
|
1445
1468
|
function readResourceIdentifier(rootEl) {
|
|
1446
1469
|
return pipe(findIdentification(), findNestedElement('gmd:citation', 'gmd:CI_Citation', 'gmd:identifier', 'gmd:MD_Identifier', 'gmd:code'), extractCharacterString())(rootEl);
|
|
@@ -1936,7 +1959,7 @@ function writeLanguages(record, rootEl) {
|
|
|
1936
1959
|
if (!record.otherLanguages?.length) {
|
|
1937
1960
|
return;
|
|
1938
1961
|
}
|
|
1939
|
-
const createLanguageEl = (lang) => pipe(createNestedElement('gmd:locale', 'gmd:PT_Locale'), writeAttribute('id', lang.toUpperCase()), createNestedChild('gmd:languageCode', 'gmd:LanguageCode'), writeAttribute('codeList', 'http://www.loc.gov/standards/iso639-2/'), writeAttribute('codeListValue', LANG_2_TO_3_MAPPER[lang]));
|
|
1962
|
+
const createLanguageEl = (lang) => pipe(createNestedElement('gmd:locale', 'gmd:PT_Locale'), writeAttribute('id', lang.toUpperCase()), createNestedChild('gmd:languageCode', 'gmd:LanguageCode'), writeAttribute('codeList', 'http://www.loc.gov/standards/iso639-2/'), writeAttribute('codeListValue', lang.length === 2 ? LANG_2_TO_3_MAPPER[lang] : lang));
|
|
1940
1963
|
// add new languages (only if other than default one)
|
|
1941
1964
|
appendChildren(createLanguageEl(record.defaultLanguage), ...record.otherLanguages.map(createLanguageEl))(rootEl);
|
|
1942
1965
|
}
|
|
@@ -2374,13 +2397,17 @@ function readOnlineResources$1(rootEl) {
|
|
|
2374
2397
|
return pipe(findNestedElements('mrd:distributionInfo', 'mrd:MD_Distribution'), mapArray(getOnlineResources), flattenArray())(rootEl);
|
|
2375
2398
|
}
|
|
2376
2399
|
function readLocaleElement() {
|
|
2377
|
-
return pipe(findChildElement('lan:LanguageCode'), readAttribute('codeListValue'), map((lang) =>
|
|
2400
|
+
return pipe(findChildElement('lan:LanguageCode'), readAttribute('codeListValue'), map((lang) => {
|
|
2401
|
+
const normalized = lang?.toLowerCase();
|
|
2402
|
+
const iso2Lang = LANG_3_TO_2_MAPPER[normalized];
|
|
2403
|
+
return iso2Lang ?? lang;
|
|
2404
|
+
}));
|
|
2378
2405
|
}
|
|
2379
2406
|
function readDefaultLanguage$1(rootEl) {
|
|
2380
2407
|
return pipe(findChildElement('mdb:defaultLocale', false), readLocaleElement())(rootEl);
|
|
2381
2408
|
}
|
|
2382
2409
|
function readOtherLanguages(rootEl) {
|
|
2383
|
-
return pipe(findChildrenElement('mdb:otherLocale', false), mapArray(readLocaleElement()))(rootEl);
|
|
2410
|
+
return pipe(findChildrenElement('mdb:otherLocale', false), mapArray(readLocaleElement()), map((languages) => languages.filter((lang) => lang !== null)))(rootEl);
|
|
2384
2411
|
}
|
|
2385
2412
|
|
|
2386
2413
|
function writeUniqueIdentifier$1(record, rootEl) {
|
|
@@ -2513,7 +2540,10 @@ function writeOnlineResources(record, rootEl) {
|
|
|
2513
2540
|
});
|
|
2514
2541
|
}
|
|
2515
2542
|
function writeLocaleElement(language) {
|
|
2516
|
-
const
|
|
2543
|
+
const normalizedLang = language.toLowerCase();
|
|
2544
|
+
const lang3 = normalizedLang.length === 2
|
|
2545
|
+
? LANG_2_TO_3_MAPPER[normalizedLang]
|
|
2546
|
+
: normalizedLang;
|
|
2517
2547
|
return pipe(findChildOrCreate('lan:PT_Locale'), writeAttribute('id', language.toUpperCase()), findNestedChildOrCreate('lan:language', 'gmd:LanguageCode'), writeAttribute('codeList', 'http://www.loc.gov/standards/iso639-2/'), writeAttribute('codeListValue', lang3));
|
|
2518
2548
|
}
|
|
2519
2549
|
function writeDefaultLanguage(record, rootEl) {
|
|
@@ -18502,9 +18532,50 @@ marker('language.pt');
|
|
|
18502
18532
|
marker('language.ru');
|
|
18503
18533
|
marker('language.zh');
|
|
18504
18534
|
marker('language.sk');
|
|
18535
|
+
marker('language.rm');
|
|
18536
|
+
marker('language.ar');
|
|
18537
|
+
marker('language.da');
|
|
18538
|
+
marker('language.no');
|
|
18539
|
+
marker('language.pl');
|
|
18540
|
+
marker('language.sv');
|
|
18541
|
+
marker('language.tr');
|
|
18542
|
+
marker('language.hy');
|
|
18543
|
+
marker('language.az');
|
|
18544
|
+
marker('language.ka');
|
|
18545
|
+
marker('language.uk');
|
|
18546
|
+
marker('language.cy');
|
|
18505
18547
|
const DEFAULT_LANG = 'en';
|
|
18506
18548
|
// Caution: changing this can break language selection from third parties!
|
|
18507
18549
|
const LANGUAGE_STORAGE_KEY = 'geonetwork-ui-language';
|
|
18550
|
+
const SUPPORTED_LANGUAGES = [
|
|
18551
|
+
'en',
|
|
18552
|
+
'nl',
|
|
18553
|
+
'fr',
|
|
18554
|
+
'de',
|
|
18555
|
+
'ko',
|
|
18556
|
+
'es',
|
|
18557
|
+
'cs',
|
|
18558
|
+
'ca',
|
|
18559
|
+
'fi',
|
|
18560
|
+
'is',
|
|
18561
|
+
'it',
|
|
18562
|
+
'pt',
|
|
18563
|
+
'ru',
|
|
18564
|
+
'zh',
|
|
18565
|
+
'sk',
|
|
18566
|
+
'rm',
|
|
18567
|
+
'ar',
|
|
18568
|
+
'da',
|
|
18569
|
+
'no',
|
|
18570
|
+
'pl',
|
|
18571
|
+
'sv',
|
|
18572
|
+
'tr',
|
|
18573
|
+
'hy',
|
|
18574
|
+
'az',
|
|
18575
|
+
'ka',
|
|
18576
|
+
'uk',
|
|
18577
|
+
'cy',
|
|
18578
|
+
];
|
|
18508
18579
|
function HttpLoaderFactory(http) {
|
|
18509
18580
|
return new FileTranslateLoader(http, './assets/i18n/');
|
|
18510
18581
|
}
|
|
@@ -18636,6 +18707,7 @@ var de = {
|
|
|
18636
18707
|
"dashboard.labels.mySpace": "Mein Bereich",
|
|
18637
18708
|
"dashboard.records.all": "Metadatenkatalog",
|
|
18638
18709
|
"dashboard.records.hasDraft": "",
|
|
18710
|
+
"dashboard.records.isMultilingual": "Dieser Eintrag ist mehrsprachig ({languages})",
|
|
18639
18711
|
"dashboard.records.myDraft": "Meine Entwürfe",
|
|
18640
18712
|
"dashboard.records.myRecords": "Meine Datensätze",
|
|
18641
18713
|
"dashboard.records.search": "Suche nach \"{searchText}\"",
|
|
@@ -18810,9 +18882,13 @@ var de = {
|
|
|
18810
18882
|
"editor.record.form.license.odc-by": "",
|
|
18811
18883
|
"editor.record.form.license.pddl": "",
|
|
18812
18884
|
"editor.record.form.license.unknown": "",
|
|
18885
|
+
"editor.record.form.multilingual.activate": "",
|
|
18886
|
+
"editor.record.form.multilingual.default": "",
|
|
18813
18887
|
"editor.record.form.multilingual.enable": "",
|
|
18888
|
+
"editor.record.form.multilingual.forbidden": "",
|
|
18814
18889
|
"editor.record.form.multilingual.open": "",
|
|
18815
18890
|
"editor.record.form.multilingual.title": "",
|
|
18891
|
+
"editor.record.form.multilingual.validate": "",
|
|
18816
18892
|
"editor.record.form.page.accessAndContact": "",
|
|
18817
18893
|
"editor.record.form.page.description": "",
|
|
18818
18894
|
"editor.record.form.page.resources": "",
|
|
@@ -18842,8 +18918,13 @@ var de = {
|
|
|
18842
18918
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
18843
18919
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
18844
18920
|
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
18845
|
-
"editor.record.lock.
|
|
18846
|
-
"editor.record.lock.
|
|
18921
|
+
"editor.record.lock.harvested": "",
|
|
18922
|
+
"editor.record.lock.owner": "",
|
|
18923
|
+
"editor.record.lock.resourceType": "",
|
|
18924
|
+
"editor.record.multilingual.confirmation.cancelText": "",
|
|
18925
|
+
"editor.record.multilingual.confirmation.confirmText": "",
|
|
18926
|
+
"editor.record.multilingual.confirmation.message": "",
|
|
18927
|
+
"editor.record.multilingual.confirmation.title": "",
|
|
18847
18928
|
"editor.record.onlineResource.protocol.other": "",
|
|
18848
18929
|
"editor.record.onlineResourceError.body": "",
|
|
18849
18930
|
"editor.record.onlineResourceError.closeMessage": "",
|
|
@@ -18890,6 +18971,11 @@ var de = {
|
|
|
18890
18971
|
"facets.block.title.tag.default": "Stichwort",
|
|
18891
18972
|
"facets.block.title.th_regions_tree.default": "Regionen",
|
|
18892
18973
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Anmelden</a>, um auf diese Funktion zuzugreifen</div>",
|
|
18974
|
+
"feature.catalog.attribute.code": "Code",
|
|
18975
|
+
"feature.catalog.attribute.definition": "Beschreibung",
|
|
18976
|
+
"feature.catalog.attribute.name": "Name",
|
|
18977
|
+
"feature.catalog.attribute.type": "Typ",
|
|
18978
|
+
"feature.catalog.attribute.values": "Werte",
|
|
18893
18979
|
"input.file.dropFileLabel": "",
|
|
18894
18980
|
"input.file.orInputUrl": "",
|
|
18895
18981
|
"input.file.selectFileLabel": "",
|
|
@@ -18904,20 +18990,32 @@ var de = {
|
|
|
18904
18990
|
"input.image.uploadErrorLabel": "",
|
|
18905
18991
|
"input.image.uploadProgressCancel": "",
|
|
18906
18992
|
"input.image.uploadProgressLabel": "",
|
|
18993
|
+
"language.ar": "",
|
|
18994
|
+
"language.az": "",
|
|
18907
18995
|
"language.ca": "Katalanisch",
|
|
18908
18996
|
"language.cs": "Tschechisch",
|
|
18997
|
+
"language.cy": "",
|
|
18998
|
+
"language.da": "",
|
|
18909
18999
|
"language.de": "Deutsch",
|
|
18910
19000
|
"language.en": "Englisch",
|
|
18911
19001
|
"language.es": "Spanisch",
|
|
18912
19002
|
"language.fi": "Finnisch",
|
|
18913
19003
|
"language.fr": "Französisch",
|
|
19004
|
+
"language.hy": "",
|
|
18914
19005
|
"language.is": "Isländisch",
|
|
18915
19006
|
"language.it": "Italienisch",
|
|
19007
|
+
"language.ka": "",
|
|
18916
19008
|
"language.ko": "Koreanisch",
|
|
18917
19009
|
"language.nl": "Niederländisch",
|
|
19010
|
+
"language.no": "",
|
|
19011
|
+
"language.pl": "",
|
|
18918
19012
|
"language.pt": "Portugiesisch",
|
|
19013
|
+
"language.rm": "",
|
|
18919
19014
|
"language.ru": "Russisch",
|
|
18920
19015
|
"language.sk": "Slowakisch",
|
|
19016
|
+
"language.sv": "",
|
|
19017
|
+
"language.tr": "",
|
|
19018
|
+
"language.uk": "",
|
|
18921
19019
|
"language.zh": "Chinesisch",
|
|
18922
19020
|
"map.add.layer": "Eine Ebene hinzufügen",
|
|
18923
19021
|
"map.add.layer.catalog": "Aus dem Katalog",
|
|
@@ -18937,6 +19035,7 @@ var de = {
|
|
|
18937
19035
|
"map.navigation.message": "Bitte verwenden Sie STRG + Maus (oder zwei Finger auf einem Mobilgerät), um die Karte zu navigieren",
|
|
18938
19036
|
"map.ogc.urlInput.hint": "",
|
|
18939
19037
|
"map.select.layer": "Datenquelle",
|
|
19038
|
+
"map.select.style": "Style",
|
|
18940
19039
|
"map.wfs.urlInput.hint": "Geben Sie die WFS URL ein",
|
|
18941
19040
|
"map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
|
|
18942
19041
|
"multiselect.filter.placeholder": "Suche",
|
|
@@ -18964,6 +19063,7 @@ var de = {
|
|
|
18964
19063
|
"record.action.duplicate": "",
|
|
18965
19064
|
"record.action.duplicating": "",
|
|
18966
19065
|
"record.action.rollback": "",
|
|
19066
|
+
"record.action.switchLang": "",
|
|
18967
19067
|
"record.action.view": "Anzeigen",
|
|
18968
19068
|
"record.card.metadata.contact": "",
|
|
18969
19069
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
@@ -19014,9 +19114,15 @@ var de = {
|
|
|
19014
19114
|
"record.metadata.download": "Downloads",
|
|
19015
19115
|
"record.metadata.feature.catalog": "",
|
|
19016
19116
|
"record.metadata.formats": "Formate",
|
|
19117
|
+
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19017
19118
|
"record.metadata.keywords": "Stichworte",
|
|
19018
19119
|
"record.metadata.languages": "Sprachen",
|
|
19019
19120
|
"record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
|
|
19121
|
+
"record.metadata.linked.datasets": "Verknüpfte Datensätze",
|
|
19122
|
+
"record.metadata.linked.records": "Verknüpfte Inhalte",
|
|
19123
|
+
"record.metadata.linked.reuses": "Verknüpfte Wiederverwendungen",
|
|
19124
|
+
"record.metadata.linked.services": "Verknüpfte Dienste",
|
|
19125
|
+
"record.metadata.linked.sourceDatasets": "Quelldatensätze",
|
|
19020
19126
|
"record.metadata.links": "Links",
|
|
19021
19127
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
19022
19128
|
"record.metadata.otherConstraints": "Zusätzliche Bedingungen",
|
|
@@ -19026,6 +19132,8 @@ var de = {
|
|
|
19026
19132
|
"record.metadata.publication": "Veröffentlichungsdatum",
|
|
19027
19133
|
"record.metadata.publications": "{count, plural, =0{Veröffentlichungsdatum} one{Veröffentlichungsdatum} other{Veröffentlichungen}}",
|
|
19028
19134
|
"record.metadata.quality": "Metadatenqualität",
|
|
19135
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
19136
|
+
"record.metadata.quality.capabilities.success": "",
|
|
19029
19137
|
"record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
|
|
19030
19138
|
"record.metadata.quality.contact.success": "Kontakt angegeben",
|
|
19031
19139
|
"record.metadata.quality.description.failed": "Beschreibung nicht angegeben",
|
|
@@ -19037,14 +19145,15 @@ var de = {
|
|
|
19037
19145
|
"record.metadata.quality.legalConstraints.success": "Rechtliche Beschränkungen angegeben",
|
|
19038
19146
|
"record.metadata.quality.organisation.failed": "Organisation nicht angegeben",
|
|
19039
19147
|
"record.metadata.quality.organisation.success": "Organisation angegeben",
|
|
19148
|
+
"record.metadata.quality.source.failed": "",
|
|
19149
|
+
"record.metadata.quality.source.success": "",
|
|
19040
19150
|
"record.metadata.quality.title.failed": "Titel nicht angegeben",
|
|
19041
19151
|
"record.metadata.quality.title.success": "Titel angegeben",
|
|
19042
19152
|
"record.metadata.quality.topic.failed": "Thema nicht angegeben",
|
|
19043
19153
|
"record.metadata.quality.topic.success": "Thema angegeben",
|
|
19044
19154
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19045
19155
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19046
|
-
"record.metadata.related": "
|
|
19047
|
-
"record.metadata.related.contents": "",
|
|
19156
|
+
"record.metadata.related": "Entdecken Sie den Katalog",
|
|
19048
19157
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19049
19158
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19050
19159
|
"record.metadata.status": "Status",
|
|
@@ -19056,7 +19165,6 @@ var de = {
|
|
|
19056
19165
|
"record.metadata.temporalExtent.untilDate": "Bis {end}",
|
|
19057
19166
|
"record.metadata.title": "Titel",
|
|
19058
19167
|
"record.metadata.topics": "Kategorien",
|
|
19059
|
-
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19060
19168
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
19061
19169
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
19062
19170
|
"record.metadata.updatedOn": "Geändert am",
|
|
@@ -19176,7 +19284,6 @@ var de = {
|
|
|
19176
19284
|
"tooltip.html.copy": "HTML kopieren",
|
|
19177
19285
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
19178
19286
|
"tooltip.url.copy": "URL kopieren",
|
|
19179
|
-
"tooltip.url.open": "URL öffnen",
|
|
19180
19287
|
"ui.readLess": "Weniger lesen",
|
|
19181
19288
|
"ui.readMore": "Weiterlesen",
|
|
19182
19289
|
"wfs.feature.limit": "Zu viele Features, um den WFS-Layer anzuzeigen!",
|
|
@@ -19223,6 +19330,7 @@ var en = {
|
|
|
19223
19330
|
"dashboard.labels.mySpace": "My space",
|
|
19224
19331
|
"dashboard.records.all": "Datasets",
|
|
19225
19332
|
"dashboard.records.hasDraft": "draft",
|
|
19333
|
+
"dashboard.records.isMultilingual": "This record is multilingual ({languages})",
|
|
19226
19334
|
"dashboard.records.myDraft": "My drafts",
|
|
19227
19335
|
"dashboard.records.myRecords": "My datasets",
|
|
19228
19336
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
@@ -19397,9 +19505,13 @@ var en = {
|
|
|
19397
19505
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
19398
19506
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
19399
19507
|
"editor.record.form.license.unknown": "Unknown or absent",
|
|
19508
|
+
"editor.record.form.multilingual.activate": "Activate the languages",
|
|
19509
|
+
"editor.record.form.multilingual.default": "Default",
|
|
19400
19510
|
"editor.record.form.multilingual.enable": "Multilingual Mode",
|
|
19511
|
+
"editor.record.form.multilingual.forbidden": "You are not allowed to remove the default language",
|
|
19401
19512
|
"editor.record.form.multilingual.open": "Open the multilingual panel",
|
|
19402
19513
|
"editor.record.form.multilingual.title": "Translations",
|
|
19514
|
+
"editor.record.form.multilingual.validate": "Validate",
|
|
19403
19515
|
"editor.record.form.page.accessAndContact": "Information for use",
|
|
19404
19516
|
"editor.record.form.page.description": "Dataset description",
|
|
19405
19517
|
"editor.record.form.page.resources": "Resources",
|
|
@@ -19429,8 +19541,13 @@ var en = {
|
|
|
19429
19541
|
"editor.record.loadError.body": "The dataset could not be loaded:",
|
|
19430
19542
|
"editor.record.loadError.closeMessage": "Understood",
|
|
19431
19543
|
"editor.record.loadError.title": "Error loading dataset",
|
|
19432
|
-
"editor.record.lock.
|
|
19433
|
-
"editor.record.lock.
|
|
19544
|
+
"editor.record.lock.harvested": "Datasets harvested from an external catalog are not editable",
|
|
19545
|
+
"editor.record.lock.owner": "You are not an editor of the allowed groups",
|
|
19546
|
+
"editor.record.lock.resourceType": "Records of a type other than dataset are not editable",
|
|
19547
|
+
"editor.record.multilingual.confirmation.cancelText": "Keep the language(s)",
|
|
19548
|
+
"editor.record.multilingual.confirmation.confirmText": "Remove the language(s)",
|
|
19549
|
+
"editor.record.multilingual.confirmation.message": "You are about to remove one or several languages, which will delete all of the related translations and is irreversible. Do you want to proceed?",
|
|
19550
|
+
"editor.record.multilingual.confirmation.title": "Remove languages",
|
|
19434
19551
|
"editor.record.onlineResource.protocol.other": "Other",
|
|
19435
19552
|
"editor.record.onlineResourceError.body": "An error happened while adding the resource:",
|
|
19436
19553
|
"editor.record.onlineResourceError.closeMessage": "Understood",
|
|
@@ -19477,6 +19594,11 @@ var en = {
|
|
|
19477
19594
|
"facets.block.title.tag.default": "Tag",
|
|
19478
19595
|
"facets.block.title.th_regions_tree.default": "Regions",
|
|
19479
19596
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
|
|
19597
|
+
"feature.catalog.attribute.code": "Code",
|
|
19598
|
+
"feature.catalog.attribute.definition": "Description",
|
|
19599
|
+
"feature.catalog.attribute.name": "Name",
|
|
19600
|
+
"feature.catalog.attribute.type": "Type",
|
|
19601
|
+
"feature.catalog.attribute.values": "Values",
|
|
19480
19602
|
"input.file.dropFileLabel": "or drop it here",
|
|
19481
19603
|
"input.file.orInputUrl": "or create a link to an external resource",
|
|
19482
19604
|
"input.file.selectFileLabel": "Select a file ({sizeMB} MB max.)",
|
|
@@ -19491,20 +19613,32 @@ var en = {
|
|
|
19491
19613
|
"input.image.uploadErrorLabel": "The image could not be uploaded",
|
|
19492
19614
|
"input.image.uploadProgressCancel": "Cancel",
|
|
19493
19615
|
"input.image.uploadProgressLabel": "Upload in progress...",
|
|
19616
|
+
"language.ar": "Arabic",
|
|
19617
|
+
"language.az": "Azerbaijani",
|
|
19494
19618
|
"language.ca": "Catalan",
|
|
19495
19619
|
"language.cs": "Czech",
|
|
19620
|
+
"language.cy": "Welsh",
|
|
19621
|
+
"language.da": "Danish",
|
|
19496
19622
|
"language.de": "German",
|
|
19497
19623
|
"language.en": "English",
|
|
19498
19624
|
"language.es": "Spanish",
|
|
19499
19625
|
"language.fi": "Finnish",
|
|
19500
19626
|
"language.fr": "French",
|
|
19627
|
+
"language.hy": "Armenian",
|
|
19501
19628
|
"language.is": "Icelandic",
|
|
19502
19629
|
"language.it": "Italian",
|
|
19630
|
+
"language.ka": "Georgian",
|
|
19503
19631
|
"language.ko": "Korean",
|
|
19504
19632
|
"language.nl": "Dutch",
|
|
19633
|
+
"language.no": "Norwegian",
|
|
19634
|
+
"language.pl": "Polish",
|
|
19505
19635
|
"language.pt": "Portuguese",
|
|
19636
|
+
"language.rm": "Romansh",
|
|
19506
19637
|
"language.ru": "Russian",
|
|
19507
19638
|
"language.sk": "Slovak",
|
|
19639
|
+
"language.sv": "Swedish",
|
|
19640
|
+
"language.tr": "Turkish",
|
|
19641
|
+
"language.uk": "Ukrainian",
|
|
19508
19642
|
"language.zh": "Chinese",
|
|
19509
19643
|
"map.add.layer": "Add a layer",
|
|
19510
19644
|
"map.add.layer.catalog": "From the catalog",
|
|
@@ -19524,6 +19658,7 @@ var en = {
|
|
|
19524
19658
|
"map.navigation.message": "Please use CTRL + mouse (or two fingers on mobile) to navigate the map",
|
|
19525
19659
|
"map.ogc.urlInput.hint": "Enter OGC API service URL",
|
|
19526
19660
|
"map.select.layer": "Data source",
|
|
19661
|
+
"map.select.style": "Style",
|
|
19527
19662
|
"map.wfs.urlInput.hint": "Enter WFS service URL",
|
|
19528
19663
|
"map.wms.urlInput.hint": "Enter WMS service URL",
|
|
19529
19664
|
"multiselect.filter.placeholder": "Search",
|
|
@@ -19551,6 +19686,7 @@ var en = {
|
|
|
19551
19686
|
"record.action.duplicate": "Duplicate",
|
|
19552
19687
|
"record.action.duplicating": "Duplicating...",
|
|
19553
19688
|
"record.action.rollback": "Rollback",
|
|
19689
|
+
"record.action.switchLang": "Switch to default",
|
|
19554
19690
|
"record.action.view": "View",
|
|
19555
19691
|
"record.card.metadata.contact": "Metadata Contact",
|
|
19556
19692
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
@@ -19601,9 +19737,15 @@ var en = {
|
|
|
19601
19737
|
"record.metadata.download": "Downloads",
|
|
19602
19738
|
"record.metadata.feature.catalog": "Feature catalog",
|
|
19603
19739
|
"record.metadata.formats": "Formats",
|
|
19740
|
+
"record.metadata.isGeographical": "Geographical dataset",
|
|
19604
19741
|
"record.metadata.keywords": "Keywords",
|
|
19605
19742
|
"record.metadata.languages": "Languages",
|
|
19606
19743
|
"record.metadata.lastUpdate": "Last updated on {date}",
|
|
19744
|
+
"record.metadata.linked.datasets": "Associated datasets",
|
|
19745
|
+
"record.metadata.linked.records": "Associated content",
|
|
19746
|
+
"record.metadata.linked.reuses": "Associated reuses",
|
|
19747
|
+
"record.metadata.linked.services": "Associated services",
|
|
19748
|
+
"record.metadata.linked.sourceDatasets": "Source datasets",
|
|
19607
19749
|
"record.metadata.links": "Links",
|
|
19608
19750
|
"record.metadata.noUsage": "No usage conditions specified for this dataset.",
|
|
19609
19751
|
"record.metadata.otherConstraints": "Additional Conditions",
|
|
@@ -19613,6 +19755,8 @@ var en = {
|
|
|
19613
19755
|
"record.metadata.publication": "Date of publication",
|
|
19614
19756
|
"record.metadata.publications": "{count, plural, =0{publication} one{publication} other{publications}}",
|
|
19615
19757
|
"record.metadata.quality": "Metadata Quality",
|
|
19758
|
+
"record.metadata.quality.capabilities.failed": "Capabilities URL is not specified",
|
|
19759
|
+
"record.metadata.quality.capabilities.success": "Capabilities URL is specified",
|
|
19616
19760
|
"record.metadata.quality.contact.failed": "Contact is not specified",
|
|
19617
19761
|
"record.metadata.quality.contact.success": "Contact is specified",
|
|
19618
19762
|
"record.metadata.quality.description.failed": "Description is not specified",
|
|
@@ -19624,14 +19768,15 @@ var en = {
|
|
|
19624
19768
|
"record.metadata.quality.legalConstraints.success": "Legal constraints are specified",
|
|
19625
19769
|
"record.metadata.quality.organisation.failed": "Organisation is not specified",
|
|
19626
19770
|
"record.metadata.quality.organisation.success": "Organisation is specified",
|
|
19771
|
+
"record.metadata.quality.source.failed": "No source dataset is specified",
|
|
19772
|
+
"record.metadata.quality.source.success": "A source dataset is specified",
|
|
19627
19773
|
"record.metadata.quality.title.failed": "Title is not specified",
|
|
19628
19774
|
"record.metadata.quality.title.success": "Title is specified",
|
|
19629
19775
|
"record.metadata.quality.topic.failed": "Topic is not specified",
|
|
19630
19776
|
"record.metadata.quality.topic.success": "Topic is specified",
|
|
19631
19777
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19632
19778
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19633
|
-
"record.metadata.related": "
|
|
19634
|
-
"record.metadata.related.contents": "Related content",
|
|
19779
|
+
"record.metadata.related": "Explore the catalog",
|
|
19635
19780
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19636
19781
|
"record.metadata.sheet": "Original metadata",
|
|
19637
19782
|
"record.metadata.status": "Status",
|
|
@@ -19643,7 +19788,6 @@ var en = {
|
|
|
19643
19788
|
"record.metadata.temporalExtent.untilDate": "Until { end }",
|
|
19644
19789
|
"record.metadata.title": "Title",
|
|
19645
19790
|
"record.metadata.topics": "Categories",
|
|
19646
|
-
"record.metadata.isGeographical": "Geographical dataset",
|
|
19647
19791
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
19648
19792
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
19649
19793
|
"record.metadata.updatedOn": "Updated on",
|
|
@@ -19763,7 +19907,6 @@ var en = {
|
|
|
19763
19907
|
"tooltip.html.copy": "Copy HTML",
|
|
19764
19908
|
"tooltip.id.copy": "Copy unique identifier",
|
|
19765
19909
|
"tooltip.url.copy": "Copy URL",
|
|
19766
|
-
"tooltip.url.open": "Open URL",
|
|
19767
19910
|
"ui.readLess": "Read less",
|
|
19768
19911
|
"ui.readMore": "Read more",
|
|
19769
19912
|
"wfs.feature.limit": "Too many features to display the WFS layer!",
|
|
@@ -19810,6 +19953,7 @@ var es = {
|
|
|
19810
19953
|
"dashboard.labels.mySpace": "Mi espacio",
|
|
19811
19954
|
"dashboard.records.all": "Catálogo",
|
|
19812
19955
|
"dashboard.records.hasDraft": "",
|
|
19956
|
+
"dashboard.records.isMultilingual": "Este registro es multilingüe ({languages})",
|
|
19813
19957
|
"dashboard.records.myDraft": "Mis borradores",
|
|
19814
19958
|
"dashboard.records.myRecords": "Mis Registros",
|
|
19815
19959
|
"dashboard.records.search": "Buscar \"{searchText}\"",
|
|
@@ -19984,9 +20128,13 @@ var es = {
|
|
|
19984
20128
|
"editor.record.form.license.odc-by": "",
|
|
19985
20129
|
"editor.record.form.license.pddl": "",
|
|
19986
20130
|
"editor.record.form.license.unknown": "",
|
|
20131
|
+
"editor.record.form.multilingual.activate": "",
|
|
20132
|
+
"editor.record.form.multilingual.default": "",
|
|
19987
20133
|
"editor.record.form.multilingual.enable": "",
|
|
20134
|
+
"editor.record.form.multilingual.forbidden": "",
|
|
19988
20135
|
"editor.record.form.multilingual.open": "",
|
|
19989
20136
|
"editor.record.form.multilingual.title": "",
|
|
20137
|
+
"editor.record.form.multilingual.validate": "",
|
|
19990
20138
|
"editor.record.form.page.accessAndContact": "",
|
|
19991
20139
|
"editor.record.form.page.description": "",
|
|
19992
20140
|
"editor.record.form.page.resources": "",
|
|
@@ -20016,8 +20164,13 @@ var es = {
|
|
|
20016
20164
|
"editor.record.loadError.body": "",
|
|
20017
20165
|
"editor.record.loadError.closeMessage": "",
|
|
20018
20166
|
"editor.record.loadError.title": "",
|
|
20019
|
-
"editor.record.lock.
|
|
20020
|
-
"editor.record.lock.
|
|
20167
|
+
"editor.record.lock.harvested": "",
|
|
20168
|
+
"editor.record.lock.owner": "",
|
|
20169
|
+
"editor.record.lock.resourceType": "",
|
|
20170
|
+
"editor.record.multilingual.confirmation.cancelText": "",
|
|
20171
|
+
"editor.record.multilingual.confirmation.confirmText": "",
|
|
20172
|
+
"editor.record.multilingual.confirmation.message": "",
|
|
20173
|
+
"editor.record.multilingual.confirmation.title": "",
|
|
20021
20174
|
"editor.record.onlineResource.protocol.other": "",
|
|
20022
20175
|
"editor.record.onlineResourceError.body": "",
|
|
20023
20176
|
"editor.record.onlineResourceError.closeMessage": "",
|
|
@@ -20064,6 +20217,11 @@ var es = {
|
|
|
20064
20217
|
"facets.block.title.tag.default": "",
|
|
20065
20218
|
"facets.block.title.th_regions_tree.default": "",
|
|
20066
20219
|
"favorite.not.authenticated.tooltip": "",
|
|
20220
|
+
"feature.catalog.attribute.code": "Código",
|
|
20221
|
+
"feature.catalog.attribute.definition": "Descripción",
|
|
20222
|
+
"feature.catalog.attribute.name": "Nombre",
|
|
20223
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
20224
|
+
"feature.catalog.attribute.values": "Valores",
|
|
20067
20225
|
"input.file.dropFileLabel": "",
|
|
20068
20226
|
"input.file.orInputUrl": "",
|
|
20069
20227
|
"input.file.selectFileLabel": "",
|
|
@@ -20078,20 +20236,32 @@ var es = {
|
|
|
20078
20236
|
"input.image.uploadErrorLabel": "",
|
|
20079
20237
|
"input.image.uploadProgressCancel": "",
|
|
20080
20238
|
"input.image.uploadProgressLabel": "",
|
|
20239
|
+
"language.ar": "",
|
|
20240
|
+
"language.az": "",
|
|
20081
20241
|
"language.ca": "Catalán",
|
|
20082
20242
|
"language.cs": "Checo",
|
|
20243
|
+
"language.cy": "",
|
|
20244
|
+
"language.da": "",
|
|
20083
20245
|
"language.de": "Alemán",
|
|
20084
20246
|
"language.en": "Inglés",
|
|
20085
20247
|
"language.es": "Español",
|
|
20086
20248
|
"language.fi": "Finlandés",
|
|
20087
20249
|
"language.fr": "Francés",
|
|
20250
|
+
"language.hy": "",
|
|
20088
20251
|
"language.is": "Islandés",
|
|
20089
20252
|
"language.it": "Italiano",
|
|
20253
|
+
"language.ka": "",
|
|
20090
20254
|
"language.ko": "Coreano",
|
|
20091
20255
|
"language.nl": "Neerlandés",
|
|
20256
|
+
"language.no": "",
|
|
20257
|
+
"language.pl": "",
|
|
20092
20258
|
"language.pt": "Portugués",
|
|
20259
|
+
"language.rm": "",
|
|
20093
20260
|
"language.ru": "Ruso",
|
|
20094
20261
|
"language.sk": "Eslovaco",
|
|
20262
|
+
"language.sv": "",
|
|
20263
|
+
"language.tr": "",
|
|
20264
|
+
"language.uk": "",
|
|
20095
20265
|
"language.zh": "Chino",
|
|
20096
20266
|
"map.add.layer": "",
|
|
20097
20267
|
"map.add.layer.catalog": "",
|
|
@@ -20111,6 +20281,7 @@ var es = {
|
|
|
20111
20281
|
"map.navigation.message": "",
|
|
20112
20282
|
"map.ogc.urlInput.hint": "",
|
|
20113
20283
|
"map.select.layer": "",
|
|
20284
|
+
"map.select.style": "",
|
|
20114
20285
|
"map.wfs.urlInput.hint": "",
|
|
20115
20286
|
"map.wms.urlInput.hint": "",
|
|
20116
20287
|
"multiselect.filter.placeholder": "",
|
|
@@ -20138,6 +20309,7 @@ var es = {
|
|
|
20138
20309
|
"record.action.duplicate": "",
|
|
20139
20310
|
"record.action.duplicating": "",
|
|
20140
20311
|
"record.action.rollback": "",
|
|
20312
|
+
"record.action.switchLang": "",
|
|
20141
20313
|
"record.action.view": "",
|
|
20142
20314
|
"record.card.metadata.contact": "",
|
|
20143
20315
|
"record.externalViewer.open": "",
|
|
@@ -20188,9 +20360,15 @@ var es = {
|
|
|
20188
20360
|
"record.metadata.download": "",
|
|
20189
20361
|
"record.metadata.feature.catalog": "",
|
|
20190
20362
|
"record.metadata.formats": "",
|
|
20363
|
+
"record.metadata.isGeographical": "",
|
|
20191
20364
|
"record.metadata.keywords": "",
|
|
20192
20365
|
"record.metadata.languages": "",
|
|
20193
20366
|
"record.metadata.lastUpdate": "",
|
|
20367
|
+
"record.metadata.linked.datasets": "",
|
|
20368
|
+
"record.metadata.linked.records": "",
|
|
20369
|
+
"record.metadata.linked.reuses": "",
|
|
20370
|
+
"record.metadata.linked.services": "",
|
|
20371
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
20194
20372
|
"record.metadata.links": "",
|
|
20195
20373
|
"record.metadata.noUsage": "",
|
|
20196
20374
|
"record.metadata.otherConstraints": "",
|
|
@@ -20200,6 +20378,8 @@ var es = {
|
|
|
20200
20378
|
"record.metadata.publication": "",
|
|
20201
20379
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
20202
20380
|
"record.metadata.quality": "",
|
|
20381
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
20382
|
+
"record.metadata.quality.capabilities.success": "",
|
|
20203
20383
|
"record.metadata.quality.contact.failed": "",
|
|
20204
20384
|
"record.metadata.quality.contact.success": "",
|
|
20205
20385
|
"record.metadata.quality.description.failed": "",
|
|
@@ -20211,6 +20391,8 @@ var es = {
|
|
|
20211
20391
|
"record.metadata.quality.legalConstraints.success": "",
|
|
20212
20392
|
"record.metadata.quality.organisation.failed": "",
|
|
20213
20393
|
"record.metadata.quality.organisation.success": "",
|
|
20394
|
+
"record.metadata.quality.source.failed": "",
|
|
20395
|
+
"record.metadata.quality.source.success": "",
|
|
20214
20396
|
"record.metadata.quality.title.failed": "",
|
|
20215
20397
|
"record.metadata.quality.title.success": "",
|
|
20216
20398
|
"record.metadata.quality.topic.failed": "",
|
|
@@ -20218,7 +20400,6 @@ var es = {
|
|
|
20218
20400
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20219
20401
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20220
20402
|
"record.metadata.related": "",
|
|
20221
|
-
"record.metadata.related.contents": "",
|
|
20222
20403
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20223
20404
|
"record.metadata.sheet": "",
|
|
20224
20405
|
"record.metadata.status": "",
|
|
@@ -20230,7 +20411,6 @@ var es = {
|
|
|
20230
20411
|
"record.metadata.temporalExtent.untilDate": "",
|
|
20231
20412
|
"record.metadata.title": "",
|
|
20232
20413
|
"record.metadata.topics": "",
|
|
20233
|
-
"record.metadata.isGeographical": "",
|
|
20234
20414
|
"record.metadata.uniqueId": "",
|
|
20235
20415
|
"record.metadata.updateFrequency": "",
|
|
20236
20416
|
"record.metadata.updatedOn": "",
|
|
@@ -20350,7 +20530,6 @@ var es = {
|
|
|
20350
20530
|
"tooltip.html.copy": "",
|
|
20351
20531
|
"tooltip.id.copy": "",
|
|
20352
20532
|
"tooltip.url.copy": "",
|
|
20353
|
-
"tooltip.url.open": "",
|
|
20354
20533
|
"ui.readLess": "",
|
|
20355
20534
|
"ui.readMore": "",
|
|
20356
20535
|
"wfs.feature.limit": "",
|
|
@@ -20397,6 +20576,7 @@ var fr = {
|
|
|
20397
20576
|
"dashboard.labels.mySpace": "Mon espace",
|
|
20398
20577
|
"dashboard.records.all": "Jeux de données",
|
|
20399
20578
|
"dashboard.records.hasDraft": "brouillon",
|
|
20579
|
+
"dashboard.records.isMultilingual": "Cet enregistrement est multilingue ({languages})",
|
|
20400
20580
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
20401
20581
|
"dashboard.records.myRecords": "Mes jeux de données",
|
|
20402
20582
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
@@ -20571,9 +20751,13 @@ var fr = {
|
|
|
20571
20751
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
20572
20752
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
20573
20753
|
"editor.record.form.license.unknown": "Inconnue ou absente",
|
|
20754
|
+
"editor.record.form.multilingual.activate": "Activez les langues",
|
|
20755
|
+
"editor.record.form.multilingual.default": "Par défaut",
|
|
20574
20756
|
"editor.record.form.multilingual.enable": "Mode Multilingue",
|
|
20757
|
+
"editor.record.form.multilingual.forbidden": "Vous ne pouvez pas supprimer le language par défaut",
|
|
20575
20758
|
"editor.record.form.multilingual.open": "Ouvrir le menu multilingue",
|
|
20576
20759
|
"editor.record.form.multilingual.title": "Traductions",
|
|
20760
|
+
"editor.record.form.multilingual.validate": "Valider",
|
|
20577
20761
|
"editor.record.form.page.accessAndContact": "Informations pour l'utilisation",
|
|
20578
20762
|
"editor.record.form.page.description": "Description du jeu de données",
|
|
20579
20763
|
"editor.record.form.page.resources": "Ressources",
|
|
@@ -20603,8 +20787,13 @@ var fr = {
|
|
|
20603
20787
|
"editor.record.loadError.body": "Le jeu de données n'a pas pu être chargé :",
|
|
20604
20788
|
"editor.record.loadError.closeMessage": "Compris",
|
|
20605
20789
|
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
20606
|
-
"editor.record.lock.
|
|
20607
|
-
"editor.record.lock.
|
|
20790
|
+
"editor.record.lock.harvested": "Les jeux de données moissonnés ne sont pas éditables",
|
|
20791
|
+
"editor.record.lock.owner": "Vous n'êtes pas éditeur d'un des groupes autorisés",
|
|
20792
|
+
"editor.record.lock.resourceType": "Les fiches d'un type autre que jeu de données ne sont pas éditables",
|
|
20793
|
+
"editor.record.multilingual.confirmation.cancelText": "Garder le(s) language(s)",
|
|
20794
|
+
"editor.record.multilingual.confirmation.confirmText": "Supprimer le(s) language(s)",
|
|
20795
|
+
"editor.record.multilingual.confirmation.message": "Vous allez supprimer un ou plusieurs languages, ce qui supprimera toutes les traductions qui y sont liées et est irréversible. Voulez-vous procéder ?",
|
|
20796
|
+
"editor.record.multilingual.confirmation.title": "Suppression de language(s)",
|
|
20608
20797
|
"editor.record.onlineResource.protocol.other": "Autre",
|
|
20609
20798
|
"editor.record.onlineResourceError.body": "Une erreur est survenue lors de l'ajout de la ressource :",
|
|
20610
20799
|
"editor.record.onlineResourceError.closeMessage": "Compris",
|
|
@@ -20651,6 +20840,11 @@ var fr = {
|
|
|
20651
20840
|
"facets.block.title.tag.default": "Tag",
|
|
20652
20841
|
"facets.block.title.th_regions_tree.default": "Régions",
|
|
20653
20842
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
|
|
20843
|
+
"feature.catalog.attribute.code": "Code",
|
|
20844
|
+
"feature.catalog.attribute.definition": "Description",
|
|
20845
|
+
"feature.catalog.attribute.name": "Nom",
|
|
20846
|
+
"feature.catalog.attribute.type": "Type",
|
|
20847
|
+
"feature.catalog.attribute.values": "Valeurs",
|
|
20654
20848
|
"input.file.dropFileLabel": "ou glissez-le ici",
|
|
20655
20849
|
"input.file.orInputUrl": "ou créez un lien vers une ressource externe",
|
|
20656
20850
|
"input.file.selectFileLabel": "Sélectionnez un fichier ({sizeMB} Mo max.)",
|
|
@@ -20665,20 +20859,32 @@ var fr = {
|
|
|
20665
20859
|
"input.image.uploadErrorLabel": "L'image n'a pas pu être chargée",
|
|
20666
20860
|
"input.image.uploadProgressCancel": "Annuler",
|
|
20667
20861
|
"input.image.uploadProgressLabel": "Chargement en cours...",
|
|
20862
|
+
"language.ar": "Arabe",
|
|
20863
|
+
"language.az": "Azéri",
|
|
20668
20864
|
"language.ca": "Catalan",
|
|
20669
20865
|
"language.cs": "Tchèque",
|
|
20866
|
+
"language.cy": "Gallois",
|
|
20867
|
+
"language.da": "Danois",
|
|
20670
20868
|
"language.de": "Allemand",
|
|
20671
20869
|
"language.en": "Anglais",
|
|
20672
20870
|
"language.es": "Espagnol",
|
|
20673
20871
|
"language.fi": "Finnois",
|
|
20674
20872
|
"language.fr": "Français",
|
|
20873
|
+
"language.hy": "Arménien",
|
|
20675
20874
|
"language.is": "Islandais",
|
|
20676
20875
|
"language.it": "Italien",
|
|
20876
|
+
"language.ka": "Géorgien",
|
|
20677
20877
|
"language.ko": "Coréen",
|
|
20678
20878
|
"language.nl": "Néerlandais",
|
|
20879
|
+
"language.no": "Norvégien",
|
|
20880
|
+
"language.pl": "Polonais",
|
|
20679
20881
|
"language.pt": "Portugais",
|
|
20882
|
+
"language.rm": "Romanche",
|
|
20680
20883
|
"language.ru": "Russe",
|
|
20681
20884
|
"language.sk": "Slovaque",
|
|
20885
|
+
"language.sv": "Suédois",
|
|
20886
|
+
"language.tr": "Turque",
|
|
20887
|
+
"language.uk": "Ukrainien",
|
|
20682
20888
|
"language.zh": "Chinois",
|
|
20683
20889
|
"map.add.layer": "Ajouter une couche",
|
|
20684
20890
|
"map.add.layer.catalog": "Du catalogue",
|
|
@@ -20698,6 +20904,7 @@ var fr = {
|
|
|
20698
20904
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
20699
20905
|
"map.ogc.urlInput.hint": "Entrez l'URL du service OGC API",
|
|
20700
20906
|
"map.select.layer": "Source de données",
|
|
20907
|
+
"map.select.style": "Style",
|
|
20701
20908
|
"map.wfs.urlInput.hint": "Entrez l'URL du service WFS",
|
|
20702
20909
|
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
20703
20910
|
"multiselect.filter.placeholder": "Rechercher",
|
|
@@ -20725,6 +20932,7 @@ var fr = {
|
|
|
20725
20932
|
"record.action.duplicate": "Dupliquer",
|
|
20726
20933
|
"record.action.duplicating": "Duplication...",
|
|
20727
20934
|
"record.action.rollback": "Restaurer",
|
|
20935
|
+
"record.action.switchLang": "Marquer par défaut",
|
|
20728
20936
|
"record.action.view": "Voir",
|
|
20729
20937
|
"record.card.metadata.contact": "Contact de la métadonnée ",
|
|
20730
20938
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
@@ -20775,9 +20983,15 @@ var fr = {
|
|
|
20775
20983
|
"record.metadata.download": "Téléchargements",
|
|
20776
20984
|
"record.metadata.feature.catalog": "Catalogue d'attributs",
|
|
20777
20985
|
"record.metadata.formats": "Formats",
|
|
20986
|
+
"record.metadata.isGeographical": "Donnée géographique",
|
|
20778
20987
|
"record.metadata.keywords": "Mots-clés",
|
|
20779
20988
|
"record.metadata.languages": "Langues",
|
|
20780
20989
|
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
20990
|
+
"record.metadata.linked.datasets": "Jeux de données associés",
|
|
20991
|
+
"record.metadata.linked.records": "Contenus associés",
|
|
20992
|
+
"record.metadata.linked.reuses": "Réutilisations associées",
|
|
20993
|
+
"record.metadata.linked.services": "Services associés",
|
|
20994
|
+
"record.metadata.linked.sourceDatasets": "Jeux de données sources",
|
|
20781
20995
|
"record.metadata.links": "Liens",
|
|
20782
20996
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
20783
20997
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
@@ -20787,6 +21001,8 @@ var fr = {
|
|
|
20787
21001
|
"record.metadata.publication": "Date de publication",
|
|
20788
21002
|
"record.metadata.publications": "{count, plural, =0{donnée} one{donnée} other{données}}",
|
|
20789
21003
|
"record.metadata.quality": "Qualité des métadonnées",
|
|
21004
|
+
"record.metadata.quality.capabilities.failed": "Aucune URL de Capabilities n'est renseignée",
|
|
21005
|
+
"record.metadata.quality.capabilities.success": "Une URL de Capabilities est renseignée",
|
|
20790
21006
|
"record.metadata.quality.contact.failed": "Le contact n'est pas renseigné",
|
|
20791
21007
|
"record.metadata.quality.contact.success": "Le contact est renseigné",
|
|
20792
21008
|
"record.metadata.quality.description.failed": "La description n'est pas renseignée",
|
|
@@ -20798,14 +21014,15 @@ var fr = {
|
|
|
20798
21014
|
"record.metadata.quality.legalConstraints.success": "Les contraintes légales sont renseignées",
|
|
20799
21015
|
"record.metadata.quality.organisation.failed": "Le producteur n'est pas renseigné",
|
|
20800
21016
|
"record.metadata.quality.organisation.success": "Le producteur est renseigné",
|
|
21017
|
+
"record.metadata.quality.source.failed": "Aucun jeu de données source n'est renseigné",
|
|
21018
|
+
"record.metadata.quality.source.success": "Un jeu de données source est renseigné",
|
|
20801
21019
|
"record.metadata.quality.title.failed": "Le titre n'est pas renseigné",
|
|
20802
21020
|
"record.metadata.quality.title.success": "Le titre est renseigné",
|
|
20803
21021
|
"record.metadata.quality.topic.failed": "Le thème n'est pas renseigné",
|
|
20804
21022
|
"record.metadata.quality.topic.success": "Le thème est renseigné",
|
|
20805
21023
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20806
21024
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
20807
|
-
"record.metadata.related": "
|
|
20808
|
-
"record.metadata.related.contents": "Contenu associé",
|
|
21025
|
+
"record.metadata.related": "Explorez le catalogue",
|
|
20809
21026
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20810
21027
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20811
21028
|
"record.metadata.status": "Statut",
|
|
@@ -20817,7 +21034,6 @@ var fr = {
|
|
|
20817
21034
|
"record.metadata.temporalExtent.untilDate": "Jusqu'au { end }",
|
|
20818
21035
|
"record.metadata.title": "Intitulé",
|
|
20819
21036
|
"record.metadata.topics": "Catégories",
|
|
20820
|
-
"record.metadata.isGeographical": "Donnée géographique",
|
|
20821
21037
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
20822
21038
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
20823
21039
|
"record.metadata.updatedOn": "Modifié le",
|
|
@@ -20937,7 +21153,6 @@ var fr = {
|
|
|
20937
21153
|
"tooltip.html.copy": "Copier le HTML",
|
|
20938
21154
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
20939
21155
|
"tooltip.url.copy": "Copier l'URL",
|
|
20940
|
-
"tooltip.url.open": "Ouvrir l'URL",
|
|
20941
21156
|
"ui.readLess": "Réduire",
|
|
20942
21157
|
"ui.readMore": "Lire la suite",
|
|
20943
21158
|
"wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
|
|
@@ -20984,6 +21199,7 @@ var it = {
|
|
|
20984
21199
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
20985
21200
|
"dashboard.records.all": "Catalogo",
|
|
20986
21201
|
"dashboard.records.hasDraft": "Bozza",
|
|
21202
|
+
"dashboard.records.isMultilingual": "Questo record è multilingue ({languages})",
|
|
20987
21203
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
20988
21204
|
"dashboard.records.myRecords": "I miei dati",
|
|
20989
21205
|
"dashboard.records.search": "Risultati per \"{searchText}\"",
|
|
@@ -21158,9 +21374,13 @@ var it = {
|
|
|
21158
21374
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
21159
21375
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
21160
21376
|
"editor.record.form.license.unknown": "Sconosciuto o assente",
|
|
21377
|
+
"editor.record.form.multilingual.activate": "",
|
|
21378
|
+
"editor.record.form.multilingual.default": "",
|
|
21161
21379
|
"editor.record.form.multilingual.enable": "Aprire il pannello multilingue",
|
|
21380
|
+
"editor.record.form.multilingual.forbidden": "",
|
|
21162
21381
|
"editor.record.form.multilingual.open": "Modalità multilingue",
|
|
21163
21382
|
"editor.record.form.multilingual.title": "Traduzioni",
|
|
21383
|
+
"editor.record.form.multilingual.validate": "",
|
|
21164
21384
|
"editor.record.form.page.accessAndContact": "Informazioni per l'uso",
|
|
21165
21385
|
"editor.record.form.page.description": "Descrizione del dataset",
|
|
21166
21386
|
"editor.record.form.page.resources": "Risorse",
|
|
@@ -21190,8 +21410,13 @@ var it = {
|
|
|
21190
21410
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21191
21411
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21192
21412
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21193
|
-
"editor.record.lock.
|
|
21194
|
-
"editor.record.lock.
|
|
21413
|
+
"editor.record.lock.harvested": "",
|
|
21414
|
+
"editor.record.lock.owner": "Non è un editore di uno dei gruppi autorizzati",
|
|
21415
|
+
"editor.record.lock.resourceType": "I record con il formato 'servizio' o 'riutilizzo' non sono modificabili",
|
|
21416
|
+
"editor.record.multilingual.confirmation.cancelText": "",
|
|
21417
|
+
"editor.record.multilingual.confirmation.confirmText": "",
|
|
21418
|
+
"editor.record.multilingual.confirmation.message": "",
|
|
21419
|
+
"editor.record.multilingual.confirmation.title": "",
|
|
21195
21420
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21196
21421
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
21197
21422
|
"editor.record.onlineResourceError.closeMessage": "Capito",
|
|
@@ -21238,6 +21463,11 @@ var it = {
|
|
|
21238
21463
|
"facets.block.title.tag.default": "Tag",
|
|
21239
21464
|
"facets.block.title.th_regions_tree.default": "Regioni",
|
|
21240
21465
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
|
|
21466
|
+
"feature.catalog.attribute.code": "Codice",
|
|
21467
|
+
"feature.catalog.attribute.definition": "Descrizione",
|
|
21468
|
+
"feature.catalog.attribute.name": "Nome",
|
|
21469
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
21470
|
+
"feature.catalog.attribute.values": "Valori",
|
|
21241
21471
|
"input.file.dropFileLabel": "oppure trascinalo qui",
|
|
21242
21472
|
"input.file.orInputUrl": "o collegamento a una risorsa esterna",
|
|
21243
21473
|
"input.file.selectFileLabel": "Seleziona un file ({sizeMB} MB max.)",
|
|
@@ -21252,20 +21482,32 @@ var it = {
|
|
|
21252
21482
|
"input.image.uploadErrorLabel": "Impossibile caricare l'immagine",
|
|
21253
21483
|
"input.image.uploadProgressCancel": "Annulla",
|
|
21254
21484
|
"input.image.uploadProgressLabel": "Caricamento...",
|
|
21485
|
+
"language.ar": "",
|
|
21486
|
+
"language.az": "",
|
|
21255
21487
|
"language.ca": "Catalano",
|
|
21256
21488
|
"language.cs": "Ceco",
|
|
21489
|
+
"language.cy": "",
|
|
21490
|
+
"language.da": "",
|
|
21257
21491
|
"language.de": "Tedesco",
|
|
21258
21492
|
"language.en": "Inglese",
|
|
21259
21493
|
"language.es": "Spagnolo",
|
|
21260
21494
|
"language.fi": "Finlandese",
|
|
21261
21495
|
"language.fr": "Francese",
|
|
21496
|
+
"language.hy": "",
|
|
21262
21497
|
"language.is": "Islandese",
|
|
21263
21498
|
"language.it": "Italiano",
|
|
21499
|
+
"language.ka": "",
|
|
21264
21500
|
"language.ko": "Coreano",
|
|
21265
21501
|
"language.nl": "Olandese",
|
|
21502
|
+
"language.no": "",
|
|
21503
|
+
"language.pl": "",
|
|
21266
21504
|
"language.pt": "Portoghese",
|
|
21505
|
+
"language.rm": "",
|
|
21267
21506
|
"language.ru": "Russo",
|
|
21268
21507
|
"language.sk": "Slovacco",
|
|
21508
|
+
"language.sv": "",
|
|
21509
|
+
"language.tr": "",
|
|
21510
|
+
"language.uk": "",
|
|
21269
21511
|
"language.zh": "Cinese",
|
|
21270
21512
|
"map.add.layer": "Aggiungere un layer",
|
|
21271
21513
|
"map.add.layer.catalog": "Dal catalogo",
|
|
@@ -21285,6 +21527,7 @@ var it = {
|
|
|
21285
21527
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
21286
21528
|
"map.ogc.urlInput.hint": "Inserisci URL del servizio OGC API",
|
|
21287
21529
|
"map.select.layer": "Sorgente dati",
|
|
21530
|
+
"map.select.style": "Style",
|
|
21288
21531
|
"map.wfs.urlInput.hint": "Inserisci URL del servizio WFS",
|
|
21289
21532
|
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
21290
21533
|
"multiselect.filter.placeholder": "Cerca",
|
|
@@ -21312,6 +21555,7 @@ var it = {
|
|
|
21312
21555
|
"record.action.duplicate": "Duplicato",
|
|
21313
21556
|
"record.action.duplicating": "Duplicazione",
|
|
21314
21557
|
"record.action.rollback": "Annulla",
|
|
21558
|
+
"record.action.switchLang": "",
|
|
21315
21559
|
"record.action.view": "Visualizza",
|
|
21316
21560
|
"record.card.metadata.contact": "Contatto del metadata",
|
|
21317
21561
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
@@ -21362,9 +21606,15 @@ var it = {
|
|
|
21362
21606
|
"record.metadata.download": "Download",
|
|
21363
21607
|
"record.metadata.feature.catalog": "Catalogo dei oggetti",
|
|
21364
21608
|
"record.metadata.formats": "Formati",
|
|
21609
|
+
"record.metadata.isGeographical": "Dati geografici",
|
|
21365
21610
|
"record.metadata.keywords": "Parole chiave",
|
|
21366
21611
|
"record.metadata.languages": "Lingue",
|
|
21367
21612
|
"record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
|
|
21613
|
+
"record.metadata.linked.datasets": "",
|
|
21614
|
+
"record.metadata.linked.records": "",
|
|
21615
|
+
"record.metadata.linked.reuses": "",
|
|
21616
|
+
"record.metadata.linked.services": "",
|
|
21617
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
21368
21618
|
"record.metadata.links": "Collegamenti",
|
|
21369
21619
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
21370
21620
|
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
@@ -21374,6 +21624,8 @@ var it = {
|
|
|
21374
21624
|
"record.metadata.publication": "Data di pubblicazione",
|
|
21375
21625
|
"record.metadata.publications": "{count, plural, =0{pubblicazione} one{pubblicazione} other{pubblicazioni}}",
|
|
21376
21626
|
"record.metadata.quality": "Qualità dei metadati",
|
|
21627
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
21628
|
+
"record.metadata.quality.capabilities.success": "",
|
|
21377
21629
|
"record.metadata.quality.contact.failed": "Il contatto non è specificato",
|
|
21378
21630
|
"record.metadata.quality.contact.success": "Il contatto è specificato",
|
|
21379
21631
|
"record.metadata.quality.description.failed": "La descrizione non è specificata",
|
|
@@ -21385,6 +21637,8 @@ var it = {
|
|
|
21385
21637
|
"record.metadata.quality.legalConstraints.success": "I vincoli legali sono specificate",
|
|
21386
21638
|
"record.metadata.quality.organisation.failed": "Il produttore non è specificato",
|
|
21387
21639
|
"record.metadata.quality.organisation.success": "Il produttore è specificato",
|
|
21640
|
+
"record.metadata.quality.source.failed": "",
|
|
21641
|
+
"record.metadata.quality.source.success": "",
|
|
21388
21642
|
"record.metadata.quality.title.failed": "Il titolo non è specificato",
|
|
21389
21643
|
"record.metadata.quality.title.success": "Il titolo è specificato",
|
|
21390
21644
|
"record.metadata.quality.topic.failed": "Il tema non è specificato",
|
|
@@ -21392,7 +21646,6 @@ var it = {
|
|
|
21392
21646
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21393
21647
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21394
21648
|
"record.metadata.related": "Vedi anche",
|
|
21395
|
-
"record.metadata.related.contents": "Contenuti correlati",
|
|
21396
21649
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21397
21650
|
"record.metadata.sheet": "Origine del metadata",
|
|
21398
21651
|
"record.metadata.status": "Stato",
|
|
@@ -21404,7 +21657,6 @@ var it = {
|
|
|
21404
21657
|
"record.metadata.temporalExtent.untilDate": "Fino a {end}",
|
|
21405
21658
|
"record.metadata.title": "Titolo",
|
|
21406
21659
|
"record.metadata.topics": "Categorie",
|
|
21407
|
-
"record.metadata.isGeographical": "Dati geografici",
|
|
21408
21660
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
21409
21661
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
21410
21662
|
"record.metadata.updatedOn": "Modificato il",
|
|
@@ -21524,7 +21776,6 @@ var it = {
|
|
|
21524
21776
|
"tooltip.html.copy": "Copiare il HTML",
|
|
21525
21777
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
21526
21778
|
"tooltip.url.copy": "Copiare l'URL",
|
|
21527
|
-
"tooltip.url.open": "Aprire l'URL",
|
|
21528
21779
|
"ui.readLess": "Ridurre",
|
|
21529
21780
|
"ui.readMore": "Leggere di più",
|
|
21530
21781
|
"wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
|
|
@@ -21571,6 +21822,7 @@ var nl = {
|
|
|
21571
21822
|
"dashboard.labels.mySpace": "Mijn ruimte",
|
|
21572
21823
|
"dashboard.records.all": "Catalogus",
|
|
21573
21824
|
"dashboard.records.hasDraft": "",
|
|
21825
|
+
"dashboard.records.isMultilingual": "Dit record is meertalig ({languages})",
|
|
21574
21826
|
"dashboard.records.myDraft": "Mijn concepten",
|
|
21575
21827
|
"dashboard.records.myRecords": "Mijn Records",
|
|
21576
21828
|
"dashboard.records.search": "Zoeken naar \"{searchText}\"",
|
|
@@ -21745,9 +21997,13 @@ var nl = {
|
|
|
21745
21997
|
"editor.record.form.license.odc-by": "",
|
|
21746
21998
|
"editor.record.form.license.pddl": "",
|
|
21747
21999
|
"editor.record.form.license.unknown": "",
|
|
22000
|
+
"editor.record.form.multilingual.activate": "",
|
|
22001
|
+
"editor.record.form.multilingual.default": "",
|
|
21748
22002
|
"editor.record.form.multilingual.enable": "",
|
|
22003
|
+
"editor.record.form.multilingual.forbidden": "",
|
|
21749
22004
|
"editor.record.form.multilingual.open": "",
|
|
21750
22005
|
"editor.record.form.multilingual.title": "",
|
|
22006
|
+
"editor.record.form.multilingual.validate": "",
|
|
21751
22007
|
"editor.record.form.page.accessAndContact": "",
|
|
21752
22008
|
"editor.record.form.page.description": "",
|
|
21753
22009
|
"editor.record.form.page.resources": "",
|
|
@@ -21777,8 +22033,13 @@ var nl = {
|
|
|
21777
22033
|
"editor.record.loadError.body": "",
|
|
21778
22034
|
"editor.record.loadError.closeMessage": "",
|
|
21779
22035
|
"editor.record.loadError.title": "",
|
|
21780
|
-
"editor.record.lock.
|
|
21781
|
-
"editor.record.lock.
|
|
22036
|
+
"editor.record.lock.harvested": "",
|
|
22037
|
+
"editor.record.lock.owner": "",
|
|
22038
|
+
"editor.record.lock.resourceType": "",
|
|
22039
|
+
"editor.record.multilingual.confirmation.cancelText": "",
|
|
22040
|
+
"editor.record.multilingual.confirmation.confirmText": "",
|
|
22041
|
+
"editor.record.multilingual.confirmation.message": "",
|
|
22042
|
+
"editor.record.multilingual.confirmation.title": "",
|
|
21782
22043
|
"editor.record.onlineResource.protocol.other": "",
|
|
21783
22044
|
"editor.record.onlineResourceError.body": "",
|
|
21784
22045
|
"editor.record.onlineResourceError.closeMessage": "",
|
|
@@ -21825,6 +22086,11 @@ var nl = {
|
|
|
21825
22086
|
"facets.block.title.tag.default": "",
|
|
21826
22087
|
"facets.block.title.th_regions_tree.default": "",
|
|
21827
22088
|
"favorite.not.authenticated.tooltip": "",
|
|
22089
|
+
"feature.catalog.attribute.code": "Code",
|
|
22090
|
+
"feature.catalog.attribute.definition": "Beschrijving",
|
|
22091
|
+
"feature.catalog.attribute.name": "Naam",
|
|
22092
|
+
"feature.catalog.attribute.type": "Type",
|
|
22093
|
+
"feature.catalog.attribute.values": "Waarden",
|
|
21828
22094
|
"input.file.dropFileLabel": "",
|
|
21829
22095
|
"input.file.orInputUrl": "",
|
|
21830
22096
|
"input.file.selectFileLabel": "",
|
|
@@ -21839,20 +22105,32 @@ var nl = {
|
|
|
21839
22105
|
"input.image.uploadErrorLabel": "",
|
|
21840
22106
|
"input.image.uploadProgressCancel": "",
|
|
21841
22107
|
"input.image.uploadProgressLabel": "",
|
|
22108
|
+
"language.ar": "",
|
|
22109
|
+
"language.az": "",
|
|
21842
22110
|
"language.ca": "Catalaans",
|
|
21843
22111
|
"language.cs": "Tsjechisch",
|
|
22112
|
+
"language.cy": "",
|
|
22113
|
+
"language.da": "",
|
|
21844
22114
|
"language.de": "Duits",
|
|
21845
22115
|
"language.en": "Engels",
|
|
21846
22116
|
"language.es": "Spaans",
|
|
21847
22117
|
"language.fi": "Fins",
|
|
21848
22118
|
"language.fr": "Frans",
|
|
22119
|
+
"language.hy": "",
|
|
21849
22120
|
"language.is": "IJslands",
|
|
21850
22121
|
"language.it": "Italiaans",
|
|
22122
|
+
"language.ka": "",
|
|
21851
22123
|
"language.ko": "Koreaans",
|
|
21852
22124
|
"language.nl": "Nederlands",
|
|
22125
|
+
"language.no": "",
|
|
22126
|
+
"language.pl": "",
|
|
21853
22127
|
"language.pt": "Portugees",
|
|
22128
|
+
"language.rm": "",
|
|
21854
22129
|
"language.ru": "Russisch",
|
|
21855
22130
|
"language.sk": "Slowaaks",
|
|
22131
|
+
"language.sv": "",
|
|
22132
|
+
"language.tr": "",
|
|
22133
|
+
"language.uk": "",
|
|
21856
22134
|
"language.zh": "Chinees",
|
|
21857
22135
|
"map.add.layer": "",
|
|
21858
22136
|
"map.add.layer.catalog": "",
|
|
@@ -21872,6 +22150,7 @@ var nl = {
|
|
|
21872
22150
|
"map.navigation.message": "",
|
|
21873
22151
|
"map.ogc.urlInput.hint": "",
|
|
21874
22152
|
"map.select.layer": "",
|
|
22153
|
+
"map.select.style": "",
|
|
21875
22154
|
"map.wfs.urlInput.hint": "",
|
|
21876
22155
|
"map.wms.urlInput.hint": "",
|
|
21877
22156
|
"multiselect.filter.placeholder": "",
|
|
@@ -21899,6 +22178,7 @@ var nl = {
|
|
|
21899
22178
|
"record.action.duplicate": "",
|
|
21900
22179
|
"record.action.duplicating": "",
|
|
21901
22180
|
"record.action.rollback": "",
|
|
22181
|
+
"record.action.switchLang": "",
|
|
21902
22182
|
"record.action.view": "",
|
|
21903
22183
|
"record.card.metadata.contact": "",
|
|
21904
22184
|
"record.externalViewer.open": "",
|
|
@@ -21949,9 +22229,15 @@ var nl = {
|
|
|
21949
22229
|
"record.metadata.download": "",
|
|
21950
22230
|
"record.metadata.feature.catalog": "",
|
|
21951
22231
|
"record.metadata.formats": "",
|
|
22232
|
+
"record.metadata.isGeographical": "",
|
|
21952
22233
|
"record.metadata.keywords": "",
|
|
21953
22234
|
"record.metadata.languages": "",
|
|
21954
22235
|
"record.metadata.lastUpdate": "",
|
|
22236
|
+
"record.metadata.linked.datasets": "",
|
|
22237
|
+
"record.metadata.linked.records": "",
|
|
22238
|
+
"record.metadata.linked.reuses": "",
|
|
22239
|
+
"record.metadata.linked.services": "",
|
|
22240
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
21955
22241
|
"record.metadata.links": "",
|
|
21956
22242
|
"record.metadata.noUsage": "",
|
|
21957
22243
|
"record.metadata.otherConstraints": "",
|
|
@@ -21961,6 +22247,8 @@ var nl = {
|
|
|
21961
22247
|
"record.metadata.publication": "",
|
|
21962
22248
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
21963
22249
|
"record.metadata.quality": "",
|
|
22250
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
22251
|
+
"record.metadata.quality.capabilities.success": "",
|
|
21964
22252
|
"record.metadata.quality.contact.failed": "",
|
|
21965
22253
|
"record.metadata.quality.contact.success": "",
|
|
21966
22254
|
"record.metadata.quality.description.failed": "",
|
|
@@ -21972,6 +22260,8 @@ var nl = {
|
|
|
21972
22260
|
"record.metadata.quality.legalConstraints.success": "",
|
|
21973
22261
|
"record.metadata.quality.organisation.failed": "",
|
|
21974
22262
|
"record.metadata.quality.organisation.success": "",
|
|
22263
|
+
"record.metadata.quality.source.failed": "",
|
|
22264
|
+
"record.metadata.quality.source.success": "",
|
|
21975
22265
|
"record.metadata.quality.title.failed": "",
|
|
21976
22266
|
"record.metadata.quality.title.success": "",
|
|
21977
22267
|
"record.metadata.quality.topic.failed": "",
|
|
@@ -21979,7 +22269,6 @@ var nl = {
|
|
|
21979
22269
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
21980
22270
|
"record.metadata.quality.updateFrequency.success": "",
|
|
21981
22271
|
"record.metadata.related": "",
|
|
21982
|
-
"record.metadata.related.contents": "",
|
|
21983
22272
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
21984
22273
|
"record.metadata.sheet": "",
|
|
21985
22274
|
"record.metadata.status": "",
|
|
@@ -21991,7 +22280,6 @@ var nl = {
|
|
|
21991
22280
|
"record.metadata.temporalExtent.untilDate": "",
|
|
21992
22281
|
"record.metadata.title": "",
|
|
21993
22282
|
"record.metadata.topics": "",
|
|
21994
|
-
"record.metadata.isGeographical": "",
|
|
21995
22283
|
"record.metadata.uniqueId": "",
|
|
21996
22284
|
"record.metadata.updateFrequency": "",
|
|
21997
22285
|
"record.metadata.updatedOn": "",
|
|
@@ -22111,7 +22399,6 @@ var nl = {
|
|
|
22111
22399
|
"tooltip.html.copy": "",
|
|
22112
22400
|
"tooltip.id.copy": "",
|
|
22113
22401
|
"tooltip.url.copy": "",
|
|
22114
|
-
"tooltip.url.open": "",
|
|
22115
22402
|
"ui.readLess": "",
|
|
22116
22403
|
"ui.readMore": "",
|
|
22117
22404
|
"wfs.feature.limit": "",
|
|
@@ -22158,6 +22445,7 @@ var pt = {
|
|
|
22158
22445
|
"dashboard.labels.mySpace": "Meu espaço",
|
|
22159
22446
|
"dashboard.records.all": "Catálogo",
|
|
22160
22447
|
"dashboard.records.hasDraft": "",
|
|
22448
|
+
"dashboard.records.isMultilingual": "Este registro é multilíngue ({languages})",
|
|
22161
22449
|
"dashboard.records.myDraft": "Meus rascunhos",
|
|
22162
22450
|
"dashboard.records.myRecords": "Meus Registros",
|
|
22163
22451
|
"dashboard.records.search": "Buscar por \"{searchText}\"",
|
|
@@ -22332,9 +22620,13 @@ var pt = {
|
|
|
22332
22620
|
"editor.record.form.license.odc-by": "",
|
|
22333
22621
|
"editor.record.form.license.pddl": "",
|
|
22334
22622
|
"editor.record.form.license.unknown": "",
|
|
22623
|
+
"editor.record.form.multilingual.activate": "",
|
|
22624
|
+
"editor.record.form.multilingual.default": "",
|
|
22335
22625
|
"editor.record.form.multilingual.enable": "",
|
|
22626
|
+
"editor.record.form.multilingual.forbidden": "",
|
|
22336
22627
|
"editor.record.form.multilingual.open": "",
|
|
22337
22628
|
"editor.record.form.multilingual.title": "",
|
|
22629
|
+
"editor.record.form.multilingual.validate": "",
|
|
22338
22630
|
"editor.record.form.page.accessAndContact": "",
|
|
22339
22631
|
"editor.record.form.page.description": "",
|
|
22340
22632
|
"editor.record.form.page.resources": "",
|
|
@@ -22364,8 +22656,13 @@ var pt = {
|
|
|
22364
22656
|
"editor.record.loadError.body": "",
|
|
22365
22657
|
"editor.record.loadError.closeMessage": "",
|
|
22366
22658
|
"editor.record.loadError.title": "",
|
|
22367
|
-
"editor.record.lock.
|
|
22368
|
-
"editor.record.lock.
|
|
22659
|
+
"editor.record.lock.harvested": "",
|
|
22660
|
+
"editor.record.lock.owner": "",
|
|
22661
|
+
"editor.record.lock.resourceType": "",
|
|
22662
|
+
"editor.record.multilingual.confirmation.cancelText": "",
|
|
22663
|
+
"editor.record.multilingual.confirmation.confirmText": "",
|
|
22664
|
+
"editor.record.multilingual.confirmation.message": "",
|
|
22665
|
+
"editor.record.multilingual.confirmation.title": "",
|
|
22369
22666
|
"editor.record.onlineResource.protocol.other": "",
|
|
22370
22667
|
"editor.record.onlineResourceError.body": "",
|
|
22371
22668
|
"editor.record.onlineResourceError.closeMessage": "",
|
|
@@ -22412,6 +22709,11 @@ var pt = {
|
|
|
22412
22709
|
"facets.block.title.tag.default": "",
|
|
22413
22710
|
"facets.block.title.th_regions_tree.default": "",
|
|
22414
22711
|
"favorite.not.authenticated.tooltip": "",
|
|
22712
|
+
"feature.catalog.attribute.code": "Código",
|
|
22713
|
+
"feature.catalog.attribute.definition": "Descrição",
|
|
22714
|
+
"feature.catalog.attribute.name": "Nome",
|
|
22715
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
22716
|
+
"feature.catalog.attribute.values": "Valores",
|
|
22415
22717
|
"input.file.dropFileLabel": "",
|
|
22416
22718
|
"input.file.orInputUrl": "",
|
|
22417
22719
|
"input.file.selectFileLabel": "",
|
|
@@ -22426,20 +22728,32 @@ var pt = {
|
|
|
22426
22728
|
"input.image.uploadErrorLabel": "",
|
|
22427
22729
|
"input.image.uploadProgressCancel": "",
|
|
22428
22730
|
"input.image.uploadProgressLabel": "",
|
|
22731
|
+
"language.ar": "",
|
|
22732
|
+
"language.az": "",
|
|
22429
22733
|
"language.ca": "Catalão",
|
|
22430
22734
|
"language.cs": "Tcheco",
|
|
22735
|
+
"language.cy": "",
|
|
22736
|
+
"language.da": "",
|
|
22431
22737
|
"language.de": "Alemão",
|
|
22432
22738
|
"language.en": "Inglês",
|
|
22433
22739
|
"language.es": "Espanhol",
|
|
22434
22740
|
"language.fi": "Finlandês",
|
|
22435
22741
|
"language.fr": "Francês",
|
|
22742
|
+
"language.hy": "",
|
|
22436
22743
|
"language.is": "Islandês",
|
|
22437
22744
|
"language.it": "Italiano",
|
|
22745
|
+
"language.ka": "",
|
|
22438
22746
|
"language.ko": "Coreano",
|
|
22439
22747
|
"language.nl": "Holandês",
|
|
22748
|
+
"language.no": "",
|
|
22749
|
+
"language.pl": "",
|
|
22440
22750
|
"language.pt": "Português",
|
|
22751
|
+
"language.rm": "",
|
|
22441
22752
|
"language.ru": "Russo",
|
|
22442
22753
|
"language.sk": "Eslovaco",
|
|
22754
|
+
"language.sv": "",
|
|
22755
|
+
"language.tr": "",
|
|
22756
|
+
"language.uk": "",
|
|
22443
22757
|
"language.zh": "Chinês",
|
|
22444
22758
|
"map.add.layer": "",
|
|
22445
22759
|
"map.add.layer.catalog": "",
|
|
@@ -22459,6 +22773,7 @@ var pt = {
|
|
|
22459
22773
|
"map.navigation.message": "",
|
|
22460
22774
|
"map.ogc.urlInput.hint": "",
|
|
22461
22775
|
"map.select.layer": "",
|
|
22776
|
+
"map.select.style": "",
|
|
22462
22777
|
"map.wfs.urlInput.hint": "",
|
|
22463
22778
|
"map.wms.urlInput.hint": "",
|
|
22464
22779
|
"multiselect.filter.placeholder": "",
|
|
@@ -22486,6 +22801,7 @@ var pt = {
|
|
|
22486
22801
|
"record.action.duplicate": "",
|
|
22487
22802
|
"record.action.duplicating": "",
|
|
22488
22803
|
"record.action.rollback": "",
|
|
22804
|
+
"record.action.switchLang": "",
|
|
22489
22805
|
"record.action.view": "",
|
|
22490
22806
|
"record.card.metadata.contact": "",
|
|
22491
22807
|
"record.externalViewer.open": "",
|
|
@@ -22536,9 +22852,15 @@ var pt = {
|
|
|
22536
22852
|
"record.metadata.download": "",
|
|
22537
22853
|
"record.metadata.feature.catalog": "",
|
|
22538
22854
|
"record.metadata.formats": "",
|
|
22855
|
+
"record.metadata.isGeographical": "",
|
|
22539
22856
|
"record.metadata.keywords": "",
|
|
22540
22857
|
"record.metadata.languages": "",
|
|
22541
22858
|
"record.metadata.lastUpdate": "",
|
|
22859
|
+
"record.metadata.linked.datasets": "",
|
|
22860
|
+
"record.metadata.linked.records": "",
|
|
22861
|
+
"record.metadata.linked.reuses": "",
|
|
22862
|
+
"record.metadata.linked.services": "",
|
|
22863
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
22542
22864
|
"record.metadata.links": "",
|
|
22543
22865
|
"record.metadata.noUsage": "",
|
|
22544
22866
|
"record.metadata.otherConstraints": "",
|
|
@@ -22548,6 +22870,8 @@ var pt = {
|
|
|
22548
22870
|
"record.metadata.publication": "",
|
|
22549
22871
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
22550
22872
|
"record.metadata.quality": "",
|
|
22873
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
22874
|
+
"record.metadata.quality.capabilities.success": "",
|
|
22551
22875
|
"record.metadata.quality.contact.failed": "",
|
|
22552
22876
|
"record.metadata.quality.contact.success": "",
|
|
22553
22877
|
"record.metadata.quality.description.failed": "",
|
|
@@ -22559,6 +22883,8 @@ var pt = {
|
|
|
22559
22883
|
"record.metadata.quality.legalConstraints.success": "",
|
|
22560
22884
|
"record.metadata.quality.organisation.failed": "",
|
|
22561
22885
|
"record.metadata.quality.organisation.success": "",
|
|
22886
|
+
"record.metadata.quality.source.failed": "",
|
|
22887
|
+
"record.metadata.quality.source.success": "",
|
|
22562
22888
|
"record.metadata.quality.title.failed": "",
|
|
22563
22889
|
"record.metadata.quality.title.success": "",
|
|
22564
22890
|
"record.metadata.quality.topic.failed": "",
|
|
@@ -22566,7 +22892,6 @@ var pt = {
|
|
|
22566
22892
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22567
22893
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22568
22894
|
"record.metadata.related": "",
|
|
22569
|
-
"record.metadata.related.contents": "",
|
|
22570
22895
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22571
22896
|
"record.metadata.sheet": "",
|
|
22572
22897
|
"record.metadata.status": "",
|
|
@@ -22578,7 +22903,6 @@ var pt = {
|
|
|
22578
22903
|
"record.metadata.temporalExtent.untilDate": "",
|
|
22579
22904
|
"record.metadata.title": "",
|
|
22580
22905
|
"record.metadata.topics": "",
|
|
22581
|
-
"record.metadata.isGeographical": "",
|
|
22582
22906
|
"record.metadata.uniqueId": "",
|
|
22583
22907
|
"record.metadata.updateFrequency": "",
|
|
22584
22908
|
"record.metadata.updatedOn": "",
|
|
@@ -22698,7 +23022,6 @@ var pt = {
|
|
|
22698
23022
|
"tooltip.html.copy": "",
|
|
22699
23023
|
"tooltip.id.copy": "",
|
|
22700
23024
|
"tooltip.url.copy": "",
|
|
22701
|
-
"tooltip.url.open": "",
|
|
22702
23025
|
"ui.readLess": "",
|
|
22703
23026
|
"ui.readMore": "",
|
|
22704
23027
|
"wfs.feature.limit": "",
|
|
@@ -22816,10 +23139,18 @@ class Gn4FieldMapper {
|
|
|
22816
23139
|
const langList = getAsArray(selectField(source, 'resourceLanguage'));
|
|
22817
23140
|
const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
|
|
22818
23141
|
const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null; // set the first language as main one as fallback
|
|
22819
|
-
const otherLanguages = languages.filter((lang) => lang !== defaultLanguage);
|
|
22820
23142
|
return {
|
|
22821
23143
|
...output,
|
|
22822
23144
|
defaultLanguage,
|
|
23145
|
+
};
|
|
23146
|
+
},
|
|
23147
|
+
otherLanguage: (output, source) => {
|
|
23148
|
+
const langList = getAsArray(selectField(source, 'otherLanguage'));
|
|
23149
|
+
const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
|
|
23150
|
+
const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null;
|
|
23151
|
+
const otherLanguages = languages.filter((lang) => lang !== defaultLanguage);
|
|
23152
|
+
return {
|
|
23153
|
+
...output,
|
|
22823
23154
|
otherLanguages,
|
|
22824
23155
|
};
|
|
22825
23156
|
},
|
|
@@ -22924,6 +23255,9 @@ class Gn4FieldMapper {
|
|
|
22924
23255
|
isPublishedToAll: (output, source) => this.addExtra({
|
|
22925
23256
|
isPublishedToAll: selectField(source, 'isPublishedToAll'),
|
|
22926
23257
|
}, output),
|
|
23258
|
+
isHarvested: (output, source) => this.addExtra({
|
|
23259
|
+
isHarvested: selectField(source, 'isHarvested') !== 'false',
|
|
23260
|
+
}, output),
|
|
22927
23261
|
edit: (output, source) => this.addExtra({
|
|
22928
23262
|
edit: selectField(source, 'edit'),
|
|
22929
23263
|
}, output),
|
|
@@ -23213,6 +23547,7 @@ const ES_SOURCE_SUMMARY = [
|
|
|
23213
23547
|
'cl_maintenanceAndUpdateFrequency',
|
|
23214
23548
|
'tag',
|
|
23215
23549
|
'MD_LegalConstraintsUseLimitationObject',
|
|
23550
|
+
'MD_LegalConstraintsOtherConstraintsObject',
|
|
23216
23551
|
'qualityScore',
|
|
23217
23552
|
];
|
|
23218
23553
|
const ES_QUERY_FIELDS_PRIORITY = {
|
|
@@ -23736,16 +24071,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
23736
24071
|
args: [METADATA_LANGUAGE]
|
|
23737
24072
|
}] }] });
|
|
23738
24073
|
|
|
24074
|
+
class Gn4SettingsService {
|
|
24075
|
+
constructor(siteApiService) {
|
|
24076
|
+
this.siteApiService = siteApiService;
|
|
24077
|
+
this.identicon$ = this.getSettingsSetValueByKey('system/users/identicon');
|
|
24078
|
+
this.allowEditHarvested$ = this.getSettingsSetValueByKey('system/harvester/enableEditing');
|
|
24079
|
+
}
|
|
24080
|
+
getSettingsSetValueByKey(key) {
|
|
24081
|
+
return this.siteApiService.getSettingsSet(null, [key]).pipe(map$1((v) => v[key]), shareReplay({ bufferSize: 1, refCount: true }));
|
|
24082
|
+
}
|
|
24083
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, deps: [{ token: SiteApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24084
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
|
|
24085
|
+
}
|
|
24086
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, decorators: [{
|
|
24087
|
+
type: Injectable,
|
|
24088
|
+
args: [{
|
|
24089
|
+
providedIn: 'root',
|
|
24090
|
+
}]
|
|
24091
|
+
}], ctorParameters: () => [{ type: SiteApiService }] });
|
|
24092
|
+
|
|
23739
24093
|
const minPublicationApiVersion = '4.2.5';
|
|
23740
24094
|
const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
|
|
23741
24095
|
class Gn4Repository {
|
|
23742
|
-
constructor(httpClient, gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi, platformService) {
|
|
24096
|
+
constructor(httpClient, gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi, platformService, gn4LanguagesApi, settingsService) {
|
|
23743
24097
|
this.httpClient = httpClient;
|
|
23744
24098
|
this.gn4SearchApi = gn4SearchApi;
|
|
23745
24099
|
this.gn4SearchHelper = gn4SearchHelper;
|
|
23746
24100
|
this.gn4Mapper = gn4Mapper;
|
|
23747
24101
|
this.gn4RecordsApi = gn4RecordsApi;
|
|
23748
24102
|
this.platformService = platformService;
|
|
24103
|
+
this.gn4LanguagesApi = gn4LanguagesApi;
|
|
24104
|
+
this.settingsService = settingsService;
|
|
23749
24105
|
this._draftsChanged = new Subject();
|
|
23750
24106
|
this.draftsChanged$ = this._draftsChanged.asObservable();
|
|
23751
24107
|
}
|
|
@@ -23783,12 +24139,21 @@ class Gn4Repository {
|
|
|
23783
24139
|
name: featureType.typeName || '',
|
|
23784
24140
|
definition: featureType.definition || '',
|
|
23785
24141
|
attributes: Array.isArray(featureType.attributeTable)
|
|
23786
|
-
? featureType.attributeTable.map((attr) =>
|
|
23787
|
-
|
|
23788
|
-
|
|
23789
|
-
|
|
23790
|
-
|
|
23791
|
-
|
|
24142
|
+
? featureType.attributeTable.map((attr) => {
|
|
24143
|
+
const values = attr.values
|
|
24144
|
+
?.filter((v) => v.code || v.label)
|
|
24145
|
+
.map((v) => ({
|
|
24146
|
+
code: v.code,
|
|
24147
|
+
label: v.label,
|
|
24148
|
+
}));
|
|
24149
|
+
return {
|
|
24150
|
+
name: attr.name,
|
|
24151
|
+
code: attr.code,
|
|
24152
|
+
definition: attr.definition,
|
|
24153
|
+
type: attr.type,
|
|
24154
|
+
...(values?.length > 0 ? { values } : {}),
|
|
24155
|
+
};
|
|
24156
|
+
})
|
|
23792
24157
|
: [],
|
|
23793
24158
|
})),
|
|
23794
24159
|
};
|
|
@@ -23851,11 +24216,29 @@ class Gn4Repository {
|
|
|
23851
24216
|
? this.getRecord(uniqueIdentifier).pipe(map$1((record) => record.extras['isPublishedToAll']))
|
|
23852
24217
|
: of(true);
|
|
23853
24218
|
}
|
|
23854
|
-
|
|
23855
|
-
return
|
|
23856
|
-
|
|
24219
|
+
canDuplicate(record) {
|
|
24220
|
+
return record.kind === 'dataset';
|
|
24221
|
+
}
|
|
24222
|
+
canDelete(record) {
|
|
24223
|
+
return this.settingsService.allowEditHarvested$.pipe(map$1((allowEditHarvested) => {
|
|
24224
|
+
return (record.extras['edit'] &&
|
|
24225
|
+
(!record.extras['isHarvested'] || allowEditHarvested));
|
|
23857
24226
|
}));
|
|
23858
24227
|
}
|
|
24228
|
+
canEdit(record, allowEditHarvested) {
|
|
24229
|
+
return (record.kind === 'dataset' &&
|
|
24230
|
+
record.extras['edit'] &&
|
|
24231
|
+
(!record.extras['isHarvested'] || allowEditHarvested));
|
|
24232
|
+
}
|
|
24233
|
+
canEditRecord(uniqueIdentifier) {
|
|
24234
|
+
return combineLatest([
|
|
24235
|
+
this.getRecord(uniqueIdentifier),
|
|
24236
|
+
this.settingsService.allowEditHarvested$,
|
|
24237
|
+
]).pipe(map$1(([record, allowEditHarvested]) => record ? this.canEdit(record, allowEditHarvested) : false));
|
|
24238
|
+
}
|
|
24239
|
+
canEditIndexedRecord(record) {
|
|
24240
|
+
return this.settingsService.allowEditHarvested$.pipe(map$1((allowEditHarvested) => this.canEdit(record, allowEditHarvested)));
|
|
24241
|
+
}
|
|
23859
24242
|
openRecordForEdition(uniqueIdentifier) {
|
|
23860
24243
|
const draft$ = of(this.getRecordFromLocalStorage(uniqueIdentifier));
|
|
23861
24244
|
const recordAsXml$ = this.getRecordAsXml(uniqueIdentifier);
|
|
@@ -23970,6 +24353,13 @@ class Gn4Repository {
|
|
|
23970
24353
|
}));
|
|
23971
24354
|
}));
|
|
23972
24355
|
}
|
|
24356
|
+
getApplicationLanguages() {
|
|
24357
|
+
return this.gn4LanguagesApi
|
|
24358
|
+
.getApplicationLanguages()
|
|
24359
|
+
.pipe(map$1((languages) => languages
|
|
24360
|
+
.map((lang) => LANG_3_TO_2_MAPPER[lang.id ?? ''])
|
|
24361
|
+
.filter((code) => !!code)));
|
|
24362
|
+
}
|
|
23973
24363
|
getRecordAsXml(uniqueIdentifier) {
|
|
23974
24364
|
return this.gn4RecordsApi
|
|
23975
24365
|
.getRecordAs(uniqueIdentifier, undefined, false, undefined, undefined, undefined, 'application/xml', 'response', undefined, { httpHeaderAccept: 'text/xml,application/xml' } // this is to make sure that the response is parsed as text
|
|
@@ -24010,12 +24400,12 @@ class Gn4Repository {
|
|
|
24010
24400
|
removeRecordFromLocalStorage(recordId) {
|
|
24011
24401
|
window.localStorage.removeItem(this.getLocalStorageKeyForRecord(recordId));
|
|
24012
24402
|
}
|
|
24013
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4Repository, deps: [{ token: i1.HttpClient }, { token: SearchApiService }, { token: ElasticsearchService }, { token: Gn4Converter }, { token: RecordsApiService }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24403
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4Repository, deps: [{ token: i1.HttpClient }, { token: SearchApiService }, { token: ElasticsearchService }, { token: Gn4Converter }, { token: RecordsApiService }, { token: PlatformServiceInterface }, { token: LanguagesApiService }, { token: Gn4SettingsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24014
24404
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4Repository }); }
|
|
24015
24405
|
}
|
|
24016
24406
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4Repository, decorators: [{
|
|
24017
24407
|
type: Injectable
|
|
24018
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: SearchApiService }, { type: ElasticsearchService }, { type: Gn4Converter }, { type: RecordsApiService }, { type: PlatformServiceInterface }] });
|
|
24408
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: SearchApiService }, { type: ElasticsearchService }, { type: Gn4Converter }, { type: RecordsApiService }, { type: PlatformServiceInterface }, { type: LanguagesApiService }, { type: Gn4SettingsService }] });
|
|
24019
24409
|
|
|
24020
24410
|
const IMAGE_URL$1 = '/geonetwork/images/harvesting/';
|
|
24021
24411
|
class OrganizationsFromMetadataService {
|
|
@@ -24294,24 +24684,6 @@ const ORGANIZATIONS_STRATEGY = new InjectionToken('organizations-strategy', {
|
|
|
24294
24684
|
factory: () => 'metadata',
|
|
24295
24685
|
});
|
|
24296
24686
|
|
|
24297
|
-
class Gn4SettingsService {
|
|
24298
|
-
constructor(siteApiService) {
|
|
24299
|
-
this.siteApiService = siteApiService;
|
|
24300
|
-
this.identicon$ = this.getSettingsSetValueByKey('system/users/identicon');
|
|
24301
|
-
}
|
|
24302
|
-
getSettingsSetValueByKey(key) {
|
|
24303
|
-
return this.siteApiService.getSettingsSet(null, [key]).pipe(map$1((v) => v[key]), shareReplay({ bufferSize: 1, refCount: true }));
|
|
24304
|
-
}
|
|
24305
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, deps: [{ token: SiteApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24306
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
|
|
24307
|
-
}
|
|
24308
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, decorators: [{
|
|
24309
|
-
type: Injectable,
|
|
24310
|
-
args: [{
|
|
24311
|
-
providedIn: 'root',
|
|
24312
|
-
}]
|
|
24313
|
-
}], ctorParameters: () => [{ type: SiteApiService }] });
|
|
24314
|
-
|
|
24315
24687
|
const DEFAULT_GN4_LOGIN_URL = `/geonetwork/srv/\${lang3}/catalog.signin?redirect=\${current_url}`;
|
|
24316
24688
|
const LOGIN_URL = new InjectionToken('loginUrl');
|
|
24317
24689
|
const DEFAULT_GN4_LOGOUT_URL = `/geonetwork/signout`;
|
|
@@ -25433,7 +25805,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25433
25805
|
}] });
|
|
25434
25806
|
|
|
25435
25807
|
var name = "geonetwork-ui";
|
|
25436
|
-
var version = "2.6.0-dev.
|
|
25808
|
+
var version = "2.6.0-dev.c49d02679";
|
|
25437
25809
|
var engines = {
|
|
25438
25810
|
node: ">=20"
|
|
25439
25811
|
};
|
|
@@ -25558,6 +25930,9 @@ class Gn4PlatformService {
|
|
|
25558
25930
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
25559
25931
|
}
|
|
25560
25932
|
}), shareReplay(1));
|
|
25933
|
+
this.allowEditHarvestedMd$ = this.settings$.pipe(map$1((info) => {
|
|
25934
|
+
return info['system/harvester/enableEditing'];
|
|
25935
|
+
}), shareReplay(1));
|
|
25561
25936
|
/**
|
|
25562
25937
|
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
25563
25938
|
* @private
|
|
@@ -25578,6 +25953,9 @@ class Gn4PlatformService {
|
|
|
25578
25953
|
getApiVersion() {
|
|
25579
25954
|
return this.apiVersion$;
|
|
25580
25955
|
}
|
|
25956
|
+
getAllowEditHarvestedMd() {
|
|
25957
|
+
return this.allowEditHarvestedMd$;
|
|
25958
|
+
}
|
|
25581
25959
|
getMe() {
|
|
25582
25960
|
return this.me$;
|
|
25583
25961
|
}
|
|
@@ -26010,422 +26388,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26010
26388
|
type: Output
|
|
26011
26389
|
}] } });
|
|
26012
26390
|
|
|
26013
|
-
class ExpandablePanelButtonComponent {
|
|
26014
|
-
constructor() {
|
|
26015
|
-
this.collapsed = true;
|
|
26016
|
-
}
|
|
26017
|
-
toggle() {
|
|
26018
|
-
this.collapsed = !this.collapsed;
|
|
26019
|
-
}
|
|
26020
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26021
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExpandablePanelButtonComponent, isStandalone: true, selector: "gn-ui-expandable-panel-button", inputs: { titleTemplate: "titleTemplate", collapsed: "collapsed" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"px-4 bg-primary hover:bg-primary-darker text-white flex flex-row w-full items-center font-bold text-lg pointer-events-auto\"\n [style.height]=\"'55px'\"\n (click)=\"toggle()\"\n>\n <ng-container [ngTemplateOutlet]=\"titleTemplate\"></ng-container>\n <div class=\"ml-3 grow\"></div>\n <ng-icon *ngIf=\"collapsed\" name=\"matExpandMore\"></ng-icon>\n <ng-icon name=\"matExpandLess\" *ngIf=\"!collapsed\"></ng-icon>\n</button>\n<div\n class=\"content transition-all pointer-events-auto bg-white\"\n [style.height]=\"collapsed ? '0px' : 'calc(100% - 55px)'\"\n [ngClass]=\"collapsed ? 'overflow-hidden' : 'overflow-auto'\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{height:100%;position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;pointer-events:none}\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: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [provideIcons({ matExpandMore, matExpandLess })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26022
|
-
}
|
|
26023
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, decorators: [{
|
|
26024
|
-
type: Component,
|
|
26025
|
-
args: [{ selector: 'gn-ui-expandable-panel-button', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, NgIcon], viewProviders: [provideIcons({ matExpandMore, matExpandLess })], standalone: true, template: "<button\n type=\"button\"\n class=\"px-4 bg-primary hover:bg-primary-darker text-white flex flex-row w-full items-center font-bold text-lg pointer-events-auto\"\n [style.height]=\"'55px'\"\n (click)=\"toggle()\"\n>\n <ng-container [ngTemplateOutlet]=\"titleTemplate\"></ng-container>\n <div class=\"ml-3 grow\"></div>\n <ng-icon *ngIf=\"collapsed\" name=\"matExpandMore\"></ng-icon>\n <ng-icon name=\"matExpandLess\" *ngIf=\"!collapsed\"></ng-icon>\n</button>\n<div\n class=\"content transition-all pointer-events-auto bg-white\"\n [style.height]=\"collapsed ? '0px' : 'calc(100% - 55px)'\"\n [ngClass]=\"collapsed ? 'overflow-hidden' : 'overflow-auto'\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{height:100%;position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;pointer-events:none}\n"] }]
|
|
26026
|
-
}], propDecorators: { titleTemplate: [{
|
|
26027
|
-
type: Input
|
|
26028
|
-
}], collapsed: [{
|
|
26029
|
-
type: Input
|
|
26030
|
-
}] } });
|
|
26031
|
-
|
|
26032
|
-
class ExpandablePanelComponent {
|
|
26033
|
-
constructor(changeDetector) {
|
|
26034
|
-
this.changeDetector = changeDetector;
|
|
26035
|
-
this.iconColor = '';
|
|
26036
|
-
this._collapsed = true;
|
|
26037
|
-
}
|
|
26038
|
-
ngAfterViewInit() {
|
|
26039
|
-
if (this.contentDiv) {
|
|
26040
|
-
this.contentObserver = new ResizeObserver(() => {
|
|
26041
|
-
this.changeDetector.detectChanges();
|
|
26042
|
-
});
|
|
26043
|
-
this.contentObserver.observe(this.contentDiv.nativeElement);
|
|
26044
|
-
}
|
|
26045
|
-
}
|
|
26046
|
-
set collapsed(value) {
|
|
26047
|
-
this._collapsed = value;
|
|
26048
|
-
}
|
|
26049
|
-
get collapsed() {
|
|
26050
|
-
return this._collapsed;
|
|
26051
|
-
}
|
|
26052
|
-
toggle() {
|
|
26053
|
-
this.collapsed = !this.collapsed;
|
|
26054
|
-
}
|
|
26055
|
-
ngOnDestroy() {
|
|
26056
|
-
if (this.contentObserver) {
|
|
26057
|
-
this.contentObserver.disconnect();
|
|
26058
|
-
}
|
|
26059
|
-
}
|
|
26060
|
-
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 }); }
|
|
26061
|
-
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 }); }
|
|
26062
|
-
}
|
|
26063
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, decorators: [{
|
|
26064
|
-
type: Component,
|
|
26065
|
-
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" }]
|
|
26066
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
26067
|
-
type: Input
|
|
26068
|
-
}], iconColor: [{
|
|
26069
|
-
type: Input
|
|
26070
|
-
}], titleTemplate: [{
|
|
26071
|
-
type: ContentChild,
|
|
26072
|
-
args: ['titleTemplate']
|
|
26073
|
-
}], contentDiv: [{
|
|
26074
|
-
type: ViewChild,
|
|
26075
|
-
args: ['contentDiv']
|
|
26076
|
-
}], collapsed: [{
|
|
26077
|
-
type: Input
|
|
26078
|
-
}] } });
|
|
26079
|
-
|
|
26080
|
-
class FormFieldWrapperComponent {
|
|
26081
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26082
|
-
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 }); }
|
|
26083
|
-
}
|
|
26084
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
26085
|
-
type: Component,
|
|
26086
|
-
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatTooltipModule, CommonModule, TranslateModule], 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" }]
|
|
26087
|
-
}], propDecorators: { label: [{
|
|
26088
|
-
type: Input
|
|
26089
|
-
}], hint: [{
|
|
26090
|
-
type: Input
|
|
26091
|
-
}] } });
|
|
26092
|
-
|
|
26093
|
-
class MaxLinesComponent {
|
|
26094
|
-
constructor(cdr) {
|
|
26095
|
-
this.cdr = cdr;
|
|
26096
|
-
this.maxLines = 6;
|
|
26097
|
-
this.isExpanded = false;
|
|
26098
|
-
this.maxHeight = '';
|
|
26099
|
-
this.showToggleButton = false;
|
|
26100
|
-
}
|
|
26101
|
-
ngAfterViewInit() {
|
|
26102
|
-
this.calculateMaxHeight();
|
|
26103
|
-
this.observer = new ResizeObserver((mutations) => {
|
|
26104
|
-
mutations.forEach(() => {
|
|
26105
|
-
this.calculateMaxHeight();
|
|
26106
|
-
});
|
|
26107
|
-
});
|
|
26108
|
-
this.observer.observe(this.container.nativeElement.children[0]);
|
|
26109
|
-
}
|
|
26110
|
-
toggleDisplay() {
|
|
26111
|
-
this.isExpanded = !this.isExpanded;
|
|
26112
|
-
this.calculateMaxHeight();
|
|
26113
|
-
}
|
|
26114
|
-
calculateMaxHeight() {
|
|
26115
|
-
const containerElement = this.container.nativeElement;
|
|
26116
|
-
const contentElement = containerElement.children[0];
|
|
26117
|
-
const contentHeight = contentElement.getBoundingClientRect().height;
|
|
26118
|
-
if (contentHeight) {
|
|
26119
|
-
if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
|
|
26120
|
-
this.showToggleButton = true;
|
|
26121
|
-
this.maxHeight = this.isExpanded
|
|
26122
|
-
? `${contentHeight}px`
|
|
26123
|
-
: `${this.maxLines * this.getLineHeight(contentElement)}px`;
|
|
26124
|
-
}
|
|
26125
|
-
else {
|
|
26126
|
-
this.showToggleButton = false;
|
|
26127
|
-
this.maxHeight = `${contentHeight}px`;
|
|
26128
|
-
}
|
|
26129
|
-
containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
|
|
26130
|
-
this.cdr.detectChanges();
|
|
26131
|
-
}
|
|
26132
|
-
}
|
|
26133
|
-
getLineHeight(element) {
|
|
26134
|
-
const computedStyle = window.getComputedStyle(element);
|
|
26135
|
-
const lineHeight = parseFloat(computedStyle.lineHeight);
|
|
26136
|
-
const fontSize = parseFloat(computedStyle.fontSize || '14');
|
|
26137
|
-
const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
|
|
26138
|
-
return result;
|
|
26139
|
-
}
|
|
26140
|
-
ngOnDestroy() {
|
|
26141
|
-
if (!this.observer)
|
|
26142
|
-
return;
|
|
26143
|
-
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
26144
|
-
}
|
|
26145
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26146
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MaxLinesComponent, isStandalone: true, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-10\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-primary cursor-pointer pt-2.5\"\n data-cy=\"readMoreButton\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\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: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26147
|
-
}
|
|
26148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
26149
|
-
type: Component,
|
|
26150
|
-
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule], template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-10\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-primary cursor-pointer pt-2.5\"\n data-cy=\"readMoreButton\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
26151
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { maxLines: [{
|
|
26152
|
-
type: Input
|
|
26153
|
-
}], container: [{
|
|
26154
|
-
type: ViewChild,
|
|
26155
|
-
args: ['container']
|
|
26156
|
-
}] } });
|
|
26157
|
-
|
|
26158
|
-
class InteractiveTableColumnComponent {
|
|
26159
|
-
constructor() {
|
|
26160
|
-
this.grow = false;
|
|
26161
|
-
this.sortable = false;
|
|
26162
|
-
this.activeSort = null;
|
|
26163
|
-
this.sortChange = new EventEmitter();
|
|
26164
|
-
}
|
|
26165
|
-
handleSortChange() {
|
|
26166
|
-
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
26167
|
-
this.sortChange.emit(this.activeSort);
|
|
26168
|
-
}
|
|
26169
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26170
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableColumnComponent, isStandalone: true, selector: "gn-ui-interactive-table-column", inputs: { grow: "grow", width: "width", sortable: "sortable", activeSort: "activeSort" }, outputs: { sortChange: "sortChange" }, queries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "cell", first: true, predicate: ["cell"], descendants: true }], ngImport: i0, template: "<span>empty</span>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26171
|
-
}
|
|
26172
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
26173
|
-
type: Component,
|
|
26174
|
-
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
26175
|
-
}], propDecorators: { header: [{
|
|
26176
|
-
type: ContentChild,
|
|
26177
|
-
args: ['header']
|
|
26178
|
-
}], cell: [{
|
|
26179
|
-
type: ContentChild,
|
|
26180
|
-
args: ['cell']
|
|
26181
|
-
}], grow: [{
|
|
26182
|
-
type: Input
|
|
26183
|
-
}], width: [{
|
|
26184
|
-
type: Input
|
|
26185
|
-
}], sortable: [{
|
|
26186
|
-
type: Input
|
|
26187
|
-
}], activeSort: [{
|
|
26188
|
-
type: Input
|
|
26189
|
-
}], sortChange: [{
|
|
26190
|
-
type: Output
|
|
26191
|
-
}] } });
|
|
26192
|
-
|
|
26193
|
-
marker('editor.record.lock.reason');
|
|
26194
|
-
marker('editor.record.lock.format');
|
|
26195
|
-
class InteractiveTableComponent {
|
|
26196
|
-
constructor() {
|
|
26197
|
-
this.items = [];
|
|
26198
|
-
this.isDraftPage = false;
|
|
26199
|
-
this.itemClick = new EventEmitter();
|
|
26200
|
-
}
|
|
26201
|
-
get gridStyle() {
|
|
26202
|
-
return {
|
|
26203
|
-
'grid-template-columns': this.columns
|
|
26204
|
-
.map((column) => column.width
|
|
26205
|
-
? column.width
|
|
26206
|
-
: column.grow
|
|
26207
|
-
? `minmax(0px,1fr)`
|
|
26208
|
-
: `minmax(0px,max-content)`)
|
|
26209
|
-
.join(' '),
|
|
26210
|
-
};
|
|
26211
|
-
}
|
|
26212
|
-
getItemTitle(item) {
|
|
26213
|
-
if (!item.extras?.edit && !this.isDraftPage && item.kind === 'dataset') {
|
|
26214
|
-
return 'editor.record.lock.reason';
|
|
26215
|
-
}
|
|
26216
|
-
else if (item.kind !== 'dataset') {
|
|
26217
|
-
return 'editor.record.lock.format';
|
|
26218
|
-
}
|
|
26219
|
-
return '';
|
|
26220
|
-
}
|
|
26221
|
-
handleRowClick(item) {
|
|
26222
|
-
this.itemClick.emit(item);
|
|
26223
|
-
}
|
|
26224
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26225
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items", isDraftPage: "isDraftPage" }, outputs: { itemClick: "itemClick" }, providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n 'group-hover:text-main group-hover:bg-gray-50':\n (item.extras?.edit || isDraftPage) && item.kind === 'dataset',\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\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: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26226
|
-
}
|
|
26227
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
26228
|
-
type: Component,
|
|
26229
|
-
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (!item.extras?.edit && !isDraftPage) || item.kind !== 'dataset',\n 'group-hover:text-main group-hover:bg-gray-50':\n (item.extras?.edit || isDraftPage) && item.kind === 'dataset',\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\n"] }]
|
|
26230
|
-
}], propDecorators: { columns: [{
|
|
26231
|
-
type: ContentChildren,
|
|
26232
|
-
args: [InteractiveTableColumnComponent]
|
|
26233
|
-
}], items: [{
|
|
26234
|
-
type: Input
|
|
26235
|
-
}], isDraftPage: [{
|
|
26236
|
-
type: Input
|
|
26237
|
-
}], itemClick: [{
|
|
26238
|
-
type: Output
|
|
26239
|
-
}] } });
|
|
26240
|
-
|
|
26241
|
-
/**
|
|
26242
|
-
* This component will make a block that will stay sticky on the top of the page,
|
|
26243
|
-
* but will also shrink down to a minimum height when scrolling.
|
|
26244
|
-
* The ratio between minimum and nominal height is stored in the shrinkRatio
|
|
26245
|
-
* property, and can be used to change e.g. the opacity or size of child elements.
|
|
26246
|
-
* This component renders at z-index: 50 by default.
|
|
26247
|
-
* The first parent element with an overflow of `scroll` or `overflow` is considered
|
|
26248
|
-
* for scroll events.
|
|
26249
|
-
*/
|
|
26250
|
-
class StickyHeaderComponent {
|
|
26251
|
-
constructor(changeDetector, hostEl, zone) {
|
|
26252
|
-
this.changeDetector = changeDetector;
|
|
26253
|
-
this.hostEl = hostEl;
|
|
26254
|
-
this.zone = zone;
|
|
26255
|
-
}
|
|
26256
|
-
ngAfterViewInit() {
|
|
26257
|
-
this.scrollSub = fromEvent(window, 'scroll', {
|
|
26258
|
-
passive: true,
|
|
26259
|
-
})
|
|
26260
|
-
.pipe(throttleTime(0, animationFrameScheduler, {
|
|
26261
|
-
leading: true,
|
|
26262
|
-
trailing: true,
|
|
26263
|
-
}))
|
|
26264
|
-
.subscribe(this.updateSize.bind(this));
|
|
26265
|
-
}
|
|
26266
|
-
ngOnInit() {
|
|
26267
|
-
this.placeholderEl = document.createElement('div');
|
|
26268
|
-
this.placeholderEl.style.position = 'absolute';
|
|
26269
|
-
this.placeholderEl.classList.add('sticky-header-placeholder');
|
|
26270
|
-
this.hostEl.nativeElement.insertAdjacentElement('beforebegin', this.placeholderEl);
|
|
26271
|
-
}
|
|
26272
|
-
ngAfterViewChecked() {
|
|
26273
|
-
this.updateSize();
|
|
26274
|
-
}
|
|
26275
|
-
ngOnDestroy() {
|
|
26276
|
-
this.scrollSub.unsubscribe();
|
|
26277
|
-
this.placeholderEl.remove();
|
|
26278
|
-
}
|
|
26279
|
-
updateSize() {
|
|
26280
|
-
this.zone.runOutsideAngular(() => {
|
|
26281
|
-
if (window.scrollY === this.parentScroll)
|
|
26282
|
-
return;
|
|
26283
|
-
this.parentScroll = window.scrollY;
|
|
26284
|
-
const offsetTop = Math.max(0, this.parentScroll - this.placeholderEl.offsetTop);
|
|
26285
|
-
const newHeightPx = Math.max(this.minHeightPx, this.fullHeightPx - offsetTop);
|
|
26286
|
-
this.innerContainer.nativeElement.style.transform = `translate(0, ${newHeightPx - this.fullHeightPx}px)`;
|
|
26287
|
-
this.expandRatio =
|
|
26288
|
-
(newHeightPx - this.minHeightPx) /
|
|
26289
|
-
(this.fullHeightPx - this.minHeightPx);
|
|
26290
|
-
this.changeDetector.detectChanges();
|
|
26291
|
-
});
|
|
26292
|
-
}
|
|
26293
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StickyHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef, host: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26294
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StickyHeaderComponent, selector: "gn-ui-sticky-header", inputs: { minHeightPx: "minHeightPx", fullHeightPx: "fullHeightPx" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "outerContainer", first: true, predicate: ["outerContainer"], descendants: true }, { propertyName: "innerContainer", first: true, predicate: ["innerContainer"], descendants: true }], ngImport: i0, template: "<div\n #outerContainer\n class=\"sticky pointer-events-none z-50 top-0\"\n [style.height]=\"fullHeightPx + 'px'\"\n>\n <div\n #innerContainer\n class=\"relative pointer-events-auto\"\n [style.height]=\"fullHeightPx + 'px'\"\n >\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: expandRatio }\"\n ></ng-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26295
|
-
}
|
|
26296
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StickyHeaderComponent, decorators: [{
|
|
26297
|
-
type: Component,
|
|
26298
|
-
args: [{ selector: 'gn-ui-sticky-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #outerContainer\n class=\"sticky pointer-events-none z-50 top-0\"\n [style.height]=\"fullHeightPx + 'px'\"\n>\n <div\n #innerContainer\n class=\"relative pointer-events-auto\"\n [style.height]=\"fullHeightPx + 'px'\"\n >\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: expandRatio }\"\n ></ng-container>\n </div>\n</div>\n" }]
|
|
26299
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef, decorators: [{
|
|
26300
|
-
type: Host
|
|
26301
|
-
}] }, { type: i0.NgZone }], propDecorators: { minHeightPx: [{
|
|
26302
|
-
type: Input
|
|
26303
|
-
}], fullHeightPx: [{
|
|
26304
|
-
type: Input
|
|
26305
|
-
}], template: [{
|
|
26306
|
-
type: ContentChild,
|
|
26307
|
-
args: [TemplateRef]
|
|
26308
|
-
}], outerContainer: [{
|
|
26309
|
-
type: ViewChild,
|
|
26310
|
-
args: ['outerContainer']
|
|
26311
|
-
}], innerContainer: [{
|
|
26312
|
-
type: ViewChild,
|
|
26313
|
-
args: ['innerContainer']
|
|
26314
|
-
}] } });
|
|
26315
|
-
|
|
26316
|
-
class BlockListComponent {
|
|
26317
|
-
get pages() {
|
|
26318
|
-
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
26319
|
-
}
|
|
26320
|
-
get isFirstPage() {
|
|
26321
|
-
return this.currentPage_ === 0;
|
|
26322
|
-
}
|
|
26323
|
-
get isLastPage() {
|
|
26324
|
-
return this.currentPage_ === this.pagesCount - 1;
|
|
26325
|
-
}
|
|
26326
|
-
get pagesCount() {
|
|
26327
|
-
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
26328
|
-
}
|
|
26329
|
-
get currentPage() {
|
|
26330
|
-
return this.currentPage_ + 1;
|
|
26331
|
-
}
|
|
26332
|
-
constructor(changeDetector) {
|
|
26333
|
-
this.changeDetector = changeDetector;
|
|
26334
|
-
this.pageSize = 4;
|
|
26335
|
-
this.containerClass = '';
|
|
26336
|
-
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
26337
|
-
this.minHeight = 0;
|
|
26338
|
-
this.listChanges = new EventEmitter();
|
|
26339
|
-
this.subComponentSize = 'M';
|
|
26340
|
-
this.currentPage_ = 0;
|
|
26341
|
-
this.refreshBlocksVisibility = () => {
|
|
26342
|
-
this.blocks.forEach((block, index) => {
|
|
26343
|
-
block.nativeElement.style.display =
|
|
26344
|
-
index >= this.currentPage_ * this.pageSize &&
|
|
26345
|
-
index < (this.currentPage_ + 1) * this.pageSize
|
|
26346
|
-
? null
|
|
26347
|
-
: 'none';
|
|
26348
|
-
});
|
|
26349
|
-
};
|
|
26350
|
-
}
|
|
26351
|
-
ngAfterViewInit() {
|
|
26352
|
-
this.blocks.changes.subscribe(() => {
|
|
26353
|
-
this.updateSizes();
|
|
26354
|
-
this.refreshBlocksVisibility();
|
|
26355
|
-
this.goToPage(1);
|
|
26356
|
-
this.changeDetector.detectChanges();
|
|
26357
|
-
this.listChanges.emit(this);
|
|
26358
|
-
});
|
|
26359
|
-
this.updateSizes();
|
|
26360
|
-
this.refreshBlocksVisibility();
|
|
26361
|
-
// we store the first height as the min-height of the list container
|
|
26362
|
-
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
26363
|
-
this.changeDetector.detectChanges();
|
|
26364
|
-
this.listChanges.emit(this);
|
|
26365
|
-
}
|
|
26366
|
-
updateSizes() {
|
|
26367
|
-
this.subComponentSize = this.computeSubComponentSize();
|
|
26368
|
-
this.pageSize = this.computePageSize();
|
|
26369
|
-
}
|
|
26370
|
-
computeSubComponentSize() {
|
|
26371
|
-
if (!this.blocks)
|
|
26372
|
-
return 'M';
|
|
26373
|
-
const subComponentsCount = this.blocks.length;
|
|
26374
|
-
if (subComponentsCount <= 3)
|
|
26375
|
-
return 'L';
|
|
26376
|
-
if (subComponentsCount <= 12)
|
|
26377
|
-
return 'M';
|
|
26378
|
-
if (subComponentsCount <= 18)
|
|
26379
|
-
return 'S';
|
|
26380
|
-
return 'XS';
|
|
26381
|
-
}
|
|
26382
|
-
computePageSize() {
|
|
26383
|
-
switch (this.subComponentSize) {
|
|
26384
|
-
case 'L':
|
|
26385
|
-
return 3;
|
|
26386
|
-
case 'S':
|
|
26387
|
-
return 6;
|
|
26388
|
-
case 'XS':
|
|
26389
|
-
return 8;
|
|
26390
|
-
default:
|
|
26391
|
-
return 4;
|
|
26392
|
-
}
|
|
26393
|
-
}
|
|
26394
|
-
goToPage(pageIndex) {
|
|
26395
|
-
this.currentPage_ = Math.max(Math.min(pageIndex - 1, this.pagesCount - 1), 0);
|
|
26396
|
-
this.changeDetector.detectChanges();
|
|
26397
|
-
this.refreshBlocksVisibility();
|
|
26398
|
-
}
|
|
26399
|
-
goToPrevPage() {
|
|
26400
|
-
if (this.isFirstPage)
|
|
26401
|
-
return;
|
|
26402
|
-
this.goToPage(this.currentPage - 1);
|
|
26403
|
-
}
|
|
26404
|
-
goToNextPage() {
|
|
26405
|
-
if (this.isLastPage)
|
|
26406
|
-
return;
|
|
26407
|
-
this.goToPage(this.currentPage + 1);
|
|
26408
|
-
}
|
|
26409
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26410
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BlockListComponent, isStandalone: true, selector: "gn-ui-block-list", inputs: { containerClass: "containerClass", paginationContainerClass: "paginationContainerClass" }, outputs: { listChanges: "listChanges" }, queries: [{ propertyName: "blocks", predicate: ["block"], read: ElementRef }], viewQueries: [{ propertyName: "blockContainer", first: true, predicate: ["blockContainer"], descendants: true }], ngImport: i0, template: "<div\n class=\"grid gap-4 w-full md:grid-cols-2\"\n #blockContainer\n [ngClass]=\"[containerClass, 'size-' + subComponentSize]\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + paginationContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}@media screen and (min-width: 769px){.size-L{grid-template-columns:repeat(1,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-M{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-S{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-XS{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PaginationDotsComponent, selector: "gn-ui-pagination-dots", inputs: ["listComponent", "containerClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26411
|
-
}
|
|
26412
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
26413
|
-
type: Component,
|
|
26414
|
-
args: [{ selector: 'gn-ui-block-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div\n class=\"grid gap-4 w-full md:grid-cols-2\"\n #blockContainer\n [ngClass]=\"[containerClass, 'size-' + subComponentSize]\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + paginationContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}@media screen and (min-width: 769px){.size-L{grid-template-columns:repeat(1,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-M{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-S{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-XS{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}}\n"] }]
|
|
26415
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { containerClass: [{
|
|
26416
|
-
type: Input
|
|
26417
|
-
}], paginationContainerClass: [{
|
|
26418
|
-
type: Input
|
|
26419
|
-
}], blocks: [{
|
|
26420
|
-
type: ContentChildren,
|
|
26421
|
-
args: ['block', { read: ElementRef }]
|
|
26422
|
-
}], blockContainer: [{
|
|
26423
|
-
type: ViewChild,
|
|
26424
|
-
args: ['blockContainer']
|
|
26425
|
-
}], listChanges: [{
|
|
26426
|
-
type: Output
|
|
26427
|
-
}] } });
|
|
26428
|
-
|
|
26429
26391
|
class ColorScaleComponent {
|
|
26430
26392
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColorScaleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26431
26393
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ColorScaleComponent, selector: "gn-ui-color-scale", ngImport: i0, template: "<div class=\"flex flex-row items-center\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">primary</div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-black\"\n title=\"primary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darkest\"\n title=\"primary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-darker\"\n title=\"primary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary border-2 border-primary-darkest\"\n title=\"primary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lighter\"\n title=\"primary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-lightest\"\n title=\"primary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-primary-white\"\n title=\"primary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">\n secondary\n </div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-black\"\n title=\"secondary-black\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darkest\"\n title=\"secondary-darkest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-darker\"\n title=\"secondary-darker\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary border-2 border-secondary-darkest\"\n title=\"secondary\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lighter\"\n title=\"secondary-lighter\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-lightest\"\n title=\"secondary-lightest\"\n ></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-secondary-white\"\n title=\"secondary-white\"\n ></div>\n</div>\n<div class=\"flex flex-row\">\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32 text-right\">main</div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-main\" title=\"main\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-900\" title=\"gray-900\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-800\" title=\"gray-800\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-700\" title=\"gray-700\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-600\" title=\"gray-600\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-500\" title=\"gray-500\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-400\" title=\"gray-400\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-300\" title=\"gray-300\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-200\" title=\"gray-200\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-100\" title=\"gray-100\"></div>\n <div class=\"shadow-md rounded w-6 h-6 m-2 bg-gray-50\" title=\"gray-50\"></div>\n <div\n class=\"shadow-md rounded w-6 h-6 m-2 bg-background\"\n title=\"background\"\n ></div>\n <div class=\"text-xs text-gray-700 font-bold m-2 w-32\">background</div>\n</div>\n", styles: [""] }); }
|
|
@@ -28358,6 +28320,531 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28358
28320
|
type: Output
|
|
28359
28321
|
}] } });
|
|
28360
28322
|
|
|
28323
|
+
class CellPopinComponent {
|
|
28324
|
+
set activePopin(active) {
|
|
28325
|
+
this._activePopin = !!active;
|
|
28326
|
+
this.updateIntersectionObserver();
|
|
28327
|
+
}
|
|
28328
|
+
get activePopin() {
|
|
28329
|
+
return this._activePopin;
|
|
28330
|
+
}
|
|
28331
|
+
constructor(scrollDispatcher, cdr) {
|
|
28332
|
+
this.scrollDispatcher = scrollDispatcher;
|
|
28333
|
+
this.cdr = cdr;
|
|
28334
|
+
this.extraClass = '';
|
|
28335
|
+
this.isOpen = false;
|
|
28336
|
+
this.isVisible = true;
|
|
28337
|
+
this.overlayPositions = [
|
|
28338
|
+
{
|
|
28339
|
+
originX: 'end',
|
|
28340
|
+
originY: 'top',
|
|
28341
|
+
overlayX: 'end',
|
|
28342
|
+
overlayY: 'top',
|
|
28343
|
+
},
|
|
28344
|
+
{
|
|
28345
|
+
originX: 'start',
|
|
28346
|
+
originY: 'top',
|
|
28347
|
+
overlayX: 'start',
|
|
28348
|
+
overlayY: 'top',
|
|
28349
|
+
},
|
|
28350
|
+
];
|
|
28351
|
+
this.firstCheck = true;
|
|
28352
|
+
this._activePopin = true;
|
|
28353
|
+
}
|
|
28354
|
+
ngAfterViewInit() {
|
|
28355
|
+
if (!this.activePopin) {
|
|
28356
|
+
return;
|
|
28357
|
+
}
|
|
28358
|
+
if (this.cdkScrollContainer) {
|
|
28359
|
+
this.scrollDispatcher.register(this.cdkScrollContainer);
|
|
28360
|
+
}
|
|
28361
|
+
this.updateIntersectionObserver();
|
|
28362
|
+
}
|
|
28363
|
+
ngOnDestroy() {
|
|
28364
|
+
this.intersectionObserver?.disconnect();
|
|
28365
|
+
this.scrollDispatcher.deregister(this.cdkScrollContainer);
|
|
28366
|
+
}
|
|
28367
|
+
updateIntersectionObserver() {
|
|
28368
|
+
if (!this.scrollContainer || !this.anchorRef) {
|
|
28369
|
+
return;
|
|
28370
|
+
}
|
|
28371
|
+
if (this.intersectionObserver) {
|
|
28372
|
+
this.intersectionObserver?.disconnect();
|
|
28373
|
+
}
|
|
28374
|
+
this.intersectionObserver = new IntersectionObserver(([entry]) => {
|
|
28375
|
+
const visible = entry.intersectionRatio >= 1;
|
|
28376
|
+
// Ignore first visibility if first time opening it
|
|
28377
|
+
if (this.firstCheck && !visible) {
|
|
28378
|
+
this.firstCheck = false;
|
|
28379
|
+
return;
|
|
28380
|
+
}
|
|
28381
|
+
this.firstCheck = false;
|
|
28382
|
+
if (this.isVisible !== visible) {
|
|
28383
|
+
this.isVisible = visible;
|
|
28384
|
+
this.cdr.detectChanges();
|
|
28385
|
+
}
|
|
28386
|
+
}, {
|
|
28387
|
+
root: this.scrollContainer.nativeElement,
|
|
28388
|
+
threshold: 1.0,
|
|
28389
|
+
});
|
|
28390
|
+
this.intersectionObserver.observe(this.anchorRef.nativeElement);
|
|
28391
|
+
}
|
|
28392
|
+
openOverlay() {
|
|
28393
|
+
this.isOpen = true;
|
|
28394
|
+
}
|
|
28395
|
+
closeOverlay() {
|
|
28396
|
+
this.isOpen = false;
|
|
28397
|
+
}
|
|
28398
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellPopinComponent, deps: [{ token: i1$8.ScrollDispatcher }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28399
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CellPopinComponent, isStandalone: true, selector: "gn-ui-cell-popin", inputs: { extraClass: "extraClass", cdkScrollContainer: "cdkScrollContainer", scrollContainer: "scrollContainer", activePopin: "activePopin" }, providers: [provideIcons({ iconoirReduce })], viewQueries: [{ propertyName: "anchorRef", first: true, predicate: ["anchorRef"], descendants: true }], ngImport: i0, template: "<div\n class=\"h-full flex items-center justify-center\"\n cdkOverlayOrigin\n #anchorRef\n #trigger=\"cdkOverlayOrigin\"\n [class]=\"extraClass\"\n data-cy=\"cell-popin\"\n>\n <ng-content select=\"[cellContent]\"></ng-content>\n <ng-template\n *ngIf=\"activePopin\"\n cdkConnectedOverlay\n [cdkConnectedOverlayPush]=\"false\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayWidth]=\"'auto'\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n (detach)=\"closeOverlay()\"\n >\n <div\n *ngIf=\"activePopin && isVisible\"\n class=\"bg-white shadow-lg border border-gray-300 relative\"\n data-cy=\"cell-popin-content\"\n >\n <ng-content select=\"[popinContent]\"></ng-content>\n <gn-ui-button\n data-cy=\"cell-popin-close\"\n [style.--gn-ui-button-background]=\"'bg-transparent'\"\n class=\"absolute top-2 right-2\"\n type=\"light\"\n (buttonClick)=\"closeOverlay()\"\n extraClass=\"w-10 h-8 px-1\"\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: 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"] }] }); }
|
|
28400
|
+
}
|
|
28401
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellPopinComponent, decorators: [{
|
|
28402
|
+
type: Component,
|
|
28403
|
+
args: [{ selector: 'gn-ui-cell-popin', standalone: true, imports: [
|
|
28404
|
+
CommonModule,
|
|
28405
|
+
MatButtonModule,
|
|
28406
|
+
OverlayModule,
|
|
28407
|
+
ButtonComponent,
|
|
28408
|
+
NgIconComponent,
|
|
28409
|
+
], providers: [provideIcons({ iconoirReduce })], template: "<div\n class=\"h-full flex items-center justify-center\"\n cdkOverlayOrigin\n #anchorRef\n #trigger=\"cdkOverlayOrigin\"\n [class]=\"extraClass\"\n data-cy=\"cell-popin\"\n>\n <ng-content select=\"[cellContent]\"></ng-content>\n <ng-template\n *ngIf=\"activePopin\"\n cdkConnectedOverlay\n [cdkConnectedOverlayPush]=\"false\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayWidth]=\"'auto'\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n (detach)=\"closeOverlay()\"\n >\n <div\n *ngIf=\"activePopin && isVisible\"\n class=\"bg-white shadow-lg border border-gray-300 relative\"\n data-cy=\"cell-popin-content\"\n >\n <ng-content select=\"[popinContent]\"></ng-content>\n <gn-ui-button\n data-cy=\"cell-popin-close\"\n [style.--gn-ui-button-background]=\"'bg-transparent'\"\n class=\"absolute top-2 right-2\"\n type=\"light\"\n (buttonClick)=\"closeOverlay()\"\n extraClass=\"w-10 h-8 px-1\"\n >\n <ng-icon name=\"iconoirReduce\" size=\"24\"></ng-icon>\n </gn-ui-button>\n </div>\n </ng-template>\n</div>\n" }]
|
|
28410
|
+
}], ctorParameters: () => [{ type: i1$8.ScrollDispatcher }, { type: i0.ChangeDetectorRef }], propDecorators: { extraClass: [{
|
|
28411
|
+
type: Input
|
|
28412
|
+
}], cdkScrollContainer: [{
|
|
28413
|
+
type: Input
|
|
28414
|
+
}], scrollContainer: [{
|
|
28415
|
+
type: Input
|
|
28416
|
+
}], anchorRef: [{
|
|
28417
|
+
type: ViewChild,
|
|
28418
|
+
args: ['anchorRef']
|
|
28419
|
+
}], activePopin: [{
|
|
28420
|
+
type: Input
|
|
28421
|
+
}] } });
|
|
28422
|
+
|
|
28423
|
+
class ExpandablePanelButtonComponent {
|
|
28424
|
+
constructor() {
|
|
28425
|
+
this.collapsed = true;
|
|
28426
|
+
}
|
|
28427
|
+
toggle() {
|
|
28428
|
+
this.collapsed = !this.collapsed;
|
|
28429
|
+
}
|
|
28430
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28431
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExpandablePanelButtonComponent, isStandalone: true, selector: "gn-ui-expandable-panel-button", inputs: { titleTemplate: "titleTemplate", collapsed: "collapsed" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"px-4 bg-primary hover:bg-primary-darker text-white flex flex-row w-full items-center font-bold text-lg pointer-events-auto\"\n [style.height]=\"'55px'\"\n (click)=\"toggle()\"\n>\n <ng-container [ngTemplateOutlet]=\"titleTemplate\"></ng-container>\n <div class=\"ml-3 grow\"></div>\n <ng-icon *ngIf=\"collapsed\" name=\"matExpandMore\"></ng-icon>\n <ng-icon name=\"matExpandLess\" *ngIf=\"!collapsed\"></ng-icon>\n</button>\n<div\n class=\"content transition-all pointer-events-auto bg-white\"\n [style.height]=\"collapsed ? '0px' : 'calc(100% - 55px)'\"\n [ngClass]=\"collapsed ? 'overflow-hidden' : 'overflow-auto'\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{height:100%;position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;pointer-events:none}\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: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [provideIcons({ matExpandMore, matExpandLess })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28432
|
+
}
|
|
28433
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, decorators: [{
|
|
28434
|
+
type: Component,
|
|
28435
|
+
args: [{ selector: 'gn-ui-expandable-panel-button', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, NgIcon], viewProviders: [provideIcons({ matExpandMore, matExpandLess })], standalone: true, template: "<button\n type=\"button\"\n class=\"px-4 bg-primary hover:bg-primary-darker text-white flex flex-row w-full items-center font-bold text-lg pointer-events-auto\"\n [style.height]=\"'55px'\"\n (click)=\"toggle()\"\n>\n <ng-container [ngTemplateOutlet]=\"titleTemplate\"></ng-container>\n <div class=\"ml-3 grow\"></div>\n <ng-icon *ngIf=\"collapsed\" name=\"matExpandMore\"></ng-icon>\n <ng-icon name=\"matExpandLess\" *ngIf=\"!collapsed\"></ng-icon>\n</button>\n<div\n class=\"content transition-all pointer-events-auto bg-white\"\n [style.height]=\"collapsed ? '0px' : 'calc(100% - 55px)'\"\n [ngClass]=\"collapsed ? 'overflow-hidden' : 'overflow-auto'\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{height:100%;position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;pointer-events:none}\n"] }]
|
|
28436
|
+
}], propDecorators: { titleTemplate: [{
|
|
28437
|
+
type: Input
|
|
28438
|
+
}], collapsed: [{
|
|
28439
|
+
type: Input
|
|
28440
|
+
}] } });
|
|
28441
|
+
|
|
28442
|
+
class ExpandablePanelComponent {
|
|
28443
|
+
constructor(changeDetector) {
|
|
28444
|
+
this.changeDetector = changeDetector;
|
|
28445
|
+
this.iconColor = '';
|
|
28446
|
+
this._collapsed = true;
|
|
28447
|
+
}
|
|
28448
|
+
ngAfterViewInit() {
|
|
28449
|
+
if (this.contentDiv) {
|
|
28450
|
+
this.contentObserver = new ResizeObserver(() => {
|
|
28451
|
+
this.changeDetector.detectChanges();
|
|
28452
|
+
});
|
|
28453
|
+
this.contentObserver.observe(this.contentDiv.nativeElement);
|
|
28454
|
+
}
|
|
28455
|
+
}
|
|
28456
|
+
set collapsed(value) {
|
|
28457
|
+
this._collapsed = value;
|
|
28458
|
+
}
|
|
28459
|
+
get collapsed() {
|
|
28460
|
+
return this._collapsed;
|
|
28461
|
+
}
|
|
28462
|
+
toggle() {
|
|
28463
|
+
this.collapsed = !this.collapsed;
|
|
28464
|
+
}
|
|
28465
|
+
ngOnDestroy() {
|
|
28466
|
+
if (this.contentObserver) {
|
|
28467
|
+
this.contentObserver.disconnect();
|
|
28468
|
+
}
|
|
28469
|
+
}
|
|
28470
|
+
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 }); }
|
|
28471
|
+
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 }); }
|
|
28472
|
+
}
|
|
28473
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, decorators: [{
|
|
28474
|
+
type: Component,
|
|
28475
|
+
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" }]
|
|
28476
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
28477
|
+
type: Input
|
|
28478
|
+
}], iconColor: [{
|
|
28479
|
+
type: Input
|
|
28480
|
+
}], titleTemplate: [{
|
|
28481
|
+
type: ContentChild,
|
|
28482
|
+
args: ['titleTemplate']
|
|
28483
|
+
}], contentDiv: [{
|
|
28484
|
+
type: ViewChild,
|
|
28485
|
+
args: ['contentDiv']
|
|
28486
|
+
}], collapsed: [{
|
|
28487
|
+
type: Input
|
|
28488
|
+
}] } });
|
|
28489
|
+
|
|
28490
|
+
class FormFieldWrapperComponent {
|
|
28491
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28492
|
+
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 }); }
|
|
28493
|
+
}
|
|
28494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
28495
|
+
type: Component,
|
|
28496
|
+
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatTooltipModule, CommonModule, TranslateModule], 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" }]
|
|
28497
|
+
}], propDecorators: { label: [{
|
|
28498
|
+
type: Input
|
|
28499
|
+
}], hint: [{
|
|
28500
|
+
type: Input
|
|
28501
|
+
}] } });
|
|
28502
|
+
|
|
28503
|
+
class MaxLinesComponent {
|
|
28504
|
+
constructor(cdr) {
|
|
28505
|
+
this.cdr = cdr;
|
|
28506
|
+
this.maxLines = 6;
|
|
28507
|
+
this.isExpanded = false;
|
|
28508
|
+
this.maxHeight = '';
|
|
28509
|
+
this.showToggleButton = false;
|
|
28510
|
+
}
|
|
28511
|
+
ngAfterViewInit() {
|
|
28512
|
+
this.calculateMaxHeight();
|
|
28513
|
+
this.observer = new ResizeObserver((mutations) => {
|
|
28514
|
+
mutations.forEach(() => {
|
|
28515
|
+
this.calculateMaxHeight();
|
|
28516
|
+
});
|
|
28517
|
+
});
|
|
28518
|
+
this.observer.observe(this.container.nativeElement.children[0]);
|
|
28519
|
+
}
|
|
28520
|
+
toggleDisplay() {
|
|
28521
|
+
this.isExpanded = !this.isExpanded;
|
|
28522
|
+
this.calculateMaxHeight();
|
|
28523
|
+
}
|
|
28524
|
+
calculateMaxHeight() {
|
|
28525
|
+
const containerElement = this.container.nativeElement;
|
|
28526
|
+
const contentElement = containerElement.children[0];
|
|
28527
|
+
const contentHeight = contentElement.getBoundingClientRect().height;
|
|
28528
|
+
if (contentHeight) {
|
|
28529
|
+
if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
|
|
28530
|
+
this.showToggleButton = true;
|
|
28531
|
+
this.maxHeight = this.isExpanded
|
|
28532
|
+
? `${contentHeight}px`
|
|
28533
|
+
: `${this.maxLines * this.getLineHeight(contentElement)}px`;
|
|
28534
|
+
}
|
|
28535
|
+
else {
|
|
28536
|
+
this.showToggleButton = false;
|
|
28537
|
+
this.maxHeight = `${contentHeight}px`;
|
|
28538
|
+
}
|
|
28539
|
+
containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
|
|
28540
|
+
this.cdr.detectChanges();
|
|
28541
|
+
}
|
|
28542
|
+
}
|
|
28543
|
+
getLineHeight(element) {
|
|
28544
|
+
const computedStyle = window.getComputedStyle(element);
|
|
28545
|
+
const lineHeight = parseFloat(computedStyle.lineHeight);
|
|
28546
|
+
const fontSize = parseFloat(computedStyle.fontSize || '14');
|
|
28547
|
+
const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
|
|
28548
|
+
return result;
|
|
28549
|
+
}
|
|
28550
|
+
ngOnDestroy() {
|
|
28551
|
+
if (!this.observer)
|
|
28552
|
+
return;
|
|
28553
|
+
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
28554
|
+
}
|
|
28555
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28556
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MaxLinesComponent, isStandalone: true, selector: "gn-ui-max-lines", inputs: { maxLines: "maxLines" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], ngImport: i0, template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-10\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-primary cursor-pointer pt-2.5\"\n data-cy=\"readMoreButton\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\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: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28557
|
+
}
|
|
28558
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
28559
|
+
type: Component,
|
|
28560
|
+
args: [{ selector: 'gn-ui-max-lines', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, TranslateModule], template: "<div\n #container\n class=\"max-lines overflow-hidden transition-[max-height] duration-300 relative\"\n [ngClass]=\"isExpanded ? 'ease-in' : 'ease-out'\"\n [style.maxHeight]=\"maxHeight\"\n>\n <ng-content></ng-content>\n <div\n *ngIf=\"showToggleButton && !isExpanded\"\n class=\"absolute inset-x-0 bottom-0 bg-gradient-to-b from-transparent to-white h-10\"\n ></div>\n</div>\n<div\n *ngIf=\"showToggleButton\"\n (click)=\"toggleDisplay()\"\n class=\"text-primary cursor-pointer pt-2.5\"\n data-cy=\"readMoreButton\"\n>\n {{ (isExpanded ? 'ui.readLess' : 'ui.readMore') | translate }}\n</div>\n" }]
|
|
28561
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { maxLines: [{
|
|
28562
|
+
type: Input
|
|
28563
|
+
}], container: [{
|
|
28564
|
+
type: ViewChild,
|
|
28565
|
+
args: ['container']
|
|
28566
|
+
}] } });
|
|
28567
|
+
|
|
28568
|
+
class InteractiveTableColumnComponent {
|
|
28569
|
+
constructor() {
|
|
28570
|
+
this.grow = false;
|
|
28571
|
+
this.sortable = false;
|
|
28572
|
+
this.activeSort = null;
|
|
28573
|
+
this.sortChange = new EventEmitter();
|
|
28574
|
+
}
|
|
28575
|
+
handleSortChange() {
|
|
28576
|
+
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
28577
|
+
this.sortChange.emit(this.activeSort);
|
|
28578
|
+
}
|
|
28579
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28580
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableColumnComponent, isStandalone: true, selector: "gn-ui-interactive-table-column", inputs: { grow: "grow", width: "width", sortable: "sortable", activeSort: "activeSort" }, outputs: { sortChange: "sortChange" }, queries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "cell", first: true, predicate: ["cell"], descendants: true }], ngImport: i0, template: "<span>empty</span>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28581
|
+
}
|
|
28582
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
28583
|
+
type: Component,
|
|
28584
|
+
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
28585
|
+
}], propDecorators: { header: [{
|
|
28586
|
+
type: ContentChild,
|
|
28587
|
+
args: ['header']
|
|
28588
|
+
}], cell: [{
|
|
28589
|
+
type: ContentChild,
|
|
28590
|
+
args: ['cell']
|
|
28591
|
+
}], grow: [{
|
|
28592
|
+
type: Input
|
|
28593
|
+
}], width: [{
|
|
28594
|
+
type: Input
|
|
28595
|
+
}], sortable: [{
|
|
28596
|
+
type: Input
|
|
28597
|
+
}], activeSort: [{
|
|
28598
|
+
type: Input
|
|
28599
|
+
}], sortChange: [{
|
|
28600
|
+
type: Output
|
|
28601
|
+
}] } });
|
|
28602
|
+
|
|
28603
|
+
marker('editor.record.lock.resourceType');
|
|
28604
|
+
marker('editor.record.lock.harvested');
|
|
28605
|
+
marker('editor.record.lock.owner');
|
|
28606
|
+
class InteractiveTableComponent {
|
|
28607
|
+
constructor() {
|
|
28608
|
+
this.items = [];
|
|
28609
|
+
this.canEditItem = () => of(true);
|
|
28610
|
+
this.isDraftPage = false;
|
|
28611
|
+
this.itemClick = new EventEmitter();
|
|
28612
|
+
}
|
|
28613
|
+
get gridStyle() {
|
|
28614
|
+
return {
|
|
28615
|
+
'grid-template-columns': this.columns
|
|
28616
|
+
.map((column) => column.width
|
|
28617
|
+
? column.width
|
|
28618
|
+
: column.grow
|
|
28619
|
+
? `minmax(0px,1fr)`
|
|
28620
|
+
: `minmax(0px,max-content)`)
|
|
28621
|
+
.join(' '),
|
|
28622
|
+
};
|
|
28623
|
+
}
|
|
28624
|
+
getItemTitle(item) {
|
|
28625
|
+
if (!this.isDraftPage) {
|
|
28626
|
+
if (item.kind !== 'dataset') {
|
|
28627
|
+
return 'editor.record.lock.resourceType';
|
|
28628
|
+
}
|
|
28629
|
+
else if (item.extras?.isHarvested) {
|
|
28630
|
+
return 'editor.record.lock.harvested';
|
|
28631
|
+
}
|
|
28632
|
+
else if (!item.extras?.edit) {
|
|
28633
|
+
return 'editor.record.lock.owner';
|
|
28634
|
+
}
|
|
28635
|
+
}
|
|
28636
|
+
return '';
|
|
28637
|
+
}
|
|
28638
|
+
handleRowClick(item) {
|
|
28639
|
+
this.itemClick.emit(item);
|
|
28640
|
+
}
|
|
28641
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28642
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InteractiveTableComponent, isStandalone: true, selector: "gn-ui-interactive-table", inputs: { items: "items", canEditItem: "canEditItem", isDraftPage: "isDraftPage" }, outputs: { itemClick: "itemClick" }, providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], queries: [{ propertyName: "columns", predicate: InteractiveTableColumnComponent }], ngImport: i0, template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [attr.data-cy-title]=\"item.title\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (canEditItem(item) | async) === false,\n 'group-hover:text-main group-hover:bg-gray-50':\n canEditItem(item) | async,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\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: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28643
|
+
}
|
|
28644
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
28645
|
+
type: Component,
|
|
28646
|
+
args: [{ selector: 'gn-ui-interactive-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIconComponent, TranslateModule], providers: [provideIcons({ iconoirNavArrowDown, iconoirNavArrowUp })], template: "<div class=\"grid w-full\" [ngStyle]=\"gridStyle\">\n <div class=\"contents w-full\">\n <ng-container *ngFor=\"let column of columns\">\n <button\n *ngIf=\"column.sortable\"\n type=\"button\"\n class=\"table-header-cell gap-1\"\n (click)=\"column.sortable && column.handleSortChange()\"\n >\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n <div class=\"sort-button flex flex-col\" *ngIf=\"column.sortable\">\n <ng-icon\n class=\"text-gray-600 -mb-2\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'asc' }\"\n name=\"iconoirNavArrowUp\"\n ></ng-icon>\n <ng-icon\n class=\"text-gray-600\"\n [ngClass]=\"{ 'text-main': column.activeSort === 'desc' }\"\n name=\"iconoirNavArrowDown\"\n ></ng-icon>\n </div>\n </button>\n <div *ngIf=\"!column.sortable\" class=\"table-header-cell\">\n <ng-container *ngTemplateOutlet=\"column.header\"></ng-container>\n </div>\n </ng-container>\n </div>\n <div\n class=\"contents text-gray-900 cursor-pointer group\"\n *ngFor=\"let item of items\"\n (click)=\"handleRowClick(item)\"\n data-cy=\"table-row\"\n [attr.data-cy-title]=\"item.title\"\n [title]=\"getItemTitle(item) | translate\"\n >\n <div\n class=\"relative h-0\"\n [ngStyle]=\"{ 'grid-column': 'span ' + this.columns.length }\"\n >\n <!-- this element is only used in keyboard navigation -->\n <button\n type=\"button\"\n class=\"absolute inset-x-0 h-[50px] bg-transparent pointer-events-none\"\n ></button>\n </div>\n <ng-container *ngFor=\"let column of columns\">\n <div\n class=\"table-row-cell px-3 py-1.5 flex items-center bg-white transition-colors duration-75 truncate border-b border-gray-200\"\n [ngClass]=\"{\n 'text-purple-light cursor-default':\n (canEditItem(item) | async) === false,\n 'group-hover:text-main group-hover:bg-gray-50':\n canEditItem(item) | async,\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"column.cell; context: { $implicit: item }\"\n ></ng-container>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".table-header-cell{@apply text-gray-700 px-3 py-3 flex items-center truncate bg-white;}button.table-header-cell{@apply transition-colors duration-75 hover:text-main hover:bg-gray-50 focus:text-main focus:bg-gray-50;}ng-icon{@apply w-4 h-4;}\n"] }]
|
|
28647
|
+
}], propDecorators: { columns: [{
|
|
28648
|
+
type: ContentChildren,
|
|
28649
|
+
args: [InteractiveTableColumnComponent]
|
|
28650
|
+
}], items: [{
|
|
28651
|
+
type: Input
|
|
28652
|
+
}], canEditItem: [{
|
|
28653
|
+
type: Input
|
|
28654
|
+
}], isDraftPage: [{
|
|
28655
|
+
type: Input
|
|
28656
|
+
}], itemClick: [{
|
|
28657
|
+
type: Output
|
|
28658
|
+
}] } });
|
|
28659
|
+
|
|
28660
|
+
/**
|
|
28661
|
+
* This component will make a block that will stay sticky on the top of the page,
|
|
28662
|
+
* but will also shrink down to a minimum height when scrolling.
|
|
28663
|
+
* The ratio between minimum and nominal height is stored in the shrinkRatio
|
|
28664
|
+
* property, and can be used to change e.g. the opacity or size of child elements.
|
|
28665
|
+
* This component renders at z-index: 50 by default.
|
|
28666
|
+
* The first parent element with an overflow of `scroll` or `overflow` is considered
|
|
28667
|
+
* for scroll events.
|
|
28668
|
+
*/
|
|
28669
|
+
class StickyHeaderComponent {
|
|
28670
|
+
constructor(changeDetector, hostEl, zone) {
|
|
28671
|
+
this.changeDetector = changeDetector;
|
|
28672
|
+
this.hostEl = hostEl;
|
|
28673
|
+
this.zone = zone;
|
|
28674
|
+
}
|
|
28675
|
+
ngAfterViewInit() {
|
|
28676
|
+
this.scrollSub = fromEvent(window, 'scroll', {
|
|
28677
|
+
passive: true,
|
|
28678
|
+
})
|
|
28679
|
+
.pipe(throttleTime(0, animationFrameScheduler, {
|
|
28680
|
+
leading: true,
|
|
28681
|
+
trailing: true,
|
|
28682
|
+
}))
|
|
28683
|
+
.subscribe(this.updateSize.bind(this));
|
|
28684
|
+
}
|
|
28685
|
+
ngOnInit() {
|
|
28686
|
+
this.placeholderEl = document.createElement('div');
|
|
28687
|
+
this.placeholderEl.style.position = 'absolute';
|
|
28688
|
+
this.placeholderEl.classList.add('sticky-header-placeholder');
|
|
28689
|
+
this.hostEl.nativeElement.insertAdjacentElement('beforebegin', this.placeholderEl);
|
|
28690
|
+
}
|
|
28691
|
+
ngAfterViewChecked() {
|
|
28692
|
+
this.updateSize();
|
|
28693
|
+
}
|
|
28694
|
+
ngOnDestroy() {
|
|
28695
|
+
this.scrollSub.unsubscribe();
|
|
28696
|
+
this.placeholderEl.remove();
|
|
28697
|
+
}
|
|
28698
|
+
updateSize() {
|
|
28699
|
+
this.zone.runOutsideAngular(() => {
|
|
28700
|
+
if (window.scrollY === this.parentScroll)
|
|
28701
|
+
return;
|
|
28702
|
+
this.parentScroll = window.scrollY;
|
|
28703
|
+
const offsetTop = Math.max(0, this.parentScroll - this.placeholderEl.offsetTop);
|
|
28704
|
+
const newHeightPx = Math.max(this.minHeightPx, this.fullHeightPx - offsetTop);
|
|
28705
|
+
this.innerContainer.nativeElement.style.transform = `translate(0, ${newHeightPx - this.fullHeightPx}px)`;
|
|
28706
|
+
this.expandRatio =
|
|
28707
|
+
(newHeightPx - this.minHeightPx) /
|
|
28708
|
+
(this.fullHeightPx - this.minHeightPx);
|
|
28709
|
+
this.changeDetector.detectChanges();
|
|
28710
|
+
});
|
|
28711
|
+
}
|
|
28712
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StickyHeaderComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef, host: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28713
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StickyHeaderComponent, selector: "gn-ui-sticky-header", inputs: { minHeightPx: "minHeightPx", fullHeightPx: "fullHeightPx" }, queries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "outerContainer", first: true, predicate: ["outerContainer"], descendants: true }, { propertyName: "innerContainer", first: true, predicate: ["innerContainer"], descendants: true }], ngImport: i0, template: "<div\n #outerContainer\n class=\"sticky pointer-events-none z-50 top-0\"\n [style.height]=\"fullHeightPx + 'px'\"\n>\n <div\n #innerContainer\n class=\"relative pointer-events-auto\"\n [style.height]=\"fullHeightPx + 'px'\"\n >\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: expandRatio }\"\n ></ng-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28714
|
+
}
|
|
28715
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StickyHeaderComponent, decorators: [{
|
|
28716
|
+
type: Component,
|
|
28717
|
+
args: [{ selector: 'gn-ui-sticky-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #outerContainer\n class=\"sticky pointer-events-none z-50 top-0\"\n [style.height]=\"fullHeightPx + 'px'\"\n>\n <div\n #innerContainer\n class=\"relative pointer-events-auto\"\n [style.height]=\"fullHeightPx + 'px'\"\n >\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{ $implicit: expandRatio }\"\n ></ng-container>\n </div>\n</div>\n" }]
|
|
28718
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef, decorators: [{
|
|
28719
|
+
type: Host
|
|
28720
|
+
}] }, { type: i0.NgZone }], propDecorators: { minHeightPx: [{
|
|
28721
|
+
type: Input
|
|
28722
|
+
}], fullHeightPx: [{
|
|
28723
|
+
type: Input
|
|
28724
|
+
}], template: [{
|
|
28725
|
+
type: ContentChild,
|
|
28726
|
+
args: [TemplateRef]
|
|
28727
|
+
}], outerContainer: [{
|
|
28728
|
+
type: ViewChild,
|
|
28729
|
+
args: ['outerContainer']
|
|
28730
|
+
}], innerContainer: [{
|
|
28731
|
+
type: ViewChild,
|
|
28732
|
+
args: ['innerContainer']
|
|
28733
|
+
}] } });
|
|
28734
|
+
|
|
28735
|
+
class BlockListComponent {
|
|
28736
|
+
get pages() {
|
|
28737
|
+
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
28738
|
+
}
|
|
28739
|
+
get isFirstPage() {
|
|
28740
|
+
return this.currentPage_ === 0;
|
|
28741
|
+
}
|
|
28742
|
+
get isLastPage() {
|
|
28743
|
+
return this.currentPage_ === this.pagesCount - 1;
|
|
28744
|
+
}
|
|
28745
|
+
get pagesCount() {
|
|
28746
|
+
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
28747
|
+
}
|
|
28748
|
+
get currentPage() {
|
|
28749
|
+
return this.currentPage_ + 1;
|
|
28750
|
+
}
|
|
28751
|
+
constructor(changeDetector) {
|
|
28752
|
+
this.changeDetector = changeDetector;
|
|
28753
|
+
this.pageSize = 4;
|
|
28754
|
+
this.containerClass = '';
|
|
28755
|
+
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
28756
|
+
this.minHeight = 0;
|
|
28757
|
+
this.listChanges = new EventEmitter();
|
|
28758
|
+
this.subComponentSize = 'M';
|
|
28759
|
+
this.currentPage_ = 0;
|
|
28760
|
+
this.refreshBlocksVisibility = () => {
|
|
28761
|
+
this.blocks.forEach((block, index) => {
|
|
28762
|
+
block.nativeElement.style.display =
|
|
28763
|
+
index >= this.currentPage_ * this.pageSize &&
|
|
28764
|
+
index < (this.currentPage_ + 1) * this.pageSize
|
|
28765
|
+
? null
|
|
28766
|
+
: 'none';
|
|
28767
|
+
});
|
|
28768
|
+
};
|
|
28769
|
+
}
|
|
28770
|
+
ngAfterViewInit() {
|
|
28771
|
+
this.blocks.changes.subscribe(() => {
|
|
28772
|
+
this.updateSizes();
|
|
28773
|
+
this.refreshBlocksVisibility();
|
|
28774
|
+
this.goToPage(1);
|
|
28775
|
+
this.changeDetector.detectChanges();
|
|
28776
|
+
this.listChanges.emit(this);
|
|
28777
|
+
});
|
|
28778
|
+
this.updateSizes();
|
|
28779
|
+
this.refreshBlocksVisibility();
|
|
28780
|
+
// we store the first height as the min-height of the list container
|
|
28781
|
+
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
28782
|
+
this.changeDetector.detectChanges();
|
|
28783
|
+
this.listChanges.emit(this);
|
|
28784
|
+
}
|
|
28785
|
+
updateSizes() {
|
|
28786
|
+
this.subComponentSize = this.computeSubComponentSize();
|
|
28787
|
+
this.pageSize = this.computePageSize();
|
|
28788
|
+
}
|
|
28789
|
+
computeSubComponentSize() {
|
|
28790
|
+
if (!this.blocks)
|
|
28791
|
+
return 'M';
|
|
28792
|
+
const subComponentsCount = this.blocks.length;
|
|
28793
|
+
if (subComponentsCount <= 3)
|
|
28794
|
+
return 'L';
|
|
28795
|
+
if (subComponentsCount <= 12)
|
|
28796
|
+
return 'M';
|
|
28797
|
+
if (subComponentsCount <= 18)
|
|
28798
|
+
return 'S';
|
|
28799
|
+
return 'XS';
|
|
28800
|
+
}
|
|
28801
|
+
computePageSize() {
|
|
28802
|
+
switch (this.subComponentSize) {
|
|
28803
|
+
case 'L':
|
|
28804
|
+
return 3;
|
|
28805
|
+
case 'S':
|
|
28806
|
+
return 6;
|
|
28807
|
+
case 'XS':
|
|
28808
|
+
return 8;
|
|
28809
|
+
default:
|
|
28810
|
+
return 4;
|
|
28811
|
+
}
|
|
28812
|
+
}
|
|
28813
|
+
goToPage(pageIndex) {
|
|
28814
|
+
this.currentPage_ = Math.max(Math.min(pageIndex - 1, this.pagesCount - 1), 0);
|
|
28815
|
+
this.changeDetector.detectChanges();
|
|
28816
|
+
this.refreshBlocksVisibility();
|
|
28817
|
+
}
|
|
28818
|
+
goToPrevPage() {
|
|
28819
|
+
if (this.isFirstPage)
|
|
28820
|
+
return;
|
|
28821
|
+
this.goToPage(this.currentPage - 1);
|
|
28822
|
+
}
|
|
28823
|
+
goToNextPage() {
|
|
28824
|
+
if (this.isLastPage)
|
|
28825
|
+
return;
|
|
28826
|
+
this.goToPage(this.currentPage + 1);
|
|
28827
|
+
}
|
|
28828
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28829
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BlockListComponent, isStandalone: true, selector: "gn-ui-block-list", inputs: { containerClass: "containerClass", paginationContainerClass: "paginationContainerClass" }, outputs: { listChanges: "listChanges" }, queries: [{ propertyName: "blocks", predicate: ["block"], read: ElementRef }], viewQueries: [{ propertyName: "blockContainer", first: true, predicate: ["blockContainer"], descendants: true }], ngImport: i0, template: "<div\n class=\"grid gap-4 w-full md:grid-cols-2\"\n #blockContainer\n [ngClass]=\"[containerClass, 'size-' + subComponentSize]\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + paginationContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}@media screen and (min-width: 769px){.size-L{grid-template-columns:repeat(1,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-M{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-S{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-XS{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PaginationDotsComponent, selector: "gn-ui-pagination-dots", inputs: ["listComponent", "containerClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28830
|
+
}
|
|
28831
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
28832
|
+
type: Component,
|
|
28833
|
+
args: [{ selector: 'gn-ui-block-list', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, PaginationDotsComponent], template: "<div\n class=\"grid gap-4 w-full md:grid-cols-2\"\n #blockContainer\n [ngClass]=\"[containerClass, 'size-' + subComponentSize]\"\n [ngStyle]=\"{ minHeight: minHeight + 'px' }\"\n>\n <ng-content></ng-content>\n</div>\n<gn-ui-pagination-dots\n [containerClass]=\"'absolute ' + paginationContainerClass\"\n [listComponent]=\"this\"\n></gn-ui-pagination-dots>\n", styles: [":host .block-list-container ::ng-deep>*{flex-shrink:0}:host{position:relative}@media screen and (min-width: 769px){.size-L{grid-template-columns:repeat(1,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-M{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-S{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}.size-XS{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(0,min-content)}}\n"] }]
|
|
28834
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { containerClass: [{
|
|
28835
|
+
type: Input
|
|
28836
|
+
}], paginationContainerClass: [{
|
|
28837
|
+
type: Input
|
|
28838
|
+
}], blocks: [{
|
|
28839
|
+
type: ContentChildren,
|
|
28840
|
+
args: ['block', { read: ElementRef }]
|
|
28841
|
+
}], blockContainer: [{
|
|
28842
|
+
type: ViewChild,
|
|
28843
|
+
args: ['blockContainer']
|
|
28844
|
+
}], listChanges: [{
|
|
28845
|
+
type: Output
|
|
28846
|
+
}] } });
|
|
28847
|
+
|
|
28361
28848
|
class SortableListComponent {
|
|
28362
28849
|
constructor() {
|
|
28363
28850
|
this.itemsOrderChange = new EventEmitter();
|
|
@@ -28532,34 +29019,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28532
29019
|
}] });
|
|
28533
29020
|
|
|
28534
29021
|
class TruncatedTextComponent {
|
|
28535
|
-
constructor(cd, ngZone
|
|
29022
|
+
constructor(cd, ngZone) {
|
|
28536
29023
|
this.cd = cd;
|
|
28537
29024
|
this.ngZone = ngZone;
|
|
28538
|
-
this.viewportRuler = viewportRuler;
|
|
28539
29025
|
this.text = '';
|
|
28540
29026
|
this.extraClass = '';
|
|
28541
29027
|
this.isTextTruncated = false;
|
|
28542
|
-
this.isOpen = false;
|
|
28543
|
-
this.overlayPosition = {
|
|
28544
|
-
originX: 'end',
|
|
28545
|
-
originY: 'top',
|
|
28546
|
-
overlayX: 'end',
|
|
28547
|
-
overlayY: 'top',
|
|
28548
|
-
};
|
|
28549
29028
|
this.resizeObserver = new ResizeObserver(() => {
|
|
28550
29029
|
this.ngZone.run(() => this.checkTextTruncation());
|
|
28551
29030
|
});
|
|
28552
29031
|
this.mutationObserver = new MutationObserver(() => {
|
|
28553
29032
|
this.ngZone.run(() => {
|
|
28554
29033
|
this.checkTextTruncation();
|
|
28555
|
-
this.close();
|
|
28556
29034
|
});
|
|
28557
29035
|
});
|
|
28558
|
-
this.viewportSubscription = this.viewportRuler.change().subscribe(() => {
|
|
28559
|
-
if (this.isOpen) {
|
|
28560
|
-
this.updateOverlayPosition();
|
|
28561
|
-
}
|
|
28562
|
-
});
|
|
28563
29036
|
}
|
|
28564
29037
|
ngAfterViewInit() {
|
|
28565
29038
|
const element = this.textElement.nativeElement;
|
|
@@ -28574,39 +29047,14 @@ class TruncatedTextComponent {
|
|
|
28574
29047
|
ngOnDestroy() {
|
|
28575
29048
|
this.resizeObserver?.disconnect();
|
|
28576
29049
|
this.mutationObserver?.disconnect();
|
|
28577
|
-
this.viewportSubscription?.unsubscribe();
|
|
28578
|
-
this.close();
|
|
28579
|
-
}
|
|
28580
|
-
toggleOverlay() {
|
|
28581
|
-
this.isOpen = !this.isOpen;
|
|
28582
|
-
if (this.isOpen) {
|
|
28583
|
-
this.updateOverlayPosition();
|
|
28584
|
-
}
|
|
28585
|
-
}
|
|
28586
|
-
updateOverlayPosition() {
|
|
28587
|
-
const element = this.textElement.nativeElement;
|
|
28588
|
-
const rect = element.getBoundingClientRect();
|
|
28589
|
-
const viewportWidth = this.viewportRuler.getViewportSize().width;
|
|
28590
|
-
const isMobile = viewportWidth < 640;
|
|
28591
|
-
const overlayWidth = isMobile ? 190 : 320;
|
|
28592
|
-
const isNearLeftEdge = rect.left < overlayWidth;
|
|
28593
|
-
this.overlayPosition = {
|
|
28594
|
-
originX: isNearLeftEdge ? 'start' : 'end',
|
|
28595
|
-
originY: 'top',
|
|
28596
|
-
overlayX: isNearLeftEdge ? 'start' : 'end',
|
|
28597
|
-
overlayY: 'top',
|
|
28598
|
-
};
|
|
28599
|
-
}
|
|
28600
|
-
close() {
|
|
28601
|
-
this.isOpen = false;
|
|
28602
29050
|
}
|
|
28603
29051
|
checkTextTruncation() {
|
|
28604
29052
|
const element = this.textElement.nativeElement;
|
|
28605
29053
|
this.isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
28606
29054
|
this.cd.detectChanges();
|
|
28607
29055
|
}
|
|
28608
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }
|
|
28609
|
-
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
|
|
29056
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29057
|
+
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", scrollContainer: "scrollContainer", cdkScrollContainer: "cdkScrollContainer" }, providers: [provideIcons({ iconoirExpand })], viewQueries: [{ propertyName: "textElement", first: true, predicate: ["textElement"], descendants: true }], ngImport: i0, template: "<gn-ui-cell-popin\n #popinRef\n [activePopin]=\"isTextTruncated\"\n [scrollContainer]=\"scrollContainer\"\n [cdkScrollContainer]=\"cdkScrollContainer\"\n>\n <div\n cellContent\n class=\"flex items-center justify-between w-full gap-2\"\n [class]=\"extraClass\"\n >\n <span #textElement class=\"truncate py-3 px-2\">\n {{ text }}\n </span>\n <gn-ui-button\n *ngIf=\"isTextTruncated\"\n type=\"outline\"\n extraClass=\"w-10 h-8 border rounded-lg mr-2\"\n (buttonClick)=\"popinRef.openOverlay()\"\n >\n <ng-icon name=\"iconoirExpand\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n </div>\n <div popinContent class=\"sm:w-64 xs:w-32 py-4 pl-6 pr-9\">\n <p>{{ text }}</p>\n </div>\n</gn-ui-cell-popin>\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: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CellPopinComponent, selector: "gn-ui-cell-popin", inputs: ["extraClass", "cdkScrollContainer", "scrollContainer", "activePopin"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }] }); }
|
|
28610
29058
|
}
|
|
28611
29059
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, decorators: [{
|
|
28612
29060
|
type: Component,
|
|
@@ -28616,12 +29064,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28616
29064
|
MatButtonModule,
|
|
28617
29065
|
OverlayModule,
|
|
28618
29066
|
ButtonComponent,
|
|
29067
|
+
CellPopinComponent,
|
|
28619
29068
|
NgIconComponent,
|
|
28620
|
-
], providers: [provideIcons({ iconoirExpand
|
|
28621
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }
|
|
29069
|
+
], providers: [provideIcons({ iconoirExpand })], template: "<gn-ui-cell-popin\n #popinRef\n [activePopin]=\"isTextTruncated\"\n [scrollContainer]=\"scrollContainer\"\n [cdkScrollContainer]=\"cdkScrollContainer\"\n>\n <div\n cellContent\n class=\"flex items-center justify-between w-full gap-2\"\n [class]=\"extraClass\"\n >\n <span #textElement class=\"truncate py-3 px-2\">\n {{ text }}\n </span>\n <gn-ui-button\n *ngIf=\"isTextTruncated\"\n type=\"outline\"\n extraClass=\"w-10 h-8 border rounded-lg mr-2\"\n (buttonClick)=\"popinRef.openOverlay()\"\n >\n <ng-icon name=\"iconoirExpand\" size=\"24\"> </ng-icon>\n </gn-ui-button>\n </div>\n <div popinContent class=\"sm:w-64 xs:w-32 py-4 pl-6 pr-9\">\n <p>{{ text }}</p>\n </div>\n</gn-ui-cell-popin>\n" }]
|
|
29070
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { text: [{
|
|
28622
29071
|
type: Input
|
|
28623
29072
|
}], extraClass: [{
|
|
28624
29073
|
type: Input
|
|
29074
|
+
}], scrollContainer: [{
|
|
29075
|
+
type: Input
|
|
29076
|
+
}], cdkScrollContainer: [{
|
|
29077
|
+
type: Input
|
|
28625
29078
|
}], textElement: [{
|
|
28626
29079
|
type: ViewChild,
|
|
28627
29080
|
args: ['textElement']
|
|
@@ -29232,6 +29685,10 @@ marker('record.metadata.quality.updateFrequency.success');
|
|
|
29232
29685
|
marker('record.metadata.quality.updateFrequency.failed');
|
|
29233
29686
|
marker('record.metadata.quality.organisation.success');
|
|
29234
29687
|
marker('record.metadata.quality.organisation.failed');
|
|
29688
|
+
marker('record.metadata.quality.capabilities.success');
|
|
29689
|
+
marker('record.metadata.quality.capabilities.failed');
|
|
29690
|
+
marker('record.metadata.quality.source.success');
|
|
29691
|
+
marker('record.metadata.quality.source.failed');
|
|
29235
29692
|
class MetadataQualityItemComponent {
|
|
29236
29693
|
get icon() {
|
|
29237
29694
|
return this.value ? 'matCheck' : 'matWarningAmber';
|
|
@@ -29255,6 +29712,28 @@ class MetadataQualityComponent {
|
|
|
29255
29712
|
constructor() {
|
|
29256
29713
|
this.smaller = false;
|
|
29257
29714
|
this.items = [];
|
|
29715
|
+
this.COMMON_CHECKS = {
|
|
29716
|
+
title: (metadata) => !!metadata?.title,
|
|
29717
|
+
description: (metadata) => !!metadata?.abstract,
|
|
29718
|
+
keywords: (metadata) => (metadata?.keywords?.length ?? 0) > 0,
|
|
29719
|
+
legalConstraints: (metadata) => (metadata?.legalConstraints?.length ?? 0) > 0,
|
|
29720
|
+
contact: (metadata) => !!metadata?.contacts?.[0]?.email,
|
|
29721
|
+
};
|
|
29722
|
+
this.SPECIFIC_CHECKS = {
|
|
29723
|
+
dataset: {
|
|
29724
|
+
updateFrequency: (metadata) => !!metadata?.updateFrequency,
|
|
29725
|
+
topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
|
|
29726
|
+
organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
|
|
29727
|
+
},
|
|
29728
|
+
service: {
|
|
29729
|
+
capabilities: (metadata) => (metadata?.onlineResources ?? []).some((resource) => this.hasGetCapabilities(resource?.url?.href ?? '')),
|
|
29730
|
+
},
|
|
29731
|
+
reuse: {
|
|
29732
|
+
topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
|
|
29733
|
+
organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
|
|
29734
|
+
source: (metadata) => !!metadata?.extras?.sourcesIdentifiers,
|
|
29735
|
+
},
|
|
29736
|
+
};
|
|
29258
29737
|
}
|
|
29259
29738
|
get qualityScore() {
|
|
29260
29739
|
const qualityScore = this.metadata?.extras?.qualityScore;
|
|
@@ -29270,17 +29749,20 @@ class MetadataQualityComponent {
|
|
|
29270
29749
|
this.items.push({ name, value });
|
|
29271
29750
|
}
|
|
29272
29751
|
}
|
|
29752
|
+
hasGetCapabilities(url) {
|
|
29753
|
+
return url.toLowerCase().includes('capabilities');
|
|
29754
|
+
}
|
|
29273
29755
|
initialize() {
|
|
29274
|
-
const contact = this.metadata?.contacts?.[0];
|
|
29275
29756
|
this.items = [];
|
|
29276
|
-
this.
|
|
29277
|
-
|
|
29278
|
-
|
|
29279
|
-
|
|
29280
|
-
|
|
29281
|
-
|
|
29282
|
-
|
|
29283
|
-
|
|
29757
|
+
Object.entries(this.COMMON_CHECKS).forEach(([name, check]) => {
|
|
29758
|
+
this.add(name, check(this.metadata));
|
|
29759
|
+
});
|
|
29760
|
+
const datasetType = this.metadata?.kind;
|
|
29761
|
+
if (datasetType && this.SPECIFIC_CHECKS[datasetType]) {
|
|
29762
|
+
Object.entries(this.SPECIFIC_CHECKS[datasetType]).forEach(([name, check]) => {
|
|
29763
|
+
this.add(name, check(this.metadata));
|
|
29764
|
+
});
|
|
29765
|
+
}
|
|
29284
29766
|
}
|
|
29285
29767
|
ngOnChanges(changes) {
|
|
29286
29768
|
if (changes['metadata'] || changes['metadataQualityDisplay']) {
|
|
@@ -29324,6 +29806,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29324
29806
|
type: Input
|
|
29325
29807
|
}] } });
|
|
29326
29808
|
|
|
29809
|
+
class InternalLinkCardContactComponent {
|
|
29810
|
+
constructor() {
|
|
29811
|
+
this.size = 'M';
|
|
29812
|
+
}
|
|
29813
|
+
get organization() {
|
|
29814
|
+
return this.record.ownerOrganization;
|
|
29815
|
+
}
|
|
29816
|
+
get contacts() {
|
|
29817
|
+
return ((this.record.kind === 'dataset'
|
|
29818
|
+
? this.record.contactsForResource
|
|
29819
|
+
: this.record.contacts) || []);
|
|
29820
|
+
}
|
|
29821
|
+
openExternalUrl(event, url) {
|
|
29822
|
+
event.stopPropagation();
|
|
29823
|
+
window.open(url, '_blank');
|
|
29824
|
+
}
|
|
29825
|
+
openMailto(event, email) {
|
|
29826
|
+
event.stopPropagation();
|
|
29827
|
+
window.open(`mailto:${email}`, '_blank');
|
|
29828
|
+
}
|
|
29829
|
+
copyToClipboard(event, text) {
|
|
29830
|
+
event.stopPropagation();
|
|
29831
|
+
navigator.clipboard.writeText(text);
|
|
29832
|
+
}
|
|
29833
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29834
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: InternalLinkCardContactComponent, isStandalone: true, selector: "gn-ui-internal-link-card-contact", inputs: { record: "record", size: "size" }, providers: [
|
|
29835
|
+
provideIcons({
|
|
29836
|
+
iconoirInternet,
|
|
29837
|
+
matEmailOutline,
|
|
29838
|
+
matPhoneOutline,
|
|
29839
|
+
matLocationOnOutline,
|
|
29840
|
+
}),
|
|
29841
|
+
], ngImport: i0, template: "<div\n data-cy=\"recordOrg\"\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 class=\"w-[45px] h-[45px] rounded-lg overflow-hidden shrink-0 mr-3\">\n <gn-ui-thumbnail\n [thumbnailUrl]=\"record.ownerOrganization?.logoUrl?.toString() || ''\"\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", dependencies: [{ 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: 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"] }] }); }
|
|
29842
|
+
}
|
|
29843
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardContactComponent, decorators: [{
|
|
29844
|
+
type: Component,
|
|
29845
|
+
args: [{ selector: 'gn-ui-internal-link-card-contact', standalone: true, imports: [NgIf, ThumbnailComponent, NgIconComponent, TranslateModule], providers: [
|
|
29846
|
+
provideIcons({
|
|
29847
|
+
iconoirInternet,
|
|
29848
|
+
matEmailOutline,
|
|
29849
|
+
matPhoneOutline,
|
|
29850
|
+
matLocationOnOutline,
|
|
29851
|
+
}),
|
|
29852
|
+
], template: "<div\n data-cy=\"recordOrg\"\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 class=\"w-[45px] h-[45px] rounded-lg overflow-hidden shrink-0 mr-3\">\n <gn-ui-thumbnail\n [thumbnailUrl]=\"record.ownerOrganization?.logoUrl?.toString() || ''\"\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" }]
|
|
29853
|
+
}], propDecorators: { record: [{
|
|
29854
|
+
type: Input
|
|
29855
|
+
}], size: [{
|
|
29856
|
+
type: Input
|
|
29857
|
+
}] } });
|
|
29858
|
+
|
|
29327
29859
|
class InternalLinkCardComponent {
|
|
29328
29860
|
set size(value) {
|
|
29329
29861
|
this._size = value;
|
|
@@ -29365,28 +29897,19 @@ class InternalLinkCardComponent {
|
|
|
29365
29897
|
this.abstract = removeWhitespace(stripHtml(this.record?.abstract));
|
|
29366
29898
|
this.subscription.add(fromEvent(this.elementRef.nativeElement, 'click').subscribe(() => this.mdSelect.emit(this.record)));
|
|
29367
29899
|
}
|
|
29368
|
-
get organization() {
|
|
29369
|
-
return this.record.ownerOrganization;
|
|
29370
|
-
}
|
|
29371
|
-
get contacts() {
|
|
29372
|
-
return ((this.record.kind === 'dataset'
|
|
29373
|
-
? this.record.contactsForResource
|
|
29374
|
-
: this.record.contacts) || []);
|
|
29375
|
-
}
|
|
29376
29900
|
getTitleClass() {
|
|
29377
29901
|
return this.titleClassMap[this._size];
|
|
29378
29902
|
}
|
|
29379
|
-
|
|
29380
|
-
|
|
29381
|
-
|
|
29382
|
-
|
|
29383
|
-
|
|
29384
|
-
|
|
29385
|
-
window.open(`mailto:${email}`, '_blank');
|
|
29903
|
+
getAbstractClass() {
|
|
29904
|
+
const marginClass = ['S', 'XS'].includes(this.size) ? 'ml-2' : '';
|
|
29905
|
+
const clampClass = this.size === 'L' && !this.record.ownerOrganization?.name
|
|
29906
|
+
? 'line-clamp-6'
|
|
29907
|
+
: 'line-clamp-2';
|
|
29908
|
+
return `${clampClass} ${marginClass}`.trim();
|
|
29386
29909
|
}
|
|
29387
|
-
|
|
29388
|
-
|
|
29389
|
-
|
|
29910
|
+
displayAbstract() {
|
|
29911
|
+
return (this.size === 'L' ||
|
|
29912
|
+
(['M', 'S'].includes(this.size) && !this.record.ownerOrganization?.name));
|
|
29390
29913
|
}
|
|
29391
29914
|
get shouldShowThumbnail() {
|
|
29392
29915
|
return this.size === 'L' || this.size === 'M';
|
|
@@ -29396,40 +29919,34 @@ class InternalLinkCardComponent {
|
|
|
29396
29919
|
provideIcons({
|
|
29397
29920
|
iconoirInternet,
|
|
29398
29921
|
matLocationSearchingOutline,
|
|
29399
|
-
matEmailOutline,
|
|
29400
|
-
matPhoneOutline,
|
|
29401
|
-
matLocationOnOutline,
|
|
29402
29922
|
}),
|
|
29403
29923
|
provideNgIconsConfig({
|
|
29404
29924
|
size: '1.2em',
|
|
29405
29925
|
}),
|
|
29406
|
-
], 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=\"
|
|
29926
|
+
], 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=\"displayAbstract()\"\n class=\"mr-6 text-xs text-gray-900 overflow-hidden\"\n [ngClass]=\"getAbstractClass()\"\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 <gn-ui-internal-link-card-contact\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n [record]=\"record\"\n [size]=\"size\"\n ></gn-ui-internal-link-card-contact>\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: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { 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"] }, { kind: "component", type: InternalLinkCardContactComponent, selector: "gn-ui-internal-link-card-contact", inputs: ["record", "size"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }] }); }
|
|
29407
29927
|
}
|
|
29408
29928
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, decorators: [{
|
|
29409
29929
|
type: Component,
|
|
29410
29930
|
args: [{ selector: 'gn-ui-internal-link-card', standalone: true, imports: [
|
|
29411
29931
|
NgClass,
|
|
29412
29932
|
NgIf,
|
|
29413
|
-
ThumbnailComponent,
|
|
29414
29933
|
MetadataQualityComponent,
|
|
29415
29934
|
NgTemplateOutlet,
|
|
29416
|
-
NgIconComponent,
|
|
29417
29935
|
TranslateModule,
|
|
29418
29936
|
GeoDataBadgeComponent,
|
|
29419
29937
|
KindBadgeComponent,
|
|
29420
29938
|
MarkdownParserComponent,
|
|
29939
|
+
InternalLinkCardContactComponent,
|
|
29940
|
+
ThumbnailComponent,
|
|
29421
29941
|
], providers: [
|
|
29422
29942
|
provideIcons({
|
|
29423
29943
|
iconoirInternet,
|
|
29424
29944
|
matLocationSearchingOutline,
|
|
29425
|
-
matEmailOutline,
|
|
29426
|
-
matPhoneOutline,
|
|
29427
|
-
matLocationOnOutline,
|
|
29428
29945
|
}),
|
|
29429
29946
|
provideNgIconsConfig({
|
|
29430
29947
|
size: '1.2em',
|
|
29431
29948
|
}),
|
|
29432
|
-
], 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=\"
|
|
29949
|
+
], 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=\"displayAbstract()\"\n class=\"mr-6 text-xs text-gray-900 overflow-hidden\"\n [ngClass]=\"getAbstractClass()\"\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 <gn-ui-internal-link-card-contact\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n [record]=\"record\"\n [size]=\"size\"\n ></gn-ui-internal-link-card-contact>\n </div>\n </div>\n </div>\n</a>\n" }]
|
|
29433
29950
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { record: [{
|
|
29434
29951
|
type: Input
|
|
29435
29952
|
}], linkTarget: [{
|
|
@@ -31442,7 +31959,8 @@ class UiElementsModule {
|
|
|
31442
31959
|
InternalLinkCardComponent,
|
|
31443
31960
|
ServiceCapabilitiesComponent,
|
|
31444
31961
|
KindBadgeComponent,
|
|
31445
|
-
GeoDataBadgeComponent
|
|
31962
|
+
GeoDataBadgeComponent,
|
|
31963
|
+
ScrollingModule], exports: [ThumbnailComponent,
|
|
31446
31964
|
AvatarComponent,
|
|
31447
31965
|
UserPreviewComponent,
|
|
31448
31966
|
MarkdownParserComponent,
|
|
@@ -31475,7 +31993,8 @@ class UiElementsModule {
|
|
|
31475
31993
|
InternalLinkCardComponent,
|
|
31476
31994
|
ServiceCapabilitiesComponent,
|
|
31477
31995
|
KindBadgeComponent,
|
|
31478
|
-
GeoDataBadgeComponent
|
|
31996
|
+
GeoDataBadgeComponent,
|
|
31997
|
+
ScrollingModule] }); }
|
|
31479
31998
|
}
|
|
31480
31999
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
31481
32000
|
type: NgModule,
|
|
@@ -31504,6 +32023,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31504
32023
|
ServiceCapabilitiesComponent,
|
|
31505
32024
|
KindBadgeComponent,
|
|
31506
32025
|
GeoDataBadgeComponent,
|
|
32026
|
+
ScrollingModule,
|
|
31507
32027
|
],
|
|
31508
32028
|
providers: [
|
|
31509
32029
|
provideNgIconsConfig({
|
|
@@ -31593,48 +32113,130 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31593
32113
|
type: Output
|
|
31594
32114
|
}] } });
|
|
31595
32115
|
|
|
32116
|
+
marker('feature.catalog.attribute.type');
|
|
32117
|
+
marker('feature.catalog.attribute.name');
|
|
32118
|
+
marker('feature.catalog.attribute.code');
|
|
32119
|
+
marker('feature.catalog.attribute.definition');
|
|
32120
|
+
marker('feature.catalog.attribute.values');
|
|
31596
32121
|
class FeatureCatalogListComponent {
|
|
31597
32122
|
constructor() {
|
|
31598
|
-
this.
|
|
31599
|
-
{
|
|
31600
|
-
|
|
31601
|
-
|
|
31602
|
-
|
|
31603
|
-
},
|
|
31604
|
-
{
|
|
31605
|
-
key: 'name',
|
|
31606
|
-
label: 'feature.catalog.attribute.name',
|
|
31607
|
-
width: '32%',
|
|
31608
|
-
},
|
|
31609
|
-
{
|
|
31610
|
-
key: 'code',
|
|
31611
|
-
label: 'feature.catalog.attribute.code',
|
|
31612
|
-
width: '24%',
|
|
31613
|
-
},
|
|
31614
|
-
{
|
|
31615
|
-
key: 'title',
|
|
31616
|
-
label: 'feature.catalog.attribute.description',
|
|
31617
|
-
width: '25%',
|
|
31618
|
-
},
|
|
32123
|
+
this.COLUMNS_DEFAULT = [
|
|
32124
|
+
{ key: 'type', width: '17%' },
|
|
32125
|
+
{ key: 'name', width: '32%' },
|
|
32126
|
+
{ key: 'code', width: '17%' },
|
|
32127
|
+
{ key: 'definition', width: 'minmax(0px, 1fr)' },
|
|
31619
32128
|
];
|
|
31620
|
-
this.
|
|
32129
|
+
this.COLUMN_VALUES = {
|
|
32130
|
+
key: 'values',
|
|
32131
|
+
width: '73px',
|
|
32132
|
+
class: 'text-center',
|
|
32133
|
+
};
|
|
31621
32134
|
}
|
|
31622
|
-
|
|
31623
|
-
|
|
32135
|
+
getColumnsDefinition(attrs) {
|
|
32136
|
+
const hasValues = attrs.some((a) => a.values?.length > 0);
|
|
32137
|
+
return [...this.COLUMNS_DEFAULT, ...(hasValues ? [this.COLUMN_VALUES] : [])];
|
|
32138
|
+
}
|
|
32139
|
+
getGridTemplateColumns(attributes) {
|
|
32140
|
+
return this.getColumnsDefinition(attributes)
|
|
32141
|
+
.map((col) => col.width)
|
|
32142
|
+
.join(' ');
|
|
32143
|
+
}
|
|
32144
|
+
trackByColumn(_i, col) {
|
|
32145
|
+
return col.key;
|
|
31624
32146
|
}
|
|
31625
32147
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCatalogListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31626
|
-
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
|
|
32148
|
+
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" }, providers: [provideIcons({ iconoirList })], viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }, { propertyName: "scrollable", first: true, predicate: CdkScrollable, descendants: true, static: true }, { propertyName: "panelComponent", first: true, predicate: ["expanel"], descendants: true, read: ExpandablePanelComponent, static: true }], ngImport: i0, template: "<div\n cdkScrollable\n class=\"h-[562px] relative overflow-y-auto overflow-hidden\"\n data-cy=\"feat-catalog-scrollable\"\n>\n <div #scrollContainer class=\"flex flex-col gap-2 py-5 px-5\">\n <div\n *ngFor=\"let featureType of filteredFeatureCatalog?.featureTypes\"\n class=\"rounded shadow bg-white\"\n >\n <gn-ui-expandable-panel\n #expanel\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 *ngIf=\"expanel && !expanel.collapsed\"\n class=\"grid gap-0\"\n [style.grid-template-columns]=\"\n getGridTemplateColumns(featureType.attributes)\n \"\n data-cy=\"feature-type-content\"\n >\n <div\n class=\"py-1 px-2 text-sm font-bold text-left border-t break-all\"\n [class.border-l]=\"i > 0\"\n [class.border-gray-300]=\"i > 0\"\n [ngClass]=\"col.class || ''\"\n *ngFor=\"\n let col of getColumnsDefinition(featureType.attributes);\n trackBy: trackByColumn;\n let i = index\n \"\n data-test=\"column-label\"\n >\n {{ 'feature.catalog.attribute.' + col.key | translate }}\n </div>\n <ng-container *ngIf=\"expanel && !expanel.collapsed\">\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=\"\n let col of getColumnsDefinition(featureType.attributes);\n trackBy: trackByColumn;\n let i = index\n \"\n data-test=\"cell-content\"\n >\n <ng-container\n *ngIf=\"col.key === 'values'; then tplValues; else defaultTpl\"\n ></ng-container>\n\n <ng-template #defaultTpl>\n <gn-ui-truncated-text\n [scrollContainer]=\"scrollContainer\"\n [cdkScrollContainer]=\"scrollable\"\n [text]=\"row[col.key]\"\n ></gn-ui-truncated-text>\n </ng-template>\n\n <ng-template #tplValues>\n <gn-ui-cell-popin\n #popinRef\n [scrollContainer]=\"scrollContainer\"\n [cdkScrollContainer]=\"scrollable\"\n *ngIf=\"row.values?.length > 0\"\n >\n <div cellContent data-cy=\"values-cell-popin-trigger\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"bg-transparent border-none\"\n (buttonClick)=\"popinRef.openOverlay()\"\n >\n <ng-icon name=\"iconoirList\" size=\"24\"></ng-icon>\n </gn-ui-button>\n </div>\n <div\n popinContent\n class=\"max-h-60 overflow-y-auto min-w-64 py-4 px-6\"\n style=\"scrollbar-width: thin\"\n >\n <ul class=\"list-disc list-inside mr-4\">\n <li *ngFor=\"let v of row.values\">\n {{ v.label || v.code }}\n </li>\n </ul>\n </div>\n </gn-ui-cell-popin>\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </gn-ui-expandable-panel>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: CellPopinComponent, selector: "gn-ui-cell-popin", inputs: ["extraClass", "cdkScrollContainer", "scrollContainer", "activePopin"] }, { 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: "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", "scrollContainer", "cdkScrollContainer"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i3$2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }] }); }
|
|
31627
32149
|
}
|
|
31628
32150
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCatalogListComponent, decorators: [{
|
|
31629
32151
|
type: Component,
|
|
31630
32152
|
args: [{ selector: 'gn-ui-feature-catalog-list', standalone: true, imports: [
|
|
32153
|
+
ButtonComponent,
|
|
32154
|
+
CellPopinComponent,
|
|
31631
32155
|
CommonModule,
|
|
31632
32156
|
TranslateModule,
|
|
31633
32157
|
ExpandablePanelComponent,
|
|
31634
32158
|
TruncatedTextComponent,
|
|
31635
|
-
|
|
32159
|
+
NgIconComponent,
|
|
32160
|
+
ScrollingModule,
|
|
32161
|
+
], providers: [provideIcons({ iconoirList })], template: "<div\n cdkScrollable\n class=\"h-[562px] relative overflow-y-auto overflow-hidden\"\n data-cy=\"feat-catalog-scrollable\"\n>\n <div #scrollContainer class=\"flex flex-col gap-2 py-5 px-5\">\n <div\n *ngFor=\"let featureType of filteredFeatureCatalog?.featureTypes\"\n class=\"rounded shadow bg-white\"\n >\n <gn-ui-expandable-panel\n #expanel\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 *ngIf=\"expanel && !expanel.collapsed\"\n class=\"grid gap-0\"\n [style.grid-template-columns]=\"\n getGridTemplateColumns(featureType.attributes)\n \"\n data-cy=\"feature-type-content\"\n >\n <div\n class=\"py-1 px-2 text-sm font-bold text-left border-t break-all\"\n [class.border-l]=\"i > 0\"\n [class.border-gray-300]=\"i > 0\"\n [ngClass]=\"col.class || ''\"\n *ngFor=\"\n let col of getColumnsDefinition(featureType.attributes);\n trackBy: trackByColumn;\n let i = index\n \"\n data-test=\"column-label\"\n >\n {{ 'feature.catalog.attribute.' + col.key | translate }}\n </div>\n <ng-container *ngIf=\"expanel && !expanel.collapsed\">\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=\"\n let col of getColumnsDefinition(featureType.attributes);\n trackBy: trackByColumn;\n let i = index\n \"\n data-test=\"cell-content\"\n >\n <ng-container\n *ngIf=\"col.key === 'values'; then tplValues; else defaultTpl\"\n ></ng-container>\n\n <ng-template #defaultTpl>\n <gn-ui-truncated-text\n [scrollContainer]=\"scrollContainer\"\n [cdkScrollContainer]=\"scrollable\"\n [text]=\"row[col.key]\"\n ></gn-ui-truncated-text>\n </ng-template>\n\n <ng-template #tplValues>\n <gn-ui-cell-popin\n #popinRef\n [scrollContainer]=\"scrollContainer\"\n [cdkScrollContainer]=\"scrollable\"\n *ngIf=\"row.values?.length > 0\"\n >\n <div cellContent data-cy=\"values-cell-popin-trigger\">\n <gn-ui-button\n type=\"light\"\n extraClass=\"bg-transparent border-none\"\n (buttonClick)=\"popinRef.openOverlay()\"\n >\n <ng-icon name=\"iconoirList\" size=\"24\"></ng-icon>\n </gn-ui-button>\n </div>\n <div\n popinContent\n class=\"max-h-60 overflow-y-auto min-w-64 py-4 px-6\"\n style=\"scrollbar-width: thin\"\n >\n <ul class=\"list-disc list-inside mr-4\">\n <li *ngFor=\"let v of row.values\">\n {{ v.label || v.code }}\n </li>\n </ul>\n </div>\n </gn-ui-cell-popin>\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </gn-ui-expandable-panel>\n </div>\n </div>\n</div>\n" }]
|
|
31636
32162
|
}], propDecorators: { filteredFeatureCatalog: [{
|
|
31637
32163
|
type: Input
|
|
32164
|
+
}], scrollContainer: [{
|
|
32165
|
+
type: ViewChild,
|
|
32166
|
+
args: ['scrollContainer']
|
|
32167
|
+
}], scrollable: [{
|
|
32168
|
+
type: ViewChild,
|
|
32169
|
+
args: [CdkScrollable, { static: true }]
|
|
32170
|
+
}], panelComponent: [{
|
|
32171
|
+
type: ViewChild,
|
|
32172
|
+
args: ['expanel', { read: ExpandablePanelComponent, static: true }]
|
|
32173
|
+
}] } });
|
|
32174
|
+
|
|
32175
|
+
class ActionMenuComponent {
|
|
32176
|
+
constructor(dialog, cdr) {
|
|
32177
|
+
this.dialog = dialog;
|
|
32178
|
+
this.cdr = cdr;
|
|
32179
|
+
this.canDuplicate = true;
|
|
32180
|
+
this.canDelete = true;
|
|
32181
|
+
this.duplicate = new EventEmitter();
|
|
32182
|
+
this.delete = new EventEmitter();
|
|
32183
|
+
this.closeActionMenu = new EventEmitter();
|
|
32184
|
+
this.rollback = new EventEmitter();
|
|
32185
|
+
this.switch = new EventEmitter();
|
|
32186
|
+
this.sectionDisplayed = 'mainMenu';
|
|
32187
|
+
}
|
|
32188
|
+
displayMainMenu() {
|
|
32189
|
+
this.sectionDisplayed = 'mainMenu';
|
|
32190
|
+
this.cdr.markForCheck();
|
|
32191
|
+
}
|
|
32192
|
+
displayDeleteMenu() {
|
|
32193
|
+
switch (this.page) {
|
|
32194
|
+
case 'draft':
|
|
32195
|
+
this.sectionDisplayed = 'rollbackMenu';
|
|
32196
|
+
break;
|
|
32197
|
+
case 'record':
|
|
32198
|
+
this.delete.emit();
|
|
32199
|
+
break;
|
|
32200
|
+
case 'main':
|
|
32201
|
+
default:
|
|
32202
|
+
this.sectionDisplayed = 'deleteMenu';
|
|
32203
|
+
}
|
|
32204
|
+
this.cdr.markForCheck();
|
|
32205
|
+
}
|
|
32206
|
+
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 }); }
|
|
32207
|
+
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", isDuplicating: "isDuplicating", canDelete: "canDelete", page: "page" }, outputs: { duplicate: "duplicate", delete: "delete", closeActionMenu: "closeActionMenu", rollback: "rollback", switch: "switch" }, 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=\"page === 'main'\"\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=\"isDuplicating; else notDuplicating\" translate\n >record.action.duplicating</span\n >\n <ng-template #notDuplicating>\n <span translate>record.action.duplicate</span>\n </ng-template>\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"page === 'record'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"switch.emit()\"\n data-test=\"record-menu-switch-button\"\n ><span translate>record.action.switchLang</span></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=\"page !== 'draft'\" translate>record.action.delete</span>\n <span *ngIf=\"page === 'draft'\" 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"] }] }); }
|
|
32208
|
+
}
|
|
32209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
32210
|
+
type: Component,
|
|
32211
|
+
args: [{ selector: 'gn-ui-action-menu', standalone: true, imports: [
|
|
32212
|
+
CommonModule,
|
|
32213
|
+
ButtonComponent,
|
|
32214
|
+
MatMenuModule,
|
|
32215
|
+
MatDialogModule,
|
|
32216
|
+
ConfirmationDialogComponent,
|
|
32217
|
+
TranslateModule,
|
|
32218
|
+
], 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=\"page === 'main'\"\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=\"isDuplicating; else notDuplicating\" translate\n >record.action.duplicating</span\n >\n <ng-template #notDuplicating>\n <span translate>record.action.duplicate</span>\n </ng-template>\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"page === 'record'\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"switch.emit()\"\n data-test=\"record-menu-switch-button\"\n ><span translate>record.action.switchLang</span></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=\"page !== 'draft'\" translate>record.action.delete</span>\n <span *ngIf=\"page === 'draft'\" 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" }]
|
|
32219
|
+
}], ctorParameters: () => [{ type: i1$a.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
|
|
32220
|
+
type: Input
|
|
32221
|
+
}], isDuplicating: [{
|
|
32222
|
+
type: Input
|
|
32223
|
+
}], canDelete: [{
|
|
32224
|
+
type: Input
|
|
32225
|
+
}], page: [{
|
|
32226
|
+
type: Input
|
|
32227
|
+
}], duplicate: [{
|
|
32228
|
+
type: Output
|
|
32229
|
+
}], delete: [{
|
|
32230
|
+
type: Output
|
|
32231
|
+
}], closeActionMenu: [{
|
|
32232
|
+
type: Output
|
|
32233
|
+
}], rollback: [{
|
|
32234
|
+
type: Output
|
|
32235
|
+
}], switch: [{
|
|
32236
|
+
type: Output
|
|
32237
|
+
}], trigger: [{
|
|
32238
|
+
type: ViewChild,
|
|
32239
|
+
args: [MatMenuTrigger]
|
|
31638
32240
|
}] } });
|
|
31639
32241
|
|
|
31640
32242
|
class UiSearchModule {
|
|
@@ -31662,7 +32264,8 @@ class UiSearchModule {
|
|
|
31662
32264
|
MatCheckboxModule,
|
|
31663
32265
|
RouterLink,
|
|
31664
32266
|
InteractiveTableComponent, i2$2.NgIconsModule, KindBadgeComponent,
|
|
31665
|
-
MetadataQualityComponent
|
|
32267
|
+
MetadataQualityComponent,
|
|
32268
|
+
ActionMenuComponent], exports: [RecordPreviewListComponent,
|
|
31666
32269
|
RecordPreviewCardComponent,
|
|
31667
32270
|
RecordPreviewTextComponent,
|
|
31668
32271
|
RecordPreviewTitleComponent,
|
|
@@ -31673,7 +32276,8 @@ class UiSearchModule {
|
|
|
31673
32276
|
ResultsHitsNumberComponent,
|
|
31674
32277
|
ResultsHitsSearchKindComponent,
|
|
31675
32278
|
RecordPreviewFeedComponent,
|
|
31676
|
-
RecordPreviewRowComponent
|
|
32279
|
+
RecordPreviewRowComponent,
|
|
32280
|
+
ActionMenuComponent] }); }
|
|
31677
32281
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiSearchModule, providers: [
|
|
31678
32282
|
provideNgIconsConfig({
|
|
31679
32283
|
size: '1.5em',
|
|
@@ -31700,7 +32304,8 @@ class UiSearchModule {
|
|
|
31700
32304
|
matHomeWorkOutline,
|
|
31701
32305
|
}),
|
|
31702
32306
|
KindBadgeComponent,
|
|
31703
|
-
MetadataQualityComponent,
|
|
32307
|
+
MetadataQualityComponent,
|
|
32308
|
+
ActionMenuComponent, FacetsModule$1] }); }
|
|
31704
32309
|
}
|
|
31705
32310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiSearchModule, decorators: [{
|
|
31706
32311
|
type: NgModule,
|
|
@@ -31743,6 +32348,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31743
32348
|
}),
|
|
31744
32349
|
KindBadgeComponent,
|
|
31745
32350
|
MetadataQualityComponent,
|
|
32351
|
+
ActionMenuComponent,
|
|
31746
32352
|
],
|
|
31747
32353
|
exports: [
|
|
31748
32354
|
RecordPreviewListComponent,
|
|
@@ -31757,6 +32363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31757
32363
|
ResultsHitsSearchKindComponent,
|
|
31758
32364
|
RecordPreviewFeedComponent,
|
|
31759
32365
|
RecordPreviewRowComponent,
|
|
32366
|
+
ActionMenuComponent,
|
|
31760
32367
|
],
|
|
31761
32368
|
providers: [
|
|
31762
32369
|
provideNgIconsConfig({
|
|
@@ -31767,76 +32374,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31767
32374
|
}]
|
|
31768
32375
|
}] });
|
|
31769
32376
|
|
|
31770
|
-
class ActionMenuComponent {
|
|
31771
|
-
constructor(dialog, cdr) {
|
|
31772
|
-
this.dialog = dialog;
|
|
31773
|
-
this.cdr = cdr;
|
|
31774
|
-
this.duplicate = new EventEmitter();
|
|
31775
|
-
this.delete = new EventEmitter();
|
|
31776
|
-
this.closeActionMenu = new EventEmitter();
|
|
31777
|
-
this.rollback = new EventEmitter();
|
|
31778
|
-
this.sectionDisplayed = 'mainMenu';
|
|
31779
|
-
}
|
|
31780
|
-
openMenu() {
|
|
31781
|
-
this.trigger.openMenu();
|
|
31782
|
-
}
|
|
31783
|
-
displayMainMenu() {
|
|
31784
|
-
this.sectionDisplayed = 'mainMenu';
|
|
31785
|
-
this.cdr.markForCheck();
|
|
31786
|
-
}
|
|
31787
|
-
displayDeleteMenu() {
|
|
31788
|
-
if (this.isDraftPage) {
|
|
31789
|
-
this.sectionDisplayed = 'rollbackMenu';
|
|
31790
|
-
}
|
|
31791
|
-
else {
|
|
31792
|
-
this.sectionDisplayed = 'deleteMenu';
|
|
31793
|
-
}
|
|
31794
|
-
this.cdr.markForCheck();
|
|
31795
|
-
}
|
|
31796
|
-
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 }); }
|
|
31797
|
-
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"] }] }); }
|
|
31798
|
-
}
|
|
31799
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
31800
|
-
type: Component,
|
|
31801
|
-
args: [{ selector: 'gn-ui-action-menu', standalone: true, imports: [
|
|
31802
|
-
CommonModule,
|
|
31803
|
-
ButtonComponent,
|
|
31804
|
-
MatMenuModule,
|
|
31805
|
-
MatDialogModule,
|
|
31806
|
-
ConfirmationDialogComponent,
|
|
31807
|
-
TranslateModule,
|
|
31808
|
-
], 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" }]
|
|
31809
|
-
}], ctorParameters: () => [{ type: i1$a.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
|
|
31810
|
-
type: Input
|
|
31811
|
-
}], canDelete: [{
|
|
31812
|
-
type: Input
|
|
31813
|
-
}], isDraftPage: [{
|
|
31814
|
-
type: Input
|
|
31815
|
-
}], duplicate: [{
|
|
31816
|
-
type: Output
|
|
31817
|
-
}], delete: [{
|
|
31818
|
-
type: Output
|
|
31819
|
-
}], closeActionMenu: [{
|
|
31820
|
-
type: Output
|
|
31821
|
-
}], rollback: [{
|
|
31822
|
-
type: Output
|
|
31823
|
-
}], trigger: [{
|
|
31824
|
-
type: ViewChild,
|
|
31825
|
-
args: [MatMenuTrigger]
|
|
31826
|
-
}] } });
|
|
31827
|
-
|
|
31828
32377
|
class ResultsTableComponent {
|
|
31829
|
-
constructor(overlay, viewContainerRef, cdr, dateService) {
|
|
32378
|
+
constructor(overlay, viewContainerRef, cdr, dateService, translateService) {
|
|
31830
32379
|
this.overlay = overlay;
|
|
31831
32380
|
this.viewContainerRef = viewContainerRef;
|
|
31832
32381
|
this.cdr = cdr;
|
|
31833
32382
|
this.dateService = dateService;
|
|
32383
|
+
this.translateService = translateService;
|
|
31834
32384
|
this.records = [];
|
|
31835
32385
|
this.selectedRecordsIdentifiers = [];
|
|
31836
32386
|
this.sortOrder = null;
|
|
31837
32387
|
this.hasDraft = () => false;
|
|
31838
32388
|
this.canDuplicate = () => true;
|
|
31839
|
-
this.canDelete = () => true;
|
|
32389
|
+
this.canDelete = () => of(true);
|
|
32390
|
+
this.canEdit = () => of(true);
|
|
31840
32391
|
this.isDraftPage = false;
|
|
31841
32392
|
this.isDuplicating = false;
|
|
31842
32393
|
// emits the column (field) as well as the order
|
|
@@ -31913,9 +32464,13 @@ class ResultsTableComponent {
|
|
|
31913
32464
|
return getBadgeColor(format);
|
|
31914
32465
|
}
|
|
31915
32466
|
handleRecordClick(item) {
|
|
31916
|
-
|
|
31917
|
-
|
|
31918
|
-
|
|
32467
|
+
this.canEdit(item)
|
|
32468
|
+
.pipe(take$1(1))
|
|
32469
|
+
.subscribe((canEdit) => {
|
|
32470
|
+
if (canEdit) {
|
|
32471
|
+
this.recordClick.emit(item);
|
|
32472
|
+
}
|
|
32473
|
+
});
|
|
31919
32474
|
}
|
|
31920
32475
|
handleDuplicate(item) {
|
|
31921
32476
|
this.duplicateRecord.emit(item);
|
|
@@ -31951,8 +32506,18 @@ class ResultsTableComponent {
|
|
|
31951
32506
|
handleRecordSelectedChange(selected, record) {
|
|
31952
32507
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
31953
32508
|
}
|
|
31954
|
-
|
|
31955
|
-
|
|
32509
|
+
isMultilingual(record) {
|
|
32510
|
+
return record.otherLanguages.length > 0;
|
|
32511
|
+
}
|
|
32512
|
+
getTxtHoverMultilingual(record) {
|
|
32513
|
+
return this.translateService.instant('dashboard.records.isMultilingual', {
|
|
32514
|
+
languages: [...[record.defaultLanguage], ...record.otherLanguages].join(', '),
|
|
32515
|
+
});
|
|
32516
|
+
}
|
|
32517
|
+
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 }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32518
|
+
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", canEdit: "canEdit", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", rollbackDraft: "rollbackDraft", recordsSelectedChange: "recordsSelectedChange" }, providers: [
|
|
32519
|
+
provideIcons({ iconoirUser, iconoirLock, iconoirTranslate, matMoreVert }),
|
|
32520
|
+
], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [canEditItem]=\"canEdit\"\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=\"(canEdit(item) | async) === false; else selectCheckbox\"\n ></ng-icon>\n <ng-template #selectCheckbox>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\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 <div class=\"flex justify-end items-center gap-4 w-full\">\n <!-- IS MULTILINGUAL -->\n <ng-icon\n *ngIf=\"isMultilingual(item)\"\n data-cy=\"multilingual-indicator\"\n name=\"iconoirTranslate\"\n [attr.title]=\"getTxtHoverMultilingual(item)\"\n ></ng-icon>\n <!-- MORE ACTIONS MENU BUTTON -->\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n >\n <ng-icon name=\"matMoreVert\"></ng-icon>\n </gn-ui-button>\n </div>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [isDuplicating]=\"isDuplicating\"\n [canDelete]=\"canDelete(item) | async\"\n [page]=\"isDraftPage ? 'draft' : 'main'\"\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: [":host{--gn-ui-button-height: 40px;--gn-ui-button-width: 40px}\n"], 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: "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", "canEditItem", "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", "isDuplicating", "canDelete", "page"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback", "switch"] }, { 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"] }] }); }
|
|
31956
32521
|
}
|
|
31957
32522
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
31958
32523
|
type: Component,
|
|
@@ -31966,8 +32531,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31966
32531
|
ActionMenuComponent,
|
|
31967
32532
|
NgIconComponent,
|
|
31968
32533
|
CdkOverlayOrigin,
|
|
31969
|
-
], providers: [
|
|
31970
|
-
|
|
32534
|
+
], providers: [
|
|
32535
|
+
provideIcons({ iconoirUser, iconoirLock, iconoirTranslate, matMoreVert }),
|
|
32536
|
+
], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [canEditItem]=\"canEdit\"\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=\"(canEdit(item) | async) === false; else selectCheckbox\"\n ></ng-icon>\n <ng-template #selectCheckbox>\n <gn-ui-checkbox\n [checked]=\"isChecked(item)\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\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 <div class=\"flex justify-end items-center gap-4 w-full\">\n <!-- IS MULTILINGUAL -->\n <ng-icon\n *ngIf=\"isMultilingual(item)\"\n data-cy=\"multilingual-indicator\"\n name=\"iconoirTranslate\"\n [attr.title]=\"getTxtHoverMultilingual(item)\"\n ></ng-icon>\n <!-- MORE ACTIONS MENU BUTTON -->\n <gn-ui-button\n cdkOverlayOrigin\n #actionMenuButton\n (buttonClick)=\"openActionMenu(item, template)\"\n type=\"light\"\n data-test=\"record-menu-button\"\n >\n <ng-icon name=\"matMoreVert\"></ng-icon>\n </gn-ui-button>\n </div>\n <ng-template #template>\n <gn-ui-action-menu\n [canDuplicate]=\"canDuplicate(item)\"\n [isDuplicating]=\"isDuplicating\"\n [canDelete]=\"canDelete(item) | async\"\n [page]=\"isDraftPage ? 'draft' : 'main'\"\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: [":host{--gn-ui-button-height: 40px;--gn-ui-button-width: 40px}\n"] }]
|
|
32537
|
+
}], ctorParameters: () => [{ type: i1$8.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }, { type: i1$1.TranslateService }], propDecorators: { records: [{
|
|
31971
32538
|
type: Input
|
|
31972
32539
|
}], selectedRecordsIdentifiers: [{
|
|
31973
32540
|
type: Input
|
|
@@ -31979,6 +32546,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31979
32546
|
type: Input
|
|
31980
32547
|
}], canDelete: [{
|
|
31981
32548
|
type: Input
|
|
32549
|
+
}], canEdit: [{
|
|
32550
|
+
type: Input
|
|
31982
32551
|
}], isDraftPage: [{
|
|
31983
32552
|
type: Input
|
|
31984
32553
|
}], isDuplicating: [{
|
|
@@ -32227,9 +32796,10 @@ const FIELDS_SUMMARY = [
|
|
|
32227
32796
|
'userSavedCount',
|
|
32228
32797
|
'cl_topic',
|
|
32229
32798
|
'cl_maintenanceAndUpdateFrequency',
|
|
32230
|
-
'
|
|
32799
|
+
'MD_LegalConstraints*Object',
|
|
32231
32800
|
'qualityScore',
|
|
32232
32801
|
'allKeywords',
|
|
32802
|
+
'recordLink',
|
|
32233
32803
|
];
|
|
32234
32804
|
const FIELDS_BRIEF = [
|
|
32235
32805
|
...FIELDS_SUMMARY,
|
|
@@ -33052,11 +33622,11 @@ class FuzzySearchComponent {
|
|
|
33052
33622
|
this.isSearchActive.emit(event);
|
|
33053
33623
|
}
|
|
33054
33624
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FuzzySearchComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33055
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus", forceTrackPosition: "forceTrackPosition", enterButton: "enterButton" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", isSearchActive: "isSearchActive" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n (isSearchActive)=\"handleSearchActive($event)\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n [forceTrackPosition]=\"forceTrackPosition\"\n [enterButton]=\"enterButton\"\n></gn-ui-autocomplete>\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: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33625
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: { autoFocus: "autoFocus", forceTrackPosition: "forceTrackPosition", enterButton: "enterButton", placeholder: "placeholder" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", isSearchActive: "isSearchActive" }, viewQueries: [{ propertyName: "autocomplete", first: true, predicate: AutocompleteComponent, descendants: true }], ngImport: i0, template: "<gn-ui-autocomplete\n [placeholder]=\"placeholder ?? ('search.field.any.placeholder' | translate)\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n (isSearchActive)=\"handleSearchActive($event)\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n [forceTrackPosition]=\"forceTrackPosition\"\n [enterButton]=\"enterButton\"\n></gn-ui-autocomplete>\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: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33056
33626
|
}
|
|
33057
33627
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FuzzySearchComponent, decorators: [{
|
|
33058
33628
|
type: Component,
|
|
33059
|
-
args: [{ selector: 'gn-ui-fuzzy-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-autocomplete\n [placeholder]=\"'search.field.any.placeholder' | translate\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n (isSearchActive)=\"handleSearchActive($event)\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n [forceTrackPosition]=\"forceTrackPosition\"\n [enterButton]=\"enterButton\"\n></gn-ui-autocomplete>\n" }]
|
|
33629
|
+
args: [{ selector: 'gn-ui-fuzzy-search', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-autocomplete\n [placeholder]=\"placeholder ?? ('search.field.any.placeholder' | translate)\"\n [displayWithFn]=\"displayWithFn\"\n [action]=\"autoCompleteAction\"\n (itemSelected)=\"handleItemSelection($event)\"\n (inputSubmitted)=\"handleInputSubmission($event)\"\n (inputCleared)=\"handleInputCleared()\"\n (isSearchActive)=\"handleSearchActive($event)\"\n [value]=\"searchInputValue$ | async\"\n [preventCompleteOnSelection]=\"true\"\n [autoFocus]=\"autoFocus\"\n [allowSubmit]=\"true\"\n [forceTrackPosition]=\"forceTrackPosition\"\n [enterButton]=\"enterButton\"\n></gn-ui-autocomplete>\n" }]
|
|
33060
33630
|
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: RecordsRepositoryInterface }], propDecorators: { autocomplete: [{
|
|
33061
33631
|
type: ViewChild,
|
|
33062
33632
|
args: [AutocompleteComponent]
|
|
@@ -33066,6 +33636,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33066
33636
|
type: Input
|
|
33067
33637
|
}], enterButton: [{
|
|
33068
33638
|
type: Input
|
|
33639
|
+
}], placeholder: [{
|
|
33640
|
+
type: Input
|
|
33069
33641
|
}], itemSelected: [{
|
|
33070
33642
|
type: Output
|
|
33071
33643
|
}], inputSubmitted: [{
|
|
@@ -34310,14 +34882,21 @@ class ResultsTableContainerComponent {
|
|
|
34310
34882
|
this.recordsRepository = recordsRepository;
|
|
34311
34883
|
this.notificationsService = notificationsService;
|
|
34312
34884
|
this.translateService = translateService;
|
|
34313
|
-
this.canDuplicate = () => true;
|
|
34314
|
-
this.canDelete = () => true;
|
|
34315
34885
|
this.recordClick = new EventEmitter();
|
|
34316
34886
|
this.duplicateRecord = new EventEmitter();
|
|
34317
34887
|
this.subscription = new Subscription();
|
|
34318
34888
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
34319
34889
|
this.sortBy$ = this.searchFacade.sortBy$;
|
|
34320
34890
|
this.hasDraft = (record) => this.recordsRepository.recordHasDraft(record.uniqueIdentifier);
|
|
34891
|
+
this.canDuplicate = (record) => {
|
|
34892
|
+
return this.recordsRepository.canDuplicate(record);
|
|
34893
|
+
};
|
|
34894
|
+
this.canDelete = (record) => {
|
|
34895
|
+
return this.recordsRepository.canDelete(record);
|
|
34896
|
+
};
|
|
34897
|
+
this.canEdit = (record) => {
|
|
34898
|
+
return this.recordsRepository.canEditIndexedRecord(record);
|
|
34899
|
+
};
|
|
34321
34900
|
}
|
|
34322
34901
|
handleRecordClick(item) {
|
|
34323
34902
|
this.recordClick.emit(item);
|
|
@@ -34362,16 +34941,12 @@ class ResultsTableContainerComponent {
|
|
|
34362
34941
|
this.subscription.unsubscribe();
|
|
34363
34942
|
}
|
|
34364
34943
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableContainerComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }, { token: RecordsRepositoryInterface }, { token: NotificationsService }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34365
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", inputs: {
|
|
34944
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", inputs: { isDuplicating: "isDuplicating" }, outputs: { recordClick: "recordClick", duplicateRecord: "duplicateRecord" }, ngImport: i0, template: "<gn-ui-results-table\n *ngIf=\"searchFacade.results$ | async as records\"\n [records]=\"records\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n [canDelete]=\"canDelete\"\n [canDuplicate]=\"canDuplicate\"\n [isDuplicating]=\"isDuplicating\"\n [canEdit]=\"canEdit\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\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: ResultsTableComponent, selector: "gn-ui-results-table", inputs: ["records", "selectedRecordsIdentifiers", "sortOrder", "hasDraft", "canDuplicate", "canDelete", "canEdit", "isDraftPage", "isDuplicating"], outputs: ["sortByChange", "recordClick", "duplicateRecord", "deleteRecord", "rollbackDraft", "recordsSelectedChange"] }] }); }
|
|
34366
34945
|
}
|
|
34367
34946
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
34368
34947
|
type: Component,
|
|
34369
|
-
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n *ngIf=\"searchFacade.results$ | async as records\"\n [records]=\"records\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n [canDelete]=\"canDelete\"\n [canDuplicate]=\"canDuplicate\"\n [isDuplicating]=\"isDuplicating\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n" }]
|
|
34370
|
-
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }], propDecorators: {
|
|
34371
|
-
type: Input
|
|
34372
|
-
}], canDelete: [{
|
|
34373
|
-
type: Input
|
|
34374
|
-
}], isDuplicating: [{
|
|
34948
|
+
args: [{ selector: 'gn-ui-results-table-container', standalone: true, imports: [CommonModule, ResultsTableComponent], template: "<gn-ui-results-table\n *ngIf=\"searchFacade.results$ | async as records\"\n [records]=\"records\"\n [hasDraft]=\"hasDraft\"\n [selectedRecordsIdentifiers]=\"selectedRecords$ | async\"\n [sortOrder]=\"sortBy$ | async\"\n [canDelete]=\"canDelete\"\n [canDuplicate]=\"canDuplicate\"\n [isDuplicating]=\"isDuplicating\"\n [canEdit]=\"canEdit\"\n (recordClick)=\"handleRecordClick($event)\"\n (duplicateRecord)=\"handleDuplicateRecord($event)\"\n (deleteRecord)=\"handleDeleteRecord($event)\"\n (recordsSelectedChange)=\"handleRecordsSelectedChange($event[0], $event[1])\"\n (sortByChange)=\"handleSortByChange($event[0], $event[1])\"\n></gn-ui-results-table>\n" }]
|
|
34949
|
+
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }], propDecorators: { isDuplicating: [{
|
|
34375
34950
|
type: Input
|
|
34376
34951
|
}], recordClick: [{
|
|
34377
34952
|
type: Output
|
|
@@ -36008,7 +36583,7 @@ class AddLayerFromCatalogComponent {
|
|
|
36008
36583
|
ADDLAYER: new ResultsLayoutConfigItem(AddLayerRecordPreviewComponent, 'py-2', '', 'flex flex-col divide-y divide-y-grey-50'),
|
|
36009
36584
|
},
|
|
36010
36585
|
},
|
|
36011
|
-
], ngImport: i0, template: "<div class=\"h-full text-sm\">\n <gn-ui-fuzzy-search></gn-ui-fuzzy-search>\n <gn-ui-results-list-container\n layout=\"ADDLAYER\"\n ></gn-ui-results-list-container>\n</div>\n", styles: ["::ng-deep .mat-tab-body-wrapper{flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: FeatureSearchModule }, { kind: "component", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: ["autoFocus", "forceTrackPosition", "enterButton"], outputs: ["itemSelected", "inputSubmitted", "isSearchActive"] }, { kind: "component", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: ["metadataQualityDisplay", "layout", "showMore"], outputs: ["mdSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36586
|
+
], ngImport: i0, template: "<div class=\"h-full text-sm\">\n <gn-ui-fuzzy-search></gn-ui-fuzzy-search>\n <gn-ui-results-list-container\n layout=\"ADDLAYER\"\n ></gn-ui-results-list-container>\n</div>\n", styles: ["::ng-deep .mat-tab-body-wrapper{flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: FeatureSearchModule }, { kind: "component", type: FuzzySearchComponent, selector: "gn-ui-fuzzy-search", inputs: ["autoFocus", "forceTrackPosition", "enterButton", "placeholder"], outputs: ["itemSelected", "inputSubmitted", "isSearchActive"] }, { kind: "component", type: ResultsListContainerComponent, selector: "gn-ui-results-list-container", inputs: ["metadataQualityDisplay", "layout", "showMore"], outputs: ["mdSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
36012
36587
|
}
|
|
36013
36588
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddLayerFromCatalogComponent, decorators: [{
|
|
36014
36589
|
type: Component,
|
|
@@ -37871,7 +38446,7 @@ class DataTableComponent {
|
|
|
37871
38446
|
}
|
|
37872
38447
|
}
|
|
37873
38448
|
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 }); }
|
|
37874
|
-
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$
|
|
38449
|
+
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$3.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i3$3.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 }); }
|
|
37875
38450
|
}
|
|
37876
38451
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
|
|
37877
38452
|
type: Component,
|
|
@@ -39580,15 +40155,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39580
40155
|
marker('map.dropdown.placeholder');
|
|
39581
40156
|
marker('wfs.feature.limit');
|
|
39582
40157
|
marker('dataset.error.restrictedAccess');
|
|
40158
|
+
marker('map.select.style');
|
|
39583
40159
|
class MapViewComponent {
|
|
39584
40160
|
set exceedsLimit(value) {
|
|
39585
40161
|
this.excludeWfs$.next(value);
|
|
39586
40162
|
}
|
|
40163
|
+
selectLinkToDisplay(i) {
|
|
40164
|
+
this.selectedLinkIndex$.next(i);
|
|
40165
|
+
}
|
|
40166
|
+
selectStyleToDisplay(i) {
|
|
40167
|
+
this.selectedStyleIndex$.next(i);
|
|
40168
|
+
}
|
|
39587
40169
|
toggleLegend() {
|
|
39588
40170
|
this.showLegend = !this.showLegend;
|
|
39589
40171
|
}
|
|
39590
|
-
onLegendStatusChange(
|
|
39591
|
-
this.legendExists =
|
|
40172
|
+
onLegendStatusChange(v) {
|
|
40173
|
+
this.legendExists = v;
|
|
39592
40174
|
}
|
|
39593
40175
|
constructor(mdViewFacade, mapUtils, dataService, changeRef, translateService) {
|
|
39594
40176
|
this.mdViewFacade = mdViewFacade;
|
|
@@ -39601,20 +40183,15 @@ class MapViewComponent {
|
|
|
39601
40183
|
this.hidePreview = false;
|
|
39602
40184
|
this.showLegend = true;
|
|
39603
40185
|
this.legendExists = false;
|
|
40186
|
+
this.loading = false;
|
|
40187
|
+
this.error = null;
|
|
39604
40188
|
this.compatibleMapLinks$ = combineLatest([
|
|
39605
40189
|
this.mdViewFacade.mapApiLinks$,
|
|
39606
40190
|
this.mdViewFacade.geoDataLinksWithGeometry$,
|
|
39607
|
-
]).pipe(
|
|
39608
|
-
|
|
39609
|
-
|
|
39610
|
-
|
|
39611
|
-
return this.dataService.getGeodataLinksFromTms(link);
|
|
39612
|
-
}
|
|
39613
|
-
return link;
|
|
39614
|
-
}));
|
|
39615
|
-
processedMapApiLinks = processedMapApiLinks.flat();
|
|
39616
|
-
return [...processedMapApiLinks, ...geoDataLinksWithGeometry];
|
|
39617
|
-
}), shareReplay(1));
|
|
40191
|
+
]).pipe(map$1(([mapApiLinks, geoDataLinksWithGeometry]) => [
|
|
40192
|
+
...mapApiLinks,
|
|
40193
|
+
...geoDataLinksWithGeometry,
|
|
40194
|
+
]), shareReplay(1));
|
|
39618
40195
|
this.dropdownChoices$ = this.compatibleMapLinks$.pipe(map$1((links) => links.length
|
|
39619
40196
|
? links.map((link, index) => ({
|
|
39620
40197
|
label: getLinkLabel(link),
|
|
@@ -39622,12 +40199,39 @@ class MapViewComponent {
|
|
|
39622
40199
|
}))
|
|
39623
40200
|
: [{ label: 'map.dropdown.placeholder', value: 0 }]));
|
|
39624
40201
|
this.selectedLinkIndex$ = new BehaviorSubject(0);
|
|
39625
|
-
this.
|
|
39626
|
-
this.
|
|
39627
|
-
this.selectedLink$ = combineLatest([
|
|
40202
|
+
this.selectedStyleIndex$ = new BehaviorSubject(0);
|
|
40203
|
+
this.selectedSourceLink$ = combineLatest([
|
|
39628
40204
|
this.compatibleMapLinks$,
|
|
39629
40205
|
this.selectedLinkIndex$.pipe(distinctUntilChanged()),
|
|
39630
|
-
]).pipe(map$1(([links,
|
|
40206
|
+
]).pipe(map$1(([links, idx]) => links[idx]), shareReplay(1));
|
|
40207
|
+
this.styleLinks$ = this.selectedSourceLink$.pipe(switchMap$1((src) => {
|
|
40208
|
+
if (src &&
|
|
40209
|
+
src.type === 'service' &&
|
|
40210
|
+
src.accessServiceProtocol === 'tms') {
|
|
40211
|
+
return from(this.dataService.getGeodataLinksFromTms(src, false)).pipe(
|
|
40212
|
+
// We need to check for maplibre-style links because when a TMS service has no styles,
|
|
40213
|
+
// getGeodataLinksFromTms returns the original TMS link, which isn't a maplibre-style link
|
|
40214
|
+
map$1((links) => links?.filter((link) => link.type === 'service' &&
|
|
40215
|
+
link.accessServiceProtocol === 'maplibre-style') || []));
|
|
40216
|
+
}
|
|
40217
|
+
return of([]);
|
|
40218
|
+
}), tap$1(() => this.selectedStyleIndex$.next(0)), shareReplay(1));
|
|
40219
|
+
this.styleDropdownChoices$ = this.styleLinks$.pipe(map$1((links) => links.length
|
|
40220
|
+
? links.map((link, index) => ({
|
|
40221
|
+
label: getLinkLabel(link),
|
|
40222
|
+
value: index,
|
|
40223
|
+
}))
|
|
40224
|
+
: [
|
|
40225
|
+
{
|
|
40226
|
+
label: '\u00A0\u00A0\u00A0\u00A0',
|
|
40227
|
+
value: 0,
|
|
40228
|
+
},
|
|
40229
|
+
]));
|
|
40230
|
+
this.selectedLink$ = combineLatest([
|
|
40231
|
+
this.selectedSourceLink$,
|
|
40232
|
+
this.styleLinks$,
|
|
40233
|
+
this.selectedStyleIndex$.pipe(distinctUntilChanged()),
|
|
40234
|
+
]).pipe(map$1(([src, styles, styleIdx]) => (styles.length ? styles[styleIdx] : src)), shareReplay(1));
|
|
39631
40235
|
this.currentLayers$ = combineLatest([this.selectedLink$, this.excludeWfs$]).pipe(switchMap$1(([link, excludeWfs]) => {
|
|
39632
40236
|
if (!link) {
|
|
39633
40237
|
return of([]);
|
|
@@ -39745,9 +40349,6 @@ class MapViewComponent {
|
|
|
39745
40349
|
}
|
|
39746
40350
|
return throwError(() => 'protocol not supported');
|
|
39747
40351
|
}
|
|
39748
|
-
selectLinkToDisplay(link) {
|
|
39749
|
-
this.selectedLinkIndex$.next(link);
|
|
39750
|
-
}
|
|
39751
40352
|
handleError(error) {
|
|
39752
40353
|
if (error instanceof FetchError) {
|
|
39753
40354
|
this.error = this.translateService.instant(`dataset.error.${error.type}`, {
|
|
@@ -39767,7 +40368,7 @@ class MapViewComponent {
|
|
|
39767
40368
|
this.changeRef.detectChanges();
|
|
39768
40369
|
}
|
|
39769
40370
|
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 }); }
|
|
39770
|
-
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 <
|
|
40371
|
+
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 flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"displaySource\"\n class=\"w-full md:flex-1 md:min-w-0\"\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\n <ng-container *ngIf=\"(styleLinks$ | async)?.length > 0; else styleDisabled\">\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n (selectValue)=\"selectStyleToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <ng-template #styleDisabled>\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0 text-gray-400\"\n extraBtnClass=\"font-sans font-bold text-gray-400\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [disabled]=\"true\"\n ></gn-ui-dropdown-selector>\n </ng-template>\n\n <div class=\"self-end md:ml-2\">\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 }); }
|
|
39771
40372
|
}
|
|
39772
40373
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
39773
40374
|
type: Component,
|
|
@@ -39783,7 +40384,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39783
40384
|
ExternalViewerButtonComponent,
|
|
39784
40385
|
ButtonComponent,
|
|
39785
40386
|
MapLegendComponent,
|
|
39786
|
-
], 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 <
|
|
40387
|
+
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"displaySource\"\n class=\"w-full md:flex-1 md:min-w-0\"\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\n <ng-container *ngIf=\"(styleLinks$ | async)?.length > 0; else styleDisabled\">\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n (selectValue)=\"selectStyleToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <ng-template #styleDisabled>\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0 text-gray-400\"\n extraBtnClass=\"font-sans font-bold text-gray-400\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [disabled]=\"true\"\n ></gn-ui-dropdown-selector>\n </ng-template>\n\n <div class=\"self-end md:ml-2\">\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" }]
|
|
39787
40388
|
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { exceedsLimit: [{
|
|
39788
40389
|
type: Input
|
|
39789
40390
|
}], displaySource: [{
|
|
@@ -42791,17 +43392,256 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
42791
43392
|
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent, TranslateModule], template: "<div class=\"flex flex-col gap-6\">\n <ng-container\n *ngFor=\"\n let section of facade.currentSections$ | async;\n trackBy: sectionTracker\n \"\n >\n <ng-container *ngIf=\"!section.hidden\">\n <div class=\"flex flex-col gap-6 border p-8 rounded-[8px] shadow\">\n <div class=\"flex flex-col gap-2\">\n <div\n *ngIf=\"section.labelKey\"\n class=\"text-2xl font-title text-black\"\n translate\n >\n {{ section.labelKey }}\n </div>\n <div\n *ngIf=\"section.descriptionKey\"\n class=\"text-gray-800 text-sm\"\n translate\n >\n {{ section.descriptionKey }}\n </div>\n </div>\n <div class=\"grid auto-rows-auto grid-cols-2 gap-[32px]\">\n <ng-container\n *ngFor=\"\n let field of section.fieldsWithValues;\n trackBy: fieldTracker\n \"\n >\n <ng-container *ngIf=\"!field.config.hidden\">\n <gn-ui-form-field\n [ngClass]=\"\n field.config.gridColumnSpan === 1\n ? 'col-span-1'\n : 'col-span-2'\n \"\n [uniqueIdentifier]=\"recordUniqueIdentifier$ | async\"\n [model]=\"field.config.model!\"\n [modelSpecifier]=\"field.config.modelSpecifier!\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n [componentName]=\"field.config.componentName\"\n (valueChange)=\"\n handleFieldValueChange(field.config.model!, $event)\n \"\n ></gn-ui-form-field>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </ng-container>\n</div>\n" }]
|
|
42792
43393
|
}], ctorParameters: () => [{ type: EditorFacade }] });
|
|
42793
43394
|
|
|
43395
|
+
const extraFlagMap = {
|
|
43396
|
+
ar: 'arab',
|
|
43397
|
+
en: 'gb',
|
|
43398
|
+
ko: 'kr',
|
|
43399
|
+
cs: 'cz',
|
|
43400
|
+
zh: 'cn',
|
|
43401
|
+
ca: 'es-ct',
|
|
43402
|
+
rm: 'ch',
|
|
43403
|
+
da: 'dk',
|
|
43404
|
+
sv: 'se',
|
|
43405
|
+
cy: 'gb-wls',
|
|
43406
|
+
hy: 'am',
|
|
43407
|
+
ka: 'ge',
|
|
43408
|
+
uk: 'ua',
|
|
43409
|
+
};
|
|
42794
43410
|
class MultilingualPanelComponent {
|
|
42795
|
-
|
|
42796
|
-
this.
|
|
43411
|
+
set record(value) {
|
|
43412
|
+
this._record = value;
|
|
43413
|
+
this.isMultilingual = value.otherLanguages.length > 0;
|
|
43414
|
+
this.editTranslations = false;
|
|
43415
|
+
this.recordLanguages = [...value.otherLanguages, value.defaultLanguage];
|
|
43416
|
+
this.selectedLanguages = this.recordLanguages;
|
|
43417
|
+
this.formLanguage = value.defaultLanguage;
|
|
43418
|
+
}
|
|
43419
|
+
constructor(facade, dialog, translateService, recordsRepository, overlay, viewContainerRef, cdr) {
|
|
43420
|
+
this.facade = facade;
|
|
43421
|
+
this.dialog = dialog;
|
|
43422
|
+
this.translateService = translateService;
|
|
43423
|
+
this.recordsRepository = recordsRepository;
|
|
43424
|
+
this.overlay = overlay;
|
|
43425
|
+
this.viewContainerRef = viewContainerRef;
|
|
43426
|
+
this.cdr = cdr;
|
|
43427
|
+
this.selectedLanguages = [];
|
|
43428
|
+
this.recordLanguages = [];
|
|
43429
|
+
this.formLanguage = '';
|
|
43430
|
+
this.isActionMenuOpen = false;
|
|
43431
|
+
this.subscription = new Subscription();
|
|
43432
|
+
this.supportedLanguages$ = this.recordsRepository
|
|
43433
|
+
.getApplicationLanguages()
|
|
43434
|
+
.pipe(map$2((languages) => this.sortLanguages(languages)));
|
|
43435
|
+
}
|
|
43436
|
+
ngOnDestroy() {
|
|
43437
|
+
this.subscription.unsubscribe();
|
|
43438
|
+
}
|
|
43439
|
+
sortLanguages(languages) {
|
|
43440
|
+
return languages
|
|
43441
|
+
.map((lang) => {
|
|
43442
|
+
const label = this.translateService.instant('language.' + lang);
|
|
43443
|
+
const isTranslated = label !== 'language.' + lang;
|
|
43444
|
+
return {
|
|
43445
|
+
lang,
|
|
43446
|
+
label,
|
|
43447
|
+
isTranslated,
|
|
43448
|
+
};
|
|
43449
|
+
})
|
|
43450
|
+
.sort((a, b) => {
|
|
43451
|
+
if (a.isTranslated && !b.isTranslated)
|
|
43452
|
+
return -1;
|
|
43453
|
+
if (!a.isTranslated && b.isTranslated)
|
|
43454
|
+
return 1;
|
|
43455
|
+
return a.label.localeCompare(b.label);
|
|
43456
|
+
})
|
|
43457
|
+
.map((item) => item.lang);
|
|
43458
|
+
}
|
|
43459
|
+
toggleLanguageSelection() {
|
|
43460
|
+
this.editTranslations = !this.editTranslations;
|
|
43461
|
+
}
|
|
43462
|
+
getIconClass(lang) {
|
|
43463
|
+
return extraFlagMap[lang]
|
|
43464
|
+
? `fi fi-${extraFlagMap[lang]} w-4 h-3`
|
|
43465
|
+
: `fi fi-${lang} w-4 h-3`;
|
|
43466
|
+
}
|
|
43467
|
+
switchMultilingual() {
|
|
43468
|
+
if (this.isMultilingual && this.selectedLanguages.length > 1) {
|
|
43469
|
+
this.confirmDeleteAction();
|
|
43470
|
+
}
|
|
43471
|
+
else {
|
|
43472
|
+
this.isMultilingual = true;
|
|
43473
|
+
this.editTranslations = true;
|
|
43474
|
+
}
|
|
43475
|
+
}
|
|
43476
|
+
getExtraClass(lang) {
|
|
43477
|
+
const baseClass = 'h-[34px] w-full font-bold justify-start hover:bg-white';
|
|
43478
|
+
if (this.selectedLanguages.includes(lang)) {
|
|
43479
|
+
return `${baseClass} bg-white border border-black`;
|
|
43480
|
+
}
|
|
43481
|
+
return baseClass;
|
|
43482
|
+
}
|
|
43483
|
+
toggleLanguage(lang) {
|
|
43484
|
+
if (this.selectedLanguages.includes(lang)) {
|
|
43485
|
+
this.removeSelectedLanguage(lang);
|
|
43486
|
+
}
|
|
43487
|
+
else {
|
|
43488
|
+
this.selectedLanguages.push(lang);
|
|
43489
|
+
}
|
|
43490
|
+
}
|
|
43491
|
+
removeSelectedLanguage(lang) {
|
|
43492
|
+
this.selectedLanguages = this.selectedLanguages.filter((language) => language !== lang);
|
|
43493
|
+
}
|
|
43494
|
+
validateTranslations() {
|
|
43495
|
+
const equalLength = this.selectedLanguages.length === this.recordLanguages.length;
|
|
43496
|
+
if (this.selectedLanguages.length < this.recordLanguages.length ||
|
|
43497
|
+
(equalLength && this.selectedLanguages !== this.recordLanguages)) {
|
|
43498
|
+
this.confirmDeleteAction(this.selectedLanguages);
|
|
43499
|
+
}
|
|
43500
|
+
else {
|
|
43501
|
+
this.updateTranslations();
|
|
43502
|
+
}
|
|
43503
|
+
}
|
|
43504
|
+
updateTranslations() {
|
|
43505
|
+
this.facade.updateRecordField('otherLanguages', this.selectedLanguages.filter((lang) => lang !== this.formLanguage));
|
|
43506
|
+
this.recordLanguages = this.selectedLanguages;
|
|
43507
|
+
this.editTranslations = false;
|
|
43508
|
+
}
|
|
43509
|
+
switchFormLang(lang) {
|
|
43510
|
+
// TO IMPLEMENT FURTHER
|
|
43511
|
+
}
|
|
43512
|
+
switchDefaultLang(lang) {
|
|
43513
|
+
this.formLanguage = lang;
|
|
43514
|
+
this.facade.updateRecordField('defaultLanguage', lang);
|
|
43515
|
+
this.facade.updateRecordField('otherLanguages', this.selectedLanguages.filter((lang) => lang !== this.formLanguage));
|
|
43516
|
+
this.closeActionMenu();
|
|
43517
|
+
}
|
|
43518
|
+
confirmDeleteAction(lang) {
|
|
43519
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
43520
|
+
data: {
|
|
43521
|
+
title: this.translateService.instant('editor.record.multilingual.confirmation.title'),
|
|
43522
|
+
message: this.translateService.instant('editor.record.multilingual.confirmation.message'),
|
|
43523
|
+
confirmText: this.translateService.instant('editor.record.multilingual.confirmation.confirmText'),
|
|
43524
|
+
cancelText: this.translateService.instant('editor.record.multilingual.confirmation.cancelText'),
|
|
43525
|
+
},
|
|
43526
|
+
restoreFocus: true,
|
|
43527
|
+
});
|
|
43528
|
+
this.subscription.add(dialogRef.afterClosed().subscribe((confirmed) => {
|
|
43529
|
+
if (confirmed) {
|
|
43530
|
+
if (lang) {
|
|
43531
|
+
if (!Array.isArray(lang)) {
|
|
43532
|
+
this.removeSelectedLanguage(lang);
|
|
43533
|
+
this.closeActionMenu();
|
|
43534
|
+
}
|
|
43535
|
+
this.updateTranslations();
|
|
43536
|
+
}
|
|
43537
|
+
else {
|
|
43538
|
+
this.facade.updateRecordField('otherLanguages', []);
|
|
43539
|
+
this.isMultilingual = false;
|
|
43540
|
+
this.selectedLanguages = [];
|
|
43541
|
+
}
|
|
43542
|
+
}
|
|
43543
|
+
else {
|
|
43544
|
+
this.isMultilingual = true;
|
|
43545
|
+
this.selectedLanguages = this.recordLanguages;
|
|
43546
|
+
}
|
|
43547
|
+
this.editTranslations = false;
|
|
43548
|
+
}));
|
|
43549
|
+
}
|
|
43550
|
+
isFirstUnsupported(index) {
|
|
43551
|
+
const langs = this.sortLanguages(this.recordLanguages);
|
|
43552
|
+
return (langs[index].length === 3 &&
|
|
43553
|
+
langs.slice(0, index).every((lang) => lang.length !== 3));
|
|
43554
|
+
}
|
|
43555
|
+
isLangSupported(lang) {
|
|
43556
|
+
return lang.length === 2;
|
|
42797
43557
|
}
|
|
42798
|
-
|
|
42799
|
-
|
|
43558
|
+
getToggleTitle(lang) {
|
|
43559
|
+
if (lang === this._record.defaultLanguage) {
|
|
43560
|
+
return this.translateService.instant('editor.record.form.multilingual.forbidden');
|
|
43561
|
+
}
|
|
43562
|
+
return '';
|
|
43563
|
+
}
|
|
43564
|
+
openActionMenu(item, template) {
|
|
43565
|
+
this.isActionMenuOpen = true;
|
|
43566
|
+
const index = this.sortLanguages(this.selectedLanguages).indexOf(item);
|
|
43567
|
+
const buttonElement = this.actionMenuButtons.toArray()[index];
|
|
43568
|
+
const positionStrategy = this.overlay
|
|
43569
|
+
.position()
|
|
43570
|
+
.flexibleConnectedTo(buttonElement)
|
|
43571
|
+
.withFlexibleDimensions(true)
|
|
43572
|
+
.withPush(true)
|
|
43573
|
+
.withPositions([
|
|
43574
|
+
{
|
|
43575
|
+
originX: 'end',
|
|
43576
|
+
originY: 'bottom',
|
|
43577
|
+
overlayX: 'end',
|
|
43578
|
+
overlayY: 'top',
|
|
43579
|
+
},
|
|
43580
|
+
{
|
|
43581
|
+
originX: 'end',
|
|
43582
|
+
originY: 'top',
|
|
43583
|
+
overlayX: 'end',
|
|
43584
|
+
overlayY: 'bottom',
|
|
43585
|
+
},
|
|
43586
|
+
]);
|
|
43587
|
+
this.overlayRef = this.overlay.create({
|
|
43588
|
+
hasBackdrop: true,
|
|
43589
|
+
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
43590
|
+
positionStrategy: positionStrategy,
|
|
43591
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
43592
|
+
});
|
|
43593
|
+
const portal = new TemplatePortal(template, this.viewContainerRef);
|
|
43594
|
+
this.overlayRef.attach(portal);
|
|
43595
|
+
this.subscription.add(this.overlayRef.backdropClick().subscribe(() => {
|
|
43596
|
+
this.closeActionMenu();
|
|
43597
|
+
}));
|
|
43598
|
+
}
|
|
43599
|
+
closeActionMenu() {
|
|
43600
|
+
if (this.overlayRef) {
|
|
43601
|
+
this.isActionMenuOpen = false;
|
|
43602
|
+
this.overlayRef.dispose();
|
|
43603
|
+
this.cdr.markForCheck();
|
|
43604
|
+
}
|
|
43605
|
+
}
|
|
43606
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultilingualPanelComponent, deps: [{ token: EditorFacade }, { token: i1$a.MatDialog }, { token: i1$1.TranslateService }, { token: RecordsRepositoryInterface }, { token: i1$8.Overlay }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
43607
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MultilingualPanelComponent, isStandalone: true, selector: "gn-ui-multilingual-panel", inputs: { record: "record" }, providers: [
|
|
43608
|
+
provideIcons({
|
|
43609
|
+
iconoirSettings,
|
|
43610
|
+
matMoreHorizOutline,
|
|
43611
|
+
iconoirCheckCircle,
|
|
43612
|
+
iconoirCircle,
|
|
43613
|
+
}),
|
|
43614
|
+
provideNgIconsConfig({
|
|
43615
|
+
size: '1.25em',
|
|
43616
|
+
}),
|
|
43617
|
+
], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div\n class=\"flex flex-col h-full w-[302px] bg-neutral-100 border-l border-gray-300 py-8 px-3 gap-6 overflow-auto\"\n>\n <div class=\"flex flex-row px-2 justify-between\">\n <span class=\"text-3xl font-title text-black/80\" translate\n >editor.record.form.multilingual.title</span\n >\n <button\n [title]=\"'editor.record.form.multilingual.open' | translate\"\n (click)=\"toggleLanguageSelection()\"\n *ngIf=\"isMultilingual\"\n data-test=\"activateSelection\"\n >\n <ng-icon class=\"mt-1\" name=\"iconoirSettings\"></ng-icon>\n </button>\n </div>\n <div class=\"flex flex-col gap-2\" *ngIf=\"editTranslations || !isMultilingual\">\n <gn-ui-check-toggle\n class=\"p-2\"\n [label]=\"'editor.record.form.multilingual.enable' | translate\"\n [color]=\"'primary'\"\n [(value)]=\"isMultilingual\"\n (toggled)=\"switchMultilingual($event)\"\n ></gn-ui-check-toggle>\n <div *ngIf=\"isMultilingual\" class=\"flex flex-col gap-2\">\n <div class=\"flex flex-row justify-between border-t border-gray-300 p-3\">\n <span class=\"mt-2 text-sm text-gray-600\" translate\n >editor.record.form.multilingual.activate</span\n >\n <gn-ui-button\n extraClass=\"w-16 h-8 font-bold\"\n type=\"gray\"\n (buttonClick)=\"validateTranslations()\"\n data-test=\"validateSelection\"\n >{{ 'editor.record.form.multilingual.validate' | translate }}\n </gn-ui-button>\n </div>\n <ng-container *ngIf=\"supportedLanguages$ | async as languages\">\n <div\n class=\"flex flex-col gap-2 w-full px-2\"\n data-test=\"langAvailable\"\n *ngFor=\"let lang of languages\"\n >\n <gn-ui-button\n [extraClass]=\"getExtraClass(lang)\"\n type=\"gray\"\n (buttonClick)=\"toggleLanguage(lang)\"\n [disabled]=\"lang === _record.defaultLanguage\"\n [title]=\"getToggleTitle(lang)\"\n >\n <span [class]=\"getIconClass(lang)\"></span>\n <span class=\"ml-2\">{{ 'language.' + lang | translate }}</span>\n </gn-ui-button>\n </div>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"!editTranslations && isMultilingual\" class=\"flex flex-col gap-2\">\n <gn-ui-button\n *ngFor=\"let recordLang of sortLanguages(recordLanguages); let i = index\"\n extraClass=\"flex flex-row justify-between bg-white border border-white rounded mb-1 h-[34px] w-full\"\n [ngClass]=\"{\n 'mt-8': isFirstUnsupported(i),\n '': true,\n }\"\n (buttonClick)=\"switchFormLang(recordLang)\"\n type=\"outline\"\n data-test=\"langSwitch\"\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <ng-icon\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-primary mt-1\"\n name=\"iconoirCheckCircle\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"recordLang !== formLanguage\"\n class=\"text-gray-800 mt-1\"\n name=\"iconoirCircle\"\n ></ng-icon>\n <span\n *ngIf=\"recordLang.length === 2\"\n [class]=\"getIconClass(recordLang) + 'mt-1'\"\n ></span>\n <span [ngClass]=\"recordLang === formLanguage ? 'text-black' : ''\">{{\n isLangSupported(recordLang)\n ? ('language.' + recordLang | translate)\n : recordLang.toUpperCase()\n }}</span>\n </div>\n <div class=\"flex flex-row gap-2 items-center\">\n <span\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-xs text-base\"\n translate\n >editor.record.form.multilingual.default</span\n >\n <button\n (click)=\"\n openActionMenu(recordLang, template); $event.stopPropagation()\n \"\n cdkOverlayOrigin\n #actionMenuButton\n >\n <ng-icon class=\"pb-5\" name=\"matMoreHorizOutline\"></ng-icon>\n </button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDelete]=\"recordLang !== _record.defaultLanguage\"\n page=\"record\"\n (delete)=\"confirmDeleteAction(recordLang)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (switch)=\"switchDefaultLang(recordLang)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </div>\n </gn-ui-button>\n </div>\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.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: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: ["title", "label", "value", "color"], outputs: ["toggled"] }, { 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: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ActionMenuComponent, selector: "gn-ui-action-menu", inputs: ["canDuplicate", "isDuplicating", "canDelete", "page"], outputs: ["duplicate", "delete", "closeActionMenu", "rollback", "switch"] }] }); }
|
|
42800
43618
|
}
|
|
42801
43619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultilingualPanelComponent, decorators: [{
|
|
42802
43620
|
type: Component,
|
|
42803
|
-
args: [{ selector: 'gn-ui-multilingual-panel', standalone: true, imports: [
|
|
42804
|
-
|
|
43621
|
+
args: [{ selector: 'gn-ui-multilingual-panel', standalone: true, imports: [
|
|
43622
|
+
CommonModule,
|
|
43623
|
+
CheckToggleComponent,
|
|
43624
|
+
TranslateModule,
|
|
43625
|
+
ButtonComponent,
|
|
43626
|
+
NgIconComponent,
|
|
43627
|
+
ActionMenuComponent,
|
|
43628
|
+
], providers: [
|
|
43629
|
+
provideIcons({
|
|
43630
|
+
iconoirSettings,
|
|
43631
|
+
matMoreHorizOutline,
|
|
43632
|
+
iconoirCheckCircle,
|
|
43633
|
+
iconoirCircle,
|
|
43634
|
+
}),
|
|
43635
|
+
provideNgIconsConfig({
|
|
43636
|
+
size: '1.25em',
|
|
43637
|
+
}),
|
|
43638
|
+
], template: "<div\n class=\"flex flex-col h-full w-[302px] bg-neutral-100 border-l border-gray-300 py-8 px-3 gap-6 overflow-auto\"\n>\n <div class=\"flex flex-row px-2 justify-between\">\n <span class=\"text-3xl font-title text-black/80\" translate\n >editor.record.form.multilingual.title</span\n >\n <button\n [title]=\"'editor.record.form.multilingual.open' | translate\"\n (click)=\"toggleLanguageSelection()\"\n *ngIf=\"isMultilingual\"\n data-test=\"activateSelection\"\n >\n <ng-icon class=\"mt-1\" name=\"iconoirSettings\"></ng-icon>\n </button>\n </div>\n <div class=\"flex flex-col gap-2\" *ngIf=\"editTranslations || !isMultilingual\">\n <gn-ui-check-toggle\n class=\"p-2\"\n [label]=\"'editor.record.form.multilingual.enable' | translate\"\n [color]=\"'primary'\"\n [(value)]=\"isMultilingual\"\n (toggled)=\"switchMultilingual($event)\"\n ></gn-ui-check-toggle>\n <div *ngIf=\"isMultilingual\" class=\"flex flex-col gap-2\">\n <div class=\"flex flex-row justify-between border-t border-gray-300 p-3\">\n <span class=\"mt-2 text-sm text-gray-600\" translate\n >editor.record.form.multilingual.activate</span\n >\n <gn-ui-button\n extraClass=\"w-16 h-8 font-bold\"\n type=\"gray\"\n (buttonClick)=\"validateTranslations()\"\n data-test=\"validateSelection\"\n >{{ 'editor.record.form.multilingual.validate' | translate }}\n </gn-ui-button>\n </div>\n <ng-container *ngIf=\"supportedLanguages$ | async as languages\">\n <div\n class=\"flex flex-col gap-2 w-full px-2\"\n data-test=\"langAvailable\"\n *ngFor=\"let lang of languages\"\n >\n <gn-ui-button\n [extraClass]=\"getExtraClass(lang)\"\n type=\"gray\"\n (buttonClick)=\"toggleLanguage(lang)\"\n [disabled]=\"lang === _record.defaultLanguage\"\n [title]=\"getToggleTitle(lang)\"\n >\n <span [class]=\"getIconClass(lang)\"></span>\n <span class=\"ml-2\">{{ 'language.' + lang | translate }}</span>\n </gn-ui-button>\n </div>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"!editTranslations && isMultilingual\" class=\"flex flex-col gap-2\">\n <gn-ui-button\n *ngFor=\"let recordLang of sortLanguages(recordLanguages); let i = index\"\n extraClass=\"flex flex-row justify-between bg-white border border-white rounded mb-1 h-[34px] w-full\"\n [ngClass]=\"{\n 'mt-8': isFirstUnsupported(i),\n '': true,\n }\"\n (buttonClick)=\"switchFormLang(recordLang)\"\n type=\"outline\"\n data-test=\"langSwitch\"\n >\n <div class=\"flex flex-row gap-2 items-center\">\n <ng-icon\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-primary mt-1\"\n name=\"iconoirCheckCircle\"\n ></ng-icon>\n <ng-icon\n *ngIf=\"recordLang !== formLanguage\"\n class=\"text-gray-800 mt-1\"\n name=\"iconoirCircle\"\n ></ng-icon>\n <span\n *ngIf=\"recordLang.length === 2\"\n [class]=\"getIconClass(recordLang) + 'mt-1'\"\n ></span>\n <span [ngClass]=\"recordLang === formLanguage ? 'text-black' : ''\">{{\n isLangSupported(recordLang)\n ? ('language.' + recordLang | translate)\n : recordLang.toUpperCase()\n }}</span>\n </div>\n <div class=\"flex flex-row gap-2 items-center\">\n <span\n *ngIf=\"recordLang === formLanguage\"\n class=\"text-xs text-base\"\n translate\n >editor.record.form.multilingual.default</span\n >\n <button\n (click)=\"\n openActionMenu(recordLang, template); $event.stopPropagation()\n \"\n cdkOverlayOrigin\n #actionMenuButton\n >\n <ng-icon class=\"pb-5\" name=\"matMoreHorizOutline\"></ng-icon>\n </button>\n <ng-template #template>\n <gn-ui-action-menu\n [canDelete]=\"recordLang !== _record.defaultLanguage\"\n page=\"record\"\n (delete)=\"confirmDeleteAction(recordLang)\"\n (closeActionMenu)=\"closeActionMenu()\"\n (switch)=\"switchDefaultLang(recordLang)\"\n >\n </gn-ui-action-menu>\n </ng-template>\n </div>\n </gn-ui-button>\n </div>\n</div>\n" }]
|
|
43639
|
+
}], ctorParameters: () => [{ type: EditorFacade }, { type: i1$a.MatDialog }, { type: i1$1.TranslateService }, { type: RecordsRepositoryInterface }, { type: i1$8.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { record: [{
|
|
43640
|
+
type: Input
|
|
43641
|
+
}], actionMenuButtons: [{
|
|
43642
|
+
type: ViewChildren,
|
|
43643
|
+
args: ['actionMenuButton', { read: ElementRef }]
|
|
43644
|
+
}] } });
|
|
42805
43645
|
|
|
42806
43646
|
const ROUTER_STATE_KEY = 'router';
|
|
42807
43647
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
@@ -43204,7 +44044,7 @@ class DefaultRouterModule {
|
|
|
43204
44044
|
};
|
|
43205
44045
|
}
|
|
43206
44046
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
43207
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$3.StoreFeatureModule, i3$
|
|
44047
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$3.StoreFeatureModule, i3$4.StoreRouterConnectingModule, i1$b.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
43208
44048
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
43209
44049
|
RouterFacade,
|
|
43210
44050
|
{
|
|
@@ -43247,5 +44087,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43247
44087
|
* Generated bundle index. Do not edit.
|
|
43248
44088
|
*/
|
|
43249
44089
|
|
|
43250
|
-
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 };
|
|
44090
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, ActionMenuComponent, 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, CellPopinComponent, 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, SUPPORTED_LANGUAGES, 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 };
|
|
43251
44091
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|