geonetwork-ui 2.6.0-dev.600519f47 → 2.6.0-dev.6e0b3d33d
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/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/search/src/lib/results-table/results-table-container.component.mjs +13 -10
- package/esm2022/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.mjs +19 -34
- package/esm2022/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.mjs +59 -0
- package/esm2022/libs/ui/elements/src/lib/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 +15 -6
- package/esm2022/translations/en.json +15 -6
- package/esm2022/translations/es.json +14 -5
- package/esm2022/translations/fr.json +15 -6
- package/esm2022/translations/it.json +14 -5
- package/esm2022/translations/nl.json +14 -5
- package/esm2022/translations/pt.json +14 -5
- package/fesm2022/geonetwork-ui.mjs +867 -624
- 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/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/search/src/lib/results-table/results-table-container.component.d.ts +6 -5
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts +3 -6
- package/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts +14 -0
- package/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/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/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 +63 -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/search/src/lib/results-table/results-table-container.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +13 -3
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.html +7 -75
- package/src/libs/ui/elements/src/lib/internal-link-card/internal-link-card.component.ts +20 -51
- package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.html +69 -0
- package/src/libs/ui/elements/src/lib/internal-link-card-contact/internal-link-card-contact.component.ts +61 -0
- package/src/libs/ui/elements/src/lib/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 +15 -6
- package/translations/en.json +15 -6
- package/translations/es.json +14 -5
- package/translations/fr.json +15 -6
- package/translations/it.json +14 -5
- package/translations/nl.json +14 -5
- package/translations/pt.json +14 -5
- package/translations/sk.json +14 -5
|
@@ -7,17 +7,17 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
|
7
7
|
import { format } from 'date-fns/format';
|
|
8
8
|
import { Namespace, Literal, lit, parse as parse$2, sym, BlankNode, graph } from 'rdflib';
|
|
9
9
|
import * as i0 from '@angular/core';
|
|
10
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output,
|
|
10
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Directive, Input, HostListener, HostBinding, Component, EventEmitter, ChangeDetectionStrategy, ViewChild, Output, TemplateRef, ElementRef, ViewChildren, ContentChild, ContentChildren, Host, ViewContainerRef, ViewEncapsulation, Pipe, inject } from '@angular/core';
|
|
11
11
|
import * as i1 from '@angular/common/http';
|
|
12
12
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpEventType, HttpClientXsrfModule } from '@angular/common/http';
|
|
13
13
|
import * as i1$1 from '@ngx-translate/core';
|
|
14
14
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
15
15
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
16
16
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
17
|
-
import { map as map$1, catchError, tap as tap$1,
|
|
17
|
+
import { map as map$1, shareReplay, catchError, tap as tap$1, filter, startWith, withLatestFrom, switchMap as switchMap$1, take, mergeMap, distinctUntilChanged, debounceTime, finalize, throttleTime, delay, first as first$1, share, pairwise, defaultIfEmpty, toArray } from 'rxjs/operators';
|
|
18
18
|
import * as i1$2 from '@angular/common';
|
|
19
|
-
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault,
|
|
20
|
-
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject,
|
|
19
|
+
import { CommonModule, NgSwitch, NgSwitchCase, NgSwitchDefault, NgIf, NgClass, NgTemplateOutlet, NgOptimizedImage, DatePipe } from '@angular/common';
|
|
20
|
+
import { of, map as map$2, lastValueFrom, Subject, switchMap, combineLatest, from, exhaustMap, throwError, forkJoin, takeLast, firstValueFrom, merge, BehaviorSubject, ReplaySubject, Subscription, first, distinctUntilChanged as distinctUntilChanged$1, fromEvent, animationFrameScheduler, timer, filter as filter$1, take as take$1, tap as tap$2, Observable, buffer, debounceTime as debounceTime$1, combineLatestWith, startWith as startWith$1, catchError as catchError$1, takeUntil, EMPTY, mergeMap as mergeMap$1, withLatestFrom as withLatestFrom$1, shareReplay as shareReplay$1, pairwise as pairwise$1 } from 'rxjs';
|
|
21
21
|
import { lt, valid, coerce, satisfies, ltr } from 'semver';
|
|
22
22
|
import chroma from 'chroma-js';
|
|
23
23
|
import { WmtsEndpoint, WmsEndpoint, WfsEndpoint, OgcApiEndpoint, sharedFetch, useCache, TmsEndpoint } from '@camptocamp/ogc-client';
|
|
@@ -25,12 +25,11 @@ import * as i1$3 from '@ngrx/store';
|
|
|
25
25
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
26
26
|
import EmblaCarousel from 'embla-carousel';
|
|
27
27
|
import * as i2$2 from '@ng-icons/core';
|
|
28
|
-
import { provideIcons,
|
|
29
|
-
import { iconoirNavArrowRight, iconoirNavArrowLeft,
|
|
30
|
-
import {
|
|
31
|
-
import * as
|
|
32
|
-
import {
|
|
33
|
-
import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
28
|
+
import { provideIcons, NgIconComponent, provideNgIconsConfig, NgIcon, NgIconsModule } from '@ng-icons/core';
|
|
29
|
+
import { iconoirNavArrowRight, iconoirNavArrowLeft, iconoirSearch, iconoirLongArrowDownLeft, iconoirCalendar, iconoirLink, iconoirArrowUp, iconoirCloudUpload, iconoirFramePlusIn, iconoirReduce, iconoirNavArrowDown, iconoirNavArrowUp, iconoirExpand, iconoirAppleWallet, iconoirAppleShortcuts, iconoirCode, iconoirCreditCard, iconoirInternet, iconoirSettings, iconoirDownload, iconoirMediaImage, iconoirMediaImageXmark, iconoirBin, iconoirPlus, iconoirList, iconoirUser, iconoirLock, iconoirTranslate, iconoirImport, iconoirLightBulbOn, iconoirArrowLeft, iconoirAttachment, iconoirRefresh, iconoirCheckCircle, iconoirCircle } from '@ng-icons/iconoir';
|
|
30
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
31
|
+
import * as i1$8 from '@angular/cdk/overlay';
|
|
32
|
+
import { CdkConnectedOverlay, OverlayModule, CdkOverlayOrigin } from '@angular/cdk/overlay';
|
|
34
33
|
import * as i2$1 from '@angular/forms';
|
|
35
34
|
import { FormsModule, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';
|
|
36
35
|
import * as i1$5 from '@angular/material/autocomplete';
|
|
@@ -42,21 +41,22 @@ 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';
|
|
@@ -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": "",
|
|
@@ -19106,9 +19113,15 @@ var de = {
|
|
|
19106
19113
|
"record.metadata.download": "Downloads",
|
|
19107
19114
|
"record.metadata.feature.catalog": "",
|
|
19108
19115
|
"record.metadata.formats": "Formate",
|
|
19116
|
+
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19109
19117
|
"record.metadata.keywords": "Stichworte",
|
|
19110
19118
|
"record.metadata.languages": "Sprachen",
|
|
19111
19119
|
"record.metadata.lastUpdate": "Zuletzt aktualisiert am {date}",
|
|
19120
|
+
"record.metadata.linked.datasets": "Verknüpfte Datensätze",
|
|
19121
|
+
"record.metadata.linked.records": "Verknüpfte Inhalte",
|
|
19122
|
+
"record.metadata.linked.reuses": "Verknüpfte Wiederverwendungen",
|
|
19123
|
+
"record.metadata.linked.services": "Verknüpfte Dienste",
|
|
19124
|
+
"record.metadata.linked.sourceDatasets": "Quelldatensätze",
|
|
19112
19125
|
"record.metadata.links": "Links",
|
|
19113
19126
|
"record.metadata.noUsage": "Für diesen Datensatz sind keine Nutzungsbedingungen angegeben.",
|
|
19114
19127
|
"record.metadata.otherConstraints": "Zusätzliche Bedingungen",
|
|
@@ -19135,8 +19148,7 @@ var de = {
|
|
|
19135
19148
|
"record.metadata.quality.topic.success": "Thema angegeben",
|
|
19136
19149
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
19137
19150
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
19138
|
-
"record.metadata.related": "
|
|
19139
|
-
"record.metadata.related.contents": "",
|
|
19151
|
+
"record.metadata.related": "Entdecken Sie den Katalog",
|
|
19140
19152
|
"record.metadata.ressources.and.links": "Ressourcen und Links",
|
|
19141
19153
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
19142
19154
|
"record.metadata.status": "Status",
|
|
@@ -19148,7 +19160,6 @@ var de = {
|
|
|
19148
19160
|
"record.metadata.temporalExtent.untilDate": "Bis {end}",
|
|
19149
19161
|
"record.metadata.title": "Titel",
|
|
19150
19162
|
"record.metadata.topics": "Kategorien",
|
|
19151
|
-
"record.metadata.isGeographical": "Geographischer Datensatz",
|
|
19152
19163
|
"record.metadata.uniqueId": "Eindeutige Kennung",
|
|
19153
19164
|
"record.metadata.updateFrequency": "Aktualisierungsfrequenz der Daten",
|
|
19154
19165
|
"record.metadata.updatedOn": "Geändert am",
|
|
@@ -19268,7 +19279,6 @@ var de = {
|
|
|
19268
19279
|
"tooltip.html.copy": "HTML kopieren",
|
|
19269
19280
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
19270
19281
|
"tooltip.url.copy": "URL kopieren",
|
|
19271
|
-
"tooltip.url.open": "URL öffnen",
|
|
19272
19282
|
"ui.readLess": "Weniger lesen",
|
|
19273
19283
|
"ui.readMore": "Weiterlesen",
|
|
19274
19284
|
"wfs.feature.limit": "Zu viele Features, um den WFS-Layer anzuzeigen!",
|
|
@@ -19526,8 +19536,9 @@ var en = {
|
|
|
19526
19536
|
"editor.record.loadError.body": "The dataset could not be loaded:",
|
|
19527
19537
|
"editor.record.loadError.closeMessage": "Understood",
|
|
19528
19538
|
"editor.record.loadError.title": "Error loading dataset",
|
|
19529
|
-
"editor.record.lock.
|
|
19530
|
-
"editor.record.lock.
|
|
19539
|
+
"editor.record.lock.harvested": "Datasets harvested from an external catalog are not editable",
|
|
19540
|
+
"editor.record.lock.owner": "You are not an editor of the allowed groups",
|
|
19541
|
+
"editor.record.lock.resourceType": "Records of a type other than dataset are not editable",
|
|
19531
19542
|
"editor.record.multilingual.confirmation.cancelText": "Keep the language(s)",
|
|
19532
19543
|
"editor.record.multilingual.confirmation.confirmText": "Remove the language(s)",
|
|
19533
19544
|
"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 +19589,11 @@ var en = {
|
|
|
19578
19589
|
"facets.block.title.tag.default": "Tag",
|
|
19579
19590
|
"facets.block.title.th_regions_tree.default": "Regions",
|
|
19580
19591
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> to access this feature</div>",
|
|
19592
|
+
"feature.catalog.attribute.code": "Code",
|
|
19593
|
+
"feature.catalog.attribute.definition": "Description",
|
|
19594
|
+
"feature.catalog.attribute.name": "Name",
|
|
19595
|
+
"feature.catalog.attribute.type": "Type",
|
|
19596
|
+
"feature.catalog.attribute.values": "Values",
|
|
19581
19597
|
"input.file.dropFileLabel": "or drop it here",
|
|
19582
19598
|
"input.file.orInputUrl": "or create a link to an external resource",
|
|
19583
19599
|
"input.file.selectFileLabel": "Select a file ({sizeMB} MB max.)",
|
|
@@ -19715,9 +19731,15 @@ var en = {
|
|
|
19715
19731
|
"record.metadata.download": "Downloads",
|
|
19716
19732
|
"record.metadata.feature.catalog": "Feature catalog",
|
|
19717
19733
|
"record.metadata.formats": "Formats",
|
|
19734
|
+
"record.metadata.isGeographical": "Geographical dataset",
|
|
19718
19735
|
"record.metadata.keywords": "Keywords",
|
|
19719
19736
|
"record.metadata.languages": "Languages",
|
|
19720
19737
|
"record.metadata.lastUpdate": "Last updated on {date}",
|
|
19738
|
+
"record.metadata.linked.datasets": "Associated datasets",
|
|
19739
|
+
"record.metadata.linked.records": "Associated content",
|
|
19740
|
+
"record.metadata.linked.reuses": "Associated reuses",
|
|
19741
|
+
"record.metadata.linked.services": "Associated services",
|
|
19742
|
+
"record.metadata.linked.sourceDatasets": "Source datasets",
|
|
19721
19743
|
"record.metadata.links": "Links",
|
|
19722
19744
|
"record.metadata.noUsage": "No usage conditions specified for this dataset.",
|
|
19723
19745
|
"record.metadata.otherConstraints": "Additional Conditions",
|
|
@@ -19744,8 +19766,7 @@ var en = {
|
|
|
19744
19766
|
"record.metadata.quality.topic.success": "Topic is specified",
|
|
19745
19767
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
19746
19768
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
19747
|
-
"record.metadata.related": "
|
|
19748
|
-
"record.metadata.related.contents": "Related content",
|
|
19769
|
+
"record.metadata.related": "Explore the catalog",
|
|
19749
19770
|
"record.metadata.ressources.and.links": "Resources and links",
|
|
19750
19771
|
"record.metadata.sheet": "Original metadata",
|
|
19751
19772
|
"record.metadata.status": "Status",
|
|
@@ -19757,7 +19778,6 @@ var en = {
|
|
|
19757
19778
|
"record.metadata.temporalExtent.untilDate": "Until { end }",
|
|
19758
19779
|
"record.metadata.title": "Title",
|
|
19759
19780
|
"record.metadata.topics": "Categories",
|
|
19760
|
-
"record.metadata.isGeographical": "Geographical dataset",
|
|
19761
19781
|
"record.metadata.uniqueId": "Unique Identifier",
|
|
19762
19782
|
"record.metadata.updateFrequency": "Data Update Frequency",
|
|
19763
19783
|
"record.metadata.updatedOn": "Updated on",
|
|
@@ -19877,7 +19897,6 @@ var en = {
|
|
|
19877
19897
|
"tooltip.html.copy": "Copy HTML",
|
|
19878
19898
|
"tooltip.id.copy": "Copy unique identifier",
|
|
19879
19899
|
"tooltip.url.copy": "Copy URL",
|
|
19880
|
-
"tooltip.url.open": "Open URL",
|
|
19881
19900
|
"ui.readLess": "Read less",
|
|
19882
19901
|
"ui.readMore": "Read more",
|
|
19883
19902
|
"wfs.feature.limit": "Too many features to display the WFS layer!",
|
|
@@ -20135,8 +20154,9 @@ var es = {
|
|
|
20135
20154
|
"editor.record.loadError.body": "",
|
|
20136
20155
|
"editor.record.loadError.closeMessage": "",
|
|
20137
20156
|
"editor.record.loadError.title": "",
|
|
20138
|
-
"editor.record.lock.
|
|
20139
|
-
"editor.record.lock.
|
|
20157
|
+
"editor.record.lock.harvested": "",
|
|
20158
|
+
"editor.record.lock.owner": "",
|
|
20159
|
+
"editor.record.lock.resourceType": "",
|
|
20140
20160
|
"editor.record.multilingual.confirmation.cancelText": "",
|
|
20141
20161
|
"editor.record.multilingual.confirmation.confirmText": "",
|
|
20142
20162
|
"editor.record.multilingual.confirmation.message": "",
|
|
@@ -20187,6 +20207,11 @@ var es = {
|
|
|
20187
20207
|
"facets.block.title.tag.default": "",
|
|
20188
20208
|
"facets.block.title.th_regions_tree.default": "",
|
|
20189
20209
|
"favorite.not.authenticated.tooltip": "",
|
|
20210
|
+
"feature.catalog.attribute.code": "Código",
|
|
20211
|
+
"feature.catalog.attribute.definition": "Descripción",
|
|
20212
|
+
"feature.catalog.attribute.name": "Nombre",
|
|
20213
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
20214
|
+
"feature.catalog.attribute.values": "Valores",
|
|
20190
20215
|
"input.file.dropFileLabel": "",
|
|
20191
20216
|
"input.file.orInputUrl": "",
|
|
20192
20217
|
"input.file.selectFileLabel": "",
|
|
@@ -20324,9 +20349,15 @@ var es = {
|
|
|
20324
20349
|
"record.metadata.download": "",
|
|
20325
20350
|
"record.metadata.feature.catalog": "",
|
|
20326
20351
|
"record.metadata.formats": "",
|
|
20352
|
+
"record.metadata.isGeographical": "",
|
|
20327
20353
|
"record.metadata.keywords": "",
|
|
20328
20354
|
"record.metadata.languages": "",
|
|
20329
20355
|
"record.metadata.lastUpdate": "",
|
|
20356
|
+
"record.metadata.linked.datasets": "",
|
|
20357
|
+
"record.metadata.linked.records": "",
|
|
20358
|
+
"record.metadata.linked.reuses": "",
|
|
20359
|
+
"record.metadata.linked.services": "",
|
|
20360
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
20330
20361
|
"record.metadata.links": "",
|
|
20331
20362
|
"record.metadata.noUsage": "",
|
|
20332
20363
|
"record.metadata.otherConstraints": "",
|
|
@@ -20354,7 +20385,6 @@ var es = {
|
|
|
20354
20385
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
20355
20386
|
"record.metadata.quality.updateFrequency.success": "",
|
|
20356
20387
|
"record.metadata.related": "",
|
|
20357
|
-
"record.metadata.related.contents": "",
|
|
20358
20388
|
"record.metadata.ressources.and.links": "Recursos y enlaces",
|
|
20359
20389
|
"record.metadata.sheet": "",
|
|
20360
20390
|
"record.metadata.status": "",
|
|
@@ -20366,7 +20396,6 @@ var es = {
|
|
|
20366
20396
|
"record.metadata.temporalExtent.untilDate": "",
|
|
20367
20397
|
"record.metadata.title": "",
|
|
20368
20398
|
"record.metadata.topics": "",
|
|
20369
|
-
"record.metadata.isGeographical": "",
|
|
20370
20399
|
"record.metadata.uniqueId": "",
|
|
20371
20400
|
"record.metadata.updateFrequency": "",
|
|
20372
20401
|
"record.metadata.updatedOn": "",
|
|
@@ -20486,7 +20515,6 @@ var es = {
|
|
|
20486
20515
|
"tooltip.html.copy": "",
|
|
20487
20516
|
"tooltip.id.copy": "",
|
|
20488
20517
|
"tooltip.url.copy": "",
|
|
20489
|
-
"tooltip.url.open": "",
|
|
20490
20518
|
"ui.readLess": "",
|
|
20491
20519
|
"ui.readMore": "",
|
|
20492
20520
|
"wfs.feature.limit": "",
|
|
@@ -20744,8 +20772,9 @@ var fr = {
|
|
|
20744
20772
|
"editor.record.loadError.body": "Le jeu de données n'a pas pu être chargé :",
|
|
20745
20773
|
"editor.record.loadError.closeMessage": "Compris",
|
|
20746
20774
|
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
20747
|
-
"editor.record.lock.
|
|
20748
|
-
"editor.record.lock.
|
|
20775
|
+
"editor.record.lock.harvested": "Les jeux de données moissonnés ne sont pas éditables",
|
|
20776
|
+
"editor.record.lock.owner": "Vous n'êtes pas éditeur d'un des groupes autorisés",
|
|
20777
|
+
"editor.record.lock.resourceType": "Les fiches d'un type autre que jeu de données ne sont pas éditables",
|
|
20749
20778
|
"editor.record.multilingual.confirmation.cancelText": "Garder le(s) language(s)",
|
|
20750
20779
|
"editor.record.multilingual.confirmation.confirmText": "Supprimer le(s) language(s)",
|
|
20751
20780
|
"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 +20825,11 @@ var fr = {
|
|
|
20796
20825
|
"facets.block.title.tag.default": "Tag",
|
|
20797
20826
|
"facets.block.title.th_regions_tree.default": "Régions",
|
|
20798
20827
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Connectez-vous</a> pour avoir accès à cette fonctionnalité</div>",
|
|
20828
|
+
"feature.catalog.attribute.code": "Code",
|
|
20829
|
+
"feature.catalog.attribute.definition": "Description",
|
|
20830
|
+
"feature.catalog.attribute.name": "Nom",
|
|
20831
|
+
"feature.catalog.attribute.type": "Type",
|
|
20832
|
+
"feature.catalog.attribute.values": "Valeurs",
|
|
20799
20833
|
"input.file.dropFileLabel": "ou glissez-le ici",
|
|
20800
20834
|
"input.file.orInputUrl": "ou créez un lien vers une ressource externe",
|
|
20801
20835
|
"input.file.selectFileLabel": "Sélectionnez un fichier ({sizeMB} Mo max.)",
|
|
@@ -20933,9 +20967,15 @@ var fr = {
|
|
|
20933
20967
|
"record.metadata.download": "Téléchargements",
|
|
20934
20968
|
"record.metadata.feature.catalog": "Catalogue d'attributs",
|
|
20935
20969
|
"record.metadata.formats": "Formats",
|
|
20970
|
+
"record.metadata.isGeographical": "Donnée géographique",
|
|
20936
20971
|
"record.metadata.keywords": "Mots-clés",
|
|
20937
20972
|
"record.metadata.languages": "Langues",
|
|
20938
20973
|
"record.metadata.lastUpdate": "Mis à jour le {date}",
|
|
20974
|
+
"record.metadata.linked.datasets": "Jeux de données associés",
|
|
20975
|
+
"record.metadata.linked.records": "Contenus associés",
|
|
20976
|
+
"record.metadata.linked.reuses": "Réutilisations associées",
|
|
20977
|
+
"record.metadata.linked.services": "Services associés",
|
|
20978
|
+
"record.metadata.linked.sourceDatasets": "Jeux de données sources",
|
|
20939
20979
|
"record.metadata.links": "Liens",
|
|
20940
20980
|
"record.metadata.noUsage": "Aucune condition d'utilisation spécifiée pour ces données",
|
|
20941
20981
|
"record.metadata.otherConstraints": "Limitations d'usage",
|
|
@@ -20962,8 +21002,7 @@ var fr = {
|
|
|
20962
21002
|
"record.metadata.quality.topic.success": "Le thème est renseigné",
|
|
20963
21003
|
"record.metadata.quality.updateFrequency.failed": "La fréquence de mise à jour n'est pas renseignée",
|
|
20964
21004
|
"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é",
|
|
21005
|
+
"record.metadata.related": "Explorez le catalogue",
|
|
20967
21006
|
"record.metadata.ressources.and.links": "Ressources et liens",
|
|
20968
21007
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
20969
21008
|
"record.metadata.status": "Statut",
|
|
@@ -20975,7 +21014,6 @@ var fr = {
|
|
|
20975
21014
|
"record.metadata.temporalExtent.untilDate": "Jusqu'au { end }",
|
|
20976
21015
|
"record.metadata.title": "Intitulé",
|
|
20977
21016
|
"record.metadata.topics": "Catégories",
|
|
20978
|
-
"record.metadata.isGeographical": "Donnée géographique",
|
|
20979
21017
|
"record.metadata.uniqueId": "Identificateur de ressource unique",
|
|
20980
21018
|
"record.metadata.updateFrequency": "Fréquence de mise à jour des données",
|
|
20981
21019
|
"record.metadata.updatedOn": "Modifié le",
|
|
@@ -21095,7 +21133,6 @@ var fr = {
|
|
|
21095
21133
|
"tooltip.html.copy": "Copier le HTML",
|
|
21096
21134
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
21097
21135
|
"tooltip.url.copy": "Copier l'URL",
|
|
21098
|
-
"tooltip.url.open": "Ouvrir l'URL",
|
|
21099
21136
|
"ui.readLess": "Réduire",
|
|
21100
21137
|
"ui.readMore": "Lire la suite",
|
|
21101
21138
|
"wfs.feature.limit": "Trop d'objets pour afficher la couche WFS !",
|
|
@@ -21353,8 +21390,9 @@ var it = {
|
|
|
21353
21390
|
"editor.record.loadError.body": "Impossibile caricare il dataset:",
|
|
21354
21391
|
"editor.record.loadError.closeMessage": "Capito",
|
|
21355
21392
|
"editor.record.loadError.title": "Errore durante il caricamento",
|
|
21356
|
-
"editor.record.lock.
|
|
21357
|
-
"editor.record.lock.
|
|
21393
|
+
"editor.record.lock.harvested": "",
|
|
21394
|
+
"editor.record.lock.owner": "Non è un editore di uno dei gruppi autorizzati",
|
|
21395
|
+
"editor.record.lock.resourceType": "I record con il formato 'servizio' o 'riutilizzo' non sono modificabili",
|
|
21358
21396
|
"editor.record.multilingual.confirmation.cancelText": "",
|
|
21359
21397
|
"editor.record.multilingual.confirmation.confirmText": "",
|
|
21360
21398
|
"editor.record.multilingual.confirmation.message": "",
|
|
@@ -21405,6 +21443,11 @@ var it = {
|
|
|
21405
21443
|
"facets.block.title.tag.default": "Tag",
|
|
21406
21444
|
"facets.block.title.th_regions_tree.default": "Regioni",
|
|
21407
21445
|
"favorite.not.authenticated.tooltip": "<div><a href=' {link} '>Login</a> per accedere a questa funzionalità</div>",
|
|
21446
|
+
"feature.catalog.attribute.code": "Codice",
|
|
21447
|
+
"feature.catalog.attribute.definition": "Descrizione",
|
|
21448
|
+
"feature.catalog.attribute.name": "Nome",
|
|
21449
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
21450
|
+
"feature.catalog.attribute.values": "Valori",
|
|
21408
21451
|
"input.file.dropFileLabel": "oppure trascinalo qui",
|
|
21409
21452
|
"input.file.orInputUrl": "o collegamento a una risorsa esterna",
|
|
21410
21453
|
"input.file.selectFileLabel": "Seleziona un file ({sizeMB} MB max.)",
|
|
@@ -21542,9 +21585,15 @@ var it = {
|
|
|
21542
21585
|
"record.metadata.download": "Download",
|
|
21543
21586
|
"record.metadata.feature.catalog": "Catalogo dei oggetti",
|
|
21544
21587
|
"record.metadata.formats": "Formati",
|
|
21588
|
+
"record.metadata.isGeographical": "Dati geografici",
|
|
21545
21589
|
"record.metadata.keywords": "Parole chiave",
|
|
21546
21590
|
"record.metadata.languages": "Lingue",
|
|
21547
21591
|
"record.metadata.lastUpdate": "Ultimo aggiornamento il {date}",
|
|
21592
|
+
"record.metadata.linked.datasets": "",
|
|
21593
|
+
"record.metadata.linked.records": "",
|
|
21594
|
+
"record.metadata.linked.reuses": "",
|
|
21595
|
+
"record.metadata.linked.services": "",
|
|
21596
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
21548
21597
|
"record.metadata.links": "Collegamenti",
|
|
21549
21598
|
"record.metadata.noUsage": "Nessuna condizione d'uso specificata per questi dati",
|
|
21550
21599
|
"record.metadata.otherConstraints": "Limitazioni di uso",
|
|
@@ -21572,7 +21621,6 @@ var it = {
|
|
|
21572
21621
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
21573
21622
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
21574
21623
|
"record.metadata.related": "Vedi anche",
|
|
21575
|
-
"record.metadata.related.contents": "Contenuti correlati",
|
|
21576
21624
|
"record.metadata.ressources.and.links": "Risorse e collegamenti",
|
|
21577
21625
|
"record.metadata.sheet": "Origine del metadata",
|
|
21578
21626
|
"record.metadata.status": "Stato",
|
|
@@ -21584,7 +21632,6 @@ var it = {
|
|
|
21584
21632
|
"record.metadata.temporalExtent.untilDate": "Fino a {end}",
|
|
21585
21633
|
"record.metadata.title": "Titolo",
|
|
21586
21634
|
"record.metadata.topics": "Categorie",
|
|
21587
|
-
"record.metadata.isGeographical": "Dati geografici",
|
|
21588
21635
|
"record.metadata.uniqueId": "Identificatore unico di risorsa",
|
|
21589
21636
|
"record.metadata.updateFrequency": "Frequenza di aggiornamento dei dati",
|
|
21590
21637
|
"record.metadata.updatedOn": "Modificato il",
|
|
@@ -21704,7 +21751,6 @@ var it = {
|
|
|
21704
21751
|
"tooltip.html.copy": "Copiare il HTML",
|
|
21705
21752
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
21706
21753
|
"tooltip.url.copy": "Copiare l'URL",
|
|
21707
|
-
"tooltip.url.open": "Aprire l'URL",
|
|
21708
21754
|
"ui.readLess": "Ridurre",
|
|
21709
21755
|
"ui.readMore": "Leggere di più",
|
|
21710
21756
|
"wfs.feature.limit": "Troppi oggetti per visualizzare il WFS layer!",
|
|
@@ -21962,8 +22008,9 @@ var nl = {
|
|
|
21962
22008
|
"editor.record.loadError.body": "",
|
|
21963
22009
|
"editor.record.loadError.closeMessage": "",
|
|
21964
22010
|
"editor.record.loadError.title": "",
|
|
21965
|
-
"editor.record.lock.
|
|
21966
|
-
"editor.record.lock.
|
|
22011
|
+
"editor.record.lock.harvested": "",
|
|
22012
|
+
"editor.record.lock.owner": "",
|
|
22013
|
+
"editor.record.lock.resourceType": "",
|
|
21967
22014
|
"editor.record.multilingual.confirmation.cancelText": "",
|
|
21968
22015
|
"editor.record.multilingual.confirmation.confirmText": "",
|
|
21969
22016
|
"editor.record.multilingual.confirmation.message": "",
|
|
@@ -22014,6 +22061,11 @@ var nl = {
|
|
|
22014
22061
|
"facets.block.title.tag.default": "",
|
|
22015
22062
|
"facets.block.title.th_regions_tree.default": "",
|
|
22016
22063
|
"favorite.not.authenticated.tooltip": "",
|
|
22064
|
+
"feature.catalog.attribute.code": "Code",
|
|
22065
|
+
"feature.catalog.attribute.definition": "Beschrijving",
|
|
22066
|
+
"feature.catalog.attribute.name": "Naam",
|
|
22067
|
+
"feature.catalog.attribute.type": "Type",
|
|
22068
|
+
"feature.catalog.attribute.values": "Waarden",
|
|
22017
22069
|
"input.file.dropFileLabel": "",
|
|
22018
22070
|
"input.file.orInputUrl": "",
|
|
22019
22071
|
"input.file.selectFileLabel": "",
|
|
@@ -22151,9 +22203,15 @@ var nl = {
|
|
|
22151
22203
|
"record.metadata.download": "",
|
|
22152
22204
|
"record.metadata.feature.catalog": "",
|
|
22153
22205
|
"record.metadata.formats": "",
|
|
22206
|
+
"record.metadata.isGeographical": "",
|
|
22154
22207
|
"record.metadata.keywords": "",
|
|
22155
22208
|
"record.metadata.languages": "",
|
|
22156
22209
|
"record.metadata.lastUpdate": "",
|
|
22210
|
+
"record.metadata.linked.datasets": "",
|
|
22211
|
+
"record.metadata.linked.records": "",
|
|
22212
|
+
"record.metadata.linked.reuses": "",
|
|
22213
|
+
"record.metadata.linked.services": "",
|
|
22214
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
22157
22215
|
"record.metadata.links": "",
|
|
22158
22216
|
"record.metadata.noUsage": "",
|
|
22159
22217
|
"record.metadata.otherConstraints": "",
|
|
@@ -22181,7 +22239,6 @@ var nl = {
|
|
|
22181
22239
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22182
22240
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22183
22241
|
"record.metadata.related": "",
|
|
22184
|
-
"record.metadata.related.contents": "",
|
|
22185
22242
|
"record.metadata.ressources.and.links": "Bronnen en links",
|
|
22186
22243
|
"record.metadata.sheet": "",
|
|
22187
22244
|
"record.metadata.status": "",
|
|
@@ -22193,7 +22250,6 @@ var nl = {
|
|
|
22193
22250
|
"record.metadata.temporalExtent.untilDate": "",
|
|
22194
22251
|
"record.metadata.title": "",
|
|
22195
22252
|
"record.metadata.topics": "",
|
|
22196
|
-
"record.metadata.isGeographical": "",
|
|
22197
22253
|
"record.metadata.uniqueId": "",
|
|
22198
22254
|
"record.metadata.updateFrequency": "",
|
|
22199
22255
|
"record.metadata.updatedOn": "",
|
|
@@ -22313,7 +22369,6 @@ var nl = {
|
|
|
22313
22369
|
"tooltip.html.copy": "",
|
|
22314
22370
|
"tooltip.id.copy": "",
|
|
22315
22371
|
"tooltip.url.copy": "",
|
|
22316
|
-
"tooltip.url.open": "",
|
|
22317
22372
|
"ui.readLess": "",
|
|
22318
22373
|
"ui.readMore": "",
|
|
22319
22374
|
"wfs.feature.limit": "",
|
|
@@ -22571,8 +22626,9 @@ var pt = {
|
|
|
22571
22626
|
"editor.record.loadError.body": "",
|
|
22572
22627
|
"editor.record.loadError.closeMessage": "",
|
|
22573
22628
|
"editor.record.loadError.title": "",
|
|
22574
|
-
"editor.record.lock.
|
|
22575
|
-
"editor.record.lock.
|
|
22629
|
+
"editor.record.lock.harvested": "",
|
|
22630
|
+
"editor.record.lock.owner": "",
|
|
22631
|
+
"editor.record.lock.resourceType": "",
|
|
22576
22632
|
"editor.record.multilingual.confirmation.cancelText": "",
|
|
22577
22633
|
"editor.record.multilingual.confirmation.confirmText": "",
|
|
22578
22634
|
"editor.record.multilingual.confirmation.message": "",
|
|
@@ -22623,6 +22679,11 @@ var pt = {
|
|
|
22623
22679
|
"facets.block.title.tag.default": "",
|
|
22624
22680
|
"facets.block.title.th_regions_tree.default": "",
|
|
22625
22681
|
"favorite.not.authenticated.tooltip": "",
|
|
22682
|
+
"feature.catalog.attribute.code": "Código",
|
|
22683
|
+
"feature.catalog.attribute.definition": "Descrição",
|
|
22684
|
+
"feature.catalog.attribute.name": "Nome",
|
|
22685
|
+
"feature.catalog.attribute.type": "Tipo",
|
|
22686
|
+
"feature.catalog.attribute.values": "Valores",
|
|
22626
22687
|
"input.file.dropFileLabel": "",
|
|
22627
22688
|
"input.file.orInputUrl": "",
|
|
22628
22689
|
"input.file.selectFileLabel": "",
|
|
@@ -22760,9 +22821,15 @@ var pt = {
|
|
|
22760
22821
|
"record.metadata.download": "",
|
|
22761
22822
|
"record.metadata.feature.catalog": "",
|
|
22762
22823
|
"record.metadata.formats": "",
|
|
22824
|
+
"record.metadata.isGeographical": "",
|
|
22763
22825
|
"record.metadata.keywords": "",
|
|
22764
22826
|
"record.metadata.languages": "",
|
|
22765
22827
|
"record.metadata.lastUpdate": "",
|
|
22828
|
+
"record.metadata.linked.datasets": "",
|
|
22829
|
+
"record.metadata.linked.records": "",
|
|
22830
|
+
"record.metadata.linked.reuses": "",
|
|
22831
|
+
"record.metadata.linked.services": "",
|
|
22832
|
+
"record.metadata.linked.sourceDatasets": "",
|
|
22766
22833
|
"record.metadata.links": "",
|
|
22767
22834
|
"record.metadata.noUsage": "",
|
|
22768
22835
|
"record.metadata.otherConstraints": "",
|
|
@@ -22790,7 +22857,6 @@ var pt = {
|
|
|
22790
22857
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
22791
22858
|
"record.metadata.quality.updateFrequency.success": "",
|
|
22792
22859
|
"record.metadata.related": "",
|
|
22793
|
-
"record.metadata.related.contents": "",
|
|
22794
22860
|
"record.metadata.ressources.and.links": "Recursos e links",
|
|
22795
22861
|
"record.metadata.sheet": "",
|
|
22796
22862
|
"record.metadata.status": "",
|
|
@@ -22802,7 +22868,6 @@ var pt = {
|
|
|
22802
22868
|
"record.metadata.temporalExtent.untilDate": "",
|
|
22803
22869
|
"record.metadata.title": "",
|
|
22804
22870
|
"record.metadata.topics": "",
|
|
22805
|
-
"record.metadata.isGeographical": "",
|
|
22806
22871
|
"record.metadata.uniqueId": "",
|
|
22807
22872
|
"record.metadata.updateFrequency": "",
|
|
22808
22873
|
"record.metadata.updatedOn": "",
|
|
@@ -22922,7 +22987,6 @@ var pt = {
|
|
|
22922
22987
|
"tooltip.html.copy": "",
|
|
22923
22988
|
"tooltip.id.copy": "",
|
|
22924
22989
|
"tooltip.url.copy": "",
|
|
22925
|
-
"tooltip.url.open": "",
|
|
22926
22990
|
"ui.readLess": "",
|
|
22927
22991
|
"ui.readMore": "",
|
|
22928
22992
|
"wfs.feature.limit": "",
|
|
@@ -23156,6 +23220,9 @@ class Gn4FieldMapper {
|
|
|
23156
23220
|
isPublishedToAll: (output, source) => this.addExtra({
|
|
23157
23221
|
isPublishedToAll: selectField(source, 'isPublishedToAll'),
|
|
23158
23222
|
}, output),
|
|
23223
|
+
isHarvested: (output, source) => this.addExtra({
|
|
23224
|
+
isHarvested: selectField(source, 'isHarvested') !== 'false',
|
|
23225
|
+
}, output),
|
|
23159
23226
|
edit: (output, source) => this.addExtra({
|
|
23160
23227
|
edit: selectField(source, 'edit'),
|
|
23161
23228
|
}, output),
|
|
@@ -23968,10 +24035,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
23968
24035
|
args: [METADATA_LANGUAGE]
|
|
23969
24036
|
}] }] });
|
|
23970
24037
|
|
|
24038
|
+
class Gn4SettingsService {
|
|
24039
|
+
constructor(siteApiService) {
|
|
24040
|
+
this.siteApiService = siteApiService;
|
|
24041
|
+
this.identicon$ = this.getSettingsSetValueByKey('system/users/identicon');
|
|
24042
|
+
this.allowEditHarvested$ = this.getSettingsSetValueByKey('system/harvester/enableEditing');
|
|
24043
|
+
}
|
|
24044
|
+
getSettingsSetValueByKey(key) {
|
|
24045
|
+
return this.siteApiService.getSettingsSet(null, [key]).pipe(map$1((v) => v[key]), shareReplay({ bufferSize: 1, refCount: true }));
|
|
24046
|
+
}
|
|
24047
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, deps: [{ token: SiteApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24048
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, providedIn: 'root' }); }
|
|
24049
|
+
}
|
|
24050
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4SettingsService, decorators: [{
|
|
24051
|
+
type: Injectable,
|
|
24052
|
+
args: [{
|
|
24053
|
+
providedIn: 'root',
|
|
24054
|
+
}]
|
|
24055
|
+
}], ctorParameters: () => [{ type: SiteApiService }] });
|
|
24056
|
+
|
|
23971
24057
|
const minPublicationApiVersion = '4.2.5';
|
|
23972
24058
|
const TEMPORARY_ID_PREFIX = 'TEMP-ID-';
|
|
23973
24059
|
class Gn4Repository {
|
|
23974
|
-
constructor(httpClient, gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi, platformService, gn4LanguagesApi) {
|
|
24060
|
+
constructor(httpClient, gn4SearchApi, gn4SearchHelper, gn4Mapper, gn4RecordsApi, platformService, gn4LanguagesApi, settingsService) {
|
|
23975
24061
|
this.httpClient = httpClient;
|
|
23976
24062
|
this.gn4SearchApi = gn4SearchApi;
|
|
23977
24063
|
this.gn4SearchHelper = gn4SearchHelper;
|
|
@@ -23979,6 +24065,7 @@ class Gn4Repository {
|
|
|
23979
24065
|
this.gn4RecordsApi = gn4RecordsApi;
|
|
23980
24066
|
this.platformService = platformService;
|
|
23981
24067
|
this.gn4LanguagesApi = gn4LanguagesApi;
|
|
24068
|
+
this.settingsService = settingsService;
|
|
23982
24069
|
this._draftsChanged = new Subject();
|
|
23983
24070
|
this.draftsChanged$ = this._draftsChanged.asObservable();
|
|
23984
24071
|
}
|
|
@@ -24016,12 +24103,21 @@ class Gn4Repository {
|
|
|
24016
24103
|
name: featureType.typeName || '',
|
|
24017
24104
|
definition: featureType.definition || '',
|
|
24018
24105
|
attributes: Array.isArray(featureType.attributeTable)
|
|
24019
|
-
? featureType.attributeTable.map((attr) =>
|
|
24020
|
-
|
|
24021
|
-
|
|
24022
|
-
|
|
24023
|
-
|
|
24024
|
-
|
|
24106
|
+
? featureType.attributeTable.map((attr) => {
|
|
24107
|
+
const values = attr.values
|
|
24108
|
+
?.filter((v) => v.code || v.label)
|
|
24109
|
+
.map((v) => ({
|
|
24110
|
+
code: v.code,
|
|
24111
|
+
label: v.label,
|
|
24112
|
+
}));
|
|
24113
|
+
return {
|
|
24114
|
+
name: attr.name,
|
|
24115
|
+
code: attr.code,
|
|
24116
|
+
definition: attr.definition,
|
|
24117
|
+
type: attr.type,
|
|
24118
|
+
...(values?.length > 0 ? { values } : {}),
|
|
24119
|
+
};
|
|
24120
|
+
})
|
|
24025
24121
|
: [],
|
|
24026
24122
|
})),
|
|
24027
24123
|
};
|
|
@@ -24084,11 +24180,29 @@ class Gn4Repository {
|
|
|
24084
24180
|
? this.getRecord(uniqueIdentifier).pipe(map$1((record) => record.extras['isPublishedToAll']))
|
|
24085
24181
|
: of(true);
|
|
24086
24182
|
}
|
|
24087
|
-
|
|
24088
|
-
return
|
|
24089
|
-
|
|
24183
|
+
canDuplicate(record) {
|
|
24184
|
+
return record.kind === 'dataset';
|
|
24185
|
+
}
|
|
24186
|
+
canDelete(record) {
|
|
24187
|
+
return this.settingsService.allowEditHarvested$.pipe(map$1((allowEditHarvested) => {
|
|
24188
|
+
return (record.extras['edit'] &&
|
|
24189
|
+
(!record.extras['isHarvested'] || allowEditHarvested));
|
|
24090
24190
|
}));
|
|
24091
24191
|
}
|
|
24192
|
+
canEdit(record, allowEditHarvested) {
|
|
24193
|
+
return (record.kind === 'dataset' &&
|
|
24194
|
+
record.extras['edit'] &&
|
|
24195
|
+
(!record.extras['isHarvested'] || allowEditHarvested));
|
|
24196
|
+
}
|
|
24197
|
+
canEditRecord(uniqueIdentifier) {
|
|
24198
|
+
return combineLatest([
|
|
24199
|
+
this.getRecord(uniqueIdentifier),
|
|
24200
|
+
this.settingsService.allowEditHarvested$,
|
|
24201
|
+
]).pipe(map$1(([record, allowEditHarvested]) => record ? this.canEdit(record, allowEditHarvested) : false));
|
|
24202
|
+
}
|
|
24203
|
+
canEditIndexedRecord(record) {
|
|
24204
|
+
return this.settingsService.allowEditHarvested$.pipe(map$1((allowEditHarvested) => this.canEdit(record, allowEditHarvested)));
|
|
24205
|
+
}
|
|
24092
24206
|
openRecordForEdition(uniqueIdentifier) {
|
|
24093
24207
|
const draft$ = of(this.getRecordFromLocalStorage(uniqueIdentifier));
|
|
24094
24208
|
const recordAsXml$ = this.getRecordAsXml(uniqueIdentifier);
|
|
@@ -24250,12 +24364,12 @@ class Gn4Repository {
|
|
|
24250
24364
|
removeRecordFromLocalStorage(recordId) {
|
|
24251
24365
|
window.localStorage.removeItem(this.getLocalStorageKeyForRecord(recordId));
|
|
24252
24366
|
}
|
|
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 }); }
|
|
24367
|
+
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
24368
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4Repository }); }
|
|
24255
24369
|
}
|
|
24256
24370
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: Gn4Repository, decorators: [{
|
|
24257
24371
|
type: Injectable
|
|
24258
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: SearchApiService }, { type: ElasticsearchService }, { type: Gn4Converter }, { type: RecordsApiService }, { type: PlatformServiceInterface }, { type: LanguagesApiService }] });
|
|
24372
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: SearchApiService }, { type: ElasticsearchService }, { type: Gn4Converter }, { type: RecordsApiService }, { type: PlatformServiceInterface }, { type: LanguagesApiService }, { type: Gn4SettingsService }] });
|
|
24259
24373
|
|
|
24260
24374
|
const IMAGE_URL$1 = '/geonetwork/images/harvesting/';
|
|
24261
24375
|
class OrganizationsFromMetadataService {
|
|
@@ -24534,24 +24648,6 @@ const ORGANIZATIONS_STRATEGY = new InjectionToken('organizations-strategy', {
|
|
|
24534
24648
|
factory: () => 'metadata',
|
|
24535
24649
|
});
|
|
24536
24650
|
|
|
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
24651
|
const DEFAULT_GN4_LOGIN_URL = `/geonetwork/srv/\${lang3}/catalog.signin?redirect=\${current_url}`;
|
|
24556
24652
|
const LOGIN_URL = new InjectionToken('loginUrl');
|
|
24557
24653
|
const DEFAULT_GN4_LOGOUT_URL = `/geonetwork/signout`;
|
|
@@ -25673,7 +25769,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
25673
25769
|
}] });
|
|
25674
25770
|
|
|
25675
25771
|
var name = "geonetwork-ui";
|
|
25676
|
-
var version = "2.6.0-dev.
|
|
25772
|
+
var version = "2.6.0-dev.6e0b3d33d";
|
|
25677
25773
|
var engines = {
|
|
25678
25774
|
node: ">=20"
|
|
25679
25775
|
};
|
|
@@ -25798,6 +25894,9 @@ class Gn4PlatformService {
|
|
|
25798
25894
|
throw new Error(`Gn4 API version is not compatible.\nMinimum: ${minApiVersion}\nYour version: ${version}`);
|
|
25799
25895
|
}
|
|
25800
25896
|
}), shareReplay(1));
|
|
25897
|
+
this.allowEditHarvestedMd$ = this.settings$.pipe(map$1((info) => {
|
|
25898
|
+
return info['system/harvester/enableEditing'];
|
|
25899
|
+
}), shareReplay(1));
|
|
25801
25900
|
/**
|
|
25802
25901
|
* A map of already loaded thesauri (groups of keywords); the key is a URI
|
|
25803
25902
|
* @private
|
|
@@ -25818,6 +25917,9 @@ class Gn4PlatformService {
|
|
|
25818
25917
|
getApiVersion() {
|
|
25819
25918
|
return this.apiVersion$;
|
|
25820
25919
|
}
|
|
25920
|
+
getAllowEditHarvestedMd() {
|
|
25921
|
+
return this.allowEditHarvestedMd$;
|
|
25922
|
+
}
|
|
25821
25923
|
getMe() {
|
|
25822
25924
|
return this.me$;
|
|
25823
25925
|
}
|
|
@@ -26250,422 +26352,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
26250
26352
|
type: Output
|
|
26251
26353
|
}] } });
|
|
26252
26354
|
|
|
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
26355
|
class ColorScaleComponent {
|
|
26670
26356
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ColorScaleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26671
26357
|
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 +28284,531 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28598
28284
|
type: Output
|
|
28599
28285
|
}] } });
|
|
28600
28286
|
|
|
28287
|
+
class CellPopinComponent {
|
|
28288
|
+
set activePopin(active) {
|
|
28289
|
+
this._activePopin = !!active;
|
|
28290
|
+
this.updateIntersectionObserver();
|
|
28291
|
+
}
|
|
28292
|
+
get activePopin() {
|
|
28293
|
+
return this._activePopin;
|
|
28294
|
+
}
|
|
28295
|
+
constructor(scrollDispatcher, cdr) {
|
|
28296
|
+
this.scrollDispatcher = scrollDispatcher;
|
|
28297
|
+
this.cdr = cdr;
|
|
28298
|
+
this.extraClass = '';
|
|
28299
|
+
this.isOpen = false;
|
|
28300
|
+
this.isVisible = true;
|
|
28301
|
+
this.overlayPositions = [
|
|
28302
|
+
{
|
|
28303
|
+
originX: 'end',
|
|
28304
|
+
originY: 'top',
|
|
28305
|
+
overlayX: 'end',
|
|
28306
|
+
overlayY: 'top',
|
|
28307
|
+
},
|
|
28308
|
+
{
|
|
28309
|
+
originX: 'start',
|
|
28310
|
+
originY: 'top',
|
|
28311
|
+
overlayX: 'start',
|
|
28312
|
+
overlayY: 'top',
|
|
28313
|
+
},
|
|
28314
|
+
];
|
|
28315
|
+
this.firstCheck = true;
|
|
28316
|
+
this._activePopin = true;
|
|
28317
|
+
}
|
|
28318
|
+
ngAfterViewInit() {
|
|
28319
|
+
if (!this.activePopin) {
|
|
28320
|
+
return;
|
|
28321
|
+
}
|
|
28322
|
+
if (this.cdkScrollContainer) {
|
|
28323
|
+
this.scrollDispatcher.register(this.cdkScrollContainer);
|
|
28324
|
+
}
|
|
28325
|
+
this.updateIntersectionObserver();
|
|
28326
|
+
}
|
|
28327
|
+
ngOnDestroy() {
|
|
28328
|
+
this.intersectionObserver?.disconnect();
|
|
28329
|
+
this.scrollDispatcher.deregister(this.cdkScrollContainer);
|
|
28330
|
+
}
|
|
28331
|
+
updateIntersectionObserver() {
|
|
28332
|
+
if (!this.scrollContainer || !this.anchorRef) {
|
|
28333
|
+
return;
|
|
28334
|
+
}
|
|
28335
|
+
if (this.intersectionObserver) {
|
|
28336
|
+
this.intersectionObserver?.disconnect();
|
|
28337
|
+
}
|
|
28338
|
+
this.intersectionObserver = new IntersectionObserver(([entry]) => {
|
|
28339
|
+
const visible = entry.intersectionRatio >= 1;
|
|
28340
|
+
// Ignore first visibility if first time opening it
|
|
28341
|
+
if (this.firstCheck && !visible) {
|
|
28342
|
+
this.firstCheck = false;
|
|
28343
|
+
return;
|
|
28344
|
+
}
|
|
28345
|
+
this.firstCheck = false;
|
|
28346
|
+
if (this.isVisible !== visible) {
|
|
28347
|
+
this.isVisible = visible;
|
|
28348
|
+
this.cdr.detectChanges();
|
|
28349
|
+
}
|
|
28350
|
+
}, {
|
|
28351
|
+
root: this.scrollContainer.nativeElement,
|
|
28352
|
+
threshold: 1.0,
|
|
28353
|
+
});
|
|
28354
|
+
this.intersectionObserver.observe(this.anchorRef.nativeElement);
|
|
28355
|
+
}
|
|
28356
|
+
openOverlay() {
|
|
28357
|
+
this.isOpen = true;
|
|
28358
|
+
}
|
|
28359
|
+
closeOverlay() {
|
|
28360
|
+
this.isOpen = false;
|
|
28361
|
+
}
|
|
28362
|
+
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 }); }
|
|
28363
|
+
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"] }] }); }
|
|
28364
|
+
}
|
|
28365
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CellPopinComponent, decorators: [{
|
|
28366
|
+
type: Component,
|
|
28367
|
+
args: [{ selector: 'gn-ui-cell-popin', standalone: true, imports: [
|
|
28368
|
+
CommonModule,
|
|
28369
|
+
MatButtonModule,
|
|
28370
|
+
OverlayModule,
|
|
28371
|
+
ButtonComponent,
|
|
28372
|
+
NgIconComponent,
|
|
28373
|
+
], 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" }]
|
|
28374
|
+
}], ctorParameters: () => [{ type: i1$8.ScrollDispatcher }, { type: i0.ChangeDetectorRef }], propDecorators: { extraClass: [{
|
|
28375
|
+
type: Input
|
|
28376
|
+
}], cdkScrollContainer: [{
|
|
28377
|
+
type: Input
|
|
28378
|
+
}], scrollContainer: [{
|
|
28379
|
+
type: Input
|
|
28380
|
+
}], anchorRef: [{
|
|
28381
|
+
type: ViewChild,
|
|
28382
|
+
args: ['anchorRef']
|
|
28383
|
+
}], activePopin: [{
|
|
28384
|
+
type: Input
|
|
28385
|
+
}] } });
|
|
28386
|
+
|
|
28387
|
+
class ExpandablePanelButtonComponent {
|
|
28388
|
+
constructor() {
|
|
28389
|
+
this.collapsed = true;
|
|
28390
|
+
}
|
|
28391
|
+
toggle() {
|
|
28392
|
+
this.collapsed = !this.collapsed;
|
|
28393
|
+
}
|
|
28394
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28395
|
+
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 }); }
|
|
28396
|
+
}
|
|
28397
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelButtonComponent, decorators: [{
|
|
28398
|
+
type: Component,
|
|
28399
|
+
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"] }]
|
|
28400
|
+
}], propDecorators: { titleTemplate: [{
|
|
28401
|
+
type: Input
|
|
28402
|
+
}], collapsed: [{
|
|
28403
|
+
type: Input
|
|
28404
|
+
}] } });
|
|
28405
|
+
|
|
28406
|
+
class ExpandablePanelComponent {
|
|
28407
|
+
constructor(changeDetector) {
|
|
28408
|
+
this.changeDetector = changeDetector;
|
|
28409
|
+
this.iconColor = '';
|
|
28410
|
+
this._collapsed = true;
|
|
28411
|
+
}
|
|
28412
|
+
ngAfterViewInit() {
|
|
28413
|
+
if (this.contentDiv) {
|
|
28414
|
+
this.contentObserver = new ResizeObserver(() => {
|
|
28415
|
+
this.changeDetector.detectChanges();
|
|
28416
|
+
});
|
|
28417
|
+
this.contentObserver.observe(this.contentDiv.nativeElement);
|
|
28418
|
+
}
|
|
28419
|
+
}
|
|
28420
|
+
set collapsed(value) {
|
|
28421
|
+
this._collapsed = value;
|
|
28422
|
+
}
|
|
28423
|
+
get collapsed() {
|
|
28424
|
+
return this._collapsed;
|
|
28425
|
+
}
|
|
28426
|
+
toggle() {
|
|
28427
|
+
this.collapsed = !this.collapsed;
|
|
28428
|
+
}
|
|
28429
|
+
ngOnDestroy() {
|
|
28430
|
+
if (this.contentObserver) {
|
|
28431
|
+
this.contentObserver.disconnect();
|
|
28432
|
+
}
|
|
28433
|
+
}
|
|
28434
|
+
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 }); }
|
|
28435
|
+
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 }); }
|
|
28436
|
+
}
|
|
28437
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExpandablePanelComponent, decorators: [{
|
|
28438
|
+
type: Component,
|
|
28439
|
+
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" }]
|
|
28440
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
28441
|
+
type: Input
|
|
28442
|
+
}], iconColor: [{
|
|
28443
|
+
type: Input
|
|
28444
|
+
}], titleTemplate: [{
|
|
28445
|
+
type: ContentChild,
|
|
28446
|
+
args: ['titleTemplate']
|
|
28447
|
+
}], contentDiv: [{
|
|
28448
|
+
type: ViewChild,
|
|
28449
|
+
args: ['contentDiv']
|
|
28450
|
+
}], collapsed: [{
|
|
28451
|
+
type: Input
|
|
28452
|
+
}] } });
|
|
28453
|
+
|
|
28454
|
+
class FormFieldWrapperComponent {
|
|
28455
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28456
|
+
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 }); }
|
|
28457
|
+
}
|
|
28458
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
28459
|
+
type: Component,
|
|
28460
|
+
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" }]
|
|
28461
|
+
}], propDecorators: { label: [{
|
|
28462
|
+
type: Input
|
|
28463
|
+
}], hint: [{
|
|
28464
|
+
type: Input
|
|
28465
|
+
}] } });
|
|
28466
|
+
|
|
28467
|
+
class MaxLinesComponent {
|
|
28468
|
+
constructor(cdr) {
|
|
28469
|
+
this.cdr = cdr;
|
|
28470
|
+
this.maxLines = 6;
|
|
28471
|
+
this.isExpanded = false;
|
|
28472
|
+
this.maxHeight = '';
|
|
28473
|
+
this.showToggleButton = false;
|
|
28474
|
+
}
|
|
28475
|
+
ngAfterViewInit() {
|
|
28476
|
+
this.calculateMaxHeight();
|
|
28477
|
+
this.observer = new ResizeObserver((mutations) => {
|
|
28478
|
+
mutations.forEach(() => {
|
|
28479
|
+
this.calculateMaxHeight();
|
|
28480
|
+
});
|
|
28481
|
+
});
|
|
28482
|
+
this.observer.observe(this.container.nativeElement.children[0]);
|
|
28483
|
+
}
|
|
28484
|
+
toggleDisplay() {
|
|
28485
|
+
this.isExpanded = !this.isExpanded;
|
|
28486
|
+
this.calculateMaxHeight();
|
|
28487
|
+
}
|
|
28488
|
+
calculateMaxHeight() {
|
|
28489
|
+
const containerElement = this.container.nativeElement;
|
|
28490
|
+
const contentElement = containerElement.children[0];
|
|
28491
|
+
const contentHeight = contentElement.getBoundingClientRect().height;
|
|
28492
|
+
if (contentHeight) {
|
|
28493
|
+
if (contentHeight > this.maxLines * this.getLineHeight(contentElement)) {
|
|
28494
|
+
this.showToggleButton = true;
|
|
28495
|
+
this.maxHeight = this.isExpanded
|
|
28496
|
+
? `${contentHeight}px`
|
|
28497
|
+
: `${this.maxLines * this.getLineHeight(contentElement)}px`;
|
|
28498
|
+
}
|
|
28499
|
+
else {
|
|
28500
|
+
this.showToggleButton = false;
|
|
28501
|
+
this.maxHeight = `${contentHeight}px`;
|
|
28502
|
+
}
|
|
28503
|
+
containerElement.setAttribute('style', `max-height: ${this.maxHeight}; overflow: hidden`);
|
|
28504
|
+
this.cdr.detectChanges();
|
|
28505
|
+
}
|
|
28506
|
+
}
|
|
28507
|
+
getLineHeight(element) {
|
|
28508
|
+
const computedStyle = window.getComputedStyle(element);
|
|
28509
|
+
const lineHeight = parseFloat(computedStyle.lineHeight);
|
|
28510
|
+
const fontSize = parseFloat(computedStyle.fontSize || '14');
|
|
28511
|
+
const result = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight; // Use a default if line height is not specified
|
|
28512
|
+
return result;
|
|
28513
|
+
}
|
|
28514
|
+
ngOnDestroy() {
|
|
28515
|
+
if (!this.observer)
|
|
28516
|
+
return;
|
|
28517
|
+
this.observer.unobserve(this.container.nativeElement.children[0]);
|
|
28518
|
+
}
|
|
28519
|
+
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 }); }
|
|
28520
|
+
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 }); }
|
|
28521
|
+
}
|
|
28522
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaxLinesComponent, decorators: [{
|
|
28523
|
+
type: Component,
|
|
28524
|
+
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" }]
|
|
28525
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { maxLines: [{
|
|
28526
|
+
type: Input
|
|
28527
|
+
}], container: [{
|
|
28528
|
+
type: ViewChild,
|
|
28529
|
+
args: ['container']
|
|
28530
|
+
}] } });
|
|
28531
|
+
|
|
28532
|
+
class InteractiveTableColumnComponent {
|
|
28533
|
+
constructor() {
|
|
28534
|
+
this.grow = false;
|
|
28535
|
+
this.sortable = false;
|
|
28536
|
+
this.activeSort = null;
|
|
28537
|
+
this.sortChange = new EventEmitter();
|
|
28538
|
+
}
|
|
28539
|
+
handleSortChange() {
|
|
28540
|
+
this.activeSort = this.activeSort === 'asc' ? 'desc' : 'asc';
|
|
28541
|
+
this.sortChange.emit(this.activeSort);
|
|
28542
|
+
}
|
|
28543
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28544
|
+
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 }); }
|
|
28545
|
+
}
|
|
28546
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableColumnComponent, decorators: [{
|
|
28547
|
+
type: Component,
|
|
28548
|
+
args: [{ selector: 'gn-ui-interactive-table-column', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span>empty</span>\n" }]
|
|
28549
|
+
}], propDecorators: { header: [{
|
|
28550
|
+
type: ContentChild,
|
|
28551
|
+
args: ['header']
|
|
28552
|
+
}], cell: [{
|
|
28553
|
+
type: ContentChild,
|
|
28554
|
+
args: ['cell']
|
|
28555
|
+
}], grow: [{
|
|
28556
|
+
type: Input
|
|
28557
|
+
}], width: [{
|
|
28558
|
+
type: Input
|
|
28559
|
+
}], sortable: [{
|
|
28560
|
+
type: Input
|
|
28561
|
+
}], activeSort: [{
|
|
28562
|
+
type: Input
|
|
28563
|
+
}], sortChange: [{
|
|
28564
|
+
type: Output
|
|
28565
|
+
}] } });
|
|
28566
|
+
|
|
28567
|
+
marker('editor.record.lock.resourceType');
|
|
28568
|
+
marker('editor.record.lock.harvested');
|
|
28569
|
+
marker('editor.record.lock.owner');
|
|
28570
|
+
class InteractiveTableComponent {
|
|
28571
|
+
constructor() {
|
|
28572
|
+
this.items = [];
|
|
28573
|
+
this.canEditItem = () => of(true);
|
|
28574
|
+
this.isDraftPage = false;
|
|
28575
|
+
this.itemClick = new EventEmitter();
|
|
28576
|
+
}
|
|
28577
|
+
get gridStyle() {
|
|
28578
|
+
return {
|
|
28579
|
+
'grid-template-columns': this.columns
|
|
28580
|
+
.map((column) => column.width
|
|
28581
|
+
? column.width
|
|
28582
|
+
: column.grow
|
|
28583
|
+
? `minmax(0px,1fr)`
|
|
28584
|
+
: `minmax(0px,max-content)`)
|
|
28585
|
+
.join(' '),
|
|
28586
|
+
};
|
|
28587
|
+
}
|
|
28588
|
+
getItemTitle(item) {
|
|
28589
|
+
if (!this.isDraftPage) {
|
|
28590
|
+
if (item.kind !== 'dataset') {
|
|
28591
|
+
return 'editor.record.lock.resourceType';
|
|
28592
|
+
}
|
|
28593
|
+
else if (item.extras?.isHarvested) {
|
|
28594
|
+
return 'editor.record.lock.harvested';
|
|
28595
|
+
}
|
|
28596
|
+
else if (!item.extras?.edit) {
|
|
28597
|
+
return 'editor.record.lock.owner';
|
|
28598
|
+
}
|
|
28599
|
+
}
|
|
28600
|
+
return '';
|
|
28601
|
+
}
|
|
28602
|
+
handleRowClick(item) {
|
|
28603
|
+
this.itemClick.emit(item);
|
|
28604
|
+
}
|
|
28605
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28606
|
+
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 }); }
|
|
28607
|
+
}
|
|
28608
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InteractiveTableComponent, decorators: [{
|
|
28609
|
+
type: Component,
|
|
28610
|
+
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"] }]
|
|
28611
|
+
}], propDecorators: { columns: [{
|
|
28612
|
+
type: ContentChildren,
|
|
28613
|
+
args: [InteractiveTableColumnComponent]
|
|
28614
|
+
}], items: [{
|
|
28615
|
+
type: Input
|
|
28616
|
+
}], canEditItem: [{
|
|
28617
|
+
type: Input
|
|
28618
|
+
}], isDraftPage: [{
|
|
28619
|
+
type: Input
|
|
28620
|
+
}], itemClick: [{
|
|
28621
|
+
type: Output
|
|
28622
|
+
}] } });
|
|
28623
|
+
|
|
28624
|
+
/**
|
|
28625
|
+
* This component will make a block that will stay sticky on the top of the page,
|
|
28626
|
+
* but will also shrink down to a minimum height when scrolling.
|
|
28627
|
+
* The ratio between minimum and nominal height is stored in the shrinkRatio
|
|
28628
|
+
* property, and can be used to change e.g. the opacity or size of child elements.
|
|
28629
|
+
* This component renders at z-index: 50 by default.
|
|
28630
|
+
* The first parent element with an overflow of `scroll` or `overflow` is considered
|
|
28631
|
+
* for scroll events.
|
|
28632
|
+
*/
|
|
28633
|
+
class StickyHeaderComponent {
|
|
28634
|
+
constructor(changeDetector, hostEl, zone) {
|
|
28635
|
+
this.changeDetector = changeDetector;
|
|
28636
|
+
this.hostEl = hostEl;
|
|
28637
|
+
this.zone = zone;
|
|
28638
|
+
}
|
|
28639
|
+
ngAfterViewInit() {
|
|
28640
|
+
this.scrollSub = fromEvent(window, 'scroll', {
|
|
28641
|
+
passive: true,
|
|
28642
|
+
})
|
|
28643
|
+
.pipe(throttleTime(0, animationFrameScheduler, {
|
|
28644
|
+
leading: true,
|
|
28645
|
+
trailing: true,
|
|
28646
|
+
}))
|
|
28647
|
+
.subscribe(this.updateSize.bind(this));
|
|
28648
|
+
}
|
|
28649
|
+
ngOnInit() {
|
|
28650
|
+
this.placeholderEl = document.createElement('div');
|
|
28651
|
+
this.placeholderEl.style.position = 'absolute';
|
|
28652
|
+
this.placeholderEl.classList.add('sticky-header-placeholder');
|
|
28653
|
+
this.hostEl.nativeElement.insertAdjacentElement('beforebegin', this.placeholderEl);
|
|
28654
|
+
}
|
|
28655
|
+
ngAfterViewChecked() {
|
|
28656
|
+
this.updateSize();
|
|
28657
|
+
}
|
|
28658
|
+
ngOnDestroy() {
|
|
28659
|
+
this.scrollSub.unsubscribe();
|
|
28660
|
+
this.placeholderEl.remove();
|
|
28661
|
+
}
|
|
28662
|
+
updateSize() {
|
|
28663
|
+
this.zone.runOutsideAngular(() => {
|
|
28664
|
+
if (window.scrollY === this.parentScroll)
|
|
28665
|
+
return;
|
|
28666
|
+
this.parentScroll = window.scrollY;
|
|
28667
|
+
const offsetTop = Math.max(0, this.parentScroll - this.placeholderEl.offsetTop);
|
|
28668
|
+
const newHeightPx = Math.max(this.minHeightPx, this.fullHeightPx - offsetTop);
|
|
28669
|
+
this.innerContainer.nativeElement.style.transform = `translate(0, ${newHeightPx - this.fullHeightPx}px)`;
|
|
28670
|
+
this.expandRatio =
|
|
28671
|
+
(newHeightPx - this.minHeightPx) /
|
|
28672
|
+
(this.fullHeightPx - this.minHeightPx);
|
|
28673
|
+
this.changeDetector.detectChanges();
|
|
28674
|
+
});
|
|
28675
|
+
}
|
|
28676
|
+
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 }); }
|
|
28677
|
+
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 }); }
|
|
28678
|
+
}
|
|
28679
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StickyHeaderComponent, decorators: [{
|
|
28680
|
+
type: Component,
|
|
28681
|
+
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" }]
|
|
28682
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef, decorators: [{
|
|
28683
|
+
type: Host
|
|
28684
|
+
}] }, { type: i0.NgZone }], propDecorators: { minHeightPx: [{
|
|
28685
|
+
type: Input
|
|
28686
|
+
}], fullHeightPx: [{
|
|
28687
|
+
type: Input
|
|
28688
|
+
}], template: [{
|
|
28689
|
+
type: ContentChild,
|
|
28690
|
+
args: [TemplateRef]
|
|
28691
|
+
}], outerContainer: [{
|
|
28692
|
+
type: ViewChild,
|
|
28693
|
+
args: ['outerContainer']
|
|
28694
|
+
}], innerContainer: [{
|
|
28695
|
+
type: ViewChild,
|
|
28696
|
+
args: ['innerContainer']
|
|
28697
|
+
}] } });
|
|
28698
|
+
|
|
28699
|
+
class BlockListComponent {
|
|
28700
|
+
get pages() {
|
|
28701
|
+
return new Array(this.pagesCount).fill(0).map((_, i) => i);
|
|
28702
|
+
}
|
|
28703
|
+
get isFirstPage() {
|
|
28704
|
+
return this.currentPage_ === 0;
|
|
28705
|
+
}
|
|
28706
|
+
get isLastPage() {
|
|
28707
|
+
return this.currentPage_ === this.pagesCount - 1;
|
|
28708
|
+
}
|
|
28709
|
+
get pagesCount() {
|
|
28710
|
+
return this.blocks ? Math.ceil(this.blocks.length / this.pageSize) : 1;
|
|
28711
|
+
}
|
|
28712
|
+
get currentPage() {
|
|
28713
|
+
return this.currentPage_ + 1;
|
|
28714
|
+
}
|
|
28715
|
+
constructor(changeDetector) {
|
|
28716
|
+
this.changeDetector = changeDetector;
|
|
28717
|
+
this.pageSize = 4;
|
|
28718
|
+
this.containerClass = '';
|
|
28719
|
+
this.paginationContainerClass = 'w-full bottom-0 top-auto';
|
|
28720
|
+
this.minHeight = 0;
|
|
28721
|
+
this.listChanges = new EventEmitter();
|
|
28722
|
+
this.subComponentSize = 'M';
|
|
28723
|
+
this.currentPage_ = 0;
|
|
28724
|
+
this.refreshBlocksVisibility = () => {
|
|
28725
|
+
this.blocks.forEach((block, index) => {
|
|
28726
|
+
block.nativeElement.style.display =
|
|
28727
|
+
index >= this.currentPage_ * this.pageSize &&
|
|
28728
|
+
index < (this.currentPage_ + 1) * this.pageSize
|
|
28729
|
+
? null
|
|
28730
|
+
: 'none';
|
|
28731
|
+
});
|
|
28732
|
+
};
|
|
28733
|
+
}
|
|
28734
|
+
ngAfterViewInit() {
|
|
28735
|
+
this.blocks.changes.subscribe(() => {
|
|
28736
|
+
this.updateSizes();
|
|
28737
|
+
this.refreshBlocksVisibility();
|
|
28738
|
+
this.goToPage(1);
|
|
28739
|
+
this.changeDetector.detectChanges();
|
|
28740
|
+
this.listChanges.emit(this);
|
|
28741
|
+
});
|
|
28742
|
+
this.updateSizes();
|
|
28743
|
+
this.refreshBlocksVisibility();
|
|
28744
|
+
// we store the first height as the min-height of the list container
|
|
28745
|
+
this.minHeight = this.blockContainer.nativeElement.clientHeight;
|
|
28746
|
+
this.changeDetector.detectChanges();
|
|
28747
|
+
this.listChanges.emit(this);
|
|
28748
|
+
}
|
|
28749
|
+
updateSizes() {
|
|
28750
|
+
this.subComponentSize = this.computeSubComponentSize();
|
|
28751
|
+
this.pageSize = this.computePageSize();
|
|
28752
|
+
}
|
|
28753
|
+
computeSubComponentSize() {
|
|
28754
|
+
if (!this.blocks)
|
|
28755
|
+
return 'M';
|
|
28756
|
+
const subComponentsCount = this.blocks.length;
|
|
28757
|
+
if (subComponentsCount <= 3)
|
|
28758
|
+
return 'L';
|
|
28759
|
+
if (subComponentsCount <= 12)
|
|
28760
|
+
return 'M';
|
|
28761
|
+
if (subComponentsCount <= 18)
|
|
28762
|
+
return 'S';
|
|
28763
|
+
return 'XS';
|
|
28764
|
+
}
|
|
28765
|
+
computePageSize() {
|
|
28766
|
+
switch (this.subComponentSize) {
|
|
28767
|
+
case 'L':
|
|
28768
|
+
return 3;
|
|
28769
|
+
case 'S':
|
|
28770
|
+
return 6;
|
|
28771
|
+
case 'XS':
|
|
28772
|
+
return 8;
|
|
28773
|
+
default:
|
|
28774
|
+
return 4;
|
|
28775
|
+
}
|
|
28776
|
+
}
|
|
28777
|
+
goToPage(pageIndex) {
|
|
28778
|
+
this.currentPage_ = Math.max(Math.min(pageIndex - 1, this.pagesCount - 1), 0);
|
|
28779
|
+
this.changeDetector.detectChanges();
|
|
28780
|
+
this.refreshBlocksVisibility();
|
|
28781
|
+
}
|
|
28782
|
+
goToPrevPage() {
|
|
28783
|
+
if (this.isFirstPage)
|
|
28784
|
+
return;
|
|
28785
|
+
this.goToPage(this.currentPage - 1);
|
|
28786
|
+
}
|
|
28787
|
+
goToNextPage() {
|
|
28788
|
+
if (this.isLastPage)
|
|
28789
|
+
return;
|
|
28790
|
+
this.goToPage(this.currentPage + 1);
|
|
28791
|
+
}
|
|
28792
|
+
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 }); }
|
|
28793
|
+
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 }); }
|
|
28794
|
+
}
|
|
28795
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BlockListComponent, decorators: [{
|
|
28796
|
+
type: Component,
|
|
28797
|
+
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"] }]
|
|
28798
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { containerClass: [{
|
|
28799
|
+
type: Input
|
|
28800
|
+
}], paginationContainerClass: [{
|
|
28801
|
+
type: Input
|
|
28802
|
+
}], blocks: [{
|
|
28803
|
+
type: ContentChildren,
|
|
28804
|
+
args: ['block', { read: ElementRef }]
|
|
28805
|
+
}], blockContainer: [{
|
|
28806
|
+
type: ViewChild,
|
|
28807
|
+
args: ['blockContainer']
|
|
28808
|
+
}], listChanges: [{
|
|
28809
|
+
type: Output
|
|
28810
|
+
}] } });
|
|
28811
|
+
|
|
28601
28812
|
class SortableListComponent {
|
|
28602
28813
|
constructor() {
|
|
28603
28814
|
this.itemsOrderChange = new EventEmitter();
|
|
@@ -28772,34 +28983,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28772
28983
|
}] });
|
|
28773
28984
|
|
|
28774
28985
|
class TruncatedTextComponent {
|
|
28775
|
-
constructor(cd, ngZone
|
|
28986
|
+
constructor(cd, ngZone) {
|
|
28776
28987
|
this.cd = cd;
|
|
28777
28988
|
this.ngZone = ngZone;
|
|
28778
|
-
this.viewportRuler = viewportRuler;
|
|
28779
28989
|
this.text = '';
|
|
28780
28990
|
this.extraClass = '';
|
|
28781
28991
|
this.isTextTruncated = false;
|
|
28782
|
-
this.isOpen = false;
|
|
28783
|
-
this.overlayPosition = {
|
|
28784
|
-
originX: 'end',
|
|
28785
|
-
originY: 'top',
|
|
28786
|
-
overlayX: 'end',
|
|
28787
|
-
overlayY: 'top',
|
|
28788
|
-
};
|
|
28789
28992
|
this.resizeObserver = new ResizeObserver(() => {
|
|
28790
28993
|
this.ngZone.run(() => this.checkTextTruncation());
|
|
28791
28994
|
});
|
|
28792
28995
|
this.mutationObserver = new MutationObserver(() => {
|
|
28793
28996
|
this.ngZone.run(() => {
|
|
28794
28997
|
this.checkTextTruncation();
|
|
28795
|
-
this.close();
|
|
28796
28998
|
});
|
|
28797
28999
|
});
|
|
28798
|
-
this.viewportSubscription = this.viewportRuler.change().subscribe(() => {
|
|
28799
|
-
if (this.isOpen) {
|
|
28800
|
-
this.updateOverlayPosition();
|
|
28801
|
-
}
|
|
28802
|
-
});
|
|
28803
29000
|
}
|
|
28804
29001
|
ngAfterViewInit() {
|
|
28805
29002
|
const element = this.textElement.nativeElement;
|
|
@@ -28814,39 +29011,14 @@ class TruncatedTextComponent {
|
|
|
28814
29011
|
ngOnDestroy() {
|
|
28815
29012
|
this.resizeObserver?.disconnect();
|
|
28816
29013
|
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
29014
|
}
|
|
28843
29015
|
checkTextTruncation() {
|
|
28844
29016
|
const element = this.textElement.nativeElement;
|
|
28845
29017
|
this.isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
28846
29018
|
this.cd.detectChanges();
|
|
28847
29019
|
}
|
|
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
|
|
29020
|
+
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 }); }
|
|
29021
|
+
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
29022
|
}
|
|
28851
29023
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TruncatedTextComponent, decorators: [{
|
|
28852
29024
|
type: Component,
|
|
@@ -28856,12 +29028,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
28856
29028
|
MatButtonModule,
|
|
28857
29029
|
OverlayModule,
|
|
28858
29030
|
ButtonComponent,
|
|
29031
|
+
CellPopinComponent,
|
|
28859
29032
|
NgIconComponent,
|
|
28860
|
-
], providers: [provideIcons({ iconoirExpand
|
|
28861
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }
|
|
29033
|
+
], 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" }]
|
|
29034
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }], propDecorators: { text: [{
|
|
28862
29035
|
type: Input
|
|
28863
29036
|
}], extraClass: [{
|
|
28864
29037
|
type: Input
|
|
29038
|
+
}], scrollContainer: [{
|
|
29039
|
+
type: Input
|
|
29040
|
+
}], cdkScrollContainer: [{
|
|
29041
|
+
type: Input
|
|
28865
29042
|
}], textElement: [{
|
|
28866
29043
|
type: ViewChild,
|
|
28867
29044
|
args: ['textElement']
|
|
@@ -29564,6 +29741,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29564
29741
|
type: Input
|
|
29565
29742
|
}] } });
|
|
29566
29743
|
|
|
29744
|
+
class InternalLinkCardContactComponent {
|
|
29745
|
+
constructor() {
|
|
29746
|
+
this.size = 'M';
|
|
29747
|
+
}
|
|
29748
|
+
get organization() {
|
|
29749
|
+
return this.record.ownerOrganization;
|
|
29750
|
+
}
|
|
29751
|
+
get contacts() {
|
|
29752
|
+
return ((this.record.kind === 'dataset'
|
|
29753
|
+
? this.record.contactsForResource
|
|
29754
|
+
: this.record.contacts) || []);
|
|
29755
|
+
}
|
|
29756
|
+
openExternalUrl(event, url) {
|
|
29757
|
+
event.stopPropagation();
|
|
29758
|
+
window.open(url, '_blank');
|
|
29759
|
+
}
|
|
29760
|
+
openMailto(event, email) {
|
|
29761
|
+
event.stopPropagation();
|
|
29762
|
+
window.open(`mailto:${email}`, '_blank');
|
|
29763
|
+
}
|
|
29764
|
+
copyToClipboard(event, text) {
|
|
29765
|
+
event.stopPropagation();
|
|
29766
|
+
navigator.clipboard.writeText(text);
|
|
29767
|
+
}
|
|
29768
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardContactComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29769
|
+
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: [
|
|
29770
|
+
provideIcons({
|
|
29771
|
+
iconoirInternet,
|
|
29772
|
+
matEmailOutline,
|
|
29773
|
+
matPhoneOutline,
|
|
29774
|
+
matLocationOnOutline,
|
|
29775
|
+
}),
|
|
29776
|
+
], 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"] }] }); }
|
|
29777
|
+
}
|
|
29778
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardContactComponent, decorators: [{
|
|
29779
|
+
type: Component,
|
|
29780
|
+
args: [{ selector: 'gn-ui-internal-link-card-contact', standalone: true, imports: [NgIf, ThumbnailComponent, NgIconComponent, TranslateModule], providers: [
|
|
29781
|
+
provideIcons({
|
|
29782
|
+
iconoirInternet,
|
|
29783
|
+
matEmailOutline,
|
|
29784
|
+
matPhoneOutline,
|
|
29785
|
+
matLocationOnOutline,
|
|
29786
|
+
}),
|
|
29787
|
+
], 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" }]
|
|
29788
|
+
}], propDecorators: { record: [{
|
|
29789
|
+
type: Input
|
|
29790
|
+
}], size: [{
|
|
29791
|
+
type: Input
|
|
29792
|
+
}] } });
|
|
29793
|
+
|
|
29567
29794
|
class InternalLinkCardComponent {
|
|
29568
29795
|
set size(value) {
|
|
29569
29796
|
this._size = value;
|
|
@@ -29605,28 +29832,19 @@ class InternalLinkCardComponent {
|
|
|
29605
29832
|
this.abstract = removeWhitespace(stripHtml(this.record?.abstract));
|
|
29606
29833
|
this.subscription.add(fromEvent(this.elementRef.nativeElement, 'click').subscribe(() => this.mdSelect.emit(this.record)));
|
|
29607
29834
|
}
|
|
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
29835
|
getTitleClass() {
|
|
29617
29836
|
return this.titleClassMap[this._size];
|
|
29618
29837
|
}
|
|
29619
|
-
|
|
29620
|
-
|
|
29621
|
-
|
|
29838
|
+
getAbstractClass() {
|
|
29839
|
+
const marginClass = ['S', 'XS'].includes(this.size) ? 'ml-2' : '';
|
|
29840
|
+
const clampClass = this.size === 'L' && !this.record.ownerOrganization?.name
|
|
29841
|
+
? 'line-clamp-6'
|
|
29842
|
+
: 'line-clamp-2';
|
|
29843
|
+
return `${clampClass} ${marginClass}`.trim();
|
|
29622
29844
|
}
|
|
29623
|
-
|
|
29624
|
-
|
|
29625
|
-
|
|
29626
|
-
}
|
|
29627
|
-
copyToClipboard(event, text) {
|
|
29628
|
-
event.stopPropagation();
|
|
29629
|
-
navigator.clipboard.writeText(text);
|
|
29845
|
+
displayAbstract() {
|
|
29846
|
+
return (this.size === 'L' ||
|
|
29847
|
+
(['M', 'S'].includes(this.size) && !this.record.ownerOrganization?.name));
|
|
29630
29848
|
}
|
|
29631
29849
|
get shouldShowThumbnail() {
|
|
29632
29850
|
return this.size === 'L' || this.size === 'M';
|
|
@@ -29636,40 +29854,34 @@ class InternalLinkCardComponent {
|
|
|
29636
29854
|
provideIcons({
|
|
29637
29855
|
iconoirInternet,
|
|
29638
29856
|
matLocationSearchingOutline,
|
|
29639
|
-
matEmailOutline,
|
|
29640
|
-
matPhoneOutline,
|
|
29641
|
-
matLocationOnOutline,
|
|
29642
29857
|
}),
|
|
29643
29858
|
provideNgIconsConfig({
|
|
29644
29859
|
size: '1.2em',
|
|
29645
29860
|
}),
|
|
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=\"
|
|
29861
|
+
], ngImport: i0, template: "<a [attr.href]=\"linkHref\" [target]=\"linkTarget\">\n <div\n class=\"group rounded-md bg-white hover:cursor-pointer hover:bg-slate-50 overflow-hidden w-full\"\n [ngClass]=\"cardClass\"\n >\n <div\n class=\"flex flex-row md:gap-0 justify-between w-full\"\n [ngClass]=\"{ 'flex-wrap md:flex-nowrap gap-3': size === 'L' }\"\n >\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"border mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grow flex flex-col gap-3\">\n <div class=\"flex items-center gap-2\">\n <div class=\"grow flex flex-wrap items-center gap-2\">\n <gn-ui-kind-badge\n [styling]=\"'default'\"\n [kind]=\"record?.kind\"\n ></gn-ui-kind-badge>\n <gn-ui-geo-data-badge\n [showLabel]=\"size === 'L'\"\n [styling]=\"'light'\"\n [record]=\"record\"\n ></gn-ui-geo-data-badge>\n <gn-ui-metadata-quality\n class=\"flex items-center\"\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div *ngIf=\"size !== 'XS'\" data-cy=\"recordFav\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n\n <div class=\"grow flex flex-col gap-2\">\n <div\n class=\"font-medium text-title group-hover:text-primary\"\n [title]=\"record.title\"\n >\n <h4\n class=\"mr-6 overflow-hidden\"\n [ngClass]=\"getTitleClass()\"\n data-cy=\"recordTitle\"\n [title]=\"record.title\"\n >\n {{ record.title }}\n </h4>\n </div>\n <div\n *ngIf=\"displayAbstract()\"\n class=\"mr-6 text-xs text-gray-900 overflow-hidden\"\n [ngClass]=\"getAbstractClass()\"\n data-cy=\"recordAbstract\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n </div>\n\n <gn-ui-internal-link-card-contact\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n [record]=\"record\"\n [size]=\"size\"\n ></gn-ui-internal-link-card-contact>\n </div>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MetadataQualityComponent, selector: "gn-ui-metadata-quality", inputs: ["metadata", "smaller", "metadataQualityDisplay"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: GeoDataBadgeComponent, selector: "gn-ui-geo-data-badge", inputs: ["showLabel", "styling", "record"] }, { kind: "component", type: KindBadgeComponent, selector: "gn-ui-kind-badge", inputs: ["styling", "contentTemplate", "kind"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent", "whitoutStyles"] }, { kind: "component", type: InternalLinkCardContactComponent, selector: "gn-ui-internal-link-card-contact", inputs: ["record", "size"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }] }); }
|
|
29647
29862
|
}
|
|
29648
29863
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalLinkCardComponent, decorators: [{
|
|
29649
29864
|
type: Component,
|
|
29650
29865
|
args: [{ selector: 'gn-ui-internal-link-card', standalone: true, imports: [
|
|
29651
29866
|
NgClass,
|
|
29652
29867
|
NgIf,
|
|
29653
|
-
ThumbnailComponent,
|
|
29654
29868
|
MetadataQualityComponent,
|
|
29655
29869
|
NgTemplateOutlet,
|
|
29656
|
-
NgIconComponent,
|
|
29657
29870
|
TranslateModule,
|
|
29658
29871
|
GeoDataBadgeComponent,
|
|
29659
29872
|
KindBadgeComponent,
|
|
29660
29873
|
MarkdownParserComponent,
|
|
29874
|
+
InternalLinkCardContactComponent,
|
|
29875
|
+
ThumbnailComponent,
|
|
29661
29876
|
], providers: [
|
|
29662
29877
|
provideIcons({
|
|
29663
29878
|
iconoirInternet,
|
|
29664
29879
|
matLocationSearchingOutline,
|
|
29665
|
-
matEmailOutline,
|
|
29666
|
-
matPhoneOutline,
|
|
29667
|
-
matLocationOnOutline,
|
|
29668
29880
|
}),
|
|
29669
29881
|
provideNgIconsConfig({
|
|
29670
29882
|
size: '1.2em',
|
|
29671
29883
|
}),
|
|
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=\"
|
|
29884
|
+
], template: "<a [attr.href]=\"linkHref\" [target]=\"linkTarget\">\n <div\n class=\"group rounded-md bg-white hover:cursor-pointer hover:bg-slate-50 overflow-hidden w-full\"\n [ngClass]=\"cardClass\"\n >\n <div\n class=\"flex flex-row md:gap-0 justify-between w-full\"\n [ngClass]=\"{ 'flex-wrap md:flex-nowrap gap-3': size === 'L' }\"\n >\n <div\n *ngIf=\"shouldShowThumbnail\"\n [ngClass]=\"thumbnailContainerClass\"\n class=\"border mr-4 flex flex-col\"\n >\n <gn-ui-thumbnail\n class=\"w-full h-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url?.toString() || ''\"\n [fit]=\"'cover'\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"grow flex flex-col gap-3\">\n <div class=\"flex items-center gap-2\">\n <div class=\"grow flex flex-wrap items-center gap-2\">\n <gn-ui-kind-badge\n [styling]=\"'default'\"\n [kind]=\"record?.kind\"\n ></gn-ui-kind-badge>\n <gn-ui-geo-data-badge\n [showLabel]=\"size === 'L'\"\n [styling]=\"'light'\"\n [record]=\"record\"\n ></gn-ui-geo-data-badge>\n <gn-ui-metadata-quality\n class=\"flex items-center\"\n [smaller]=\"true\"\n [metadata]=\"record\"\n [metadataQualityDisplay]=\"metadataQualityDisplay\"\n ></gn-ui-metadata-quality>\n </div>\n <div *ngIf=\"size !== 'XS'\" data-cy=\"recordFav\">\n <ng-container\n [ngTemplateOutlet]=\"favoriteTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: record }\"\n ></ng-container>\n </div>\n </div>\n\n <div class=\"grow flex flex-col gap-2\">\n <div\n class=\"font-medium text-title group-hover:text-primary\"\n [title]=\"record.title\"\n >\n <h4\n class=\"mr-6 overflow-hidden\"\n [ngClass]=\"getTitleClass()\"\n data-cy=\"recordTitle\"\n [title]=\"record.title\"\n >\n {{ record.title }}\n </h4>\n </div>\n <div\n *ngIf=\"displayAbstract()\"\n class=\"mr-6 text-xs text-gray-900 overflow-hidden\"\n [ngClass]=\"getAbstractClass()\"\n data-cy=\"recordAbstract\"\n >\n <gn-ui-markdown-parser\n [textContent]=\"abstract\"\n [whitoutStyles]=\"true\"\n ></gn-ui-markdown-parser>\n </div>\n </div>\n\n <gn-ui-internal-link-card-contact\n *ngIf=\"size !== 'XS' && record.ownerOrganization?.name\"\n [record]=\"record\"\n [size]=\"size\"\n ></gn-ui-internal-link-card-contact>\n </div>\n </div>\n </div>\n</a>\n" }]
|
|
29673
29885
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { record: [{
|
|
29674
29886
|
type: Input
|
|
29675
29887
|
}], linkTarget: [{
|
|
@@ -31682,7 +31894,8 @@ class UiElementsModule {
|
|
|
31682
31894
|
InternalLinkCardComponent,
|
|
31683
31895
|
ServiceCapabilitiesComponent,
|
|
31684
31896
|
KindBadgeComponent,
|
|
31685
|
-
GeoDataBadgeComponent
|
|
31897
|
+
GeoDataBadgeComponent,
|
|
31898
|
+
ScrollingModule], exports: [ThumbnailComponent,
|
|
31686
31899
|
AvatarComponent,
|
|
31687
31900
|
UserPreviewComponent,
|
|
31688
31901
|
MarkdownParserComponent,
|
|
@@ -31715,7 +31928,8 @@ class UiElementsModule {
|
|
|
31715
31928
|
InternalLinkCardComponent,
|
|
31716
31929
|
ServiceCapabilitiesComponent,
|
|
31717
31930
|
KindBadgeComponent,
|
|
31718
|
-
GeoDataBadgeComponent
|
|
31931
|
+
GeoDataBadgeComponent,
|
|
31932
|
+
ScrollingModule] }); }
|
|
31719
31933
|
}
|
|
31720
31934
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UiElementsModule, decorators: [{
|
|
31721
31935
|
type: NgModule,
|
|
@@ -31744,6 +31958,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31744
31958
|
ServiceCapabilitiesComponent,
|
|
31745
31959
|
KindBadgeComponent,
|
|
31746
31960
|
GeoDataBadgeComponent,
|
|
31961
|
+
ScrollingModule,
|
|
31747
31962
|
],
|
|
31748
31963
|
providers: [
|
|
31749
31964
|
provideNgIconsConfig({
|
|
@@ -31833,48 +32048,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31833
32048
|
type: Output
|
|
31834
32049
|
}] } });
|
|
31835
32050
|
|
|
32051
|
+
marker('feature.catalog.attribute.type');
|
|
32052
|
+
marker('feature.catalog.attribute.name');
|
|
32053
|
+
marker('feature.catalog.attribute.code');
|
|
32054
|
+
marker('feature.catalog.attribute.definition');
|
|
32055
|
+
marker('feature.catalog.attribute.values');
|
|
31836
32056
|
class FeatureCatalogListComponent {
|
|
31837
32057
|
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
|
-
},
|
|
32058
|
+
this.COLUMNS_DEFAULT = [
|
|
32059
|
+
{ key: 'type', width: '17%' },
|
|
32060
|
+
{ key: 'name', width: '32%' },
|
|
32061
|
+
{ key: 'code', width: '17%' },
|
|
32062
|
+
{ key: 'definition', width: 'minmax(0px, 1fr)' },
|
|
31859
32063
|
];
|
|
31860
|
-
this.
|
|
32064
|
+
this.COLUMN_VALUES = {
|
|
32065
|
+
key: 'values',
|
|
32066
|
+
width: '73px',
|
|
32067
|
+
class: 'text-center',
|
|
32068
|
+
};
|
|
31861
32069
|
}
|
|
31862
|
-
|
|
31863
|
-
|
|
32070
|
+
getColumnsDefinition(attrs) {
|
|
32071
|
+
const hasValues = attrs.some((a) => a.values?.length > 0);
|
|
32072
|
+
return [...this.COLUMNS_DEFAULT, ...(hasValues ? [this.COLUMN_VALUES] : [])];
|
|
32073
|
+
}
|
|
32074
|
+
getGridTemplateColumns(attributes) {
|
|
32075
|
+
return this.getColumnsDefinition(attributes)
|
|
32076
|
+
.map((col) => col.width)
|
|
32077
|
+
.join(' ');
|
|
32078
|
+
}
|
|
32079
|
+
trackByColumn(_i, col) {
|
|
32080
|
+
return col.key;
|
|
31864
32081
|
}
|
|
31865
32082
|
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
|
|
32083
|
+
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
32084
|
}
|
|
31868
32085
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureCatalogListComponent, decorators: [{
|
|
31869
32086
|
type: Component,
|
|
31870
32087
|
args: [{ selector: 'gn-ui-feature-catalog-list', standalone: true, imports: [
|
|
32088
|
+
ButtonComponent,
|
|
32089
|
+
CellPopinComponent,
|
|
31871
32090
|
CommonModule,
|
|
31872
32091
|
TranslateModule,
|
|
31873
32092
|
ExpandablePanelComponent,
|
|
31874
32093
|
TruncatedTextComponent,
|
|
31875
|
-
|
|
32094
|
+
NgIconComponent,
|
|
32095
|
+
ScrollingModule,
|
|
32096
|
+
], 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
32097
|
}], propDecorators: { filteredFeatureCatalog: [{
|
|
31877
32098
|
type: Input
|
|
32099
|
+
}], scrollContainer: [{
|
|
32100
|
+
type: ViewChild,
|
|
32101
|
+
args: ['scrollContainer']
|
|
32102
|
+
}], scrollable: [{
|
|
32103
|
+
type: ViewChild,
|
|
32104
|
+
args: [CdkScrollable, { static: true }]
|
|
32105
|
+
}], panelComponent: [{
|
|
32106
|
+
type: ViewChild,
|
|
32107
|
+
args: ['expanel', { read: ExpandablePanelComponent, static: true }]
|
|
31878
32108
|
}] } });
|
|
31879
32109
|
|
|
31880
32110
|
class ActionMenuComponent {
|
|
@@ -31909,7 +32139,7 @@ class ActionMenuComponent {
|
|
|
31909
32139
|
this.cdr.markForCheck();
|
|
31910
32140
|
}
|
|
31911
32141
|
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=\"
|
|
32142
|
+
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
32143
|
}
|
|
31914
32144
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionMenuComponent, decorators: [{
|
|
31915
32145
|
type: Component,
|
|
@@ -31920,9 +32150,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
31920
32150
|
MatDialogModule,
|
|
31921
32151
|
ConfirmationDialogComponent,
|
|
31922
32152
|
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=\"
|
|
32153
|
+
], 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
32154
|
}], ctorParameters: () => [{ type: i1$a.MatDialog }, { type: i0.ChangeDetectorRef }], propDecorators: { canDuplicate: [{
|
|
31925
32155
|
type: Input
|
|
32156
|
+
}], isDuplicating: [{
|
|
32157
|
+
type: Input
|
|
31926
32158
|
}], canDelete: [{
|
|
31927
32159
|
type: Input
|
|
31928
32160
|
}], page: [{
|
|
@@ -32089,7 +32321,8 @@ class ResultsTableComponent {
|
|
|
32089
32321
|
this.sortOrder = null;
|
|
32090
32322
|
this.hasDraft = () => false;
|
|
32091
32323
|
this.canDuplicate = () => true;
|
|
32092
|
-
this.canDelete = () => true;
|
|
32324
|
+
this.canDelete = () => of(true);
|
|
32325
|
+
this.canEdit = () => of(true);
|
|
32093
32326
|
this.isDraftPage = false;
|
|
32094
32327
|
this.isDuplicating = false;
|
|
32095
32328
|
// emits the column (field) as well as the order
|
|
@@ -32166,9 +32399,13 @@ class ResultsTableComponent {
|
|
|
32166
32399
|
return getBadgeColor(format);
|
|
32167
32400
|
}
|
|
32168
32401
|
handleRecordClick(item) {
|
|
32169
|
-
|
|
32170
|
-
|
|
32171
|
-
|
|
32402
|
+
this.canEdit(item)
|
|
32403
|
+
.pipe(take$1(1))
|
|
32404
|
+
.subscribe((canEdit) => {
|
|
32405
|
+
if (canEdit) {
|
|
32406
|
+
this.recordClick.emit(item);
|
|
32407
|
+
}
|
|
32408
|
+
});
|
|
32172
32409
|
}
|
|
32173
32410
|
handleDuplicate(item) {
|
|
32174
32411
|
this.duplicateRecord.emit(item);
|
|
@@ -32213,9 +32450,9 @@ class ResultsTableComponent {
|
|
|
32213
32450
|
});
|
|
32214
32451
|
}
|
|
32215
32452
|
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: [
|
|
32453
|
+
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
32454
|
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=\"(
|
|
32455
|
+
], 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
32456
|
}
|
|
32220
32457
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
32221
32458
|
type: Component,
|
|
@@ -32231,7 +32468,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32231
32468
|
CdkOverlayOrigin,
|
|
32232
32469
|
], providers: [
|
|
32233
32470
|
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=\"(
|
|
32471
|
+
], 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
32472
|
}], ctorParameters: () => [{ type: i1$8.Overlay }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: DateService }, { type: i1$1.TranslateService }], propDecorators: { records: [{
|
|
32236
32473
|
type: Input
|
|
32237
32474
|
}], selectedRecordsIdentifiers: [{
|
|
@@ -32244,6 +32481,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32244
32481
|
type: Input
|
|
32245
32482
|
}], canDelete: [{
|
|
32246
32483
|
type: Input
|
|
32484
|
+
}], canEdit: [{
|
|
32485
|
+
type: Input
|
|
32247
32486
|
}], isDraftPage: [{
|
|
32248
32487
|
type: Input
|
|
32249
32488
|
}], isDuplicating: [{
|
|
@@ -34575,14 +34814,21 @@ class ResultsTableContainerComponent {
|
|
|
34575
34814
|
this.recordsRepository = recordsRepository;
|
|
34576
34815
|
this.notificationsService = notificationsService;
|
|
34577
34816
|
this.translateService = translateService;
|
|
34578
|
-
this.canDuplicate = () => true;
|
|
34579
|
-
this.canDelete = () => true;
|
|
34580
34817
|
this.recordClick = new EventEmitter();
|
|
34581
34818
|
this.duplicateRecord = new EventEmitter();
|
|
34582
34819
|
this.subscription = new Subscription();
|
|
34583
34820
|
this.selectedRecords$ = this.selectionService.selectedRecordsIdentifiers$;
|
|
34584
34821
|
this.sortBy$ = this.searchFacade.sortBy$;
|
|
34585
34822
|
this.hasDraft = (record) => this.recordsRepository.recordHasDraft(record.uniqueIdentifier);
|
|
34823
|
+
this.canDuplicate = (record) => {
|
|
34824
|
+
return this.recordsRepository.canDuplicate(record);
|
|
34825
|
+
};
|
|
34826
|
+
this.canDelete = (record) => {
|
|
34827
|
+
return this.recordsRepository.canDelete(record);
|
|
34828
|
+
};
|
|
34829
|
+
this.canEdit = (record) => {
|
|
34830
|
+
return this.recordsRepository.canEditIndexedRecord(record);
|
|
34831
|
+
};
|
|
34586
34832
|
}
|
|
34587
34833
|
handleRecordClick(item) {
|
|
34588
34834
|
this.recordClick.emit(item);
|
|
@@ -34627,16 +34873,12 @@ class ResultsTableContainerComponent {
|
|
|
34627
34873
|
this.subscription.unsubscribe();
|
|
34628
34874
|
}
|
|
34629
34875
|
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: {
|
|
34876
|
+
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
34877
|
}
|
|
34632
34878
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResultsTableContainerComponent, decorators: [{
|
|
34633
34879
|
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: [{
|
|
34880
|
+
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" }]
|
|
34881
|
+
}], ctorParameters: () => [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }, { type: RecordsRepositoryInterface }, { type: NotificationsService }, { type: i1$1.TranslateService }], propDecorators: { isDuplicating: [{
|
|
34640
34882
|
type: Input
|
|
34641
34883
|
}], recordClick: [{
|
|
34642
34884
|
type: Output
|
|
@@ -38136,7 +38378,7 @@ class DataTableComponent {
|
|
|
38136
38378
|
}
|
|
38137
38379
|
}
|
|
38138
38380
|
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$
|
|
38381
|
+
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
38382
|
}
|
|
38141
38383
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableComponent, decorators: [{
|
|
38142
38384
|
type: Component,
|
|
@@ -43177,6 +43419,7 @@ class MultilingualPanelComponent {
|
|
|
43177
43419
|
this.formLanguage = lang;
|
|
43178
43420
|
this.facade.updateRecordField('defaultLanguage', lang);
|
|
43179
43421
|
this.facade.updateRecordField('otherLanguages', this.selectedLanguages.filter((lang) => lang !== this.formLanguage));
|
|
43422
|
+
this.closeActionMenu();
|
|
43180
43423
|
}
|
|
43181
43424
|
confirmDeleteAction(lang) {
|
|
43182
43425
|
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
@@ -43277,7 +43520,7 @@ class MultilingualPanelComponent {
|
|
|
43277
43520
|
provideNgIconsConfig({
|
|
43278
43521
|
size: '1.25em',
|
|
43279
43522
|
}),
|
|
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(
|
|
43523
|
+
], 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
43524
|
}
|
|
43282
43525
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MultilingualPanelComponent, decorators: [{
|
|
43283
43526
|
type: Component,
|
|
@@ -43298,7 +43541,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43298
43541
|
provideNgIconsConfig({
|
|
43299
43542
|
size: '1.25em',
|
|
43300
43543
|
}),
|
|
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(
|
|
43544
|
+
], 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
43545
|
}], 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
43546
|
type: Input
|
|
43304
43547
|
}], actionMenuButtons: [{
|
|
@@ -43707,7 +43950,7 @@ class DefaultRouterModule {
|
|
|
43707
43950
|
};
|
|
43708
43951
|
}
|
|
43709
43952
|
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$
|
|
43953
|
+
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
43954
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
43712
43955
|
RouterFacade,
|
|
43713
43956
|
{
|
|
@@ -43750,5 +43993,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
43750
43993
|
* Generated bundle index. Do not edit.
|
|
43751
43994
|
*/
|
|
43752
43995
|
|
|
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 };
|
|
43996
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AbstractSearchField, ActionMenuComponent, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, ApplicationBannerComponent, AuthService, AutocompleteComponent, AvailableServicesField, AvatarComponent, AvatarServiceInterface, BASEMAP_LAYERS, BadgeComponent, BaseConverter, BaseFileReader, BaseReader, BlockListComponent, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CarouselComponent, CatalogTitleComponent, CellPopinComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ClearError, ClearResults, ColorScaleComponent, ConfirmationDialogComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_GN4_LOGIN_URL, DEFAULT_GN4_LOGOUT_URL, DEFAULT_GN4_SETTINGS_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DO_NOT_USE_DEFAULT_BASEMAP, DataService, DataTableComponent, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangeDropdownComponent, DateRangePickerComponent, DateRangeSearchField, DateService, DcatApConverter, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EXTERNAL_VIEWER_OPEN_NEW_TAB, EXTERNAL_VIEWER_URL_TEMPLATE, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorComponent, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FILTER_SUMMARY_IGNORE_LIST, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogListComponent, FeatureCatalogModule, FeatureDetailComponent, FeatureEditorModule, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileInputComponent, FileTranslateLoader, FilesDropDirective, FilterDropdownComponent, FormFieldArrayComponent, FormFieldComponent, FormFieldDateComponent, FormFieldFileComponent, FormFieldKeywordsComponent, FormFieldLicenseComponent, FormFieldObjectComponent, FormFieldRichComponent, FormFieldSimpleComponent, FormFieldSpatialExtentComponent, FormFieldTemporalExtentsComponent, FormFieldWrapperComponent, FullTextSearchField, FuzzySearchComponent, GEONETWORK_UI_TAG_NAME, GEONETWORK_UI_VERSION, GeoDataBadgeComponent, GeoTableViewComponent, GeocodingComponent, GeojsonReader, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GpfApiDlComponent, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageInputComponent, ImageOverlayPreviewComponent, ImportRecordComponent, InlineFilterComponent, InteractiveTableColumnComponent, InteractiveTableComponent, InternalLinkCardComponent, IsSpatialSearchField, Iso191153Converter, Iso19139Converter, KindBadgeComponent, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LOGOUT_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LicenseSearchField, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_FEATURE_KEY, MAP_VIEW_CONSTRAINTS, METADATA_LANGUAGE, MY_FORMATS, MapContainerComponent, MapFacade, MapLegendComponent, MapStateContainerComponent, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataMapperContext, MetadataQualityComponent, MetadataQualityItemComponent, ModalDialogComponent, MultilingualPanelComponent, MultilingualSearchField, MyOrgService, NAMESPACES, NOT_APPLICABLE_CONSTRAINT, NOT_KNOWN_CONSTRAINT, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_PAGE_URL_TOKEN, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationSearchField, OrganizationsFromGroupsService, OrganizationsFromMetadataService, OwnerSearchField, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PaginationDotsComponent, PatchResultsAggregations, PopoverComponent, PopupAlertComponent, PossibleResourceTypes, PossibleResourceTypesDefinition, PreviousNextButtonsComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_DATASET_URL_TOKEN, RECORD_REUSE_URL_TOKEN, RECORD_SERVICE_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_ORGANIZATION, ROUTER_ROUTE_REUSE, ROUTER_ROUTE_SEARCH, ROUTER_ROUTE_SERVICE, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordKindField, RecordMetaComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResourceTypeLegacyField, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsHitsSearchKindComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, ResultsTableContainerComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SETTINGS_URL, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SUPPORTED_LANGUAGES, SearchEffects, SearchFacade, SearchFeatureCatalogComponent, SearchFiltersSummaryComponent, SearchFiltersSummaryItemComponent, SearchInputComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, ServiceCapabilitiesComponent, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SimpleSearchField, SiteTitleComponent, SortByComponent, SortableListComponent, SourceLabelComponent, SourcesService, SpatialExtentComponent, SpinningLoaderComponent, StarToggleComponent, StickyHeaderComponent, SupportedTypes, SwitchToggleComponent, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, TranslatedSearchField, TruncatedTextComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UrlInputComponent, UserFeedbackItemComponent, UserPreviewComponent, UserSearchField, UtilI18nModule, UtilSharedModule, VECTOR_STYLE_DEFAULT, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, XmlParseError, _reset, allChildrenElement, appConfigWithTranslationFixture, appendChildTree, appendChildren, assertValidXml, blockModelFixture, bytesToMegabytes, canEditRecord, checkFileFormat, clearSelectedFeatures, createChild, createDocument, createElement, createFuzzyFilter, createNestedChild, createNestedElement, currentPage, defaultMapStyleFixture, defaultMapStyleHlFixture, downgradeImage, downsizeImage, draftSaveSuccess, dragPanCondition, dropEmptyTranslations, editorReducer, emptyBlockModelFixture, findChildElement, findChildOrCreate, findChildrenElement, findConverterForDocument, findNestedChildOrCreate, findNestedElement, findNestedElements, findParent, firstChildElement, formatDate, formatUserInfo, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLayers, getLinkLabel, getLinkPriority, getMapContext, getMapContextLayerFromConfig, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getNamespace, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getResourceType, getReuseType, getRootElement, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSelectedFeatures, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, hasRecordChangedSinceDraft, hasRecordChangedSinceDraftSuccess, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isDateRange, isFormatInQueryParam, isPublished, itemModelFixture, kindToCodeListValue, loadAppConfig, malformedConfigFixture, mapConfigFixture, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, matchesNoApplicableConstraint, matchesNoKnownConstraint, megabytesToBytes, mimeTypeToFormat, minimalAppConfigFixture, missingMandatoryConfigFixture, mouseWheelZoomCondition, noDuplicateFileName, okAppConfigFixture, openDataset, openRecord, parse, parseXmlString, placeholder, prioritizePageScroll, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readAttribute, readDataset, readDatasetHeaders, readText, reducer$2 as reducer, reducerSearch, removeAllChildren, removeChildren, removeChildrenByName, removeSearchParams, removeWhitespace, renameElements, saveRecord, saveRecordFailure, saveRecordSuccess, selectCanEditRecord, selectCurrentPage, selectEditorConfig, selectEditorState, selectFallback, selectFallbackFields, selectField, selectHasRecordChanged, selectIsPublished, selectRecord, selectRecordChangedSinceSave, selectRecordSaveError, selectRecordSaving, selectRecordSections, selectRecordSource, selectTranslatedField, selectTranslatedValue, setContext, setCurrentPage, setFieldVisibility, setSelectedFeatures, setTextContent, someHabTableItemFixture, sortByFromString, sortByToString, sortByToStrings, stripHtml, stripNamespace, tableItemsFixture, toDate, totalPages, undoRecordDraft, unrecognizedKeysConfigFixture, updateRecordField, wmsLayerFlatten, writeAttribute, wrongLanguageCodeConfigFixture, xmlToString };
|
|
43754
43997
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|