geonetwork-ui 2.6.0-dev.9d3ad45e2 → 2.6.0-dev.a0bd52a21
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 +39 -4
- 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/elasticsearch/elasticsearch.service.mjs +3 -3
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +75 -15
- 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/state/mdview.actions.mjs +3 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +7 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +3 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +7 -1
- package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +3 -1
- 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/inputs/src/lib/autocomplete/autocomplete.component.mjs +3 -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 +41 -6
- package/esm2022/translations/en.json +41 -6
- package/esm2022/translations/es.json +40 -5
- package/esm2022/translations/fr.json +41 -6
- package/esm2022/translations/it.json +40 -5
- package/esm2022/translations/nl.json +40 -5
- package/esm2022/translations/pt.json +40 -5
- package/fesm2022/geonetwork-ui.mjs +1591 -719
- 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/elasticsearch/elasticsearch.service.d.ts +1 -1
- package/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +13 -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 +6 -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/state/mdview.actions.d.ts +10 -0
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +6 -0
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +2 -0
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +2 -0
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +2 -0
- package/libs/feature/record/src/lib/state/mdview.selectors.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 +61 -4
- 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/elasticsearch/elasticsearch.service.ts +2 -2
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +111 -15
- 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 +6 -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/state/mdview.actions.ts +10 -0
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +22 -0
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +4 -0
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +12 -0
- package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +9 -0
- 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/inputs/src/lib/autocomplete/autocomplete.component.html +1 -1
- 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 +41 -6
- package/translations/en.json +41 -6
- package/translations/es.json +40 -5
- package/translations/fr.json +41 -6
- package/translations/it.json +40 -5
- package/translations/nl.json +40 -5
- package/translations/pt.json +40 -5
- package/translations/sk.json +40 -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",
|
|
@@ -18964,6 +19062,7 @@ var de = {
|
|
|
18964
19062
|
"record.action.duplicate": "",
|
|
18965
19063
|
"record.action.duplicating": "",
|
|
18966
19064
|
"record.action.rollback": "",
|
|
19065
|
+
"record.action.switchLang": "",
|
|
18967
19066
|
"record.action.view": "Anzeigen",
|
|
18968
19067
|
"record.card.metadata.contact": "",
|
|
18969
19068
|
"record.externalViewer.open": "In externem Kartenviewer öffnen",
|
|
@@ -19014,9 +19113,15 @@ var de = {
|
|
|
19014
19113
|
"record.metadata.download": "Downloads",
|
|
19015
19114
|
"record.metadata.feature.catalog": "",
|
|
19016
19115
|
"record.metadata.formats": "Formate",
|
|
19116
|
+
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19017
19117
|
"record.metadata.keywords": "Stichworte",
|
|
19018
19118
|
"record.metadata.languages": "Sprachen",
|
|
19019
19119
|
"record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
|
|
19120
|
+
"record.metadata.linked.datasets": "Verknüpfte Datensätze",
|
|
19121
|
+
"record.metadata.linked.records": "Verknüpfte Inhalte",
|
|
19122
|
+
"record.metadata.linked.reuses": "Verknüpfte Wiederverwendungen",
|
|
19123
|
+
"record.metadata.linked.services": "Verknüpfte Dienste",
|
|
19124
|
+
"record.metadata.linked.sourceDatasets": "Quelldatensätze",
|
|
19020
19125
|
"record.metadata.links": "Links",
|
|
19021
19126
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
19022
19127
|
"record.metadata.otherConstraints": "Zusätzliche Bedingungen",
|
|
@@ -19026,6 +19131,8 @@ var de = {
|
|
|
19026
19131
|
"record.metadata.publication": "Veröffentlichungsdatum",
|
|
19027
19132
|
"record.metadata.publications": "{count, plural, =0{Veröffentlichungsdatum} one{Veröffentlichungsdatum} other{Veröffentlichungen}}",
|
|
19028
19133
|
"record.metadata.quality": "Metadatenqualität",
|
|
19134
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
19135
|
+
"record.metadata.quality.capabilities.success": "",
|
|
19029
19136
|
"record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
|
|
19030
19137
|
"record.metadata.quality.contact.success": "Kontakt angegeben",
|
|
19031
19138
|
"record.metadata.quality.description.failed": "Beschreibung nicht angegeben",
|
|
@@ -19037,14 +19144,15 @@ var de = {
|
|
|
19037
19144
|
"record.metadata.quality.legalConstraints.success": "Rechtliche Beschränkungen angegeben",
|
|
19038
19145
|
"record.metadata.quality.organisation.failed": "Organisation nicht angegeben",
|
|
19039
19146
|
"record.metadata.quality.organisation.success": "Organisation angegeben",
|
|
19147
|
+
"record.metadata.quality.source.failed": "",
|
|
19148
|
+
"record.metadata.quality.source.success": "",
|
|
19040
19149
|
"record.metadata.quality.title.failed": "Titel nicht angegeben",
|
|
19041
19150
|
"record.metadata.quality.title.success": "Titel angegeben",
|
|
19042
19151
|
"record.metadata.quality.topic.failed": "Thema nicht angegeben",
|
|
19043
19152
|
"record.metadata.quality.topic.success": "Thema angegeben",
|
|
19044
19153
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19045
19154
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19046
|
-
"record.metadata.related": "
|
|
19047
|
-
"record.metadata.related.contents": "",
|
|
19155
|
+
"record.metadata.related": "Entdecken Sie den Katalog",
|
|
19048
19156
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19049
19157
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19050
19158
|
"record.metadata.status": "Status",
|
|
@@ -19056,7 +19164,6 @@ var de = {
|
|
|
19056
19164
|
"record.metadata.temporalExtent.untilDate": "Bis {end}",
|
|
19057
19165
|
"record.metadata.title": "Titel",
|
|
19058
19166
|
"record.metadata.topics": "Kategorien",
|
|
19059
|
-
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19060
19167
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
19061
19168
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
19062
19169
|
"record.metadata.updatedOn": "Geändert am",
|
|
@@ -19176,7 +19283,6 @@ var de = {
|
|
|
19176
19283
|
"tooltip.html.copy": "HTML kopieren",
|
|
19177
19284
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
19178
19285
|
"tooltip.url.copy": "URL kopieren",
|
|
19179
|
-
"tooltip.url.open": "URL öffnen",
|
|
19180
19286
|
"ui.readLess": "Weniger lesen",
|
|
19181
19287
|
"ui.readMore": "Weiterlesen",
|
|
19182
19288
|
"wfs.feature.limit": "Zu viele Features, um den WFS-Layer anzuzeigen!",
|
|
@@ -19223,6 +19329,7 @@ var en = {
|
|
|
19223
19329
|
"dashboard.labels.mySpace": "My space",
|
|
19224
19330
|
"dashboard.records.all": "Datasets",
|
|
19225
19331
|
"dashboard.records.hasDraft": "draft",
|
|
19332
|
+
"dashboard.records.isMultilingual": "This record is multilingual ({languages})",
|
|
19226
19333
|
"dashboard.records.myDraft": "My drafts",
|
|
19227
19334
|
"dashboard.records.myRecords": "My datasets",
|
|
19228
19335
|
"dashboard.records.search": "Search for \"{searchText}\"",
|
|
@@ -19397,9 +19504,13 @@ var en = {
|
|
|
19397
19504
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
19398
19505
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
19399
19506
|
"editor.record.form.license.unknown": "Unknown or absent",
|
|
19507
|
+
"editor.record.form.multilingual.activate": "Activate the languages",
|
|
19508
|
+
"editor.record.form.multilingual.default": "Default",
|
|
19400
19509
|
"editor.record.form.multilingual.enable": "Multilingual Mode",
|
|
19510
|
+
"editor.record.form.multilingual.forbidden": "You are not allowed to remove the default language",
|
|
19401
19511
|
"editor.record.form.multilingual.open": "Open the multilingual panel",
|
|
19402
19512
|
"editor.record.form.multilingual.title": "Translations",
|
|
19513
|
+
"editor.record.form.multilingual.validate": "Validate",
|
|
19403
19514
|
"editor.record.form.page.accessAndContact": "Information for use",
|
|
19404
19515
|
"editor.record.form.page.description": "Dataset description",
|
|
19405
19516
|
"editor.record.form.page.resources": "Resources",
|
|
@@ -19429,8 +19540,13 @@ var en = {
|
|
|
19429
19540
|
"editor.record.loadError.body": "The dataset could not be loaded:",
|
|
19430
19541
|
"editor.record.loadError.closeMessage": "Understood",
|
|
19431
19542
|
"editor.record.loadError.title": "Error loading dataset",
|
|
19432
|
-
"editor.record.lock.
|
|
19433
|
-
"editor.record.lock.
|
|
19543
|
+
"editor.record.lock.harvested": "Datasets harvested from an external catalog are not editable",
|
|
19544
|
+
"editor.record.lock.owner": "You are not an editor of the allowed groups",
|
|
19545
|
+
"editor.record.lock.resourceType": "Records of a type other than dataset are not editable",
|
|
19546
|
+
"editor.record.multilingual.confirmation.cancelText": "Keep the language(s)",
|
|
19547
|
+
"editor.record.multilingual.confirmation.confirmText": "Remove the language(s)",
|
|
19548
|
+
"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?",
|
|
19549
|
+
"editor.record.multilingual.confirmation.title": "Remove languages",
|
|
19434
19550
|
"editor.record.onlineResource.protocol.other": "Other",
|
|
19435
19551
|
"editor.record.onlineResourceError.body": "An error happened while adding the resource:",
|
|
19436
19552
|
"editor.record.onlineResourceError.closeMessage": "Understood",
|
|
@@ -19477,6 +19593,11 @@ var en = {
|
|
|
19477
19593
|
"facets.block.title.tag.default": "Tag",
|
|
19478
19594
|
"facets.block.title.th_regions_tree.default": "Regions",
|
|
19479
19595
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
|
|
19596
|
+
"feature.catalog.attribute.code": "Code",
|
|
19597
|
+
"feature.catalog.attribute.definition": "Description",
|
|
19598
|
+
"feature.catalog.attribute.name": "Name",
|
|
19599
|
+
"feature.catalog.attribute.type": "Type",
|
|
19600
|
+
"feature.catalog.attribute.values": "Values",
|
|
19480
19601
|
"input.file.dropFileLabel": "or drop it here",
|
|
19481
19602
|
"input.file.orInputUrl": "or create a link to an external resource",
|
|
19482
19603
|
"input.file.selectFileLabel": "Select a file ({sizeMB} MB max.)",
|
|
@@ -19491,20 +19612,32 @@ var en = {
|
|
|
19491
19612
|
"input.image.uploadErrorLabel": "The image could not be uploaded",
|
|
19492
19613
|
"input.image.uploadProgressCancel": "Cancel",
|
|
19493
19614
|
"input.image.uploadProgressLabel": "Upload in progress...",
|
|
19615
|
+
"language.ar": "Arabic",
|
|
19616
|
+
"language.az": "Azerbaijani",
|
|
19494
19617
|
"language.ca": "Catalan",
|
|
19495
19618
|
"language.cs": "Czech",
|
|
19619
|
+
"language.cy": "Welsh",
|
|
19620
|
+
"language.da": "Danish",
|
|
19496
19621
|
"language.de": "German",
|
|
19497
19622
|
"language.en": "English",
|
|
19498
19623
|
"language.es": "Spanish",
|
|
19499
19624
|
"language.fi": "Finnish",
|
|
19500
19625
|
"language.fr": "French",
|
|
19626
|
+
"language.hy": "Armenian",
|
|
19501
19627
|
"language.is": "Icelandic",
|
|
19502
19628
|
"language.it": "Italian",
|
|
19629
|
+
"language.ka": "Georgian",
|
|
19503
19630
|
"language.ko": "Korean",
|
|
19504
19631
|
"language.nl": "Dutch",
|
|
19632
|
+
"language.no": "Norwegian",
|
|
19633
|
+
"language.pl": "Polish",
|
|
19505
19634
|
"language.pt": "Portuguese",
|
|
19635
|
+
"language.rm": "Romansh",
|
|
19506
19636
|
"language.ru": "Russian",
|
|
19507
19637
|
"language.sk": "Slovak",
|
|
19638
|
+
"language.sv": "Swedish",
|
|
19639
|
+
"language.tr": "Turkish",
|
|
19640
|
+
"language.uk": "Ukrainian",
|
|
19508
19641
|
"language.zh": "Chinese",
|
|
19509
19642
|
"map.add.layer": "Add a layer",
|
|
19510
19643
|
"map.add.layer.catalog": "From the catalog",
|
|
@@ -19551,6 +19684,7 @@ var en = {
|
|
|
19551
19684
|
"record.action.duplicate": "Duplicate",
|
|
19552
19685
|
"record.action.duplicating": "Duplicating...",
|
|
19553
19686
|
"record.action.rollback": "Rollback",
|
|
19687
|
+
"record.action.switchLang": "Switch to default",
|
|
19554
19688
|
"record.action.view": "View",
|
|
19555
19689
|
"record.card.metadata.contact": "Metadata Contact",
|
|
19556
19690
|
"record.externalViewer.open": "Open in the external map viewer",
|
|
@@ -19601,9 +19735,15 @@ var en = {
|
|
|
19601
19735
|
"record.metadata.download": "Downloads",
|
|
19602
19736
|
"record.metadata.feature.catalog": "Feature catalog",
|
|
19603
19737
|
"record.metadata.formats": "Formats",
|
|
19738
|
+
"record.metadata.isGeographical": "Geographical dataset",
|
|
19604
19739
|
"record.metadata.keywords": "Keywords",
|
|
19605
19740
|
"record.metadata.languages": "Languages",
|
|
19606
19741
|
"record.metadata.lastUpdate": "Last updated on {date}",
|
|
19742
|
+
"record.metadata.linked.datasets": "Associated datasets",
|
|
19743
|
+
"record.metadata.linked.records": "Associated content",
|
|
19744
|
+
"record.metadata.linked.reuses": "Associated reuses",
|
|
19745
|
+
"record.metadata.linked.services": "Associated services",
|
|
19746
|
+
"record.metadata.linked.sourceDatasets": "Source datasets",
|
|
19607
19747
|
"record.metadata.links": "Links",
|
|
19608
19748
|
"record.metadata.noUsage": "No usage conditions specified for this dataset.",
|
|
19609
19749
|
"record.metadata.otherConstraints": "Additional Conditions",
|
|
@@ -19613,6 +19753,8 @@ var en = {
|
|
|
19613
19753
|
"record.metadata.publication": "Date of publication",
|
|
19614
19754
|
"record.metadata.publications": "{count, plural, =0{publication} one{publication} other{publications}}",
|
|
19615
19755
|
"record.metadata.quality": "Metadata Quality",
|
|
19756
|
+
"record.metadata.quality.capabilities.failed": "Capabilities URL is not specified",
|
|
19757
|
+
"record.metadata.quality.capabilities.success": "Capabilities URL is specified",
|
|
19616
19758
|
"record.metadata.quality.contact.failed": "Contact is not specified",
|
|
19617
19759
|
"record.metadata.quality.contact.success": "Contact is specified",
|
|
19618
19760
|
"record.metadata.quality.description.failed": "Description is not specified",
|
|
@@ -19624,14 +19766,15 @@ var en = {
|
|
|
19624
19766
|
"record.metadata.quality.legalConstraints.success": "Legal constraints are specified",
|
|
19625
19767
|
"record.metadata.quality.organisation.failed": "Organisation is not specified",
|
|
19626
19768
|
"record.metadata.quality.organisation.success": "Organisation is specified",
|
|
19769
|
+
"record.metadata.quality.source.failed": "No source dataset is specified",
|
|
19770
|
+
"record.metadata.quality.source.success": "A source dataset is specified",
|
|
19627
19771
|
"record.metadata.quality.title.failed": "Title is not specified",
|
|
19628
19772
|
"record.metadata.quality.title.success": "Title is specified",
|
|
19629
19773
|
"record.metadata.quality.topic.failed": "Topic is not specified",
|
|
19630
19774
|
"record.metadata.quality.topic.success": "Topic is specified",
|
|
19631
19775
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19632
19776
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19633
|
-
"record.metadata.related": "
|
|
19634
|
-
"record.metadata.related.contents": "Related content",
|
|
19777
|
+
"record.metadata.related": "Explore the catalog",
|
|
19635
19778
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19636
19779
|
"record.metadata.sheet": "Original metadata",
|
|
19637
19780
|
"record.metadata.status": "Status",
|
|
@@ -19643,7 +19786,6 @@ var en = {
|
|
|
19643
19786
|
"record.metadata.temporalExtent.untilDate": "Until { end }",
|
|
19644
19787
|
"record.metadata.title": "Title",
|
|
19645
19788
|
"record.metadata.topics": "Categories",
|
|
19646
|
-
"record.metadata.isGeographical": "Geographical dataset",
|
|
19647
19789
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
19648
19790
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
19649
19791
|
"record.metadata.updatedOn": "Updated on",
|
|
@@ -19763,7 +19905,6 @@ var en = {
|
|
|
19763
19905
|
"tooltip.html.copy": "Copy HTML",
|
|
19764
19906
|
"tooltip.id.copy": "Copy unique identifier",
|
|
19765
19907
|
"tooltip.url.copy": "Copy URL",
|
|
19766
|
-
"tooltip.url.open": "Open URL",
|
|
19767
19908
|
"ui.readLess": "Read less",
|
|
19768
19909
|
"ui.readMore": "Read more",
|
|
19769
19910
|
"wfs.feature.limit": "Too many features to display the WFS layer!",
|
|
@@ -19810,6 +19951,7 @@ var es = {
|
|
|
19810
19951
|
"dashboard.labels.mySpace": "Mi espacio",
|
|
19811
19952
|
"dashboard.records.all": "Catálogo",
|
|
19812
19953
|
"dashboard.records.hasDraft": "",
|
|
19954
|
+
"dashboard.records.isMultilingual": "Este registro es multilingüe ({languages})",
|
|
19813
19955
|
"dashboard.records.myDraft": "Mis borradores",
|
|
19814
19956
|
"dashboard.records.myRecords": "Mis Registros",
|
|
19815
19957
|
"dashboard.records.search": "Buscar \"{searchText}\"",
|
|
@@ -19984,9 +20126,13 @@ var es = {
|
|
|
19984
20126
|
"editor.record.form.license.odc-by": "",
|
|
19985
20127
|
"editor.record.form.license.pddl": "",
|
|
19986
20128
|
"editor.record.form.license.unknown": "",
|
|
20129
|
+
"editor.record.form.multilingual.activate": "",
|
|
20130
|
+
"editor.record.form.multilingual.default": "",
|
|
19987
20131
|
"editor.record.form.multilingual.enable": "",
|
|
20132
|
+
"editor.record.form.multilingual.forbidden": "",
|
|
19988
20133
|
"editor.record.form.multilingual.open": "",
|
|
19989
20134
|
"editor.record.form.multilingual.title": "",
|
|
20135
|
+
"editor.record.form.multilingual.validate": "",
|
|
19990
20136
|
"editor.record.form.page.accessAndContact": "",
|
|
19991
20137
|
"editor.record.form.page.description": "",
|
|
19992
20138
|
"editor.record.form.page.resources": "",
|
|
@@ -20016,8 +20162,13 @@ var es = {
|
|
|
20016
20162
|
"editor.record.loadError.body": "",
|
|
20017
20163
|
"editor.record.loadError.closeMessage": "",
|
|
20018
20164
|
"editor.record.loadError.title": "",
|
|
20019
|
-
"editor.record.lock.
|
|
20020
|
-
"editor.record.lock.
|
|
20165
|
+
"editor.record.lock.harvested": "",
|
|
20166
|
+
"editor.record.lock.owner": "",
|
|
20167
|
+
"editor.record.lock.resourceType": "",
|
|
20168
|
+
"editor.record.multilingual.confirmation.cancelText": "",
|
|
20169
|
+
"editor.record.multilingual.confirmation.confirmText": "",
|
|
20170
|
+
"editor.record.multilingual.confirmation.message": "",
|
|
20171
|
+
"editor.record.multilingual.confirmation.title": "",
|
|
20021
20172
|
"editor.record.onlineResource.protocol.other": "",
|
|
20022
20173
|
"editor.record.onlineResourceError.body": "",
|
|
20023
20174
|
"editor.record.onlineResourceError.closeMessage": "",
|
|
@@ -20064,6 +20215,11 @@ var es = {
|
|
|
20064
20215
|
"facets.block.title.tag.default": "",
|
|
20065
20216
|
"facets.block.title.th_regions_tree.default": "",
|
|
20066
20217
|
"favorite.not.authenticated.tooltip": "",
|
|
20218
|
+
"feature.catalog.attribute.code": "Código",
|
|
20219
|
+
"feature.catalog.attribute.definition": "Descripción",
|
|
20220
|
+
"feature.catalog.attribute.name": "Nombre",
|
|
20221
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
20222
|
+
"feature.catalog.attribute.values": "Valores",
|
|
20067
20223
|
"input.file.dropFileLabel": "",
|
|
20068
20224
|
"input.file.orInputUrl": "",
|
|
20069
20225
|
"input.file.selectFileLabel": "",
|
|
@@ -20078,20 +20234,32 @@ var es = {
|
|
|
20078
20234
|
"input.image.uploadErrorLabel": "",
|
|
20079
20235
|
"input.image.uploadProgressCancel": "",
|
|
20080
20236
|
"input.image.uploadProgressLabel": "",
|
|
20237
|
+
"language.ar": "",
|
|
20238
|
+
"language.az": "",
|
|
20081
20239
|
"language.ca": "Catalán",
|
|
20082
20240
|
"language.cs": "Checo",
|
|
20241
|
+
"language.cy": "",
|
|
20242
|
+
"language.da": "",
|
|
20083
20243
|
"language.de": "Alemán",
|
|
20084
20244
|
"language.en": "Inglés",
|
|
20085
20245
|
"language.es": "Español",
|
|
20086
20246
|
"language.fi": "Finlandés",
|
|
20087
20247
|
"language.fr": "Francés",
|
|
20248
|
+
"language.hy": "",
|
|
20088
20249
|
"language.is": "Islandés",
|
|
20089
20250
|
"language.it": "Italiano",
|
|
20251
|
+
"language.ka": "",
|
|
20090
20252
|
"language.ko": "Coreano",
|
|
20091
20253
|
"language.nl": "Neerlandés",
|
|
20254
|
+
"language.no": "",
|
|
20255
|
+
"language.pl": "",
|
|
20092
20256
|
"language.pt": "Portugués",
|
|
20257
|
+
"language.rm": "",
|
|
20093
20258
|
"language.ru": "Ruso",
|
|
20094
20259
|
"language.sk": "Eslovaco",
|
|
20260
|
+
"language.sv": "",
|
|
20261
|
+
"language.tr": "",
|
|
20262
|
+
"language.uk": "",
|
|
20095
20263
|
"language.zh": "Chino",
|
|
20096
20264
|
"map.add.layer": "",
|
|
20097
20265
|
"map.add.layer.catalog": "",
|
|
@@ -20138,6 +20306,7 @@ var es = {
|
|
|
20138
20306
|
"record.action.duplicate": "",
|
|
20139
20307
|
"record.action.duplicating": "",
|
|
20140
20308
|
"record.action.rollback": "",
|
|
20309
|
+
"record.action.switchLang": "",
|
|
20141
20310
|
"record.action.view": "",
|
|
20142
20311
|
"record.card.metadata.contact": "",
|
|
20143
20312
|
"record.externalViewer.open": "",
|
|
@@ -20188,9 +20357,15 @@ var es = {
|
|
|
20188
20357
|
"record.metadata.download": "",
|
|
20189
20358
|
"record.metadata.feature.catalog": "",
|
|
20190
20359
|
"record.metadata.formats": "",
|
|
20360
|
+
"record.metadata.isGeographical": "",
|
|
20191
20361
|
"record.metadata.keywords": "",
|
|
20192
20362
|
"record.metadata.languages": "",
|
|
20193
20363
|
"record.metadata.lastUpdate": "",
|
|
20364
|
+
"record.metadata.linked.datasets": "",
|
|
20365
|
+
"record.metadata.linked.records": "",
|
|
20366
|
+
"record.metadata.linked.reuses": "",
|
|
20367
|
+
"record.metadata.linked.services": "",
|
|
20368
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
20194
20369
|
"record.metadata.links": "",
|
|
20195
20370
|
"record.metadata.noUsage": "",
|
|
20196
20371
|
"record.metadata.otherConstraints": "",
|
|
@@ -20200,6 +20375,8 @@ var es = {
|
|
|
20200
20375
|
"record.metadata.publication": "",
|
|
20201
20376
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
20202
20377
|
"record.metadata.quality": "",
|
|
20378
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
20379
|
+
"record.metadata.quality.capabilities.success": "",
|
|
20203
20380
|
"record.metadata.quality.contact.failed": "",
|
|
20204
20381
|
"record.metadata.quality.contact.success": "",
|
|
20205
20382
|
"record.metadata.quality.description.failed": "",
|
|
@@ -20211,6 +20388,8 @@ var es = {
|
|
|
20211
20388
|
"record.metadata.quality.legalConstraints.success": "",
|
|
20212
20389
|
"record.metadata.quality.organisation.failed": "",
|
|
20213
20390
|
"record.metadata.quality.organisation.success": "",
|
|
20391
|
+
"record.metadata.quality.source.failed": "",
|
|
20392
|
+
"record.metadata.quality.source.success": "",
|
|
20214
20393
|
"record.metadata.quality.title.failed": "",
|
|
20215
20394
|
"record.metadata.quality.title.success": "",
|
|
20216
20395
|
"record.metadata.quality.topic.failed": "",
|
|
@@ -20218,7 +20397,6 @@ var es = {
|
|
|
20218
20397
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20219
20398
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20220
20399
|
"record.metadata.related": "",
|
|
20221
|
-
"record.metadata.related.contents": "",
|
|
20222
20400
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20223
20401
|
"record.metadata.sheet": "",
|
|
20224
20402
|
"record.metadata.status": "",
|
|
@@ -20230,7 +20408,6 @@ var es = {
|
|
|
20230
20408
|
"record.metadata.temporalExtent.untilDate": "",
|
|
20231
20409
|
"record.metadata.title": "",
|
|
20232
20410
|
"record.metadata.topics": "",
|
|
20233
|
-
"record.metadata.isGeographical": "",
|
|
20234
20411
|
"record.metadata.uniqueId": "",
|
|
20235
20412
|
"record.metadata.updateFrequency": "",
|
|
20236
20413
|
"record.metadata.updatedOn": "",
|
|
@@ -20350,7 +20527,6 @@ var es = {
|
|
|
20350
20527
|
"tooltip.html.copy": "",
|
|
20351
20528
|
"tooltip.id.copy": "",
|
|
20352
20529
|
"tooltip.url.copy": "",
|
|
20353
|
-
"tooltip.url.open": "",
|
|
20354
20530
|
"ui.readLess": "",
|
|
20355
20531
|
"ui.readMore": "",
|
|
20356
20532
|
"wfs.feature.limit": "",
|
|
@@ -20397,6 +20573,7 @@ var fr = {
|
|
|
20397
20573
|
"dashboard.labels.mySpace": "Mon espace",
|
|
20398
20574
|
"dashboard.records.all": "Jeux de données",
|
|
20399
20575
|
"dashboard.records.hasDraft": "brouillon",
|
|
20576
|
+
"dashboard.records.isMultilingual": "Cet enregistrement est multilingue ({languages})",
|
|
20400
20577
|
"dashboard.records.myDraft": "Mes brouillons",
|
|
20401
20578
|
"dashboard.records.myRecords": "Mes jeux de données",
|
|
20402
20579
|
"dashboard.records.search": "Résultats pour \"{searchText}\"",
|
|
@@ -20571,9 +20748,13 @@ var fr = {
|
|
|
20571
20748
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
20572
20749
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
20573
20750
|
"editor.record.form.license.unknown": "Inconnue ou absente",
|
|
20751
|
+
"editor.record.form.multilingual.activate": "Activez les langues",
|
|
20752
|
+
"editor.record.form.multilingual.default": "Par défaut",
|
|
20574
20753
|
"editor.record.form.multilingual.enable": "Mode Multilingue",
|
|
20754
|
+
"editor.record.form.multilingual.forbidden": "Vous ne pouvez pas supprimer le language par défaut",
|
|
20575
20755
|
"editor.record.form.multilingual.open": "Ouvrir le menu multilingue",
|
|
20576
20756
|
"editor.record.form.multilingual.title": "Traductions",
|
|
20757
|
+
"editor.record.form.multilingual.validate": "Valider",
|
|
20577
20758
|
"editor.record.form.page.accessAndContact": "Informations pour l'utilisation",
|
|
20578
20759
|
"editor.record.form.page.description": "Description du jeu de données",
|
|
20579
20760
|
"editor.record.form.page.resources": "Ressources",
|
|
@@ -20603,8 +20784,13 @@ var fr = {
|
|
|
20603
20784
|
"editor.record.loadError.body": "Le jeu de données n'a pas pu être chargé :",
|
|
20604
20785
|
"editor.record.loadError.closeMessage": "Compris",
|
|
20605
20786
|
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
20606
|
-
"editor.record.lock.
|
|
20607
|
-
"editor.record.lock.
|
|
20787
|
+
"editor.record.lock.harvested": "Les jeux de données moissonnés ne sont pas éditables",
|
|
20788
|
+
"editor.record.lock.owner": "Vous n'êtes pas éditeur d'un des groupes autorisés",
|
|
20789
|
+
"editor.record.lock.resourceType": "Les fiches d'un type autre que jeu de données ne sont pas éditables",
|
|
20790
|
+
"editor.record.multilingual.confirmation.cancelText": "Garder le(s) language(s)",
|
|
20791
|
+
"editor.record.multilingual.confirmation.confirmText": "Supprimer le(s) language(s)",
|
|
20792
|
+
"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 ?",
|
|
20793
|
+
"editor.record.multilingual.confirmation.title": "Suppression de language(s)",
|
|
20608
20794
|
"editor.record.onlineResource.protocol.other": "Autre",
|
|
20609
20795
|
"editor.record.onlineResourceError.body": "Une erreur est survenue lors de l'ajout de la ressource :",
|
|
20610
20796
|
"editor.record.onlineResourceError.closeMessage": "Compris",
|
|
@@ -20651,6 +20837,11 @@ var fr = {
|
|
|
20651
20837
|
"facets.block.title.tag.default": "Tag",
|
|
20652
20838
|
"facets.block.title.th_regions_tree.default": "Régions",
|
|
20653
20839
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
|
|
20840
|
+
"feature.catalog.attribute.code": "Code",
|
|
20841
|
+
"feature.catalog.attribute.definition": "Description",
|
|
20842
|
+
"feature.catalog.attribute.name": "Nom",
|
|
20843
|
+
"feature.catalog.attribute.type": "Type",
|
|
20844
|
+
"feature.catalog.attribute.values": "Valeurs",
|
|
20654
20845
|
"input.file.dropFileLabel": "ou glissez-le ici",
|
|
20655
20846
|
"input.file.orInputUrl": "ou créez un lien vers une ressource externe",
|
|
20656
20847
|
"input.file.selectFileLabel": "Sélectionnez un fichier ({sizeMB} Mo max.)",
|
|
@@ -20665,20 +20856,32 @@ var fr = {
|
|
|
20665
20856
|
"input.image.uploadErrorLabel": "L'image n'a pas pu être chargée",
|
|
20666
20857
|
"input.image.uploadProgressCancel": "Annuler",
|
|
20667
20858
|
"input.image.uploadProgressLabel": "Chargement en cours...",
|
|
20859
|
+
"language.ar": "Arabe",
|
|
20860
|
+
"language.az": "Azéri",
|
|
20668
20861
|
"language.ca": "Catalan",
|
|
20669
20862
|
"language.cs": "Tchèque",
|
|
20863
|
+
"language.cy": "Gallois",
|
|
20864
|
+
"language.da": "Danois",
|
|
20670
20865
|
"language.de": "Allemand",
|
|
20671
20866
|
"language.en": "Anglais",
|
|
20672
20867
|
"language.es": "Espagnol",
|
|
20673
20868
|
"language.fi": "Finnois",
|
|
20674
20869
|
"language.fr": "Français",
|
|
20870
|
+
"language.hy": "Arménien",
|
|
20675
20871
|
"language.is": "Islandais",
|
|
20676
20872
|
"language.it": "Italien",
|
|
20873
|
+
"language.ka": "Géorgien",
|
|
20677
20874
|
"language.ko": "Coréen",
|
|
20678
20875
|
"language.nl": "Néerlandais",
|
|
20876
|
+
"language.no": "Norvégien",
|
|
20877
|
+
"language.pl": "Polonais",
|
|
20679
20878
|
"language.pt": "Portugais",
|
|
20879
|
+
"language.rm": "Romanche",
|
|
20680
20880
|
"language.ru": "Russe",
|
|
20681
20881
|
"language.sk": "Slovaque",
|
|
20882
|
+
"language.sv": "Suédois",
|
|
20883
|
+
"language.tr": "Turque",
|
|
20884
|
+
"language.uk": "Ukrainien",
|
|
20682
20885
|
"language.zh": "Chinois",
|
|
20683
20886
|
"map.add.layer": "Ajouter une couche",
|
|
20684
20887
|
"map.add.layer.catalog": "Du catalogue",
|
|
@@ -20725,6 +20928,7 @@ var fr = {
|
|
|
20725
20928
|
"record.action.duplicate": "Dupliquer",
|
|
20726
20929
|
"record.action.duplicating": "Duplication...",
|
|
20727
20930
|
"record.action.rollback": "Restaurer",
|
|
20931
|
+
"record.action.switchLang": "Marquer par défaut",
|
|
20728
20932
|
"record.action.view": "Voir",
|
|
20729
20933
|
"record.card.metadata.contact": "Contact de la métadonnée ",
|
|
20730
20934
|
"record.externalViewer.open": "Ouvrir dans le visualiseur externe",
|
|
@@ -20775,9 +20979,15 @@ var fr = {
|
|
|
20775
20979
|
"record.metadata.download": "Téléchargements",
|
|
20776
20980
|
"record.metadata.feature.catalog": "Catalogue d'attributs",
|
|
20777
20981
|
"record.metadata.formats": "Formats",
|
|
20982
|
+
"record.metadata.isGeographical": "Donnée géographique",
|
|
20778
20983
|
"record.metadata.keywords": "Mots-clés",
|
|
20779
20984
|
"record.metadata.languages": "Langues",
|
|
20780
20985
|
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
20986
|
+
"record.metadata.linked.datasets": "Jeux de données associés",
|
|
20987
|
+
"record.metadata.linked.records": "Contenus associés",
|
|
20988
|
+
"record.metadata.linked.reuses": "Réutilisations associées",
|
|
20989
|
+
"record.metadata.linked.services": "Services associés",
|
|
20990
|
+
"record.metadata.linked.sourceDatasets": "Jeux de données sources",
|
|
20781
20991
|
"record.metadata.links": "Liens",
|
|
20782
20992
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
20783
20993
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
@@ -20787,6 +20997,8 @@ var fr = {
|
|
|
20787
20997
|
"record.metadata.publication": "Date de publication",
|
|
20788
20998
|
"record.metadata.publications": "{count, plural, =0{donnée} one{donnée} other{données}}",
|
|
20789
20999
|
"record.metadata.quality": "Qualité des métadonnées",
|
|
21000
|
+
"record.metadata.quality.capabilities.failed": "Aucune URL de Capabilities n'est renseignée",
|
|
21001
|
+
"record.metadata.quality.capabilities.success": "Une URL de Capabilities est renseignée",
|
|
20790
21002
|
"record.metadata.quality.contact.failed": "Le contact n'est pas renseigné",
|
|
20791
21003
|
"record.metadata.quality.contact.success": "Le contact est renseigné",
|
|
20792
21004
|
"record.metadata.quality.description.failed": "La description n'est pas renseignée",
|
|
@@ -20798,14 +21010,15 @@ var fr = {
|
|
|
20798
21010
|
"record.metadata.quality.legalConstraints.success": "Les contraintes légales sont renseignées",
|
|
20799
21011
|
"record.metadata.quality.organisation.failed": "Le producteur n'est pas renseigné",
|
|
20800
21012
|
"record.metadata.quality.organisation.success": "Le producteur est renseigné",
|
|
21013
|
+
"record.metadata.quality.source.failed": "Aucun jeu de données source n'est renseigné",
|
|
21014
|
+
"record.metadata.quality.source.success": "Un jeu de données source est renseigné",
|
|
20801
21015
|
"record.metadata.quality.title.failed": "Le titre n'est pas renseigné",
|
|
20802
21016
|
"record.metadata.quality.title.success": "Le titre est renseigné",
|
|
20803
21017
|
"record.metadata.quality.topic.failed": "Le thème n'est pas renseigné",
|
|
20804
21018
|
"record.metadata.quality.topic.success": "Le thème est renseigné",
|
|
20805
21019
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20806
21020
|
"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é",
|
|
21021
|
+
"record.metadata.related": "Explorez le catalogue",
|
|
20809
21022
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20810
21023
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20811
21024
|
"record.metadata.status": "Statut",
|
|
@@ -20817,7 +21030,6 @@ var fr = {
|
|
|
20817
21030
|
"record.metadata.temporalExtent.untilDate": "Jusqu'au { end }",
|
|
20818
21031
|
"record.metadata.title": "Intitulé",
|
|
20819
21032
|
"record.metadata.topics": "Catégories",
|
|
20820
|
-
"record.metadata.isGeographical": "Donnée géographique",
|
|
20821
21033
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
20822
21034
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
20823
21035
|
"record.metadata.updatedOn": "Modifié le",
|
|
@@ -20937,7 +21149,6 @@ var fr = {
|
|
|
20937
21149
|
"tooltip.html.copy": "Copier le HTML",
|
|
20938
21150
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
20939
21151
|
"tooltip.url.copy": "Copier l'URL",
|
|
20940
|
-
"tooltip.url.open": "Ouvrir l'URL",
|
|
20941
21152
|
"ui.readLess": "Réduire",
|
|
20942
21153
|
"ui.readMore": "Lire la suite",
|
|
20943
21154
|
"wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
|
|
@@ -20984,6 +21195,7 @@ var it = {
|
|
|
20984
21195
|
"dashboard.labels.mySpace": "Il mio spazio",
|
|
20985
21196
|
"dashboard.records.all": "Catalogo",
|
|
20986
21197
|
"dashboard.records.hasDraft": "Bozza",
|
|
21198
|
+
"dashboard.records.isMultilingual": "Questo record è multilingue ({languages})",
|
|
20987
21199
|
"dashboard.records.myDraft": "Le mie bozze",
|
|
20988
21200
|
"dashboard.records.myRecords": "I miei dati",
|
|
20989
21201
|
"dashboard.records.search": "Risultati per \"{searchText}\"",
|
|
@@ -21161,6 +21373,10 @@ var it = {
|
|
|
21161
21373
|
"editor.record.form.multilingual.enable": "Aprire il pannello multilingue",
|
|
21162
21374
|
"editor.record.form.multilingual.open": "Modalità multilingue",
|
|
21163
21375
|
"editor.record.form.multilingual.title": "Traduzioni",
|
|
21376
|
+
"editor.record.form.multilingual.activate": "",
|
|
21377
|
+
"editor.record.form.multilingual.default": "",
|
|
21378
|
+
"editor.record.form.multilingual.forbidden": "",
|
|
21379
|
+
"editor.record.form.multilingual.validate": "",
|
|
21164
21380
|
"editor.record.form.page.accessAndContact": "Informazioni per l'uso",
|
|
21165
21381
|
"editor.record.form.page.description": "Descrizione del dataset",
|
|
21166
21382
|
"editor.record.form.page.resources": "Risorse",
|
|
@@ -21190,8 +21406,13 @@ var it = {
|
|
|
21190
21406
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21191
21407
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21192
21408
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21193
|
-
"editor.record.lock.
|
|
21194
|
-
"editor.record.lock.
|
|
21409
|
+
"editor.record.lock.harvested": "",
|
|
21410
|
+
"editor.record.lock.owner": "Non è un editore di uno dei gruppi autorizzati",
|
|
21411
|
+
"editor.record.lock.resourceType": "I record con il formato 'servizio' o 'riutilizzo' non sono modificabili",
|
|
21412
|
+
"editor.record.multilingual.confirmation.cancelText": "",
|
|
21413
|
+
"editor.record.multilingual.confirmation.confirmText": "",
|
|
21414
|
+
"editor.record.multilingual.confirmation.message": "",
|
|
21415
|
+
"editor.record.multilingual.confirmation.title": "",
|
|
21195
21416
|
"editor.record.onlineResource.protocol.other": "Altro",
|
|
21196
21417
|
"editor.record.onlineResourceError.body": "Ha successo un'errore durante l'aggiunta della risorsa:",
|
|
21197
21418
|
"editor.record.onlineResourceError.closeMessage": "Capito",
|
|
@@ -21238,6 +21459,11 @@ var it = {
|
|
|
21238
21459
|
"facets.block.title.tag.default": "Tag",
|
|
21239
21460
|
"facets.block.title.th_regions_tree.default": "Regioni",
|
|
21240
21461
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
|
|
21462
|
+
"feature.catalog.attribute.code": "Codice",
|
|
21463
|
+
"feature.catalog.attribute.definition": "Descrizione",
|
|
21464
|
+
"feature.catalog.attribute.name": "Nome",
|
|
21465
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
21466
|
+
"feature.catalog.attribute.values": "Valori",
|
|
21241
21467
|
"input.file.dropFileLabel": "oppure trascinalo qui",
|
|
21242
21468
|
"input.file.orInputUrl": "o collegamento a una risorsa esterna",
|
|
21243
21469
|
"input.file.selectFileLabel": "Seleziona un file ({sizeMB} MB max.)",
|
|
@@ -21252,20 +21478,32 @@ var it = {
|
|
|
21252
21478
|
"input.image.uploadErrorLabel": "Impossibile caricare l'immagine",
|
|
21253
21479
|
"input.image.uploadProgressCancel": "Annulla",
|
|
21254
21480
|
"input.image.uploadProgressLabel": "Caricamento...",
|
|
21481
|
+
"language.ar": "",
|
|
21482
|
+
"language.az": "",
|
|
21255
21483
|
"language.ca": "Catalano",
|
|
21256
21484
|
"language.cs": "Ceco",
|
|
21485
|
+
"language.cy": "",
|
|
21486
|
+
"language.da": "",
|
|
21257
21487
|
"language.de": "Tedesco",
|
|
21258
21488
|
"language.en": "Inglese",
|
|
21259
21489
|
"language.es": "Spagnolo",
|
|
21260
21490
|
"language.fi": "Finlandese",
|
|
21261
21491
|
"language.fr": "Francese",
|
|
21492
|
+
"language.hy": "",
|
|
21262
21493
|
"language.is": "Islandese",
|
|
21263
21494
|
"language.it": "Italiano",
|
|
21495
|
+
"language.ka": "",
|
|
21264
21496
|
"language.ko": "Coreano",
|
|
21265
21497
|
"language.nl": "Olandese",
|
|
21498
|
+
"language.no": "",
|
|
21499
|
+
"language.pl": "",
|
|
21266
21500
|
"language.pt": "Portoghese",
|
|
21501
|
+
"language.rm": "",
|
|
21267
21502
|
"language.ru": "Russo",
|
|
21268
21503
|
"language.sk": "Slovacco",
|
|
21504
|
+
"language.sv": "",
|
|
21505
|
+
"language.tr": "",
|
|
21506
|
+
"language.uk": "",
|
|
21269
21507
|
"language.zh": "Cinese",
|
|
21270
21508
|
"map.add.layer": "Aggiungere un layer",
|
|
21271
21509
|
"map.add.layer.catalog": "Dal catalogo",
|
|
@@ -21312,6 +21550,7 @@ var it = {
|
|
|
21312
21550
|
"record.action.duplicate": "Duplicato",
|
|
21313
21551
|
"record.action.duplicating": "Duplicazione",
|
|
21314
21552
|
"record.action.rollback": "Annulla",
|
|
21553
|
+
"record.action.switchLang": "",
|
|
21315
21554
|
"record.action.view": "Visualizza",
|
|
21316
21555
|
"record.card.metadata.contact": "Contatto del metadata",
|
|
21317
21556
|
"record.externalViewer.open": "Aprire nel visualizzatore esterno",
|
|
@@ -21362,9 +21601,15 @@ var it = {
|
|
|
21362
21601
|
"record.metadata.download": "Download",
|
|
21363
21602
|
"record.metadata.feature.catalog": "Catalogo dei oggetti",
|
|
21364
21603
|
"record.metadata.formats": "Formati",
|
|
21604
|
+
"record.metadata.isGeographical": "Dati geografici",
|
|
21365
21605
|
"record.metadata.keywords": "Parole chiave",
|
|
21366
21606
|
"record.metadata.languages": "Lingue",
|
|
21367
21607
|
"record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
|
|
21608
|
+
"record.metadata.linked.datasets": "",
|
|
21609
|
+
"record.metadata.linked.records": "",
|
|
21610
|
+
"record.metadata.linked.reuses": "",
|
|
21611
|
+
"record.metadata.linked.services": "",
|
|
21612
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
21368
21613
|
"record.metadata.links": "Collegamenti",
|
|
21369
21614
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
21370
21615
|
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
@@ -21374,6 +21619,8 @@ var it = {
|
|
|
21374
21619
|
"record.metadata.publication": "Data di pubblicazione",
|
|
21375
21620
|
"record.metadata.publications": "{count, plural, =0{pubblicazione} one{pubblicazione} other{pubblicazioni}}",
|
|
21376
21621
|
"record.metadata.quality": "Qualità dei metadati",
|
|
21622
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
21623
|
+
"record.metadata.quality.capabilities.success": "",
|
|
21377
21624
|
"record.metadata.quality.contact.failed": "Il contatto non è specificato",
|
|
21378
21625
|
"record.metadata.quality.contact.success": "Il contatto è specificato",
|
|
21379
21626
|
"record.metadata.quality.description.failed": "La descrizione non è specificata",
|
|
@@ -21385,6 +21632,8 @@ var it = {
|
|
|
21385
21632
|
"record.metadata.quality.legalConstraints.success": "I vincoli legali sono specificate",
|
|
21386
21633
|
"record.metadata.quality.organisation.failed": "Il produttore non è specificato",
|
|
21387
21634
|
"record.metadata.quality.organisation.success": "Il produttore è specificato",
|
|
21635
|
+
"record.metadata.quality.source.failed": "",
|
|
21636
|
+
"record.metadata.quality.source.success": "",
|
|
21388
21637
|
"record.metadata.quality.title.failed": "Il titolo non è specificato",
|
|
21389
21638
|
"record.metadata.quality.title.success": "Il titolo è specificato",
|
|
21390
21639
|
"record.metadata.quality.topic.failed": "Il tema non è specificato",
|
|
@@ -21392,7 +21641,6 @@ var it = {
|
|
|
21392
21641
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21393
21642
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21394
21643
|
"record.metadata.related": "Vedi anche",
|
|
21395
|
-
"record.metadata.related.contents": "Contenuti correlati",
|
|
21396
21644
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21397
21645
|
"record.metadata.sheet": "Origine del metadata",
|
|
21398
21646
|
"record.metadata.status": "Stato",
|
|
@@ -21404,7 +21652,6 @@ var it = {
|
|
|
21404
21652
|
"record.metadata.temporalExtent.untilDate": "Fino a {end}",
|
|
21405
21653
|
"record.metadata.title": "Titolo",
|
|
21406
21654
|
"record.metadata.topics": "Categorie",
|
|
21407
|
-
"record.metadata.isGeographical": "Dati geografici",
|
|
21408
21655
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
21409
21656
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
21410
21657
|
"record.metadata.updatedOn": "Modificato il",
|
|
@@ -21524,7 +21771,6 @@ var it = {
|
|
|
21524
21771
|
"tooltip.html.copy": "Copiare il HTML",
|
|
21525
21772
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
21526
21773
|
"tooltip.url.copy": "Copiare l'URL",
|
|
21527
|
-
"tooltip.url.open": "Aprire l'URL",
|
|
21528
21774
|
"ui.readLess": "Ridurre",
|
|
21529
21775
|
"ui.readMore": "Leggere di più",
|
|
21530
21776
|
"wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
|
|
@@ -21571,6 +21817,7 @@ var nl = {
|
|
|
21571
21817
|
"dashboard.labels.mySpace": "Mijn ruimte",
|
|
21572
21818
|
"dashboard.records.all": "Catalogus",
|
|
21573
21819
|
"dashboard.records.hasDraft": "",
|
|
21820
|
+
"dashboard.records.isMultilingual": "Dit record is meertalig ({languages})",
|
|
21574
21821
|
"dashboard.records.myDraft": "Mijn concepten",
|
|
21575
21822
|
"dashboard.records.myRecords": "Mijn Records",
|
|
21576
21823
|
"dashboard.records.search": "Zoeken naar \"{searchText}\"",
|
|
@@ -21745,9 +21992,13 @@ var nl = {
|
|
|
21745
21992
|
"editor.record.form.license.odc-by": "",
|
|
21746
21993
|
"editor.record.form.license.pddl": "",
|
|
21747
21994
|
"editor.record.form.license.unknown": "",
|
|
21995
|
+
"editor.record.form.multilingual.activate": "",
|
|
21996
|
+
"editor.record.form.multilingual.default": "",
|
|
21748
21997
|
"editor.record.form.multilingual.enable": "",
|
|
21998
|
+
"editor.record.form.multilingual.forbidden": "",
|
|
21749
21999
|
"editor.record.form.multilingual.open": "",
|
|
21750
22000
|
"editor.record.form.multilingual.title": "",
|
|
22001
|
+
"editor.record.form.multilingual.validate": "",
|
|
21751
22002
|
"editor.record.form.page.accessAndContact": "",
|
|
21752
22003
|
"editor.record.form.page.description": "",
|
|
21753
22004
|
"editor.record.form.page.resources": "",
|
|
@@ -21777,8 +22028,13 @@ var nl = {
|
|
|
21777
22028
|
"editor.record.loadError.body": "",
|
|
21778
22029
|
"editor.record.loadError.closeMessage": "",
|
|
21779
22030
|
"editor.record.loadError.title": "",
|
|
21780
|
-
"editor.record.lock.
|
|
21781
|
-
"editor.record.lock.
|
|
22031
|
+
"editor.record.lock.harvested": "",
|
|
22032
|
+
"editor.record.lock.owner": "",
|
|
22033
|
+
"editor.record.lock.resourceType": "",
|
|
22034
|
+
"editor.record.multilingual.confirmation.cancelText": "",
|
|
22035
|
+
"editor.record.multilingual.confirmation.confirmText": "",
|
|
22036
|
+
"editor.record.multilingual.confirmation.message": "",
|
|
22037
|
+
"editor.record.multilingual.confirmation.title": "",
|
|
21782
22038
|
"editor.record.onlineResource.protocol.other": "",
|
|
21783
22039
|
"editor.record.onlineResourceError.body": "",
|
|
21784
22040
|
"editor.record.onlineResourceError.closeMessage": "",
|
|
@@ -21825,6 +22081,11 @@ var nl = {
|
|
|
21825
22081
|
"facets.block.title.tag.default": "",
|
|
21826
22082
|
"facets.block.title.th_regions_tree.default": "",
|
|
21827
22083
|
"favorite.not.authenticated.tooltip": "",
|
|
22084
|
+
"feature.catalog.attribute.code": "Code",
|
|
22085
|
+
"feature.catalog.attribute.definition": "Beschrijving",
|
|
22086
|
+
"feature.catalog.attribute.name": "Naam",
|
|
22087
|
+
"feature.catalog.attribute.type": "Type",
|
|
22088
|
+
"feature.catalog.attribute.values": "Waarden",
|
|
21828
22089
|
"input.file.dropFileLabel": "",
|
|
21829
22090
|
"input.file.orInputUrl": "",
|
|
21830
22091
|
"input.file.selectFileLabel": "",
|
|
@@ -21839,20 +22100,32 @@ var nl = {
|
|
|
21839
22100
|
"input.image.uploadErrorLabel": "",
|
|
21840
22101
|
"input.image.uploadProgressCancel": "",
|
|
21841
22102
|
"input.image.uploadProgressLabel": "",
|
|
22103
|
+
"language.ar": "",
|
|
22104
|
+
"language.az": "",
|
|
21842
22105
|
"language.ca": "Catalaans",
|
|
21843
22106
|
"language.cs": "Tsjechisch",
|
|
22107
|
+
"language.cy": "",
|
|
22108
|
+
"language.da": "",
|
|
21844
22109
|
"language.de": "Duits",
|
|
21845
22110
|
"language.en": "Engels",
|
|
21846
22111
|
"language.es": "Spaans",
|
|
21847
22112
|
"language.fi": "Fins",
|
|
21848
22113
|
"language.fr": "Frans",
|
|
22114
|
+
"language.hy": "",
|
|
21849
22115
|
"language.is": "IJslands",
|
|
21850
22116
|
"language.it": "Italiaans",
|
|
22117
|
+
"language.ka": "",
|
|
21851
22118
|
"language.ko": "Koreaans",
|
|
21852
22119
|
"language.nl": "Nederlands",
|
|
22120
|
+
"language.no": "",
|
|
22121
|
+
"language.pl": "",
|
|
21853
22122
|
"language.pt": "Portugees",
|
|
22123
|
+
"language.rm": "",
|
|
21854
22124
|
"language.ru": "Russisch",
|
|
21855
22125
|
"language.sk": "Slowaaks",
|
|
22126
|
+
"language.sv": "",
|
|
22127
|
+
"language.tr": "",
|
|
22128
|
+
"language.uk": "",
|
|
21856
22129
|
"language.zh": "Chinees",
|
|
21857
22130
|
"map.add.layer": "",
|
|
21858
22131
|
"map.add.layer.catalog": "",
|
|
@@ -21899,6 +22172,7 @@ var nl = {
|
|
|
21899
22172
|
"record.action.duplicate": "",
|
|
21900
22173
|
"record.action.duplicating": "",
|
|
21901
22174
|
"record.action.rollback": "",
|
|
22175
|
+
"record.action.switchLang": "",
|
|
21902
22176
|
"record.action.view": "",
|
|
21903
22177
|
"record.card.metadata.contact": "",
|
|
21904
22178
|
"record.externalViewer.open": "",
|
|
@@ -21949,9 +22223,15 @@ var nl = {
|
|
|
21949
22223
|
"record.metadata.download": "",
|
|
21950
22224
|
"record.metadata.feature.catalog": "",
|
|
21951
22225
|
"record.metadata.formats": "",
|
|
22226
|
+
"record.metadata.isGeographical": "",
|
|
21952
22227
|
"record.metadata.keywords": "",
|
|
21953
22228
|
"record.metadata.languages": "",
|
|
21954
22229
|
"record.metadata.lastUpdate": "",
|
|
22230
|
+
"record.metadata.linked.datasets": "",
|
|
22231
|
+
"record.metadata.linked.records": "",
|
|
22232
|
+
"record.metadata.linked.reuses": "",
|
|
22233
|
+
"record.metadata.linked.services": "",
|
|
22234
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
21955
22235
|
"record.metadata.links": "",
|
|
21956
22236
|
"record.metadata.noUsage": "",
|
|
21957
22237
|
"record.metadata.otherConstraints": "",
|
|
@@ -21961,6 +22241,8 @@ var nl = {
|
|
|
21961
22241
|
"record.metadata.publication": "",
|
|
21962
22242
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
21963
22243
|
"record.metadata.quality": "",
|
|
22244
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
22245
|
+
"record.metadata.quality.capabilities.success": "",
|
|
21964
22246
|
"record.metadata.quality.contact.failed": "",
|
|
21965
22247
|
"record.metadata.quality.contact.success": "",
|
|
21966
22248
|
"record.metadata.quality.description.failed": "",
|
|
@@ -21972,6 +22254,8 @@ var nl = {
|
|
|
21972
22254
|
"record.metadata.quality.legalConstraints.success": "",
|
|
21973
22255
|
"record.metadata.quality.organisation.failed": "",
|
|
21974
22256
|
"record.metadata.quality.organisation.success": "",
|
|
22257
|
+
"record.metadata.quality.source.failed": "",
|
|
22258
|
+
"record.metadata.quality.source.success": "",
|
|
21975
22259
|
"record.metadata.quality.title.failed": "",
|
|
21976
22260
|
"record.metadata.quality.title.success": "",
|
|
21977
22261
|
"record.metadata.quality.topic.failed": "",
|
|
@@ -21979,7 +22263,6 @@ var nl = {
|
|
|
21979
22263
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
21980
22264
|
"record.metadata.quality.updateFrequency.success": "",
|
|
21981
22265
|
"record.metadata.related": "",
|
|
21982
|
-
"record.metadata.related.contents": "",
|
|
21983
22266
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
21984
22267
|
"record.metadata.sheet": "",
|
|
21985
22268
|
"record.metadata.status": "",
|
|
@@ -21991,7 +22274,6 @@ var nl = {
|
|
|
21991
22274
|
"record.metadata.temporalExtent.untilDate": "",
|
|
21992
22275
|
"record.metadata.title": "",
|
|
21993
22276
|
"record.metadata.topics": "",
|
|
21994
|
-
"record.metadata.isGeographical": "",
|
|
21995
22277
|
"record.metadata.uniqueId": "",
|
|
21996
22278
|
"record.metadata.updateFrequency": "",
|
|
21997
22279
|
"record.metadata.updatedOn": "",
|
|
@@ -22111,7 +22393,6 @@ var nl = {
|
|
|
22111
22393
|
"tooltip.html.copy": "",
|
|
22112
22394
|
"tooltip.id.copy": "",
|
|
22113
22395
|
"tooltip.url.copy": "",
|
|
22114
|
-
"tooltip.url.open": "",
|
|
22115
22396
|
"ui.readLess": "",
|
|
22116
22397
|
"ui.readMore": "",
|
|
22117
22398
|
"wfs.feature.limit": "",
|
|
@@ -22158,6 +22439,7 @@ var pt = {
|
|
|
22158
22439
|
"dashboard.labels.mySpace": "Meu espaço",
|
|
22159
22440
|
"dashboard.records.all": "Catálogo",
|
|
22160
22441
|
"dashboard.records.hasDraft": "",
|
|
22442
|
+
"dashboard.records.isMultilingual": "Este registro é multilíngue ({languages})",
|
|
22161
22443
|
"dashboard.records.myDraft": "Meus rascunhos",
|
|
22162
22444
|
"dashboard.records.myRecords": "Meus Registros",
|
|
22163
22445
|
"dashboard.records.search": "Buscar por \"{searchText}\"",
|
|
@@ -22332,9 +22614,13 @@ var pt = {
|
|
|
22332
22614
|
"editor.record.form.license.odc-by": "",
|
|
22333
22615
|
"editor.record.form.license.pddl": "",
|
|
22334
22616
|
"editor.record.form.license.unknown": "",
|
|
22617
|
+
"editor.record.form.multilingual.activate": "",
|
|
22618
|
+
"editor.record.form.multilingual.default": "",
|
|
22335
22619
|
"editor.record.form.multilingual.enable": "",
|
|
22620
|
+
"editor.record.form.multilingual.forbidden": "",
|
|
22336
22621
|
"editor.record.form.multilingual.open": "",
|
|
22337
22622
|
"editor.record.form.multilingual.title": "",
|
|
22623
|
+
"editor.record.form.multilingual.validate": "",
|
|
22338
22624
|
"editor.record.form.page.accessAndContact": "",
|
|
22339
22625
|
"editor.record.form.page.description": "",
|
|
22340
22626
|
"editor.record.form.page.resources": "",
|
|
@@ -22364,8 +22650,13 @@ var pt = {
|
|
|
22364
22650
|
"editor.record.loadError.body": "",
|
|
22365
22651
|
"editor.record.loadError.closeMessage": "",
|
|
22366
22652
|
"editor.record.loadError.title": "",
|
|
22367
|
-
"editor.record.lock.
|
|
22368
|
-
"editor.record.lock.
|
|
22653
|
+
"editor.record.lock.harvested": "",
|
|
22654
|
+
"editor.record.lock.owner": "",
|
|
22655
|
+
"editor.record.lock.resourceType": "",
|
|
22656
|
+
"editor.record.multilingual.confirmation.cancelText": "",
|
|
22657
|
+
"editor.record.multilingual.confirmation.confirmText": "",
|
|
22658
|
+
"editor.record.multilingual.confirmation.message": "",
|
|
22659
|
+
"editor.record.multilingual.confirmation.title": "",
|
|
22369
22660
|
"editor.record.onlineResource.protocol.other": "",
|
|
22370
22661
|
"editor.record.onlineResourceError.body": "",
|
|
22371
22662
|
"editor.record.onlineResourceError.closeMessage": "",
|
|
@@ -22412,6 +22703,11 @@ var pt = {
|
|
|
22412
22703
|
"facets.block.title.tag.default": "",
|
|
22413
22704
|
"facets.block.title.th_regions_tree.default": "",
|
|
22414
22705
|
"favorite.not.authenticated.tooltip": "",
|
|
22706
|
+
"feature.catalog.attribute.code": "Código",
|
|
22707
|
+
"feature.catalog.attribute.definition": "Descrição",
|
|
22708
|
+
"feature.catalog.attribute.name": "Nome",
|
|
22709
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
22710
|
+
"feature.catalog.attribute.values": "Valores",
|
|
22415
22711
|
"input.file.dropFileLabel": "",
|
|
22416
22712
|
"input.file.orInputUrl": "",
|
|
22417
22713
|
"input.file.selectFileLabel": "",
|
|
@@ -22426,20 +22722,32 @@ var pt = {
|
|
|
22426
22722
|
"input.image.uploadErrorLabel": "",
|
|
22427
22723
|
"input.image.uploadProgressCancel": "",
|
|
22428
22724
|
"input.image.uploadProgressLabel": "",
|
|
22725
|
+
"language.ar": "",
|
|
22726
|
+
"language.az": "",
|
|
22429
22727
|
"language.ca": "Catalão",
|
|
22430
22728
|
"language.cs": "Tcheco",
|
|
22729
|
+
"language.cy": "",
|
|
22730
|
+
"language.da": "",
|
|
22431
22731
|
"language.de": "Alemão",
|
|
22432
22732
|
"language.en": "Inglês",
|
|
22433
22733
|
"language.es": "Espanhol",
|
|
22434
22734
|
"language.fi": "Finlandês",
|
|
22435
22735
|
"language.fr": "Francês",
|
|
22736
|
+
"language.hy": "",
|
|
22436
22737
|
"language.is": "Islandês",
|
|
22437
22738
|
"language.it": "Italiano",
|
|
22739
|
+
"language.ka": "",
|
|
22438
22740
|
"language.ko": "Coreano",
|
|
22439
22741
|
"language.nl": "Holandês",
|
|
22742
|
+
"language.no": "",
|
|
22743
|
+
"language.pl": "",
|
|
22440
22744
|
"language.pt": "Português",
|
|
22745
|
+
"language.rm": "",
|
|
22441
22746
|
"language.ru": "Russo",
|
|
22442
22747
|
"language.sk": "Eslovaco",
|
|
22748
|
+
"language.sv": "",
|
|
22749
|
+
"language.tr": "",
|
|
22750
|
+
"language.uk": "",
|
|
22443
22751
|
"language.zh": "Chinês",
|
|
22444
22752
|
"map.add.layer": "",
|
|
22445
22753
|
"map.add.layer.catalog": "",
|
|
@@ -22486,6 +22794,7 @@ var pt = {
|
|
|
22486
22794
|
"record.action.duplicate": "",
|
|
22487
22795
|
"record.action.duplicating": "",
|
|
22488
22796
|
"record.action.rollback": "",
|
|
22797
|
+
"record.action.switchLang": "",
|
|
22489
22798
|
"record.action.view": "",
|
|
22490
22799
|
"record.card.metadata.contact": "",
|
|
22491
22800
|
"record.externalViewer.open": "",
|
|
@@ -22536,9 +22845,15 @@ var pt = {
|
|
|
22536
22845
|
"record.metadata.download": "",
|
|
22537
22846
|
"record.metadata.feature.catalog": "",
|
|
22538
22847
|
"record.metadata.formats": "",
|
|
22848
|
+
"record.metadata.isGeographical": "",
|
|
22539
22849
|
"record.metadata.keywords": "",
|
|
22540
22850
|
"record.metadata.languages": "",
|
|
22541
22851
|
"record.metadata.lastUpdate": "",
|
|
22852
|
+
"record.metadata.linked.datasets": "",
|
|
22853
|
+
"record.metadata.linked.records": "",
|
|
22854
|
+
"record.metadata.linked.reuses": "",
|
|
22855
|
+
"record.metadata.linked.services": "",
|
|
22856
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
22542
22857
|
"record.metadata.links": "",
|
|
22543
22858
|
"record.metadata.noUsage": "",
|
|
22544
22859
|
"record.metadata.otherConstraints": "",
|
|
@@ -22548,6 +22863,8 @@ var pt = {
|
|
|
22548
22863
|
"record.metadata.publication": "",
|
|
22549
22864
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
22550
22865
|
"record.metadata.quality": "",
|
|
22866
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
22867
|
+
"record.metadata.quality.capabilities.success": "",
|
|
22551
22868
|
"record.metadata.quality.contact.failed": "",
|
|
22552
22869
|
"record.metadata.quality.contact.success": "",
|
|
22553
22870
|
"record.metadata.quality.description.failed": "",
|
|
@@ -22559,6 +22876,8 @@ var pt = {
|
|
|
22559
22876
|
"record.metadata.quality.legalConstraints.success": "",
|
|
22560
22877
|
"record.metadata.quality.organisation.failed": "",
|
|
22561
22878
|
"record.metadata.quality.organisation.success": "",
|
|
22879
|
+
"record.metadata.quality.source.failed": "",
|
|
22880
|
+
"record.metadata.quality.source.success": "",
|
|
22562
22881
|
"record.metadata.quality.title.failed": "",
|
|
22563
22882
|
"record.metadata.quality.title.success": "",
|
|
22564
22883
|
"record.metadata.quality.topic.failed": "",
|
|
@@ -22566,7 +22885,6 @@ var pt = {
|
|
|
22566
22885
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22567
22886
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22568
22887
|
"record.metadata.related": "",
|
|
22569
|
-
"record.metadata.related.contents": "",
|
|
22570
22888
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22571
22889
|
"record.metadata.sheet": "",
|
|
22572
22890
|
"record.metadata.status": "",
|
|
@@ -22578,7 +22896,6 @@ var pt = {
|
|
|
22578
22896
|
"record.metadata.temporalExtent.untilDate": "",
|
|
22579
22897
|
"record.metadata.title": "",
|
|
22580
22898
|
"record.metadata.topics": "",
|
|
22581
|
-
"record.metadata.isGeographical": "",
|
|
22582
22899
|
"record.metadata.uniqueId": "",
|
|
22583
22900
|
"record.metadata.updateFrequency": "",
|
|
22584
22901
|
"record.metadata.updatedOn": "",
|
|
@@ -22698,7 +23015,6 @@ var pt = {
|
|
|
22698
23015
|
"tooltip.html.copy": "",
|
|
22699
23016
|
"tooltip.id.copy": "",
|
|
22700
23017
|
"tooltip.url.copy": "",
|
|
22701
|
-
"tooltip.url.open": "",
|
|
22702
23018
|
"ui.readLess": "",
|
|
22703
23019
|
"ui.readMore": "",
|
|
22704
23020
|
"wfs.feature.limit": "",
|
|
@@ -22816,10 +23132,18 @@ class Gn4FieldMapper {
|
|
|
22816
23132
|
const langList = getAsArray(selectField(source, 'resourceLanguage'));
|
|
22817
23133
|
const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
|
|
22818
23134
|
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
23135
|
return {
|
|
22821
23136
|
...output,
|
|
22822
23137
|
defaultLanguage,
|
|
23138
|
+
};
|
|
23139
|
+
},
|
|
23140
|
+
otherLanguage: (output, source) => {
|
|
23141
|
+
const langList = getAsArray(selectField(source, 'otherLanguage'));
|
|
23142
|
+
const languages = langList.map((lang) => LANG_3_TO_2_MAPPER[lang]);
|
|
23143
|
+
const defaultLanguage = output.defaultLanguage ?? languages[0] ?? null;
|
|
23144
|
+
const otherLanguages = languages.filter((lang) => lang !== defaultLanguage);
|
|
23145
|
+
return {
|
|
23146
|
+
...output,
|
|
22823
23147
|
otherLanguages,
|
|
22824
23148
|
};
|
|
22825
23149
|
},
|
|
@@ -22893,13 +23217,40 @@ class Gn4FieldMapper {
|
|
|
22893
23217
|
related: (output, source) => {
|
|
22894
23218
|
const fcatSource = selectField(getFirstValue(selectField(selectField(source, 'related'), 'fcats')) ?? {}, '_source');
|
|
22895
23219
|
const featureCatalogIdentifier = selectField(fcatSource, 'uuid');
|
|
22896
|
-
|
|
22897
|
-
|
|
23220
|
+
const sourceOfLinks = getAsArray(selectField(selectField(source, 'related'), 'hassources'));
|
|
23221
|
+
const sourceOfIdentifiers = sourceOfLinks
|
|
23222
|
+
.filter((link) => link['origin'] === 'catalog')
|
|
23223
|
+
.map((link) => {
|
|
23224
|
+
return selectField(selectField(link, '_source'), 'uuid');
|
|
23225
|
+
});
|
|
23226
|
+
const extraValues = {};
|
|
23227
|
+
if (featureCatalogIdentifier) {
|
|
23228
|
+
extraValues.featureCatalogIdentifier = featureCatalogIdentifier;
|
|
23229
|
+
}
|
|
23230
|
+
if (sourceOfIdentifiers && sourceOfIdentifiers.length > 0) {
|
|
23231
|
+
extraValues.sourceOfIdentifiers = sourceOfIdentifiers;
|
|
23232
|
+
}
|
|
23233
|
+
return Object.keys(extraValues).length > 0
|
|
23234
|
+
? this.addExtra(extraValues, output)
|
|
23235
|
+
: output;
|
|
23236
|
+
},
|
|
23237
|
+
recordLink: (output, source) => {
|
|
23238
|
+
const recordLinks = getAsArray(selectField(source, 'recordLink'));
|
|
23239
|
+
const sourcesIdentifiers = recordLinks
|
|
23240
|
+
.filter((link) => link['origin'] === 'catalog' && link['type'] === 'sources')
|
|
23241
|
+
.map((link) => selectField(link, 'to'));
|
|
23242
|
+
return sourcesIdentifiers && sourcesIdentifiers.length > 0
|
|
23243
|
+
? this.addExtra({
|
|
23244
|
+
sourcesIdentifiers,
|
|
23245
|
+
}, output)
|
|
22898
23246
|
: output;
|
|
22899
23247
|
},
|
|
22900
23248
|
isPublishedToAll: (output, source) => this.addExtra({
|
|
22901
23249
|
isPublishedToAll: selectField(source, 'isPublishedToAll'),
|
|
22902
23250
|
}, output),
|
|
23251
|
+
isHarvested: (output, source) => this.addExtra({
|
|
23252
|
+
isHarvested: selectField(source, 'isHarvested') !== 'false',
|
|
23253
|
+
}, output),
|
|
22903
23254
|
edit: (output, source) => this.addExtra({
|
|
22904
23255
|
edit: selectField(source, 'edit'),
|
|
22905
23256
|
}, output),
|
|
@@ -23189,6 +23540,7 @@ const ES_SOURCE_SUMMARY = [
|
|
|
23189
23540
|
'cl_maintenanceAndUpdateFrequency',
|
|
23190
23541
|
'tag',
|
|
23191
23542
|
'MD_LegalConstraintsUseLimitationObject',
|
|
23543
|
+
'MD_LegalConstraintsOtherConstraintsObject',
|
|
23192
23544
|
'qualityScore',
|
|
23193
23545
|
];
|
|
23194
23546
|
const ES_QUERY_FIELDS_PRIORITY = {
|
|
@@ -23280,11 +23632,11 @@ class ElasticsearchService {
|
|
|
23280
23632
|
registerRuntimeField(fieldName, expression) {
|
|
23281
23633
|
this.runtimeFields[fieldName] = expression;
|
|
23282
23634
|
}
|
|
23283
|
-
|
|
23635
|
+
getMetadataByIdsPayload(uuids) {
|
|
23284
23636
|
return {
|
|
23285
23637
|
query: {
|
|
23286
23638
|
ids: {
|
|
23287
|
-
values:
|
|
23639
|
+
values: uuids,
|
|
23288
23640
|
},
|
|
23289
23641
|
},
|
|
23290
23642
|
};
|
|
@@ -23712,16 +24064,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
23712
24064
|
args: [METADATA_LANGUAGE]
|
|
23713
24065
|
}] }] });
|
|
23714
24066
|
|
|
24067
|
+
class Gn4SettingsService {
|
|
24068
|
+
constructor(siteApiService) {
|
|
24069
|
+
this.siteApiService = siteApiService;
|
|
24070
|
+
this.identicon$ = this.getSettingsSetValueByKey('system/users/identicon');
|
|
24071
|
+
this.allowEditHarvested$ = this.getSettingsSetValueByKey('system/harvester/enableEditing');
|
|
24072
|
+
}
|
|
24073
|
+
getSettingsSetValueByKey(key) {
|
|
24074
|
+
return this.siteApiService.getSettingsSet(null, [key]).pipe(map$1((v) => v[key]), shareReplay({ bufferSize: 1, refCount: true }));
|
|
24075
|
+
}
|
|
24076
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, deps: [{ token: SiteApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24077
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
|
|
24078
|
+
}
|
|
24079
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, decorators: [{
|
|
24080
|
+
type: Injectable,
|
|
24081
|
+
args: [{
|
|
24082
|
+
providedIn: 'root',
|
|
24083
|
+
}]
|
|
24084
|
+
}], ctorParameters: () => [{ type: SiteApiService }] });
|
|
24085
|
+
|
|
23715
24086
|
const minPublicationApiVersion = '4.2.5';
|
|
23716
24087
|
const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
|
|
23717
24088
|
class Gn4Repository {
|
|
23718
|
-
constructor(httpClient, gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi, platformService) {
|
|
24089
|
+
constructor(httpClient, gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi, platformService, gn4LanguagesApi, settingsService) {
|
|
23719
24090
|
this.httpClient = httpClient;
|
|
23720
24091
|
this.gn4SearchApi = gn4SearchApi;
|
|
23721
24092
|
this.gn4SearchHelper = gn4SearchHelper;
|
|
23722
24093
|
this.gn4Mapper = gn4Mapper;
|
|
23723
24094
|
this.gn4RecordsApi = gn4RecordsApi;
|
|
23724
24095
|
this.platformService = platformService;
|
|
24096
|
+
this.gn4LanguagesApi = gn4LanguagesApi;
|
|
24097
|
+
this.settingsService = settingsService;
|
|
23725
24098
|
this._draftsChanged = new Subject();
|
|
23726
24099
|
this.draftsChanged$ = this._draftsChanged.asObservable();
|
|
23727
24100
|
}
|
|
@@ -23743,21 +24116,37 @@ class Gn4Repository {
|
|
|
23743
24116
|
}
|
|
23744
24117
|
getRecord(uniqueIdentifier) {
|
|
23745
24118
|
return this.gn4SearchApi
|
|
23746
|
-
.search('bucket', ['fcats'], JSON.stringify(this.gn4SearchHelper.
|
|
24119
|
+
.search('bucket', ['fcats', 'hassources'], JSON.stringify(this.gn4SearchHelper.getMetadataByIdsPayload([uniqueIdentifier])))
|
|
23747
24120
|
.pipe(map$1((results) => results.hits.hits[0]), switchMap((record) => record ? this.gn4Mapper.readRecord(record) : of(null)));
|
|
23748
24121
|
}
|
|
24122
|
+
getMultipleRecords(uniqueIdentifiers) {
|
|
24123
|
+
return this.gn4SearchApi
|
|
24124
|
+
.search('bucket', undefined, JSON.stringify(this.gn4SearchHelper.getMetadataByIdsPayload(uniqueIdentifiers)))
|
|
24125
|
+
.pipe(map$1((results) => results.hits.hits), switchMap((records) => records && records.length > 0
|
|
24126
|
+
? this.gn4Mapper.readRecords(records)
|
|
24127
|
+
: of(null)));
|
|
24128
|
+
}
|
|
23749
24129
|
mapEmbeddedFeatureCatalog(featureTypes) {
|
|
23750
24130
|
return {
|
|
23751
24131
|
featureTypes: featureTypes.map((featureType) => ({
|
|
23752
24132
|
name: featureType.typeName || '',
|
|
23753
24133
|
definition: featureType.definition || '',
|
|
23754
24134
|
attributes: Array.isArray(featureType.attributeTable)
|
|
23755
|
-
? featureType.attributeTable.map((attr) =>
|
|
23756
|
-
|
|
23757
|
-
|
|
23758
|
-
|
|
23759
|
-
|
|
23760
|
-
|
|
24135
|
+
? featureType.attributeTable.map((attr) => {
|
|
24136
|
+
const values = attr.values
|
|
24137
|
+
?.filter((v) => v.code || v.label)
|
|
24138
|
+
.map((v) => ({
|
|
24139
|
+
code: v.code,
|
|
24140
|
+
label: v.label,
|
|
24141
|
+
}));
|
|
24142
|
+
return {
|
|
24143
|
+
name: attr.name,
|
|
24144
|
+
code: attr.code,
|
|
24145
|
+
definition: attr.definition,
|
|
24146
|
+
type: attr.type,
|
|
24147
|
+
...(values?.length > 0 ? { values } : {}),
|
|
24148
|
+
};
|
|
24149
|
+
})
|
|
23761
24150
|
: [],
|
|
23762
24151
|
})),
|
|
23763
24152
|
};
|
|
@@ -23781,6 +24170,20 @@ class Gn4Repository {
|
|
|
23781
24170
|
.search('bucket', null, JSON.stringify(this.gn4SearchHelper.getRelatedRecordPayload(similarTo, 3)))
|
|
23782
24171
|
.pipe(switchMap((results) => this.gn4Mapper.readRecords(results.hits.hits)));
|
|
23783
24172
|
}
|
|
24173
|
+
getSources(record) {
|
|
24174
|
+
const sourcesIdentifiers = record.extras?.['sourcesIdentifiers'];
|
|
24175
|
+
if (sourcesIdentifiers && sourcesIdentifiers.length > 0) {
|
|
24176
|
+
return this.getMultipleRecords(sourcesIdentifiers);
|
|
24177
|
+
}
|
|
24178
|
+
return of(null);
|
|
24179
|
+
}
|
|
24180
|
+
getSourceOf(record) {
|
|
24181
|
+
const sourceOfIdentifiers = record.extras?.['sourceOfIdentifiers'];
|
|
24182
|
+
if (sourceOfIdentifiers && sourceOfIdentifiers.length > 0) {
|
|
24183
|
+
return this.getMultipleRecords(sourceOfIdentifiers);
|
|
24184
|
+
}
|
|
24185
|
+
return of(null);
|
|
24186
|
+
}
|
|
23784
24187
|
aggregate(params) {
|
|
23785
24188
|
// if aggregations are empty, return an empty object right away
|
|
23786
24189
|
if (Object.keys(params).length === 0)
|
|
@@ -23806,11 +24209,29 @@ class Gn4Repository {
|
|
|
23806
24209
|
? this.getRecord(uniqueIdentifier).pipe(map$1((record) => record.extras['isPublishedToAll']))
|
|
23807
24210
|
: of(true);
|
|
23808
24211
|
}
|
|
23809
|
-
|
|
23810
|
-
return
|
|
23811
|
-
|
|
24212
|
+
canDuplicate(record) {
|
|
24213
|
+
return record.kind === 'dataset';
|
|
24214
|
+
}
|
|
24215
|
+
canDelete(record) {
|
|
24216
|
+
return this.settingsService.allowEditHarvested$.pipe(map$1((allowEditHarvested) => {
|
|
24217
|
+
return (record.extras['edit'] &&
|
|
24218
|
+
(!record.extras['isHarvested'] || allowEditHarvested));
|
|
23812
24219
|
}));
|
|
23813
24220
|
}
|
|
24221
|
+
canEdit(record, allowEditHarvested) {
|
|
24222
|
+
return (record.kind === 'dataset' &&
|
|
24223
|
+
record.extras['edit'] &&
|
|
24224
|
+
(!record.extras['isHarvested'] || allowEditHarvested));
|
|
24225
|
+
}
|
|
24226
|
+
canEditRecord(uniqueIdentifier) {
|
|
24227
|
+
return combineLatest([
|
|
24228
|
+
this.getRecord(uniqueIdentifier),
|
|
24229
|
+
this.settingsService.allowEditHarvested$,
|
|
24230
|
+
]).pipe(map$1(([record, allowEditHarvested]) => record ? this.canEdit(record, allowEditHarvested) : false));
|
|
24231
|
+
}
|
|
24232
|
+
canEditIndexedRecord(record) {
|
|
24233
|
+
return this.settingsService.allowEditHarvested$.pipe(map$1((allowEditHarvested) => this.canEdit(record, allowEditHarvested)));
|
|
24234
|
+
}
|
|
23814
24235
|
openRecordForEdition(uniqueIdentifier) {
|
|
23815
24236
|
const draft$ = of(this.getRecordFromLocalStorage(uniqueIdentifier));
|
|
23816
24237
|
const recordAsXml$ = this.getRecordAsXml(uniqueIdentifier);
|
|
@@ -23925,6 +24346,13 @@ class Gn4Repository {
|
|
|
23925
24346
|
}));
|
|
23926
24347
|
}));
|
|
23927
24348
|
}
|
|
24349
|
+
getApplicationLanguages() {
|
|
24350
|
+
return this.gn4LanguagesApi
|
|
24351
|
+
.getApplicationLanguages()
|
|
24352
|
+
.pipe(map$1((languages) => languages
|
|
24353
|
+
.map((lang) => LANG_3_TO_2_MAPPER[lang.id ?? ''])
|
|
24354
|
+
.filter((code) => !!code)));
|
|
24355
|
+
}
|
|
23928
24356
|
getRecordAsXml(uniqueIdentifier) {
|
|
23929
24357
|
return this.gn4RecordsApi
|
|
23930
24358
|
.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
|
|
@@ -23965,12 +24393,12 @@ class Gn4Repository {
|
|
|
23965
24393
|
removeRecordFromLocalStorage(recordId) {
|
|
23966
24394
|
window.localStorage.removeItem(this.getLocalStorageKeyForRecord(recordId));
|
|
23967
24395
|
}
|
|
23968
|
-
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 }); }
|
|
24396
|
+
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 }); }
|
|
23969
24397
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4Repository }); }
|
|
23970
24398
|
}
|
|
23971
24399
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4Repository, decorators: [{
|
|
23972
24400
|
type: Injectable
|
|
23973
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: SearchApiService }, { type: ElasticsearchService }, { type: Gn4Converter }, { type: RecordsApiService }, { type: PlatformServiceInterface }] });
|
|
24401
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: SearchApiService }, { type: ElasticsearchService }, { type: Gn4Converter }, { type: RecordsApiService }, { type: PlatformServiceInterface }, { type: LanguagesApiService }, { type: Gn4SettingsService }] });
|
|
23974
24402
|
|
|
23975
24403
|
const IMAGE_URL$1 = '/geonetwork/images/harvesting/';
|
|
23976
24404
|
class OrganizationsFromMetadataService {
|
|
@@ -24249,24 +24677,6 @@ const ORGANIZATIONS_STRATEGY = new InjectionToken('organizations-strategy', {
|
|
|
24249
24677
|
factory: () => 'metadata',
|
|
24250
24678
|
});
|
|
24251
24679
|
|
|
24252
|
-
class Gn4SettingsService {
|
|
24253
|
-
constructor(siteApiService) {
|
|
24254
|
-
this.siteApiService = siteApiService;
|
|
24255
|
-
this.identicon$ = this.getSettingsSetValueByKey('system/users/identicon');
|
|
24256
|
-
}
|
|
24257
|
-
getSettingsSetValueByKey(key) {
|
|
24258
|
-
return this.siteApiService.getSettingsSet(null, [key]).pipe(map$1((v) => v[key]), shareReplay({ bufferSize: 1, refCount: true }));
|
|
24259
|
-
}
|
|
24260
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, deps: [{ token: SiteApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24261
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
|
|
24262
|
-
}
|
|
24263
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, decorators: [{
|
|
24264
|
-
type: Injectable,
|
|
24265
|
-
args: [{
|
|
24266
|
-
providedIn: 'root',
|
|
24267
|
-
}]
|
|
24268
|
-
}], ctorParameters: () => [{ type: SiteApiService }] });
|
|
24269
|
-
|
|
24270
24680
|
const DEFAULT_GN4_LOGIN_URL = `/geonetwork/srv/\${lang3}/catalog.signin?redirect=\${current_url}`;
|
|
24271
24681
|
const LOGIN_URL = new InjectionToken('loginUrl');
|
|
24272
24682
|
const DEFAULT_GN4_LOGOUT_URL = `/geonetwork/signout`;
|
|
@@ -25388,7 +25798,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25388
25798
|
}] });
|
|
25389
25799
|
|
|
25390
25800
|
var name = "geonetwork-ui";
|
|
25391
|
-
var version = "2.6.0-dev.
|
|
25801
|
+
var version = "2.6.0-dev.a0bd52a21";
|
|
25392
25802
|
var engines = {
|
|
25393
25803
|
node: ">=20"
|
|
25394
25804
|
};
|
|
@@ -25513,6 +25923,9 @@ class Gn4PlatformService {
|
|
|
25513
25923
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
25514
25924
|
}
|
|
25515
25925
|
}), shareReplay(1));
|
|
25926
|
+
this.allowEditHarvestedMd$ = this.settings$.pipe(map$1((info) => {
|
|
25927
|
+
return info['system/harvester/enableEditing'];
|
|
25928
|
+
}), shareReplay(1));
|
|
25516
25929
|
/**
|
|
25517
25930
|
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
25518
25931
|
* @private
|
|
@@ -25533,6 +25946,9 @@ class Gn4PlatformService {
|
|
|
25533
25946
|
getApiVersion() {
|
|
25534
25947
|
return this.apiVersion$;
|
|
25535
25948
|
}
|
|
25949
|
+
getAllowEditHarvestedMd() {
|
|
25950
|
+
return this.allowEditHarvestedMd$;
|
|
25951
|
+
}
|
|
25536
25952
|
getMe() {
|
|
25537
25953
|
return this.me$;
|
|
25538
25954
|
}
|
|
@@ -25965,422 +26381,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25965
26381
|
type: Output
|
|
25966
26382
|
}] } });
|
|
25967
26383
|
|
|
25968
|
-
class ExpandablePanelButtonComponent {
|
|
25969
|
-
constructor() {
|
|
25970
|
-
this.collapsed = true;
|
|
25971
|
-
}
|
|
25972
|
-
toggle() {
|
|
25973
|
-
this.collapsed = !this.collapsed;
|
|
25974
|
-
}
|
|
25975
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25976
|
-
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 }); }
|
|
25977
|
-
}
|
|
25978
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, decorators: [{
|
|
25979
|
-
type: Component,
|
|
25980
|
-
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"] }]
|
|
25981
|
-
}], propDecorators: { titleTemplate: [{
|
|
25982
|
-
type: Input
|
|
25983
|
-
}], collapsed: [{
|
|
25984
|
-
type: Input
|
|
25985
|
-
}] } });
|
|
25986
|
-
|
|
25987
|
-
class ExpandablePanelComponent {
|
|
25988
|
-
constructor(changeDetector) {
|
|
25989
|
-
this.changeDetector = changeDetector;
|
|
25990
|
-
this.iconColor = '';
|
|
25991
|
-
this._collapsed = true;
|
|
25992
|
-
}
|
|
25993
|
-
ngAfterViewInit() {
|
|
25994
|
-
if (this.contentDiv) {
|
|
25995
|
-
this.contentObserver = new ResizeObserver(() => {
|
|
25996
|
-
this.changeDetector.detectChanges();
|
|
25997
|
-
});
|
|
25998
|
-
this.contentObserver.observe(this.contentDiv.nativeElement);
|
|
25999
|
-
}
|
|
26000
|
-
}
|
|
26001
|
-
set collapsed(value) {
|
|
26002
|
-
this._collapsed = value;
|
|
26003
|
-
}
|
|
26004
|
-
get collapsed() {
|
|
26005
|
-
return this._collapsed;
|
|
26006
|
-
}
|
|
26007
|
-
toggle() {
|
|
26008
|
-
this.collapsed = !this.collapsed;
|
|
26009
|
-
}
|
|
26010
|
-
ngOnDestroy() {
|
|
26011
|
-
if (this.contentObserver) {
|
|
26012
|
-
this.contentObserver.disconnect();
|
|
26013
|
-
}
|
|
26014
|
-
}
|
|
26015
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26016
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ExpandablePanelComponent, isStandalone: true, selector: "gn-ui-expandable-panel", inputs: { title: "title", iconColor: "iconColor", collapsed: "collapsed" }, queries: [{ propertyName: "titleTemplate", first: true, predicate: ["titleTemplate"], descendants: true }], viewQueries: [{ propertyName: "contentDiv", first: true, predicate: ["contentDiv"], descendants: true }], ngImport: i0, template: "<div\n class=\"group flex items-center justify-between title border-b border-gray-100 cursor-pointer\"\n (click)=\"toggle()\"\n data-cy=\"expandable-panel-header\"\n>\n <div class=\"grow py-2.5\">\n <ng-container *ngIf=\"titleTemplate; else simpleTitle\">\n <div data-cy=\"expandable-panel-custom-title\">\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n </div>\n </ng-container>\n <ng-template #simpleTitle>\n <div\n class=\"font-medium text-black text-sm\"\n data-cy=\"expandable-panel-title\"\n >\n {{ title }}\n </div>\n </ng-template>\n </div>\n <div\n class=\"w-8 opacity-25 text-primary group-hover:opacity-100 transition-opacity flex items-center shrink-0\"\n >\n <ng-icon\n [name]=\"collapsed ? 'matAdd' : 'matRemove'\"\n [style.color]=\"iconColor\"\n ></ng-icon>\n </div>\n</div>\n<div\n class=\"content overflow-hidden transition-all duration-300\"\n [ngClass]=\"collapsed ? 'ease-out' : 'ease-in'\"\n #contentDiv\n *ngIf=\"!collapsed\"\n data-cy=\"expandable-panel-content\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], viewProviders: [provideIcons({ matAdd, matRemove })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26017
|
-
}
|
|
26018
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, decorators: [{
|
|
26019
|
-
type: Component,
|
|
26020
|
-
args: [{ selector: 'gn-ui-expandable-panel', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, NgIcon], viewProviders: [provideIcons({ matAdd, matRemove })], template: "<div\n class=\"group flex items-center justify-between title border-b border-gray-100 cursor-pointer\"\n (click)=\"toggle()\"\n data-cy=\"expandable-panel-header\"\n>\n <div class=\"grow py-2.5\">\n <ng-container *ngIf=\"titleTemplate; else simpleTitle\">\n <div data-cy=\"expandable-panel-custom-title\">\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n </div>\n </ng-container>\n <ng-template #simpleTitle>\n <div\n class=\"font-medium text-black text-sm\"\n data-cy=\"expandable-panel-title\"\n >\n {{ title }}\n </div>\n </ng-template>\n </div>\n <div\n class=\"w-8 opacity-25 text-primary group-hover:opacity-100 transition-opacity flex items-center shrink-0\"\n >\n <ng-icon\n [name]=\"collapsed ? 'matAdd' : 'matRemove'\"\n [style.color]=\"iconColor\"\n ></ng-icon>\n </div>\n</div>\n<div\n class=\"content overflow-hidden transition-all duration-300\"\n [ngClass]=\"collapsed ? 'ease-out' : 'ease-in'\"\n #contentDiv\n *ngIf=\"!collapsed\"\n data-cy=\"expandable-panel-content\"\n>\n <ng-content></ng-content>\n</div>\n" }]
|
|
26021
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
26022
|
-
type: Input
|
|
26023
|
-
}], iconColor: [{
|
|
26024
|
-
type: Input
|
|
26025
|
-
}], titleTemplate: [{
|
|
26026
|
-
type: ContentChild,
|
|
26027
|
-
args: ['titleTemplate']
|
|
26028
|
-
}], contentDiv: [{
|
|
26029
|
-
type: ViewChild,
|
|
26030
|
-
args: ['contentDiv']
|
|
26031
|
-
}], collapsed: [{
|
|
26032
|
-
type: Input
|
|
26033
|
-
}] } });
|
|
26034
|
-
|
|
26035
|
-
class FormFieldWrapperComponent {
|
|
26036
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26037
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FormFieldWrapperComponent, isStandalone: true, selector: "gn-ui-form-field-wrapper", inputs: { label: "label", hint: "hint" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\" *ngIf=\"label; else onlyContent\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\" translate=\"\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n *ngIf=\"hint\"\n class=\"material-symbols-outlined m-2 gn-ui-icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1 mt-2\">\n <ng-container *ngTemplateOutlet=\"onlyContent\"> </ng-container>\n </div>\n</div>\n\n<ng-template #onlyContent>\n <ng-content></ng-content>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26038
|
-
}
|
|
26039
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
26040
|
-
type: Component,
|
|
26041
|
-
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" }]
|
|
26042
|
-
}], propDecorators: { label: [{
|
|
26043
|
-
type: Input
|
|
26044
|
-
}], hint: [{
|
|
26045
|
-
type: Input
|
|
26046
|
-
}] } });
|
|
26047
|
-
|
|
26048
|
-
class MaxLinesComponent {
|
|
26049
|
-
constructor(cdr) {
|
|
26050
|
-
this.cdr = cdr;
|
|
26051
|
-
this.maxLines = 6;
|
|
26052
|
-
this.isExpanded = false;
|
|
26053
|
-
this.maxHeight = '';
|
|
26054
|
-
this.showToggleButton = false;
|
|
26055
|
-
}
|
|
26056
|
-
ngAfterViewInit() {
|
|
26057
|
-
this.calculateMaxHeight();
|
|
26058
|
-
this.observer = new ResizeObserver((mutations) => {
|
|
26059
|
-
mutations.forEach(() => {
|
|
26060
|
-
this.calculateMaxHeight();
|
|
26061
|
-
});
|
|
26062
|
-
});
|
|
26063
|
-
this.observer.observe(this.container.nativeElement.children[0]);
|
|
26064
|
-
}
|
|
26065
|
-
toggleDisplay() {
|
|
26066
|
-
this.isExpanded = !this.isExpanded;
|
|
26067
|
-
this.calculateMaxHeight();
|
|
26068
|
-
}
|
|
26069
|
-
calculateMaxHeight() {
|
|
26070
|
-
const containerElement = this.container.nativeElement;
|
|
26071
|
-
const contentElement = containerElement.children[0];
|
|
26072
|
-
const contentHeight = contentElement.getBoundingClientRect().height;
|
|
26073
|
-
if (contentHeight) {
|
|
26074
|
-
if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
|
|
26075
|
-
this.showToggleButton = true;
|
|
26076
|
-
this.maxHeight = this.isExpanded
|
|
26077
|
-
? `${contentHeight}px`
|
|
26078
|
-
: `${this.maxLines * this.getLineHeight(contentElement)}px`;
|
|
26079
|
-
}
|
|
26080
|
-
else {
|
|
26081
|
-
this.showToggleButton = false;
|
|
26082
|
-
this.maxHeight = `${contentHeight}px`;
|
|
26083
|
-
}
|
|
26084
|
-
containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
|
|
26085
|
-
this.cdr.detectChanges();
|
|
26086
|
-
}
|
|
26087
|
-
}
|
|
26088
|
-
getLineHeight(element) {
|
|
26089
|
-
const computedStyle = window.getComputedStyle(element);
|
|
26090
|
-
const lineHeight = parseFloat(computedStyle.lineHeight);
|
|
26091
|
-
const fontSize = parseFloat(computedStyle.fontSize || '14');
|
|
26092
|
-
const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
|
|
26093
|
-
return result;
|
|
26094
|
-
}
|
|
26095
|
-
ngOnDestroy() {
|
|
26096
|
-
if (!this.observer)
|
|
26097
|
-
return;
|
|
26098
|
-
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
26099
|
-
}
|
|
26100
|
-
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 }); }
|
|
26101
|
-
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 }); }
|
|
26102
|
-
}
|
|
26103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
26104
|
-
type: Component,
|
|
26105
|
-
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" }]
|
|
26106
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { maxLines: [{
|
|
26107
|
-
type: Input
|
|
26108
|
-
}], container: [{
|
|
26109
|
-
type: ViewChild,
|
|
26110
|
-
args: ['container']
|
|
26111
|
-
}] } });
|
|
26112
|
-
|
|
26113
|
-
class InteractiveTableColumnComponent {
|
|
26114
|
-
constructor() {
|
|
26115
|
-
this.grow = false;
|
|
26116
|
-
this.sortable = false;
|
|
26117
|
-
this.activeSort = null;
|
|
26118
|
-
this.sortChange = new EventEmitter();
|
|
26119
|
-
}
|
|
26120
|
-
handleSortChange() {
|
|
26121
|
-
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
26122
|
-
this.sortChange.emit(this.activeSort);
|
|
26123
|
-
}
|
|
26124
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26125
|
-
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 }); }
|
|
26126
|
-
}
|
|
26127
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
26128
|
-
type: Component,
|
|
26129
|
-
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
26130
|
-
}], propDecorators: { header: [{
|
|
26131
|
-
type: ContentChild,
|
|
26132
|
-
args: ['header']
|
|
26133
|
-
}], cell: [{
|
|
26134
|
-
type: ContentChild,
|
|
26135
|
-
args: ['cell']
|
|
26136
|
-
}], grow: [{
|
|
26137
|
-
type: Input
|
|
26138
|
-
}], width: [{
|
|
26139
|
-
type: Input
|
|
26140
|
-
}], sortable: [{
|
|
26141
|
-
type: Input
|
|
26142
|
-
}], activeSort: [{
|
|
26143
|
-
type: Input
|
|
26144
|
-
}], sortChange: [{
|
|
26145
|
-
type: Output
|
|
26146
|
-
}] } });
|
|
26147
|
-
|
|
26148
|
-
marker('editor.record.lock.reason');
|
|
26149
|
-
marker('editor.record.lock.format');
|
|
26150
|
-
class InteractiveTableComponent {
|
|
26151
|
-
constructor() {
|
|
26152
|
-
this.items = [];
|
|
26153
|
-
this.isDraftPage = false;
|
|
26154
|
-
this.itemClick = new EventEmitter();
|
|
26155
|
-
}
|
|
26156
|
-
get gridStyle() {
|
|
26157
|
-
return {
|
|
26158
|
-
'grid-template-columns': this.columns
|
|
26159
|
-
.map((column) => column.width
|
|
26160
|
-
? column.width
|
|
26161
|
-
: column.grow
|
|
26162
|
-
? `minmax(0px,1fr)`
|
|
26163
|
-
: `minmax(0px,max-content)`)
|
|
26164
|
-
.join(' '),
|
|
26165
|
-
};
|
|
26166
|
-
}
|
|
26167
|
-
getItemTitle(item) {
|
|
26168
|
-
if (!item.extras?.edit && !this.isDraftPage && item.kind === 'dataset') {
|
|
26169
|
-
return 'editor.record.lock.reason';
|
|
26170
|
-
}
|
|
26171
|
-
else if (item.kind !== 'dataset') {
|
|
26172
|
-
return 'editor.record.lock.format';
|
|
26173
|
-
}
|
|
26174
|
-
return '';
|
|
26175
|
-
}
|
|
26176
|
-
handleRowClick(item) {
|
|
26177
|
-
this.itemClick.emit(item);
|
|
26178
|
-
}
|
|
26179
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26180
|
-
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 }); }
|
|
26181
|
-
}
|
|
26182
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
26183
|
-
type: Component,
|
|
26184
|
-
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"] }]
|
|
26185
|
-
}], propDecorators: { columns: [{
|
|
26186
|
-
type: ContentChildren,
|
|
26187
|
-
args: [InteractiveTableColumnComponent]
|
|
26188
|
-
}], items: [{
|
|
26189
|
-
type: Input
|
|
26190
|
-
}], isDraftPage: [{
|
|
26191
|
-
type: Input
|
|
26192
|
-
}], itemClick: [{
|
|
26193
|
-
type: Output
|
|
26194
|
-
}] } });
|
|
26195
|
-
|
|
26196
|
-
/**
|
|
26197
|
-
* This component will make a block that will stay sticky on the top of the page,
|
|
26198
|
-
* but will also shrink down to a minimum height when scrolling.
|
|
26199
|
-
* The ratio between minimum and nominal height is stored in the shrinkRatio
|
|
26200
|
-
* property, and can be used to change e.g. the opacity or size of child elements.
|
|
26201
|
-
* This component renders at z-index: 50 by default.
|
|
26202
|
-
* The first parent element with an overflow of `scroll` or `overflow` is considered
|
|
26203
|
-
* for scroll events.
|
|
26204
|
-
*/
|
|
26205
|
-
class StickyHeaderComponent {
|
|
26206
|
-
constructor(changeDetector, hostEl, zone) {
|
|
26207
|
-
this.changeDetector = changeDetector;
|
|
26208
|
-
this.hostEl = hostEl;
|
|
26209
|
-
this.zone = zone;
|
|
26210
|
-
}
|
|
26211
|
-
ngAfterViewInit() {
|
|
26212
|
-
this.scrollSub = fromEvent(window, 'scroll', {
|
|
26213
|
-
passive: true,
|
|
26214
|
-
})
|
|
26215
|
-
.pipe(throttleTime(0, animationFrameScheduler, {
|
|
26216
|
-
leading: true,
|
|
26217
|
-
trailing: true,
|
|
26218
|
-
}))
|
|
26219
|
-
.subscribe(this.updateSize.bind(this));
|
|
26220
|
-
}
|
|
26221
|
-
ngOnInit() {
|
|
26222
|
-
this.placeholderEl = document.createElement('div');
|
|
26223
|
-
this.placeholderEl.style.position = 'absolute';
|
|
26224
|
-
this.placeholderEl.classList.add('sticky-header-placeholder');
|
|
26225
|
-
this.hostEl.nativeElement.insertAdjacentElement('beforebegin', this.placeholderEl);
|
|
26226
|
-
}
|
|
26227
|
-
ngAfterViewChecked() {
|
|
26228
|
-
this.updateSize();
|
|
26229
|
-
}
|
|
26230
|
-
ngOnDestroy() {
|
|
26231
|
-
this.scrollSub.unsubscribe();
|
|
26232
|
-
this.placeholderEl.remove();
|
|
26233
|
-
}
|
|
26234
|
-
updateSize() {
|
|
26235
|
-
this.zone.runOutsideAngular(() => {
|
|
26236
|
-
if (window.scrollY === this.parentScroll)
|
|
26237
|
-
return;
|
|
26238
|
-
this.parentScroll = window.scrollY;
|
|
26239
|
-
const offsetTop = Math.max(0, this.parentScroll - this.placeholderEl.offsetTop);
|
|
26240
|
-
const newHeightPx = Math.max(this.minHeightPx, this.fullHeightPx - offsetTop);
|
|
26241
|
-
this.innerContainer.nativeElement.style.transform = `translate(0, ${newHeightPx - this.fullHeightPx}px)`;
|
|
26242
|
-
this.expandRatio =
|
|
26243
|
-
(newHeightPx - this.minHeightPx) /
|
|
26244
|
-
(this.fullHeightPx - this.minHeightPx);
|
|
26245
|
-
this.changeDetector.detectChanges();
|
|
26246
|
-
});
|
|
26247
|
-
}
|
|
26248
|
-
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 }); }
|
|
26249
|
-
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 }); }
|
|
26250
|
-
}
|
|
26251
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StickyHeaderComponent, decorators: [{
|
|
26252
|
-
type: Component,
|
|
26253
|
-
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" }]
|
|
26254
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef, decorators: [{
|
|
26255
|
-
type: Host
|
|
26256
|
-
}] }, { type: i0.NgZone }], propDecorators: { minHeightPx: [{
|
|
26257
|
-
type: Input
|
|
26258
|
-
}], fullHeightPx: [{
|
|
26259
|
-
type: Input
|
|
26260
|
-
}], template: [{
|
|
26261
|
-
type: ContentChild,
|
|
26262
|
-
args: [TemplateRef]
|
|
26263
|
-
}], outerContainer: [{
|
|
26264
|
-
type: ViewChild,
|
|
26265
|
-
args: ['outerContainer']
|
|
26266
|
-
}], innerContainer: [{
|
|
26267
|
-
type: ViewChild,
|
|
26268
|
-
args: ['innerContainer']
|
|
26269
|
-
}] } });
|
|
26270
|
-
|
|
26271
|
-
class BlockListComponent {
|
|
26272
|
-
get pages() {
|
|
26273
|
-
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
26274
|
-
}
|
|
26275
|
-
get isFirstPage() {
|
|
26276
|
-
return this.currentPage_ === 0;
|
|
26277
|
-
}
|
|
26278
|
-
get isLastPage() {
|
|
26279
|
-
return this.currentPage_ === this.pagesCount - 1;
|
|
26280
|
-
}
|
|
26281
|
-
get pagesCount() {
|
|
26282
|
-
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
26283
|
-
}
|
|
26284
|
-
get currentPage() {
|
|
26285
|
-
return this.currentPage_ + 1;
|
|
26286
|
-
}
|
|
26287
|
-
constructor(changeDetector) {
|
|
26288
|
-
this.changeDetector = changeDetector;
|
|
26289
|
-
this.pageSize = 4;
|
|
26290
|
-
this.containerClass = '';
|
|
26291
|
-
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
26292
|
-
this.minHeight = 0;
|
|
26293
|
-
this.listChanges = new EventEmitter();
|
|
26294
|
-
this.subComponentSize = 'M';
|
|
26295
|
-
this.currentPage_ = 0;
|
|
26296
|
-
this.refreshBlocksVisibility = () => {
|
|
26297
|
-
this.blocks.forEach((block, index) => {
|
|
26298
|
-
block.nativeElement.style.display =
|
|
26299
|
-
index >= this.currentPage_ * this.pageSize &&
|
|
26300
|
-
index < (this.currentPage_ + 1) * this.pageSize
|
|
26301
|
-
? null
|
|
26302
|
-
: 'none';
|
|
26303
|
-
});
|
|
26304
|
-
};
|
|
26305
|
-
}
|
|
26306
|
-
ngAfterViewInit() {
|
|
26307
|
-
this.blocks.changes.subscribe(() => {
|
|
26308
|
-
this.updateSizes();
|
|
26309
|
-
this.refreshBlocksVisibility();
|
|
26310
|
-
this.goToPage(1);
|
|
26311
|
-
this.changeDetector.detectChanges();
|
|
26312
|
-
this.listChanges.emit(this);
|
|
26313
|
-
});
|
|
26314
|
-
this.updateSizes();
|
|
26315
|
-
this.refreshBlocksVisibility();
|
|
26316
|
-
// we store the first height as the min-height of the list container
|
|
26317
|
-
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
26318
|
-
this.changeDetector.detectChanges();
|
|
26319
|
-
this.listChanges.emit(this);
|
|
26320
|
-
}
|
|
26321
|
-
updateSizes() {
|
|
26322
|
-
this.subComponentSize = this.computeSubComponentSize();
|
|
26323
|
-
this.pageSize = this.computePageSize();
|
|
26324
|
-
}
|
|
26325
|
-
computeSubComponentSize() {
|
|
26326
|
-
if (!this.blocks)
|
|
26327
|
-
return 'M';
|
|
26328
|
-
const subComponentsCount = this.blocks.length;
|
|
26329
|
-
if (subComponentsCount <= 3)
|
|
26330
|
-
return 'L';
|
|
26331
|
-
if (subComponentsCount <= 12)
|
|
26332
|
-
return 'M';
|
|
26333
|
-
if (subComponentsCount <= 18)
|
|
26334
|
-
return 'S';
|
|
26335
|
-
return 'XS';
|
|
26336
|
-
}
|
|
26337
|
-
computePageSize() {
|
|
26338
|
-
switch (this.subComponentSize) {
|
|
26339
|
-
case 'L':
|
|
26340
|
-
return 3;
|
|
26341
|
-
case 'S':
|
|
26342
|
-
return 6;
|
|
26343
|
-
case 'XS':
|
|
26344
|
-
return 8;
|
|
26345
|
-
default:
|
|
26346
|
-
return 4;
|
|
26347
|
-
}
|
|
26348
|
-
}
|
|
26349
|
-
goToPage(pageIndex) {
|
|
26350
|
-
this.currentPage_ = Math.max(Math.min(pageIndex - 1, this.pagesCount - 1), 0);
|
|
26351
|
-
this.changeDetector.detectChanges();
|
|
26352
|
-
this.refreshBlocksVisibility();
|
|
26353
|
-
}
|
|
26354
|
-
goToPrevPage() {
|
|
26355
|
-
if (this.isFirstPage)
|
|
26356
|
-
return;
|
|
26357
|
-
this.goToPage(this.currentPage - 1);
|
|
26358
|
-
}
|
|
26359
|
-
goToNextPage() {
|
|
26360
|
-
if (this.isLastPage)
|
|
26361
|
-
return;
|
|
26362
|
-
this.goToPage(this.currentPage + 1);
|
|
26363
|
-
}
|
|
26364
|
-
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 }); }
|
|
26365
|
-
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 }); }
|
|
26366
|
-
}
|
|
26367
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
26368
|
-
type: Component,
|
|
26369
|
-
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"] }]
|
|
26370
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { containerClass: [{
|
|
26371
|
-
type: Input
|
|
26372
|
-
}], paginationContainerClass: [{
|
|
26373
|
-
type: Input
|
|
26374
|
-
}], blocks: [{
|
|
26375
|
-
type: ContentChildren,
|
|
26376
|
-
args: ['block', { read: ElementRef }]
|
|
26377
|
-
}], blockContainer: [{
|
|
26378
|
-
type: ViewChild,
|
|
26379
|
-
args: ['blockContainer']
|
|
26380
|
-
}], listChanges: [{
|
|
26381
|
-
type: Output
|
|
26382
|
-
}] } });
|
|
26383
|
-
|
|
26384
26384
|
class ColorScaleComponent {
|
|
26385
26385
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColorScaleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26386
26386
|
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: [""] }); }
|
|
@@ -26869,7 +26869,7 @@ class AutocompleteComponent {
|
|
|
26869
26869
|
provideNgIconsConfig({
|
|
26870
26870
|
size: '1.75rem',
|
|
26871
26871
|
}),
|
|
26872
|
-
], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26872
|
+
], viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion text-start\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26873
26873
|
}
|
|
26874
26874
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
26875
26875
|
type: Component,
|
|
@@ -26890,7 +26890,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26890
26890
|
provideNgIconsConfig({
|
|
26891
26891
|
size: '1.75rem',
|
|
26892
26892
|
}),
|
|
26893
|
-
], template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
26893
|
+
], template: "<span class=\"w-full inline-block relative\">\n <div\n class=\"absolute inset-y-[--icon-padding] left-[--icon-padding] w-[--icon-width] pointer-events-none\"\n *ngIf=\"!allowSubmit\"\n >\n <ng-icon name=\"iconoirSearch\" class=\"text-primary search\"></ng-icon>\n </div>\n <div class=\"flex flex-row\">\n <input\n #searchInput\n type=\"text\"\n class=\"gn-ui-text-input\"\n (input)=\"handleInput($event)\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n [ngClass]=\"{\n 'text-primary': searchActive && enterButton,\n 'text-gray-900': !searchActive,\n 'px-[--icon-width]': !allowSubmit,\n }\"\n />\n <gn-ui-button\n type=\"gray\"\n *ngIf=\"searchInput.value && displayEnterBtn\"\n extraClass=\"w-32 h-8 !opacity-100\"\n [ngStyle]=\"{ left: enterBtnPosition + 'px' }\"\n class=\"absolute\"\n disabled=\"true\"\n >\n <ng-icon\n name=\"iconoirLongArrowDownLeft\"\n class=\"!w-4 text-gray-900 font-bold\"\n ></ng-icon>\n <span translate class=\"text-bold text-gray-900 font-bold\">\n Enter to search\n </span>\n </gn-ui-button>\n </div>\n <gn-ui-button\n type=\"primary\"\n [extraClass]=\"getExtraClass()\"\n data-test=\"clear-btn\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (buttonClick)=\"clear()\"\n >\n <ng-icon class=\"text-white\" name=\"matClose\"></ng-icon>\n </gn-ui-button>\n <gn-ui-button\n type=\"light\"\n extraClass=\"border-0 border-l-[1px] border-gray-300 hover:border-gray-500 text-primary hover:text-primary-darkest focus:text-primary-darkest absolute inset-y-[--icon-padding] right-[--icon-padding]\"\n aria-label=\"Trigger search\"\n *ngIf=\"allowSubmit\"\n data-test=\"autocomplete-submit-btn\"\n (buttonClick)=\"handleClickSearch()\"\n >\n <ng-icon name=\"iconoirSearch\"></ng-icon>\n </gn-ui-button>\n\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"matErrorOutlineOutline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</span>\n\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFnInternal\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion text-start\"\n >\n {{ displayWithFnInternal(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: ["span{--icon-padding: var(--gn-ui-text-input-border-size, 2px);--icon-width: calc(var(--gn-ui-text-input-padding, .6em) * 2 + 1.25em)}span>*:not(gn-ui-popup-alert){font-size:var(--gn-ui-text-input-font-size, 1em)}input:placeholder-shown{text-overflow:ellipsis}gn-ui-button{--gn-ui-button-rounded: 0;--gn-ui-button-width: var(--icon-width);--gn-ui-button-padding: 0;font-size:1em}ng-icon.search{margin-top:.6rem;margin-left:.6rem}gn-ui-button:last-of-type{--gn-ui-button-rounded: 0 var(--gn-ui-text-input-rounded, .25em) var(--gn-ui-text-input-rounded, .25em) 0}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
26894
26894
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { placeholder: [{
|
|
26895
26895
|
type: Input
|
|
26896
26896
|
}], enterButton: [{
|
|
@@ -28313,6 +28313,531 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28313
28313
|
type: Output
|
|
28314
28314
|
}] } });
|
|
28315
28315
|
|
|
28316
|
+
class CellPopinComponent {
|
|
28317
|
+
set activePopin(active) {
|
|
28318
|
+
this._activePopin = !!active;
|
|
28319
|
+
this.updateIntersectionObserver();
|
|
28320
|
+
}
|
|
28321
|
+
get activePopin() {
|
|
28322
|
+
return this._activePopin;
|
|
28323
|
+
}
|
|
28324
|
+
constructor(scrollDispatcher, cdr) {
|
|
28325
|
+
this.scrollDispatcher = scrollDispatcher;
|
|
28326
|
+
this.cdr = cdr;
|
|
28327
|
+
this.extraClass = '';
|
|
28328
|
+
this.isOpen = false;
|
|
28329
|
+
this.isVisible = true;
|
|
28330
|
+
this.overlayPositions = [
|
|
28331
|
+
{
|
|
28332
|
+
originX: 'end',
|
|
28333
|
+
originY: 'top',
|
|
28334
|
+
overlayX: 'end',
|
|
28335
|
+
overlayY: 'top',
|
|
28336
|
+
},
|
|
28337
|
+
{
|
|
28338
|
+
originX: 'start',
|
|
28339
|
+
originY: 'top',
|
|
28340
|
+
overlayX: 'start',
|
|
28341
|
+
overlayY: 'top',
|
|
28342
|
+
},
|
|
28343
|
+
];
|
|
28344
|
+
this.firstCheck = true;
|
|
28345
|
+
this._activePopin = true;
|
|
28346
|
+
}
|
|
28347
|
+
ngAfterViewInit() {
|
|
28348
|
+
if (!this.activePopin) {
|
|
28349
|
+
return;
|
|
28350
|
+
}
|
|
28351
|
+
if (this.cdkScrollContainer) {
|
|
28352
|
+
this.scrollDispatcher.register(this.cdkScrollContainer);
|
|
28353
|
+
}
|
|
28354
|
+
this.updateIntersectionObserver();
|
|
28355
|
+
}
|
|
28356
|
+
ngOnDestroy() {
|
|
28357
|
+
this.intersectionObserver?.disconnect();
|
|
28358
|
+
this.scrollDispatcher.deregister(this.cdkScrollContainer);
|
|
28359
|
+
}
|
|
28360
|
+
updateIntersectionObserver() {
|
|
28361
|
+
if (!this.scrollContainer || !this.anchorRef) {
|
|
28362
|
+
return;
|
|
28363
|
+
}
|
|
28364
|
+
if (this.intersectionObserver) {
|
|
28365
|
+
this.intersectionObserver?.disconnect();
|
|
28366
|
+
}
|
|
28367
|
+
this.intersectionObserver = new IntersectionObserver(([entry]) => {
|
|
28368
|
+
const visible = entry.intersectionRatio >= 1;
|
|
28369
|
+
// Ignore first visibility if first time opening it
|
|
28370
|
+
if (this.firstCheck && !visible) {
|
|
28371
|
+
this.firstCheck = false;
|
|
28372
|
+
return;
|
|
28373
|
+
}
|
|
28374
|
+
this.firstCheck = false;
|
|
28375
|
+
if (this.isVisible !== visible) {
|
|
28376
|
+
this.isVisible = visible;
|
|
28377
|
+
this.cdr.detectChanges();
|
|
28378
|
+
}
|
|
28379
|
+
}, {
|
|
28380
|
+
root: this.scrollContainer.nativeElement,
|
|
28381
|
+
threshold: 1.0,
|
|
28382
|
+
});
|
|
28383
|
+
this.intersectionObserver.observe(this.anchorRef.nativeElement);
|
|
28384
|
+
}
|
|
28385
|
+
openOverlay() {
|
|
28386
|
+
this.isOpen = true;
|
|
28387
|
+
}
|
|
28388
|
+
closeOverlay() {
|
|
28389
|
+
this.isOpen = false;
|
|
28390
|
+
}
|
|
28391
|
+
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 }); }
|
|
28392
|
+
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"] }] }); }
|
|
28393
|
+
}
|
|
28394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellPopinComponent, decorators: [{
|
|
28395
|
+
type: Component,
|
|
28396
|
+
args: [{ selector: 'gn-ui-cell-popin', standalone: true, imports: [
|
|
28397
|
+
CommonModule,
|
|
28398
|
+
MatButtonModule,
|
|
28399
|
+
OverlayModule,
|
|
28400
|
+
ButtonComponent,
|
|
28401
|
+
NgIconComponent,
|
|
28402
|
+
], 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" }]
|
|
28403
|
+
}], ctorParameters: () => [{ type: i1$8.ScrollDispatcher }, { type: i0.ChangeDetectorRef }], propDecorators: { extraClass: [{
|
|
28404
|
+
type: Input
|
|
28405
|
+
}], cdkScrollContainer: [{
|
|
28406
|
+
type: Input
|
|
28407
|
+
}], scrollContainer: [{
|
|
28408
|
+
type: Input
|
|
28409
|
+
}], anchorRef: [{
|
|
28410
|
+
type: ViewChild,
|
|
28411
|
+
args: ['anchorRef']
|
|
28412
|
+
}], activePopin: [{
|
|
28413
|
+
type: Input
|
|
28414
|
+
}] } });
|
|
28415
|
+
|
|
28416
|
+
class ExpandablePanelButtonComponent {
|
|
28417
|
+
constructor() {
|
|
28418
|
+
this.collapsed = true;
|
|
28419
|
+
}
|
|
28420
|
+
toggle() {
|
|
28421
|
+
this.collapsed = !this.collapsed;
|
|
28422
|
+
}
|
|
28423
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28424
|
+
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 }); }
|
|
28425
|
+
}
|
|
28426
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, decorators: [{
|
|
28427
|
+
type: Component,
|
|
28428
|
+
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"] }]
|
|
28429
|
+
}], propDecorators: { titleTemplate: [{
|
|
28430
|
+
type: Input
|
|
28431
|
+
}], collapsed: [{
|
|
28432
|
+
type: Input
|
|
28433
|
+
}] } });
|
|
28434
|
+
|
|
28435
|
+
class ExpandablePanelComponent {
|
|
28436
|
+
constructor(changeDetector) {
|
|
28437
|
+
this.changeDetector = changeDetector;
|
|
28438
|
+
this.iconColor = '';
|
|
28439
|
+
this._collapsed = true;
|
|
28440
|
+
}
|
|
28441
|
+
ngAfterViewInit() {
|
|
28442
|
+
if (this.contentDiv) {
|
|
28443
|
+
this.contentObserver = new ResizeObserver(() => {
|
|
28444
|
+
this.changeDetector.detectChanges();
|
|
28445
|
+
});
|
|
28446
|
+
this.contentObserver.observe(this.contentDiv.nativeElement);
|
|
28447
|
+
}
|
|
28448
|
+
}
|
|
28449
|
+
set collapsed(value) {
|
|
28450
|
+
this._collapsed = value;
|
|
28451
|
+
}
|
|
28452
|
+
get collapsed() {
|
|
28453
|
+
return this._collapsed;
|
|
28454
|
+
}
|
|
28455
|
+
toggle() {
|
|
28456
|
+
this.collapsed = !this.collapsed;
|
|
28457
|
+
}
|
|
28458
|
+
ngOnDestroy() {
|
|
28459
|
+
if (this.contentObserver) {
|
|
28460
|
+
this.contentObserver.disconnect();
|
|
28461
|
+
}
|
|
28462
|
+
}
|
|
28463
|
+
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 }); }
|
|
28464
|
+
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 }); }
|
|
28465
|
+
}
|
|
28466
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, decorators: [{
|
|
28467
|
+
type: Component,
|
|
28468
|
+
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" }]
|
|
28469
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
28470
|
+
type: Input
|
|
28471
|
+
}], iconColor: [{
|
|
28472
|
+
type: Input
|
|
28473
|
+
}], titleTemplate: [{
|
|
28474
|
+
type: ContentChild,
|
|
28475
|
+
args: ['titleTemplate']
|
|
28476
|
+
}], contentDiv: [{
|
|
28477
|
+
type: ViewChild,
|
|
28478
|
+
args: ['contentDiv']
|
|
28479
|
+
}], collapsed: [{
|
|
28480
|
+
type: Input
|
|
28481
|
+
}] } });
|
|
28482
|
+
|
|
28483
|
+
class FormFieldWrapperComponent {
|
|
28484
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28485
|
+
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 }); }
|
|
28486
|
+
}
|
|
28487
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
28488
|
+
type: Component,
|
|
28489
|
+
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" }]
|
|
28490
|
+
}], propDecorators: { label: [{
|
|
28491
|
+
type: Input
|
|
28492
|
+
}], hint: [{
|
|
28493
|
+
type: Input
|
|
28494
|
+
}] } });
|
|
28495
|
+
|
|
28496
|
+
class MaxLinesComponent {
|
|
28497
|
+
constructor(cdr) {
|
|
28498
|
+
this.cdr = cdr;
|
|
28499
|
+
this.maxLines = 6;
|
|
28500
|
+
this.isExpanded = false;
|
|
28501
|
+
this.maxHeight = '';
|
|
28502
|
+
this.showToggleButton = false;
|
|
28503
|
+
}
|
|
28504
|
+
ngAfterViewInit() {
|
|
28505
|
+
this.calculateMaxHeight();
|
|
28506
|
+
this.observer = new ResizeObserver((mutations) => {
|
|
28507
|
+
mutations.forEach(() => {
|
|
28508
|
+
this.calculateMaxHeight();
|
|
28509
|
+
});
|
|
28510
|
+
});
|
|
28511
|
+
this.observer.observe(this.container.nativeElement.children[0]);
|
|
28512
|
+
}
|
|
28513
|
+
toggleDisplay() {
|
|
28514
|
+
this.isExpanded = !this.isExpanded;
|
|
28515
|
+
this.calculateMaxHeight();
|
|
28516
|
+
}
|
|
28517
|
+
calculateMaxHeight() {
|
|
28518
|
+
const containerElement = this.container.nativeElement;
|
|
28519
|
+
const contentElement = containerElement.children[0];
|
|
28520
|
+
const contentHeight = contentElement.getBoundingClientRect().height;
|
|
28521
|
+
if (contentHeight) {
|
|
28522
|
+
if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
|
|
28523
|
+
this.showToggleButton = true;
|
|
28524
|
+
this.maxHeight = this.isExpanded
|
|
28525
|
+
? `${contentHeight}px`
|
|
28526
|
+
: `${this.maxLines * this.getLineHeight(contentElement)}px`;
|
|
28527
|
+
}
|
|
28528
|
+
else {
|
|
28529
|
+
this.showToggleButton = false;
|
|
28530
|
+
this.maxHeight = `${contentHeight}px`;
|
|
28531
|
+
}
|
|
28532
|
+
containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
|
|
28533
|
+
this.cdr.detectChanges();
|
|
28534
|
+
}
|
|
28535
|
+
}
|
|
28536
|
+
getLineHeight(element) {
|
|
28537
|
+
const computedStyle = window.getComputedStyle(element);
|
|
28538
|
+
const lineHeight = parseFloat(computedStyle.lineHeight);
|
|
28539
|
+
const fontSize = parseFloat(computedStyle.fontSize || '14');
|
|
28540
|
+
const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
|
|
28541
|
+
return result;
|
|
28542
|
+
}
|
|
28543
|
+
ngOnDestroy() {
|
|
28544
|
+
if (!this.observer)
|
|
28545
|
+
return;
|
|
28546
|
+
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
28547
|
+
}
|
|
28548
|
+
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 }); }
|
|
28549
|
+
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 }); }
|
|
28550
|
+
}
|
|
28551
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
28552
|
+
type: Component,
|
|
28553
|
+
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" }]
|
|
28554
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { maxLines: [{
|
|
28555
|
+
type: Input
|
|
28556
|
+
}], container: [{
|
|
28557
|
+
type: ViewChild,
|
|
28558
|
+
args: ['container']
|
|
28559
|
+
}] } });
|
|
28560
|
+
|
|
28561
|
+
class InteractiveTableColumnComponent {
|
|
28562
|
+
constructor() {
|
|
28563
|
+
this.grow = false;
|
|
28564
|
+
this.sortable = false;
|
|
28565
|
+
this.activeSort = null;
|
|
28566
|
+
this.sortChange = new EventEmitter();
|
|
28567
|
+
}
|
|
28568
|
+
handleSortChange() {
|
|
28569
|
+
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
28570
|
+
this.sortChange.emit(this.activeSort);
|
|
28571
|
+
}
|
|
28572
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28573
|
+
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 }); }
|
|
28574
|
+
}
|
|
28575
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
28576
|
+
type: Component,
|
|
28577
|
+
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
28578
|
+
}], propDecorators: { header: [{
|
|
28579
|
+
type: ContentChild,
|
|
28580
|
+
args: ['header']
|
|
28581
|
+
}], cell: [{
|
|
28582
|
+
type: ContentChild,
|
|
28583
|
+
args: ['cell']
|
|
28584
|
+
}], grow: [{
|
|
28585
|
+
type: Input
|
|
28586
|
+
}], width: [{
|
|
28587
|
+
type: Input
|
|
28588
|
+
}], sortable: [{
|
|
28589
|
+
type: Input
|
|
28590
|
+
}], activeSort: [{
|
|
28591
|
+
type: Input
|
|
28592
|
+
}], sortChange: [{
|
|
28593
|
+
type: Output
|
|
28594
|
+
}] } });
|
|
28595
|
+
|
|
28596
|
+
marker('editor.record.lock.resourceType');
|
|
28597
|
+
marker('editor.record.lock.harvested');
|
|
28598
|
+
marker('editor.record.lock.owner');
|
|
28599
|
+
class InteractiveTableComponent {
|
|
28600
|
+
constructor() {
|
|
28601
|
+
this.items = [];
|
|
28602
|
+
this.canEditItem = () => of(true);
|
|
28603
|
+
this.isDraftPage = false;
|
|
28604
|
+
this.itemClick = new EventEmitter();
|
|
28605
|
+
}
|
|
28606
|
+
get gridStyle() {
|
|
28607
|
+
return {
|
|
28608
|
+
'grid-template-columns': this.columns
|
|
28609
|
+
.map((column) => column.width
|
|
28610
|
+
? column.width
|
|
28611
|
+
: column.grow
|
|
28612
|
+
? `minmax(0px,1fr)`
|
|
28613
|
+
: `minmax(0px,max-content)`)
|
|
28614
|
+
.join(' '),
|
|
28615
|
+
};
|
|
28616
|
+
}
|
|
28617
|
+
getItemTitle(item) {
|
|
28618
|
+
if (!this.isDraftPage) {
|
|
28619
|
+
if (item.kind !== 'dataset') {
|
|
28620
|
+
return 'editor.record.lock.resourceType';
|
|
28621
|
+
}
|
|
28622
|
+
else if (item.extras?.isHarvested) {
|
|
28623
|
+
return 'editor.record.lock.harvested';
|
|
28624
|
+
}
|
|
28625
|
+
else if (!item.extras?.edit) {
|
|
28626
|
+
return 'editor.record.lock.owner';
|
|
28627
|
+
}
|
|
28628
|
+
}
|
|
28629
|
+
return '';
|
|
28630
|
+
}
|
|
28631
|
+
handleRowClick(item) {
|
|
28632
|
+
this.itemClick.emit(item);
|
|
28633
|
+
}
|
|
28634
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28635
|
+
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 }); }
|
|
28636
|
+
}
|
|
28637
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
28638
|
+
type: Component,
|
|
28639
|
+
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"] }]
|
|
28640
|
+
}], propDecorators: { columns: [{
|
|
28641
|
+
type: ContentChildren,
|
|
28642
|
+
args: [InteractiveTableColumnComponent]
|
|
28643
|
+
}], items: [{
|
|
28644
|
+
type: Input
|
|
28645
|
+
}], canEditItem: [{
|
|
28646
|
+
type: Input
|
|
28647
|
+
}], isDraftPage: [{
|
|
28648
|
+
type: Input
|
|
28649
|
+
}], itemClick: [{
|
|
28650
|
+
type: Output
|
|
28651
|
+
}] } });
|
|
28652
|
+
|
|
28653
|
+
/**
|
|
28654
|
+
* This component will make a block that will stay sticky on the top of the page,
|
|
28655
|
+
* but will also shrink down to a minimum height when scrolling.
|
|
28656
|
+
* The ratio between minimum and nominal height is stored in the shrinkRatio
|
|
28657
|
+
* property, and can be used to change e.g. the opacity or size of child elements.
|
|
28658
|
+
* This component renders at z-index: 50 by default.
|
|
28659
|
+
* The first parent element with an overflow of `scroll` or `overflow` is considered
|
|
28660
|
+
* for scroll events.
|
|
28661
|
+
*/
|
|
28662
|
+
class StickyHeaderComponent {
|
|
28663
|
+
constructor(changeDetector, hostEl, zone) {
|
|
28664
|
+
this.changeDetector = changeDetector;
|
|
28665
|
+
this.hostEl = hostEl;
|
|
28666
|
+
this.zone = zone;
|
|
28667
|
+
}
|
|
28668
|
+
ngAfterViewInit() {
|
|
28669
|
+
this.scrollSub = fromEvent(window, 'scroll', {
|
|
28670
|
+
passive: true,
|
|
28671
|
+
})
|
|
28672
|
+
.pipe(throttleTime(0, animationFrameScheduler, {
|
|
28673
|
+
leading: true,
|
|
28674
|
+
trailing: true,
|
|
28675
|
+
}))
|
|
28676
|
+
.subscribe(this.updateSize.bind(this));
|
|
28677
|
+
}
|
|
28678
|
+
ngOnInit() {
|
|
28679
|
+
this.placeholderEl = document.createElement('div');
|
|
28680
|
+
this.placeholderEl.style.position = 'absolute';
|
|
28681
|
+
this.placeholderEl.classList.add('sticky-header-placeholder');
|
|
28682
|
+
this.hostEl.nativeElement.insertAdjacentElement('beforebegin', this.placeholderEl);
|
|
28683
|
+
}
|
|
28684
|
+
ngAfterViewChecked() {
|
|
28685
|
+
this.updateSize();
|
|
28686
|
+
}
|
|
28687
|
+
ngOnDestroy() {
|
|
28688
|
+
this.scrollSub.unsubscribe();
|
|
28689
|
+
this.placeholderEl.remove();
|
|
28690
|
+
}
|
|
28691
|
+
updateSize() {
|
|
28692
|
+
this.zone.runOutsideAngular(() => {
|
|
28693
|
+
if (window.scrollY === this.parentScroll)
|
|
28694
|
+
return;
|
|
28695
|
+
this.parentScroll = window.scrollY;
|
|
28696
|
+
const offsetTop = Math.max(0, this.parentScroll - this.placeholderEl.offsetTop);
|
|
28697
|
+
const newHeightPx = Math.max(this.minHeightPx, this.fullHeightPx - offsetTop);
|
|
28698
|
+
this.innerContainer.nativeElement.style.transform = `translate(0, ${newHeightPx - this.fullHeightPx}px)`;
|
|
28699
|
+
this.expandRatio =
|
|
28700
|
+
(newHeightPx - this.minHeightPx) /
|
|
28701
|
+
(this.fullHeightPx - this.minHeightPx);
|
|
28702
|
+
this.changeDetector.detectChanges();
|
|
28703
|
+
});
|
|
28704
|
+
}
|
|
28705
|
+
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 }); }
|
|
28706
|
+
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 }); }
|
|
28707
|
+
}
|
|
28708
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StickyHeaderComponent, decorators: [{
|
|
28709
|
+
type: Component,
|
|
28710
|
+
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" }]
|
|
28711
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef, decorators: [{
|
|
28712
|
+
type: Host
|
|
28713
|
+
}] }, { type: i0.NgZone }], propDecorators: { minHeightPx: [{
|
|
28714
|
+
type: Input
|
|
28715
|
+
}], fullHeightPx: [{
|
|
28716
|
+
type: Input
|
|
28717
|
+
}], template: [{
|
|
28718
|
+
type: ContentChild,
|
|
28719
|
+
args: [TemplateRef]
|
|
28720
|
+
}], outerContainer: [{
|
|
28721
|
+
type: ViewChild,
|
|
28722
|
+
args: ['outerContainer']
|
|
28723
|
+
}], innerContainer: [{
|
|
28724
|
+
type: ViewChild,
|
|
28725
|
+
args: ['innerContainer']
|
|
28726
|
+
}] } });
|
|
28727
|
+
|
|
28728
|
+
class BlockListComponent {
|
|
28729
|
+
get pages() {
|
|
28730
|
+
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
28731
|
+
}
|
|
28732
|
+
get isFirstPage() {
|
|
28733
|
+
return this.currentPage_ === 0;
|
|
28734
|
+
}
|
|
28735
|
+
get isLastPage() {
|
|
28736
|
+
return this.currentPage_ === this.pagesCount - 1;
|
|
28737
|
+
}
|
|
28738
|
+
get pagesCount() {
|
|
28739
|
+
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
28740
|
+
}
|
|
28741
|
+
get currentPage() {
|
|
28742
|
+
return this.currentPage_ + 1;
|
|
28743
|
+
}
|
|
28744
|
+
constructor(changeDetector) {
|
|
28745
|
+
this.changeDetector = changeDetector;
|
|
28746
|
+
this.pageSize = 4;
|
|
28747
|
+
this.containerClass = '';
|
|
28748
|
+
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
28749
|
+
this.minHeight = 0;
|
|
28750
|
+
this.listChanges = new EventEmitter();
|
|
28751
|
+
this.subComponentSize = 'M';
|
|
28752
|
+
this.currentPage_ = 0;
|
|
28753
|
+
this.refreshBlocksVisibility = () => {
|
|
28754
|
+
this.blocks.forEach((block, index) => {
|
|
28755
|
+
block.nativeElement.style.display =
|
|
28756
|
+
index >= this.currentPage_ * this.pageSize &&
|
|
28757
|
+
index < (this.currentPage_ + 1) * this.pageSize
|
|
28758
|
+
? null
|
|
28759
|
+
: 'none';
|
|
28760
|
+
});
|
|
28761
|
+
};
|
|
28762
|
+
}
|
|
28763
|
+
ngAfterViewInit() {
|
|
28764
|
+
this.blocks.changes.subscribe(() => {
|
|
28765
|
+
this.updateSizes();
|
|
28766
|
+
this.refreshBlocksVisibility();
|
|
28767
|
+
this.goToPage(1);
|
|
28768
|
+
this.changeDetector.detectChanges();
|
|
28769
|
+
this.listChanges.emit(this);
|
|
28770
|
+
});
|
|
28771
|
+
this.updateSizes();
|
|
28772
|
+
this.refreshBlocksVisibility();
|
|
28773
|
+
// we store the first height as the min-height of the list container
|
|
28774
|
+
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
28775
|
+
this.changeDetector.detectChanges();
|
|
28776
|
+
this.listChanges.emit(this);
|
|
28777
|
+
}
|
|
28778
|
+
updateSizes() {
|
|
28779
|
+
this.subComponentSize = this.computeSubComponentSize();
|
|
28780
|
+
this.pageSize = this.computePageSize();
|
|
28781
|
+
}
|
|
28782
|
+
computeSubComponentSize() {
|
|
28783
|
+
if (!this.blocks)
|
|
28784
|
+
return 'M';
|
|
28785
|
+
const subComponentsCount = this.blocks.length;
|
|
28786
|
+
if (subComponentsCount <= 3)
|
|
28787
|
+
return 'L';
|
|
28788
|
+
if (subComponentsCount <= 12)
|
|
28789
|
+
return 'M';
|
|
28790
|
+
if (subComponentsCount <= 18)
|
|
28791
|
+
return 'S';
|
|
28792
|
+
return 'XS';
|
|
28793
|
+
}
|
|
28794
|
+
computePageSize() {
|
|
28795
|
+
switch (this.subComponentSize) {
|
|
28796
|
+
case 'L':
|
|
28797
|
+
return 3;
|
|
28798
|
+
case 'S':
|
|
28799
|
+
return 6;
|
|
28800
|
+
case 'XS':
|
|
28801
|
+
return 8;
|
|
28802
|
+
default:
|
|
28803
|
+
return 4;
|
|
28804
|
+
}
|
|
28805
|
+
}
|
|
28806
|
+
goToPage(pageIndex) {
|
|
28807
|
+
this.currentPage_ = Math.max(Math.min(pageIndex - 1, this.pagesCount - 1), 0);
|
|
28808
|
+
this.changeDetector.detectChanges();
|
|
28809
|
+
this.refreshBlocksVisibility();
|
|
28810
|
+
}
|
|
28811
|
+
goToPrevPage() {
|
|
28812
|
+
if (this.isFirstPage)
|
|
28813
|
+
return;
|
|
28814
|
+
this.goToPage(this.currentPage - 1);
|
|
28815
|
+
}
|
|
28816
|
+
goToNextPage() {
|
|
28817
|
+
if (this.isLastPage)
|
|
28818
|
+
return;
|
|
28819
|
+
this.goToPage(this.currentPage + 1);
|
|
28820
|
+
}
|
|
28821
|
+
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 }); }
|
|
28822
|
+
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 }); }
|
|
28823
|
+
}
|
|
28824
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
28825
|
+
type: Component,
|
|
28826
|
+
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"] }]
|
|
28827
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { containerClass: [{
|
|
28828
|
+
type: Input
|
|
28829
|
+
}], paginationContainerClass: [{
|
|
28830
|
+
type: Input
|
|
28831
|
+
}], blocks: [{
|
|
28832
|
+
type: ContentChildren,
|
|
28833
|
+
args: ['block', { read: ElementRef }]
|
|
28834
|
+
}], blockContainer: [{
|
|
28835
|
+
type: ViewChild,
|
|
28836
|
+
args: ['blockContainer']
|
|
28837
|
+
}], listChanges: [{
|
|
28838
|
+
type: Output
|
|
28839
|
+
}] } });
|
|
28840
|
+
|
|
28316
28841
|
class SortableListComponent {
|
|
28317
28842
|
constructor() {
|
|
28318
28843
|
this.itemsOrderChange = new EventEmitter();
|
|
@@ -28487,34 +29012,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28487
29012
|
}] });
|
|
28488
29013
|
|
|
28489
29014
|
class TruncatedTextComponent {
|
|
28490
|
-
constructor(cd, ngZone
|
|
29015
|
+
constructor(cd, ngZone) {
|
|
28491
29016
|
this.cd = cd;
|
|
28492
29017
|
this.ngZone = ngZone;
|
|
28493
|
-
this.viewportRuler = viewportRuler;
|
|
28494
29018
|
this.text = '';
|
|
28495
29019
|
this.extraClass = '';
|
|
28496
29020
|
this.isTextTruncated = false;
|
|
28497
|
-
this.isOpen = false;
|
|
28498
|
-
this.overlayPosition = {
|
|
28499
|
-
originX: 'end',
|
|
28500
|
-
originY: 'top',
|
|
28501
|
-
overlayX: 'end',
|
|
28502
|
-
overlayY: 'top',
|
|
28503
|
-
};
|
|
28504
29021
|
this.resizeObserver = new ResizeObserver(() => {
|
|
28505
29022
|
this.ngZone.run(() => this.checkTextTruncation());
|
|
28506
29023
|
});
|
|
28507
29024
|
this.mutationObserver = new MutationObserver(() => {
|
|
28508
29025
|
this.ngZone.run(() => {
|
|
28509
29026
|
this.checkTextTruncation();
|
|
28510
|
-
this.close();
|
|
28511
29027
|
});
|
|
28512
29028
|
});
|
|
28513
|
-
this.viewportSubscription = this.viewportRuler.change().subscribe(() => {
|
|
28514
|
-
if (this.isOpen) {
|
|
28515
|
-
this.updateOverlayPosition();
|
|
28516
|
-
}
|
|
28517
|
-
});
|
|
28518
29029
|
}
|
|
28519
29030
|
ngAfterViewInit() {
|
|
28520
29031
|
const element = this.textElement.nativeElement;
|
|
@@ -28529,39 +29040,14 @@ class TruncatedTextComponent {
|
|
|
28529
29040
|
ngOnDestroy() {
|
|
28530
29041
|
this.resizeObserver?.disconnect();
|
|
28531
29042
|
this.mutationObserver?.disconnect();
|
|
28532
|
-
this.viewportSubscription?.unsubscribe();
|
|
28533
|
-
this.close();
|
|
28534
|
-
}
|
|
28535
|
-
toggleOverlay() {
|
|
28536
|
-
this.isOpen = !this.isOpen;
|
|
28537
|
-
if (this.isOpen) {
|
|
28538
|
-
this.updateOverlayPosition();
|
|
28539
|
-
}
|
|
28540
|
-
}
|
|
28541
|
-
updateOverlayPosition() {
|
|
28542
|
-
const element = this.textElement.nativeElement;
|
|
28543
|
-
const rect = element.getBoundingClientRect();
|
|
28544
|
-
const viewportWidth = this.viewportRuler.getViewportSize().width;
|
|
28545
|
-
const isMobile = viewportWidth < 640;
|
|
28546
|
-
const overlayWidth = isMobile ? 190 : 320;
|
|
28547
|
-
const isNearLeftEdge = rect.left < overlayWidth;
|
|
28548
|
-
this.overlayPosition = {
|
|
28549
|
-
originX: isNearLeftEdge ? 'start' : 'end',
|
|
28550
|
-
originY: 'top',
|
|
28551
|
-
overlayX: isNearLeftEdge ? 'start' : 'end',
|
|
28552
|
-
overlayY: 'top',
|
|
28553
|
-
};
|
|
28554
|
-
}
|
|
28555
|
-
close() {
|
|
28556
|
-
this.isOpen = false;
|
|
28557
29043
|
}
|
|
28558
29044
|
checkTextTruncation() {
|
|
28559
29045
|
const element = this.textElement.nativeElement;
|
|
28560
29046
|
this.isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
28561
29047
|
this.cd.detectChanges();
|
|
28562
29048
|
}
|
|
28563
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }
|
|
28564
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TruncatedTextComponent, isStandalone: true, selector: "gn-ui-truncated-text", inputs: { text: "text", extraClass: "extraClass" }, providers: [provideIcons({ iconoirExpand
|
|
29049
|
+
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 }); }
|
|
29050
|
+
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"] }] }); }
|
|
28565
29051
|
}
|
|
28566
29052
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, decorators: [{
|
|
28567
29053
|
type: Component,
|
|
@@ -28571,12 +29057,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28571
29057
|
MatButtonModule,
|
|
28572
29058
|
OverlayModule,
|
|
28573
29059
|
ButtonComponent,
|
|
29060
|
+
CellPopinComponent,
|
|
28574
29061
|
NgIconComponent,
|
|
28575
|
-
], providers: [provideIcons({ iconoirExpand
|
|
28576
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }
|
|
29062
|
+
], 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" }]
|
|
29063
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { text: [{
|
|
28577
29064
|
type: Input
|
|
28578
29065
|
}], extraClass: [{
|
|
28579
29066
|
type: Input
|
|
29067
|
+
}], scrollContainer: [{
|
|
29068
|
+
type: Input
|
|
29069
|
+
}], cdkScrollContainer: [{
|
|
29070
|
+
type: Input
|
|
28580
29071
|
}], textElement: [{
|
|
28581
29072
|
type: ViewChild,
|
|
28582
29073
|
args: ['textElement']
|
|
@@ -29187,6 +29678,10 @@ marker('record.metadata.quality.updateFrequency.success');
|
|
|
29187
29678
|
marker('record.metadata.quality.updateFrequency.failed');
|
|
29188
29679
|
marker('record.metadata.quality.organisation.success');
|
|
29189
29680
|
marker('record.metadata.quality.organisation.failed');
|
|
29681
|
+
marker('record.metadata.quality.capabilities.success');
|
|
29682
|
+
marker('record.metadata.quality.capabilities.failed');
|
|
29683
|
+
marker('record.metadata.quality.source.success');
|
|
29684
|
+
marker('record.metadata.quality.source.failed');
|
|
29190
29685
|
class MetadataQualityItemComponent {
|
|
29191
29686
|
get icon() {
|
|
29192
29687
|
return this.value ? 'matCheck' : 'matWarningAmber';
|
|
@@ -29210,6 +29705,28 @@ class MetadataQualityComponent {
|
|
|
29210
29705
|
constructor() {
|
|
29211
29706
|
this.smaller = false;
|
|
29212
29707
|
this.items = [];
|
|
29708
|
+
this.COMMON_CHECKS = {
|
|
29709
|
+
title: (metadata) => !!metadata?.title,
|
|
29710
|
+
description: (metadata) => !!metadata?.abstract,
|
|
29711
|
+
keywords: (metadata) => (metadata?.keywords?.length ?? 0) > 0,
|
|
29712
|
+
legalConstraints: (metadata) => (metadata?.legalConstraints?.length ?? 0) > 0,
|
|
29713
|
+
contact: (metadata) => !!metadata?.contacts?.[0]?.email,
|
|
29714
|
+
};
|
|
29715
|
+
this.SPECIFIC_CHECKS = {
|
|
29716
|
+
dataset: {
|
|
29717
|
+
updateFrequency: (metadata) => !!metadata?.updateFrequency,
|
|
29718
|
+
topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
|
|
29719
|
+
organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
|
|
29720
|
+
},
|
|
29721
|
+
service: {
|
|
29722
|
+
capabilities: (metadata) => (metadata?.onlineResources ?? []).some((resource) => this.hasGetCapabilities(resource?.url?.href ?? '')),
|
|
29723
|
+
},
|
|
29724
|
+
reuse: {
|
|
29725
|
+
topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
|
|
29726
|
+
organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
|
|
29727
|
+
source: (metadata) => !!metadata?.extras?.sourcesIdentifiers,
|
|
29728
|
+
},
|
|
29729
|
+
};
|
|
29213
29730
|
}
|
|
29214
29731
|
get qualityScore() {
|
|
29215
29732
|
const qualityScore = this.metadata?.extras?.qualityScore;
|
|
@@ -29225,17 +29742,20 @@ class MetadataQualityComponent {
|
|
|
29225
29742
|
this.items.push({ name, value });
|
|
29226
29743
|
}
|
|
29227
29744
|
}
|
|
29745
|
+
hasGetCapabilities(url) {
|
|
29746
|
+
return url.toLowerCase().includes('capabilities');
|
|
29747
|
+
}
|
|
29228
29748
|
initialize() {
|
|
29229
|
-
const contact = this.metadata?.contacts?.[0];
|
|
29230
29749
|
this.items = [];
|
|
29231
|
-
this.
|
|
29232
|
-
|
|
29233
|
-
|
|
29234
|
-
|
|
29235
|
-
|
|
29236
|
-
|
|
29237
|
-
|
|
29238
|
-
|
|
29750
|
+
Object.entries(this.COMMON_CHECKS).forEach(([name, check]) => {
|
|
29751
|
+
this.add(name, check(this.metadata));
|
|
29752
|
+
});
|
|
29753
|
+
const datasetType = this.metadata?.kind;
|
|
29754
|
+
if (datasetType && this.SPECIFIC_CHECKS[datasetType]) {
|
|
29755
|
+
Object.entries(this.SPECIFIC_CHECKS[datasetType]).forEach(([name, check]) => {
|
|
29756
|
+
this.add(name, check(this.metadata));
|
|
29757
|
+
});
|
|
29758
|
+
}
|
|
29239
29759
|
}
|
|
29240
29760
|
ngOnChanges(changes) {
|
|
29241
29761
|
if (changes['metadata'] || changes['metadataQualityDisplay']) {
|
|
@@ -29279,6 +29799,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29279
29799
|
type: Input
|
|
29280
29800
|
}] } });
|
|
29281
29801
|
|
|
29802
|
+
class InternalLinkCardContactComponent {
|
|
29803
|
+
constructor() {
|
|
29804
|
+
this.size = 'M';
|
|
29805
|
+
}
|
|
29806
|
+
get organization() {
|
|
29807
|
+
return this.record.ownerOrganization;
|
|
29808
|
+
}
|
|
29809
|
+
get contacts() {
|
|
29810
|
+
return ((this.record.kind === 'dataset'
|
|
29811
|
+
? this.record.contactsForResource
|
|
29812
|
+
: this.record.contacts) || []);
|
|
29813
|
+
}
|
|
29814
|
+
openExternalUrl(event, url) {
|
|
29815
|
+
event.stopPropagation();
|
|
29816
|
+
window.open(url, '_blank');
|
|
29817
|
+
}
|
|
29818
|
+
openMailto(event, email) {
|
|
29819
|
+
event.stopPropagation();
|
|
29820
|
+
window.open(`mailto:${email}`, '_blank');
|
|
29821
|
+
}
|
|
29822
|
+
copyToClipboard(event, text) {
|
|
29823
|
+
event.stopPropagation();
|
|
29824
|
+
navigator.clipboard.writeText(text);
|
|
29825
|
+
}
|
|
29826
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29827
|
+
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: [
|
|
29828
|
+
provideIcons({
|
|
29829
|
+
iconoirInternet,
|
|
29830
|
+
matEmailOutline,
|
|
29831
|
+
matPhoneOutline,
|
|
29832
|
+
matLocationOnOutline,
|
|
29833
|
+
}),
|
|
29834
|
+
], 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"] }] }); }
|
|
29835
|
+
}
|
|
29836
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardContactComponent, decorators: [{
|
|
29837
|
+
type: Component,
|
|
29838
|
+
args: [{ selector: 'gn-ui-internal-link-card-contact', standalone: true, imports: [NgIf, ThumbnailComponent, NgIconComponent, TranslateModule], providers: [
|
|
29839
|
+
provideIcons({
|
|
29840
|
+
iconoirInternet,
|
|
29841
|
+
matEmailOutline,
|
|
29842
|
+
matPhoneOutline,
|
|
29843
|
+
matLocationOnOutline,
|
|
29844
|
+
}),
|
|
29845
|
+
], 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" }]
|
|
29846
|
+
}], propDecorators: { record: [{
|
|
29847
|
+
type: Input
|
|
29848
|
+
}], size: [{
|
|
29849
|
+
type: Input
|
|
29850
|
+
}] } });
|
|
29851
|
+
|
|
29282
29852
|
class InternalLinkCardComponent {
|
|
29283
29853
|
set size(value) {
|
|
29284
29854
|
this._size = value;
|
|
@@ -29320,28 +29890,19 @@ class InternalLinkCardComponent {
|
|
|
29320
29890
|
this.abstract = removeWhitespace(stripHtml(this.record?.abstract));
|
|
29321
29891
|
this.subscription.add(fromEvent(this.elementRef.nativeElement, 'click').subscribe(() => this.mdSelect.emit(this.record)));
|
|
29322
29892
|
}
|
|
29323
|
-
get organization() {
|
|
29324
|
-
return this.record.ownerOrganization;
|
|
29325
|
-
}
|
|
29326
|
-
get contacts() {
|
|
29327
|
-
return ((this.record.kind === 'dataset'
|
|
29328
|
-
? this.record.contactsForResource
|
|
29329
|
-
: this.record.contacts) || []);
|
|
29330
|
-
}
|
|
29331
29893
|
getTitleClass() {
|
|
29332
29894
|
return this.titleClassMap[this._size];
|
|
29333
29895
|
}
|
|
29334
|
-
|
|
29335
|
-
|
|
29336
|
-
|
|
29337
|
-
|
|
29338
|
-
|
|
29339
|
-
|
|
29340
|
-
window.open(`mailto:${email}`, '_blank');
|
|
29896
|
+
getAbstractClass() {
|
|
29897
|
+
const marginClass = ['S', 'XS'].includes(this.size) ? 'ml-2' : '';
|
|
29898
|
+
const clampClass = this.size === 'L' && !this.record.ownerOrganization?.name
|
|
29899
|
+
? 'line-clamp-6'
|
|
29900
|
+
: 'line-clamp-2';
|
|
29901
|
+
return `${clampClass} ${marginClass}`.trim();
|
|
29341
29902
|
}
|
|
29342
|
-
|
|
29343
|
-
|
|
29344
|
-
|
|
29903
|
+
displayAbstract() {
|
|
29904
|
+
return (this.size === 'L' ||
|
|
29905
|
+
(['M', 'S'].includes(this.size) && !this.record.ownerOrganization?.name));
|
|
29345
29906
|
}
|
|
29346
29907
|
get shouldShowThumbnail() {
|
|
29347
29908
|
return this.size === 'L' || this.size === 'M';
|
|
@@ -29351,40 +29912,34 @@ class InternalLinkCardComponent {
|
|
|
29351
29912
|
provideIcons({
|
|
29352
29913
|
iconoirInternet,
|
|
29353
29914
|
matLocationSearchingOutline,
|
|
29354
|
-
matEmailOutline,
|
|
29355
|
-
matPhoneOutline,
|
|
29356
|
-
matLocationOnOutline,
|
|
29357
29915
|
}),
|
|
29358
29916
|
provideNgIconsConfig({
|
|
29359
29917
|
size: '1.2em',
|
|
29360
29918
|
}),
|
|
29361
|
-
], ngImport: i0, template: "<a [attr.href]=\"linkHref\" [target]=\"linkTarget\">\n <div\n class=\"group rounded-md bg-white hover:cursor-pointer hover:bg-slate-50 overflow-hidden w-full\"\n [ngClass]=\"cardClass\"\n >\n <div\n class=\"flex flex-row md:gap-0 justify-between w-full\"\n [ngClass]=\"{ 'flex-wrap md:flex-nowrap gap-3': size === 'L' }\"\n >\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"border mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grow flex flex-col gap-3\">\n <div class=\"flex items-center gap-2\">\n <div class=\"grow flex flex-wrap items-center gap-2\">\n <gn-ui-kind-badge\n [styling]=\"'default'\"\n [kind]=\"record?.kind\"\n ></gn-ui-kind-badge>\n <gn-ui-geo-data-badge\n [showLabel]=\"size === 'L'\"\n [styling]=\"'light'\"\n [record]=\"record\"\n ></gn-ui-geo-data-badge>\n <gn-ui-metadata-quality\n class=\"flex items-center\"\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div *ngIf=\"size !== 'XS'\" data-cy=\"recordFav\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n\n <div class=\"grow flex flex-col gap-2\">\n <div\n class=\"font-medium text-title group-hover:text-primary\"\n [title]=\"record.title\"\n >\n <h4\n class=\"mr-6 overflow-hidden\"\n [ngClass]=\"getTitleClass()\"\n data-cy=\"recordTitle\"\n [title]=\"record.title\"\n >\n {{ record.title }}\n </h4>\n </div>\n <div\n *ngIf=\"
|
|
29919
|
+
], 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"] }] }); }
|
|
29362
29920
|
}
|
|
29363
29921
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, decorators: [{
|
|
29364
29922
|
type: Component,
|
|
29365
29923
|
args: [{ selector: 'gn-ui-internal-link-card', standalone: true, imports: [
|
|
29366
29924
|
NgClass,
|
|
29367
29925
|
NgIf,
|
|
29368
|
-
ThumbnailComponent,
|
|
29369
29926
|
MetadataQualityComponent,
|
|
29370
29927
|
NgTemplateOutlet,
|
|
29371
|
-
NgIconComponent,
|
|
29372
29928
|
TranslateModule,
|
|
29373
29929
|
GeoDataBadgeComponent,
|
|
29374
29930
|
KindBadgeComponent,
|
|
29375
29931
|
MarkdownParserComponent,
|
|
29932
|
+
InternalLinkCardContactComponent,
|
|
29933
|
+
ThumbnailComponent,
|
|
29376
29934
|
], providers: [
|
|
29377
29935
|
provideIcons({
|
|
29378
29936
|
iconoirInternet,
|
|
29379
29937
|
matLocationSearchingOutline,
|
|
29380
|
-
matEmailOutline,
|
|
29381
|
-
matPhoneOutline,
|
|
29382
|
-
matLocationOnOutline,
|
|
29383
29938
|
}),
|
|
29384
29939
|
provideNgIconsConfig({
|
|
29385
29940
|
size: '1.2em',
|
|
29386
29941
|
}),
|
|
29387
|
-
], template: "<a [attr.href]=\"linkHref\" [target]=\"linkTarget\">\n <div\n class=\"group rounded-md bg-white hover:cursor-pointer hover:bg-slate-50 overflow-hidden w-full\"\n [ngClass]=\"cardClass\"\n >\n <div\n class=\"flex flex-row md:gap-0 justify-between w-full\"\n [ngClass]=\"{ 'flex-wrap md:flex-nowrap gap-3': size === 'L' }\"\n >\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"border mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grow flex flex-col gap-3\">\n <div class=\"flex items-center gap-2\">\n <div class=\"grow flex flex-wrap items-center gap-2\">\n <gn-ui-kind-badge\n [styling]=\"'default'\"\n [kind]=\"record?.kind\"\n ></gn-ui-kind-badge>\n <gn-ui-geo-data-badge\n [showLabel]=\"size === 'L'\"\n [styling]=\"'light'\"\n [record]=\"record\"\n ></gn-ui-geo-data-badge>\n <gn-ui-metadata-quality\n class=\"flex items-center\"\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div *ngIf=\"size !== 'XS'\" data-cy=\"recordFav\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n\n <div class=\"grow flex flex-col gap-2\">\n <div\n class=\"font-medium text-title group-hover:text-primary\"\n [title]=\"record.title\"\n >\n <h4\n class=\"mr-6 overflow-hidden\"\n [ngClass]=\"getTitleClass()\"\n data-cy=\"recordTitle\"\n [title]=\"record.title\"\n >\n {{ record.title }}\n </h4>\n </div>\n <div\n *ngIf=\"
|
|
29942
|
+
], 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" }]
|
|
29388
29943
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { record: [{
|
|
29389
29944
|
type: Input
|
|
29390
29945
|
}], linkTarget: [{
|
|
@@ -31397,7 +31952,8 @@ class UiElementsModule {
|
|
|
31397
31952
|
InternalLinkCardComponent,
|
|
31398
31953
|
ServiceCapabilitiesComponent,
|
|
31399
31954
|
KindBadgeComponent,
|
|
31400
|
-
GeoDataBadgeComponent
|
|
31955
|
+
GeoDataBadgeComponent,
|
|
31956
|
+
ScrollingModule], exports: [ThumbnailComponent,
|
|
31401
31957
|
AvatarComponent,
|
|
31402
31958
|
UserPreviewComponent,
|
|
31403
31959
|
MarkdownParserComponent,
|
|
@@ -31430,7 +31986,8 @@ class UiElementsModule {
|
|
|
31430
31986
|
InternalLinkCardComponent,
|
|
31431
31987
|
ServiceCapabilitiesComponent,
|
|
31432
31988
|
KindBadgeComponent,
|
|
31433
|
-
GeoDataBadgeComponent
|
|
31989
|
+
GeoDataBadgeComponent,
|
|
31990
|
+
ScrollingModule] }); }
|
|
31434
31991
|
}
|
|
31435
31992
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
31436
31993
|
type: NgModule,
|
|
@@ -31459,6 +32016,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31459
32016
|
ServiceCapabilitiesComponent,
|
|
31460
32017
|
KindBadgeComponent,
|
|
31461
32018
|
GeoDataBadgeComponent,
|
|
32019
|
+
ScrollingModule,
|
|
31462
32020
|
],
|
|
31463
32021
|
providers: [
|
|
31464
32022
|
provideNgIconsConfig({
|
|
@@ -31548,48 +32106,130 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31548
32106
|
type: Output
|
|
31549
32107
|
}] } });
|
|
31550
32108
|
|
|
32109
|
+
marker('feature.catalog.attribute.type');
|
|
32110
|
+
marker('feature.catalog.attribute.name');
|
|
32111
|
+
marker('feature.catalog.attribute.code');
|
|
32112
|
+
marker('feature.catalog.attribute.definition');
|
|
32113
|
+
marker('feature.catalog.attribute.values');
|
|
31551
32114
|
class FeatureCatalogListComponent {
|
|
31552
32115
|
constructor() {
|
|
31553
|
-
this.
|
|
31554
|
-
{
|
|
31555
|
-
|
|
31556
|
-
|
|
31557
|
-
|
|
31558
|
-
},
|
|
31559
|
-
{
|
|
31560
|
-
key: 'name',
|
|
31561
|
-
label: 'feature.catalog.attribute.name',
|
|
31562
|
-
width: '32%',
|
|
31563
|
-
},
|
|
31564
|
-
{
|
|
31565
|
-
key: 'code',
|
|
31566
|
-
label: 'feature.catalog.attribute.code',
|
|
31567
|
-
width: '24%',
|
|
31568
|
-
},
|
|
31569
|
-
{
|
|
31570
|
-
key: 'title',
|
|
31571
|
-
label: 'feature.catalog.attribute.description',
|
|
31572
|
-
width: '25%',
|
|
31573
|
-
},
|
|
32116
|
+
this.COLUMNS_DEFAULT = [
|
|
32117
|
+
{ key: 'type', width: '17%' },
|
|
32118
|
+
{ key: 'name', width: '32%' },
|
|
32119
|
+
{ key: 'code', width: '17%' },
|
|
32120
|
+
{ key: 'definition', width: 'minmax(0px, 1fr)' },
|
|
31574
32121
|
];
|
|
31575
|
-
this.
|
|
32122
|
+
this.COLUMN_VALUES = {
|
|
32123
|
+
key: 'values',
|
|
32124
|
+
width: '73px',
|
|
32125
|
+
class: 'text-center',
|
|
32126
|
+
};
|
|
31576
32127
|
}
|
|
31577
|
-
|
|
31578
|
-
|
|
32128
|
+
getColumnsDefinition(attrs) {
|
|
32129
|
+
const hasValues = attrs.some((a) => a.values?.length > 0);
|
|
32130
|
+
return [...this.COLUMNS_DEFAULT, ...(hasValues ? [this.COLUMN_VALUES] : [])];
|
|
32131
|
+
}
|
|
32132
|
+
getGridTemplateColumns(attributes) {
|
|
32133
|
+
return this.getColumnsDefinition(attributes)
|
|
32134
|
+
.map((col) => col.width)
|
|
32135
|
+
.join(' ');
|
|
32136
|
+
}
|
|
32137
|
+
trackByColumn(_i, col) {
|
|
32138
|
+
return col.key;
|
|
31579
32139
|
}
|
|
31580
32140
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCatalogListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31581
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureCatalogListComponent, isStandalone: true, selector: "gn-ui-feature-catalog-list", inputs: { filteredFeatureCatalog: "filteredFeatureCatalog" }, ngImport: i0, template: "<div class=\"flex flex-col gap-2 py-5 px-5
|
|
32141
|
+
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]" }] }); }
|
|
31582
32142
|
}
|
|
31583
32143
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCatalogListComponent, decorators: [{
|
|
31584
32144
|
type: Component,
|
|
31585
32145
|
args: [{ selector: 'gn-ui-feature-catalog-list', standalone: true, imports: [
|
|
32146
|
+
ButtonComponent,
|
|
32147
|
+
CellPopinComponent,
|
|
31586
32148
|
CommonModule,
|
|
31587
32149
|
TranslateModule,
|
|
31588
32150
|
ExpandablePanelComponent,
|
|
31589
32151
|
TruncatedTextComponent,
|
|
31590
|
-
|
|
32152
|
+
NgIconComponent,
|
|
32153
|
+
ScrollingModule,
|
|
32154
|
+
], 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" }]
|
|
31591
32155
|
}], propDecorators: { filteredFeatureCatalog: [{
|
|
31592
32156
|
type: Input
|
|
32157
|
+
}], scrollContainer: [{
|
|
32158
|
+
type: ViewChild,
|
|
32159
|
+
args: ['scrollContainer']
|
|
32160
|
+
}], scrollable: [{
|
|
32161
|
+
type: ViewChild,
|
|
32162
|
+
args: [CdkScrollable, { static: true }]
|
|
32163
|
+
}], panelComponent: [{
|
|
32164
|
+
type: ViewChild,
|
|
32165
|
+
args: ['expanel', { read: ExpandablePanelComponent, static: true }]
|
|
32166
|
+
}] } });
|
|
32167
|
+
|
|
32168
|
+
class ActionMenuComponent {
|
|
32169
|
+
constructor(dialog, cdr) {
|
|
32170
|
+
this.dialog = dialog;
|
|
32171
|
+
this.cdr = cdr;
|
|
32172
|
+
this.canDuplicate = true;
|
|
32173
|
+
this.canDelete = true;
|
|
32174
|
+
this.duplicate = new EventEmitter();
|
|
32175
|
+
this.delete = new EventEmitter();
|
|
32176
|
+
this.closeActionMenu = new EventEmitter();
|
|
32177
|
+
this.rollback = new EventEmitter();
|
|
32178
|
+
this.switch = new EventEmitter();
|
|
32179
|
+
this.sectionDisplayed = 'mainMenu';
|
|
32180
|
+
}
|
|
32181
|
+
displayMainMenu() {
|
|
32182
|
+
this.sectionDisplayed = 'mainMenu';
|
|
32183
|
+
this.cdr.markForCheck();
|
|
32184
|
+
}
|
|
32185
|
+
displayDeleteMenu() {
|
|
32186
|
+
switch (this.page) {
|
|
32187
|
+
case 'draft':
|
|
32188
|
+
this.sectionDisplayed = 'rollbackMenu';
|
|
32189
|
+
break;
|
|
32190
|
+
case 'record':
|
|
32191
|
+
this.delete.emit();
|
|
32192
|
+
break;
|
|
32193
|
+
case 'main':
|
|
32194
|
+
default:
|
|
32195
|
+
this.sectionDisplayed = 'deleteMenu';
|
|
32196
|
+
}
|
|
32197
|
+
this.cdr.markForCheck();
|
|
32198
|
+
}
|
|
32199
|
+
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 }); }
|
|
32200
|
+
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"] }] }); }
|
|
32201
|
+
}
|
|
32202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
32203
|
+
type: Component,
|
|
32204
|
+
args: [{ selector: 'gn-ui-action-menu', standalone: true, imports: [
|
|
32205
|
+
CommonModule,
|
|
32206
|
+
ButtonComponent,
|
|
32207
|
+
MatMenuModule,
|
|
32208
|
+
MatDialogModule,
|
|
32209
|
+
ConfirmationDialogComponent,
|
|
32210
|
+
TranslateModule,
|
|
32211
|
+
], 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" }]
|
|
32212
|
+
}], ctorParameters: () => [{ type: i1$a.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
|
|
32213
|
+
type: Input
|
|
32214
|
+
}], isDuplicating: [{
|
|
32215
|
+
type: Input
|
|
32216
|
+
}], canDelete: [{
|
|
32217
|
+
type: Input
|
|
32218
|
+
}], page: [{
|
|
32219
|
+
type: Input
|
|
32220
|
+
}], duplicate: [{
|
|
32221
|
+
type: Output
|
|
32222
|
+
}], delete: [{
|
|
32223
|
+
type: Output
|
|
32224
|
+
}], closeActionMenu: [{
|
|
32225
|
+
type: Output
|
|
32226
|
+
}], rollback: [{
|
|
32227
|
+
type: Output
|
|
32228
|
+
}], switch: [{
|
|
32229
|
+
type: Output
|
|
32230
|
+
}], trigger: [{
|
|
32231
|
+
type: ViewChild,
|
|
32232
|
+
args: [MatMenuTrigger]
|
|
31593
32233
|
}] } });
|
|
31594
32234
|
|
|
31595
32235
|
class UiSearchModule {
|
|
@@ -31617,7 +32257,8 @@ class UiSearchModule {
|
|
|
31617
32257
|
MatCheckboxModule,
|
|
31618
32258
|
RouterLink,
|
|
31619
32259
|
InteractiveTableComponent, i2$2.NgIconsModule, KindBadgeComponent,
|
|
31620
|
-
MetadataQualityComponent
|
|
32260
|
+
MetadataQualityComponent,
|
|
32261
|
+
ActionMenuComponent], exports: [RecordPreviewListComponent,
|
|
31621
32262
|
RecordPreviewCardComponent,
|
|
31622
32263
|
RecordPreviewTextComponent,
|
|
31623
32264
|
RecordPreviewTitleComponent,
|
|
@@ -31628,7 +32269,8 @@ class UiSearchModule {
|
|
|
31628
32269
|
ResultsHitsNumberComponent,
|
|
31629
32270
|
ResultsHitsSearchKindComponent,
|
|
31630
32271
|
RecordPreviewFeedComponent,
|
|
31631
|
-
RecordPreviewRowComponent
|
|
32272
|
+
RecordPreviewRowComponent,
|
|
32273
|
+
ActionMenuComponent] }); }
|
|
31632
32274
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiSearchModule, providers: [
|
|
31633
32275
|
provideNgIconsConfig({
|
|
31634
32276
|
size: '1.5em',
|
|
@@ -31655,7 +32297,8 @@ class UiSearchModule {
|
|
|
31655
32297
|
matHomeWorkOutline,
|
|
31656
32298
|
}),
|
|
31657
32299
|
KindBadgeComponent,
|
|
31658
|
-
MetadataQualityComponent,
|
|
32300
|
+
MetadataQualityComponent,
|
|
32301
|
+
ActionMenuComponent, FacetsModule$1] }); }
|
|
31659
32302
|
}
|
|
31660
32303
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiSearchModule, decorators: [{
|
|
31661
32304
|
type: NgModule,
|
|
@@ -31698,6 +32341,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31698
32341
|
}),
|
|
31699
32342
|
KindBadgeComponent,
|
|
31700
32343
|
MetadataQualityComponent,
|
|
32344
|
+
ActionMenuComponent,
|
|
31701
32345
|
],
|
|
31702
32346
|
exports: [
|
|
31703
32347
|
RecordPreviewListComponent,
|
|
@@ -31712,6 +32356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31712
32356
|
ResultsHitsSearchKindComponent,
|
|
31713
32357
|
RecordPreviewFeedComponent,
|
|
31714
32358
|
RecordPreviewRowComponent,
|
|
32359
|
+
ActionMenuComponent,
|
|
31715
32360
|
],
|
|
31716
32361
|
providers: [
|
|
31717
32362
|
provideNgIconsConfig({
|
|
@@ -31722,76 +32367,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31722
32367
|
}]
|
|
31723
32368
|
}] });
|
|
31724
32369
|
|
|
31725
|
-
class ActionMenuComponent {
|
|
31726
|
-
constructor(dialog, cdr) {
|
|
31727
|
-
this.dialog = dialog;
|
|
31728
|
-
this.cdr = cdr;
|
|
31729
|
-
this.duplicate = new EventEmitter();
|
|
31730
|
-
this.delete = new EventEmitter();
|
|
31731
|
-
this.closeActionMenu = new EventEmitter();
|
|
31732
|
-
this.rollback = new EventEmitter();
|
|
31733
|
-
this.sectionDisplayed = 'mainMenu';
|
|
31734
|
-
}
|
|
31735
|
-
openMenu() {
|
|
31736
|
-
this.trigger.openMenu();
|
|
31737
|
-
}
|
|
31738
|
-
displayMainMenu() {
|
|
31739
|
-
this.sectionDisplayed = 'mainMenu';
|
|
31740
|
-
this.cdr.markForCheck();
|
|
31741
|
-
}
|
|
31742
|
-
displayDeleteMenu() {
|
|
31743
|
-
if (this.isDraftPage) {
|
|
31744
|
-
this.sectionDisplayed = 'rollbackMenu';
|
|
31745
|
-
}
|
|
31746
|
-
else {
|
|
31747
|
-
this.sectionDisplayed = 'deleteMenu';
|
|
31748
|
-
}
|
|
31749
|
-
this.cdr.markForCheck();
|
|
31750
|
-
}
|
|
31751
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, deps: [{ token: i1$a.MatDialog }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31752
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ActionMenuComponent, isStandalone: true, selector: "gn-ui-action-menu", inputs: { canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage" }, outputs: { duplicate: "duplicate", delete: "delete", closeActionMenu: "closeActionMenu", rollback: "rollback" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"!isDraftPage\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"!isDraftPage\" translate>record.action.delete</span>\n <span *ngIf=\"isDraftPage\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
31753
|
-
}
|
|
31754
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
31755
|
-
type: Component,
|
|
31756
|
-
args: [{ selector: 'gn-ui-action-menu', standalone: true, imports: [
|
|
31757
|
-
CommonModule,
|
|
31758
|
-
ButtonComponent,
|
|
31759
|
-
MatMenuModule,
|
|
31760
|
-
MatDialogModule,
|
|
31761
|
-
ConfirmationDialogComponent,
|
|
31762
|
-
TranslateModule,
|
|
31763
|
-
], template: "<ng-container [ngSwitch]=\"sectionDisplayed\">\n <ng-container *ngSwitchCase=\"'mainMenu'\">\n <div\n data-test=\"mainMenuSection\"\n class=\"mt-2 border border-gray-100 p-2 flex items-center bg-white shadow-2xl rounded-2xl\"\n >\n <ul class=\"flex flex-col gap-2 w-full\">\n <gn-ui-button\n *ngIf=\"!isDraftPage\"\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"duplicate.emit()\"\n [disabled]=\"!canDuplicate\"\n data-test=\"record-menu-duplicate-button\"\n >\n <span *ngIf=\"canDuplicate\" translate>record.action.duplicate</span>\n <span *ngIf=\"!canDuplicate\" translate\n >record.action.duplicating</span\n ></gn-ui-button\n >\n <gn-ui-button\n type=\"light\"\n extraClass=\"flex flex-row items-center gap-2 w-full justify-start\"\n (buttonClick)=\"displayDeleteMenu()\"\n [disabled]=\"!canDelete\"\n data-test=\"record-menu-delete-button\"\n ><span *ngIf=\"!isDraftPage\" translate>record.action.delete</span>\n <span *ngIf=\"isDraftPage\" translate\n >record.action.rollback</span\n ></gn-ui-button\n >\n </ul>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'deleteMenu'\">\n <div\n data-test=\"deleteMenuSection\"\n class=\"w-72 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.delete.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.delete.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"delete.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'100px'\"\n >{{\n 'editor.record.delete.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'100px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.delete.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'rollbackMenu'\">\n <div\n data-test=\"rollbackMenuSection\"\n class=\"w-80 p-6 flex flex-col gap-3 mt-2 border border-gray-100 bg-white shadow-2xl rounded-2xl\"\n >\n <span class=\"text-lg font-bold text-center\">{{\n 'editor.record.undo.confirmation.title' | translate\n }}</span>\n <span class=\"text-center\">{{\n 'editor.record.undo.confirmation.message' | translate\n }}</span>\n <div class=\"flex flex-row gap-8 justify-center\">\n <gn-ui-button\n (buttonClick)=\"rollback.emit()\"\n cdkFocusInitial\n type=\"primary\"\n data-cy=\"confirm-button\"\n [style.--gn-ui-button-width]=\"'120px'\"\n >{{\n 'editor.record.undo.confirmation.confirmText' | translate\n }}</gn-ui-button\n >\n <gn-ui-button\n [style.--gn-ui-button-width]=\"'120px'\"\n (buttonClick)=\"closeActionMenu.emit()\"\n >{{\n 'editor.record.undo.confirmation.cancelText' | translate\n }}</gn-ui-button\n >\n </div>\n </div>\n </ng-container>\n</ng-container>\n" }]
|
|
31764
|
-
}], ctorParameters: () => [{ type: i1$a.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
|
|
31765
|
-
type: Input
|
|
31766
|
-
}], canDelete: [{
|
|
31767
|
-
type: Input
|
|
31768
|
-
}], isDraftPage: [{
|
|
31769
|
-
type: Input
|
|
31770
|
-
}], duplicate: [{
|
|
31771
|
-
type: Output
|
|
31772
|
-
}], delete: [{
|
|
31773
|
-
type: Output
|
|
31774
|
-
}], closeActionMenu: [{
|
|
31775
|
-
type: Output
|
|
31776
|
-
}], rollback: [{
|
|
31777
|
-
type: Output
|
|
31778
|
-
}], trigger: [{
|
|
31779
|
-
type: ViewChild,
|
|
31780
|
-
args: [MatMenuTrigger]
|
|
31781
|
-
}] } });
|
|
31782
|
-
|
|
31783
32370
|
class ResultsTableComponent {
|
|
31784
|
-
constructor(overlay, viewContainerRef, cdr, dateService) {
|
|
32371
|
+
constructor(overlay, viewContainerRef, cdr, dateService, translateService) {
|
|
31785
32372
|
this.overlay = overlay;
|
|
31786
32373
|
this.viewContainerRef = viewContainerRef;
|
|
31787
32374
|
this.cdr = cdr;
|
|
31788
32375
|
this.dateService = dateService;
|
|
32376
|
+
this.translateService = translateService;
|
|
31789
32377
|
this.records = [];
|
|
31790
32378
|
this.selectedRecordsIdentifiers = [];
|
|
31791
32379
|
this.sortOrder = null;
|
|
31792
32380
|
this.hasDraft = () => false;
|
|
31793
32381
|
this.canDuplicate = () => true;
|
|
31794
|
-
this.canDelete = () => true;
|
|
32382
|
+
this.canDelete = () => of(true);
|
|
32383
|
+
this.canEdit = () => of(true);
|
|
31795
32384
|
this.isDraftPage = false;
|
|
31796
32385
|
this.isDuplicating = false;
|
|
31797
32386
|
// emits the column (field) as well as the order
|
|
@@ -31868,9 +32457,13 @@ class ResultsTableComponent {
|
|
|
31868
32457
|
return getBadgeColor(format);
|
|
31869
32458
|
}
|
|
31870
32459
|
handleRecordClick(item) {
|
|
31871
|
-
|
|
31872
|
-
|
|
31873
|
-
|
|
32460
|
+
this.canEdit(item)
|
|
32461
|
+
.pipe(take$1(1))
|
|
32462
|
+
.subscribe((canEdit) => {
|
|
32463
|
+
if (canEdit) {
|
|
32464
|
+
this.recordClick.emit(item);
|
|
32465
|
+
}
|
|
32466
|
+
});
|
|
31874
32467
|
}
|
|
31875
32468
|
handleDuplicate(item) {
|
|
31876
32469
|
this.duplicateRecord.emit(item);
|
|
@@ -31906,8 +32499,18 @@ class ResultsTableComponent {
|
|
|
31906
32499
|
handleRecordSelectedChange(selected, record) {
|
|
31907
32500
|
this.recordsSelectedChange.emit([[record], selected]);
|
|
31908
32501
|
}
|
|
31909
|
-
|
|
31910
|
-
|
|
32502
|
+
isMultilingual(record) {
|
|
32503
|
+
return record.otherLanguages.length > 0;
|
|
32504
|
+
}
|
|
32505
|
+
getTxtHoverMultilingual(record) {
|
|
32506
|
+
return this.translateService.instant('dashboard.records.isMultilingual', {
|
|
32507
|
+
languages: [...[record.defaultLanguage], ...record.otherLanguages].join(', '),
|
|
32508
|
+
});
|
|
32509
|
+
}
|
|
32510
|
+
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 }); }
|
|
32511
|
+
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: [
|
|
32512
|
+
provideIcons({ iconoirUser, iconoirLock, iconoirTranslate, matMoreVert }),
|
|
32513
|
+
], 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"] }] }); }
|
|
31911
32514
|
}
|
|
31912
32515
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
31913
32516
|
type: Component,
|
|
@@ -31921,8 +32524,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31921
32524
|
ActionMenuComponent,
|
|
31922
32525
|
NgIconComponent,
|
|
31923
32526
|
CdkOverlayOrigin,
|
|
31924
|
-
], providers: [
|
|
31925
|
-
|
|
32527
|
+
], providers: [
|
|
32528
|
+
provideIcons({ iconoirUser, iconoirLock, iconoirTranslate, matMoreVert }),
|
|
32529
|
+
], 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"] }]
|
|
32530
|
+
}], ctorParameters: () => [{ type: i1$8.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }, { type: i1$1.TranslateService }], propDecorators: { records: [{
|
|
31926
32531
|
type: Input
|
|
31927
32532
|
}], selectedRecordsIdentifiers: [{
|
|
31928
32533
|
type: Input
|
|
@@ -31934,6 +32539,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31934
32539
|
type: Input
|
|
31935
32540
|
}], canDelete: [{
|
|
31936
32541
|
type: Input
|
|
32542
|
+
}], canEdit: [{
|
|
32543
|
+
type: Input
|
|
31937
32544
|
}], isDraftPage: [{
|
|
31938
32545
|
type: Input
|
|
31939
32546
|
}], isDuplicating: [{
|
|
@@ -32182,9 +32789,10 @@ const FIELDS_SUMMARY = [
|
|
|
32182
32789
|
'userSavedCount',
|
|
32183
32790
|
'cl_topic',
|
|
32184
32791
|
'cl_maintenanceAndUpdateFrequency',
|
|
32185
|
-
'
|
|
32792
|
+
'MD_LegalConstraints*Object',
|
|
32186
32793
|
'qualityScore',
|
|
32187
32794
|
'allKeywords',
|
|
32795
|
+
'recordLink',
|
|
32188
32796
|
];
|
|
32189
32797
|
const FIELDS_BRIEF = [
|
|
32190
32798
|
...FIELDS_SUMMARY,
|
|
@@ -33007,11 +33615,11 @@ class FuzzySearchComponent {
|
|
|
33007
33615
|
this.isSearchActive.emit(event);
|
|
33008
33616
|
}
|
|
33009
33617
|
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 }); }
|
|
33010
|
-
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 }); }
|
|
33618
|
+
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 }); }
|
|
33011
33619
|
}
|
|
33012
33620
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FuzzySearchComponent, decorators: [{
|
|
33013
33621
|
type: Component,
|
|
33014
|
-
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" }]
|
|
33622
|
+
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" }]
|
|
33015
33623
|
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: RecordsRepositoryInterface }], propDecorators: { autocomplete: [{
|
|
33016
33624
|
type: ViewChild,
|
|
33017
33625
|
args: [AutocompleteComponent]
|
|
@@ -33021,6 +33629,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33021
33629
|
type: Input
|
|
33022
33630
|
}], enterButton: [{
|
|
33023
33631
|
type: Input
|
|
33632
|
+
}], placeholder: [{
|
|
33633
|
+
type: Input
|
|
33024
33634
|
}], itemSelected: [{
|
|
33025
33635
|
type: Output
|
|
33026
33636
|
}], inputSubmitted: [{
|
|
@@ -34265,14 +34875,21 @@ class ResultsTableContainerComponent {
|
|
|
34265
34875
|
this.recordsRepository = recordsRepository;
|
|
34266
34876
|
this.notificationsService = notificationsService;
|
|
34267
34877
|
this.translateService = translateService;
|
|
34268
|
-
this.canDuplicate = () => true;
|
|
34269
|
-
this.canDelete = () => true;
|
|
34270
34878
|
this.recordClick = new EventEmitter();
|
|
34271
34879
|
this.duplicateRecord = new EventEmitter();
|
|
34272
34880
|
this.subscription = new Subscription();
|
|
34273
34881
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
34274
34882
|
this.sortBy$ = this.searchFacade.sortBy$;
|
|
34275
34883
|
this.hasDraft = (record) => this.recordsRepository.recordHasDraft(record.uniqueIdentifier);
|
|
34884
|
+
this.canDuplicate = (record) => {
|
|
34885
|
+
return this.recordsRepository.canDuplicate(record);
|
|
34886
|
+
};
|
|
34887
|
+
this.canDelete = (record) => {
|
|
34888
|
+
return this.recordsRepository.canDelete(record);
|
|
34889
|
+
};
|
|
34890
|
+
this.canEdit = (record) => {
|
|
34891
|
+
return this.recordsRepository.canEditIndexedRecord(record);
|
|
34892
|
+
};
|
|
34276
34893
|
}
|
|
34277
34894
|
handleRecordClick(item) {
|
|
34278
34895
|
this.recordClick.emit(item);
|
|
@@ -34317,16 +34934,12 @@ class ResultsTableContainerComponent {
|
|
|
34317
34934
|
this.subscription.unsubscribe();
|
|
34318
34935
|
}
|
|
34319
34936
|
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 }); }
|
|
34320
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", inputs: {
|
|
34937
|
+
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"] }] }); }
|
|
34321
34938
|
}
|
|
34322
34939
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
34323
34940
|
type: Component,
|
|
34324
|
-
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" }]
|
|
34325
|
-
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }], propDecorators: {
|
|
34326
|
-
type: Input
|
|
34327
|
-
}], canDelete: [{
|
|
34328
|
-
type: Input
|
|
34329
|
-
}], isDuplicating: [{
|
|
34941
|
+
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" }]
|
|
34942
|
+
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }], propDecorators: { isDuplicating: [{
|
|
34330
34943
|
type: Input
|
|
34331
34944
|
}], recordClick: [{
|
|
34332
34945
|
type: Output
|
|
@@ -35963,7 +36576,7 @@ class AddLayerFromCatalogComponent {
|
|
|
35963
36576
|
ADDLAYER: new ResultsLayoutConfigItem(AddLayerRecordPreviewComponent, 'py-2', '', 'flex flex-col divide-y divide-y-grey-50'),
|
|
35964
36577
|
},
|
|
35965
36578
|
},
|
|
35966
|
-
], 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 }); }
|
|
36579
|
+
], 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 }); }
|
|
35967
36580
|
}
|
|
35968
36581
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddLayerFromCatalogComponent, decorators: [{
|
|
35969
36582
|
type: Component,
|
|
@@ -36249,6 +36862,8 @@ const closeMetadata = createAction('[Metadata view] close');
|
|
|
36249
36862
|
Related actions
|
|
36250
36863
|
*/
|
|
36251
36864
|
const setRelated = createAction('[Metadata view] Set related records', props());
|
|
36865
|
+
const setSources = createAction('[Metadata view] Set sources', props());
|
|
36866
|
+
const setSourceOf = createAction('[Metadata view] Set has sources', props());
|
|
36252
36867
|
/*
|
|
36253
36868
|
ChartConfig actions
|
|
36254
36869
|
*/
|
|
@@ -36280,7 +36895,9 @@ var mdview_actions = /*#__PURE__*/Object.freeze({
|
|
|
36280
36895
|
loadUserFeedbacksSuccess: loadUserFeedbacksSuccess,
|
|
36281
36896
|
setChartConfig: setChartConfig,
|
|
36282
36897
|
setIncompleteMetadata: setIncompleteMetadata,
|
|
36283
|
-
setRelated: setRelated
|
|
36898
|
+
setRelated: setRelated,
|
|
36899
|
+
setSourceOf: setSourceOf,
|
|
36900
|
+
setSources: setSources
|
|
36284
36901
|
});
|
|
36285
36902
|
|
|
36286
36903
|
const METADATA_VIEW_FEATURE_STATE_KEY = 'metadataView';
|
|
@@ -36323,6 +36940,12 @@ on(loadFullMetadata, (state) => ({
|
|
|
36323
36940
|
on(setRelated, (state, { related }) => ({
|
|
36324
36941
|
...state,
|
|
36325
36942
|
related,
|
|
36943
|
+
})), on(setSources, (state, { sources }) => ({
|
|
36944
|
+
...state,
|
|
36945
|
+
sources,
|
|
36946
|
+
})), on(setSourceOf, (state, { sourceOf }) => ({
|
|
36947
|
+
...state,
|
|
36948
|
+
sourceOf,
|
|
36326
36949
|
})),
|
|
36327
36950
|
/*
|
|
36328
36951
|
ChartConfig reducers
|
|
@@ -36384,6 +37007,8 @@ const getMetadataError = createSelector(getMdViewState, (state) => state.error);
|
|
|
36384
37007
|
Related selectors
|
|
36385
37008
|
*/
|
|
36386
37009
|
const getRelated = createSelector(getMdViewState, (state) => state.related);
|
|
37010
|
+
const getSources = createSelector(getMdViewState, (state) => state.sources);
|
|
37011
|
+
const getSourceOf = createSelector(getMdViewState, (state) => state.sourceOf);
|
|
36387
37012
|
/*
|
|
36388
37013
|
Metadata selectors
|
|
36389
37014
|
*/
|
|
@@ -37814,7 +38439,7 @@ class DataTableComponent {
|
|
|
37814
38439
|
}
|
|
37815
38440
|
}
|
|
37816
38441
|
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 }); }
|
|
37817
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataTableComponent, isStandalone: true, selector: "gn-ui-data-table", inputs: { featureAttributes: "featureAttributes", dataset: "dataset", activeId: "activeId" }, outputs: { selected: "selected" }, providers: [{ provide: MatPaginatorIntl, useClass: CustomMatPaginatorIntl }], viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col border border-gray-300 rounded-lg bg-white h-full\">\n <div class=\"flex-1 overflow-y-hidden overflow-x-auto rounded-lg relative\">\n <table\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"setSort($event)\"\n [matSortDisableClear]=\"true\"\n *ngrxLet=\"properties$ as properties\"\n >\n <ng-container\n *ngFor=\"let attr of _featureAttributes\"\n [matColumnDef]=\"attr.value\"\n >\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ attr.label }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[attr.value] }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"properties; sticky: true\"></tr>\n <tr\n [id]=\"getRowEltId(row.id)\"\n mat-row\n *matRowDef=\"let row; columns: properties\"\n (click)=\"selected.emit(row)\"\n [class.active]=\"\n activeId !== undefined && activeId !== null && row.id === activeId\n \"\n ></tr>\n </table>\n <gn-ui-loading-mask\n *ngIf=\"loading$ | async\"\n class=\"sticky inset-0\"\n [message]=\"'table.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0 z-[100]\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n <div class=\"flex justify-between items-center overflow-hidden\">\n <div class=\"text-gray-900 px-4 py-2 text-sm\">\n <span class=\"count font-extrabold text-primary\">{{ count }}</span\n > <span translate>table.object.count</span>.\n </div>\n\n <mat-paginator\n class=\"my-[-16px]\"\n (page)=\"setPagination()\"\n [length]=\"count\"\n [pageSize]=\"10\"\n [showFirstLastButtons]=\"true\"\n [hidePageSize]=\"true\"\n ></mat-paginator>\n </div>\n</div>\n", styles: ["table{width:100%;background:#fff}th.mat-mdc-header-cell,td.mat-mdc-cell,td.mat-mdc-footer-cell{padding-right:20px}tr.mat-mdc-row,tr.mat-mdc-footer-row{height:36px}tr:hover{background:#f5f5f5}tr.mat-mdc-header-row{height:48px}[mat-header-cell]{color:#0000008a;font-size:12px;font-weight:500}tr{cursor:pointer}.active .mat-mdc-cell{color:var(--color-primary)}.mat-mdc-paginator{background:none}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i3$
|
|
38442
|
+
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 }); }
|
|
37818
38443
|
}
|
|
37819
38444
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
|
|
37820
38445
|
type: Component,
|
|
@@ -38415,6 +39040,8 @@ class MdViewFacade {
|
|
|
38415
39040
|
}));
|
|
38416
39041
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
38417
39042
|
this.related$ = this.store.pipe(select(getRelated));
|
|
39043
|
+
this.sources$ = this.store.pipe(select(getSources));
|
|
39044
|
+
this.sourceOf$ = this.store.pipe(select(getSourceOf));
|
|
38418
39045
|
this.chartConfig$ = this.store.pipe(select(getChartConfig));
|
|
38419
39046
|
this.allLinks$ = this.metadata$.pipe(map$1((record) => 'onlineResources' in record ? record.onlineResources : []), shareReplay(1));
|
|
38420
39047
|
this.apiLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.API))), shareReplay(1));
|
|
@@ -38516,6 +39143,12 @@ class MdViewEffects {
|
|
|
38516
39143
|
this.loadRelatedRecords$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), switchMap$1(({ full }) => this.recordsRepository.getSimilarRecords(full)), map$1((related) => {
|
|
38517
39144
|
return setRelated({ related });
|
|
38518
39145
|
}), catchError((error) => of(setRelated({ related: null })))));
|
|
39146
|
+
this.loadSources$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), switchMap$1(({ full }) => this.recordsRepository.getSources(full)), map$1((sources) => {
|
|
39147
|
+
return setSources({ sources });
|
|
39148
|
+
}), catchError(() => of(setSources({ sources: null })))));
|
|
39149
|
+
this.loadSourceOf$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), switchMap$1(({ full }) => this.recordsRepository.getSourceOf(full)), map$1((sourceOf) => {
|
|
39150
|
+
return setSourceOf({ sourceOf });
|
|
39151
|
+
}), catchError(() => of(setSourceOf({ sourceOf: null })))));
|
|
38519
39152
|
/*
|
|
38520
39153
|
UserFeedback effects
|
|
38521
39154
|
*/
|
|
@@ -42726,17 +43359,256 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
42726
43359
|
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" }]
|
|
42727
43360
|
}], ctorParameters: () => [{ type: EditorFacade }] });
|
|
42728
43361
|
|
|
43362
|
+
const extraFlagMap = {
|
|
43363
|
+
ar: 'arab',
|
|
43364
|
+
en: 'gb',
|
|
43365
|
+
ko: 'kr',
|
|
43366
|
+
cs: 'cz',
|
|
43367
|
+
zh: 'cn',
|
|
43368
|
+
ca: 'es-ct',
|
|
43369
|
+
rm: 'ch',
|
|
43370
|
+
da: 'dk',
|
|
43371
|
+
sv: 'se',
|
|
43372
|
+
cy: 'gb-wls',
|
|
43373
|
+
hy: 'am',
|
|
43374
|
+
ka: 'ge',
|
|
43375
|
+
uk: 'ua',
|
|
43376
|
+
};
|
|
42729
43377
|
class MultilingualPanelComponent {
|
|
42730
|
-
|
|
42731
|
-
this.
|
|
43378
|
+
set record(value) {
|
|
43379
|
+
this._record = value;
|
|
43380
|
+
this.isMultilingual = value.otherLanguages.length > 0;
|
|
43381
|
+
this.editTranslations = false;
|
|
43382
|
+
this.recordLanguages = [...value.otherLanguages, value.defaultLanguage];
|
|
43383
|
+
this.selectedLanguages = this.recordLanguages;
|
|
43384
|
+
this.formLanguage = value.defaultLanguage;
|
|
43385
|
+
}
|
|
43386
|
+
constructor(facade, dialog, translateService, recordsRepository, overlay, viewContainerRef, cdr) {
|
|
43387
|
+
this.facade = facade;
|
|
43388
|
+
this.dialog = dialog;
|
|
43389
|
+
this.translateService = translateService;
|
|
43390
|
+
this.recordsRepository = recordsRepository;
|
|
43391
|
+
this.overlay = overlay;
|
|
43392
|
+
this.viewContainerRef = viewContainerRef;
|
|
43393
|
+
this.cdr = cdr;
|
|
43394
|
+
this.selectedLanguages = [];
|
|
43395
|
+
this.recordLanguages = [];
|
|
43396
|
+
this.formLanguage = '';
|
|
43397
|
+
this.isActionMenuOpen = false;
|
|
43398
|
+
this.subscription = new Subscription();
|
|
43399
|
+
this.supportedLanguages$ = this.recordsRepository
|
|
43400
|
+
.getApplicationLanguages()
|
|
43401
|
+
.pipe(map$2((languages) => this.sortLanguages(languages)));
|
|
43402
|
+
}
|
|
43403
|
+
ngOnDestroy() {
|
|
43404
|
+
this.subscription.unsubscribe();
|
|
43405
|
+
}
|
|
43406
|
+
sortLanguages(languages) {
|
|
43407
|
+
return languages
|
|
43408
|
+
.map((lang) => {
|
|
43409
|
+
const label = this.translateService.instant('language.' + lang);
|
|
43410
|
+
const isTranslated = label !== 'language.' + lang;
|
|
43411
|
+
return {
|
|
43412
|
+
lang,
|
|
43413
|
+
label,
|
|
43414
|
+
isTranslated,
|
|
43415
|
+
};
|
|
43416
|
+
})
|
|
43417
|
+
.sort((a, b) => {
|
|
43418
|
+
if (a.isTranslated && !b.isTranslated)
|
|
43419
|
+
return -1;
|
|
43420
|
+
if (!a.isTranslated && b.isTranslated)
|
|
43421
|
+
return 1;
|
|
43422
|
+
return a.label.localeCompare(b.label);
|
|
43423
|
+
})
|
|
43424
|
+
.map((item) => item.lang);
|
|
43425
|
+
}
|
|
43426
|
+
toggleLanguageSelection() {
|
|
43427
|
+
this.editTranslations = !this.editTranslations;
|
|
43428
|
+
}
|
|
43429
|
+
getIconClass(lang) {
|
|
43430
|
+
return extraFlagMap[lang]
|
|
43431
|
+
? `fi fi-${extraFlagMap[lang]} w-4 h-3`
|
|
43432
|
+
: `fi fi-${lang} w-4 h-3`;
|
|
43433
|
+
}
|
|
43434
|
+
switchMultilingual() {
|
|
43435
|
+
if (this.isMultilingual && this.selectedLanguages.length > 1) {
|
|
43436
|
+
this.confirmDeleteAction();
|
|
43437
|
+
}
|
|
43438
|
+
else {
|
|
43439
|
+
this.isMultilingual = true;
|
|
43440
|
+
this.editTranslations = true;
|
|
43441
|
+
}
|
|
43442
|
+
}
|
|
43443
|
+
getExtraClass(lang) {
|
|
43444
|
+
const baseClass = 'h-[34px] w-full font-bold justify-start hover:bg-white';
|
|
43445
|
+
if (this.selectedLanguages.includes(lang)) {
|
|
43446
|
+
return `${baseClass} bg-white border border-black`;
|
|
43447
|
+
}
|
|
43448
|
+
return baseClass;
|
|
43449
|
+
}
|
|
43450
|
+
toggleLanguage(lang) {
|
|
43451
|
+
if (this.selectedLanguages.includes(lang)) {
|
|
43452
|
+
this.removeSelectedLanguage(lang);
|
|
43453
|
+
}
|
|
43454
|
+
else {
|
|
43455
|
+
this.selectedLanguages.push(lang);
|
|
43456
|
+
}
|
|
43457
|
+
}
|
|
43458
|
+
removeSelectedLanguage(lang) {
|
|
43459
|
+
this.selectedLanguages = this.selectedLanguages.filter((language) => language !== lang);
|
|
43460
|
+
}
|
|
43461
|
+
validateTranslations() {
|
|
43462
|
+
const equalLength = this.selectedLanguages.length === this.recordLanguages.length;
|
|
43463
|
+
if (this.selectedLanguages.length < this.recordLanguages.length ||
|
|
43464
|
+
(equalLength && this.selectedLanguages !== this.recordLanguages)) {
|
|
43465
|
+
this.confirmDeleteAction(this.selectedLanguages);
|
|
43466
|
+
}
|
|
43467
|
+
else {
|
|
43468
|
+
this.updateTranslations();
|
|
43469
|
+
}
|
|
43470
|
+
}
|
|
43471
|
+
updateTranslations() {
|
|
43472
|
+
this.facade.updateRecordField('otherLanguages', this.selectedLanguages.filter((lang) => lang !== this.formLanguage));
|
|
43473
|
+
this.recordLanguages = this.selectedLanguages;
|
|
43474
|
+
this.editTranslations = false;
|
|
43475
|
+
}
|
|
43476
|
+
switchFormLang(lang) {
|
|
43477
|
+
// TO IMPLEMENT FURTHER
|
|
43478
|
+
}
|
|
43479
|
+
switchDefaultLang(lang) {
|
|
43480
|
+
this.formLanguage = lang;
|
|
43481
|
+
this.facade.updateRecordField('defaultLanguage', lang);
|
|
43482
|
+
this.facade.updateRecordField('otherLanguages', this.selectedLanguages.filter((lang) => lang !== this.formLanguage));
|
|
43483
|
+
this.closeActionMenu();
|
|
43484
|
+
}
|
|
43485
|
+
confirmDeleteAction(lang) {
|
|
43486
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
43487
|
+
data: {
|
|
43488
|
+
title: this.translateService.instant('editor.record.multilingual.confirmation.title'),
|
|
43489
|
+
message: this.translateService.instant('editor.record.multilingual.confirmation.message'),
|
|
43490
|
+
confirmText: this.translateService.instant('editor.record.multilingual.confirmation.confirmText'),
|
|
43491
|
+
cancelText: this.translateService.instant('editor.record.multilingual.confirmation.cancelText'),
|
|
43492
|
+
},
|
|
43493
|
+
restoreFocus: true,
|
|
43494
|
+
});
|
|
43495
|
+
this.subscription.add(dialogRef.afterClosed().subscribe((confirmed) => {
|
|
43496
|
+
if (confirmed) {
|
|
43497
|
+
if (lang) {
|
|
43498
|
+
if (!Array.isArray(lang)) {
|
|
43499
|
+
this.removeSelectedLanguage(lang);
|
|
43500
|
+
this.closeActionMenu();
|
|
43501
|
+
}
|
|
43502
|
+
this.updateTranslations();
|
|
43503
|
+
}
|
|
43504
|
+
else {
|
|
43505
|
+
this.facade.updateRecordField('otherLanguages', []);
|
|
43506
|
+
this.isMultilingual = false;
|
|
43507
|
+
this.selectedLanguages = [];
|
|
43508
|
+
}
|
|
43509
|
+
}
|
|
43510
|
+
else {
|
|
43511
|
+
this.isMultilingual = true;
|
|
43512
|
+
this.selectedLanguages = this.recordLanguages;
|
|
43513
|
+
}
|
|
43514
|
+
this.editTranslations = false;
|
|
43515
|
+
}));
|
|
43516
|
+
}
|
|
43517
|
+
isFirstUnsupported(index) {
|
|
43518
|
+
const langs = this.sortLanguages(this.recordLanguages);
|
|
43519
|
+
return (langs[index].length === 3 &&
|
|
43520
|
+
langs.slice(0, index).every((lang) => lang.length !== 3));
|
|
43521
|
+
}
|
|
43522
|
+
isLangSupported(lang) {
|
|
43523
|
+
return lang.length === 2;
|
|
42732
43524
|
}
|
|
42733
|
-
|
|
42734
|
-
|
|
43525
|
+
getToggleTitle(lang) {
|
|
43526
|
+
if (lang === this._record.defaultLanguage) {
|
|
43527
|
+
return this.translateService.instant('editor.record.form.multilingual.forbidden');
|
|
43528
|
+
}
|
|
43529
|
+
return '';
|
|
43530
|
+
}
|
|
43531
|
+
openActionMenu(item, template) {
|
|
43532
|
+
this.isActionMenuOpen = true;
|
|
43533
|
+
const index = this.sortLanguages(this.selectedLanguages).indexOf(item);
|
|
43534
|
+
const buttonElement = this.actionMenuButtons.toArray()[index];
|
|
43535
|
+
const positionStrategy = this.overlay
|
|
43536
|
+
.position()
|
|
43537
|
+
.flexibleConnectedTo(buttonElement)
|
|
43538
|
+
.withFlexibleDimensions(true)
|
|
43539
|
+
.withPush(true)
|
|
43540
|
+
.withPositions([
|
|
43541
|
+
{
|
|
43542
|
+
originX: 'end',
|
|
43543
|
+
originY: 'bottom',
|
|
43544
|
+
overlayX: 'end',
|
|
43545
|
+
overlayY: 'top',
|
|
43546
|
+
},
|
|
43547
|
+
{
|
|
43548
|
+
originX: 'end',
|
|
43549
|
+
originY: 'top',
|
|
43550
|
+
overlayX: 'end',
|
|
43551
|
+
overlayY: 'bottom',
|
|
43552
|
+
},
|
|
43553
|
+
]);
|
|
43554
|
+
this.overlayRef = this.overlay.create({
|
|
43555
|
+
hasBackdrop: true,
|
|
43556
|
+
backdropClass: 'cdk-overlay-transparent-backdrop',
|
|
43557
|
+
positionStrategy: positionStrategy,
|
|
43558
|
+
scrollStrategy: this.overlay.scrollStrategies.reposition(),
|
|
43559
|
+
});
|
|
43560
|
+
const portal = new TemplatePortal(template, this.viewContainerRef);
|
|
43561
|
+
this.overlayRef.attach(portal);
|
|
43562
|
+
this.subscription.add(this.overlayRef.backdropClick().subscribe(() => {
|
|
43563
|
+
this.closeActionMenu();
|
|
43564
|
+
}));
|
|
43565
|
+
}
|
|
43566
|
+
closeActionMenu() {
|
|
43567
|
+
if (this.overlayRef) {
|
|
43568
|
+
this.isActionMenuOpen = false;
|
|
43569
|
+
this.overlayRef.dispose();
|
|
43570
|
+
this.cdr.markForCheck();
|
|
43571
|
+
}
|
|
43572
|
+
}
|
|
43573
|
+
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 }); }
|
|
43574
|
+
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: [
|
|
43575
|
+
provideIcons({
|
|
43576
|
+
iconoirSettings,
|
|
43577
|
+
matMoreHorizOutline,
|
|
43578
|
+
iconoirCheckCircle,
|
|
43579
|
+
iconoirCircle,
|
|
43580
|
+
}),
|
|
43581
|
+
provideNgIconsConfig({
|
|
43582
|
+
size: '1.25em',
|
|
43583
|
+
}),
|
|
43584
|
+
], 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"] }] }); }
|
|
42735
43585
|
}
|
|
42736
43586
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultilingualPanelComponent, decorators: [{
|
|
42737
43587
|
type: Component,
|
|
42738
|
-
args: [{ selector: 'gn-ui-multilingual-panel', standalone: true, imports: [
|
|
42739
|
-
|
|
43588
|
+
args: [{ selector: 'gn-ui-multilingual-panel', standalone: true, imports: [
|
|
43589
|
+
CommonModule,
|
|
43590
|
+
CheckToggleComponent,
|
|
43591
|
+
TranslateModule,
|
|
43592
|
+
ButtonComponent,
|
|
43593
|
+
NgIconComponent,
|
|
43594
|
+
ActionMenuComponent,
|
|
43595
|
+
], providers: [
|
|
43596
|
+
provideIcons({
|
|
43597
|
+
iconoirSettings,
|
|
43598
|
+
matMoreHorizOutline,
|
|
43599
|
+
iconoirCheckCircle,
|
|
43600
|
+
iconoirCircle,
|
|
43601
|
+
}),
|
|
43602
|
+
provideNgIconsConfig({
|
|
43603
|
+
size: '1.25em',
|
|
43604
|
+
}),
|
|
43605
|
+
], 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" }]
|
|
43606
|
+
}], 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: [{
|
|
43607
|
+
type: Input
|
|
43608
|
+
}], actionMenuButtons: [{
|
|
43609
|
+
type: ViewChildren,
|
|
43610
|
+
args: ['actionMenuButton', { read: ElementRef }]
|
|
43611
|
+
}] } });
|
|
42740
43612
|
|
|
42741
43613
|
const ROUTER_STATE_KEY = 'router';
|
|
42742
43614
|
const ROUTER_ROUTE_SEARCH = 'search';
|
|
@@ -43139,7 +44011,7 @@ class DefaultRouterModule {
|
|
|
43139
44011
|
};
|
|
43140
44012
|
}
|
|
43141
44013
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
43142
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$3.StoreFeatureModule, i3$
|
|
44014
|
+
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] }); }
|
|
43143
44015
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
43144
44016
|
RouterFacade,
|
|
43145
44017
|
{
|
|
@@ -43182,5 +44054,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43182
44054
|
* Generated bundle index. Do not edit.
|
|
43183
44055
|
*/
|
|
43184
44056
|
|
|
43185
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogListComponent, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
44057
|
+
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 };
|
|
43186
44058
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|