geonetwork-ui 2.6.0-dev.600519f47 → 2.6.0-dev.609dd7257
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 +4 -1
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/constant.mjs +4 -2
- package/esm2022/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.mjs +2 -2
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +45 -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 +4 -3
- package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-from-catalog.component.mjs +1 -1
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +49 -23
- package/esm2022/libs/feature/search/src/lib/constants.mjs +3 -2
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +5 -3
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +13 -10
- package/esm2022/libs/ui/elements/src/index.mjs +1 -2
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +19 -34
- package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +59 -0
- package/esm2022/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.mjs +35 -10
- package/esm2022/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.mjs +5 -1
- package/esm2022/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.mjs +50 -29
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +7 -3
- package/esm2022/libs/ui/layout/src/index.mjs +2 -1
- package/esm2022/libs/ui/layout/src/lib/cell-popin/cell-popin.component.mjs +110 -0
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +20 -10
- package/esm2022/libs/ui/layout/src/lib/truncated-text/truncated-text.component.mjs +15 -49
- package/esm2022/libs/ui/layout/src/lib/ui-layout.module.mjs +2 -2
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +5 -3
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +16 -8
- package/esm2022/translations/de.json +20 -6
- package/esm2022/translations/en.json +20 -6
- package/esm2022/translations/es.json +19 -5
- package/esm2022/translations/fr.json +20 -6
- package/esm2022/translations/it.json +22 -8
- package/esm2022/translations/nl.json +19 -5
- package/esm2022/translations/pt.json +19 -5
- package/fesm2022/geonetwork-ui.mjs +1003 -711
- 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/repository/src/lib/gn4/elasticsearch/constant.d.ts.map +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 +8 -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 +3 -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.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -5
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/constants.d.ts.map +1 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts +2 -1
- package/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +0 -1
- package/libs/ui/elements/src/index.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/lib/results-table/action-menu/action-menu.component.d.ts +2 -1
- 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 +5 -3
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +7 -0
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/constant.ts +3 -1
- package/src/libs/api/repository/src/lib/gn4/elasticsearch/elasticsearch.service.ts +1 -1
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +57 -14
- 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 +3 -0
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +61 -0
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/multilingual-panel/multilingual-panel.component.ts +1 -0
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +27 -9
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +84 -27
- package/src/libs/feature/search/src/lib/constants.ts +2 -1
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -1
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.ts +1 -0
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
- package/src/libs/ui/elements/src/index.ts +0 -1
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +8 -76
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +20 -51
- package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
- package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
- package/src/libs/ui/elements/src/lib/metadata-quality/metadata-quality.component.ts +48 -9
- package/src/libs/ui/elements/src/lib/metadata-quality-item/metadata-quality-item.component.ts +4 -0
- package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.html +96 -37
- package/src/libs/ui/elements/src/lib/record-feature-catalog/feature-catalog-list/feature-catalog-list.component.ts +60 -29
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +2 -0
- package/src/libs/ui/layout/src/index.ts +1 -0
- package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.html +40 -0
- package/src/libs/ui/layout/src/lib/cell-popin/cell-popin.component.ts +141 -0
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +2 -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/lib/results-table/action-menu/action-menu.component.html +6 -4
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +1 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +14 -20
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +13 -5
- package/translations/de.json +20 -6
- package/translations/en.json +20 -6
- package/translations/es.json +19 -5
- package/translations/fr.json +20 -6
- package/translations/it.json +22 -8
- package/translations/nl.json +19 -5
- package/translations/pt.json +19 -5
- package/translations/sk.json +19 -5
- package/esm2022/libs/ui/elements/src/lib/related-record-card/related-record-card.component.mjs +0 -56
- package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts +0 -19
- package/libs/ui/elements/src/lib/related-record-card/related-record-card.component.d.ts.map +0 -1
- package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.css +0 -0
- package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.html +0 -9
- package/src/libs/ui/elements/src/lib/related-record-card/related-record-card.component.ts +0 -61
|
@@ -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';
|
|
@@ -42,25 +41,26 @@ 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
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';
|
|
63
|
-
import {
|
|
63
|
+
import { RouterModule, RouterLink, RouteReuseStrategy } from '@angular/router';
|
|
64
64
|
import { marked } from 'marked';
|
|
65
65
|
import Duration from 'duration-relativetimeformat';
|
|
66
66
|
import * as basicLightbox from 'basiclightbox';
|
|
@@ -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
|
|
|
@@ -18917,8 +18918,9 @@ var de = {
|
|
|
18917
18918
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
18918
18919
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
18919
18920
|
"editor.record.loadError.title": "Fehler beim Laden des Datensatzes",
|
|
18920
|
-
"editor.record.lock.
|
|
18921
|
-
"editor.record.lock.
|
|
18921
|
+
"editor.record.lock.harvested": "",
|
|
18922
|
+
"editor.record.lock.owner": "",
|
|
18923
|
+
"editor.record.lock.resourceType": "",
|
|
18922
18924
|
"editor.record.multilingual.confirmation.cancelText": "",
|
|
18923
18925
|
"editor.record.multilingual.confirmation.confirmText": "",
|
|
18924
18926
|
"editor.record.multilingual.confirmation.message": "",
|
|
@@ -18969,6 +18971,11 @@ var de = {
|
|
|
18969
18971
|
"facets.block.title.tag.default": "Stichwort",
|
|
18970
18972
|
"facets.block.title.th_regions_tree.default": "Regionen",
|
|
18971
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",
|
|
18972
18979
|
"input.file.dropFileLabel": "",
|
|
18973
18980
|
"input.file.orInputUrl": "",
|
|
18974
18981
|
"input.file.selectFileLabel": "",
|
|
@@ -19028,6 +19035,7 @@ var de = {
|
|
|
19028
19035
|
"map.navigation.message": "Bitte verwenden Sie STRG + Maus (oder zwei Finger auf einem Mobilgerät), um die Karte zu navigieren",
|
|
19029
19036
|
"map.ogc.urlInput.hint": "",
|
|
19030
19037
|
"map.select.layer": "Datenquelle",
|
|
19038
|
+
"map.select.style": "Style",
|
|
19031
19039
|
"map.wfs.urlInput.hint": "Geben Sie die WFS URL ein",
|
|
19032
19040
|
"map.wms.urlInput.hint": "Geben Sie die WMS URL ein",
|
|
19033
19041
|
"multiselect.filter.placeholder": "Suche",
|
|
@@ -19106,9 +19114,15 @@ var de = {
|
|
|
19106
19114
|
"record.metadata.download": "Downloads",
|
|
19107
19115
|
"record.metadata.feature.catalog": "",
|
|
19108
19116
|
"record.metadata.formats": "Formate",
|
|
19117
|
+
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19109
19118
|
"record.metadata.keywords": "Stichworte",
|
|
19110
19119
|
"record.metadata.languages": "Sprachen",
|
|
19111
19120
|
"record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
|
|
19121
|
+
"record.metadata.linked.datasets": "Verknüpfte Datensätze",
|
|
19122
|
+
"record.metadata.linked.records": "Verknüpfte Inhalte",
|
|
19123
|
+
"record.metadata.linked.reuses": "Verknüpfte Wiederverwendungen",
|
|
19124
|
+
"record.metadata.linked.services": "Verknüpfte Dienste",
|
|
19125
|
+
"record.metadata.linked.sourceDatasets": "Quelldatensätze",
|
|
19112
19126
|
"record.metadata.links": "Links",
|
|
19113
19127
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
19114
19128
|
"record.metadata.otherConstraints": "Zusätzliche Bedingungen",
|
|
@@ -19118,6 +19132,8 @@ var de = {
|
|
|
19118
19132
|
"record.metadata.publication": "Veröffentlichungsdatum",
|
|
19119
19133
|
"record.metadata.publications": "{count, plural, =0{Veröffentlichungsdatum} one{Veröffentlichungsdatum} other{Veröffentlichungen}}",
|
|
19120
19134
|
"record.metadata.quality": "Metadatenqualität",
|
|
19135
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
19136
|
+
"record.metadata.quality.capabilities.success": "",
|
|
19121
19137
|
"record.metadata.quality.contact.failed": "Kontakt nicht angegeben",
|
|
19122
19138
|
"record.metadata.quality.contact.success": "Kontakt angegeben",
|
|
19123
19139
|
"record.metadata.quality.description.failed": "Beschreibung nicht angegeben",
|
|
@@ -19129,14 +19145,15 @@ var de = {
|
|
|
19129
19145
|
"record.metadata.quality.legalConstraints.success": "Rechtliche Beschränkungen angegeben",
|
|
19130
19146
|
"record.metadata.quality.organisation.failed": "Organisation nicht angegeben",
|
|
19131
19147
|
"record.metadata.quality.organisation.success": "Organisation angegeben",
|
|
19148
|
+
"record.metadata.quality.source.failed": "",
|
|
19149
|
+
"record.metadata.quality.source.success": "",
|
|
19132
19150
|
"record.metadata.quality.title.failed": "Titel nicht angegeben",
|
|
19133
19151
|
"record.metadata.quality.title.success": "Titel angegeben",
|
|
19134
19152
|
"record.metadata.quality.topic.failed": "Thema nicht angegeben",
|
|
19135
19153
|
"record.metadata.quality.topic.success": "Thema angegeben",
|
|
19136
19154
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19137
19155
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19138
|
-
"record.metadata.related": "
|
|
19139
|
-
"record.metadata.related.contents": "",
|
|
19156
|
+
"record.metadata.related": "Entdecken Sie den Katalog",
|
|
19140
19157
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19141
19158
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19142
19159
|
"record.metadata.status": "Status",
|
|
@@ -19148,7 +19165,6 @@ var de = {
|
|
|
19148
19165
|
"record.metadata.temporalExtent.untilDate": "Bis {end}",
|
|
19149
19166
|
"record.metadata.title": "Titel",
|
|
19150
19167
|
"record.metadata.topics": "Kategorien",
|
|
19151
|
-
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19152
19168
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
19153
19169
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
19154
19170
|
"record.metadata.updatedOn": "Geändert am",
|
|
@@ -19268,7 +19284,6 @@ var de = {
|
|
|
19268
19284
|
"tooltip.html.copy": "HTML kopieren",
|
|
19269
19285
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
19270
19286
|
"tooltip.url.copy": "URL kopieren",
|
|
19271
|
-
"tooltip.url.open": "URL öffnen",
|
|
19272
19287
|
"ui.readLess": "Weniger lesen",
|
|
19273
19288
|
"ui.readMore": "Weiterlesen",
|
|
19274
19289
|
"wfs.feature.limit": "Zu viele Features, um den WFS-Layer anzuzeigen!",
|
|
@@ -19526,8 +19541,9 @@ var en = {
|
|
|
19526
19541
|
"editor.record.loadError.body": "The dataset could not be loaded:",
|
|
19527
19542
|
"editor.record.loadError.closeMessage": "Understood",
|
|
19528
19543
|
"editor.record.loadError.title": "Error loading dataset",
|
|
19529
|
-
"editor.record.lock.
|
|
19530
|
-
"editor.record.lock.
|
|
19544
|
+
"editor.record.lock.harvested": "Datasets harvested from an external catalog are not editable",
|
|
19545
|
+
"editor.record.lock.owner": "You are not an editor of the allowed groups",
|
|
19546
|
+
"editor.record.lock.resourceType": "Records of a type other than dataset are not editable",
|
|
19531
19547
|
"editor.record.multilingual.confirmation.cancelText": "Keep the language(s)",
|
|
19532
19548
|
"editor.record.multilingual.confirmation.confirmText": "Remove the language(s)",
|
|
19533
19549
|
"editor.record.multilingual.confirmation.message": "You are about to remove one or several languages, which will delete all of the related translations and is irreversible. Do you want to proceed?",
|
|
@@ -19578,6 +19594,11 @@ var en = {
|
|
|
19578
19594
|
"facets.block.title.tag.default": "Tag",
|
|
19579
19595
|
"facets.block.title.th_regions_tree.default": "Regions",
|
|
19580
19596
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
|
|
19597
|
+
"feature.catalog.attribute.code": "Code",
|
|
19598
|
+
"feature.catalog.attribute.definition": "Description",
|
|
19599
|
+
"feature.catalog.attribute.name": "Name",
|
|
19600
|
+
"feature.catalog.attribute.type": "Type",
|
|
19601
|
+
"feature.catalog.attribute.values": "Values",
|
|
19581
19602
|
"input.file.dropFileLabel": "or drop it here",
|
|
19582
19603
|
"input.file.orInputUrl": "or create a link to an external resource",
|
|
19583
19604
|
"input.file.selectFileLabel": "Select a file ({sizeMB} MB max.)",
|
|
@@ -19637,6 +19658,7 @@ var en = {
|
|
|
19637
19658
|
"map.navigation.message": "Please use CTRL + mouse (or two fingers on mobile) to navigate the map",
|
|
19638
19659
|
"map.ogc.urlInput.hint": "Enter OGC API service URL",
|
|
19639
19660
|
"map.select.layer": "Data source",
|
|
19661
|
+
"map.select.style": "Style",
|
|
19640
19662
|
"map.wfs.urlInput.hint": "Enter WFS service URL",
|
|
19641
19663
|
"map.wms.urlInput.hint": "Enter WMS service URL",
|
|
19642
19664
|
"multiselect.filter.placeholder": "Search",
|
|
@@ -19715,9 +19737,15 @@ var en = {
|
|
|
19715
19737
|
"record.metadata.download": "Downloads",
|
|
19716
19738
|
"record.metadata.feature.catalog": "Feature catalog",
|
|
19717
19739
|
"record.metadata.formats": "Formats",
|
|
19740
|
+
"record.metadata.isGeographical": "Geographical dataset",
|
|
19718
19741
|
"record.metadata.keywords": "Keywords",
|
|
19719
19742
|
"record.metadata.languages": "Languages",
|
|
19720
19743
|
"record.metadata.lastUpdate": "Last updated on {date}",
|
|
19744
|
+
"record.metadata.linked.datasets": "Associated datasets",
|
|
19745
|
+
"record.metadata.linked.records": "Associated content",
|
|
19746
|
+
"record.metadata.linked.reuses": "Associated reuses",
|
|
19747
|
+
"record.metadata.linked.services": "Associated services",
|
|
19748
|
+
"record.metadata.linked.sourceDatasets": "Source datasets",
|
|
19721
19749
|
"record.metadata.links": "Links",
|
|
19722
19750
|
"record.metadata.noUsage": "No usage conditions specified for this dataset.",
|
|
19723
19751
|
"record.metadata.otherConstraints": "Additional Conditions",
|
|
@@ -19727,6 +19755,8 @@ var en = {
|
|
|
19727
19755
|
"record.metadata.publication": "Date of publication",
|
|
19728
19756
|
"record.metadata.publications": "{count, plural, =0{publication} one{publication} other{publications}}",
|
|
19729
19757
|
"record.metadata.quality": "Metadata Quality",
|
|
19758
|
+
"record.metadata.quality.capabilities.failed": "Capabilities URL is not specified",
|
|
19759
|
+
"record.metadata.quality.capabilities.success": "Capabilities URL is specified",
|
|
19730
19760
|
"record.metadata.quality.contact.failed": "Contact is not specified",
|
|
19731
19761
|
"record.metadata.quality.contact.success": "Contact is specified",
|
|
19732
19762
|
"record.metadata.quality.description.failed": "Description is not specified",
|
|
@@ -19738,14 +19768,15 @@ var en = {
|
|
|
19738
19768
|
"record.metadata.quality.legalConstraints.success": "Legal constraints are specified",
|
|
19739
19769
|
"record.metadata.quality.organisation.failed": "Organisation is not specified",
|
|
19740
19770
|
"record.metadata.quality.organisation.success": "Organisation is specified",
|
|
19771
|
+
"record.metadata.quality.source.failed": "No source dataset is specified",
|
|
19772
|
+
"record.metadata.quality.source.success": "A source dataset is specified",
|
|
19741
19773
|
"record.metadata.quality.title.failed": "Title is not specified",
|
|
19742
19774
|
"record.metadata.quality.title.success": "Title is specified",
|
|
19743
19775
|
"record.metadata.quality.topic.failed": "Topic is not specified",
|
|
19744
19776
|
"record.metadata.quality.topic.success": "Topic is specified",
|
|
19745
19777
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19746
19778
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19747
|
-
"record.metadata.related": "
|
|
19748
|
-
"record.metadata.related.contents": "Related content",
|
|
19779
|
+
"record.metadata.related": "Explore the catalog",
|
|
19749
19780
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19750
19781
|
"record.metadata.sheet": "Original metadata",
|
|
19751
19782
|
"record.metadata.status": "Status",
|
|
@@ -19757,7 +19788,6 @@ var en = {
|
|
|
19757
19788
|
"record.metadata.temporalExtent.untilDate": "Until { end }",
|
|
19758
19789
|
"record.metadata.title": "Title",
|
|
19759
19790
|
"record.metadata.topics": "Categories",
|
|
19760
|
-
"record.metadata.isGeographical": "Geographical dataset",
|
|
19761
19791
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
19762
19792
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
19763
19793
|
"record.metadata.updatedOn": "Updated on",
|
|
@@ -19877,7 +19907,6 @@ var en = {
|
|
|
19877
19907
|
"tooltip.html.copy": "Copy HTML",
|
|
19878
19908
|
"tooltip.id.copy": "Copy unique identifier",
|
|
19879
19909
|
"tooltip.url.copy": "Copy URL",
|
|
19880
|
-
"tooltip.url.open": "Open URL",
|
|
19881
19910
|
"ui.readLess": "Read less",
|
|
19882
19911
|
"ui.readMore": "Read more",
|
|
19883
19912
|
"wfs.feature.limit": "Too many features to display the WFS layer!",
|
|
@@ -20135,8 +20164,9 @@ var es = {
|
|
|
20135
20164
|
"editor.record.loadError.body": "",
|
|
20136
20165
|
"editor.record.loadError.closeMessage": "",
|
|
20137
20166
|
"editor.record.loadError.title": "",
|
|
20138
|
-
"editor.record.lock.
|
|
20139
|
-
"editor.record.lock.
|
|
20167
|
+
"editor.record.lock.harvested": "",
|
|
20168
|
+
"editor.record.lock.owner": "",
|
|
20169
|
+
"editor.record.lock.resourceType": "",
|
|
20140
20170
|
"editor.record.multilingual.confirmation.cancelText": "",
|
|
20141
20171
|
"editor.record.multilingual.confirmation.confirmText": "",
|
|
20142
20172
|
"editor.record.multilingual.confirmation.message": "",
|
|
@@ -20187,6 +20217,11 @@ var es = {
|
|
|
20187
20217
|
"facets.block.title.tag.default": "",
|
|
20188
20218
|
"facets.block.title.th_regions_tree.default": "",
|
|
20189
20219
|
"favorite.not.authenticated.tooltip": "",
|
|
20220
|
+
"feature.catalog.attribute.code": "Código",
|
|
20221
|
+
"feature.catalog.attribute.definition": "Descripción",
|
|
20222
|
+
"feature.catalog.attribute.name": "Nombre",
|
|
20223
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
20224
|
+
"feature.catalog.attribute.values": "Valores",
|
|
20190
20225
|
"input.file.dropFileLabel": "",
|
|
20191
20226
|
"input.file.orInputUrl": "",
|
|
20192
20227
|
"input.file.selectFileLabel": "",
|
|
@@ -20246,6 +20281,7 @@ var es = {
|
|
|
20246
20281
|
"map.navigation.message": "",
|
|
20247
20282
|
"map.ogc.urlInput.hint": "",
|
|
20248
20283
|
"map.select.layer": "",
|
|
20284
|
+
"map.select.style": "",
|
|
20249
20285
|
"map.wfs.urlInput.hint": "",
|
|
20250
20286
|
"map.wms.urlInput.hint": "",
|
|
20251
20287
|
"multiselect.filter.placeholder": "",
|
|
@@ -20324,9 +20360,15 @@ var es = {
|
|
|
20324
20360
|
"record.metadata.download": "",
|
|
20325
20361
|
"record.metadata.feature.catalog": "",
|
|
20326
20362
|
"record.metadata.formats": "",
|
|
20363
|
+
"record.metadata.isGeographical": "",
|
|
20327
20364
|
"record.metadata.keywords": "",
|
|
20328
20365
|
"record.metadata.languages": "",
|
|
20329
20366
|
"record.metadata.lastUpdate": "",
|
|
20367
|
+
"record.metadata.linked.datasets": "",
|
|
20368
|
+
"record.metadata.linked.records": "",
|
|
20369
|
+
"record.metadata.linked.reuses": "",
|
|
20370
|
+
"record.metadata.linked.services": "",
|
|
20371
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
20330
20372
|
"record.metadata.links": "",
|
|
20331
20373
|
"record.metadata.noUsage": "",
|
|
20332
20374
|
"record.metadata.otherConstraints": "",
|
|
@@ -20336,6 +20378,8 @@ var es = {
|
|
|
20336
20378
|
"record.metadata.publication": "",
|
|
20337
20379
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
20338
20380
|
"record.metadata.quality": "",
|
|
20381
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
20382
|
+
"record.metadata.quality.capabilities.success": "",
|
|
20339
20383
|
"record.metadata.quality.contact.failed": "",
|
|
20340
20384
|
"record.metadata.quality.contact.success": "",
|
|
20341
20385
|
"record.metadata.quality.description.failed": "",
|
|
@@ -20347,6 +20391,8 @@ var es = {
|
|
|
20347
20391
|
"record.metadata.quality.legalConstraints.success": "",
|
|
20348
20392
|
"record.metadata.quality.organisation.failed": "",
|
|
20349
20393
|
"record.metadata.quality.organisation.success": "",
|
|
20394
|
+
"record.metadata.quality.source.failed": "",
|
|
20395
|
+
"record.metadata.quality.source.success": "",
|
|
20350
20396
|
"record.metadata.quality.title.failed": "",
|
|
20351
20397
|
"record.metadata.quality.title.success": "",
|
|
20352
20398
|
"record.metadata.quality.topic.failed": "",
|
|
@@ -20354,7 +20400,6 @@ var es = {
|
|
|
20354
20400
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20355
20401
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20356
20402
|
"record.metadata.related": "",
|
|
20357
|
-
"record.metadata.related.contents": "",
|
|
20358
20403
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20359
20404
|
"record.metadata.sheet": "",
|
|
20360
20405
|
"record.metadata.status": "",
|
|
@@ -20366,7 +20411,6 @@ var es = {
|
|
|
20366
20411
|
"record.metadata.temporalExtent.untilDate": "",
|
|
20367
20412
|
"record.metadata.title": "",
|
|
20368
20413
|
"record.metadata.topics": "",
|
|
20369
|
-
"record.metadata.isGeographical": "",
|
|
20370
20414
|
"record.metadata.uniqueId": "",
|
|
20371
20415
|
"record.metadata.updateFrequency": "",
|
|
20372
20416
|
"record.metadata.updatedOn": "",
|
|
@@ -20486,7 +20530,6 @@ var es = {
|
|
|
20486
20530
|
"tooltip.html.copy": "",
|
|
20487
20531
|
"tooltip.id.copy": "",
|
|
20488
20532
|
"tooltip.url.copy": "",
|
|
20489
|
-
"tooltip.url.open": "",
|
|
20490
20533
|
"ui.readLess": "",
|
|
20491
20534
|
"ui.readMore": "",
|
|
20492
20535
|
"wfs.feature.limit": "",
|
|
@@ -20744,8 +20787,9 @@ var fr = {
|
|
|
20744
20787
|
"editor.record.loadError.body": "Le jeu de données n'a pas pu être chargé :",
|
|
20745
20788
|
"editor.record.loadError.closeMessage": "Compris",
|
|
20746
20789
|
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
20747
|
-
"editor.record.lock.
|
|
20748
|
-
"editor.record.lock.
|
|
20790
|
+
"editor.record.lock.harvested": "Les jeux de données moissonnés ne sont pas éditables",
|
|
20791
|
+
"editor.record.lock.owner": "Vous n'êtes pas éditeur d'un des groupes autorisés",
|
|
20792
|
+
"editor.record.lock.resourceType": "Les fiches d'un type autre que jeu de données ne sont pas éditables",
|
|
20749
20793
|
"editor.record.multilingual.confirmation.cancelText": "Garder le(s) language(s)",
|
|
20750
20794
|
"editor.record.multilingual.confirmation.confirmText": "Supprimer le(s) language(s)",
|
|
20751
20795
|
"editor.record.multilingual.confirmation.message": "Vous allez supprimer un ou plusieurs languages, ce qui supprimera toutes les traductions qui y sont liées et est irréversible. Voulez-vous procéder ?",
|
|
@@ -20796,6 +20840,11 @@ var fr = {
|
|
|
20796
20840
|
"facets.block.title.tag.default": "Tag",
|
|
20797
20841
|
"facets.block.title.th_regions_tree.default": "Régions",
|
|
20798
20842
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
|
|
20843
|
+
"feature.catalog.attribute.code": "Code",
|
|
20844
|
+
"feature.catalog.attribute.definition": "Description",
|
|
20845
|
+
"feature.catalog.attribute.name": "Nom",
|
|
20846
|
+
"feature.catalog.attribute.type": "Type",
|
|
20847
|
+
"feature.catalog.attribute.values": "Valeurs",
|
|
20799
20848
|
"input.file.dropFileLabel": "ou glissez-le ici",
|
|
20800
20849
|
"input.file.orInputUrl": "ou créez un lien vers une ressource externe",
|
|
20801
20850
|
"input.file.selectFileLabel": "Sélectionnez un fichier ({sizeMB} Mo max.)",
|
|
@@ -20855,6 +20904,7 @@ var fr = {
|
|
|
20855
20904
|
"map.navigation.message": "Veuillez utiliser CTRL + souris (ou deux doigts sur mobile) pour naviguer sur la carte",
|
|
20856
20905
|
"map.ogc.urlInput.hint": "Entrez l'URL du service OGC API",
|
|
20857
20906
|
"map.select.layer": "Source de données",
|
|
20907
|
+
"map.select.style": "Style",
|
|
20858
20908
|
"map.wfs.urlInput.hint": "Entrez l'URL du service WFS",
|
|
20859
20909
|
"map.wms.urlInput.hint": "Entrez l'URL du service WMS",
|
|
20860
20910
|
"multiselect.filter.placeholder": "Rechercher",
|
|
@@ -20933,9 +20983,15 @@ var fr = {
|
|
|
20933
20983
|
"record.metadata.download": "Téléchargements",
|
|
20934
20984
|
"record.metadata.feature.catalog": "Catalogue d'attributs",
|
|
20935
20985
|
"record.metadata.formats": "Formats",
|
|
20986
|
+
"record.metadata.isGeographical": "Donnée géographique",
|
|
20936
20987
|
"record.metadata.keywords": "Mots-clés",
|
|
20937
20988
|
"record.metadata.languages": "Langues",
|
|
20938
20989
|
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
20990
|
+
"record.metadata.linked.datasets": "Jeux de données associés",
|
|
20991
|
+
"record.metadata.linked.records": "Contenus associés",
|
|
20992
|
+
"record.metadata.linked.reuses": "Réutilisations associées",
|
|
20993
|
+
"record.metadata.linked.services": "Services associés",
|
|
20994
|
+
"record.metadata.linked.sourceDatasets": "Jeux de données sources",
|
|
20939
20995
|
"record.metadata.links": "Liens",
|
|
20940
20996
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
20941
20997
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
@@ -20945,6 +21001,8 @@ var fr = {
|
|
|
20945
21001
|
"record.metadata.publication": "Date de publication",
|
|
20946
21002
|
"record.metadata.publications": "{count, plural, =0{donnée} one{donnée} other{données}}",
|
|
20947
21003
|
"record.metadata.quality": "Qualité des métadonnées",
|
|
21004
|
+
"record.metadata.quality.capabilities.failed": "Aucune URL de Capabilities n'est renseignée",
|
|
21005
|
+
"record.metadata.quality.capabilities.success": "Une URL de Capabilities est renseignée",
|
|
20948
21006
|
"record.metadata.quality.contact.failed": "Le contact n'est pas renseigné",
|
|
20949
21007
|
"record.metadata.quality.contact.success": "Le contact est renseigné",
|
|
20950
21008
|
"record.metadata.quality.description.failed": "La description n'est pas renseignée",
|
|
@@ -20956,14 +21014,15 @@ var fr = {
|
|
|
20956
21014
|
"record.metadata.quality.legalConstraints.success": "Les contraintes légales sont renseignées",
|
|
20957
21015
|
"record.metadata.quality.organisation.failed": "Le producteur n'est pas renseigné",
|
|
20958
21016
|
"record.metadata.quality.organisation.success": "Le producteur est renseigné",
|
|
21017
|
+
"record.metadata.quality.source.failed": "Aucun jeu de données source n'est renseigné",
|
|
21018
|
+
"record.metadata.quality.source.success": "Un jeu de données source est renseigné",
|
|
20959
21019
|
"record.metadata.quality.title.failed": "Le titre n'est pas renseigné",
|
|
20960
21020
|
"record.metadata.quality.title.success": "Le titre est renseigné",
|
|
20961
21021
|
"record.metadata.quality.topic.failed": "Le thème n'est pas renseigné",
|
|
20962
21022
|
"record.metadata.quality.topic.success": "Le thème est renseigné",
|
|
20963
21023
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20964
21024
|
"record.metadata.quality.updateFrequency.success": "La fréquence de mise à jour est renseignée",
|
|
20965
|
-
"record.metadata.related": "
|
|
20966
|
-
"record.metadata.related.contents": "Contenu associé",
|
|
21025
|
+
"record.metadata.related": "Explorez le catalogue",
|
|
20967
21026
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20968
21027
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20969
21028
|
"record.metadata.status": "Statut",
|
|
@@ -20975,7 +21034,6 @@ var fr = {
|
|
|
20975
21034
|
"record.metadata.temporalExtent.untilDate": "Jusqu'au { end }",
|
|
20976
21035
|
"record.metadata.title": "Intitulé",
|
|
20977
21036
|
"record.metadata.topics": "Catégories",
|
|
20978
|
-
"record.metadata.isGeographical": "Donnée géographique",
|
|
20979
21037
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
20980
21038
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
20981
21039
|
"record.metadata.updatedOn": "Modifié le",
|
|
@@ -21095,7 +21153,6 @@ var fr = {
|
|
|
21095
21153
|
"tooltip.html.copy": "Copier le HTML",
|
|
21096
21154
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
21097
21155
|
"tooltip.url.copy": "Copier l'URL",
|
|
21098
|
-
"tooltip.url.open": "Ouvrir l'URL",
|
|
21099
21156
|
"ui.readLess": "Réduire",
|
|
21100
21157
|
"ui.readMore": "Lire la suite",
|
|
21101
21158
|
"wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
|
|
@@ -21317,12 +21374,12 @@ var it = {
|
|
|
21317
21374
|
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
21318
21375
|
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
21319
21376
|
"editor.record.form.license.unknown": "Sconosciuto o assente",
|
|
21320
|
-
"editor.record.form.multilingual.enable": "Aprire il pannello multilingue",
|
|
21321
|
-
"editor.record.form.multilingual.open": "Modalità multilingue",
|
|
21322
|
-
"editor.record.form.multilingual.title": "Traduzioni",
|
|
21323
21377
|
"editor.record.form.multilingual.activate": "",
|
|
21324
21378
|
"editor.record.form.multilingual.default": "",
|
|
21379
|
+
"editor.record.form.multilingual.enable": "Aprire il pannello multilingue",
|
|
21325
21380
|
"editor.record.form.multilingual.forbidden": "",
|
|
21381
|
+
"editor.record.form.multilingual.open": "Modalità multilingue",
|
|
21382
|
+
"editor.record.form.multilingual.title": "Traduzioni",
|
|
21326
21383
|
"editor.record.form.multilingual.validate": "",
|
|
21327
21384
|
"editor.record.form.page.accessAndContact": "Informazioni per l'uso",
|
|
21328
21385
|
"editor.record.form.page.description": "Descrizione del dataset",
|
|
@@ -21353,8 +21410,9 @@ var it = {
|
|
|
21353
21410
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21354
21411
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21355
21412
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21356
|
-
"editor.record.lock.
|
|
21357
|
-
"editor.record.lock.
|
|
21413
|
+
"editor.record.lock.harvested": "",
|
|
21414
|
+
"editor.record.lock.owner": "Non è un editore di uno dei gruppi autorizzati",
|
|
21415
|
+
"editor.record.lock.resourceType": "I record con il formato 'servizio' o 'riutilizzo' non sono modificabili",
|
|
21358
21416
|
"editor.record.multilingual.confirmation.cancelText": "",
|
|
21359
21417
|
"editor.record.multilingual.confirmation.confirmText": "",
|
|
21360
21418
|
"editor.record.multilingual.confirmation.message": "",
|
|
@@ -21405,6 +21463,11 @@ var it = {
|
|
|
21405
21463
|
"facets.block.title.tag.default": "Tag",
|
|
21406
21464
|
"facets.block.title.th_regions_tree.default": "Regioni",
|
|
21407
21465
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
|
|
21466
|
+
"feature.catalog.attribute.code": "Codice",
|
|
21467
|
+
"feature.catalog.attribute.definition": "Descrizione",
|
|
21468
|
+
"feature.catalog.attribute.name": "Nome",
|
|
21469
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
21470
|
+
"feature.catalog.attribute.values": "Valori",
|
|
21408
21471
|
"input.file.dropFileLabel": "oppure trascinalo qui",
|
|
21409
21472
|
"input.file.orInputUrl": "o collegamento a una risorsa esterna",
|
|
21410
21473
|
"input.file.selectFileLabel": "Seleziona un file ({sizeMB} MB max.)",
|
|
@@ -21464,6 +21527,7 @@ var it = {
|
|
|
21464
21527
|
"map.navigation.message": "Si prega di utilizzare CTRL + mouse (o due dita su mobile) per navigare sulla mappa",
|
|
21465
21528
|
"map.ogc.urlInput.hint": "Inserisci URL del servizio OGC API",
|
|
21466
21529
|
"map.select.layer": "Sorgente dati",
|
|
21530
|
+
"map.select.style": "Style",
|
|
21467
21531
|
"map.wfs.urlInput.hint": "Inserisci URL del servizio WFS",
|
|
21468
21532
|
"map.wms.urlInput.hint": "Inserisci URL del servizio WMS",
|
|
21469
21533
|
"multiselect.filter.placeholder": "Cerca",
|
|
@@ -21542,9 +21606,15 @@ var it = {
|
|
|
21542
21606
|
"record.metadata.download": "Download",
|
|
21543
21607
|
"record.metadata.feature.catalog": "Catalogo dei oggetti",
|
|
21544
21608
|
"record.metadata.formats": "Formati",
|
|
21609
|
+
"record.metadata.isGeographical": "Dati geografici",
|
|
21545
21610
|
"record.metadata.keywords": "Parole chiave",
|
|
21546
21611
|
"record.metadata.languages": "Lingue",
|
|
21547
21612
|
"record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
|
|
21613
|
+
"record.metadata.linked.datasets": "",
|
|
21614
|
+
"record.metadata.linked.records": "",
|
|
21615
|
+
"record.metadata.linked.reuses": "",
|
|
21616
|
+
"record.metadata.linked.services": "",
|
|
21617
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
21548
21618
|
"record.metadata.links": "Collegamenti",
|
|
21549
21619
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
21550
21620
|
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
@@ -21554,6 +21624,8 @@ var it = {
|
|
|
21554
21624
|
"record.metadata.publication": "Data di pubblicazione",
|
|
21555
21625
|
"record.metadata.publications": "{count, plural, =0{pubblicazione} one{pubblicazione} other{pubblicazioni}}",
|
|
21556
21626
|
"record.metadata.quality": "Qualità dei metadati",
|
|
21627
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
21628
|
+
"record.metadata.quality.capabilities.success": "",
|
|
21557
21629
|
"record.metadata.quality.contact.failed": "Il contatto non è specificato",
|
|
21558
21630
|
"record.metadata.quality.contact.success": "Il contatto è specificato",
|
|
21559
21631
|
"record.metadata.quality.description.failed": "La descrizione non è specificata",
|
|
@@ -21565,6 +21637,8 @@ var it = {
|
|
|
21565
21637
|
"record.metadata.quality.legalConstraints.success": "I vincoli legali sono specificate",
|
|
21566
21638
|
"record.metadata.quality.organisation.failed": "Il produttore non è specificato",
|
|
21567
21639
|
"record.metadata.quality.organisation.success": "Il produttore è specificato",
|
|
21640
|
+
"record.metadata.quality.source.failed": "",
|
|
21641
|
+
"record.metadata.quality.source.success": "",
|
|
21568
21642
|
"record.metadata.quality.title.failed": "Il titolo non è specificato",
|
|
21569
21643
|
"record.metadata.quality.title.success": "Il titolo è specificato",
|
|
21570
21644
|
"record.metadata.quality.topic.failed": "Il tema non è specificato",
|
|
@@ -21572,7 +21646,6 @@ var it = {
|
|
|
21572
21646
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21573
21647
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21574
21648
|
"record.metadata.related": "Vedi anche",
|
|
21575
|
-
"record.metadata.related.contents": "Contenuti correlati",
|
|
21576
21649
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21577
21650
|
"record.metadata.sheet": "Origine del metadata",
|
|
21578
21651
|
"record.metadata.status": "Stato",
|
|
@@ -21584,7 +21657,6 @@ var it = {
|
|
|
21584
21657
|
"record.metadata.temporalExtent.untilDate": "Fino a {end}",
|
|
21585
21658
|
"record.metadata.title": "Titolo",
|
|
21586
21659
|
"record.metadata.topics": "Categorie",
|
|
21587
|
-
"record.metadata.isGeographical": "Dati geografici",
|
|
21588
21660
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
21589
21661
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
21590
21662
|
"record.metadata.updatedOn": "Modificato il",
|
|
@@ -21704,7 +21776,6 @@ var it = {
|
|
|
21704
21776
|
"tooltip.html.copy": "Copiare il HTML",
|
|
21705
21777
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
21706
21778
|
"tooltip.url.copy": "Copiare l'URL",
|
|
21707
|
-
"tooltip.url.open": "Aprire l'URL",
|
|
21708
21779
|
"ui.readLess": "Ridurre",
|
|
21709
21780
|
"ui.readMore": "Leggere di più",
|
|
21710
21781
|
"wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
|
|
@@ -21962,8 +22033,9 @@ var nl = {
|
|
|
21962
22033
|
"editor.record.loadError.body": "",
|
|
21963
22034
|
"editor.record.loadError.closeMessage": "",
|
|
21964
22035
|
"editor.record.loadError.title": "",
|
|
21965
|
-
"editor.record.lock.
|
|
21966
|
-
"editor.record.lock.
|
|
22036
|
+
"editor.record.lock.harvested": "",
|
|
22037
|
+
"editor.record.lock.owner": "",
|
|
22038
|
+
"editor.record.lock.resourceType": "",
|
|
21967
22039
|
"editor.record.multilingual.confirmation.cancelText": "",
|
|
21968
22040
|
"editor.record.multilingual.confirmation.confirmText": "",
|
|
21969
22041
|
"editor.record.multilingual.confirmation.message": "",
|
|
@@ -22014,6 +22086,11 @@ var nl = {
|
|
|
22014
22086
|
"facets.block.title.tag.default": "",
|
|
22015
22087
|
"facets.block.title.th_regions_tree.default": "",
|
|
22016
22088
|
"favorite.not.authenticated.tooltip": "",
|
|
22089
|
+
"feature.catalog.attribute.code": "Code",
|
|
22090
|
+
"feature.catalog.attribute.definition": "Beschrijving",
|
|
22091
|
+
"feature.catalog.attribute.name": "Naam",
|
|
22092
|
+
"feature.catalog.attribute.type": "Type",
|
|
22093
|
+
"feature.catalog.attribute.values": "Waarden",
|
|
22017
22094
|
"input.file.dropFileLabel": "",
|
|
22018
22095
|
"input.file.orInputUrl": "",
|
|
22019
22096
|
"input.file.selectFileLabel": "",
|
|
@@ -22073,6 +22150,7 @@ var nl = {
|
|
|
22073
22150
|
"map.navigation.message": "",
|
|
22074
22151
|
"map.ogc.urlInput.hint": "",
|
|
22075
22152
|
"map.select.layer": "",
|
|
22153
|
+
"map.select.style": "",
|
|
22076
22154
|
"map.wfs.urlInput.hint": "",
|
|
22077
22155
|
"map.wms.urlInput.hint": "",
|
|
22078
22156
|
"multiselect.filter.placeholder": "",
|
|
@@ -22151,9 +22229,15 @@ var nl = {
|
|
|
22151
22229
|
"record.metadata.download": "",
|
|
22152
22230
|
"record.metadata.feature.catalog": "",
|
|
22153
22231
|
"record.metadata.formats": "",
|
|
22232
|
+
"record.metadata.isGeographical": "",
|
|
22154
22233
|
"record.metadata.keywords": "",
|
|
22155
22234
|
"record.metadata.languages": "",
|
|
22156
22235
|
"record.metadata.lastUpdate": "",
|
|
22236
|
+
"record.metadata.linked.datasets": "",
|
|
22237
|
+
"record.metadata.linked.records": "",
|
|
22238
|
+
"record.metadata.linked.reuses": "",
|
|
22239
|
+
"record.metadata.linked.services": "",
|
|
22240
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
22157
22241
|
"record.metadata.links": "",
|
|
22158
22242
|
"record.metadata.noUsage": "",
|
|
22159
22243
|
"record.metadata.otherConstraints": "",
|
|
@@ -22163,6 +22247,8 @@ var nl = {
|
|
|
22163
22247
|
"record.metadata.publication": "",
|
|
22164
22248
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
22165
22249
|
"record.metadata.quality": "",
|
|
22250
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
22251
|
+
"record.metadata.quality.capabilities.success": "",
|
|
22166
22252
|
"record.metadata.quality.contact.failed": "",
|
|
22167
22253
|
"record.metadata.quality.contact.success": "",
|
|
22168
22254
|
"record.metadata.quality.description.failed": "",
|
|
@@ -22174,6 +22260,8 @@ var nl = {
|
|
|
22174
22260
|
"record.metadata.quality.legalConstraints.success": "",
|
|
22175
22261
|
"record.metadata.quality.organisation.failed": "",
|
|
22176
22262
|
"record.metadata.quality.organisation.success": "",
|
|
22263
|
+
"record.metadata.quality.source.failed": "",
|
|
22264
|
+
"record.metadata.quality.source.success": "",
|
|
22177
22265
|
"record.metadata.quality.title.failed": "",
|
|
22178
22266
|
"record.metadata.quality.title.success": "",
|
|
22179
22267
|
"record.metadata.quality.topic.failed": "",
|
|
@@ -22181,7 +22269,6 @@ var nl = {
|
|
|
22181
22269
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22182
22270
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22183
22271
|
"record.metadata.related": "",
|
|
22184
|
-
"record.metadata.related.contents": "",
|
|
22185
22272
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
22186
22273
|
"record.metadata.sheet": "",
|
|
22187
22274
|
"record.metadata.status": "",
|
|
@@ -22193,7 +22280,6 @@ var nl = {
|
|
|
22193
22280
|
"record.metadata.temporalExtent.untilDate": "",
|
|
22194
22281
|
"record.metadata.title": "",
|
|
22195
22282
|
"record.metadata.topics": "",
|
|
22196
|
-
"record.metadata.isGeographical": "",
|
|
22197
22283
|
"record.metadata.uniqueId": "",
|
|
22198
22284
|
"record.metadata.updateFrequency": "",
|
|
22199
22285
|
"record.metadata.updatedOn": "",
|
|
@@ -22313,7 +22399,6 @@ var nl = {
|
|
|
22313
22399
|
"tooltip.html.copy": "",
|
|
22314
22400
|
"tooltip.id.copy": "",
|
|
22315
22401
|
"tooltip.url.copy": "",
|
|
22316
|
-
"tooltip.url.open": "",
|
|
22317
22402
|
"ui.readLess": "",
|
|
22318
22403
|
"ui.readMore": "",
|
|
22319
22404
|
"wfs.feature.limit": "",
|
|
@@ -22571,8 +22656,9 @@ var pt = {
|
|
|
22571
22656
|
"editor.record.loadError.body": "",
|
|
22572
22657
|
"editor.record.loadError.closeMessage": "",
|
|
22573
22658
|
"editor.record.loadError.title": "",
|
|
22574
|
-
"editor.record.lock.
|
|
22575
|
-
"editor.record.lock.
|
|
22659
|
+
"editor.record.lock.harvested": "",
|
|
22660
|
+
"editor.record.lock.owner": "",
|
|
22661
|
+
"editor.record.lock.resourceType": "",
|
|
22576
22662
|
"editor.record.multilingual.confirmation.cancelText": "",
|
|
22577
22663
|
"editor.record.multilingual.confirmation.confirmText": "",
|
|
22578
22664
|
"editor.record.multilingual.confirmation.message": "",
|
|
@@ -22623,6 +22709,11 @@ var pt = {
|
|
|
22623
22709
|
"facets.block.title.tag.default": "",
|
|
22624
22710
|
"facets.block.title.th_regions_tree.default": "",
|
|
22625
22711
|
"favorite.not.authenticated.tooltip": "",
|
|
22712
|
+
"feature.catalog.attribute.code": "Código",
|
|
22713
|
+
"feature.catalog.attribute.definition": "Descrição",
|
|
22714
|
+
"feature.catalog.attribute.name": "Nome",
|
|
22715
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
22716
|
+
"feature.catalog.attribute.values": "Valores",
|
|
22626
22717
|
"input.file.dropFileLabel": "",
|
|
22627
22718
|
"input.file.orInputUrl": "",
|
|
22628
22719
|
"input.file.selectFileLabel": "",
|
|
@@ -22682,6 +22773,7 @@ var pt = {
|
|
|
22682
22773
|
"map.navigation.message": "",
|
|
22683
22774
|
"map.ogc.urlInput.hint": "",
|
|
22684
22775
|
"map.select.layer": "",
|
|
22776
|
+
"map.select.style": "",
|
|
22685
22777
|
"map.wfs.urlInput.hint": "",
|
|
22686
22778
|
"map.wms.urlInput.hint": "",
|
|
22687
22779
|
"multiselect.filter.placeholder": "",
|
|
@@ -22760,9 +22852,15 @@ var pt = {
|
|
|
22760
22852
|
"record.metadata.download": "",
|
|
22761
22853
|
"record.metadata.feature.catalog": "",
|
|
22762
22854
|
"record.metadata.formats": "",
|
|
22855
|
+
"record.metadata.isGeographical": "",
|
|
22763
22856
|
"record.metadata.keywords": "",
|
|
22764
22857
|
"record.metadata.languages": "",
|
|
22765
22858
|
"record.metadata.lastUpdate": "",
|
|
22859
|
+
"record.metadata.linked.datasets": "",
|
|
22860
|
+
"record.metadata.linked.records": "",
|
|
22861
|
+
"record.metadata.linked.reuses": "",
|
|
22862
|
+
"record.metadata.linked.services": "",
|
|
22863
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
22766
22864
|
"record.metadata.links": "",
|
|
22767
22865
|
"record.metadata.noUsage": "",
|
|
22768
22866
|
"record.metadata.otherConstraints": "",
|
|
@@ -22772,6 +22870,8 @@ var pt = {
|
|
|
22772
22870
|
"record.metadata.publication": "",
|
|
22773
22871
|
"record.metadata.publications": "{count, plural, =0{} one{} other{}}",
|
|
22774
22872
|
"record.metadata.quality": "",
|
|
22873
|
+
"record.metadata.quality.capabilities.failed": "",
|
|
22874
|
+
"record.metadata.quality.capabilities.success": "",
|
|
22775
22875
|
"record.metadata.quality.contact.failed": "",
|
|
22776
22876
|
"record.metadata.quality.contact.success": "",
|
|
22777
22877
|
"record.metadata.quality.description.failed": "",
|
|
@@ -22783,6 +22883,8 @@ var pt = {
|
|
|
22783
22883
|
"record.metadata.quality.legalConstraints.success": "",
|
|
22784
22884
|
"record.metadata.quality.organisation.failed": "",
|
|
22785
22885
|
"record.metadata.quality.organisation.success": "",
|
|
22886
|
+
"record.metadata.quality.source.failed": "",
|
|
22887
|
+
"record.metadata.quality.source.success": "",
|
|
22786
22888
|
"record.metadata.quality.title.failed": "",
|
|
22787
22889
|
"record.metadata.quality.title.success": "",
|
|
22788
22890
|
"record.metadata.quality.topic.failed": "",
|
|
@@ -22790,7 +22892,6 @@ var pt = {
|
|
|
22790
22892
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22791
22893
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22792
22894
|
"record.metadata.related": "",
|
|
22793
|
-
"record.metadata.related.contents": "",
|
|
22794
22895
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22795
22896
|
"record.metadata.sheet": "",
|
|
22796
22897
|
"record.metadata.status": "",
|
|
@@ -22802,7 +22903,6 @@ var pt = {
|
|
|
22802
22903
|
"record.metadata.temporalExtent.untilDate": "",
|
|
22803
22904
|
"record.metadata.title": "",
|
|
22804
22905
|
"record.metadata.topics": "",
|
|
22805
|
-
"record.metadata.isGeographical": "",
|
|
22806
22906
|
"record.metadata.uniqueId": "",
|
|
22807
22907
|
"record.metadata.updateFrequency": "",
|
|
22808
22908
|
"record.metadata.updatedOn": "",
|
|
@@ -22922,7 +23022,6 @@ var pt = {
|
|
|
22922
23022
|
"tooltip.html.copy": "",
|
|
22923
23023
|
"tooltip.id.copy": "",
|
|
22924
23024
|
"tooltip.url.copy": "",
|
|
22925
|
-
"tooltip.url.open": "",
|
|
22926
23025
|
"ui.readLess": "",
|
|
22927
23026
|
"ui.readMore": "",
|
|
22928
23027
|
"wfs.feature.limit": "",
|
|
@@ -23156,6 +23255,9 @@ class Gn4FieldMapper {
|
|
|
23156
23255
|
isPublishedToAll: (output, source) => this.addExtra({
|
|
23157
23256
|
isPublishedToAll: selectField(source, 'isPublishedToAll'),
|
|
23158
23257
|
}, output),
|
|
23258
|
+
isHarvested: (output, source) => this.addExtra({
|
|
23259
|
+
isHarvested: selectField(source, 'isHarvested') !== 'false',
|
|
23260
|
+
}, output),
|
|
23159
23261
|
edit: (output, source) => this.addExtra({
|
|
23160
23262
|
edit: selectField(source, 'edit'),
|
|
23161
23263
|
}, output),
|
|
@@ -23444,8 +23546,10 @@ const ES_SOURCE_SUMMARY = [
|
|
|
23444
23546
|
'cl_topic',
|
|
23445
23547
|
'cl_maintenanceAndUpdateFrequency',
|
|
23446
23548
|
'tag',
|
|
23447
|
-
'
|
|
23549
|
+
'MD_LegalConstraints*Object',
|
|
23448
23550
|
'qualityScore',
|
|
23551
|
+
'allKeywords',
|
|
23552
|
+
'recordLink',
|
|
23449
23553
|
];
|
|
23450
23554
|
const ES_QUERY_FIELDS_PRIORITY = {
|
|
23451
23555
|
'resourceTitleObject.${searchLang}': 5,
|
|
@@ -23545,7 +23649,7 @@ class ElasticsearchService {
|
|
|
23545
23649
|
},
|
|
23546
23650
|
};
|
|
23547
23651
|
}
|
|
23548
|
-
getRelatedRecordPayload(record, size = 6, _source = [...ES_SOURCE_SUMMARY, '
|
|
23652
|
+
getRelatedRecordPayload(record, size = 6, _source = [...ES_SOURCE_SUMMARY, 'createDate']) {
|
|
23549
23653
|
return {
|
|
23550
23654
|
query: {
|
|
23551
23655
|
bool: {
|
|
@@ -23968,10 +24072,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
23968
24072
|
args: [METADATA_LANGUAGE]
|
|
23969
24073
|
}] }] });
|
|
23970
24074
|
|
|
24075
|
+
class Gn4SettingsService {
|
|
24076
|
+
constructor(siteApiService) {
|
|
24077
|
+
this.siteApiService = siteApiService;
|
|
24078
|
+
this.identicon$ = this.getSettingsSetValueByKey('system/users/identicon');
|
|
24079
|
+
this.allowEditHarvested$ = this.getSettingsSetValueByKey('system/harvester/enableEditing');
|
|
24080
|
+
}
|
|
24081
|
+
getSettingsSetValueByKey(key) {
|
|
24082
|
+
return this.siteApiService.getSettingsSet(null, [key]).pipe(map$1((v) => v[key]), shareReplay({ bufferSize: 1, refCount: true }));
|
|
24083
|
+
}
|
|
24084
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, deps: [{ token: SiteApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24085
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
|
|
24086
|
+
}
|
|
24087
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, decorators: [{
|
|
24088
|
+
type: Injectable,
|
|
24089
|
+
args: [{
|
|
24090
|
+
providedIn: 'root',
|
|
24091
|
+
}]
|
|
24092
|
+
}], ctorParameters: () => [{ type: SiteApiService }] });
|
|
24093
|
+
|
|
23971
24094
|
const minPublicationApiVersion = '4.2.5';
|
|
23972
24095
|
const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
|
|
23973
24096
|
class Gn4Repository {
|
|
23974
|
-
constructor(httpClient, gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi, platformService, gn4LanguagesApi) {
|
|
24097
|
+
constructor(httpClient, gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi, platformService, gn4LanguagesApi, settingsService) {
|
|
23975
24098
|
this.httpClient = httpClient;
|
|
23976
24099
|
this.gn4SearchApi = gn4SearchApi;
|
|
23977
24100
|
this.gn4SearchHelper = gn4SearchHelper;
|
|
@@ -23979,6 +24102,7 @@ class Gn4Repository {
|
|
|
23979
24102
|
this.gn4RecordsApi = gn4RecordsApi;
|
|
23980
24103
|
this.platformService = platformService;
|
|
23981
24104
|
this.gn4LanguagesApi = gn4LanguagesApi;
|
|
24105
|
+
this.settingsService = settingsService;
|
|
23982
24106
|
this._draftsChanged = new Subject();
|
|
23983
24107
|
this.draftsChanged$ = this._draftsChanged.asObservable();
|
|
23984
24108
|
}
|
|
@@ -24016,12 +24140,21 @@ class Gn4Repository {
|
|
|
24016
24140
|
name: featureType.typeName || '',
|
|
24017
24141
|
definition: featureType.definition || '',
|
|
24018
24142
|
attributes: Array.isArray(featureType.attributeTable)
|
|
24019
|
-
? featureType.attributeTable.map((attr) =>
|
|
24020
|
-
|
|
24021
|
-
|
|
24022
|
-
|
|
24023
|
-
|
|
24024
|
-
|
|
24143
|
+
? featureType.attributeTable.map((attr) => {
|
|
24144
|
+
const values = attr.values
|
|
24145
|
+
?.filter((v) => v.code || v.label)
|
|
24146
|
+
.map((v) => ({
|
|
24147
|
+
code: v.code,
|
|
24148
|
+
label: v.label,
|
|
24149
|
+
}));
|
|
24150
|
+
return {
|
|
24151
|
+
name: attr.name,
|
|
24152
|
+
code: attr.code,
|
|
24153
|
+
definition: attr.definition,
|
|
24154
|
+
type: attr.type,
|
|
24155
|
+
...(values?.length > 0 ? { values } : {}),
|
|
24156
|
+
};
|
|
24157
|
+
})
|
|
24025
24158
|
: [],
|
|
24026
24159
|
})),
|
|
24027
24160
|
};
|
|
@@ -24084,11 +24217,29 @@ class Gn4Repository {
|
|
|
24084
24217
|
? this.getRecord(uniqueIdentifier).pipe(map$1((record) => record.extras['isPublishedToAll']))
|
|
24085
24218
|
: of(true);
|
|
24086
24219
|
}
|
|
24087
|
-
|
|
24088
|
-
return
|
|
24089
|
-
|
|
24220
|
+
canDuplicate(record) {
|
|
24221
|
+
return record.kind === 'dataset';
|
|
24222
|
+
}
|
|
24223
|
+
canDelete(record) {
|
|
24224
|
+
return this.settingsService.allowEditHarvested$.pipe(map$1((allowEditHarvested) => {
|
|
24225
|
+
return (record.extras['edit'] &&
|
|
24226
|
+
(!record.extras['isHarvested'] || allowEditHarvested));
|
|
24090
24227
|
}));
|
|
24091
24228
|
}
|
|
24229
|
+
canEdit(record, allowEditHarvested) {
|
|
24230
|
+
return (record.kind === 'dataset' &&
|
|
24231
|
+
record.extras['edit'] &&
|
|
24232
|
+
(!record.extras['isHarvested'] || allowEditHarvested));
|
|
24233
|
+
}
|
|
24234
|
+
canEditRecord(uniqueIdentifier) {
|
|
24235
|
+
return combineLatest([
|
|
24236
|
+
this.getRecord(uniqueIdentifier),
|
|
24237
|
+
this.settingsService.allowEditHarvested$,
|
|
24238
|
+
]).pipe(map$1(([record, allowEditHarvested]) => record ? this.canEdit(record, allowEditHarvested) : false));
|
|
24239
|
+
}
|
|
24240
|
+
canEditIndexedRecord(record) {
|
|
24241
|
+
return this.settingsService.allowEditHarvested$.pipe(map$1((allowEditHarvested) => this.canEdit(record, allowEditHarvested)));
|
|
24242
|
+
}
|
|
24092
24243
|
openRecordForEdition(uniqueIdentifier) {
|
|
24093
24244
|
const draft$ = of(this.getRecordFromLocalStorage(uniqueIdentifier));
|
|
24094
24245
|
const recordAsXml$ = this.getRecordAsXml(uniqueIdentifier);
|
|
@@ -24250,12 +24401,12 @@ class Gn4Repository {
|
|
|
24250
24401
|
removeRecordFromLocalStorage(recordId) {
|
|
24251
24402
|
window.localStorage.removeItem(this.getLocalStorageKeyForRecord(recordId));
|
|
24252
24403
|
}
|
|
24253
|
-
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 }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24404
|
+
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 }); }
|
|
24254
24405
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4Repository }); }
|
|
24255
24406
|
}
|
|
24256
24407
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4Repository, decorators: [{
|
|
24257
24408
|
type: Injectable
|
|
24258
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: SearchApiService }, { type: ElasticsearchService }, { type: Gn4Converter }, { type: RecordsApiService }, { type: PlatformServiceInterface }, { type: LanguagesApiService }] });
|
|
24409
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: SearchApiService }, { type: ElasticsearchService }, { type: Gn4Converter }, { type: RecordsApiService }, { type: PlatformServiceInterface }, { type: LanguagesApiService }, { type: Gn4SettingsService }] });
|
|
24259
24410
|
|
|
24260
24411
|
const IMAGE_URL$1 = '/geonetwork/images/harvesting/';
|
|
24261
24412
|
class OrganizationsFromMetadataService {
|
|
@@ -24534,24 +24685,6 @@ const ORGANIZATIONS_STRATEGY = new InjectionToken('organizations-strategy', {
|
|
|
24534
24685
|
factory: () => 'metadata',
|
|
24535
24686
|
});
|
|
24536
24687
|
|
|
24537
|
-
class Gn4SettingsService {
|
|
24538
|
-
constructor(siteApiService) {
|
|
24539
|
-
this.siteApiService = siteApiService;
|
|
24540
|
-
this.identicon$ = this.getSettingsSetValueByKey('system/users/identicon');
|
|
24541
|
-
}
|
|
24542
|
-
getSettingsSetValueByKey(key) {
|
|
24543
|
-
return this.siteApiService.getSettingsSet(null, [key]).pipe(map$1((v) => v[key]), shareReplay({ bufferSize: 1, refCount: true }));
|
|
24544
|
-
}
|
|
24545
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, deps: [{ token: SiteApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24546
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
|
|
24547
|
-
}
|
|
24548
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, decorators: [{
|
|
24549
|
-
type: Injectable,
|
|
24550
|
-
args: [{
|
|
24551
|
-
providedIn: 'root',
|
|
24552
|
-
}]
|
|
24553
|
-
}], ctorParameters: () => [{ type: SiteApiService }] });
|
|
24554
|
-
|
|
24555
24688
|
const DEFAULT_GN4_LOGIN_URL = `/geonetwork/srv/\${lang3}/catalog.signin?redirect=\${current_url}`;
|
|
24556
24689
|
const LOGIN_URL = new InjectionToken('loginUrl');
|
|
24557
24690
|
const DEFAULT_GN4_LOGOUT_URL = `/geonetwork/signout`;
|
|
@@ -25673,7 +25806,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25673
25806
|
}] });
|
|
25674
25807
|
|
|
25675
25808
|
var name = "geonetwork-ui";
|
|
25676
|
-
var version = "2.6.0-dev.
|
|
25809
|
+
var version = "2.6.0-dev.609dd7257";
|
|
25677
25810
|
var engines = {
|
|
25678
25811
|
node: ">=20"
|
|
25679
25812
|
};
|
|
@@ -25798,6 +25931,9 @@ class Gn4PlatformService {
|
|
|
25798
25931
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
25799
25932
|
}
|
|
25800
25933
|
}), shareReplay(1));
|
|
25934
|
+
this.allowEditHarvestedMd$ = this.settings$.pipe(map$1((info) => {
|
|
25935
|
+
return info['system/harvester/enableEditing'];
|
|
25936
|
+
}), shareReplay(1));
|
|
25801
25937
|
/**
|
|
25802
25938
|
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
25803
25939
|
* @private
|
|
@@ -25818,6 +25954,9 @@ class Gn4PlatformService {
|
|
|
25818
25954
|
getApiVersion() {
|
|
25819
25955
|
return this.apiVersion$;
|
|
25820
25956
|
}
|
|
25957
|
+
getAllowEditHarvestedMd() {
|
|
25958
|
+
return this.allowEditHarvestedMd$;
|
|
25959
|
+
}
|
|
25821
25960
|
getMe() {
|
|
25822
25961
|
return this.me$;
|
|
25823
25962
|
}
|
|
@@ -26250,422 +26389,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26250
26389
|
type: Output
|
|
26251
26390
|
}] } });
|
|
26252
26391
|
|
|
26253
|
-
class ExpandablePanelButtonComponent {
|
|
26254
|
-
constructor() {
|
|
26255
|
-
this.collapsed = true;
|
|
26256
|
-
}
|
|
26257
|
-
toggle() {
|
|
26258
|
-
this.collapsed = !this.collapsed;
|
|
26259
|
-
}
|
|
26260
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26261
|
-
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 }); }
|
|
26262
|
-
}
|
|
26263
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, decorators: [{
|
|
26264
|
-
type: Component,
|
|
26265
|
-
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"] }]
|
|
26266
|
-
}], propDecorators: { titleTemplate: [{
|
|
26267
|
-
type: Input
|
|
26268
|
-
}], collapsed: [{
|
|
26269
|
-
type: Input
|
|
26270
|
-
}] } });
|
|
26271
|
-
|
|
26272
|
-
class ExpandablePanelComponent {
|
|
26273
|
-
constructor(changeDetector) {
|
|
26274
|
-
this.changeDetector = changeDetector;
|
|
26275
|
-
this.iconColor = '';
|
|
26276
|
-
this._collapsed = true;
|
|
26277
|
-
}
|
|
26278
|
-
ngAfterViewInit() {
|
|
26279
|
-
if (this.contentDiv) {
|
|
26280
|
-
this.contentObserver = new ResizeObserver(() => {
|
|
26281
|
-
this.changeDetector.detectChanges();
|
|
26282
|
-
});
|
|
26283
|
-
this.contentObserver.observe(this.contentDiv.nativeElement);
|
|
26284
|
-
}
|
|
26285
|
-
}
|
|
26286
|
-
set collapsed(value) {
|
|
26287
|
-
this._collapsed = value;
|
|
26288
|
-
}
|
|
26289
|
-
get collapsed() {
|
|
26290
|
-
return this._collapsed;
|
|
26291
|
-
}
|
|
26292
|
-
toggle() {
|
|
26293
|
-
this.collapsed = !this.collapsed;
|
|
26294
|
-
}
|
|
26295
|
-
ngOnDestroy() {
|
|
26296
|
-
if (this.contentObserver) {
|
|
26297
|
-
this.contentObserver.disconnect();
|
|
26298
|
-
}
|
|
26299
|
-
}
|
|
26300
|
-
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 }); }
|
|
26301
|
-
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 }); }
|
|
26302
|
-
}
|
|
26303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, decorators: [{
|
|
26304
|
-
type: Component,
|
|
26305
|
-
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" }]
|
|
26306
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
26307
|
-
type: Input
|
|
26308
|
-
}], iconColor: [{
|
|
26309
|
-
type: Input
|
|
26310
|
-
}], titleTemplate: [{
|
|
26311
|
-
type: ContentChild,
|
|
26312
|
-
args: ['titleTemplate']
|
|
26313
|
-
}], contentDiv: [{
|
|
26314
|
-
type: ViewChild,
|
|
26315
|
-
args: ['contentDiv']
|
|
26316
|
-
}], collapsed: [{
|
|
26317
|
-
type: Input
|
|
26318
|
-
}] } });
|
|
26319
|
-
|
|
26320
|
-
class FormFieldWrapperComponent {
|
|
26321
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26322
|
-
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 }); }
|
|
26323
|
-
}
|
|
26324
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
26325
|
-
type: Component,
|
|
26326
|
-
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" }]
|
|
26327
|
-
}], propDecorators: { label: [{
|
|
26328
|
-
type: Input
|
|
26329
|
-
}], hint: [{
|
|
26330
|
-
type: Input
|
|
26331
|
-
}] } });
|
|
26332
|
-
|
|
26333
|
-
class MaxLinesComponent {
|
|
26334
|
-
constructor(cdr) {
|
|
26335
|
-
this.cdr = cdr;
|
|
26336
|
-
this.maxLines = 6;
|
|
26337
|
-
this.isExpanded = false;
|
|
26338
|
-
this.maxHeight = '';
|
|
26339
|
-
this.showToggleButton = false;
|
|
26340
|
-
}
|
|
26341
|
-
ngAfterViewInit() {
|
|
26342
|
-
this.calculateMaxHeight();
|
|
26343
|
-
this.observer = new ResizeObserver((mutations) => {
|
|
26344
|
-
mutations.forEach(() => {
|
|
26345
|
-
this.calculateMaxHeight();
|
|
26346
|
-
});
|
|
26347
|
-
});
|
|
26348
|
-
this.observer.observe(this.container.nativeElement.children[0]);
|
|
26349
|
-
}
|
|
26350
|
-
toggleDisplay() {
|
|
26351
|
-
this.isExpanded = !this.isExpanded;
|
|
26352
|
-
this.calculateMaxHeight();
|
|
26353
|
-
}
|
|
26354
|
-
calculateMaxHeight() {
|
|
26355
|
-
const containerElement = this.container.nativeElement;
|
|
26356
|
-
const contentElement = containerElement.children[0];
|
|
26357
|
-
const contentHeight = contentElement.getBoundingClientRect().height;
|
|
26358
|
-
if (contentHeight) {
|
|
26359
|
-
if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
|
|
26360
|
-
this.showToggleButton = true;
|
|
26361
|
-
this.maxHeight = this.isExpanded
|
|
26362
|
-
? `${contentHeight}px`
|
|
26363
|
-
: `${this.maxLines * this.getLineHeight(contentElement)}px`;
|
|
26364
|
-
}
|
|
26365
|
-
else {
|
|
26366
|
-
this.showToggleButton = false;
|
|
26367
|
-
this.maxHeight = `${contentHeight}px`;
|
|
26368
|
-
}
|
|
26369
|
-
containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
|
|
26370
|
-
this.cdr.detectChanges();
|
|
26371
|
-
}
|
|
26372
|
-
}
|
|
26373
|
-
getLineHeight(element) {
|
|
26374
|
-
const computedStyle = window.getComputedStyle(element);
|
|
26375
|
-
const lineHeight = parseFloat(computedStyle.lineHeight);
|
|
26376
|
-
const fontSize = parseFloat(computedStyle.fontSize || '14');
|
|
26377
|
-
const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
|
|
26378
|
-
return result;
|
|
26379
|
-
}
|
|
26380
|
-
ngOnDestroy() {
|
|
26381
|
-
if (!this.observer)
|
|
26382
|
-
return;
|
|
26383
|
-
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
26384
|
-
}
|
|
26385
|
-
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 }); }
|
|
26386
|
-
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 }); }
|
|
26387
|
-
}
|
|
26388
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
26389
|
-
type: Component,
|
|
26390
|
-
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" }]
|
|
26391
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { maxLines: [{
|
|
26392
|
-
type: Input
|
|
26393
|
-
}], container: [{
|
|
26394
|
-
type: ViewChild,
|
|
26395
|
-
args: ['container']
|
|
26396
|
-
}] } });
|
|
26397
|
-
|
|
26398
|
-
class InteractiveTableColumnComponent {
|
|
26399
|
-
constructor() {
|
|
26400
|
-
this.grow = false;
|
|
26401
|
-
this.sortable = false;
|
|
26402
|
-
this.activeSort = null;
|
|
26403
|
-
this.sortChange = new EventEmitter();
|
|
26404
|
-
}
|
|
26405
|
-
handleSortChange() {
|
|
26406
|
-
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
26407
|
-
this.sortChange.emit(this.activeSort);
|
|
26408
|
-
}
|
|
26409
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26410
|
-
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 }); }
|
|
26411
|
-
}
|
|
26412
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
26413
|
-
type: Component,
|
|
26414
|
-
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
26415
|
-
}], propDecorators: { header: [{
|
|
26416
|
-
type: ContentChild,
|
|
26417
|
-
args: ['header']
|
|
26418
|
-
}], cell: [{
|
|
26419
|
-
type: ContentChild,
|
|
26420
|
-
args: ['cell']
|
|
26421
|
-
}], grow: [{
|
|
26422
|
-
type: Input
|
|
26423
|
-
}], width: [{
|
|
26424
|
-
type: Input
|
|
26425
|
-
}], sortable: [{
|
|
26426
|
-
type: Input
|
|
26427
|
-
}], activeSort: [{
|
|
26428
|
-
type: Input
|
|
26429
|
-
}], sortChange: [{
|
|
26430
|
-
type: Output
|
|
26431
|
-
}] } });
|
|
26432
|
-
|
|
26433
|
-
marker('editor.record.lock.reason');
|
|
26434
|
-
marker('editor.record.lock.format');
|
|
26435
|
-
class InteractiveTableComponent {
|
|
26436
|
-
constructor() {
|
|
26437
|
-
this.items = [];
|
|
26438
|
-
this.isDraftPage = false;
|
|
26439
|
-
this.itemClick = new EventEmitter();
|
|
26440
|
-
}
|
|
26441
|
-
get gridStyle() {
|
|
26442
|
-
return {
|
|
26443
|
-
'grid-template-columns': this.columns
|
|
26444
|
-
.map((column) => column.width
|
|
26445
|
-
? column.width
|
|
26446
|
-
: column.grow
|
|
26447
|
-
? `minmax(0px,1fr)`
|
|
26448
|
-
: `minmax(0px,max-content)`)
|
|
26449
|
-
.join(' '),
|
|
26450
|
-
};
|
|
26451
|
-
}
|
|
26452
|
-
getItemTitle(item) {
|
|
26453
|
-
if (!item.extras?.edit && !this.isDraftPage && item.kind === 'dataset') {
|
|
26454
|
-
return 'editor.record.lock.reason';
|
|
26455
|
-
}
|
|
26456
|
-
else if (item.kind !== 'dataset') {
|
|
26457
|
-
return 'editor.record.lock.format';
|
|
26458
|
-
}
|
|
26459
|
-
return '';
|
|
26460
|
-
}
|
|
26461
|
-
handleRowClick(item) {
|
|
26462
|
-
this.itemClick.emit(item);
|
|
26463
|
-
}
|
|
26464
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26465
|
-
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 [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 (!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 }); }
|
|
26466
|
-
}
|
|
26467
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
26468
|
-
type: Component,
|
|
26469
|
-
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 (!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"] }]
|
|
26470
|
-
}], propDecorators: { columns: [{
|
|
26471
|
-
type: ContentChildren,
|
|
26472
|
-
args: [InteractiveTableColumnComponent]
|
|
26473
|
-
}], items: [{
|
|
26474
|
-
type: Input
|
|
26475
|
-
}], isDraftPage: [{
|
|
26476
|
-
type: Input
|
|
26477
|
-
}], itemClick: [{
|
|
26478
|
-
type: Output
|
|
26479
|
-
}] } });
|
|
26480
|
-
|
|
26481
|
-
/**
|
|
26482
|
-
* This component will make a block that will stay sticky on the top of the page,
|
|
26483
|
-
* but will also shrink down to a minimum height when scrolling.
|
|
26484
|
-
* The ratio between minimum and nominal height is stored in the shrinkRatio
|
|
26485
|
-
* property, and can be used to change e.g. the opacity or size of child elements.
|
|
26486
|
-
* This component renders at z-index: 50 by default.
|
|
26487
|
-
* The first parent element with an overflow of `scroll` or `overflow` is considered
|
|
26488
|
-
* for scroll events.
|
|
26489
|
-
*/
|
|
26490
|
-
class StickyHeaderComponent {
|
|
26491
|
-
constructor(changeDetector, hostEl, zone) {
|
|
26492
|
-
this.changeDetector = changeDetector;
|
|
26493
|
-
this.hostEl = hostEl;
|
|
26494
|
-
this.zone = zone;
|
|
26495
|
-
}
|
|
26496
|
-
ngAfterViewInit() {
|
|
26497
|
-
this.scrollSub = fromEvent(window, 'scroll', {
|
|
26498
|
-
passive: true,
|
|
26499
|
-
})
|
|
26500
|
-
.pipe(throttleTime(0, animationFrameScheduler, {
|
|
26501
|
-
leading: true,
|
|
26502
|
-
trailing: true,
|
|
26503
|
-
}))
|
|
26504
|
-
.subscribe(this.updateSize.bind(this));
|
|
26505
|
-
}
|
|
26506
|
-
ngOnInit() {
|
|
26507
|
-
this.placeholderEl = document.createElement('div');
|
|
26508
|
-
this.placeholderEl.style.position = 'absolute';
|
|
26509
|
-
this.placeholderEl.classList.add('sticky-header-placeholder');
|
|
26510
|
-
this.hostEl.nativeElement.insertAdjacentElement('beforebegin', this.placeholderEl);
|
|
26511
|
-
}
|
|
26512
|
-
ngAfterViewChecked() {
|
|
26513
|
-
this.updateSize();
|
|
26514
|
-
}
|
|
26515
|
-
ngOnDestroy() {
|
|
26516
|
-
this.scrollSub.unsubscribe();
|
|
26517
|
-
this.placeholderEl.remove();
|
|
26518
|
-
}
|
|
26519
|
-
updateSize() {
|
|
26520
|
-
this.zone.runOutsideAngular(() => {
|
|
26521
|
-
if (window.scrollY === this.parentScroll)
|
|
26522
|
-
return;
|
|
26523
|
-
this.parentScroll = window.scrollY;
|
|
26524
|
-
const offsetTop = Math.max(0, this.parentScroll - this.placeholderEl.offsetTop);
|
|
26525
|
-
const newHeightPx = Math.max(this.minHeightPx, this.fullHeightPx - offsetTop);
|
|
26526
|
-
this.innerContainer.nativeElement.style.transform = `translate(0, ${newHeightPx - this.fullHeightPx}px)`;
|
|
26527
|
-
this.expandRatio =
|
|
26528
|
-
(newHeightPx - this.minHeightPx) /
|
|
26529
|
-
(this.fullHeightPx - this.minHeightPx);
|
|
26530
|
-
this.changeDetector.detectChanges();
|
|
26531
|
-
});
|
|
26532
|
-
}
|
|
26533
|
-
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 }); }
|
|
26534
|
-
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 }); }
|
|
26535
|
-
}
|
|
26536
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StickyHeaderComponent, decorators: [{
|
|
26537
|
-
type: Component,
|
|
26538
|
-
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" }]
|
|
26539
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef, decorators: [{
|
|
26540
|
-
type: Host
|
|
26541
|
-
}] }, { type: i0.NgZone }], propDecorators: { minHeightPx: [{
|
|
26542
|
-
type: Input
|
|
26543
|
-
}], fullHeightPx: [{
|
|
26544
|
-
type: Input
|
|
26545
|
-
}], template: [{
|
|
26546
|
-
type: ContentChild,
|
|
26547
|
-
args: [TemplateRef]
|
|
26548
|
-
}], outerContainer: [{
|
|
26549
|
-
type: ViewChild,
|
|
26550
|
-
args: ['outerContainer']
|
|
26551
|
-
}], innerContainer: [{
|
|
26552
|
-
type: ViewChild,
|
|
26553
|
-
args: ['innerContainer']
|
|
26554
|
-
}] } });
|
|
26555
|
-
|
|
26556
|
-
class BlockListComponent {
|
|
26557
|
-
get pages() {
|
|
26558
|
-
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
26559
|
-
}
|
|
26560
|
-
get isFirstPage() {
|
|
26561
|
-
return this.currentPage_ === 0;
|
|
26562
|
-
}
|
|
26563
|
-
get isLastPage() {
|
|
26564
|
-
return this.currentPage_ === this.pagesCount - 1;
|
|
26565
|
-
}
|
|
26566
|
-
get pagesCount() {
|
|
26567
|
-
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
26568
|
-
}
|
|
26569
|
-
get currentPage() {
|
|
26570
|
-
return this.currentPage_ + 1;
|
|
26571
|
-
}
|
|
26572
|
-
constructor(changeDetector) {
|
|
26573
|
-
this.changeDetector = changeDetector;
|
|
26574
|
-
this.pageSize = 4;
|
|
26575
|
-
this.containerClass = '';
|
|
26576
|
-
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
26577
|
-
this.minHeight = 0;
|
|
26578
|
-
this.listChanges = new EventEmitter();
|
|
26579
|
-
this.subComponentSize = 'M';
|
|
26580
|
-
this.currentPage_ = 0;
|
|
26581
|
-
this.refreshBlocksVisibility = () => {
|
|
26582
|
-
this.blocks.forEach((block, index) => {
|
|
26583
|
-
block.nativeElement.style.display =
|
|
26584
|
-
index >= this.currentPage_ * this.pageSize &&
|
|
26585
|
-
index < (this.currentPage_ + 1) * this.pageSize
|
|
26586
|
-
? null
|
|
26587
|
-
: 'none';
|
|
26588
|
-
});
|
|
26589
|
-
};
|
|
26590
|
-
}
|
|
26591
|
-
ngAfterViewInit() {
|
|
26592
|
-
this.blocks.changes.subscribe(() => {
|
|
26593
|
-
this.updateSizes();
|
|
26594
|
-
this.refreshBlocksVisibility();
|
|
26595
|
-
this.goToPage(1);
|
|
26596
|
-
this.changeDetector.detectChanges();
|
|
26597
|
-
this.listChanges.emit(this);
|
|
26598
|
-
});
|
|
26599
|
-
this.updateSizes();
|
|
26600
|
-
this.refreshBlocksVisibility();
|
|
26601
|
-
// we store the first height as the min-height of the list container
|
|
26602
|
-
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
26603
|
-
this.changeDetector.detectChanges();
|
|
26604
|
-
this.listChanges.emit(this);
|
|
26605
|
-
}
|
|
26606
|
-
updateSizes() {
|
|
26607
|
-
this.subComponentSize = this.computeSubComponentSize();
|
|
26608
|
-
this.pageSize = this.computePageSize();
|
|
26609
|
-
}
|
|
26610
|
-
computeSubComponentSize() {
|
|
26611
|
-
if (!this.blocks)
|
|
26612
|
-
return 'M';
|
|
26613
|
-
const subComponentsCount = this.blocks.length;
|
|
26614
|
-
if (subComponentsCount <= 3)
|
|
26615
|
-
return 'L';
|
|
26616
|
-
if (subComponentsCount <= 12)
|
|
26617
|
-
return 'M';
|
|
26618
|
-
if (subComponentsCount <= 18)
|
|
26619
|
-
return 'S';
|
|
26620
|
-
return 'XS';
|
|
26621
|
-
}
|
|
26622
|
-
computePageSize() {
|
|
26623
|
-
switch (this.subComponentSize) {
|
|
26624
|
-
case 'L':
|
|
26625
|
-
return 3;
|
|
26626
|
-
case 'S':
|
|
26627
|
-
return 6;
|
|
26628
|
-
case 'XS':
|
|
26629
|
-
return 8;
|
|
26630
|
-
default:
|
|
26631
|
-
return 4;
|
|
26632
|
-
}
|
|
26633
|
-
}
|
|
26634
|
-
goToPage(pageIndex) {
|
|
26635
|
-
this.currentPage_ = Math.max(Math.min(pageIndex - 1, this.pagesCount - 1), 0);
|
|
26636
|
-
this.changeDetector.detectChanges();
|
|
26637
|
-
this.refreshBlocksVisibility();
|
|
26638
|
-
}
|
|
26639
|
-
goToPrevPage() {
|
|
26640
|
-
if (this.isFirstPage)
|
|
26641
|
-
return;
|
|
26642
|
-
this.goToPage(this.currentPage - 1);
|
|
26643
|
-
}
|
|
26644
|
-
goToNextPage() {
|
|
26645
|
-
if (this.isLastPage)
|
|
26646
|
-
return;
|
|
26647
|
-
this.goToPage(this.currentPage + 1);
|
|
26648
|
-
}
|
|
26649
|
-
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 }); }
|
|
26650
|
-
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 }); }
|
|
26651
|
-
}
|
|
26652
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
26653
|
-
type: Component,
|
|
26654
|
-
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"] }]
|
|
26655
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { containerClass: [{
|
|
26656
|
-
type: Input
|
|
26657
|
-
}], paginationContainerClass: [{
|
|
26658
|
-
type: Input
|
|
26659
|
-
}], blocks: [{
|
|
26660
|
-
type: ContentChildren,
|
|
26661
|
-
args: ['block', { read: ElementRef }]
|
|
26662
|
-
}], blockContainer: [{
|
|
26663
|
-
type: ViewChild,
|
|
26664
|
-
args: ['blockContainer']
|
|
26665
|
-
}], listChanges: [{
|
|
26666
|
-
type: Output
|
|
26667
|
-
}] } });
|
|
26668
|
-
|
|
26669
26392
|
class ColorScaleComponent {
|
|
26670
26393
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColorScaleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26671
26394
|
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: [""] }); }
|
|
@@ -28598,6 +28321,531 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28598
28321
|
type: Output
|
|
28599
28322
|
}] } });
|
|
28600
28323
|
|
|
28324
|
+
class CellPopinComponent {
|
|
28325
|
+
set activePopin(active) {
|
|
28326
|
+
this._activePopin = !!active;
|
|
28327
|
+
this.updateIntersectionObserver();
|
|
28328
|
+
}
|
|
28329
|
+
get activePopin() {
|
|
28330
|
+
return this._activePopin;
|
|
28331
|
+
}
|
|
28332
|
+
constructor(scrollDispatcher, cdr) {
|
|
28333
|
+
this.scrollDispatcher = scrollDispatcher;
|
|
28334
|
+
this.cdr = cdr;
|
|
28335
|
+
this.extraClass = '';
|
|
28336
|
+
this.isOpen = false;
|
|
28337
|
+
this.isVisible = true;
|
|
28338
|
+
this.overlayPositions = [
|
|
28339
|
+
{
|
|
28340
|
+
originX: 'end',
|
|
28341
|
+
originY: 'top',
|
|
28342
|
+
overlayX: 'end',
|
|
28343
|
+
overlayY: 'top',
|
|
28344
|
+
},
|
|
28345
|
+
{
|
|
28346
|
+
originX: 'start',
|
|
28347
|
+
originY: 'top',
|
|
28348
|
+
overlayX: 'start',
|
|
28349
|
+
overlayY: 'top',
|
|
28350
|
+
},
|
|
28351
|
+
];
|
|
28352
|
+
this.firstCheck = true;
|
|
28353
|
+
this._activePopin = true;
|
|
28354
|
+
}
|
|
28355
|
+
ngAfterViewInit() {
|
|
28356
|
+
if (!this.activePopin) {
|
|
28357
|
+
return;
|
|
28358
|
+
}
|
|
28359
|
+
if (this.cdkScrollContainer) {
|
|
28360
|
+
this.scrollDispatcher.register(this.cdkScrollContainer);
|
|
28361
|
+
}
|
|
28362
|
+
this.updateIntersectionObserver();
|
|
28363
|
+
}
|
|
28364
|
+
ngOnDestroy() {
|
|
28365
|
+
this.intersectionObserver?.disconnect();
|
|
28366
|
+
this.scrollDispatcher.deregister(this.cdkScrollContainer);
|
|
28367
|
+
}
|
|
28368
|
+
updateIntersectionObserver() {
|
|
28369
|
+
if (!this.scrollContainer || !this.anchorRef) {
|
|
28370
|
+
return;
|
|
28371
|
+
}
|
|
28372
|
+
if (this.intersectionObserver) {
|
|
28373
|
+
this.intersectionObserver?.disconnect();
|
|
28374
|
+
}
|
|
28375
|
+
this.intersectionObserver = new IntersectionObserver(([entry]) => {
|
|
28376
|
+
const visible = entry.intersectionRatio >= 1;
|
|
28377
|
+
// Ignore first visibility if first time opening it
|
|
28378
|
+
if (this.firstCheck && !visible) {
|
|
28379
|
+
this.firstCheck = false;
|
|
28380
|
+
return;
|
|
28381
|
+
}
|
|
28382
|
+
this.firstCheck = false;
|
|
28383
|
+
if (this.isVisible !== visible) {
|
|
28384
|
+
this.isVisible = visible;
|
|
28385
|
+
this.cdr.detectChanges();
|
|
28386
|
+
}
|
|
28387
|
+
}, {
|
|
28388
|
+
root: this.scrollContainer.nativeElement,
|
|
28389
|
+
threshold: 1.0,
|
|
28390
|
+
});
|
|
28391
|
+
this.intersectionObserver.observe(this.anchorRef.nativeElement);
|
|
28392
|
+
}
|
|
28393
|
+
openOverlay() {
|
|
28394
|
+
this.isOpen = true;
|
|
28395
|
+
}
|
|
28396
|
+
closeOverlay() {
|
|
28397
|
+
this.isOpen = false;
|
|
28398
|
+
}
|
|
28399
|
+
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 }); }
|
|
28400
|
+
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"] }] }); }
|
|
28401
|
+
}
|
|
28402
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellPopinComponent, decorators: [{
|
|
28403
|
+
type: Component,
|
|
28404
|
+
args: [{ selector: 'gn-ui-cell-popin', standalone: true, imports: [
|
|
28405
|
+
CommonModule,
|
|
28406
|
+
MatButtonModule,
|
|
28407
|
+
OverlayModule,
|
|
28408
|
+
ButtonComponent,
|
|
28409
|
+
NgIconComponent,
|
|
28410
|
+
], 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" }]
|
|
28411
|
+
}], ctorParameters: () => [{ type: i1$8.ScrollDispatcher }, { type: i0.ChangeDetectorRef }], propDecorators: { extraClass: [{
|
|
28412
|
+
type: Input
|
|
28413
|
+
}], cdkScrollContainer: [{
|
|
28414
|
+
type: Input
|
|
28415
|
+
}], scrollContainer: [{
|
|
28416
|
+
type: Input
|
|
28417
|
+
}], anchorRef: [{
|
|
28418
|
+
type: ViewChild,
|
|
28419
|
+
args: ['anchorRef']
|
|
28420
|
+
}], activePopin: [{
|
|
28421
|
+
type: Input
|
|
28422
|
+
}] } });
|
|
28423
|
+
|
|
28424
|
+
class ExpandablePanelButtonComponent {
|
|
28425
|
+
constructor() {
|
|
28426
|
+
this.collapsed = true;
|
|
28427
|
+
}
|
|
28428
|
+
toggle() {
|
|
28429
|
+
this.collapsed = !this.collapsed;
|
|
28430
|
+
}
|
|
28431
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28432
|
+
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 }); }
|
|
28433
|
+
}
|
|
28434
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, decorators: [{
|
|
28435
|
+
type: Component,
|
|
28436
|
+
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"] }]
|
|
28437
|
+
}], propDecorators: { titleTemplate: [{
|
|
28438
|
+
type: Input
|
|
28439
|
+
}], collapsed: [{
|
|
28440
|
+
type: Input
|
|
28441
|
+
}] } });
|
|
28442
|
+
|
|
28443
|
+
class ExpandablePanelComponent {
|
|
28444
|
+
constructor(changeDetector) {
|
|
28445
|
+
this.changeDetector = changeDetector;
|
|
28446
|
+
this.iconColor = '';
|
|
28447
|
+
this._collapsed = true;
|
|
28448
|
+
}
|
|
28449
|
+
ngAfterViewInit() {
|
|
28450
|
+
if (this.contentDiv) {
|
|
28451
|
+
this.contentObserver = new ResizeObserver(() => {
|
|
28452
|
+
this.changeDetector.detectChanges();
|
|
28453
|
+
});
|
|
28454
|
+
this.contentObserver.observe(this.contentDiv.nativeElement);
|
|
28455
|
+
}
|
|
28456
|
+
}
|
|
28457
|
+
set collapsed(value) {
|
|
28458
|
+
this._collapsed = value;
|
|
28459
|
+
}
|
|
28460
|
+
get collapsed() {
|
|
28461
|
+
return this._collapsed;
|
|
28462
|
+
}
|
|
28463
|
+
toggle() {
|
|
28464
|
+
this.collapsed = !this.collapsed;
|
|
28465
|
+
}
|
|
28466
|
+
ngOnDestroy() {
|
|
28467
|
+
if (this.contentObserver) {
|
|
28468
|
+
this.contentObserver.disconnect();
|
|
28469
|
+
}
|
|
28470
|
+
}
|
|
28471
|
+
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 }); }
|
|
28472
|
+
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 }); }
|
|
28473
|
+
}
|
|
28474
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, decorators: [{
|
|
28475
|
+
type: Component,
|
|
28476
|
+
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" }]
|
|
28477
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
28478
|
+
type: Input
|
|
28479
|
+
}], iconColor: [{
|
|
28480
|
+
type: Input
|
|
28481
|
+
}], titleTemplate: [{
|
|
28482
|
+
type: ContentChild,
|
|
28483
|
+
args: ['titleTemplate']
|
|
28484
|
+
}], contentDiv: [{
|
|
28485
|
+
type: ViewChild,
|
|
28486
|
+
args: ['contentDiv']
|
|
28487
|
+
}], collapsed: [{
|
|
28488
|
+
type: Input
|
|
28489
|
+
}] } });
|
|
28490
|
+
|
|
28491
|
+
class FormFieldWrapperComponent {
|
|
28492
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28493
|
+
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 }); }
|
|
28494
|
+
}
|
|
28495
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
28496
|
+
type: Component,
|
|
28497
|
+
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" }]
|
|
28498
|
+
}], propDecorators: { label: [{
|
|
28499
|
+
type: Input
|
|
28500
|
+
}], hint: [{
|
|
28501
|
+
type: Input
|
|
28502
|
+
}] } });
|
|
28503
|
+
|
|
28504
|
+
class MaxLinesComponent {
|
|
28505
|
+
constructor(cdr) {
|
|
28506
|
+
this.cdr = cdr;
|
|
28507
|
+
this.maxLines = 6;
|
|
28508
|
+
this.isExpanded = false;
|
|
28509
|
+
this.maxHeight = '';
|
|
28510
|
+
this.showToggleButton = false;
|
|
28511
|
+
}
|
|
28512
|
+
ngAfterViewInit() {
|
|
28513
|
+
this.calculateMaxHeight();
|
|
28514
|
+
this.observer = new ResizeObserver((mutations) => {
|
|
28515
|
+
mutations.forEach(() => {
|
|
28516
|
+
this.calculateMaxHeight();
|
|
28517
|
+
});
|
|
28518
|
+
});
|
|
28519
|
+
this.observer.observe(this.container.nativeElement.children[0]);
|
|
28520
|
+
}
|
|
28521
|
+
toggleDisplay() {
|
|
28522
|
+
this.isExpanded = !this.isExpanded;
|
|
28523
|
+
this.calculateMaxHeight();
|
|
28524
|
+
}
|
|
28525
|
+
calculateMaxHeight() {
|
|
28526
|
+
const containerElement = this.container.nativeElement;
|
|
28527
|
+
const contentElement = containerElement.children[0];
|
|
28528
|
+
const contentHeight = contentElement.getBoundingClientRect().height;
|
|
28529
|
+
if (contentHeight) {
|
|
28530
|
+
if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
|
|
28531
|
+
this.showToggleButton = true;
|
|
28532
|
+
this.maxHeight = this.isExpanded
|
|
28533
|
+
? `${contentHeight}px`
|
|
28534
|
+
: `${this.maxLines * this.getLineHeight(contentElement)}px`;
|
|
28535
|
+
}
|
|
28536
|
+
else {
|
|
28537
|
+
this.showToggleButton = false;
|
|
28538
|
+
this.maxHeight = `${contentHeight}px`;
|
|
28539
|
+
}
|
|
28540
|
+
containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
|
|
28541
|
+
this.cdr.detectChanges();
|
|
28542
|
+
}
|
|
28543
|
+
}
|
|
28544
|
+
getLineHeight(element) {
|
|
28545
|
+
const computedStyle = window.getComputedStyle(element);
|
|
28546
|
+
const lineHeight = parseFloat(computedStyle.lineHeight);
|
|
28547
|
+
const fontSize = parseFloat(computedStyle.fontSize || '14');
|
|
28548
|
+
const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
|
|
28549
|
+
return result;
|
|
28550
|
+
}
|
|
28551
|
+
ngOnDestroy() {
|
|
28552
|
+
if (!this.observer)
|
|
28553
|
+
return;
|
|
28554
|
+
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
28555
|
+
}
|
|
28556
|
+
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 }); }
|
|
28557
|
+
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 }); }
|
|
28558
|
+
}
|
|
28559
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
28560
|
+
type: Component,
|
|
28561
|
+
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" }]
|
|
28562
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { maxLines: [{
|
|
28563
|
+
type: Input
|
|
28564
|
+
}], container: [{
|
|
28565
|
+
type: ViewChild,
|
|
28566
|
+
args: ['container']
|
|
28567
|
+
}] } });
|
|
28568
|
+
|
|
28569
|
+
class InteractiveTableColumnComponent {
|
|
28570
|
+
constructor() {
|
|
28571
|
+
this.grow = false;
|
|
28572
|
+
this.sortable = false;
|
|
28573
|
+
this.activeSort = null;
|
|
28574
|
+
this.sortChange = new EventEmitter();
|
|
28575
|
+
}
|
|
28576
|
+
handleSortChange() {
|
|
28577
|
+
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
28578
|
+
this.sortChange.emit(this.activeSort);
|
|
28579
|
+
}
|
|
28580
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28581
|
+
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 }); }
|
|
28582
|
+
}
|
|
28583
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
28584
|
+
type: Component,
|
|
28585
|
+
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
28586
|
+
}], propDecorators: { header: [{
|
|
28587
|
+
type: ContentChild,
|
|
28588
|
+
args: ['header']
|
|
28589
|
+
}], cell: [{
|
|
28590
|
+
type: ContentChild,
|
|
28591
|
+
args: ['cell']
|
|
28592
|
+
}], grow: [{
|
|
28593
|
+
type: Input
|
|
28594
|
+
}], width: [{
|
|
28595
|
+
type: Input
|
|
28596
|
+
}], sortable: [{
|
|
28597
|
+
type: Input
|
|
28598
|
+
}], activeSort: [{
|
|
28599
|
+
type: Input
|
|
28600
|
+
}], sortChange: [{
|
|
28601
|
+
type: Output
|
|
28602
|
+
}] } });
|
|
28603
|
+
|
|
28604
|
+
marker('editor.record.lock.resourceType');
|
|
28605
|
+
marker('editor.record.lock.harvested');
|
|
28606
|
+
marker('editor.record.lock.owner');
|
|
28607
|
+
class InteractiveTableComponent {
|
|
28608
|
+
constructor() {
|
|
28609
|
+
this.items = [];
|
|
28610
|
+
this.canEditItem = () => of(true);
|
|
28611
|
+
this.isDraftPage = false;
|
|
28612
|
+
this.itemClick = new EventEmitter();
|
|
28613
|
+
}
|
|
28614
|
+
get gridStyle() {
|
|
28615
|
+
return {
|
|
28616
|
+
'grid-template-columns': this.columns
|
|
28617
|
+
.map((column) => column.width
|
|
28618
|
+
? column.width
|
|
28619
|
+
: column.grow
|
|
28620
|
+
? `minmax(0px,1fr)`
|
|
28621
|
+
: `minmax(0px,max-content)`)
|
|
28622
|
+
.join(' '),
|
|
28623
|
+
};
|
|
28624
|
+
}
|
|
28625
|
+
getItemTitle(item) {
|
|
28626
|
+
if (!this.isDraftPage) {
|
|
28627
|
+
if (item.kind !== 'dataset') {
|
|
28628
|
+
return 'editor.record.lock.resourceType';
|
|
28629
|
+
}
|
|
28630
|
+
else if (item.extras?.isHarvested) {
|
|
28631
|
+
return 'editor.record.lock.harvested';
|
|
28632
|
+
}
|
|
28633
|
+
else if (!item.extras?.edit) {
|
|
28634
|
+
return 'editor.record.lock.owner';
|
|
28635
|
+
}
|
|
28636
|
+
}
|
|
28637
|
+
return '';
|
|
28638
|
+
}
|
|
28639
|
+
handleRowClick(item) {
|
|
28640
|
+
this.itemClick.emit(item);
|
|
28641
|
+
}
|
|
28642
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28643
|
+
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 }); }
|
|
28644
|
+
}
|
|
28645
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
28646
|
+
type: Component,
|
|
28647
|
+
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"] }]
|
|
28648
|
+
}], propDecorators: { columns: [{
|
|
28649
|
+
type: ContentChildren,
|
|
28650
|
+
args: [InteractiveTableColumnComponent]
|
|
28651
|
+
}], items: [{
|
|
28652
|
+
type: Input
|
|
28653
|
+
}], canEditItem: [{
|
|
28654
|
+
type: Input
|
|
28655
|
+
}], isDraftPage: [{
|
|
28656
|
+
type: Input
|
|
28657
|
+
}], itemClick: [{
|
|
28658
|
+
type: Output
|
|
28659
|
+
}] } });
|
|
28660
|
+
|
|
28661
|
+
/**
|
|
28662
|
+
* This component will make a block that will stay sticky on the top of the page,
|
|
28663
|
+
* but will also shrink down to a minimum height when scrolling.
|
|
28664
|
+
* The ratio between minimum and nominal height is stored in the shrinkRatio
|
|
28665
|
+
* property, and can be used to change e.g. the opacity or size of child elements.
|
|
28666
|
+
* This component renders at z-index: 50 by default.
|
|
28667
|
+
* The first parent element with an overflow of `scroll` or `overflow` is considered
|
|
28668
|
+
* for scroll events.
|
|
28669
|
+
*/
|
|
28670
|
+
class StickyHeaderComponent {
|
|
28671
|
+
constructor(changeDetector, hostEl, zone) {
|
|
28672
|
+
this.changeDetector = changeDetector;
|
|
28673
|
+
this.hostEl = hostEl;
|
|
28674
|
+
this.zone = zone;
|
|
28675
|
+
}
|
|
28676
|
+
ngAfterViewInit() {
|
|
28677
|
+
this.scrollSub = fromEvent(window, 'scroll', {
|
|
28678
|
+
passive: true,
|
|
28679
|
+
})
|
|
28680
|
+
.pipe(throttleTime(0, animationFrameScheduler, {
|
|
28681
|
+
leading: true,
|
|
28682
|
+
trailing: true,
|
|
28683
|
+
}))
|
|
28684
|
+
.subscribe(this.updateSize.bind(this));
|
|
28685
|
+
}
|
|
28686
|
+
ngOnInit() {
|
|
28687
|
+
this.placeholderEl = document.createElement('div');
|
|
28688
|
+
this.placeholderEl.style.position = 'absolute';
|
|
28689
|
+
this.placeholderEl.classList.add('sticky-header-placeholder');
|
|
28690
|
+
this.hostEl.nativeElement.insertAdjacentElement('beforebegin', this.placeholderEl);
|
|
28691
|
+
}
|
|
28692
|
+
ngAfterViewChecked() {
|
|
28693
|
+
this.updateSize();
|
|
28694
|
+
}
|
|
28695
|
+
ngOnDestroy() {
|
|
28696
|
+
this.scrollSub.unsubscribe();
|
|
28697
|
+
this.placeholderEl.remove();
|
|
28698
|
+
}
|
|
28699
|
+
updateSize() {
|
|
28700
|
+
this.zone.runOutsideAngular(() => {
|
|
28701
|
+
if (window.scrollY === this.parentScroll)
|
|
28702
|
+
return;
|
|
28703
|
+
this.parentScroll = window.scrollY;
|
|
28704
|
+
const offsetTop = Math.max(0, this.parentScroll - this.placeholderEl.offsetTop);
|
|
28705
|
+
const newHeightPx = Math.max(this.minHeightPx, this.fullHeightPx - offsetTop);
|
|
28706
|
+
this.innerContainer.nativeElement.style.transform = `translate(0, ${newHeightPx - this.fullHeightPx}px)`;
|
|
28707
|
+
this.expandRatio =
|
|
28708
|
+
(newHeightPx - this.minHeightPx) /
|
|
28709
|
+
(this.fullHeightPx - this.minHeightPx);
|
|
28710
|
+
this.changeDetector.detectChanges();
|
|
28711
|
+
});
|
|
28712
|
+
}
|
|
28713
|
+
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 }); }
|
|
28714
|
+
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 }); }
|
|
28715
|
+
}
|
|
28716
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StickyHeaderComponent, decorators: [{
|
|
28717
|
+
type: Component,
|
|
28718
|
+
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" }]
|
|
28719
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef, decorators: [{
|
|
28720
|
+
type: Host
|
|
28721
|
+
}] }, { type: i0.NgZone }], propDecorators: { minHeightPx: [{
|
|
28722
|
+
type: Input
|
|
28723
|
+
}], fullHeightPx: [{
|
|
28724
|
+
type: Input
|
|
28725
|
+
}], template: [{
|
|
28726
|
+
type: ContentChild,
|
|
28727
|
+
args: [TemplateRef]
|
|
28728
|
+
}], outerContainer: [{
|
|
28729
|
+
type: ViewChild,
|
|
28730
|
+
args: ['outerContainer']
|
|
28731
|
+
}], innerContainer: [{
|
|
28732
|
+
type: ViewChild,
|
|
28733
|
+
args: ['innerContainer']
|
|
28734
|
+
}] } });
|
|
28735
|
+
|
|
28736
|
+
class BlockListComponent {
|
|
28737
|
+
get pages() {
|
|
28738
|
+
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
28739
|
+
}
|
|
28740
|
+
get isFirstPage() {
|
|
28741
|
+
return this.currentPage_ === 0;
|
|
28742
|
+
}
|
|
28743
|
+
get isLastPage() {
|
|
28744
|
+
return this.currentPage_ === this.pagesCount - 1;
|
|
28745
|
+
}
|
|
28746
|
+
get pagesCount() {
|
|
28747
|
+
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
28748
|
+
}
|
|
28749
|
+
get currentPage() {
|
|
28750
|
+
return this.currentPage_ + 1;
|
|
28751
|
+
}
|
|
28752
|
+
constructor(changeDetector) {
|
|
28753
|
+
this.changeDetector = changeDetector;
|
|
28754
|
+
this.pageSize = 4;
|
|
28755
|
+
this.containerClass = '';
|
|
28756
|
+
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
28757
|
+
this.minHeight = 0;
|
|
28758
|
+
this.listChanges = new EventEmitter();
|
|
28759
|
+
this.subComponentSize = 'M';
|
|
28760
|
+
this.currentPage_ = 0;
|
|
28761
|
+
this.refreshBlocksVisibility = () => {
|
|
28762
|
+
this.blocks.forEach((block, index) => {
|
|
28763
|
+
block.nativeElement.style.display =
|
|
28764
|
+
index >= this.currentPage_ * this.pageSize &&
|
|
28765
|
+
index < (this.currentPage_ + 1) * this.pageSize
|
|
28766
|
+
? null
|
|
28767
|
+
: 'none';
|
|
28768
|
+
});
|
|
28769
|
+
};
|
|
28770
|
+
}
|
|
28771
|
+
ngAfterViewInit() {
|
|
28772
|
+
this.blocks.changes.subscribe(() => {
|
|
28773
|
+
this.updateSizes();
|
|
28774
|
+
this.refreshBlocksVisibility();
|
|
28775
|
+
this.goToPage(1);
|
|
28776
|
+
this.changeDetector.detectChanges();
|
|
28777
|
+
this.listChanges.emit(this);
|
|
28778
|
+
});
|
|
28779
|
+
this.updateSizes();
|
|
28780
|
+
this.refreshBlocksVisibility();
|
|
28781
|
+
// we store the first height as the min-height of the list container
|
|
28782
|
+
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
28783
|
+
this.changeDetector.detectChanges();
|
|
28784
|
+
this.listChanges.emit(this);
|
|
28785
|
+
}
|
|
28786
|
+
updateSizes() {
|
|
28787
|
+
this.subComponentSize = this.computeSubComponentSize();
|
|
28788
|
+
this.pageSize = this.computePageSize();
|
|
28789
|
+
}
|
|
28790
|
+
computeSubComponentSize() {
|
|
28791
|
+
if (!this.blocks)
|
|
28792
|
+
return 'M';
|
|
28793
|
+
const subComponentsCount = this.blocks.length;
|
|
28794
|
+
if (subComponentsCount <= 3)
|
|
28795
|
+
return 'L';
|
|
28796
|
+
if (subComponentsCount <= 12)
|
|
28797
|
+
return 'M';
|
|
28798
|
+
if (subComponentsCount <= 18)
|
|
28799
|
+
return 'S';
|
|
28800
|
+
return 'XS';
|
|
28801
|
+
}
|
|
28802
|
+
computePageSize() {
|
|
28803
|
+
switch (this.subComponentSize) {
|
|
28804
|
+
case 'L':
|
|
28805
|
+
return 3;
|
|
28806
|
+
case 'S':
|
|
28807
|
+
return 6;
|
|
28808
|
+
case 'XS':
|
|
28809
|
+
return 8;
|
|
28810
|
+
default:
|
|
28811
|
+
return 4;
|
|
28812
|
+
}
|
|
28813
|
+
}
|
|
28814
|
+
goToPage(pageIndex) {
|
|
28815
|
+
this.currentPage_ = Math.max(Math.min(pageIndex - 1, this.pagesCount - 1), 0);
|
|
28816
|
+
this.changeDetector.detectChanges();
|
|
28817
|
+
this.refreshBlocksVisibility();
|
|
28818
|
+
}
|
|
28819
|
+
goToPrevPage() {
|
|
28820
|
+
if (this.isFirstPage)
|
|
28821
|
+
return;
|
|
28822
|
+
this.goToPage(this.currentPage - 1);
|
|
28823
|
+
}
|
|
28824
|
+
goToNextPage() {
|
|
28825
|
+
if (this.isLastPage)
|
|
28826
|
+
return;
|
|
28827
|
+
this.goToPage(this.currentPage + 1);
|
|
28828
|
+
}
|
|
28829
|
+
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 }); }
|
|
28830
|
+
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 }); }
|
|
28831
|
+
}
|
|
28832
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
28833
|
+
type: Component,
|
|
28834
|
+
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"] }]
|
|
28835
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { containerClass: [{
|
|
28836
|
+
type: Input
|
|
28837
|
+
}], paginationContainerClass: [{
|
|
28838
|
+
type: Input
|
|
28839
|
+
}], blocks: [{
|
|
28840
|
+
type: ContentChildren,
|
|
28841
|
+
args: ['block', { read: ElementRef }]
|
|
28842
|
+
}], blockContainer: [{
|
|
28843
|
+
type: ViewChild,
|
|
28844
|
+
args: ['blockContainer']
|
|
28845
|
+
}], listChanges: [{
|
|
28846
|
+
type: Output
|
|
28847
|
+
}] } });
|
|
28848
|
+
|
|
28601
28849
|
class SortableListComponent {
|
|
28602
28850
|
constructor() {
|
|
28603
28851
|
this.itemsOrderChange = new EventEmitter();
|
|
@@ -28772,34 +29020,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28772
29020
|
}] });
|
|
28773
29021
|
|
|
28774
29022
|
class TruncatedTextComponent {
|
|
28775
|
-
constructor(cd, ngZone
|
|
29023
|
+
constructor(cd, ngZone) {
|
|
28776
29024
|
this.cd = cd;
|
|
28777
29025
|
this.ngZone = ngZone;
|
|
28778
|
-
this.viewportRuler = viewportRuler;
|
|
28779
29026
|
this.text = '';
|
|
28780
29027
|
this.extraClass = '';
|
|
28781
29028
|
this.isTextTruncated = false;
|
|
28782
|
-
this.isOpen = false;
|
|
28783
|
-
this.overlayPosition = {
|
|
28784
|
-
originX: 'end',
|
|
28785
|
-
originY: 'top',
|
|
28786
|
-
overlayX: 'end',
|
|
28787
|
-
overlayY: 'top',
|
|
28788
|
-
};
|
|
28789
29029
|
this.resizeObserver = new ResizeObserver(() => {
|
|
28790
29030
|
this.ngZone.run(() => this.checkTextTruncation());
|
|
28791
29031
|
});
|
|
28792
29032
|
this.mutationObserver = new MutationObserver(() => {
|
|
28793
29033
|
this.ngZone.run(() => {
|
|
28794
29034
|
this.checkTextTruncation();
|
|
28795
|
-
this.close();
|
|
28796
29035
|
});
|
|
28797
29036
|
});
|
|
28798
|
-
this.viewportSubscription = this.viewportRuler.change().subscribe(() => {
|
|
28799
|
-
if (this.isOpen) {
|
|
28800
|
-
this.updateOverlayPosition();
|
|
28801
|
-
}
|
|
28802
|
-
});
|
|
28803
29037
|
}
|
|
28804
29038
|
ngAfterViewInit() {
|
|
28805
29039
|
const element = this.textElement.nativeElement;
|
|
@@ -28814,39 +29048,14 @@ class TruncatedTextComponent {
|
|
|
28814
29048
|
ngOnDestroy() {
|
|
28815
29049
|
this.resizeObserver?.disconnect();
|
|
28816
29050
|
this.mutationObserver?.disconnect();
|
|
28817
|
-
this.viewportSubscription?.unsubscribe();
|
|
28818
|
-
this.close();
|
|
28819
|
-
}
|
|
28820
|
-
toggleOverlay() {
|
|
28821
|
-
this.isOpen = !this.isOpen;
|
|
28822
|
-
if (this.isOpen) {
|
|
28823
|
-
this.updateOverlayPosition();
|
|
28824
|
-
}
|
|
28825
|
-
}
|
|
28826
|
-
updateOverlayPosition() {
|
|
28827
|
-
const element = this.textElement.nativeElement;
|
|
28828
|
-
const rect = element.getBoundingClientRect();
|
|
28829
|
-
const viewportWidth = this.viewportRuler.getViewportSize().width;
|
|
28830
|
-
const isMobile = viewportWidth < 640;
|
|
28831
|
-
const overlayWidth = isMobile ? 190 : 320;
|
|
28832
|
-
const isNearLeftEdge = rect.left < overlayWidth;
|
|
28833
|
-
this.overlayPosition = {
|
|
28834
|
-
originX: isNearLeftEdge ? 'start' : 'end',
|
|
28835
|
-
originY: 'top',
|
|
28836
|
-
overlayX: isNearLeftEdge ? 'start' : 'end',
|
|
28837
|
-
overlayY: 'top',
|
|
28838
|
-
};
|
|
28839
|
-
}
|
|
28840
|
-
close() {
|
|
28841
|
-
this.isOpen = false;
|
|
28842
29051
|
}
|
|
28843
29052
|
checkTextTruncation() {
|
|
28844
29053
|
const element = this.textElement.nativeElement;
|
|
28845
29054
|
this.isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
28846
29055
|
this.cd.detectChanges();
|
|
28847
29056
|
}
|
|
28848
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }
|
|
28849
|
-
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
|
|
29057
|
+
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 }); }
|
|
29058
|
+
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"] }] }); }
|
|
28850
29059
|
}
|
|
28851
29060
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, decorators: [{
|
|
28852
29061
|
type: Component,
|
|
@@ -28856,12 +29065,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28856
29065
|
MatButtonModule,
|
|
28857
29066
|
OverlayModule,
|
|
28858
29067
|
ButtonComponent,
|
|
29068
|
+
CellPopinComponent,
|
|
28859
29069
|
NgIconComponent,
|
|
28860
|
-
], providers: [provideIcons({ iconoirExpand
|
|
28861
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }
|
|
29070
|
+
], 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" }]
|
|
29071
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { text: [{
|
|
28862
29072
|
type: Input
|
|
28863
29073
|
}], extraClass: [{
|
|
28864
29074
|
type: Input
|
|
29075
|
+
}], scrollContainer: [{
|
|
29076
|
+
type: Input
|
|
29077
|
+
}], cdkScrollContainer: [{
|
|
29078
|
+
type: Input
|
|
28865
29079
|
}], textElement: [{
|
|
28866
29080
|
type: ViewChild,
|
|
28867
29081
|
args: ['textElement']
|
|
@@ -29472,6 +29686,10 @@ marker('record.metadata.quality.updateFrequency.success');
|
|
|
29472
29686
|
marker('record.metadata.quality.updateFrequency.failed');
|
|
29473
29687
|
marker('record.metadata.quality.organisation.success');
|
|
29474
29688
|
marker('record.metadata.quality.organisation.failed');
|
|
29689
|
+
marker('record.metadata.quality.capabilities.success');
|
|
29690
|
+
marker('record.metadata.quality.capabilities.failed');
|
|
29691
|
+
marker('record.metadata.quality.source.success');
|
|
29692
|
+
marker('record.metadata.quality.source.failed');
|
|
29475
29693
|
class MetadataQualityItemComponent {
|
|
29476
29694
|
get icon() {
|
|
29477
29695
|
return this.value ? 'matCheck' : 'matWarningAmber';
|
|
@@ -29495,6 +29713,28 @@ class MetadataQualityComponent {
|
|
|
29495
29713
|
constructor() {
|
|
29496
29714
|
this.smaller = false;
|
|
29497
29715
|
this.items = [];
|
|
29716
|
+
this.COMMON_CHECKS = {
|
|
29717
|
+
title: (metadata) => !!metadata?.title,
|
|
29718
|
+
description: (metadata) => !!metadata?.abstract,
|
|
29719
|
+
keywords: (metadata) => (metadata?.keywords?.length ?? 0) > 0,
|
|
29720
|
+
legalConstraints: (metadata) => (metadata?.legalConstraints?.length ?? 0) > 0,
|
|
29721
|
+
contact: (metadata) => !!metadata?.contacts?.[0]?.email,
|
|
29722
|
+
};
|
|
29723
|
+
this.SPECIFIC_CHECKS = {
|
|
29724
|
+
dataset: {
|
|
29725
|
+
updateFrequency: (metadata) => !!metadata?.updateFrequency,
|
|
29726
|
+
topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
|
|
29727
|
+
organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
|
|
29728
|
+
},
|
|
29729
|
+
service: {
|
|
29730
|
+
capabilities: (metadata) => (metadata?.onlineResources ?? []).some((resource) => this.hasGetCapabilities(resource?.url?.href ?? '')),
|
|
29731
|
+
},
|
|
29732
|
+
reuse: {
|
|
29733
|
+
topic: (metadata) => (metadata?.topics?.length ?? 0) > 0,
|
|
29734
|
+
organisation: (metadata) => !!metadata?.contacts?.[0]?.organization?.name,
|
|
29735
|
+
source: (metadata) => !!metadata?.extras?.sourcesIdentifiers,
|
|
29736
|
+
},
|
|
29737
|
+
};
|
|
29498
29738
|
}
|
|
29499
29739
|
get qualityScore() {
|
|
29500
29740
|
const qualityScore = this.metadata?.extras?.qualityScore;
|
|
@@ -29510,17 +29750,20 @@ class MetadataQualityComponent {
|
|
|
29510
29750
|
this.items.push({ name, value });
|
|
29511
29751
|
}
|
|
29512
29752
|
}
|
|
29753
|
+
hasGetCapabilities(url) {
|
|
29754
|
+
return url.toLowerCase().includes('capabilities');
|
|
29755
|
+
}
|
|
29513
29756
|
initialize() {
|
|
29514
|
-
const contact = this.metadata?.contacts?.[0];
|
|
29515
29757
|
this.items = [];
|
|
29516
|
-
this.
|
|
29517
|
-
|
|
29518
|
-
|
|
29519
|
-
|
|
29520
|
-
|
|
29521
|
-
|
|
29522
|
-
|
|
29523
|
-
|
|
29758
|
+
Object.entries(this.COMMON_CHECKS).forEach(([name, check]) => {
|
|
29759
|
+
this.add(name, check(this.metadata));
|
|
29760
|
+
});
|
|
29761
|
+
const datasetType = this.metadata?.kind;
|
|
29762
|
+
if (datasetType && this.SPECIFIC_CHECKS[datasetType]) {
|
|
29763
|
+
Object.entries(this.SPECIFIC_CHECKS[datasetType]).forEach(([name, check]) => {
|
|
29764
|
+
this.add(name, check(this.metadata));
|
|
29765
|
+
});
|
|
29766
|
+
}
|
|
29524
29767
|
}
|
|
29525
29768
|
ngOnChanges(changes) {
|
|
29526
29769
|
if (changes['metadata'] || changes['metadataQualityDisplay']) {
|
|
@@ -29564,6 +29807,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29564
29807
|
type: Input
|
|
29565
29808
|
}] } });
|
|
29566
29809
|
|
|
29810
|
+
class InternalLinkCardContactComponent {
|
|
29811
|
+
constructor() {
|
|
29812
|
+
this.size = 'M';
|
|
29813
|
+
}
|
|
29814
|
+
get organization() {
|
|
29815
|
+
return this.record.ownerOrganization;
|
|
29816
|
+
}
|
|
29817
|
+
get contacts() {
|
|
29818
|
+
return ((this.record.kind === 'dataset'
|
|
29819
|
+
? this.record.contactsForResource
|
|
29820
|
+
: this.record.contacts) || []);
|
|
29821
|
+
}
|
|
29822
|
+
openExternalUrl(event, url) {
|
|
29823
|
+
event.stopPropagation();
|
|
29824
|
+
window.open(url, '_blank');
|
|
29825
|
+
}
|
|
29826
|
+
openMailto(event, email) {
|
|
29827
|
+
event.stopPropagation();
|
|
29828
|
+
window.open(`mailto:${email}`, '_blank');
|
|
29829
|
+
}
|
|
29830
|
+
copyToClipboard(event, text) {
|
|
29831
|
+
event.stopPropagation();
|
|
29832
|
+
navigator.clipboard.writeText(text);
|
|
29833
|
+
}
|
|
29834
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29835
|
+
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: [
|
|
29836
|
+
provideIcons({
|
|
29837
|
+
iconoirInternet,
|
|
29838
|
+
matEmailOutline,
|
|
29839
|
+
matPhoneOutline,
|
|
29840
|
+
matLocationOnOutline,
|
|
29841
|
+
}),
|
|
29842
|
+
], 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"] }] }); }
|
|
29843
|
+
}
|
|
29844
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardContactComponent, decorators: [{
|
|
29845
|
+
type: Component,
|
|
29846
|
+
args: [{ selector: 'gn-ui-internal-link-card-contact', standalone: true, imports: [NgIf, ThumbnailComponent, NgIconComponent, TranslateModule], providers: [
|
|
29847
|
+
provideIcons({
|
|
29848
|
+
iconoirInternet,
|
|
29849
|
+
matEmailOutline,
|
|
29850
|
+
matPhoneOutline,
|
|
29851
|
+
matLocationOnOutline,
|
|
29852
|
+
}),
|
|
29853
|
+
], 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" }]
|
|
29854
|
+
}], propDecorators: { record: [{
|
|
29855
|
+
type: Input
|
|
29856
|
+
}], size: [{
|
|
29857
|
+
type: Input
|
|
29858
|
+
}] } });
|
|
29859
|
+
|
|
29567
29860
|
class InternalLinkCardComponent {
|
|
29568
29861
|
set size(value) {
|
|
29569
29862
|
this._size = value;
|
|
@@ -29605,28 +29898,19 @@ class InternalLinkCardComponent {
|
|
|
29605
29898
|
this.abstract = removeWhitespace(stripHtml(this.record?.abstract));
|
|
29606
29899
|
this.subscription.add(fromEvent(this.elementRef.nativeElement, 'click').subscribe(() => this.mdSelect.emit(this.record)));
|
|
29607
29900
|
}
|
|
29608
|
-
get organization() {
|
|
29609
|
-
return this.record.ownerOrganization;
|
|
29610
|
-
}
|
|
29611
|
-
get contacts() {
|
|
29612
|
-
return ((this.record.kind === 'dataset'
|
|
29613
|
-
? this.record.contactsForResource
|
|
29614
|
-
: this.record.contacts) || []);
|
|
29615
|
-
}
|
|
29616
29901
|
getTitleClass() {
|
|
29617
29902
|
return this.titleClassMap[this._size];
|
|
29618
29903
|
}
|
|
29619
|
-
|
|
29620
|
-
|
|
29621
|
-
|
|
29622
|
-
|
|
29623
|
-
|
|
29624
|
-
|
|
29625
|
-
window.open(`mailto:${email}`, '_blank');
|
|
29904
|
+
getAbstractClass() {
|
|
29905
|
+
const marginClass = ['S', 'XS'].includes(this.size) ? 'ml-2' : '';
|
|
29906
|
+
const clampClass = this.size === 'L' && !this.record.ownerOrganization?.name
|
|
29907
|
+
? 'line-clamp-6'
|
|
29908
|
+
: 'line-clamp-2';
|
|
29909
|
+
return `${clampClass} ${marginClass}`.trim();
|
|
29626
29910
|
}
|
|
29627
|
-
|
|
29628
|
-
|
|
29629
|
-
|
|
29911
|
+
displayAbstract() {
|
|
29912
|
+
return (this.size === 'L' ||
|
|
29913
|
+
(['M', 'S'].includes(this.size) && !this.record.ownerOrganization?.name));
|
|
29630
29914
|
}
|
|
29631
29915
|
get shouldShowThumbnail() {
|
|
29632
29916
|
return this.size === 'L' || this.size === 'M';
|
|
@@ -29636,40 +29920,34 @@ class InternalLinkCardComponent {
|
|
|
29636
29920
|
provideIcons({
|
|
29637
29921
|
iconoirInternet,
|
|
29638
29922
|
matLocationSearchingOutline,
|
|
29639
|
-
matEmailOutline,
|
|
29640
|
-
matPhoneOutline,
|
|
29641
|
-
matLocationOnOutline,
|
|
29642
29923
|
}),
|
|
29643
29924
|
provideNgIconsConfig({
|
|
29644
29925
|
size: '1.2em',
|
|
29645
29926
|
}),
|
|
29646
|
-
], 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=\"
|
|
29927
|
+
], 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 w-0\">\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"] }] }); }
|
|
29647
29928
|
}
|
|
29648
29929
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, decorators: [{
|
|
29649
29930
|
type: Component,
|
|
29650
29931
|
args: [{ selector: 'gn-ui-internal-link-card', standalone: true, imports: [
|
|
29651
29932
|
NgClass,
|
|
29652
29933
|
NgIf,
|
|
29653
|
-
ThumbnailComponent,
|
|
29654
29934
|
MetadataQualityComponent,
|
|
29655
29935
|
NgTemplateOutlet,
|
|
29656
|
-
NgIconComponent,
|
|
29657
29936
|
TranslateModule,
|
|
29658
29937
|
GeoDataBadgeComponent,
|
|
29659
29938
|
KindBadgeComponent,
|
|
29660
29939
|
MarkdownParserComponent,
|
|
29940
|
+
InternalLinkCardContactComponent,
|
|
29941
|
+
ThumbnailComponent,
|
|
29661
29942
|
], providers: [
|
|
29662
29943
|
provideIcons({
|
|
29663
29944
|
iconoirInternet,
|
|
29664
29945
|
matLocationSearchingOutline,
|
|
29665
|
-
matEmailOutline,
|
|
29666
|
-
matPhoneOutline,
|
|
29667
|
-
matLocationOnOutline,
|
|
29668
29946
|
}),
|
|
29669
29947
|
provideNgIconsConfig({
|
|
29670
29948
|
size: '1.2em',
|
|
29671
29949
|
}),
|
|
29672
|
-
], 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=\"
|
|
29950
|
+
], 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 w-0\">\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" }]
|
|
29673
29951
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { record: [{
|
|
29674
29952
|
type: Input
|
|
29675
29953
|
}], linkTarget: [{
|
|
@@ -31319,52 +31597,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31319
31597
|
type: Input
|
|
31320
31598
|
}] } });
|
|
31321
31599
|
|
|
31322
|
-
class RelatedRecordCardComponent {
|
|
31323
|
-
constructor() {
|
|
31324
|
-
this.linkHref = null;
|
|
31325
|
-
this.extraClass = '';
|
|
31326
|
-
this.baseClasses = [
|
|
31327
|
-
'w-72',
|
|
31328
|
-
'h-96',
|
|
31329
|
-
'overflow-hidden',
|
|
31330
|
-
'rounded-lg',
|
|
31331
|
-
'bg-white',
|
|
31332
|
-
'cursor-pointer',
|
|
31333
|
-
'block',
|
|
31334
|
-
'hover:-translate-y-2 ',
|
|
31335
|
-
'duration-[180ms]',
|
|
31336
|
-
].join(' ');
|
|
31337
|
-
}
|
|
31338
|
-
get classList() {
|
|
31339
|
-
return `${this.baseClasses} ${this.extraClass}`;
|
|
31340
|
-
}
|
|
31341
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31342
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RelatedRecordCardComponent, isStandalone: true, selector: "gn-ui-related-record-card", inputs: { linkHref: "linkHref", record: "record", extraClass: "extraClass", favoriteTemplate: "favoriteTemplate", metadataQualityDisplay: "metadataQualityDisplay", size: "size" }, ngImport: i0, template: "<gn-ui-internal-link-card\n [linkHref]=\"linkHref\"\n [linkTarget]=\"'_blank'\"\n [record]=\"record\"\n [favoriteTemplate]=\"favoriteTemplate\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n [size]=\"size\"\n>\n</gn-ui-internal-link-card>\n", styles: [""], dependencies: [{ kind: "component", type: InternalLinkCardComponent, selector: "gn-ui-internal-link-card", inputs: ["record", "linkTarget", "linkHref", "metadataQualityDisplay", "favoriteTemplate", "size"], outputs: ["mdSelect"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: TranslateModule }], viewProviders: [provideIcons({ matOpenInNew })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31343
|
-
}
|
|
31344
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
31345
|
-
type: Component,
|
|
31346
|
-
args: [{ selector: 'gn-ui-related-record-card', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
31347
|
-
InternalLinkCardComponent,
|
|
31348
|
-
ThumbnailComponent,
|
|
31349
|
-
RouterLink,
|
|
31350
|
-
MatTooltipModule,
|
|
31351
|
-
NgIcon,
|
|
31352
|
-
TranslateModule,
|
|
31353
|
-
], standalone: true, viewProviders: [provideIcons({ matOpenInNew })], template: "<gn-ui-internal-link-card\n [linkHref]=\"linkHref\"\n [linkTarget]=\"'_blank'\"\n [record]=\"record\"\n [favoriteTemplate]=\"favoriteTemplate\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n [size]=\"size\"\n>\n</gn-ui-internal-link-card>\n" }]
|
|
31354
|
-
}], ctorParameters: () => [], propDecorators: { linkHref: [{
|
|
31355
|
-
type: Input
|
|
31356
|
-
}], record: [{
|
|
31357
|
-
type: Input
|
|
31358
|
-
}], extraClass: [{
|
|
31359
|
-
type: Input
|
|
31360
|
-
}], favoriteTemplate: [{
|
|
31361
|
-
type: Input
|
|
31362
|
-
}], metadataQualityDisplay: [{
|
|
31363
|
-
type: Input
|
|
31364
|
-
}], size: [{
|
|
31365
|
-
type: Input
|
|
31366
|
-
}] } });
|
|
31367
|
-
|
|
31368
31600
|
class TimeSincePipe {
|
|
31369
31601
|
constructor(translate) {
|
|
31370
31602
|
this.translate = translate;
|
|
@@ -31682,7 +31914,8 @@ class UiElementsModule {
|
|
|
31682
31914
|
InternalLinkCardComponent,
|
|
31683
31915
|
ServiceCapabilitiesComponent,
|
|
31684
31916
|
KindBadgeComponent,
|
|
31685
|
-
GeoDataBadgeComponent
|
|
31917
|
+
GeoDataBadgeComponent,
|
|
31918
|
+
ScrollingModule], exports: [ThumbnailComponent,
|
|
31686
31919
|
AvatarComponent,
|
|
31687
31920
|
UserPreviewComponent,
|
|
31688
31921
|
MarkdownParserComponent,
|
|
@@ -31715,7 +31948,8 @@ class UiElementsModule {
|
|
|
31715
31948
|
InternalLinkCardComponent,
|
|
31716
31949
|
ServiceCapabilitiesComponent,
|
|
31717
31950
|
KindBadgeComponent,
|
|
31718
|
-
GeoDataBadgeComponent
|
|
31951
|
+
GeoDataBadgeComponent,
|
|
31952
|
+
ScrollingModule] }); }
|
|
31719
31953
|
}
|
|
31720
31954
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
31721
31955
|
type: NgModule,
|
|
@@ -31744,6 +31978,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31744
31978
|
ServiceCapabilitiesComponent,
|
|
31745
31979
|
KindBadgeComponent,
|
|
31746
31980
|
GeoDataBadgeComponent,
|
|
31981
|
+
ScrollingModule,
|
|
31747
31982
|
],
|
|
31748
31983
|
providers: [
|
|
31749
31984
|
provideNgIconsConfig({
|
|
@@ -31833,48 +32068,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31833
32068
|
type: Output
|
|
31834
32069
|
}] } });
|
|
31835
32070
|
|
|
32071
|
+
marker('feature.catalog.attribute.type');
|
|
32072
|
+
marker('feature.catalog.attribute.name');
|
|
32073
|
+
marker('feature.catalog.attribute.code');
|
|
32074
|
+
marker('feature.catalog.attribute.definition');
|
|
32075
|
+
marker('feature.catalog.attribute.values');
|
|
31836
32076
|
class FeatureCatalogListComponent {
|
|
31837
32077
|
constructor() {
|
|
31838
|
-
this.
|
|
31839
|
-
{
|
|
31840
|
-
|
|
31841
|
-
|
|
31842
|
-
|
|
31843
|
-
},
|
|
31844
|
-
{
|
|
31845
|
-
key: 'name',
|
|
31846
|
-
label: 'feature.catalog.attribute.name',
|
|
31847
|
-
width: '32%',
|
|
31848
|
-
},
|
|
31849
|
-
{
|
|
31850
|
-
key: 'code',
|
|
31851
|
-
label: 'feature.catalog.attribute.code',
|
|
31852
|
-
width: '24%',
|
|
31853
|
-
},
|
|
31854
|
-
{
|
|
31855
|
-
key: 'title',
|
|
31856
|
-
label: 'feature.catalog.attribute.description',
|
|
31857
|
-
width: '25%',
|
|
31858
|
-
},
|
|
32078
|
+
this.COLUMNS_DEFAULT = [
|
|
32079
|
+
{ key: 'type', width: '17%' },
|
|
32080
|
+
{ key: 'name', width: '32%' },
|
|
32081
|
+
{ key: 'code', width: '17%' },
|
|
32082
|
+
{ key: 'definition', width: 'minmax(0px, 1fr)' },
|
|
31859
32083
|
];
|
|
31860
|
-
this.
|
|
32084
|
+
this.COLUMN_VALUES = {
|
|
32085
|
+
key: 'values',
|
|
32086
|
+
width: '73px',
|
|
32087
|
+
class: 'text-center',
|
|
32088
|
+
};
|
|
31861
32089
|
}
|
|
31862
|
-
|
|
31863
|
-
|
|
32090
|
+
getColumnsDefinition(attrs) {
|
|
32091
|
+
const hasValues = attrs.some((a) => a.values?.length > 0);
|
|
32092
|
+
return [...this.COLUMNS_DEFAULT, ...(hasValues ? [this.COLUMN_VALUES] : [])];
|
|
32093
|
+
}
|
|
32094
|
+
getGridTemplateColumns(attributes) {
|
|
32095
|
+
return this.getColumnsDefinition(attributes)
|
|
32096
|
+
.map((col) => col.width)
|
|
32097
|
+
.join(' ');
|
|
32098
|
+
}
|
|
32099
|
+
trackByColumn(_i, col) {
|
|
32100
|
+
return col.key;
|
|
31864
32101
|
}
|
|
31865
32102
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCatalogListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31866
|
-
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
|
|
32103
|
+
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]" }] }); }
|
|
31867
32104
|
}
|
|
31868
32105
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCatalogListComponent, decorators: [{
|
|
31869
32106
|
type: Component,
|
|
31870
32107
|
args: [{ selector: 'gn-ui-feature-catalog-list', standalone: true, imports: [
|
|
32108
|
+
ButtonComponent,
|
|
32109
|
+
CellPopinComponent,
|
|
31871
32110
|
CommonModule,
|
|
31872
32111
|
TranslateModule,
|
|
31873
32112
|
ExpandablePanelComponent,
|
|
31874
32113
|
TruncatedTextComponent,
|
|
31875
|
-
|
|
32114
|
+
NgIconComponent,
|
|
32115
|
+
ScrollingModule,
|
|
32116
|
+
], 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" }]
|
|
31876
32117
|
}], propDecorators: { filteredFeatureCatalog: [{
|
|
31877
32118
|
type: Input
|
|
32119
|
+
}], scrollContainer: [{
|
|
32120
|
+
type: ViewChild,
|
|
32121
|
+
args: ['scrollContainer']
|
|
32122
|
+
}], scrollable: [{
|
|
32123
|
+
type: ViewChild,
|
|
32124
|
+
args: [CdkScrollable, { static: true }]
|
|
32125
|
+
}], panelComponent: [{
|
|
32126
|
+
type: ViewChild,
|
|
32127
|
+
args: ['expanel', { read: ExpandablePanelComponent, static: true }]
|
|
31878
32128
|
}] } });
|
|
31879
32129
|
|
|
31880
32130
|
class ActionMenuComponent {
|
|
@@ -31909,7 +32159,7 @@ class ActionMenuComponent {
|
|
|
31909
32159
|
this.cdr.markForCheck();
|
|
31910
32160
|
}
|
|
31911
32161
|
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 }); }
|
|
31912
|
-
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", 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=\"
|
|
32162
|
+
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"] }] }); }
|
|
31913
32163
|
}
|
|
31914
32164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
31915
32165
|
type: Component,
|
|
@@ -31920,9 +32170,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31920
32170
|
MatDialogModule,
|
|
31921
32171
|
ConfirmationDialogComponent,
|
|
31922
32172
|
TranslateModule,
|
|
31923
|
-
], 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=\"
|
|
32173
|
+
], 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" }]
|
|
31924
32174
|
}], ctorParameters: () => [{ type: i1$a.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
|
|
31925
32175
|
type: Input
|
|
32176
|
+
}], isDuplicating: [{
|
|
32177
|
+
type: Input
|
|
31926
32178
|
}], canDelete: [{
|
|
31927
32179
|
type: Input
|
|
31928
32180
|
}], page: [{
|
|
@@ -32089,7 +32341,8 @@ class ResultsTableComponent {
|
|
|
32089
32341
|
this.sortOrder = null;
|
|
32090
32342
|
this.hasDraft = () => false;
|
|
32091
32343
|
this.canDuplicate = () => true;
|
|
32092
|
-
this.canDelete = () => true;
|
|
32344
|
+
this.canDelete = () => of(true);
|
|
32345
|
+
this.canEdit = () => of(true);
|
|
32093
32346
|
this.isDraftPage = false;
|
|
32094
32347
|
this.isDuplicating = false;
|
|
32095
32348
|
// emits the column (field) as well as the order
|
|
@@ -32166,9 +32419,13 @@ class ResultsTableComponent {
|
|
|
32166
32419
|
return getBadgeColor(format);
|
|
32167
32420
|
}
|
|
32168
32421
|
handleRecordClick(item) {
|
|
32169
|
-
|
|
32170
|
-
|
|
32171
|
-
|
|
32422
|
+
this.canEdit(item)
|
|
32423
|
+
.pipe(take$1(1))
|
|
32424
|
+
.subscribe((canEdit) => {
|
|
32425
|
+
if (canEdit) {
|
|
32426
|
+
this.recordClick.emit(item);
|
|
32427
|
+
}
|
|
32428
|
+
});
|
|
32172
32429
|
}
|
|
32173
32430
|
handleDuplicate(item) {
|
|
32174
32431
|
this.duplicateRecord.emit(item);
|
|
@@ -32213,9 +32470,9 @@ class ResultsTableComponent {
|
|
|
32213
32470
|
});
|
|
32214
32471
|
}
|
|
32215
32472
|
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 }); }
|
|
32216
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", inputs: { records: "records", selectedRecordsIdentifiers: "selectedRecordsIdentifiers", sortOrder: "sortOrder", hasDraft: "hasDraft", canDuplicate: "canDuplicate", canDelete: "canDelete", isDraftPage: "isDraftPage", isDuplicating: "isDuplicating" }, outputs: { sortByChange: "sortByChange", recordClick: "recordClick", duplicateRecord: "duplicateRecord", deleteRecord: "deleteRecord", rollbackDraft: "rollbackDraft", recordsSelectedChange: "recordsSelectedChange" }, providers: [
|
|
32473
|
+
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: [
|
|
32217
32474
|
provideIcons({ iconoirUser, iconoirLock, iconoirTranslate, matMoreVert }),
|
|
32218
|
-
], viewQueries: [{ propertyName: "actionMenuButtons", predicate: ["actionMenuButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"(
|
|
32475
|
+
], 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"] }] }); }
|
|
32219
32476
|
}
|
|
32220
32477
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
32221
32478
|
type: Component,
|
|
@@ -32231,7 +32488,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32231
32488
|
CdkOverlayOrigin,
|
|
32232
32489
|
], providers: [
|
|
32233
32490
|
provideIcons({ iconoirUser, iconoirLock, iconoirTranslate, matMoreVert }),
|
|
32234
|
-
], template: "<gn-ui-interactive-table\n [items]=\"records\"\n [isDraftPage]=\"isDraftPage\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column [width]=\"'3rem'\">\n <ng-template #cell let-item let-i=\"index\">\n <ng-icon\n name=\"iconoirLock\"\n class=\"text-purple\"\n *ngIf=\"(
|
|
32491
|
+
], 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"] }]
|
|
32235
32492
|
}], ctorParameters: () => [{ type: i1$8.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }, { type: i1$1.TranslateService }], propDecorators: { records: [{
|
|
32236
32493
|
type: Input
|
|
32237
32494
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -32244,6 +32501,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32244
32501
|
type: Input
|
|
32245
32502
|
}], canDelete: [{
|
|
32246
32503
|
type: Input
|
|
32504
|
+
}], canEdit: [{
|
|
32505
|
+
type: Input
|
|
32247
32506
|
}], isDraftPage: [{
|
|
32248
32507
|
type: Input
|
|
32249
32508
|
}], isDuplicating: [{
|
|
@@ -32492,9 +32751,10 @@ const FIELDS_SUMMARY = [
|
|
|
32492
32751
|
'userSavedCount',
|
|
32493
32752
|
'cl_topic',
|
|
32494
32753
|
'cl_maintenanceAndUpdateFrequency',
|
|
32495
|
-
'
|
|
32754
|
+
'MD_LegalConstraints*Object',
|
|
32496
32755
|
'qualityScore',
|
|
32497
32756
|
'allKeywords',
|
|
32757
|
+
'recordLink',
|
|
32498
32758
|
];
|
|
32499
32759
|
const FIELDS_BRIEF = [
|
|
32500
32760
|
...FIELDS_SUMMARY,
|
|
@@ -33317,11 +33577,11 @@ class FuzzySearchComponent {
|
|
|
33317
33577
|
this.isSearchActive.emit(event);
|
|
33318
33578
|
}
|
|
33319
33579
|
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 }); }
|
|
33320
|
-
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 }); }
|
|
33580
|
+
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 }); }
|
|
33321
33581
|
}
|
|
33322
33582
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FuzzySearchComponent, decorators: [{
|
|
33323
33583
|
type: Component,
|
|
33324
|
-
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" }]
|
|
33584
|
+
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" }]
|
|
33325
33585
|
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: RecordsRepositoryInterface }], propDecorators: { autocomplete: [{
|
|
33326
33586
|
type: ViewChild,
|
|
33327
33587
|
args: [AutocompleteComponent]
|
|
@@ -33331,6 +33591,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
33331
33591
|
type: Input
|
|
33332
33592
|
}], enterButton: [{
|
|
33333
33593
|
type: Input
|
|
33594
|
+
}], placeholder: [{
|
|
33595
|
+
type: Input
|
|
33334
33596
|
}], itemSelected: [{
|
|
33335
33597
|
type: Output
|
|
33336
33598
|
}], inputSubmitted: [{
|
|
@@ -34575,14 +34837,21 @@ class ResultsTableContainerComponent {
|
|
|
34575
34837
|
this.recordsRepository = recordsRepository;
|
|
34576
34838
|
this.notificationsService = notificationsService;
|
|
34577
34839
|
this.translateService = translateService;
|
|
34578
|
-
this.canDuplicate = () => true;
|
|
34579
|
-
this.canDelete = () => true;
|
|
34580
34840
|
this.recordClick = new EventEmitter();
|
|
34581
34841
|
this.duplicateRecord = new EventEmitter();
|
|
34582
34842
|
this.subscription = new Subscription();
|
|
34583
34843
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
34584
34844
|
this.sortBy$ = this.searchFacade.sortBy$;
|
|
34585
34845
|
this.hasDraft = (record) => this.recordsRepository.recordHasDraft(record.uniqueIdentifier);
|
|
34846
|
+
this.canDuplicate = (record) => {
|
|
34847
|
+
return this.recordsRepository.canDuplicate(record);
|
|
34848
|
+
};
|
|
34849
|
+
this.canDelete = (record) => {
|
|
34850
|
+
return this.recordsRepository.canDelete(record);
|
|
34851
|
+
};
|
|
34852
|
+
this.canEdit = (record) => {
|
|
34853
|
+
return this.recordsRepository.canEditIndexedRecord(record);
|
|
34854
|
+
};
|
|
34586
34855
|
}
|
|
34587
34856
|
handleRecordClick(item) {
|
|
34588
34857
|
this.recordClick.emit(item);
|
|
@@ -34627,16 +34896,12 @@ class ResultsTableContainerComponent {
|
|
|
34627
34896
|
this.subscription.unsubscribe();
|
|
34628
34897
|
}
|
|
34629
34898
|
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 }); }
|
|
34630
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ResultsTableContainerComponent, isStandalone: true, selector: "gn-ui-results-table-container", inputs: {
|
|
34899
|
+
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"] }] }); }
|
|
34631
34900
|
}
|
|
34632
34901
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
34633
34902
|
type: Component,
|
|
34634
|
-
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" }]
|
|
34635
|
-
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }], propDecorators: {
|
|
34636
|
-
type: Input
|
|
34637
|
-
}], canDelete: [{
|
|
34638
|
-
type: Input
|
|
34639
|
-
}], isDuplicating: [{
|
|
34903
|
+
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" }]
|
|
34904
|
+
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }], propDecorators: { isDuplicating: [{
|
|
34640
34905
|
type: Input
|
|
34641
34906
|
}], recordClick: [{
|
|
34642
34907
|
type: Output
|
|
@@ -36273,7 +36538,7 @@ class AddLayerFromCatalogComponent {
|
|
|
36273
36538
|
ADDLAYER: new ResultsLayoutConfigItem(AddLayerRecordPreviewComponent, 'py-2', '', 'flex flex-col divide-y divide-y-grey-50'),
|
|
36274
36539
|
},
|
|
36275
36540
|
},
|
|
36276
|
-
], 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 }); }
|
|
36541
|
+
], 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 }); }
|
|
36277
36542
|
}
|
|
36278
36543
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddLayerFromCatalogComponent, decorators: [{
|
|
36279
36544
|
type: Component,
|
|
@@ -38136,7 +38401,7 @@ class DataTableComponent {
|
|
|
38136
38401
|
}
|
|
38137
38402
|
}
|
|
38138
38403
|
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 }); }
|
|
38139
|
-
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$
|
|
38404
|
+
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 }); }
|
|
38140
38405
|
}
|
|
38141
38406
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
|
|
38142
38407
|
type: Component,
|
|
@@ -39845,15 +40110,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
39845
40110
|
marker('map.dropdown.placeholder');
|
|
39846
40111
|
marker('wfs.feature.limit');
|
|
39847
40112
|
marker('dataset.error.restrictedAccess');
|
|
40113
|
+
marker('map.select.style');
|
|
39848
40114
|
class MapViewComponent {
|
|
39849
40115
|
set exceedsLimit(value) {
|
|
39850
40116
|
this.excludeWfs$.next(value);
|
|
39851
40117
|
}
|
|
40118
|
+
selectLinkToDisplay(i) {
|
|
40119
|
+
this.selectedLinkIndex$.next(i);
|
|
40120
|
+
}
|
|
40121
|
+
selectStyleToDisplay(i) {
|
|
40122
|
+
this.selectedStyleIndex$.next(i);
|
|
40123
|
+
}
|
|
39852
40124
|
toggleLegend() {
|
|
39853
40125
|
this.showLegend = !this.showLegend;
|
|
39854
40126
|
}
|
|
39855
|
-
onLegendStatusChange(
|
|
39856
|
-
this.legendExists =
|
|
40127
|
+
onLegendStatusChange(v) {
|
|
40128
|
+
this.legendExists = v;
|
|
39857
40129
|
}
|
|
39858
40130
|
constructor(mdViewFacade, mapUtils, dataService, changeRef, translateService) {
|
|
39859
40131
|
this.mdViewFacade = mdViewFacade;
|
|
@@ -39866,20 +40138,15 @@ class MapViewComponent {
|
|
|
39866
40138
|
this.hidePreview = false;
|
|
39867
40139
|
this.showLegend = true;
|
|
39868
40140
|
this.legendExists = false;
|
|
40141
|
+
this.loading = false;
|
|
40142
|
+
this.error = null;
|
|
39869
40143
|
this.compatibleMapLinks$ = combineLatest([
|
|
39870
40144
|
this.mdViewFacade.mapApiLinks$,
|
|
39871
40145
|
this.mdViewFacade.geoDataLinksWithGeometry$,
|
|
39872
|
-
]).pipe(
|
|
39873
|
-
|
|
39874
|
-
|
|
39875
|
-
|
|
39876
|
-
return this.dataService.getGeodataLinksFromTms(link);
|
|
39877
|
-
}
|
|
39878
|
-
return link;
|
|
39879
|
-
}));
|
|
39880
|
-
processedMapApiLinks = processedMapApiLinks.flat();
|
|
39881
|
-
return [...processedMapApiLinks, ...geoDataLinksWithGeometry];
|
|
39882
|
-
}), shareReplay(1));
|
|
40146
|
+
]).pipe(map$1(([mapApiLinks, geoDataLinksWithGeometry]) => [
|
|
40147
|
+
...mapApiLinks,
|
|
40148
|
+
...geoDataLinksWithGeometry,
|
|
40149
|
+
]), shareReplay(1));
|
|
39883
40150
|
this.dropdownChoices$ = this.compatibleMapLinks$.pipe(map$1((links) => links.length
|
|
39884
40151
|
? links.map((link, index) => ({
|
|
39885
40152
|
label: getLinkLabel(link),
|
|
@@ -39887,12 +40154,39 @@ class MapViewComponent {
|
|
|
39887
40154
|
}))
|
|
39888
40155
|
: [{ label: 'map.dropdown.placeholder', value: 0 }]));
|
|
39889
40156
|
this.selectedLinkIndex$ = new BehaviorSubject(0);
|
|
39890
|
-
this.
|
|
39891
|
-
this.
|
|
39892
|
-
this.selectedLink$ = combineLatest([
|
|
40157
|
+
this.selectedStyleIndex$ = new BehaviorSubject(0);
|
|
40158
|
+
this.selectedSourceLink$ = combineLatest([
|
|
39893
40159
|
this.compatibleMapLinks$,
|
|
39894
40160
|
this.selectedLinkIndex$.pipe(distinctUntilChanged()),
|
|
39895
|
-
]).pipe(map$1(([links,
|
|
40161
|
+
]).pipe(map$1(([links, idx]) => links[idx]), shareReplay(1));
|
|
40162
|
+
this.styleLinks$ = this.selectedSourceLink$.pipe(switchMap$1((src) => {
|
|
40163
|
+
if (src &&
|
|
40164
|
+
src.type === 'service' &&
|
|
40165
|
+
src.accessServiceProtocol === 'tms') {
|
|
40166
|
+
return from(this.dataService.getGeodataLinksFromTms(src, false)).pipe(
|
|
40167
|
+
// We need to check for maplibre-style links because when a TMS service has no styles,
|
|
40168
|
+
// getGeodataLinksFromTms returns the original TMS link, which isn't a maplibre-style link
|
|
40169
|
+
map$1((links) => links?.filter((link) => link.type === 'service' &&
|
|
40170
|
+
link.accessServiceProtocol === 'maplibre-style') || []));
|
|
40171
|
+
}
|
|
40172
|
+
return of([]);
|
|
40173
|
+
}), tap$1(() => this.selectedStyleIndex$.next(0)), shareReplay(1));
|
|
40174
|
+
this.styleDropdownChoices$ = this.styleLinks$.pipe(map$1((links) => links.length
|
|
40175
|
+
? links.map((link, index) => ({
|
|
40176
|
+
label: getLinkLabel(link),
|
|
40177
|
+
value: index,
|
|
40178
|
+
}))
|
|
40179
|
+
: [
|
|
40180
|
+
{
|
|
40181
|
+
label: '\u00A0\u00A0\u00A0\u00A0',
|
|
40182
|
+
value: 0,
|
|
40183
|
+
},
|
|
40184
|
+
]));
|
|
40185
|
+
this.selectedLink$ = combineLatest([
|
|
40186
|
+
this.selectedSourceLink$,
|
|
40187
|
+
this.styleLinks$,
|
|
40188
|
+
this.selectedStyleIndex$.pipe(distinctUntilChanged()),
|
|
40189
|
+
]).pipe(map$1(([src, styles, styleIdx]) => (styles.length ? styles[styleIdx] : src)), shareReplay(1));
|
|
39896
40190
|
this.currentLayers$ = combineLatest([this.selectedLink$, this.excludeWfs$]).pipe(switchMap$1(([link, excludeWfs]) => {
|
|
39897
40191
|
if (!link) {
|
|
39898
40192
|
return of([]);
|
|
@@ -40010,9 +40304,6 @@ class MapViewComponent {
|
|
|
40010
40304
|
}
|
|
40011
40305
|
return throwError(() => 'protocol not supported');
|
|
40012
40306
|
}
|
|
40013
|
-
selectLinkToDisplay(link) {
|
|
40014
|
-
this.selectedLinkIndex$.next(link);
|
|
40015
|
-
}
|
|
40016
40307
|
handleError(error) {
|
|
40017
40308
|
if (error instanceof FetchError) {
|
|
40018
40309
|
this.error = this.translateService.instant(`dataset.error.${error.type}`, {
|
|
@@ -40032,7 +40323,7 @@ class MapViewComponent {
|
|
|
40032
40323
|
this.changeRef.detectChanges();
|
|
40033
40324
|
}
|
|
40034
40325
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, deps: [{ token: MdViewFacade }, { token: MapUtilsService }, { token: DataService }, { token: i0.ChangeDetectorRef }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
40035
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", displaySource: "displaySource" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <
|
|
40326
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MapViewComponent, isStandalone: true, selector: "gn-ui-map-view", inputs: { exceedsLimit: "exceedsLimit", displaySource: "displaySource" }, viewQueries: [{ propertyName: "mapContainer", first: true, predicate: ["mapContainer"], descendants: true }], ngImport: i0, template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"displaySource\"\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n\n <ng-container *ngIf=\"(styleLinks$ | async)?.length > 0; else styleDisabled\">\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n (selectValue)=\"selectStyleToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <ng-template #styleDisabled>\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0 text-gray-400\"\n extraBtnClass=\"font-sans font-bold text-gray-400\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [disabled]=\"true\"\n ></gn-ui-dropdown-selector>\n </ng-template>\n\n <div class=\"self-end md:ml-2\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth", "disabled"], outputs: ["selectValue"] }, { kind: "component", type: MapContainerComponent, selector: "gn-ui-map-container", inputs: ["context"], outputs: ["featuresClick", "featuresHover", "mapClick", "sourceLoadError"] }, { kind: "component", type: FeatureDetailComponent, selector: "gn-ui-feature-detail", inputs: ["feature", "featureCatalog"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: ["message"] }, { kind: "component", type: NgIconComponent, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "component", type: ExternalViewerButtonComponent, selector: "gn-ui-external-viewer-button", inputs: ["link", "extraClass"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: MapLegendComponent, selector: "gn-ui-map-legend", inputs: ["context"], outputs: ["legendStatusChange"] }], viewProviders: [provideIcons({ matClose })], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
40036
40327
|
}
|
|
40037
40328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MapViewComponent, decorators: [{
|
|
40038
40329
|
type: Component,
|
|
@@ -40048,7 +40339,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
40048
40339
|
ExternalViewerButtonComponent,
|
|
40049
40340
|
ButtonComponent,
|
|
40050
40341
|
MapLegendComponent,
|
|
40051
|
-
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <
|
|
40342
|
+
], viewProviders: [provideIcons({ matClose })], template: "<div class=\"w-full h-full flex flex-col gap-[13px]\">\n <div\n class=\"flex flex-col md:flex-row gap-4 py-4 px-5 bg-white border border-color-border rounded-lg mt-6\"\n >\n <gn-ui-dropdown-selector\n *ngIf=\"displaySource\"\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.layer' | translate\"\n [choices]=\"dropdownChoices$ | async\"\n (selectValue)=\"selectLinkToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n\n <ng-container *ngIf=\"(styleLinks$ | async)?.length > 0; else styleDisabled\">\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0\"\n extraBtnClass=\"font-sans font-bold\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n (selectValue)=\"selectStyleToDisplay($event)\"\n ></gn-ui-dropdown-selector>\n </ng-container>\n <ng-template #styleDisabled>\n <gn-ui-dropdown-selector\n class=\"w-full md:flex-1 md:min-w-0 text-gray-400\"\n extraBtnClass=\"font-sans font-bold text-gray-400\"\n [title]=\"'map.select.style' | translate\"\n [choices]=\"styleDropdownChoices$ | async\"\n [disabled]=\"true\"\n ></gn-ui-dropdown-selector>\n </ng-template>\n\n <div class=\"self-end md:ml-2\">\n <gn-ui-external-viewer-button\n extraClass=\"w-[44px] h-[44px]\"\n [link]=\"selectedLink$ | async\"\n >\n </gn-ui-external-viewer-button>\n </div>\n </div>\n <ng-container *ngIf=\"hidePreview; else mapView\">\n <gn-ui-popup-alert\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"block h-12 p-1\"\n >\n <span translate>record.feature.limit</span>\n </gn-ui-popup-alert>\n </ng-container>\n <ng-template #mapView>\n <div\n class=\"relative w-full h-full bg-white border border-gray-300 rounded-lg overflow-hidden\"\n >\n <gn-ui-map-container\n #mapContainer\n [context]=\"mapContext$ | async\"\n (featuresClick)=\"onMapFeatureSelect($event)\"\n (sourceLoadError)=\"onSourceLoadError($event)\"\n ></gn-ui-map-container>\n <div\n class=\"top-[1em] right-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [class.hidden]=\"!selection\"\n >\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"resetSelection()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"absolute right-[0.5em] ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n <gn-ui-feature-detail\n [featureCatalog]=\"mdViewFacade.featureCatalog$ | async\"\n [feature]=\"selection\"\n ></gn-ui-feature-detail>\n </div>\n\n <div\n class=\"top-[1em] p-3 bg-white absolute overflow-y-auto overflow-x-hidden max-h-72 w-56\"\n [ngClass]=\"{ 'right-[1em]': !selection, 'right-[16em]': selection }\"\n [hidden]=\"!showLegend || !legendExists\"\n >\n <div class=\"flex justify-between items-center mb-2\">\n <div class=\"text-primary font-bold\">Legend</div>\n <gn-ui-button\n type=\"light\"\n (buttonClick)=\"toggleLegend()\"\n style=\"\n --gn-ui-button-padding: 0px;\n --gn-ui-button-width: 24px;\n --gn-ui-button-height: 24px;\n \"\n extraClass=\"ml-[8px] mr-[10px]\"\n >\n <ng-icon name=\"matClose\" class=\"align-middle text-sm\"></ng-icon>\n </gn-ui-button>\n </div>\n <gn-ui-map-legend\n [context]=\"mapContext$ | async\"\n (legendStatusChange)=\"onLegendStatusChange($event)\"\n ></gn-ui-map-legend>\n </div>\n\n <gn-ui-button\n *ngIf=\"!showLegend && legendExists && !selection\"\n type=\"outline\"\n (buttonClick)=\"toggleLegend()\"\n extraClass=\"absolute top-[1em] right-[1em] rounded p-1 text-xs bg-white\"\n >\n Legend\n </gn-ui-button>\n\n <gn-ui-loading-mask\n *ngIf=\"loading\"\n class=\"absolute inset-0\"\n [message]=\"'map.loading.data' | translate\"\n ></gn-ui-loading-mask>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n type=\"warning\"\n icon=\"matErrorOutlineOutline\"\n class=\"absolute m-2 inset-0\"\n >\n <span translate>{{ error }}</span>\n </gn-ui-popup-alert>\n </div>\n </ng-template>\n</div>\n" }]
|
|
40052
40343
|
}], ctorParameters: () => [{ type: MdViewFacade }, { type: MapUtilsService }, { type: DataService }, { type: i0.ChangeDetectorRef }, { type: i1$1.TranslateService }], propDecorators: { exceedsLimit: [{
|
|
40053
40344
|
type: Input
|
|
40054
40345
|
}], displaySource: [{
|
|
@@ -43177,6 +43468,7 @@ class MultilingualPanelComponent {
|
|
|
43177
43468
|
this.formLanguage = lang;
|
|
43178
43469
|
this.facade.updateRecordField('defaultLanguage', lang);
|
|
43179
43470
|
this.facade.updateRecordField('otherLanguages', this.selectedLanguages.filter((lang) => lang !== this.formLanguage));
|
|
43471
|
+
this.closeActionMenu();
|
|
43180
43472
|
}
|
|
43181
43473
|
confirmDeleteAction(lang) {
|
|
43182
43474
|
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
@@ -43277,7 +43569,7 @@ class MultilingualPanelComponent {
|
|
|
43277
43569
|
provideNgIconsConfig({
|
|
43278
43570
|
size: '1.25em',
|
|
43279
43571
|
}),
|
|
43280
|
-
], 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(
|
|
43572
|
+
], 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"] }] }); }
|
|
43281
43573
|
}
|
|
43282
43574
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultilingualPanelComponent, decorators: [{
|
|
43283
43575
|
type: Component,
|
|
@@ -43298,7 +43590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43298
43590
|
provideNgIconsConfig({
|
|
43299
43591
|
size: '1.25em',
|
|
43300
43592
|
}),
|
|
43301
|
-
], 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(
|
|
43593
|
+
], 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" }]
|
|
43302
43594
|
}], 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: [{
|
|
43303
43595
|
type: Input
|
|
43304
43596
|
}], actionMenuButtons: [{
|
|
@@ -43707,7 +43999,7 @@ class DefaultRouterModule {
|
|
|
43707
43999
|
};
|
|
43708
44000
|
}
|
|
43709
44001
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
43710
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$3.StoreFeatureModule, i3$
|
|
44002
|
+
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] }); }
|
|
43711
44003
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
43712
44004
|
RouterFacade,
|
|
43713
44005
|
{
|
|
@@ -43750,5 +44042,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43750
44042
|
* Generated bundle index. Do not edit.
|
|
43751
44043
|
*/
|
|
43752
44044
|
|
|
43753
|
-
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, 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 };
|
|
44045
|
+
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, 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 };
|
|
43754
44046
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|