geonetwork-ui 2.3.0-dev.b46332e6 → 2.3.0-dev.bc5d77f0
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/index.mjs +2 -1
- package/esm2022/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.mjs +3 -3
- package/esm2022/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.mjs +1 -1
- package/esm2022/libs/api/repository/src/lib/gn4/auth/gravatar.service.mjs +12 -1
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.mjs +36 -3
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +19 -7
- package/esm2022/libs/common/domain/src/lib/model/record/index.mjs +2 -1
- package/esm2022/libs/common/domain/src/lib/model/record/user-feedbacks.model.mjs +2 -0
- package/esm2022/libs/common/domain/src/lib/model/user/index.mjs +2 -0
- package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.facade.mjs +6 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +64 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +15 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +38 -10
- package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +3 -13
- package/esm2022/libs/feature/editor/src/lib/components/wizard-field/wizard-field.component.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +16 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +3 -3
- package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +1 -1
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +1 -1
- package/esm2022/libs/feature/notifications/src/index.mjs +4 -0
- package/esm2022/libs/feature/notifications/src/lib/feature-notifications.module.mjs +18 -0
- package/esm2022/libs/feature/notifications/src/lib/notification.model.mjs +2 -0
- package/esm2022/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.mjs +49 -0
- package/esm2022/libs/feature/notifications/src/lib/notifications.service.mjs +29 -0
- package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +4 -4
- package/esm2022/libs/feature/record/src/lib/state/mdview.actions.mjs +22 -4
- package/esm2022/libs/feature/record/src/lib/state/mdview.effects.mjs +37 -10
- package/esm2022/libs/feature/record/src/lib/state/mdview.facade.mjs +22 -7
- package/esm2022/libs/feature/record/src/lib/state/mdview.reducer.mjs +52 -17
- package/esm2022/libs/feature/record/src/lib/state/mdview.selectors.mjs +18 -3
- package/esm2022/libs/feature/router/src/lib/default/state/router.effects.mjs +2 -2
- package/esm2022/libs/feature/search/src/lib/results-table/results-table.component.mjs +3 -3
- package/esm2022/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/notification/notification.component.mjs +34 -0
- package/esm2022/libs/ui/elements/src/lib/record-api-form/record-api-form.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/ui-elements.module.mjs +10 -2
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.mjs +59 -0
- package/esm2022/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.mjs +62 -0
- package/esm2022/libs/ui/inputs/src/index.mjs +15 -15
- package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +22 -0
- package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +7 -5
- package/esm2022/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.mjs +17 -8
- package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +27 -4
- package/esm2022/libs/ui/inputs/src/lib/text-input/text-input.component.mjs +19 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +11 -9
- package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +3 -3
- package/esm2022/translations/de.json +34 -0
- package/esm2022/translations/en.json +34 -0
- package/esm2022/translations/es.json +34 -0
- package/esm2022/translations/fr.json +34 -0
- package/esm2022/translations/it.json +34 -0
- package/esm2022/translations/nl.json +34 -0
- package/esm2022/translations/pt.json +34 -0
- package/fesm2022/geonetwork-ui.mjs +1529 -739
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.ts +1 -0
- package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts +1 -0
- package/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts +1 -0
- package/libs/api/repository/src/lib/gn4/auth/gravatar.service.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts +6 -2
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +9 -6
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/index.d.ts +1 -0
- package/libs/common/domain/src/lib/model/record/index.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts +15 -0
- package/libs/common/domain/src/lib/model/record/user-feedbacks.model.d.ts.map +1 -0
- package/libs/common/domain/src/lib/model/user/index.d.ts +2 -0
- package/libs/common/domain/src/lib/model/user/index.d.ts.map +1 -0
- package/libs/common/domain/src/lib/platform.service.interface.d.ts +3 -0
- package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts +8 -5
- package/libs/feature/editor/src/lib/+state/editor.facade.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts +39 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +8 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +8 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/notifications/src/index.d.ts +4 -0
- package/libs/feature/notifications/src/index.d.ts.map +1 -0
- package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts +7 -0
- package/libs/feature/notifications/src/lib/feature-notifications.module.d.ts.map +1 -0
- package/libs/feature/notifications/src/lib/notification.model.d.ts +7 -0
- package/libs/feature/notifications/src/lib/notification.model.d.ts.map +1 -0
- package/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.d.ts +12 -0
- package/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.d.ts.map +1 -0
- package/libs/feature/notifications/src/lib/notifications.service.d.ts +15 -0
- package/libs/feature/notifications/src/lib/notifications.service.d.ts.map +1 -0
- package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts +40 -6
- package/libs/feature/record/src/lib/state/mdview.actions.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts +24 -4
- package/libs/feature/record/src/lib/state/mdview.effects.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +14 -4
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts +8 -5
- package/libs/feature/record/src/lib/state/mdview.reducer.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts +12 -9
- package/libs/feature/record/src/lib/state/mdview.selectors.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/notification/notification.component.d.ts +13 -0
- package/libs/ui/elements/src/lib/notification/notification.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts +16 -14
- package/libs/ui/elements/src/lib/ui-elements.module.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts +11 -0
- package/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts +22 -0
- package/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/index.d.ts +14 -14
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts +9 -0
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts +7 -1
- package/libs/ui/inputs/src/lib/text-area/text-area.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts +4 -1
- package/libs/ui/inputs/src/lib/text-input/text-input.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +35 -35
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.ts +2 -2
- package/src/libs/api/repository/src/lib/gn4/auth/avatar.service.interface.ts +1 -0
- package/src/libs/api/repository/src/lib/gn4/auth/gravatar.service.ts +12 -1
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.mapper.ts +51 -1
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +34 -7
- package/src/libs/common/domain/src/lib/model/record/index.ts +1 -0
- package/src/libs/common/domain/src/lib/model/record/user-feedbacks.model.ts +15 -0
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +3 -0
- package/src/libs/common/fixtures/src/index.ts +8 -6
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +3 -3
- package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +83 -0
- package/src/libs/feature/editor/src/lib/+state/editor.facade.ts +8 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.html +8 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.ts +64 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.html +4 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.ts +15 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.css +0 -5
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +57 -33
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +35 -4
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -21
- package/src/libs/feature/editor/src/lib/fields.config.ts +15 -0
- package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.html +1 -1
- package/src/libs/feature/notifications/src/index.ts +3 -0
- package/src/libs/feature/notifications/src/lib/feature-notifications.module.ts +10 -0
- package/src/libs/feature/notifications/src/lib/notification.model.ts +6 -0
- package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.css +0 -0
- package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.html +17 -0
- package/src/libs/feature/notifications/src/lib/notifications-container/notifications-container.component.ts +44 -0
- package/src/libs/feature/notifications/src/lib/notifications.service.ts +27 -0
- package/src/libs/feature/record/src/lib/feature-record.module.ts +5 -2
- package/src/libs/feature/record/src/lib/state/mdview.actions.ts +51 -6
- package/src/libs/feature/record/src/lib/state/mdview.effects.ts +82 -7
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +49 -8
- package/src/libs/feature/record/src/lib/state/mdview.reducer.ts +81 -24
- package/src/libs/feature/record/src/lib/state/mdview.selectors.ts +40 -10
- package/src/libs/feature/router/src/lib/default/state/router.effects.ts +2 -2
- package/src/libs/feature/search/src/lib/results-table/results-table.component.html +3 -3
- package/src/libs/ui/catalog/src/lib/organisation-preview/organisation-preview.component.html +5 -5
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/image-overlay-preview/image-overlay-preview.component.html +1 -1
- package/src/libs/ui/elements/src/lib/notification/notification.component.css +0 -0
- package/src/libs/ui/elements/src/lib/notification/notification.component.html +52 -0
- package/src/libs/ui/elements/src/lib/notification/notification.component.ts +31 -0
- package/src/libs/ui/elements/src/lib/record-api-form/record-api-form.component.html +1 -1
- package/src/libs/ui/elements/src/lib/ui-elements.module.ts +5 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/time-since.pipe.ts +54 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.css +0 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.html +75 -0
- package/src/libs/ui/elements/src/lib/user-feedback-item/user-feedback-item.component.ts +63 -0
- package/src/libs/ui/inputs/src/index.ts +14 -14
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +3 -0
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +11 -0
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +16 -0
- package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +8 -1
- package/src/libs/ui/inputs/src/lib/dropdown-selector/dropdown-selector.component.ts +13 -0
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +2 -1
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +29 -0
- package/src/libs/ui/inputs/src/lib/text-input/text-input.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/text-input/text-input.component.ts +16 -1
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +2 -2
- package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.css +0 -5
- package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +1 -1
- package/tailwind.base.css +36 -0
- package/translations/de.json +34 -0
- package/translations/en.json +34 -0
- package/translations/es.json +34 -0
- package/translations/fr.json +34 -0
- package/translations/it.json +34 -0
- package/translations/nl.json +34 -0
- package/translations/pt.json +34 -0
- package/translations/sk.json +34 -0
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { parseXml, XmlDocument, XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
2
2
|
import format from 'date-fns/format';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ElementRef, ViewChildren, ViewContainerRef, HostBinding, ContentChild, ContentChildren, TemplateRef, Host, inject } from '@angular/core';
|
|
4
|
+
import { InjectionToken, Injectable, Optional, Inject, NgModule, SkipSelf, Component, ChangeDetectionStrategy, Input, ViewChild, Directive, HostListener, EventEmitter, Output, ElementRef, ViewChildren, ViewContainerRef, HostBinding, ContentChild, ContentChildren, TemplateRef, Host, Pipe, inject } from '@angular/core';
|
|
5
5
|
import * as i1 from '@angular/common/http';
|
|
6
6
|
import { HttpHeaders, HttpParams, HttpClient, HttpClientModule, HTTP_INTERCEPTORS, HttpClientXsrfModule } from '@angular/common/http';
|
|
7
7
|
import * as i1$1 from '@ngx-translate/core';
|
|
8
8
|
import { TranslateCompiler, TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
|
|
9
9
|
import { TranslateMessageFormatCompiler } from 'ngx-translate-messageformat-compiler';
|
|
10
10
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
11
|
-
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay,
|
|
11
|
+
import { map as map$1, shareReplay, filter, tap as tap$1, startWith, withLatestFrom, switchMap as switchMap$1, catchError, take, delay, debounceTime, distinctUntilChanged, finalize, first, throttleTime, share, pairwise, mergeMap } from 'rxjs/operators';
|
|
12
12
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker';
|
|
13
13
|
import * as i1$3 from '@angular/common';
|
|
14
14
|
import { CommonModule, NgOptimizedImage, NgForOf } from '@angular/common';
|
|
15
|
-
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, Subject, merge, throwError, BehaviorSubject,
|
|
15
|
+
import { of, map as map$2, lastValueFrom, switchMap, combineLatest, takeLast, forkJoin, firstValueFrom, Subject, merge, throwError, BehaviorSubject, fromEvent, timer, Subscription, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1, debounceTime as debounceTime$1, animationFrameScheduler, from, tap as tap$2, Observable, buffer, combineLatestWith, catchError as catchError$1, takeUntil, exhaustMap, mergeMap as mergeMap$1, EMPTY, withLatestFrom as withLatestFrom$1, filter as filter$1, startWith as startWith$1, pairwise as pairwise$1 } from 'rxjs';
|
|
16
16
|
import { valid, coerce, satisfies, ltr } from 'semver';
|
|
17
17
|
import * as i1$2 from '@ngrx/store';
|
|
18
18
|
import { createAction, props, createReducer, on, createFeatureSelector, createSelector, select, StoreModule, Store } from '@ngrx/store';
|
|
@@ -44,28 +44,27 @@ import { bbox } from 'ol/loadingstrategy';
|
|
|
44
44
|
import WMTS from 'ol/source/WMTS';
|
|
45
45
|
import * as i2$3 from '@angular/material/tabs';
|
|
46
46
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
47
|
-
import * as i1$4 from '@angular/cdk/overlay';
|
|
48
|
-
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
49
47
|
import * as i2$1 from '@angular/forms';
|
|
50
48
|
import { UntypedFormControl, FormsModule, ReactiveFormsModule, FormControl } from '@angular/forms';
|
|
51
|
-
import * as i5 from 'ngx-chips';
|
|
52
|
-
import { TagInputModule } from 'ngx-chips';
|
|
53
49
|
import * as i4 from '@angular/material/autocomplete';
|
|
54
50
|
import { MatAutocompleteTrigger, MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
55
|
-
import * as i5
|
|
51
|
+
import * as i5 from '@angular/material/core';
|
|
56
52
|
import { MatNativeDateModule, MAT_DATE_LOCALE, DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
|
57
|
-
import * as
|
|
58
|
-
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
59
|
-
import * as i1$5 from '@angular/material/progress-spinner';
|
|
60
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
61
|
-
import * as i1$6 from '@angular/material/checkbox';
|
|
53
|
+
import * as i1$4 from '@angular/material/checkbox';
|
|
62
54
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
63
|
-
import * as
|
|
55
|
+
import * as i5$1 from 'ngx-chips';
|
|
56
|
+
import { TagInputModule } from 'ngx-chips';
|
|
57
|
+
import * as i3 from '@angular/material/tooltip';
|
|
64
58
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
65
|
-
import * as i2$2 from '@angular/material/
|
|
66
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
67
|
-
import * as i3$2 from '@angular/material/datepicker';
|
|
59
|
+
import * as i2$2 from '@angular/material/datepicker';
|
|
68
60
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
61
|
+
import * as i3$1 from 'ngx-dropzone';
|
|
62
|
+
import { NgxDropzoneModule } from 'ngx-dropzone';
|
|
63
|
+
import * as i1$5 from '@angular/cdk/overlay';
|
|
64
|
+
import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
|
|
65
|
+
import * as i1$6 from '@angular/material/progress-spinner';
|
|
66
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
67
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
69
68
|
import { MatInputModule } from '@angular/material/input';
|
|
70
69
|
import * as i1$7 from '@angular/router';
|
|
71
70
|
import { RouterModule, RouterLink, RouteReuseStrategy } from '@angular/router';
|
|
@@ -73,12 +72,15 @@ import Duration from 'duration-relativetimeformat';
|
|
|
73
72
|
import * as basicLightbox from 'basiclightbox';
|
|
74
73
|
import { marked } from 'marked';
|
|
75
74
|
import EmblaCarousel from 'embla-carousel';
|
|
75
|
+
import { formatDistance } from 'date-fns';
|
|
76
|
+
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';
|
|
76
77
|
import * as i1$8 from '@ngrx/effects';
|
|
77
78
|
import { createEffect, ofType, EffectsModule, Actions } from '@ngrx/effects';
|
|
78
79
|
import tippy from 'tippy.js';
|
|
79
80
|
import { valid as valid$1 } from 'geojson-validation';
|
|
80
81
|
import { Polygon } from 'ol/geom';
|
|
81
82
|
import { queryDataGouvFr, queryGeonames, queryGeoadmin } from '@geospatial-sdk/geocoding';
|
|
83
|
+
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
82
84
|
import { Chart, BarController, BarElement, CategoryScale, LinearScale, LineController, LineElement, PointElement, PieController, ArcElement, ScatterController, Tooltip, Colors, Legend } from 'chart.js';
|
|
83
85
|
import * as i4$1 from '@angular/cdk/scrolling';
|
|
84
86
|
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
@@ -86,14 +88,14 @@ import * as i2$4 from '@angular/material/sort';
|
|
|
86
88
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
87
89
|
import * as i1$9 from '@angular/material/table';
|
|
88
90
|
import { MatTableModule } from '@angular/material/table';
|
|
89
|
-
import * as i3$
|
|
91
|
+
import * as i3$2 from 'ng-table-virtual-scroll';
|
|
90
92
|
import { TableVirtualScrollDataSource, TableVirtualScrollModule } from 'ng-table-virtual-scroll';
|
|
91
93
|
import * as Papa from 'papaparse';
|
|
92
94
|
import parseDate from 'date-fns/parse';
|
|
93
95
|
import parseIsoDate from 'date-fns/parseISO';
|
|
94
96
|
import { WFS, GeoJSON as GeoJSON$1 } from 'ol/format';
|
|
95
97
|
import { MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';
|
|
96
|
-
import * as i3$
|
|
98
|
+
import * as i3$3 from '@ngrx/router-store';
|
|
97
99
|
import { getRouterSelectors, routerReducer, StoreRouterConnectingModule, FullRouterStateSerializer } from '@ngrx/router-store';
|
|
98
100
|
import { navigation } from '@ngrx/router-store/data-persistence';
|
|
99
101
|
|
|
@@ -17270,6 +17272,7 @@ var next$6 = "weiter";
|
|
|
17270
17272
|
var previous$6 = "zurück";
|
|
17271
17273
|
var records$6 = "Datensätze";
|
|
17272
17274
|
var de = {
|
|
17275
|
+
"button.login": "",
|
|
17273
17276
|
"catalog.figures.datasets": "{count, plural, =0{Datensätze} one{Datensatz} other{Datensätze}}",
|
|
17274
17277
|
"catalog.figures.organisations": "{count, plural, =0{Organisationen} one{Organisation} other{Organisationen}}",
|
|
17275
17278
|
"chart.aggregation.average": "Durchschnitt",
|
|
@@ -17415,7 +17418,26 @@ var de = {
|
|
|
17415
17418
|
"downloads.format.unknown": "unbekannt",
|
|
17416
17419
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
17417
17420
|
dropFile: dropFile$6,
|
|
17421
|
+
"editor.record.form.license": "Lizenz",
|
|
17422
|
+
"editor.record.form.license.cc-by": "",
|
|
17423
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
17424
|
+
"editor.record.form.license.cc-zero": "",
|
|
17425
|
+
"editor.record.form.license.etalab": "",
|
|
17426
|
+
"editor.record.form.license.etalab-v2": "",
|
|
17427
|
+
"editor.record.form.license.odbl": "",
|
|
17428
|
+
"editor.record.form.license.odc-by": "",
|
|
17429
|
+
"editor.record.form.license.pddl": "",
|
|
17430
|
+
"editor.record.form.license.unknown": "Unbekannt oder nicht vorhanden",
|
|
17431
|
+
"editor.record.form.resourceUpdated": "",
|
|
17432
|
+
"editor.record.loadError.body": "",
|
|
17433
|
+
"editor.record.loadError.closeMessage": "",
|
|
17434
|
+
"editor.record.loadError.title": "",
|
|
17418
17435
|
"editor.record.publish": "",
|
|
17436
|
+
"editor.record.publishError.body": "",
|
|
17437
|
+
"editor.record.publishError.closeMessage": "",
|
|
17438
|
+
"editor.record.publishError.title": "",
|
|
17439
|
+
"editor.record.publishSuccess.body": "",
|
|
17440
|
+
"editor.record.publishSuccess.title": "",
|
|
17419
17441
|
"editor.record.upToDate": "",
|
|
17420
17442
|
"externalviewer.dataset.unnamed": "Datensatz aus dem Datahub",
|
|
17421
17443
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -17541,6 +17563,14 @@ var de = {
|
|
|
17541
17563
|
"record.metadata.quality.updateFrequency.failed": "Aktualisierungsfrequenz nicht angegeben",
|
|
17542
17564
|
"record.metadata.quality.updateFrequency.success": "Aktualisierungsfrequenz angegeben",
|
|
17543
17565
|
"record.metadata.related": "Ähnliche Datensätze",
|
|
17566
|
+
"record.metadata.userFeedbacks": "",
|
|
17567
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
17568
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
17569
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
17570
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
17571
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
17572
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
17573
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
17544
17574
|
"record.metadata.sheet": "Weitere Informationen verfügbar unter:",
|
|
17545
17575
|
"record.metadata.status": "Status",
|
|
17546
17576
|
"record.metadata.technical": "Technische Informationen",
|
|
@@ -17614,6 +17644,12 @@ var de = {
|
|
|
17614
17644
|
"table.loading.data": "Daten werden geladen...",
|
|
17615
17645
|
"table.object.count": "Objekte in diesem Datensatz",
|
|
17616
17646
|
"table.select.data": "Datenquelle",
|
|
17647
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
17648
|
+
"timeSincePipe.minutesAgo": "",
|
|
17649
|
+
"timeSincePipe.hoursAgo": "",
|
|
17650
|
+
"timeSincePipe.daysAgo": "",
|
|
17651
|
+
"timeSincePipe.monthsAgo": "",
|
|
17652
|
+
"timeSincePipe.yearsAgo": "",
|
|
17617
17653
|
"tooltip.html.copy": "HTML kopieren",
|
|
17618
17654
|
"tooltip.id.copy": "Eindeutige Kennung kopieren",
|
|
17619
17655
|
"tooltip.url.copy": "URL kopieren",
|
|
@@ -17632,6 +17668,7 @@ var next$5 = "next";
|
|
|
17632
17668
|
var previous$5 = "previous";
|
|
17633
17669
|
var records$5 = "records";
|
|
17634
17670
|
var en = {
|
|
17671
|
+
"button.login": "Log in",
|
|
17635
17672
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
17636
17673
|
"catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
|
|
17637
17674
|
"chart.aggregation.average": "average",
|
|
@@ -17777,7 +17814,26 @@ var en = {
|
|
|
17777
17814
|
"downloads.format.unknown": "unknown",
|
|
17778
17815
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
17779
17816
|
dropFile: dropFile$5,
|
|
17817
|
+
"editor.record.form.license": "License",
|
|
17818
|
+
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
17819
|
+
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
17820
|
+
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
17821
|
+
"editor.record.form.license.etalab": "Open Licence (Etalab)",
|
|
17822
|
+
"editor.record.form.license.etalab-v2": "Open Licence v2.0 (Etalab)",
|
|
17823
|
+
"editor.record.form.license.odbl": "Open Data Commons ODbL",
|
|
17824
|
+
"editor.record.form.license.odc-by": "Open Data Commons ODC-By",
|
|
17825
|
+
"editor.record.form.license.pddl": "Open Data Commons PDDL",
|
|
17826
|
+
"editor.record.form.license.unknown": "Unknown or absent",
|
|
17827
|
+
"editor.record.form.resourceUpdated": "Last update date",
|
|
17828
|
+
"editor.record.loadError.body": "The record could not be loaded:",
|
|
17829
|
+
"editor.record.loadError.closeMessage": "Understood",
|
|
17830
|
+
"editor.record.loadError.title": "Error loading record",
|
|
17780
17831
|
"editor.record.publish": "Publish this record",
|
|
17832
|
+
"editor.record.publishError.body": "The record could not be published:",
|
|
17833
|
+
"editor.record.publishError.closeMessage": "Understood",
|
|
17834
|
+
"editor.record.publishError.title": "Error publishing record",
|
|
17835
|
+
"editor.record.publishSuccess.body": "The record was successfully published!",
|
|
17836
|
+
"editor.record.publishSuccess.title": "Publish success",
|
|
17781
17837
|
"editor.record.upToDate": "This record is up to date",
|
|
17782
17838
|
"externalviewer.dataset.unnamed": "Datahub layer",
|
|
17783
17839
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -17903,6 +17959,14 @@ var en = {
|
|
|
17903
17959
|
"record.metadata.quality.updateFrequency.failed": "Update frequency is not specified",
|
|
17904
17960
|
"record.metadata.quality.updateFrequency.success": "Update frequency is specified",
|
|
17905
17961
|
"record.metadata.related": "Related records",
|
|
17962
|
+
"record.metadata.userFeedbacks": "Questions / Answers",
|
|
17963
|
+
"record.metadata.userFeedbacks.anonymousUser": "In order to leave a comment, please log in.",
|
|
17964
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Sort by ...",
|
|
17965
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Newest comments first",
|
|
17966
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Oldest comments first",
|
|
17967
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Write your comment here...",
|
|
17968
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Answer...",
|
|
17969
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publish",
|
|
17906
17970
|
"record.metadata.sheet": "Original metadata",
|
|
17907
17971
|
"record.metadata.status": "Status",
|
|
17908
17972
|
"record.metadata.technical": "Technical information",
|
|
@@ -17976,6 +18040,12 @@ var en = {
|
|
|
17976
18040
|
"table.loading.data": "Loading data...",
|
|
17977
18041
|
"table.object.count": "objects in this dataset",
|
|
17978
18042
|
"table.select.data": "Data source",
|
|
18043
|
+
"timeSincePipe.lessThanAMinute": "Less than a minute ago",
|
|
18044
|
+
"timeSincePipe.minutesAgo": "{value} minute{s} ago",
|
|
18045
|
+
"timeSincePipe.hoursAgo": "{value} hour{s} ago",
|
|
18046
|
+
"timeSincePipe.daysAgo": "{value} day{s} ago",
|
|
18047
|
+
"timeSincePipe.monthsAgo": "{value} month{s} ago",
|
|
18048
|
+
"timeSincePipe.yearsAgo": "{value} year{s} ago",
|
|
17979
18049
|
"tooltip.html.copy": "Copy HTML",
|
|
17980
18050
|
"tooltip.id.copy": "Copy unique identifier",
|
|
17981
18051
|
"tooltip.url.copy": "Copy URL",
|
|
@@ -17994,6 +18064,7 @@ var next$4 = "";
|
|
|
17994
18064
|
var previous$4 = "";
|
|
17995
18065
|
var records$4 = "";
|
|
17996
18066
|
var es = {
|
|
18067
|
+
"button.login": "",
|
|
17997
18068
|
"catalog.figures.datasets": "conjuntos de datos",
|
|
17998
18069
|
"catalog.figures.organisations": "organizaciones",
|
|
17999
18070
|
"chart.aggregation.average": "promedio",
|
|
@@ -18139,7 +18210,26 @@ var es = {
|
|
|
18139
18210
|
"downloads.format.unknown": "",
|
|
18140
18211
|
"downloads.wfs.featuretype.not.found": "",
|
|
18141
18212
|
dropFile: dropFile$4,
|
|
18213
|
+
"editor.record.form.license": "",
|
|
18214
|
+
"editor.record.form.license.cc-by": "",
|
|
18215
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18216
|
+
"editor.record.form.license.cc-zero": "",
|
|
18217
|
+
"editor.record.form.license.etalab": "",
|
|
18218
|
+
"editor.record.form.license.etalab-v2": "",
|
|
18219
|
+
"editor.record.form.license.odbl": "",
|
|
18220
|
+
"editor.record.form.license.odc-by": "",
|
|
18221
|
+
"editor.record.form.license.pddl": "",
|
|
18222
|
+
"editor.record.form.license.unknown": "",
|
|
18223
|
+
"editor.record.form.resourceUpdated": "",
|
|
18224
|
+
"editor.record.loadError.body": "",
|
|
18225
|
+
"editor.record.loadError.closeMessage": "",
|
|
18226
|
+
"editor.record.loadError.title": "",
|
|
18142
18227
|
"editor.record.publish": "",
|
|
18228
|
+
"editor.record.publishError.body": "",
|
|
18229
|
+
"editor.record.publishError.closeMessage": "",
|
|
18230
|
+
"editor.record.publishError.title": "",
|
|
18231
|
+
"editor.record.publishSuccess.body": "",
|
|
18232
|
+
"editor.record.publishSuccess.title": "",
|
|
18143
18233
|
"editor.record.upToDate": "",
|
|
18144
18234
|
"externalviewer.dataset.unnamed": "",
|
|
18145
18235
|
"facets.block.title.OrgForResource": "",
|
|
@@ -18265,6 +18355,14 @@ var es = {
|
|
|
18265
18355
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
18266
18356
|
"record.metadata.quality.updateFrequency.success": "",
|
|
18267
18357
|
"record.metadata.related": "",
|
|
18358
|
+
"record.metadata.userFeedbacks": "",
|
|
18359
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
18360
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
18361
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
18362
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
18363
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
18364
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
18365
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18268
18366
|
"record.metadata.sheet": "",
|
|
18269
18367
|
"record.metadata.status": "",
|
|
18270
18368
|
"record.metadata.technical": "",
|
|
@@ -18338,6 +18436,12 @@ var es = {
|
|
|
18338
18436
|
"table.loading.data": "",
|
|
18339
18437
|
"table.object.count": "",
|
|
18340
18438
|
"table.select.data": "",
|
|
18439
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
18440
|
+
"timeSincePipe.minutesAgo": "",
|
|
18441
|
+
"timeSincePipe.hoursAgo": "",
|
|
18442
|
+
"timeSincePipe.daysAgo": "",
|
|
18443
|
+
"timeSincePipe.monthsAgo": "",
|
|
18444
|
+
"timeSincePipe.yearsAgo": "",
|
|
18341
18445
|
"tooltip.html.copy": "",
|
|
18342
18446
|
"tooltip.id.copy": "",
|
|
18343
18447
|
"tooltip.url.copy": "",
|
|
@@ -18356,6 +18460,7 @@ var next$3 = "suivant";
|
|
|
18356
18460
|
var previous$3 = "précédent";
|
|
18357
18461
|
var records$3 = "enregistrements";
|
|
18358
18462
|
var fr = {
|
|
18463
|
+
"button.login": "Se connecter",
|
|
18359
18464
|
"catalog.figures.datasets": "{count, plural, =0{données} one{donnée} other{données}}",
|
|
18360
18465
|
"catalog.figures.organisations": "{count, plural, =0{organisations} one{organisation} other{organisations}}",
|
|
18361
18466
|
"chart.aggregation.average": "moyenne",
|
|
@@ -18501,7 +18606,26 @@ var fr = {
|
|
|
18501
18606
|
"downloads.format.unknown": "inconnu",
|
|
18502
18607
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
18503
18608
|
dropFile: dropFile$3,
|
|
18609
|
+
"editor.record.form.license": "Licence",
|
|
18610
|
+
"editor.record.form.license.cc-by": "",
|
|
18611
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
18612
|
+
"editor.record.form.license.cc-zero": "",
|
|
18613
|
+
"editor.record.form.license.etalab": "Licence Ouverte (Etalab)",
|
|
18614
|
+
"editor.record.form.license.etalab-v2": "Licence Ouverte v2.0 (Etalab)",
|
|
18615
|
+
"editor.record.form.license.odbl": "",
|
|
18616
|
+
"editor.record.form.license.odc-by": "",
|
|
18617
|
+
"editor.record.form.license.pddl": "",
|
|
18618
|
+
"editor.record.form.license.unknown": "Non-reconnue ou absente",
|
|
18619
|
+
"editor.record.form.resourceUpdated": "Date de dernière révision",
|
|
18620
|
+
"editor.record.loadError.body": "",
|
|
18621
|
+
"editor.record.loadError.closeMessage": "",
|
|
18622
|
+
"editor.record.loadError.title": "",
|
|
18504
18623
|
"editor.record.publish": "",
|
|
18624
|
+
"editor.record.publishError.body": "",
|
|
18625
|
+
"editor.record.publishError.closeMessage": "",
|
|
18626
|
+
"editor.record.publishError.title": "",
|
|
18627
|
+
"editor.record.publishSuccess.body": "",
|
|
18628
|
+
"editor.record.publishSuccess.title": "",
|
|
18505
18629
|
"editor.record.upToDate": "",
|
|
18506
18630
|
"externalviewer.dataset.unnamed": "Couche du datahub",
|
|
18507
18631
|
"facets.block.title.OrgForResource": "Organisation",
|
|
@@ -18627,6 +18751,14 @@ var fr = {
|
|
|
18627
18751
|
"record.metadata.quality.updateFrequency.failed": "Fréquence de mise à jour n'est pas renseignée",
|
|
18628
18752
|
"record.metadata.quality.updateFrequency.success": "Fréquence de mise à jour est renseignée",
|
|
18629
18753
|
"record.metadata.related": "Voir aussi",
|
|
18754
|
+
"record.metadata.userFeedbacks": "Questions / Réponses",
|
|
18755
|
+
"record.metadata.userFeedbacks.anonymousUser": "Pour rédiger un commentaire, veuillez vous identifier.",
|
|
18756
|
+
"record.metadata.userFeedbacks.sortSelector.label": "Trier par ...",
|
|
18757
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "Les plus récents en premier",
|
|
18758
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "Les plus anciens en premier",
|
|
18759
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "Rédiger votre commentaire ici...",
|
|
18760
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "Répondre...",
|
|
18761
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "Publier",
|
|
18630
18762
|
"record.metadata.sheet": "Fiche de métadonnées d'origine",
|
|
18631
18763
|
"record.metadata.status": "Statut",
|
|
18632
18764
|
"record.metadata.technical": "Informations techniques",
|
|
@@ -18700,6 +18832,12 @@ var fr = {
|
|
|
18700
18832
|
"table.loading.data": "Chargement des données...",
|
|
18701
18833
|
"table.object.count": "enregistrements dans ces données",
|
|
18702
18834
|
"table.select.data": "Source de données",
|
|
18835
|
+
"timeSincePipe.lessThanAMinute": "Il y a moins d'une minute",
|
|
18836
|
+
"timeSincePipe.minutesAgo": "Il y a {value} minute{s}",
|
|
18837
|
+
"timeSincePipe.hoursAgo": "Il y a {value} heure{s}",
|
|
18838
|
+
"timeSincePipe.daysAgo": "Il y a {value} jour{s}",
|
|
18839
|
+
"timeSincePipe.monthsAgo": "Il y a {value} mois",
|
|
18840
|
+
"timeSincePipe.yearsAgo": "Il y a {value} an{s}",
|
|
18703
18841
|
"tooltip.html.copy": "Copier le HTML",
|
|
18704
18842
|
"tooltip.id.copy": "Copier l'identifiant unique",
|
|
18705
18843
|
"tooltip.url.copy": "Copier l'URL",
|
|
@@ -18718,6 +18856,7 @@ var next$2 = "successivo";
|
|
|
18718
18856
|
var previous$2 = "precedente";
|
|
18719
18857
|
var records$2 = "record";
|
|
18720
18858
|
var it = {
|
|
18859
|
+
"button.login": "",
|
|
18721
18860
|
"catalog.figures.datasets": "{count, plural, =0{datasets} one{dataset} other{datasets}}",
|
|
18722
18861
|
"catalog.figures.organisations": "{count, plural, =0{organizzazioni} one{organizzazione} other{organizzazioni}}",
|
|
18723
18862
|
"chart.aggregation.average": "media",
|
|
@@ -18863,7 +19002,26 @@ var it = {
|
|
|
18863
19002
|
"downloads.format.unknown": "sconosciuto",
|
|
18864
19003
|
"downloads.wfs.featuretype.not.found": "Il layer non è stato trovato",
|
|
18865
19004
|
dropFile: dropFile$2,
|
|
19005
|
+
"editor.record.form.license": "Licenza",
|
|
19006
|
+
"editor.record.form.license.cc-by": "",
|
|
19007
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19008
|
+
"editor.record.form.license.cc-zero": "",
|
|
19009
|
+
"editor.record.form.license.etalab": "Licenza aperta (Etalab)",
|
|
19010
|
+
"editor.record.form.license.etalab-v2": "Licenza aperta v2.0 (Etalab)",
|
|
19011
|
+
"editor.record.form.license.odbl": "",
|
|
19012
|
+
"editor.record.form.license.odc-by": "",
|
|
19013
|
+
"editor.record.form.license.pddl": "",
|
|
19014
|
+
"editor.record.form.license.unknown": "Non riconosciuta o assente",
|
|
19015
|
+
"editor.record.form.resourceUpdated": "",
|
|
19016
|
+
"editor.record.loadError.body": "",
|
|
19017
|
+
"editor.record.loadError.closeMessage": "",
|
|
19018
|
+
"editor.record.loadError.title": "",
|
|
18866
19019
|
"editor.record.publish": "",
|
|
19020
|
+
"editor.record.publishError.body": "",
|
|
19021
|
+
"editor.record.publishError.closeMessage": "",
|
|
19022
|
+
"editor.record.publishError.title": "",
|
|
19023
|
+
"editor.record.publishSuccess.body": "",
|
|
19024
|
+
"editor.record.publishSuccess.title": "",
|
|
18867
19025
|
"editor.record.upToDate": "",
|
|
18868
19026
|
"externalviewer.dataset.unnamed": "Layer del datahub",
|
|
18869
19027
|
"facets.block.title.OrgForResource": "Organizzazione",
|
|
@@ -18989,6 +19147,14 @@ var it = {
|
|
|
18989
19147
|
"record.metadata.quality.updateFrequency.failed": "La frequenza di aggiornamento non è specificata",
|
|
18990
19148
|
"record.metadata.quality.updateFrequency.success": "La frequenza di aggiornamento è specificata",
|
|
18991
19149
|
"record.metadata.related": "Vedi anche",
|
|
19150
|
+
"record.metadata.userFeedbacks": "",
|
|
19151
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19152
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19153
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19154
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19155
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19156
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19157
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
18992
19158
|
"record.metadata.sheet": "Origine del metadata",
|
|
18993
19159
|
"record.metadata.status": "Stato",
|
|
18994
19160
|
"record.metadata.technical": "Informazioni tecniche",
|
|
@@ -19062,6 +19228,12 @@ var it = {
|
|
|
19062
19228
|
"table.loading.data": "Caricamento dei dati...",
|
|
19063
19229
|
"table.object.count": "record in questi dati",
|
|
19064
19230
|
"table.select.data": "Sorgente dati",
|
|
19231
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
19232
|
+
"timeSincePipe.minutesAgo": "",
|
|
19233
|
+
"timeSincePipe.hoursAgo": "",
|
|
19234
|
+
"timeSincePipe.daysAgo": "",
|
|
19235
|
+
"timeSincePipe.monthsAgo": "",
|
|
19236
|
+
"timeSincePipe.yearsAgo": "",
|
|
19065
19237
|
"tooltip.html.copy": "Copiare il HTML",
|
|
19066
19238
|
"tooltip.id.copy": "Copiare l'identificatore unico",
|
|
19067
19239
|
"tooltip.url.copy": "Copiare l'URL",
|
|
@@ -19080,6 +19252,7 @@ var next$1 = "";
|
|
|
19080
19252
|
var previous$1 = "";
|
|
19081
19253
|
var records$1 = "";
|
|
19082
19254
|
var nl = {
|
|
19255
|
+
"button.login": "",
|
|
19083
19256
|
"catalog.figures.datasets": "datasets",
|
|
19084
19257
|
"catalog.figures.organisations": "organisaties",
|
|
19085
19258
|
"chart.aggregation.average": "gemiddelde",
|
|
@@ -19225,7 +19398,26 @@ var nl = {
|
|
|
19225
19398
|
"downloads.format.unknown": "",
|
|
19226
19399
|
"downloads.wfs.featuretype.not.found": "",
|
|
19227
19400
|
dropFile: dropFile$1,
|
|
19401
|
+
"editor.record.form.license": "",
|
|
19402
|
+
"editor.record.form.license.cc-by": "",
|
|
19403
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19404
|
+
"editor.record.form.license.cc-zero": "",
|
|
19405
|
+
"editor.record.form.license.etalab": "",
|
|
19406
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19407
|
+
"editor.record.form.license.odbl": "",
|
|
19408
|
+
"editor.record.form.license.odc-by": "",
|
|
19409
|
+
"editor.record.form.license.pddl": "",
|
|
19410
|
+
"editor.record.form.license.unknown": "",
|
|
19411
|
+
"editor.record.form.resourceUpdated": "",
|
|
19412
|
+
"editor.record.loadError.body": "",
|
|
19413
|
+
"editor.record.loadError.closeMessage": "",
|
|
19414
|
+
"editor.record.loadError.title": "",
|
|
19228
19415
|
"editor.record.publish": "",
|
|
19416
|
+
"editor.record.publishError.body": "",
|
|
19417
|
+
"editor.record.publishError.closeMessage": "",
|
|
19418
|
+
"editor.record.publishError.title": "",
|
|
19419
|
+
"editor.record.publishSuccess.body": "",
|
|
19420
|
+
"editor.record.publishSuccess.title": "",
|
|
19229
19421
|
"editor.record.upToDate": "",
|
|
19230
19422
|
"externalviewer.dataset.unnamed": "",
|
|
19231
19423
|
"facets.block.title.OrgForResource": "",
|
|
@@ -19351,6 +19543,14 @@ var nl = {
|
|
|
19351
19543
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19352
19544
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19353
19545
|
"record.metadata.related": "",
|
|
19546
|
+
"record.metadata.userFeedbacks": "",
|
|
19547
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19548
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19549
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19550
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19551
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19552
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19553
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19354
19554
|
"record.metadata.sheet": "",
|
|
19355
19555
|
"record.metadata.status": "",
|
|
19356
19556
|
"record.metadata.technical": "",
|
|
@@ -19424,6 +19624,12 @@ var nl = {
|
|
|
19424
19624
|
"table.loading.data": "",
|
|
19425
19625
|
"table.object.count": "",
|
|
19426
19626
|
"table.select.data": "",
|
|
19627
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
19628
|
+
"timeSincePipe.minutesAgo": "",
|
|
19629
|
+
"timeSincePipe.hoursAgo": "",
|
|
19630
|
+
"timeSincePipe.daysAgo": "",
|
|
19631
|
+
"timeSincePipe.monthsAgo": "",
|
|
19632
|
+
"timeSincePipe.yearsAgo": "",
|
|
19427
19633
|
"tooltip.html.copy": "",
|
|
19428
19634
|
"tooltip.id.copy": "",
|
|
19429
19635
|
"tooltip.url.copy": "",
|
|
@@ -19442,6 +19648,7 @@ var next = "";
|
|
|
19442
19648
|
var previous = "";
|
|
19443
19649
|
var records = "";
|
|
19444
19650
|
var pt = {
|
|
19651
|
+
"button.login": "",
|
|
19445
19652
|
"catalog.figures.datasets": "conjuntos de dados",
|
|
19446
19653
|
"catalog.figures.organisations": "organizações",
|
|
19447
19654
|
"chart.aggregation.average": "média",
|
|
@@ -19587,7 +19794,26 @@ var pt = {
|
|
|
19587
19794
|
"downloads.format.unknown": "",
|
|
19588
19795
|
"downloads.wfs.featuretype.not.found": "",
|
|
19589
19796
|
dropFile: dropFile,
|
|
19797
|
+
"editor.record.form.license": "",
|
|
19798
|
+
"editor.record.form.license.cc-by": "",
|
|
19799
|
+
"editor.record.form.license.cc-by-sa": "",
|
|
19800
|
+
"editor.record.form.license.cc-zero": "",
|
|
19801
|
+
"editor.record.form.license.etalab": "",
|
|
19802
|
+
"editor.record.form.license.etalab-v2": "",
|
|
19803
|
+
"editor.record.form.license.odbl": "",
|
|
19804
|
+
"editor.record.form.license.odc-by": "",
|
|
19805
|
+
"editor.record.form.license.pddl": "",
|
|
19806
|
+
"editor.record.form.license.unknown": "",
|
|
19807
|
+
"editor.record.form.resourceUpdated": "",
|
|
19808
|
+
"editor.record.loadError.body": "",
|
|
19809
|
+
"editor.record.loadError.closeMessage": "",
|
|
19810
|
+
"editor.record.loadError.title": "",
|
|
19590
19811
|
"editor.record.publish": "",
|
|
19812
|
+
"editor.record.publishError.body": "",
|
|
19813
|
+
"editor.record.publishError.closeMessage": "",
|
|
19814
|
+
"editor.record.publishError.title": "",
|
|
19815
|
+
"editor.record.publishSuccess.body": "",
|
|
19816
|
+
"editor.record.publishSuccess.title": "",
|
|
19591
19817
|
"editor.record.upToDate": "",
|
|
19592
19818
|
"externalviewer.dataset.unnamed": "",
|
|
19593
19819
|
"facets.block.title.OrgForResource": "",
|
|
@@ -19713,6 +19939,14 @@ var pt = {
|
|
|
19713
19939
|
"record.metadata.quality.updateFrequency.failed": "",
|
|
19714
19940
|
"record.metadata.quality.updateFrequency.success": "",
|
|
19715
19941
|
"record.metadata.related": "",
|
|
19942
|
+
"record.metadata.userFeedbacks": "",
|
|
19943
|
+
"record.metadata.userFeedbacks.anonymousUser": "",
|
|
19944
|
+
"record.metadata.userFeedbacks.sortSelector.label": "",
|
|
19945
|
+
"record.metadata.userFeedbacks.sortSelector.choices.newestFirst": "",
|
|
19946
|
+
"record.metadata.userFeedbacks.sortSelector.choices.oldestFirst": "",
|
|
19947
|
+
"record.metadata.userFeedbacks.newComment.placeholder": "",
|
|
19948
|
+
"record.metadata.userFeedbacks.newAnswer.placeholder": "",
|
|
19949
|
+
"record.metadata.userFeedbacks.newAnswer.buttonTitle": "",
|
|
19716
19950
|
"record.metadata.sheet": "",
|
|
19717
19951
|
"record.metadata.status": "",
|
|
19718
19952
|
"record.metadata.technical": "",
|
|
@@ -19786,6 +20020,12 @@ var pt = {
|
|
|
19786
20020
|
"table.loading.data": "",
|
|
19787
20021
|
"table.object.count": "",
|
|
19788
20022
|
"table.select.data": "",
|
|
20023
|
+
"timeSincePipe.lessThanAMinute": "",
|
|
20024
|
+
"timeSincePipe.minutesAgo": "",
|
|
20025
|
+
"timeSincePipe.hoursAgo": "",
|
|
20026
|
+
"timeSincePipe.daysAgo": "",
|
|
20027
|
+
"timeSincePipe.monthsAgo": "",
|
|
20028
|
+
"timeSincePipe.yearsAgo": "",
|
|
19789
20029
|
"tooltip.html.copy": "",
|
|
19790
20030
|
"tooltip.id.copy": "",
|
|
19791
20031
|
"tooltip.url.copy": "",
|
|
@@ -19880,11 +20120,11 @@ class Gn4FieldMapper {
|
|
|
19880
20120
|
}),
|
|
19881
20121
|
creationDateForResource: (output, source) => ({
|
|
19882
20122
|
...output,
|
|
19883
|
-
|
|
20123
|
+
resourceCreated: toDate(getFirstValue(selectField(source, 'creationDateForResource'))),
|
|
19884
20124
|
}),
|
|
19885
20125
|
revisionDateForResource: (output, source) => ({
|
|
19886
20126
|
...output,
|
|
19887
|
-
|
|
20127
|
+
resourceUpdated: toDate(getFirstValue(selectField(source, 'revisionDateForResource'))),
|
|
19888
20128
|
}),
|
|
19889
20129
|
createDate: (output, source) => ({
|
|
19890
20130
|
...output,
|
|
@@ -21109,6 +21349,16 @@ class GravatarService {
|
|
|
21109
21349
|
getProfileIcon(hash) {
|
|
21110
21350
|
return this.identicon$.pipe(map$1((identicon) => identicon || this.GRAVATAR_IDENTICON), map$1((identicon) => `${this.GRAVATAR_URL}${hash}?d=${identicon}`));
|
|
21111
21351
|
}
|
|
21352
|
+
async getProfileIconUrl(userId) {
|
|
21353
|
+
let iconUrl = '';
|
|
21354
|
+
try {
|
|
21355
|
+
iconUrl = await firstValueFrom(this.getProfileIcon(userId));
|
|
21356
|
+
}
|
|
21357
|
+
catch (error) {
|
|
21358
|
+
return '';
|
|
21359
|
+
}
|
|
21360
|
+
return iconUrl;
|
|
21361
|
+
}
|
|
21112
21362
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GravatarService, deps: [{ token: Gn4SettingsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21113
21363
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: GravatarService, providedIn: 'root' }); }
|
|
21114
21364
|
}
|
|
@@ -21260,6 +21510,39 @@ class Gn4PlatformMapper {
|
|
|
21260
21510
|
};
|
|
21261
21511
|
});
|
|
21262
21512
|
}
|
|
21513
|
+
userFeedbacksFromApi(userFeedback) {
|
|
21514
|
+
return {
|
|
21515
|
+
uuid: userFeedback.uuid,
|
|
21516
|
+
metadataUUID: userFeedback.metadataUUID,
|
|
21517
|
+
comment: userFeedback.comment,
|
|
21518
|
+
authorUserId: userFeedback.authorUserId.toString(),
|
|
21519
|
+
authorName: userFeedback.authorName,
|
|
21520
|
+
authorEmail: userFeedback.authorEmail,
|
|
21521
|
+
published: userFeedback.published,
|
|
21522
|
+
parentUuid: userFeedback.parentUuid ?? undefined,
|
|
21523
|
+
date: new Date(userFeedback.date),
|
|
21524
|
+
};
|
|
21525
|
+
}
|
|
21526
|
+
userFeedbacksToApi(userFeedback) {
|
|
21527
|
+
return {
|
|
21528
|
+
uuid: userFeedback.uuid,
|
|
21529
|
+
metadataUUID: userFeedback.metadataUUID,
|
|
21530
|
+
comment: userFeedback.comment,
|
|
21531
|
+
authorUserId: Number.parseInt(userFeedback.authorUserId),
|
|
21532
|
+
authorName: userFeedback.authorName,
|
|
21533
|
+
authorEmail: userFeedback.authorEmail,
|
|
21534
|
+
published: userFeedback.published,
|
|
21535
|
+
parentUuid: userFeedback.parentUuid,
|
|
21536
|
+
date: userFeedback.date.getTime().toString(),
|
|
21537
|
+
};
|
|
21538
|
+
}
|
|
21539
|
+
async createUserFeedbackViewModel(baseUserFeedback) {
|
|
21540
|
+
const userAvatarUrl = await this.avatarService.getProfileIconUrl(baseUserFeedback.authorUserId?.toString());
|
|
21541
|
+
return {
|
|
21542
|
+
...baseUserFeedback,
|
|
21543
|
+
avatarUrl: userAvatarUrl,
|
|
21544
|
+
};
|
|
21545
|
+
}
|
|
21263
21546
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformMapper, deps: [{ token: AvatarServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21264
21547
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformMapper }); }
|
|
21265
21548
|
}
|
|
@@ -21269,7 +21552,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
21269
21552
|
|
|
21270
21553
|
const minApiVersion = '4.2.2';
|
|
21271
21554
|
class Gn4PlatformService {
|
|
21272
|
-
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService) {
|
|
21555
|
+
constructor(siteApiService, meApi, usersApi, mapper, toolsApiService, registriesApiService, langService, userfeedbackApiService) {
|
|
21273
21556
|
this.siteApiService = siteApiService;
|
|
21274
21557
|
this.meApi = meApi;
|
|
21275
21558
|
this.usersApi = usersApi;
|
|
@@ -21277,6 +21560,7 @@ class Gn4PlatformService {
|
|
|
21277
21560
|
this.toolsApiService = toolsApiService;
|
|
21278
21561
|
this.registriesApiService = registriesApiService;
|
|
21279
21562
|
this.langService = langService;
|
|
21563
|
+
this.userfeedbackApiService = userfeedbackApiService;
|
|
21280
21564
|
this.type = 'GeoNetwork';
|
|
21281
21565
|
this.keyTranslations$ = this.toolsApiService
|
|
21282
21566
|
.getTranslationsPackage1('gnui')
|
|
@@ -21296,7 +21580,7 @@ class Gn4PlatformService {
|
|
|
21296
21580
|
*/
|
|
21297
21581
|
this.thesauri = {};
|
|
21298
21582
|
this.me$ = this.meApi.getMe().pipe(switchMap((apiUser) => this.mapper.userFromMeApi(apiUser)), shareReplay({ bufferSize: 1, refCount: true }));
|
|
21299
|
-
this.
|
|
21583
|
+
this.isUserAnonymous$ = this.me$.pipe(map$1((user) => !user || !('id' in user)));
|
|
21300
21584
|
this.users$ = this.usersApi.getUsers().pipe(map$1((users) => users.map((user) => this.mapper.userFromApi(user))), shareReplay());
|
|
21301
21585
|
}
|
|
21302
21586
|
getType() {
|
|
@@ -21309,7 +21593,7 @@ class Gn4PlatformService {
|
|
|
21309
21593
|
return this.me$;
|
|
21310
21594
|
}
|
|
21311
21595
|
isAnonymous() {
|
|
21312
|
-
return this.
|
|
21596
|
+
return this.isUserAnonymous$;
|
|
21313
21597
|
}
|
|
21314
21598
|
getOrganizations() {
|
|
21315
21599
|
return undefined;
|
|
@@ -21345,12 +21629,23 @@ class Gn4PlatformService {
|
|
|
21345
21629
|
.pipe(map$1((thesaurus) => this.mapper.thesaurusFromApi(thesaurus, this.langService.iso3)), shareReplay(1));
|
|
21346
21630
|
return this.thesauri[uri];
|
|
21347
21631
|
}
|
|
21348
|
-
|
|
21632
|
+
getUserFeedbacks(uuid) {
|
|
21633
|
+
return this.userfeedbackApiService
|
|
21634
|
+
.getUserComments(uuid)
|
|
21635
|
+
.pipe(map$1((userFeedbacks) => userFeedbacks.map(this.mapper.userFeedbacksFromApi)));
|
|
21636
|
+
}
|
|
21637
|
+
postUserFeedbacks(userFeedback) {
|
|
21638
|
+
const mappedUserFeedBack = this.mapper.userFeedbacksToApi(userFeedback);
|
|
21639
|
+
return this.userfeedbackApiService
|
|
21640
|
+
.newUserFeedback(mappedUserFeedBack)
|
|
21641
|
+
.pipe(map$1(() => undefined));
|
|
21642
|
+
}
|
|
21643
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, deps: [{ token: SiteApiService }, { token: MeApiService }, { token: UsersApiService }, { token: Gn4PlatformMapper }, { token: ToolsApiService }, { token: RegistriesApiService }, { token: LangService }, { token: UserfeedbackApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21349
21644
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService }); }
|
|
21350
21645
|
}
|
|
21351
21646
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: Gn4PlatformService, decorators: [{
|
|
21352
21647
|
type: Injectable
|
|
21353
|
-
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }]; } });
|
|
21648
|
+
}], ctorParameters: function () { return [{ type: SiteApiService }, { type: MeApiService }, { type: UsersApiService }, { type: Gn4PlatformMapper }, { type: ToolsApiService }, { type: RegistriesApiService }, { type: LangService }, { type: UserfeedbackApiService }]; } });
|
|
21354
21649
|
|
|
21355
21650
|
function provideGn4() {
|
|
21356
21651
|
return [
|
|
@@ -23754,6 +24049,173 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23754
24049
|
type: Input
|
|
23755
24050
|
}] } });
|
|
23756
24051
|
|
|
24052
|
+
class PopupAlertComponent {
|
|
24053
|
+
constructor(changeDetector) {
|
|
24054
|
+
this.changeDetector = changeDetector;
|
|
24055
|
+
this.type = 'info';
|
|
24056
|
+
this.position = 'top';
|
|
24057
|
+
this.expanded = false;
|
|
24058
|
+
this.timeout = null;
|
|
24059
|
+
}
|
|
24060
|
+
get showDuration() {
|
|
24061
|
+
const chars = this.content.nativeElement.innerHTML.length;
|
|
24062
|
+
return Math.max(3000, chars * 20);
|
|
24063
|
+
}
|
|
24064
|
+
ngOnInit() {
|
|
24065
|
+
this.expandAndClose();
|
|
24066
|
+
}
|
|
24067
|
+
expand() {
|
|
24068
|
+
this.expanded = true;
|
|
24069
|
+
this.changeDetector.detectChanges();
|
|
24070
|
+
clearTimeout(this.timeout);
|
|
24071
|
+
}
|
|
24072
|
+
expandAndClose() {
|
|
24073
|
+
this.expanded = true;
|
|
24074
|
+
this.changeDetector.detectChanges();
|
|
24075
|
+
clearTimeout(this.timeout);
|
|
24076
|
+
this.timeout = setTimeout(() => {
|
|
24077
|
+
this.expanded = false;
|
|
24078
|
+
this.changeDetector.detectChanges();
|
|
24079
|
+
}, this.showDuration);
|
|
24080
|
+
}
|
|
24081
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24082
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: { icon: "icon", type: "type", position: "position" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24083
|
+
}
|
|
24084
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, decorators: [{
|
|
24085
|
+
type: Component,
|
|
24086
|
+
args: [{ selector: 'gn-ui-popup-alert', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"] }]
|
|
24087
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { icon: [{
|
|
24088
|
+
type: Input
|
|
24089
|
+
}], type: [{
|
|
24090
|
+
type: Input
|
|
24091
|
+
}], position: [{
|
|
24092
|
+
type: Input
|
|
24093
|
+
}], content: [{
|
|
24094
|
+
type: ViewChild,
|
|
24095
|
+
args: ['content']
|
|
24096
|
+
}] } });
|
|
24097
|
+
|
|
24098
|
+
class AutocompleteComponent {
|
|
24099
|
+
constructor(cdRef) {
|
|
24100
|
+
this.cdRef = cdRef;
|
|
24101
|
+
this.clearOnSelection = false;
|
|
24102
|
+
this.autoFocus = false;
|
|
24103
|
+
this.itemSelected = new EventEmitter();
|
|
24104
|
+
this.inputSubmitted = new EventEmitter();
|
|
24105
|
+
this.inputCleared = new EventEmitter();
|
|
24106
|
+
this.control = new UntypedFormControl();
|
|
24107
|
+
this.subscription = new Subscription();
|
|
24108
|
+
this.cancelEnter = true;
|
|
24109
|
+
this.selectionSubject = new ReplaySubject(1);
|
|
24110
|
+
this.lastInputValue$ = new ReplaySubject(1);
|
|
24111
|
+
this.error = null;
|
|
24112
|
+
this.displayWithFn = (item) => item;
|
|
24113
|
+
}
|
|
24114
|
+
ngOnChanges(changes) {
|
|
24115
|
+
const { value } = changes;
|
|
24116
|
+
if (value) {
|
|
24117
|
+
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24118
|
+
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24119
|
+
if (previousTextValue !== currentTextValue) {
|
|
24120
|
+
this.updateInputValue(value.currentValue);
|
|
24121
|
+
}
|
|
24122
|
+
}
|
|
24123
|
+
}
|
|
24124
|
+
ngOnInit() {
|
|
24125
|
+
this.suggestions$ = merge(this.control.valueChanges.pipe(filter((value) => typeof value === 'string'), filter((value) => value.length > 2), debounceTime(400), distinctUntilChanged(), tap$1(() => (this.searching = true))), this.control.valueChanges.pipe(filter((value) => typeof value === 'object' && value.title), map$1((item) => item.title))).pipe(switchMap$1((value) => (value ? this.action(value) : of([]))), catchError((error) => {
|
|
24126
|
+
this.error = error.message;
|
|
24127
|
+
return of([]);
|
|
24128
|
+
}), finalize(() => (this.searching = false)));
|
|
24129
|
+
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24130
|
+
if (any !== '') {
|
|
24131
|
+
this.cancelEnter = false;
|
|
24132
|
+
}
|
|
24133
|
+
});
|
|
24134
|
+
this.control.valueChanges
|
|
24135
|
+
.pipe(filter((value) => typeof value === 'string'))
|
|
24136
|
+
.subscribe(this.lastInputValue$);
|
|
24137
|
+
}
|
|
24138
|
+
ngAfterViewInit() {
|
|
24139
|
+
this.autocomplete.optionSelected.subscribe(this.selectionSubject);
|
|
24140
|
+
if (this.autoFocus) {
|
|
24141
|
+
this.inputRef.nativeElement.focus();
|
|
24142
|
+
this.cdRef.detectChanges();
|
|
24143
|
+
}
|
|
24144
|
+
}
|
|
24145
|
+
ngOnDestroy() {
|
|
24146
|
+
this.subscription.unsubscribe();
|
|
24147
|
+
}
|
|
24148
|
+
updateInputValue(value) {
|
|
24149
|
+
if (value) {
|
|
24150
|
+
this.control.setValue(value);
|
|
24151
|
+
}
|
|
24152
|
+
if (this.inputRef) {
|
|
24153
|
+
this.inputRef.nativeElement.value = value?.title || '';
|
|
24154
|
+
}
|
|
24155
|
+
}
|
|
24156
|
+
clear() {
|
|
24157
|
+
this.inputRef.nativeElement.value = '';
|
|
24158
|
+
this.inputCleared.emit();
|
|
24159
|
+
this.selectionSubject
|
|
24160
|
+
.pipe(take(1))
|
|
24161
|
+
.subscribe((selection) => selection && selection.option.deselect());
|
|
24162
|
+
this.inputRef.nativeElement.focus();
|
|
24163
|
+
this.triggerRef.closePanel();
|
|
24164
|
+
}
|
|
24165
|
+
handleEnter(any) {
|
|
24166
|
+
if (!this.cancelEnter) {
|
|
24167
|
+
this.inputSubmitted.emit(any);
|
|
24168
|
+
this.triggerRef.closePanel();
|
|
24169
|
+
}
|
|
24170
|
+
}
|
|
24171
|
+
handleClickSearch() {
|
|
24172
|
+
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24173
|
+
this.triggerRef.closePanel();
|
|
24174
|
+
}
|
|
24175
|
+
handleSelection(event) {
|
|
24176
|
+
this.cancelEnter = true;
|
|
24177
|
+
this.itemSelected.emit(event.option.value);
|
|
24178
|
+
if (this.clearOnSelection) {
|
|
24179
|
+
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24180
|
+
this.inputRef.nativeElement.value = any;
|
|
24181
|
+
});
|
|
24182
|
+
}
|
|
24183
|
+
}
|
|
24184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24185
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AutocompleteComponent, selector: "gn-ui-autocomplete", inputs: { placeholder: "placeholder", action: "action", value: "value", clearOnSelection: "clearOnSelection", autoFocus: "autoFocus", displayWithFn: "displayWithFn" }, outputs: { itemSelected: "itemSelected", inputSubmitted: "inputSubmitted", inputCleared: "inputCleared" }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: MatAutocompleteTrigger, descendants: true }, { propertyName: "autocomplete", first: true, predicate: MatAutocomplete, descendants: true }, { propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i4.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: ["icon", "type", "position"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24186
|
+
}
|
|
24187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AutocompleteComponent, decorators: [{
|
|
24188
|
+
type: Component,
|
|
24189
|
+
args: [{ selector: 'gn-ui-autocomplete', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"relative\">\n <input\n #searchInput\n type=\"text\"\n class=\"appearance-none focus:outline-white focus:outline-2 focus:outline-dotted focus:outline-offset-2 leading-tight rounded w-full text-black shadow-xl focus:shadow-[0_0_24px_0_rgba(21,40,184,0.09)]\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"handleEnter(searchInput.value)\"\n />\n <button\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary hover:bg-gray-50 absolute transition-all duration-100 clear-btn inset-y-0\"\n *ngIf=\"searchInput.value\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined\">close</mat-icon>\n </button>\n <button\n type=\"button\"\n class=\"text-primary bg-white hover:text-primary-darkest hover:bg-gray-100 border-gray-300 hover:border-gray-500 absolute transition-all duration-100 search-btn rounded-r inset-y-0 right-0\"\n aria-label=\"Trigger search\"\n (click)=\"handleClickSearch()\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </button>\n <gn-ui-popup-alert\n *ngIf=\"error\"\n class=\"absolute mt-2 w-full top-[100%] left-0\"\n icon=\"error_outline\"\n position=\"top\"\n type=\"warning\"\n >\n <span translate>search.autocomplete.error</span>\n {{ error }}\n </gn-ui-popup-alert>\n</div>\n<mat-autocomplete\n #auto=\"matAutocomplete\"\n (optionSelected)=\"handleSelection($event)\"\n [displayWith]=\"displayWithFn\"\n>\n <mat-option\n *ngFor=\"let suggestion of suggestions$ | async\"\n [value]=\"suggestion\"\n class=\"p-2 suggestion\"\n >\n {{ displayWithFn(suggestion) }}\n </mat-option>\n</mat-autocomplete>\n", styles: [":host{--input-height: 3.5em}.clear-btn{width:var(--input-height);right:var(--input-height);height:100%}.search-btn{width:var(--input-height);height:100%;border-left-width:.1em}mat-icon{width:100%;height:100%;padding:.65em;font-size:1.5em}input{height:var(--input-height);padding:1.05em;padding-right:calc(2 * var(--input-height))}input:placeholder-shown{text-overflow:ellipsis}.mat-mdc-option.suggestion.mat-mdc-option-active{background-color:var(--color-primary-lightest)}\n"] }]
|
|
24190
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { placeholder: [{
|
|
24191
|
+
type: Input
|
|
24192
|
+
}], action: [{
|
|
24193
|
+
type: Input
|
|
24194
|
+
}], value: [{
|
|
24195
|
+
type: Input
|
|
24196
|
+
}], clearOnSelection: [{
|
|
24197
|
+
type: Input
|
|
24198
|
+
}], autoFocus: [{
|
|
24199
|
+
type: Input
|
|
24200
|
+
}], itemSelected: [{
|
|
24201
|
+
type: Output
|
|
24202
|
+
}], inputSubmitted: [{
|
|
24203
|
+
type: Output
|
|
24204
|
+
}], inputCleared: [{
|
|
24205
|
+
type: Output
|
|
24206
|
+
}], triggerRef: [{
|
|
24207
|
+
type: ViewChild,
|
|
24208
|
+
args: [MatAutocompleteTrigger]
|
|
24209
|
+
}], autocomplete: [{
|
|
24210
|
+
type: ViewChild,
|
|
24211
|
+
args: [MatAutocomplete]
|
|
24212
|
+
}], inputRef: [{
|
|
24213
|
+
type: ViewChild,
|
|
24214
|
+
args: ['searchInput']
|
|
24215
|
+
}], displayWithFn: [{
|
|
24216
|
+
type: Input
|
|
24217
|
+
}] } });
|
|
24218
|
+
|
|
23757
24219
|
class ButtonComponent {
|
|
23758
24220
|
constructor() {
|
|
23759
24221
|
this.btnClass = 'gn-ui-btn-default';
|
|
@@ -23805,171 +24267,213 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
23805
24267
|
type: Output
|
|
23806
24268
|
}] } });
|
|
23807
24269
|
|
|
23808
|
-
|
|
23809
|
-
class DropdownSelectorComponent {
|
|
24270
|
+
class CheckToggleComponent {
|
|
23810
24271
|
constructor() {
|
|
23811
|
-
this.
|
|
23812
|
-
this.
|
|
23813
|
-
this.minWidth = '';
|
|
23814
|
-
this.selectValue = new EventEmitter();
|
|
23815
|
-
this.overlayOpen = false;
|
|
23816
|
-
this.overlayWidth = 'auto';
|
|
23817
|
-
this.overlayMaxHeight = 'none';
|
|
23818
|
-
this.overlayPositions = [
|
|
23819
|
-
{
|
|
23820
|
-
originX: 'start',
|
|
23821
|
-
originY: 'bottom',
|
|
23822
|
-
overlayX: 'start',
|
|
23823
|
-
overlayY: 'top',
|
|
23824
|
-
offsetY: 8,
|
|
23825
|
-
},
|
|
23826
|
-
{
|
|
23827
|
-
originX: 'start',
|
|
23828
|
-
originY: 'top',
|
|
23829
|
-
overlayX: 'start',
|
|
23830
|
-
overlayY: 'bottom',
|
|
23831
|
-
offsetY: -8,
|
|
23832
|
-
},
|
|
23833
|
-
];
|
|
23834
|
-
}
|
|
23835
|
-
get selectedChoice() {
|
|
23836
|
-
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
23837
|
-
this.choices[0]);
|
|
23838
|
-
}
|
|
23839
|
-
get id() {
|
|
23840
|
-
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
23841
|
-
}
|
|
23842
|
-
getChoiceLabel() {
|
|
23843
|
-
return this.selectedChoice?.label;
|
|
23844
|
-
}
|
|
23845
|
-
ngOnInit() {
|
|
23846
|
-
if (!this.maxRows)
|
|
23847
|
-
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
23848
|
-
if (!this.choices || this.choices.length === 0) {
|
|
23849
|
-
this.choices = [];
|
|
23850
|
-
}
|
|
23851
|
-
}
|
|
23852
|
-
isSelected(choice) {
|
|
23853
|
-
return choice === this.selectedChoice;
|
|
24272
|
+
this.color = 'primary';
|
|
24273
|
+
this.toggled = new EventEmitter();
|
|
23854
24274
|
}
|
|
23855
|
-
|
|
23856
|
-
this.
|
|
23857
|
-
this.selected = choice.value;
|
|
23858
|
-
this.selectValue.emit(this.selected);
|
|
24275
|
+
toggle(event) {
|
|
24276
|
+
this.toggled.emit(event);
|
|
23859
24277
|
}
|
|
23860
|
-
|
|
23861
|
-
|
|
23862
|
-
|
|
23863
|
-
|
|
23864
|
-
|
|
23865
|
-
|
|
23866
|
-
|
|
23867
|
-
|
|
23868
|
-
|
|
23869
|
-
|
|
23870
|
-
|
|
23871
|
-
|
|
24278
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24279
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckToggleComponent, selector: "gn-ui-check-toggle", inputs: { title: "title", label: "label", value: "value", color: "color" }, outputs: { toggled: "toggled" }, ngImport: i0, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n", styles: [""], dependencies: [{ kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24280
|
+
}
|
|
24281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckToggleComponent, decorators: [{
|
|
24282
|
+
type: Component,
|
|
24283
|
+
args: [{ selector: 'gn-ui-check-toggle', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label class=\"inline-flex relative items-start cursor-pointer\" [title]=\"title\">\n <span class=\"shrink-0\">\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [ngModel]=\"value\"\n (ngModelChange)=\"toggle($event)\"\n />\n <div\n class=\"w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-2 rounded-full peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all\"\n [class]=\"\n color === 'secondary'\n ? 'peer-focus:ring-secondary-lighter peer-checked:bg-secondary'\n : 'peer-focus:ring-primary-lighter peer-checked:bg-primary'\n \"\n ></div>\n </span>\n <span class=\"ml-3 mt-[2px] text-sm font-medium\">{{ label }}</span>\n</label>\n" }]
|
|
24284
|
+
}], propDecorators: { title: [{
|
|
24285
|
+
type: Input
|
|
24286
|
+
}], label: [{
|
|
24287
|
+
type: Input
|
|
24288
|
+
}], value: [{
|
|
24289
|
+
type: Input
|
|
24290
|
+
}], color: [{
|
|
24291
|
+
type: Input
|
|
24292
|
+
}], toggled: [{
|
|
24293
|
+
type: Output
|
|
24294
|
+
}] } });
|
|
24295
|
+
|
|
24296
|
+
class CheckboxComponent {
|
|
24297
|
+
constructor() {
|
|
24298
|
+
this.type = 'default';
|
|
24299
|
+
this.checked = false;
|
|
24300
|
+
this.indeterminate = false;
|
|
24301
|
+
this.changed = new EventEmitter();
|
|
23872
24302
|
}
|
|
23873
|
-
|
|
23874
|
-
this.
|
|
24303
|
+
get classList() {
|
|
24304
|
+
return `${this.type}`;
|
|
23875
24305
|
}
|
|
23876
|
-
|
|
23877
|
-
|
|
24306
|
+
handleClick(event) {
|
|
24307
|
+
event.stopPropagation();
|
|
24308
|
+
this.checked = !this.checked;
|
|
24309
|
+
this.changed.emit(this.checked);
|
|
23878
24310
|
}
|
|
23879
|
-
|
|
23880
|
-
|
|
24311
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24312
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: { type: "type", checked: "checked", indeterminate: "indeterminate" }, outputs: { changed: "changed" }, ngImport: i0, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"], dependencies: [{ kind: "component", type: i1$4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24313
|
+
}
|
|
24314
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
24315
|
+
type: Component,
|
|
24316
|
+
args: [{ selector: 'gn-ui-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-checkbox\n class=\"cursor-pointer\"\n [class]=\"classList\"\n [checked]=\"checked\"\n [indeterminate]=\"indeterminate\"\n (click)=\"handleClick($event)\"\n></mat-checkbox>\n", styles: [".default{--gn-ui-checkbox-color: var(--color-main)}.secondary{--gn-ui-checkbox-color: var(--color-secondary)}.primary{--gn-ui-checkbox-color: var(--color-primary)}mat-checkbox{--mdc-checkbox-selected-focus-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-icon-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-focus-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-hover-state-layer-color: var(--gn-ui-checkbox-color);--mdc-checkbox-selected-pressed-state-layer-color: var( --gn-ui-checkbox-color )}\n"] }]
|
|
24317
|
+
}], propDecorators: { type: [{
|
|
24318
|
+
type: Input
|
|
24319
|
+
}], checked: [{
|
|
24320
|
+
type: Input
|
|
24321
|
+
}], indeterminate: [{
|
|
24322
|
+
type: Input
|
|
24323
|
+
}], changed: [{
|
|
24324
|
+
type: Output
|
|
24325
|
+
}] } });
|
|
24326
|
+
|
|
24327
|
+
class ChipsInputComponent {
|
|
24328
|
+
onChange(event) {
|
|
24329
|
+
this.rawChange.next(event);
|
|
23881
24330
|
}
|
|
23882
|
-
|
|
23883
|
-
|
|
23884
|
-
|
|
23885
|
-
|
|
23886
|
-
|
|
23887
|
-
|
|
23888
|
-
|
|
23889
|
-
|
|
23890
|
-
|
|
23891
|
-
|
|
23892
|
-
|
|
23893
|
-
|
|
23894
|
-
|
|
24331
|
+
constructor(http, translate) {
|
|
24332
|
+
this.http = http;
|
|
24333
|
+
this.translate = translate;
|
|
24334
|
+
this.required = false;
|
|
24335
|
+
this.loadOnce = false;
|
|
24336
|
+
this.autocompleteItems = [];
|
|
24337
|
+
this.invalid = false;
|
|
24338
|
+
this.items = [];
|
|
24339
|
+
this.requestAutocompleteItems = (text) => {
|
|
24340
|
+
if (this.url) {
|
|
24341
|
+
if (this.loadOnce && this.loadedItems) {
|
|
24342
|
+
return this.loadedItems;
|
|
24343
|
+
}
|
|
24344
|
+
const url = this.url(text);
|
|
24345
|
+
const lang = LANG_2_TO_3_MAPPER[this.translate.currentLang.slice(0, 2)];
|
|
24346
|
+
return this.http
|
|
24347
|
+
.get(url.replace('${lang}', lang))
|
|
24348
|
+
.pipe(map$1((item) => item.map((i) => i.values[lang])));
|
|
23895
24349
|
}
|
|
23896
|
-
|
|
23897
|
-
this.
|
|
23898
|
-
|
|
23899
|
-
|
|
23900
|
-
|
|
23901
|
-
|
|
23902
|
-
|
|
23903
|
-
this.closeOverlay();
|
|
23904
|
-
}
|
|
24350
|
+
else {
|
|
24351
|
+
return of(this.autocompleteItems || []);
|
|
24352
|
+
}
|
|
24353
|
+
};
|
|
24354
|
+
this.rawChange = new Subject();
|
|
24355
|
+
this.itemsChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24356
|
+
this.subscription = new Subscription();
|
|
23905
24357
|
}
|
|
23906
|
-
|
|
23907
|
-
if (
|
|
23908
|
-
|
|
23909
|
-
const keyCode = event.code;
|
|
23910
|
-
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
23911
|
-
event.preventDefault();
|
|
23912
|
-
this.shiftItemFocus(1);
|
|
23913
|
-
}
|
|
23914
|
-
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
23915
|
-
event.preventDefault();
|
|
23916
|
-
this.shiftItemFocus(-1);
|
|
23917
|
-
}
|
|
23918
|
-
else if (keyCode === 'Escape') {
|
|
23919
|
-
this.closeOverlay();
|
|
24358
|
+
ngOnInit() {
|
|
24359
|
+
if (this.loadOnce) {
|
|
24360
|
+
this.loadedItems = this.requestAutocompleteItems('*').pipe(shareReplay(1));
|
|
23920
24361
|
}
|
|
24362
|
+
this.items = this.selectedItems;
|
|
24363
|
+
this.subscription = this.rawChange
|
|
24364
|
+
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24365
|
+
.subscribe();
|
|
24366
|
+
this.rawChange.next(this.items);
|
|
23921
24367
|
}
|
|
23922
|
-
|
|
23923
|
-
|
|
23924
|
-
if (index === -1)
|
|
23925
|
-
return;
|
|
23926
|
-
const max = this.choiceInputs.length;
|
|
23927
|
-
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
23928
|
-
const newIndex = (((index + shift) % max) + max) % max;
|
|
23929
|
-
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24368
|
+
ngOnDestroy() {
|
|
24369
|
+
this.subscription.unsubscribe();
|
|
23930
24370
|
}
|
|
23931
|
-
|
|
23932
|
-
|
|
24371
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, deps: [{ token: i1.HttpClient }, { token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24372
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: { url: "url", placeholder: "placeholder", selectedItems: "selectedItems", required: "required", loadOnce: "loadOnce", autocompleteItems: "autocompleteItems" }, outputs: { itemsChange: "itemsChange" }, ngImport: i0, template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5$1.TagInputComponent, selector: "tag-input", inputs: ["separatorKeys", "separatorKeyCodes", "placeholder", "secondaryPlaceholder", "maxItems", "validators", "asyncValidators", "onlyFromAutocomplete", "errorMessages", "theme", "onTextChangeDebounce", "inputId", "inputClass", "clearOnBlur", "hideForm", "addOnBlur", "addOnPaste", "pasteSplitPattern", "blinkIfDupe", "removable", "editable", "allowDupes", "modelAsStrings", "trimTags", "inputText", "ripple", "tabindex", "disable", "dragZone", "onRemoving", "onAdding", "animationDuration"], outputs: ["onAdd", "onRemove", "onSelect", "onFocus", "onBlur", "onTextChange", "onPaste", "onValidationError", "onTagEdited", "inputTextChange"] }, { kind: "component", type: i5$1.TagInputDropdown, selector: "tag-input-dropdown", inputs: ["offset", "focusFirstElement", "showDropdownIfEmpty", "autocompleteObservable", "minimumTextLength", "limitItemsTo", "displayBy", "identifyBy", "matchingFn", "appendToBody", "keepOpen", "dynamicUpdate", "zIndex", "autocompleteItems"] }] }); }
|
|
24373
|
+
}
|
|
24374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ChipsInputComponent, decorators: [{
|
|
24375
|
+
type: Component,
|
|
24376
|
+
args: [{ selector: 'gn-ui-chips-input', template: "<tag-input\n [ngModel]=\"items\"\n (ngModelChange)=\"onChange($event)\"\n onlyFromAutocomplete=\"true\"\n [placeholder]=\"placeholder\"\n [secondaryPlaceholder]=\"placeholder\"\n [ripple]=\"false\"\n [animationDuration]=\"{ enter: '0ms', leave: '0ms' }\"\n [onTextChangeDebounce]=\"100\"\n class=\"border-2 border-primary h-full rounded-lg p-2 bg-white text-sm focus:border-primary\"\n [ngClass]=\"{ invalid: invalid }\"\n>\n <tag-input-dropdown\n [autocompleteObservable]=\"requestAutocompleteItems\"\n [minimumTextLength]=\"0\"\n [keepOpen]=\"false\"\n [showDropdownIfEmpty]=\"true\"\n >\n <ng-template let-item=\"item\" let-index=\"index\">\n {{ item.display }}\n </ng-template>\n </tag-input-dropdown>\n</tag-input>\n", styles: ["tag-input::ng-deep .ng2-tag-input{border-bottom:none}tag-input::ng-deep .ng2-tag-input.ng2-tag-input--focused{border-bottom:none}tag-input::ng-deep tag{border-radius:5px;background:var(--color-primary-lightest);font-family:inherit;align-content:center;font-style:italic}tag-input::ng-deep tag::ng-deep:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover,tag-input::ng-deep tag:not(:focus):not(.tag--editing):not(:active):not(.readonly):hover{background:var(--color-primary)!important}tag-input::ng-deep .tag__text{padding-right:7px}tag-input::ng-deep div,tag-input::ng-deep form{height:100%}tag-input.invalid{border-color:var(--color-secondary)}\n"] }]
|
|
24377
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i1$1.TranslateService }]; }, propDecorators: { url: [{
|
|
24378
|
+
type: Input
|
|
24379
|
+
}], placeholder: [{
|
|
24380
|
+
type: Input
|
|
24381
|
+
}], selectedItems: [{
|
|
24382
|
+
type: Input
|
|
24383
|
+
}], required: [{
|
|
24384
|
+
type: Input
|
|
24385
|
+
}], loadOnce: [{
|
|
24386
|
+
type: Input
|
|
24387
|
+
}], autocompleteItems: [{
|
|
24388
|
+
type: Input
|
|
24389
|
+
}], itemsChange: [{
|
|
24390
|
+
type: Output
|
|
24391
|
+
}] } });
|
|
24392
|
+
|
|
24393
|
+
class CopyTextButtonComponent {
|
|
24394
|
+
constructor() {
|
|
24395
|
+
this.displayText = true;
|
|
24396
|
+
this.rows = 1;
|
|
23933
24397
|
}
|
|
23934
|
-
|
|
23935
|
-
|
|
23936
|
-
|
|
23937
|
-
this.onSelectValue(choice);
|
|
23938
|
-
}
|
|
24398
|
+
copyText(event) {
|
|
24399
|
+
navigator.clipboard.writeText(this.text);
|
|
24400
|
+
event.target.blur();
|
|
23939
24401
|
}
|
|
23940
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
23941
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24402
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24403
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: { text: "text", tooltipText: "tooltipText", displayText: "displayText", rows: "rows" }, ngImport: i0, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23942
24404
|
}
|
|
23943
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24405
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
23944
24406
|
type: Component,
|
|
23945
|
-
args: [{ selector: 'gn-ui-
|
|
23946
|
-
}], propDecorators: {
|
|
23947
|
-
type: Input
|
|
23948
|
-
}], showTitle: [{
|
|
24407
|
+
args: [{ selector: 'gn-ui-copy-text-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n" }]
|
|
24408
|
+
}], propDecorators: { text: [{
|
|
23949
24409
|
type: Input
|
|
23950
|
-
}],
|
|
24410
|
+
}], tooltipText: [{
|
|
23951
24411
|
type: Input
|
|
23952
|
-
}],
|
|
24412
|
+
}], displayText: [{
|
|
23953
24413
|
type: Input
|
|
23954
|
-
}],
|
|
24414
|
+
}], rows: [{
|
|
23955
24415
|
type: Input
|
|
23956
|
-
}]
|
|
24416
|
+
}] } });
|
|
24417
|
+
|
|
24418
|
+
class DatePickerComponent {
|
|
24419
|
+
constructor() {
|
|
24420
|
+
this.dateChange = new EventEmitter();
|
|
24421
|
+
}
|
|
24422
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24423
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DatePickerComponent, isStandalone: true, selector: "gn-ui-date-picker", inputs: { date: "date" }, outputs: { dateChange: "dateChange" }, ngImport: i0, template: "<div\n class=\"flex items-center justify-between pl-3 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i2$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
|
|
24424
|
+
}
|
|
24425
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DatePickerComponent, decorators: [{
|
|
24426
|
+
type: Component,
|
|
24427
|
+
args: [{ selector: 'gn-ui-date-picker', standalone: true, imports: [MatIconModule, MatNativeDateModule, MatDatepickerModule], template: "<div\n class=\"flex items-center justify-between pl-3 rounded-lg border border-gray-300 bg-white\"\n>\n <input\n [matDatepicker]=\"picker\"\n [value]=\"date\"\n (dateChange)=\"dateChange.emit($event.value)\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\n</div>\n<mat-datepicker #picker></mat-datepicker>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
24428
|
+
}], propDecorators: { date: [{
|
|
23957
24429
|
type: Input
|
|
23958
|
-
}],
|
|
24430
|
+
}], dateChange: [{
|
|
24431
|
+
type: Output
|
|
24432
|
+
}] } });
|
|
24433
|
+
|
|
24434
|
+
class DateRangePickerComponent {
|
|
24435
|
+
startDateSelected(event) {
|
|
24436
|
+
this.startDate = event.value;
|
|
24437
|
+
}
|
|
24438
|
+
endDateSelected(event) {
|
|
24439
|
+
this.endDate = event.value;
|
|
24440
|
+
}
|
|
24441
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24442
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DateRangePickerComponent, isStandalone: true, selector: "gn-ui-date-range-picker", ngImport: i0, template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i2$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i2$2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i2$2.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i2$2.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i2$2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
|
|
24443
|
+
}
|
|
24444
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
24445
|
+
type: Component,
|
|
24446
|
+
args: [{ selector: 'gn-ui-date-range-picker', standalone: true, imports: [MatIconModule, MatNativeDateModule, MatDatepickerModule], template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
24447
|
+
}] });
|
|
24448
|
+
|
|
24449
|
+
const placeholder = 'dropFile';
|
|
24450
|
+
marker('dropFile');
|
|
24451
|
+
class DragAndDropFileInputComponent {
|
|
24452
|
+
constructor() {
|
|
24453
|
+
this.placeholder = placeholder;
|
|
24454
|
+
this.accept = '*';
|
|
24455
|
+
this.fileChange = new EventEmitter();
|
|
24456
|
+
this.selectedFile = null;
|
|
24457
|
+
}
|
|
24458
|
+
get fileName() {
|
|
24459
|
+
return this.selectedFile && this.selectedFile.name;
|
|
24460
|
+
}
|
|
24461
|
+
selectFile(event) {
|
|
24462
|
+
this.selectedFile = event.addedFiles[0];
|
|
24463
|
+
this.fileChange.emit(this.selectedFile);
|
|
24464
|
+
}
|
|
24465
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24466
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: { placeholder: "placeholder", accept: "accept" }, outputs: { fileChange: "fileChange" }, ngImport: i0, template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3$1.NgxDropzoneComponent, selector: "ngx-dropzone, [ngx-dropzone]", inputs: ["accept", "disabled", "multiple", "maxFileSize", "expandable", "disableClick", "processDirectoryDrop", "id", "aria-label", "aria-labelledby", "aria-describedby"], outputs: ["change"] }] }); }
|
|
24467
|
+
}
|
|
24468
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DragAndDropFileInputComponent, decorators: [{
|
|
24469
|
+
type: Component,
|
|
24470
|
+
args: [{ selector: 'gn-ui-drag-and-drop-file-input', template: "<div class=\"flex h-full\">\n <ngx-dropzone\n class=\"flex-1\"\n multiple=\"false\"\n (change)=\"selectFile($event)\"\n [accept]=\"accept\"\n >\n <div *ngIf=\"!fileName\" class=\"text-gray-900 pl-2 py-2\" translate=\"\">\n {{ placeholder }}\n </div>\n\n <div *ngIf=\"fileName\" class=\"text-gray-900 pl-2 py-2\">{{ fileName }}</div>\n </ngx-dropzone>\n</div>\n", styles: ["ngx-dropzone{height:auto;border:none}\n"] }]
|
|
24471
|
+
}], propDecorators: { placeholder: [{
|
|
23959
24472
|
type: Input
|
|
23960
|
-
}],
|
|
24473
|
+
}], accept: [{
|
|
23961
24474
|
type: Input
|
|
23962
|
-
}],
|
|
24475
|
+
}], fileChange: [{
|
|
23963
24476
|
type: Output
|
|
23964
|
-
}], overlayOrigin: [{
|
|
23965
|
-
type: ViewChild,
|
|
23966
|
-
args: ['overlayOrigin']
|
|
23967
|
-
}], overlay: [{
|
|
23968
|
-
type: ViewChild,
|
|
23969
|
-
args: [CdkConnectedOverlay]
|
|
23970
|
-
}], choiceInputs: [{
|
|
23971
|
-
type: ViewChildren,
|
|
23972
|
-
args: ['choiceInputs', { read: ElementRef }]
|
|
23973
24477
|
}] } });
|
|
23974
24478
|
|
|
23975
24479
|
class DropdownMultiselectComponent {
|
|
@@ -24117,13 +24621,13 @@ class DropdownMultiselectComponent {
|
|
|
24117
24621
|
propagateToDocumentOnly(event);
|
|
24118
24622
|
this.setFocus();
|
|
24119
24623
|
}
|
|
24120
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$
|
|
24121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$
|
|
24624
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, deps: [{ token: i1$5.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24625
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownMultiselectComponent, selector: "gn-ui-dropdown-multiselect", inputs: { title: "title", choices: "choices", selected: "selected", allowSearch: "allowSearch", maxRows: "maxRows", searchInputValue: "searchInputValue" }, outputs: { selectValues: "selectValues" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "overlayContainer", first: true, predicate: ["overlayContainer"], descendants: true, read: ElementRef }, { propertyName: "searchFieldInput", first: true, predicate: ["searchFieldInput"], descendants: true }, { propertyName: "checkboxes", predicate: ["checkBox"], descendants: true, read: ElementRef }], ngImport: i0, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i1$5.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"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.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: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24122
24626
|
}
|
|
24123
24627
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownMultiselectComponent, decorators: [{
|
|
24124
24628
|
type: Component,
|
|
24125
24629
|
args: [{ selector: 'gn-ui-dropdown-multiselect', changeDetection: ChangeDetectionStrategy.OnPush, template: "<gn-ui-button\n type=\"outline\"\n extraClass=\"bg-background w-full !p-[8px] !pl-[16px]\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n (keydown)=\"handleTriggerKeydown($event)\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n>\n <div class=\"grow flex items-center mr-2 gap-2 overflow-hidden\">\n <div class=\"text-left font-medium truncate py-1\">\n {{ title }}\n </div>\n <div\n *ngIf=\"hasSelectedChoices\"\n class=\"shrink-0 rounded-full text-primary bg-primary-opacity-25 text-white font-bold text-[12px] w-5 h-5 flex items-center justify-center mr-1 selected-count\"\n >\n {{ selected.length }}\n </div>\n </div>\n <button class=\"h-6 w-6\" data-cy=\"clearSelection\">\n <mat-icon\n class=\"material-symbols-outlined shrink-0 opacity-40 mr-1.5 hover:opacity-80 transition-colors clear-btn\"\n *ngIf=\"hasSelectedChoices && !overlayOpen\"\n (click)=\"clearSelection($event)\"\n >\n close\n </mat-icon>\n </button>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n</gn-ui-button>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n #overlayContainer\n >\n <div\n class=\"border border-gray-300 rounded mb-2 mx-2 min-h-[44px] flex flex-row flex-wrap p-2 focus-within:rounded focus-within:border-2 focus-within:border-primary\"\n >\n <button\n type=\"button\"\n *ngFor=\"let selected of selectedChoices\"\n [title]=\"selected.label\"\n class=\"max-w-full bg-main text-white rounded pr-[7px] flex gap-1 items-center opacity-70 hover:opacity-100 focus:opacity-100 transition-opacity mb-1\"\n (click)=\"select(selected, false)\"\n >\n <div class=\"text-sm truncate leading-[26px] px-2\">\n {{ selected.label }}\n </div>\n <div\n class=\"flex items-center justify-center rounded-full bg-white text-main h-[13px] w-[13px] pt-px -mt-px shrink-0\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[12px] !w-[12px] text-[12px]\"\n >\n close</mat-icon\n >\n </div>\n </button>\n\n <div *ngIf=\"allowSearch\" class=\"w-[50%] relative grow shrink\">\n <input\n #searchFieldInput\n class=\"w-full px-2 truncate text-[14px] h-full overlaySearchInput focus:outline-none\"\n [(ngModel)]=\"searchInputValue\"\n [placeholder]=\"'multiselect.filter.placeholder' | translate\"\n />\n <button\n *ngIf=\"!!searchInputValue\"\n class=\"absolute top-1/2 -translate-y-1/2 right-0 px-[7px] leading-tight clear-search-input mr-2\"\n (click)=\"clearSearchInputValue($event)\"\n >\n <mat-icon\n class=\"material-symbols-outlined !h-[10px] !w-[12px] text-[12px]\"\n >\n close\n </mat-icon>\n </button>\n </div>\n </div>\n\n <label\n *ngFor=\"let choice of filteredChoicesByText\"\n [title]=\"choice.label\"\n class=\"flex px-5 py-1 w-full text-gray-900 cursor-pointer hover:text-primary-darkest hover:bg-gray-50 focus-within:text-primary-darkest focus-within:bg-gray-50 transition-colors\"\n >\n <input\n class=\"w-[18px] h-[18px] align-text-top shrink-0\"\n type=\"checkbox\"\n #checkBox\n [checked]=\"isSelected(choice)\"\n (change)=\"select(choice, checkBox.checked)\"\n />\n <span class=\"ml-[8px] text-[14px] truncate\">\n {{ choice.label }}\n </span>\n </label>\n </div>\n</ng-template>\n" }]
|
|
24126
|
-
}], ctorParameters: function () { return [{ type: i1$
|
|
24630
|
+
}], ctorParameters: function () { return [{ type: i1$5.ScrollStrategyOptions }]; }, propDecorators: { title: [{
|
|
24127
24631
|
type: Input
|
|
24128
24632
|
}], choices: [{
|
|
24129
24633
|
type: Input
|
|
@@ -24154,311 +24658,263 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24154
24658
|
args: ['checkBox', { read: ElementRef }]
|
|
24155
24659
|
}] } });
|
|
24156
24660
|
|
|
24157
|
-
|
|
24661
|
+
const DEFAULT_ROW_NUMBERS = 6;
|
|
24662
|
+
class DropdownSelectorComponent {
|
|
24158
24663
|
constructor() {
|
|
24159
|
-
this.
|
|
24160
|
-
this.
|
|
24161
|
-
this.
|
|
24162
|
-
this.
|
|
24664
|
+
this.showTitle = true;
|
|
24665
|
+
this.extraBtnClass = '';
|
|
24666
|
+
this.minWidth = '';
|
|
24667
|
+
this.selectValue = new EventEmitter();
|
|
24668
|
+
this.overlayOpen = false;
|
|
24669
|
+
this.overlayWidth = 'auto';
|
|
24670
|
+
this.overlayMaxHeight = 'none';
|
|
24671
|
+
this.overlayPositions = [
|
|
24672
|
+
{
|
|
24673
|
+
originX: 'start',
|
|
24674
|
+
originY: 'bottom',
|
|
24675
|
+
overlayX: 'start',
|
|
24676
|
+
overlayY: 'top',
|
|
24677
|
+
offsetY: 8,
|
|
24678
|
+
},
|
|
24679
|
+
{
|
|
24680
|
+
originX: 'start',
|
|
24681
|
+
originY: 'top',
|
|
24682
|
+
overlayX: 'start',
|
|
24683
|
+
overlayY: 'bottom',
|
|
24684
|
+
offsetY: -8,
|
|
24685
|
+
},
|
|
24686
|
+
];
|
|
24163
24687
|
}
|
|
24164
|
-
|
|
24165
|
-
|
|
24688
|
+
get selectedChoice() {
|
|
24689
|
+
return (this.choices.find((choice) => choice.value === this.selected) ??
|
|
24690
|
+
this.choices[0]);
|
|
24166
24691
|
}
|
|
24167
|
-
|
|
24168
|
-
this.
|
|
24692
|
+
get id() {
|
|
24693
|
+
return this.title.toLowerCase().replace(/[^a-z]+/g, '-');
|
|
24169
24694
|
}
|
|
24170
|
-
|
|
24171
|
-
|
|
24172
|
-
this.checkRequired(value);
|
|
24173
|
-
this.rawChange.next(value);
|
|
24695
|
+
getChoiceLabel() {
|
|
24696
|
+
return this.selectedChoice?.label;
|
|
24174
24697
|
}
|
|
24175
|
-
|
|
24176
|
-
|
|
24177
|
-
|
|
24178
|
-
|
|
24179
|
-
|
|
24180
|
-
|
|
24181
|
-
}], propDecorators: { value: [{
|
|
24182
|
-
type: Input
|
|
24183
|
-
}], hint: [{
|
|
24184
|
-
type: Input
|
|
24185
|
-
}], required: [{
|
|
24186
|
-
type: Input
|
|
24187
|
-
}], valueChange: [{
|
|
24188
|
-
type: Output
|
|
24189
|
-
}], input: [{
|
|
24190
|
-
type: ViewChild,
|
|
24191
|
-
args: ['input']
|
|
24192
|
-
}] } });
|
|
24193
|
-
|
|
24194
|
-
class ChipsInputComponent {
|
|
24195
|
-
onChange(event) {
|
|
24196
|
-
this.rawChange.next(event);
|
|
24698
|
+
ngOnInit() {
|
|
24699
|
+
if (!this.maxRows)
|
|
24700
|
+
this.maxRows = DEFAULT_ROW_NUMBERS;
|
|
24701
|
+
if (!this.choices || this.choices.length === 0) {
|
|
24702
|
+
this.choices = [];
|
|
24703
|
+
}
|
|
24197
24704
|
}
|
|
24198
|
-
|
|
24199
|
-
this.
|
|
24200
|
-
|
|
24201
|
-
|
|
24202
|
-
this.
|
|
24203
|
-
this.
|
|
24204
|
-
this.
|
|
24205
|
-
|
|
24206
|
-
|
|
24207
|
-
|
|
24208
|
-
|
|
24209
|
-
|
|
24210
|
-
|
|
24211
|
-
|
|
24212
|
-
|
|
24213
|
-
|
|
24214
|
-
|
|
24215
|
-
|
|
24216
|
-
|
|
24217
|
-
|
|
24218
|
-
|
|
24705
|
+
isSelected(choice) {
|
|
24706
|
+
return choice === this.selectedChoice;
|
|
24707
|
+
}
|
|
24708
|
+
onSelectValue(choice) {
|
|
24709
|
+
this.closeOverlay();
|
|
24710
|
+
this.selected = choice.value;
|
|
24711
|
+
this.selectValue.emit(this.selected);
|
|
24712
|
+
}
|
|
24713
|
+
openOverlay() {
|
|
24714
|
+
this.overlayWidth =
|
|
24715
|
+
this.overlayOrigin.elementRef.nativeElement.getBoundingClientRect()
|
|
24716
|
+
.width + 'px';
|
|
24717
|
+
this.overlayMaxHeight = this.maxRows
|
|
24718
|
+
? `${this.maxRows * 29 + 60}px`
|
|
24719
|
+
: 'none';
|
|
24720
|
+
this.overlayOpen = true;
|
|
24721
|
+
return Promise.all([
|
|
24722
|
+
firstValueFrom(this.overlay.attach),
|
|
24723
|
+
firstValueFrom(this.choiceInputs.changes),
|
|
24724
|
+
]);
|
|
24725
|
+
}
|
|
24726
|
+
closeOverlay() {
|
|
24727
|
+
this.overlayOpen = false;
|
|
24728
|
+
}
|
|
24729
|
+
focusFirstItem() {
|
|
24730
|
+
this.choiceInputs.get(0).nativeElement.focus();
|
|
24731
|
+
}
|
|
24732
|
+
focusLastItem() {
|
|
24733
|
+
this.choiceInputs.get(this.choiceInputs.length - 1).nativeElement.focus();
|
|
24734
|
+
}
|
|
24735
|
+
async handleTriggerKeydown(event) {
|
|
24736
|
+
const keyCode = event.code;
|
|
24737
|
+
const isOpenKey = keyCode === 'ArrowDown' ||
|
|
24738
|
+
keyCode === 'ArrowUp' ||
|
|
24739
|
+
keyCode === 'ArrowLeft' ||
|
|
24740
|
+
keyCode === 'ArrowRight' ||
|
|
24741
|
+
keyCode === 'Enter' ||
|
|
24742
|
+
keyCode === 'Space';
|
|
24743
|
+
const isCloseKey = keyCode === 'Escape';
|
|
24744
|
+
if (isOpenKey) {
|
|
24745
|
+
event.preventDefault();
|
|
24746
|
+
if (!this.overlayOpen) {
|
|
24747
|
+
await this.openOverlay();
|
|
24219
24748
|
}
|
|
24220
|
-
|
|
24221
|
-
|
|
24222
|
-
|
|
24223
|
-
|
|
24749
|
+
if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp')
|
|
24750
|
+
this.focusLastItem();
|
|
24751
|
+
else
|
|
24752
|
+
this.focusFirstItem();
|
|
24753
|
+
}
|
|
24754
|
+
else if (this.overlayOpen && isCloseKey) {
|
|
24755
|
+
event.preventDefault();
|
|
24756
|
+
this.closeOverlay();
|
|
24757
|
+
}
|
|
24224
24758
|
}
|
|
24225
|
-
|
|
24226
|
-
if (this.
|
|
24227
|
-
|
|
24759
|
+
handleOverlayKeydown(event) {
|
|
24760
|
+
if (!this.overlayOpen)
|
|
24761
|
+
return;
|
|
24762
|
+
const keyCode = event.code;
|
|
24763
|
+
if (keyCode === 'ArrowDown' || keyCode === 'ArrowRight') {
|
|
24764
|
+
event.preventDefault();
|
|
24765
|
+
this.shiftItemFocus(1);
|
|
24766
|
+
}
|
|
24767
|
+
else if (keyCode === 'ArrowLeft' || keyCode === 'ArrowUp') {
|
|
24768
|
+
event.preventDefault();
|
|
24769
|
+
this.shiftItemFocus(-1);
|
|
24770
|
+
}
|
|
24771
|
+
else if (keyCode === 'Escape') {
|
|
24772
|
+
this.closeOverlay();
|
|
24228
24773
|
}
|
|
24229
|
-
this.items = this.selectedItems;
|
|
24230
|
-
this.subscription = this.rawChange
|
|
24231
|
-
.pipe(tap$1((v) => (this.invalid = v.length === 0)))
|
|
24232
|
-
.subscribe();
|
|
24233
|
-
this.rawChange.next(this.items);
|
|
24234
24774
|
}
|
|
24235
|
-
|
|
24236
|
-
this.
|
|
24775
|
+
shiftItemFocus(shift) {
|
|
24776
|
+
const index = this.focusedIndex;
|
|
24777
|
+
if (index === -1)
|
|
24778
|
+
return;
|
|
24779
|
+
const max = this.choiceInputs.length;
|
|
24780
|
+
// modulo, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder
|
|
24781
|
+
const newIndex = (((index + shift) % max) + max) % max;
|
|
24782
|
+
this.choiceInputs.get(newIndex).nativeElement.focus();
|
|
24237
24783
|
}
|
|
24238
|
-
|
|
24239
|
-
|
|
24784
|
+
get focusedIndex() {
|
|
24785
|
+
return this.choiceInputs.reduce((prev, curr, curIndex) => curr.nativeElement === document.activeElement ? curIndex : prev, -1);
|
|
24786
|
+
}
|
|
24787
|
+
selectIfEnter(event, choice) {
|
|
24788
|
+
if (event.code === 'Enter') {
|
|
24789
|
+
event.preventDefault();
|
|
24790
|
+
this.onSelectValue(choice);
|
|
24791
|
+
}
|
|
24792
|
+
}
|
|
24793
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24794
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DropdownSelectorComponent, isStandalone: true, selector: "gn-ui-dropdown-selector", inputs: { title: "title", showTitle: "showTitle", ariaName: "ariaName", choices: "choices", selected: "selected", maxRows: "maxRows", extraBtnClass: "extraBtnClass", minWidth: "minWidth" }, outputs: { selectValue: "selectValue" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: ["overlayOrigin"], descendants: true }, { propertyName: "overlay", first: true, predicate: CdkConnectedOverlay, descendants: true }, { propertyName: "choiceInputs", predicate: ["choiceInputs"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$5.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"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$5.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24240
24795
|
}
|
|
24241
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DropdownSelectorComponent, decorators: [{
|
|
24242
24797
|
type: Component,
|
|
24243
|
-
args: [{ selector: 'gn-ui-
|
|
24244
|
-
|
|
24798
|
+
args: [{ selector: 'gn-ui-dropdown-selector', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
24799
|
+
CommonModule,
|
|
24800
|
+
ButtonComponent,
|
|
24801
|
+
OverlayModule,
|
|
24802
|
+
MatIconModule,
|
|
24803
|
+
TranslateModule,
|
|
24804
|
+
], template: "<div class=\"flex flex-col sm:flex-row sm:items-center relative w-full\">\n <span\n *ngIf=\"showTitle\"\n class=\"tracking-wide text-sm mb-2 sm:mb-0 sm:mr-2 whitespace-nowrap\"\n [attr.for]=\"id\"\n >\n {{ title }}\n </span>\n <gn-ui-button\n type=\"outline\"\n class=\"grow min-w-0\"\n extraClass=\"bg-background !p-[8px] !pl-[16px] flex flex-row w-full {{\n extraBtnClass\n }}\"\n [title]=\"title\"\n [attr.aria-owns]=\"id\"\n (buttonClick)=\"openOverlay()\"\n cdkOverlayOrigin\n #overlayOrigin=\"cdkOverlayOrigin\"\n (keydown)=\"handleTriggerKeydown($event)\"\n >\n <div class=\"grow font-medium truncate py-1 mr-2 text-left\">\n {{ getChoiceLabel() | translate }}\n </div>\n <mat-icon class=\"material-symbols-outlined shrink-0 opacity-40\">\n <ng-container *ngIf=\"overlayOpen\">expand_less</ng-container>\n <ng-container *ngIf=\"!overlayOpen\">expand_more</ng-container>\n </mat-icon>\n </gn-ui-button>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n (overlayOutsideClick)=\"closeOverlay()\"\n (detach)=\"closeOverlay()\"\n>\n <div\n class=\"bg-white border border-gray-300 rounded shadow-lg py-2 w-full overflow-x-hidden overflow-y-auto overlay-container\"\n [style.max-height]=\"overlayMaxHeight\"\n [style.min-width]=\"overlayWidth\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.id]=\"id\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"title\"\n (keydown)=\"handleOverlayKeydown($event)\"\n >\n <button\n #choiceInputs\n type=\"button\"\n *ngFor=\"let choice of choices\"\n [title]=\"choice.label | translate\"\n class=\"flex px-5 py-1 w-full text-start cursor-pointer transition-colors\"\n [ngClass]=\"\n isSelected(choice)\n ? 'text-white bg-primary hover:text-white hover:bg-primary-darker focus:text-white focus:bg-primary-darker'\n : 'text-gray-900 hover:text-primary-darkest hover:bg-gray-50 focus:text-primary-darkest focus:bg-gray-50'\n \"\n (click)=\"onSelectValue(choice)\"\n (keydown)=\"selectIfEnter($event, choice)\"\n [attr.data-cy-value]=\"choice.value.toString()\"\n [attr.data-cy-active]=\"isSelected(choice) ? 'true' : undefined\"\n >\n <span class=\"text-[14px]\">\n {{ choice.label | translate }}\n </span>\n </button>\n </div>\n</ng-template>\n" }]
|
|
24805
|
+
}], propDecorators: { title: [{
|
|
24245
24806
|
type: Input
|
|
24246
|
-
}],
|
|
24807
|
+
}], showTitle: [{
|
|
24247
24808
|
type: Input
|
|
24248
|
-
}],
|
|
24809
|
+
}], ariaName: [{
|
|
24249
24810
|
type: Input
|
|
24250
|
-
}],
|
|
24811
|
+
}], choices: [{
|
|
24251
24812
|
type: Input
|
|
24252
|
-
}],
|
|
24813
|
+
}], selected: [{
|
|
24253
24814
|
type: Input
|
|
24254
|
-
}],
|
|
24815
|
+
}], maxRows: [{
|
|
24255
24816
|
type: Input
|
|
24256
|
-
}],
|
|
24817
|
+
}], extraBtnClass: [{
|
|
24818
|
+
type: Input
|
|
24819
|
+
}], minWidth: [{
|
|
24820
|
+
type: Input
|
|
24821
|
+
}], selectValue: [{
|
|
24257
24822
|
type: Output
|
|
24823
|
+
}], overlayOrigin: [{
|
|
24824
|
+
type: ViewChild,
|
|
24825
|
+
args: ['overlayOrigin']
|
|
24826
|
+
}], overlay: [{
|
|
24827
|
+
type: ViewChild,
|
|
24828
|
+
args: [CdkConnectedOverlay]
|
|
24829
|
+
}], choiceInputs: [{
|
|
24830
|
+
type: ViewChildren,
|
|
24831
|
+
args: ['choiceInputs', { read: ElementRef }]
|
|
24258
24832
|
}] } });
|
|
24259
24833
|
|
|
24260
|
-
class
|
|
24261
|
-
constructor() {
|
|
24262
|
-
this.
|
|
24263
|
-
this.
|
|
24264
|
-
this.
|
|
24265
|
-
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24834
|
+
class EditableLabelDirective {
|
|
24835
|
+
constructor(el, renderer) {
|
|
24836
|
+
this.el = el;
|
|
24837
|
+
this.renderer = renderer;
|
|
24838
|
+
this.editableLabelChanged = new EventEmitter();
|
|
24266
24839
|
}
|
|
24267
24840
|
ngAfterViewInit() {
|
|
24268
|
-
|
|
24269
|
-
|
|
24270
|
-
|
|
24271
|
-
|
|
24272
|
-
|
|
24273
|
-
|
|
24274
|
-
|
|
24275
|
-
|
|
24276
|
-
|
|
24841
|
+
if (this.gnUiEditableLabel !== false) {
|
|
24842
|
+
const appendedInput = this.renderer.createElement('input');
|
|
24843
|
+
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
24844
|
+
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
24845
|
+
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
24846
|
+
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
24847
|
+
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
24848
|
+
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
24849
|
+
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
24850
|
+
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
24851
|
+
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
24852
|
+
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
24853
|
+
const hostContent = this.el.nativeElement.textContent || '';
|
|
24854
|
+
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
24855
|
+
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
24856
|
+
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
24857
|
+
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
24858
|
+
this.editableLabelChanged.emit(event.target.value);
|
|
24859
|
+
});
|
|
24860
|
+
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
24861
|
+
}
|
|
24277
24862
|
}
|
|
24278
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24279
|
-
static { this.ɵ
|
|
24863
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24864
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, isStandalone: true, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
24280
24865
|
}
|
|
24281
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24282
|
-
type:
|
|
24283
|
-
args: [{
|
|
24284
|
-
|
|
24285
|
-
|
|
24286
|
-
|
|
24287
|
-
|
|
24288
|
-
}], required: [{
|
|
24289
|
-
type: Input
|
|
24290
|
-
}], valueChange: [{
|
|
24866
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
24867
|
+
type: Directive,
|
|
24868
|
+
args: [{
|
|
24869
|
+
selector: '[gnUiEditableLabel]',
|
|
24870
|
+
standalone: true,
|
|
24871
|
+
}]
|
|
24872
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
24291
24873
|
type: Output
|
|
24292
|
-
}],
|
|
24293
|
-
type:
|
|
24294
|
-
args: ['input']
|
|
24874
|
+
}], gnUiEditableLabel: [{
|
|
24875
|
+
type: Input
|
|
24295
24876
|
}] } });
|
|
24296
24877
|
|
|
24297
|
-
class
|
|
24298
|
-
|
|
24299
|
-
|
|
24300
|
-
this.type = 'info';
|
|
24301
|
-
this.position = 'top';
|
|
24302
|
-
this.expanded = false;
|
|
24303
|
-
this.timeout = null;
|
|
24304
|
-
}
|
|
24305
|
-
get showDuration() {
|
|
24306
|
-
const chars = this.content.nativeElement.innerHTML.length;
|
|
24307
|
-
return Math.max(3000, chars * 20);
|
|
24308
|
-
}
|
|
24309
|
-
ngOnInit() {
|
|
24310
|
-
this.expandAndClose();
|
|
24311
|
-
}
|
|
24312
|
-
expand() {
|
|
24313
|
-
this.expanded = true;
|
|
24314
|
-
this.changeDetector.detectChanges();
|
|
24315
|
-
clearTimeout(this.timeout);
|
|
24316
|
-
}
|
|
24317
|
-
expandAndClose() {
|
|
24318
|
-
this.expanded = true;
|
|
24319
|
-
this.changeDetector.detectChanges();
|
|
24320
|
-
clearTimeout(this.timeout);
|
|
24321
|
-
this.timeout = setTimeout(() => {
|
|
24322
|
-
this.expanded = false;
|
|
24323
|
-
this.changeDetector.detectChanges();
|
|
24324
|
-
}, this.showDuration);
|
|
24325
|
-
}
|
|
24326
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: PopupAlertComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24327
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: PopupAlertComponent, selector: "gn-ui-popup-alert", inputs: { icon: "icon", type: "type", position: "position" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"h-full relative container\">\n <div\n class=\"pointer-events-auto absolute text-white flex flex-row p-2 rounded message\"\n role=\"alert\"\n [ngClass]=\"{\n 'position-bottom': position === 'bottom',\n 'position-top': position === 'top',\n expanded: this.expanded,\n 'bg-red-500': type === 'danger',\n 'bg-yellow-500': type === 'warning',\n 'bg-blue-500': type === 'info'\n }\"\n (mouseenter)=\"expand()\"\n (mouseleave)=\"expandAndClose()\"\n >\n <mat-icon class=\"material-symbols-outlined mr-2 shrink-0 select-none\">{{\n icon\n }}</mat-icon>\n <div class=\"grow\" #content [ngClass]=\"{ invisible: !expanded }\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{pointer-events:none}.container{filter:drop-shadow(0px 4px 3px rgba(0,0,0,.2))}.message{transition:clip-path .3s cubic-bezier(.25,.46,.45,.94)}.message.expanded{clip-path:circle(100%)}.position-top{clip-path:circle(19px at 20px 20px);align-items:start;top:0;left:0}.position-bottom{clip-path:circle(19px at 20px calc(100% - 20px));align-items:end;bottom:0;left:0}.container ::ng-deep a{text-decoration:underline;font-weight:700}.container ::ng-deep a:hover{opacity:.85}\n"], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24878
|
+
class NavigationButtonComponent {
|
|
24879
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24880
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24328
24881
|
}
|
|
24329
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24882
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24330
24883
|
type: Component,
|
|
24331
|
-
args: [{ selector: 'gn-ui-
|
|
24332
|
-
}],
|
|
24333
|
-
type: Input
|
|
24334
|
-
}], type: [{
|
|
24884
|
+
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
24885
|
+
}], propDecorators: { label: [{
|
|
24335
24886
|
type: Input
|
|
24336
|
-
}],
|
|
24887
|
+
}], icon: [{
|
|
24337
24888
|
type: Input
|
|
24338
|
-
}], content: [{
|
|
24339
|
-
type: ViewChild,
|
|
24340
|
-
args: ['content']
|
|
24341
24889
|
}] } });
|
|
24342
24890
|
|
|
24343
|
-
class
|
|
24344
|
-
constructor(
|
|
24345
|
-
this.
|
|
24346
|
-
this.
|
|
24347
|
-
this.
|
|
24348
|
-
this.
|
|
24349
|
-
this.inputSubmitted = new EventEmitter();
|
|
24350
|
-
this.inputCleared = new EventEmitter();
|
|
24351
|
-
this.control = new UntypedFormControl();
|
|
24352
|
-
this.subscription = new Subscription();
|
|
24353
|
-
this.cancelEnter = true;
|
|
24354
|
-
this.selectionSubject = new ReplaySubject(1);
|
|
24355
|
-
this.lastInputValue$ = new ReplaySubject(1);
|
|
24356
|
-
this.error = null;
|
|
24357
|
-
this.displayWithFn = (item) => item;
|
|
24358
|
-
}
|
|
24359
|
-
ngOnChanges(changes) {
|
|
24360
|
-
const { value } = changes;
|
|
24361
|
-
if (value) {
|
|
24362
|
-
const previousTextValue = this.displayWithFn(value.previousValue);
|
|
24363
|
-
const currentTextValue = this.displayWithFn(value.currentValue);
|
|
24364
|
-
if (previousTextValue !== currentTextValue) {
|
|
24365
|
-
this.updateInputValue(value.currentValue);
|
|
24366
|
-
}
|
|
24367
|
-
}
|
|
24368
|
-
}
|
|
24369
|
-
ngOnInit() {
|
|
24370
|
-
this.suggestions$ = merge(this.control.valueChanges.pipe(filter((value) => typeof value === 'string'), filter((value) => value.length > 2), debounceTime(400), distinctUntilChanged(), tap$1(() => (this.searching = true))), this.control.valueChanges.pipe(filter((value) => typeof value === 'object' && value.title), map$1((item) => item.title))).pipe(switchMap$1((value) => (value ? this.action(value) : of([]))), catchError((error) => {
|
|
24371
|
-
this.error = error.message;
|
|
24372
|
-
return of([]);
|
|
24373
|
-
}), finalize(() => (this.searching = false)));
|
|
24374
|
-
this.subscription = this.control.valueChanges.subscribe((any) => {
|
|
24375
|
-
if (any !== '') {
|
|
24376
|
-
this.cancelEnter = false;
|
|
24377
|
-
}
|
|
24378
|
-
});
|
|
24379
|
-
this.control.valueChanges
|
|
24380
|
-
.pipe(filter((value) => typeof value === 'string'))
|
|
24381
|
-
.subscribe(this.lastInputValue$);
|
|
24382
|
-
}
|
|
24383
|
-
ngAfterViewInit() {
|
|
24384
|
-
this.autocomplete.optionSelected.subscribe(this.selectionSubject);
|
|
24385
|
-
if (this.autoFocus) {
|
|
24386
|
-
this.inputRef.nativeElement.focus();
|
|
24387
|
-
this.cdRef.detectChanges();
|
|
24388
|
-
}
|
|
24389
|
-
}
|
|
24390
|
-
ngOnDestroy() {
|
|
24391
|
-
this.subscription.unsubscribe();
|
|
24891
|
+
class SearchInputComponent {
|
|
24892
|
+
constructor() {
|
|
24893
|
+
this.value = '';
|
|
24894
|
+
this.placeholder = '';
|
|
24895
|
+
this.rawChange = new Subject();
|
|
24896
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
24392
24897
|
}
|
|
24393
|
-
|
|
24394
|
-
|
|
24395
|
-
|
|
24396
|
-
}
|
|
24397
|
-
if (this.inputRef) {
|
|
24398
|
-
this.inputRef.nativeElement.value = value?.title || '';
|
|
24399
|
-
}
|
|
24898
|
+
handleChange($event) {
|
|
24899
|
+
const value = $event.target.value;
|
|
24900
|
+
this.rawChange.next(value);
|
|
24400
24901
|
}
|
|
24401
24902
|
clear() {
|
|
24402
|
-
this.
|
|
24403
|
-
this.
|
|
24404
|
-
this.selectionSubject
|
|
24405
|
-
.pipe(take(1))
|
|
24406
|
-
.subscribe((selection) => selection && selection.option.deselect());
|
|
24407
|
-
this.inputRef.nativeElement.focus();
|
|
24408
|
-
this.triggerRef.closePanel();
|
|
24409
|
-
}
|
|
24410
|
-
handleEnter(any) {
|
|
24411
|
-
if (!this.cancelEnter) {
|
|
24412
|
-
this.inputSubmitted.emit(any);
|
|
24413
|
-
this.triggerRef.closePanel();
|
|
24414
|
-
}
|
|
24415
|
-
}
|
|
24416
|
-
handleClickSearch() {
|
|
24417
|
-
this.inputSubmitted.emit(this.inputRef.nativeElement.value);
|
|
24418
|
-
this.triggerRef.closePanel();
|
|
24419
|
-
}
|
|
24420
|
-
handleSelection(event) {
|
|
24421
|
-
this.cancelEnter = true;
|
|
24422
|
-
this.itemSelected.emit(event.option.value);
|
|
24423
|
-
if (this.clearOnSelection) {
|
|
24424
|
-
this.lastInputValue$.pipe(first()).subscribe((any) => {
|
|
24425
|
-
this.inputRef.nativeElement.value = any;
|
|
24426
|
-
});
|
|
24427
|
-
}
|
|
24903
|
+
this.value = null;
|
|
24904
|
+
this.rawChange.next(null);
|
|
24428
24905
|
}
|
|
24429
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24430
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24906
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24907
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: { value: "value", placeholder: "placeholder" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24431
24908
|
}
|
|
24432
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24909
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
24433
24910
|
type: Component,
|
|
24434
|
-
args: [{ selector: 'gn-ui-
|
|
24435
|
-
}],
|
|
24436
|
-
type: Input
|
|
24437
|
-
}], action: [{
|
|
24438
|
-
type: Input
|
|
24439
|
-
}], value: [{
|
|
24440
|
-
type: Input
|
|
24441
|
-
}], clearOnSelection: [{
|
|
24911
|
+
args: [{ selector: 'gn-ui-search-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n" }]
|
|
24912
|
+
}], propDecorators: { value: [{
|
|
24442
24913
|
type: Input
|
|
24443
|
-
}],
|
|
24914
|
+
}], placeholder: [{
|
|
24444
24915
|
type: Input
|
|
24445
|
-
}],
|
|
24446
|
-
type: Output
|
|
24447
|
-
}], inputSubmitted: [{
|
|
24448
|
-
type: Output
|
|
24449
|
-
}], inputCleared: [{
|
|
24916
|
+
}], valueChange: [{
|
|
24450
24917
|
type: Output
|
|
24451
|
-
}], triggerRef: [{
|
|
24452
|
-
type: ViewChild,
|
|
24453
|
-
args: [MatAutocompleteTrigger]
|
|
24454
|
-
}], autocomplete: [{
|
|
24455
|
-
type: ViewChild,
|
|
24456
|
-
args: [MatAutocomplete]
|
|
24457
|
-
}], inputRef: [{
|
|
24458
|
-
type: ViewChild,
|
|
24459
|
-
args: ['searchInput']
|
|
24460
|
-
}], displayWithFn: [{
|
|
24461
|
-
type: Input
|
|
24462
24918
|
}] } });
|
|
24463
24919
|
|
|
24464
24920
|
class StarToggleComponent {
|
|
@@ -24496,115 +24952,117 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24496
24952
|
args: ['starOverlay']
|
|
24497
24953
|
}] } });
|
|
24498
24954
|
|
|
24499
|
-
class
|
|
24500
|
-
constructor(
|
|
24501
|
-
this.
|
|
24502
|
-
this.
|
|
24503
|
-
this.
|
|
24504
|
-
this.
|
|
24505
|
-
|
|
24506
|
-
|
|
24507
|
-
|
|
24508
|
-
|
|
24509
|
-
|
|
24510
|
-
|
|
24511
|
-
|
|
24512
|
-
|
|
24955
|
+
class TextAreaComponent {
|
|
24956
|
+
constructor() {
|
|
24957
|
+
this.value = '';
|
|
24958
|
+
this.disabled = false;
|
|
24959
|
+
this.extraClass = '';
|
|
24960
|
+
this.required = false;
|
|
24961
|
+
this.rawChange = new Subject();
|
|
24962
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24963
|
+
this.baseClasses = [
|
|
24964
|
+
'w-full',
|
|
24965
|
+
'pt-2',
|
|
24966
|
+
'pl-2',
|
|
24967
|
+
'resize-none',
|
|
24968
|
+
'border',
|
|
24969
|
+
'border-gray-800',
|
|
24970
|
+
'rounded italic',
|
|
24971
|
+
'leading-tight',
|
|
24972
|
+
'focus:outline-none',
|
|
24973
|
+
'focus:bg-background',
|
|
24974
|
+
'focus:border-primary',
|
|
24975
|
+
].join(' ');
|
|
24976
|
+
this.disabledClasses = ['cursor-not-allowed'].join(' ');
|
|
24513
24977
|
}
|
|
24514
|
-
|
|
24515
|
-
|
|
24516
|
-
this.observer = new IntersectionObserver((entries) => {
|
|
24517
|
-
entries.forEach((entry) => {
|
|
24518
|
-
this.isInViewport.emit(entry.isIntersecting);
|
|
24519
|
-
});
|
|
24520
|
-
}, { root: null, threshold: 0 });
|
|
24521
|
-
}
|
|
24522
|
-
this.observer.observe(elToObserve);
|
|
24978
|
+
get classList() {
|
|
24979
|
+
return `${this.baseClasses} ${this.extraClass} ${this.disabled ? this.disabledClasses : ''}`;
|
|
24523
24980
|
}
|
|
24524
|
-
|
|
24525
|
-
this.
|
|
24981
|
+
ngAfterViewInit() {
|
|
24982
|
+
this.checkRequired(this.input.nativeElement.value);
|
|
24526
24983
|
}
|
|
24527
|
-
|
|
24528
|
-
|
|
24529
|
-
}
|
|
24530
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
24531
|
-
type: Component,
|
|
24532
|
-
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
24533
|
-
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
24534
|
-
type: Output
|
|
24535
|
-
}], entersViewport: [{
|
|
24536
|
-
type: Output
|
|
24537
|
-
}], exitsViewport: [{
|
|
24538
|
-
type: Output
|
|
24539
|
-
}] } });
|
|
24540
|
-
|
|
24541
|
-
class CheckToggleComponent {
|
|
24542
|
-
constructor() {
|
|
24543
|
-
this.color = 'primary';
|
|
24544
|
-
this.toggled = new EventEmitter();
|
|
24984
|
+
checkRequired(value) {
|
|
24985
|
+
this.input.nativeElement.classList.toggle('invalid', this.required && value === '');
|
|
24545
24986
|
}
|
|
24546
|
-
|
|
24547
|
-
|
|
24987
|
+
handleChange($event) {
|
|
24988
|
+
const value = $event.target.value;
|
|
24989
|
+
this.checkRequired(value);
|
|
24990
|
+
this.rawChange.next(value);
|
|
24548
24991
|
}
|
|
24549
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24550
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
24992
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24993
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextAreaComponent, isStandalone: true, selector: "gn-ui-text-area", inputs: { value: "value", disabled: "disabled", extraClass: "extraClass", placeholder: "placeholder", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [class]=\"classList\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
24551
24994
|
}
|
|
24552
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24995
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextAreaComponent, decorators: [{
|
|
24553
24996
|
type: Component,
|
|
24554
|
-
args: [{ selector: 'gn-ui-
|
|
24555
|
-
}], propDecorators: {
|
|
24997
|
+
args: [{ selector: 'gn-ui-text-area', standalone: true, template: "<div class=\"h-full flex\">\n <textarea\n #input\n name=\"textArea\"\n [disabled]=\"disabled\"\n [placeholder]=\"placeholder\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [class]=\"classList\"\n [attr.required]=\"required || null\"\n ></textarea>\n</div>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
24998
|
+
}], ctorParameters: function () { return []; }, propDecorators: { value: [{
|
|
24556
24999
|
type: Input
|
|
24557
|
-
}],
|
|
25000
|
+
}], disabled: [{
|
|
24558
25001
|
type: Input
|
|
24559
|
-
}],
|
|
25002
|
+
}], extraClass: [{
|
|
24560
25003
|
type: Input
|
|
24561
|
-
}],
|
|
25004
|
+
}], placeholder: [{
|
|
24562
25005
|
type: Input
|
|
24563
|
-
}],
|
|
25006
|
+
}], required: [{
|
|
25007
|
+
type: Input
|
|
25008
|
+
}], valueChange: [{
|
|
24564
25009
|
type: Output
|
|
25010
|
+
}], input: [{
|
|
25011
|
+
type: ViewChild,
|
|
25012
|
+
args: ['input']
|
|
24565
25013
|
}] } });
|
|
24566
25014
|
|
|
24567
|
-
|
|
24568
|
-
marker('dropFile');
|
|
24569
|
-
class DragAndDropFileInputComponent {
|
|
25015
|
+
class TextInputComponent {
|
|
24570
25016
|
constructor() {
|
|
24571
|
-
this.
|
|
24572
|
-
|
|
24573
|
-
|
|
24574
|
-
|
|
25017
|
+
this.baseClass = [
|
|
25018
|
+
'appearance-none',
|
|
25019
|
+
'border border-gray-300',
|
|
25020
|
+
'rounded w-full',
|
|
25021
|
+
'p-2',
|
|
25022
|
+
'text-gray-700',
|
|
25023
|
+
'leading-tight',
|
|
25024
|
+
'focus:outline-none',
|
|
25025
|
+
'focus:border-primary',
|
|
25026
|
+
].join(' ');
|
|
25027
|
+
this.value = '';
|
|
25028
|
+
this.extraClass = '';
|
|
25029
|
+
this.required = false;
|
|
25030
|
+
this.rawChange = new Subject();
|
|
25031
|
+
this.valueChange = this.rawChange.pipe(distinctUntilChanged());
|
|
24575
25032
|
}
|
|
24576
|
-
get
|
|
24577
|
-
return this.
|
|
25033
|
+
get classList() {
|
|
25034
|
+
return `${this.baseClass} ${this.extraClass}`;
|
|
24578
25035
|
}
|
|
24579
|
-
|
|
24580
|
-
this.
|
|
24581
|
-
this.fileChange.emit(this.selectedFile);
|
|
25036
|
+
ngAfterViewInit() {
|
|
25037
|
+
this.checkRequired(this.input.nativeElement.value);
|
|
24582
25038
|
}
|
|
24583
|
-
|
|
24584
|
-
|
|
25039
|
+
checkRequired(value) {
|
|
25040
|
+
this.input.nativeElement.classList.toggle('invalid', this.required && value === '');
|
|
25041
|
+
}
|
|
25042
|
+
handleChange($event) {
|
|
25043
|
+
const value = $event.target.value;
|
|
25044
|
+
this.checkRequired(value);
|
|
25045
|
+
this.rawChange.next(value);
|
|
25046
|
+
}
|
|
25047
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25048
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TextInputComponent, selector: "gn-ui-text-input", inputs: { value: "value", extraClass: "extraClass", hint: "hint", required: "required" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }); }
|
|
24585
25049
|
}
|
|
24586
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25050
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TextInputComponent, decorators: [{
|
|
24587
25051
|
type: Component,
|
|
24588
|
-
args: [{ selector: 'gn-ui-
|
|
24589
|
-
}], propDecorators: {
|
|
25052
|
+
args: [{ selector: 'gn-ui-text-input', template: "<input\n #input\n [class]=\"classList\"\n type=\"text\"\n [value]=\"value\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n [placeholder]=\"hint\"\n [attr.aria-label]=\"hint\"\n [attr.required]=\"required || null\"\n/>\n", styles: [".invalid{border-color:var(--color-secondary)}\n"] }]
|
|
25053
|
+
}], propDecorators: { value: [{
|
|
24590
25054
|
type: Input
|
|
24591
|
-
}],
|
|
25055
|
+
}], extraClass: [{
|
|
24592
25056
|
type: Input
|
|
24593
|
-
}],
|
|
24594
|
-
type: Output
|
|
24595
|
-
}] } });
|
|
24596
|
-
|
|
24597
|
-
class NavigationButtonComponent {
|
|
24598
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24599
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NavigationButtonComponent, selector: "gn-ui-navigation-button", inputs: { label: "label", icon: "icon" }, ngImport: i0, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24600
|
-
}
|
|
24601
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
24602
|
-
type: Component,
|
|
24603
|
-
args: [{ selector: 'gn-ui-navigation-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"group flex items-center justify-center gap-1 backdrop-blur p-1 bg-primary-opacity-30 rounded content-center\"\n>\n <mat-icon class=\"material-symbols-outlined align-middle w-[18px]\">{{\n icon\n }}</mat-icon>\n <span\n class=\"mx-2 mt-0.5 text-[16px] tracking-widest content-center opacity-75\"\n >{{ label.toUpperCase() }}</span\n >\n</button>\n", styles: ["button{color:var(--navigation-button-color, --color-background)}\n"] }]
|
|
24604
|
-
}], propDecorators: { label: [{
|
|
25057
|
+
}], hint: [{
|
|
24605
25058
|
type: Input
|
|
24606
|
-
}],
|
|
25059
|
+
}], required: [{
|
|
24607
25060
|
type: Input
|
|
25061
|
+
}], valueChange: [{
|
|
25062
|
+
type: Output
|
|
25063
|
+
}], input: [{
|
|
25064
|
+
type: ViewChild,
|
|
25065
|
+
args: ['input']
|
|
24608
25066
|
}] } });
|
|
24609
25067
|
|
|
24610
25068
|
class ColorScaleComponent {
|
|
@@ -24712,7 +25170,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24712
25170
|
|
|
24713
25171
|
class LoadingMaskComponent {
|
|
24714
25172
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24715
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"], dependencies: [{ kind: "component", type: i1$
|
|
25173
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: LoadingMaskComponent, selector: "gn-ui-loading-mask", inputs: { message: "message" }, ngImport: i0, template: "<div class=\"h-full flex flex-col justify-center items-center relative backdrop\">\n <div class=\"absolute background bg-white inset-0\"></div>\n <mat-spinner [diameter]=\"28\" class=\"relative\"></mat-spinner>\n <span class=\"text-sm text-gray-700 mt-3 relative\">{{ message }}</span>\n</div>\n", styles: ["::ng-deep .mat-spinner circle{stroke:var(--color-gray-700);opacity:.5}.backdrop{background-color:#fff6}@supports ((-webkit-backdrop-filter: blur()) or (backdrop-filter: blur())){.backdrop{background-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.background{opacity:.7}\n"], dependencies: [{ kind: "component", type: i1$6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24716
25174
|
}
|
|
24717
25175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: LoadingMaskComponent, decorators: [{
|
|
24718
25176
|
type: Component,
|
|
@@ -24808,148 +25266,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
24808
25266
|
}]
|
|
24809
25267
|
}] });
|
|
24810
25268
|
|
|
24811
|
-
class
|
|
24812
|
-
constructor() {
|
|
24813
|
-
this.
|
|
24814
|
-
this.
|
|
25269
|
+
class ViewportIntersectorComponent {
|
|
25270
|
+
constructor(vcRef) {
|
|
25271
|
+
this.vcRef = vcRef;
|
|
25272
|
+
this.isInViewport = new EventEmitter();
|
|
25273
|
+
this.entersViewport = this.isInViewport.pipe(filter((inViewport) => inViewport), map$1(() => undefined));
|
|
25274
|
+
this.exitsViewport = this.isInViewport.pipe(filter((inViewport) => !inViewport), map$1(() => undefined));
|
|
24815
25275
|
}
|
|
24816
|
-
|
|
24817
|
-
|
|
24818
|
-
|
|
25276
|
+
ngOnInit() {
|
|
25277
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25278
|
+
this.observeInputElement(elToObserve);
|
|
24819
25279
|
}
|
|
24820
|
-
|
|
24821
|
-
|
|
24822
|
-
|
|
24823
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CopyTextButtonComponent, decorators: [{
|
|
24824
|
-
type: Component,
|
|
24825
|
-
args: [{ selector: 'gn-ui-copy-text-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\n <input\n *ngIf=\"displayText && rows <= 1\"\n type=\"text\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 truncate\"\n value=\"{{ text }}\"\n readonly\n />\n <textarea\n *ngIf=\"displayText && rows > 1\"\n [rows]=\"rows\"\n class=\"grow py-2 px-4 bg-gray-200 opacity-50 rounded-l-md border border-gray-300 overflow-y-auto h-max\"\n readonly\n >{{ text }}</textarea\n >\n <button\n type=\"button\"\n (click)=\"copyText($event)\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"tooltipText\"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n >content_copy</mat-icon\n >\n </button>\n</div>\n" }]
|
|
24826
|
-
}], propDecorators: { text: [{
|
|
24827
|
-
type: Input
|
|
24828
|
-
}], tooltipText: [{
|
|
24829
|
-
type: Input
|
|
24830
|
-
}], displayText: [{
|
|
24831
|
-
type: Input
|
|
24832
|
-
}], rows: [{
|
|
24833
|
-
type: Input
|
|
24834
|
-
}] } });
|
|
24835
|
-
|
|
24836
|
-
class CheckboxComponent {
|
|
24837
|
-
constructor() {
|
|
24838
|
-
this.type = 'default';
|
|
24839
|
-
this.checked = false;
|
|
24840
|
-
this.indeterminate = false;
|
|
24841
|
-
this.changed = new EventEmitter();
|
|
25280
|
+
ngOnDestroy() {
|
|
25281
|
+
const elToObserve = this.vcRef.element.nativeElement;
|
|
25282
|
+
this.unObserveInputElement(elToObserve);
|
|
24842
25283
|
}
|
|
24843
|
-
|
|
24844
|
-
|
|
25284
|
+
observeInputElement(elToObserve) {
|
|
25285
|
+
if (!this.observer) {
|
|
25286
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
25287
|
+
entries.forEach((entry) => {
|
|
25288
|
+
this.isInViewport.emit(entry.isIntersecting);
|
|
25289
|
+
});
|
|
25290
|
+
}, { root: null, threshold: 0 });
|
|
25291
|
+
}
|
|
25292
|
+
this.observer.observe(elToObserve);
|
|
24845
25293
|
}
|
|
24846
|
-
|
|
24847
|
-
|
|
24848
|
-
this.checked = !this.checked;
|
|
24849
|
-
this.changed.emit(this.checked);
|
|
25294
|
+
unObserveInputElement(elToObserve) {
|
|
25295
|
+
this.observer?.unobserve(elToObserve);
|
|
24850
25296
|
}
|
|
24851
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
24852
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type:
|
|
25297
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25298
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ViewportIntersectorComponent, selector: "gn-ui-viewport-intersector", outputs: { isInViewport: "isInViewport", entersViewport: "entersViewport", exitsViewport: "exitsViewport" }, ngImport: i0, template: "<div class=\"w-full h-full\"></div>\n", styles: [""] }); }
|
|
24853
25299
|
}
|
|
24854
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
25300
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ViewportIntersectorComponent, decorators: [{
|
|
24855
25301
|
type: Component,
|
|
24856
|
-
args: [{ selector: 'gn-ui-
|
|
24857
|
-
}],
|
|
24858
|
-
type: Input
|
|
24859
|
-
}], checked: [{
|
|
24860
|
-
type: Input
|
|
24861
|
-
}], indeterminate: [{
|
|
24862
|
-
type: Input
|
|
24863
|
-
}], changed: [{
|
|
25302
|
+
args: [{ selector: 'gn-ui-viewport-intersector', template: "<div class=\"w-full h-full\"></div>\n" }]
|
|
25303
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { isInViewport: [{
|
|
24864
25304
|
type: Output
|
|
24865
|
-
}]
|
|
24866
|
-
|
|
24867
|
-
class SearchInputComponent {
|
|
24868
|
-
constructor() {
|
|
24869
|
-
this.value = '';
|
|
24870
|
-
this.placeholder = '';
|
|
24871
|
-
this.rawChange = new Subject();
|
|
24872
|
-
this.valueChange = this.rawChange.pipe(distinctUntilChanged$1());
|
|
24873
|
-
}
|
|
24874
|
-
handleChange($event) {
|
|
24875
|
-
const value = $event.target.value;
|
|
24876
|
-
this.rawChange.next(value);
|
|
24877
|
-
}
|
|
24878
|
-
clear() {
|
|
24879
|
-
this.value = null;
|
|
24880
|
-
this.rawChange.next(null);
|
|
24881
|
-
}
|
|
24882
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24883
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SearchInputComponent, selector: "gn-ui-search-input", inputs: { value: "value", placeholder: "placeholder" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24884
|
-
}
|
|
24885
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
24886
|
-
type: Component,
|
|
24887
|
-
args: [{ selector: 'gn-ui-search-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-full relative text-gray-300\">\n <input\n #input\n class=\"peer h-full appearance-none border border-gray-300 rounded w-full p-2 pl-10 text-gray-700 leading-tight hover:border-primary focus:text-primary focus:outline-none focus:border-primary focus:border-2\"\n type=\"text\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n (change)=\"handleChange($event)\"\n (input)=\"handleChange($event)\"\n />\n <div\n class=\"absolute inset-y-0 left-0 pl-2.5 flex items-center peer-hover:text-primary peer-focus:text-primary\"\n >\n <mat-icon class=\"material-symbols-outlined\">search</mat-icon>\n </div>\n <button\n *ngIf=\"rawChange | async\"\n type=\"button\"\n class=\"text-primary-lightest hover:text-primary absolute transition-all duration-100 inset-y-0 right-0 pr-2.5\"\n aria-label=\"Clear\"\n (click)=\"clear()\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle\">close</mat-icon>\n </button>\n</div>\n" }]
|
|
24888
|
-
}], propDecorators: { value: [{
|
|
24889
|
-
type: Input
|
|
24890
|
-
}], placeholder: [{
|
|
24891
|
-
type: Input
|
|
24892
|
-
}], valueChange: [{
|
|
25305
|
+
}], entersViewport: [{
|
|
24893
25306
|
type: Output
|
|
24894
|
-
}]
|
|
24895
|
-
|
|
24896
|
-
class DateRangePickerComponent {
|
|
24897
|
-
startDateSelected(event) {
|
|
24898
|
-
this.startDate = event.value;
|
|
24899
|
-
}
|
|
24900
|
-
endDateSelected(event) {
|
|
24901
|
-
this.endDate = event.value;
|
|
24902
|
-
}
|
|
24903
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24904
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: DateRangePickerComponent, selector: "gn-ui-date-range-picker", ngImport: i0, template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i3$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i3$2.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3$2.MatStartDate, selector: "input[matStartDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3$2.MatEndDate, selector: "input[matEndDate]", inputs: ["errorStateMatcher"], outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i3$2.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
|
|
24905
|
-
}
|
|
24906
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DateRangePickerComponent, decorators: [{
|
|
24907
|
-
type: Component,
|
|
24908
|
-
args: [{ selector: 'gn-ui-date-range-picker', template: "<div\n class=\"flex items-center justify-center w-64 h-11 rounded-lg border border-gray-300 bg-white\"\n>\n <div class=\"w-48 flex justify-between\">\n <mat-date-range-input [rangePicker]=\"picker\" class=\"w-full\">\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matStartDate\n placeholder=\"Start date\"\n (dateInput)=\"startDateSelected($event)\"\n />\n <input\n class=\"w-24 text-black font-basierCircle text-base font-medium text-center\"\n matEndDate\n placeholder=\"End date\"\n (dateInput)=\"endDateSelected($event)\"\n />\n </mat-date-range-input>\n </div>\n <mat-datepicker-toggle matSuffix [for]=\"picker\">\n <mat-icon>calendar_today</mat-icon>\n </mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n</div>\n", styles: ["mat-datepicker-toggle{@apply text-primary;}\n"] }]
|
|
24909
|
-
}] });
|
|
24910
|
-
|
|
24911
|
-
class EditableLabelDirective {
|
|
24912
|
-
constructor(el, renderer) {
|
|
24913
|
-
this.el = el;
|
|
24914
|
-
this.renderer = renderer;
|
|
24915
|
-
this.editableLabelChanged = new EventEmitter();
|
|
24916
|
-
}
|
|
24917
|
-
ngAfterViewInit() {
|
|
24918
|
-
if (this.gnUiEditableLabel !== false) {
|
|
24919
|
-
const appendedInput = this.renderer.createElement('input');
|
|
24920
|
-
this.renderer.setStyle(appendedInput, 'background', 'inherit');
|
|
24921
|
-
this.renderer.setStyle(appendedInput, 'color', 'inherit');
|
|
24922
|
-
this.renderer.setStyle(appendedInput, 'font', 'inherit');
|
|
24923
|
-
this.renderer.setStyle(appendedInput, 'border', 'inherit');
|
|
24924
|
-
this.renderer.setStyle(appendedInput, 'width', '100%');
|
|
24925
|
-
this.renderer.setStyle(appendedInput, 'padding', 'inherit');
|
|
24926
|
-
this.renderer.setStyle(appendedInput, 'margin', '0');
|
|
24927
|
-
this.renderer.setStyle(appendedInput, 'height', 'inherit');
|
|
24928
|
-
this.renderer.setStyle(appendedInput, 'line-height', 'inherit');
|
|
24929
|
-
this.renderer.setStyle(appendedInput, 'text-decoration', 'inherit');
|
|
24930
|
-
const hostContent = this.el.nativeElement.textContent || '';
|
|
24931
|
-
const formattedContent = hostContent.replace(/\s+/g, ' ').trim();
|
|
24932
|
-
this.renderer.setProperty(appendedInput, 'value', formattedContent);
|
|
24933
|
-
this.renderer.setProperty(this.el.nativeElement, 'innerHTML', '');
|
|
24934
|
-
this.renderer.listen(appendedInput, 'input', (event) => {
|
|
24935
|
-
this.editableLabelChanged.emit(event.target.value);
|
|
24936
|
-
});
|
|
24937
|
-
this.renderer.appendChild(this.el.nativeElement, appendedInput);
|
|
24938
|
-
}
|
|
24939
|
-
}
|
|
24940
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
24941
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.7", type: EditableLabelDirective, isStandalone: true, selector: "[gnUiEditableLabel]", inputs: { gnUiEditableLabel: "gnUiEditableLabel" }, outputs: { editableLabelChanged: "editableLabelChanged" }, ngImport: i0 }); }
|
|
24942
|
-
}
|
|
24943
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: EditableLabelDirective, decorators: [{
|
|
24944
|
-
type: Directive,
|
|
24945
|
-
args: [{
|
|
24946
|
-
selector: '[gnUiEditableLabel]',
|
|
24947
|
-
standalone: true,
|
|
24948
|
-
}]
|
|
24949
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { editableLabelChanged: [{
|
|
25307
|
+
}], exitsViewport: [{
|
|
24950
25308
|
type: Output
|
|
24951
|
-
}], gnUiEditableLabel: [{
|
|
24952
|
-
type: Input
|
|
24953
25309
|
}] } });
|
|
24954
25310
|
|
|
24955
25311
|
class FilesDropDirective {
|
|
@@ -25141,7 +25497,7 @@ class ImageInputComponent {
|
|
|
25141
25497
|
});
|
|
25142
25498
|
}
|
|
25143
25499
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, deps: [{ token: i1.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25144
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$
|
|
25500
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageInputComponent, isStandalone: true, selector: "gn-ui-image-input", inputs: { maxSizeMB: "maxSizeMB", previewUrl: "previewUrl", altText: "altText", uploadProgress: "uploadProgress", uploadError: "uploadError" }, outputs: { fileChange: "fileChange", urlChange: "urlChange", uploadCancel: "uploadCancel", delete: "delete", altTextChange: "altTextChange" }, ngImport: i0, template: "<ng-container *ngIf=\"previewUrl; then withImage; else withoutImage\">\n</ng-container>\n\n<ng-template #withImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <div class=\"flex-1 group relative\">\n <img\n class=\"w-full h-full object-cover border-2 border-gray-300 rounded-lg\"\n [alt]=\"altText\"\n loading=\"lazy\"\n [src]=\"previewUrl\"\n />\n <gn-ui-button\n [extraClass]=\"\n 'bg-gray-200 absolute right-2 bottom-2 invisible group-hover:visible'\n \"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined\">delete</mat-icon>\n </gn-ui-button>\n </div>\n <input\n *ngIf=\"showAltTextInput\"\n type=\"text\"\n class=\"py-3 px-2 border-2 border-gray-300 rounded-lg text-sm font-medium\"\n [placeholder]=\"'input.image.altTextPlaceholder' | translate\"\n [value]=\"altText\"\n (change)=\"handleAltTextChange($event)\"\n />\n <div class=\"flex flex-row gap-2\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"handleDelete()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">delete</mat-icon>\n {{ 'input.image.delete' | translate }}\n </gn-ui-button>\n <gn-ui-button\n *ngIf=\"!showAltTextInput\"\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"toggleAltTextInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">add</mat-icon>\n {{ 'input.image.displayAltTextInput' | translate }}\n </gn-ui-button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #withoutImage>\n <div class=\"w-full h-full flex flex-col gap-2\">\n <label\n gnUiFilesDrop\n class=\"block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4\"\n (dragFilesOver)=\"handleDragFilesOver($event)\"\n (dropFiles)=\"handleDropFiles($event)\"\n >\n <div class=\"w-14 h-14 rounded-md bg-gray-200 grid\">\n <mat-icon\n *ngIf=\"!dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >image</mat-icon\n >\n <mat-icon\n *ngIf=\"dragFilesOver && !uploadProgress && !uploadError\"\n class=\"material-symbols-outlined place-self-center text-blue-500\"\n >add_box</mat-icon\n >\n <div *ngIf=\"uploadProgress\">\n <mat-progress-spinner\n class=\"place-self-center\"\n [diameter]=\"56\"\n [mode]=\"'determinate'\"\n [value]=\"uploadProgress\"\n ></mat-progress-spinner>\n <span\n class=\"text-sm font-medium relative inline-block width-[30px] bottom-[40px] left-[15px]\"\n >\n {{ uploadProgress }}%\n </span>\n </div>\n <mat-icon\n *ngIf=\"uploadError\"\n class=\"material-symbols-outlined place-self-center text-rose-500\"\n >broken_image</mat-icon\n >\n </div>\n <div class=\"flex flex-col items-center gap-1\">\n <p class=\"font-medium\">{{ getPrimaryText() | translate }}</p>\n <p\n class=\"text-sm\"\n [class]=\"\n uploadProgress || uploadError\n ? 'font-bold text-blue-500 cursor-pointer'\n : 'font-medium text-gray-500'\n \"\n (click)=\"handleSecondaryTextClick()\"\n >\n {{ getSecondaryText() | translate }}\n </p>\n </div>\n <input\n type=\"file\"\n class=\"hidden\"\n (change)=\"handleFileInput($event)\"\n [disabled]=\"showUrlInput || uploadProgress || uploadError\"\n />\n </label>\n <div *ngIf=\"!showUrlInput\" class=\"flex-none\">\n <gn-ui-button\n [extraClass]=\"'bg-gray-200 font-bold'\"\n (buttonClick)=\"displayUrlInput()\"\n >\n <mat-icon class=\"material-symbols-outlined me-1\">link</mat-icon>\n {{ 'input.image.displayUrlInput' | translate }}\n </gn-ui-button>\n </div>\n <div *ngIf=\"showUrlInput\" class=\"flex-none flex flex-col gap-2\">\n <div class=\"h-2\"></div>\n <div class=\"flex gap-2 items-center\">\n <div class=\"flex-1 flex rounded-lg\">\n <span\n class=\"material-symbols-outlined px-4 inline-flex items-center min-w-fit rounded-s-lg border-2 border-e-0 border-gray-300\"\n >link</span\n >\n <input\n type=\"text\"\n class=\"py-3 ps-1 block w-full border-2 border-s-0 border-e-0 border-gray-300 text-sm font-medium\"\n placeholder=\"https://exemple.com/image.jpg\"\n (change)=\"handleUrlChange($event)\"\n />\n <gn-ui-button\n class=\"px-1 inline-flex items-center min-w-fit rounded-e-lg border-2 border-s-0 border-gray-300 text-white\"\n [extraClass]=\"\n urlInputValue && !downloadError ? 'bg-blue-500' : 'bg-gray-500'\n \"\n [disabled]=\"!urlInputValue || downloadError\"\n (buttonClick)=\"downloadUrl()\"\n >\n <mat-icon class=\"material-symbols-outlined\">arrow_upward</mat-icon>\n </gn-ui-button>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: FilesDropDirective, selector: "[gnUiFilesDrop]", outputs: ["dragFilesOver", "dropFiles"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1$6.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25145
25501
|
}
|
|
25146
25502
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageInputComponent, decorators: [{
|
|
25147
25503
|
type: Component,
|
|
@@ -25177,8 +25533,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25177
25533
|
|
|
25178
25534
|
class UiInputsModule {
|
|
25179
25535
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
25180
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [
|
|
25181
|
-
AutocompleteComponent,
|
|
25536
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, declarations: [AutocompleteComponent,
|
|
25182
25537
|
TextInputComponent,
|
|
25183
25538
|
DragAndDropFileInputComponent,
|
|
25184
25539
|
ChipsInputComponent,
|
|
@@ -25189,8 +25544,7 @@ class UiInputsModule {
|
|
|
25189
25544
|
CheckToggleComponent,
|
|
25190
25545
|
CopyTextButtonComponent,
|
|
25191
25546
|
CheckboxComponent,
|
|
25192
|
-
SearchInputComponent,
|
|
25193
|
-
DateRangePickerComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25547
|
+
SearchInputComponent], imports: [CommonModule, i1$1.TranslateModule, NgxDropzoneModule,
|
|
25194
25548
|
FormsModule,
|
|
25195
25549
|
ReactiveFormsModule,
|
|
25196
25550
|
TagInputModule,
|
|
@@ -25208,7 +25562,9 @@ class UiInputsModule {
|
|
|
25208
25562
|
EditableLabelDirective,
|
|
25209
25563
|
TextAreaComponent,
|
|
25210
25564
|
ButtonComponent,
|
|
25211
|
-
ImageInputComponent
|
|
25565
|
+
ImageInputComponent,
|
|
25566
|
+
DropdownSelectorComponent,
|
|
25567
|
+
DateRangePickerComponent], exports: [DropdownSelectorComponent,
|
|
25212
25568
|
AutocompleteComponent,
|
|
25213
25569
|
ButtonComponent,
|
|
25214
25570
|
TextInputComponent,
|
|
@@ -25243,13 +25599,14 @@ class UiInputsModule {
|
|
|
25243
25599
|
MatInputModule,
|
|
25244
25600
|
MatDatepickerModule,
|
|
25245
25601
|
MatNativeDateModule,
|
|
25246
|
-
ImageInputComponent
|
|
25602
|
+
ImageInputComponent,
|
|
25603
|
+
DropdownSelectorComponent,
|
|
25604
|
+
DateRangePickerComponent] }); }
|
|
25247
25605
|
}
|
|
25248
25606
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiInputsModule, decorators: [{
|
|
25249
25607
|
type: NgModule,
|
|
25250
25608
|
args: [{
|
|
25251
25609
|
declarations: [
|
|
25252
|
-
DropdownSelectorComponent,
|
|
25253
25610
|
AutocompleteComponent,
|
|
25254
25611
|
TextInputComponent,
|
|
25255
25612
|
DragAndDropFileInputComponent,
|
|
@@ -25262,7 +25619,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25262
25619
|
CopyTextButtonComponent,
|
|
25263
25620
|
CheckboxComponent,
|
|
25264
25621
|
SearchInputComponent,
|
|
25265
|
-
DateRangePickerComponent,
|
|
25266
25622
|
],
|
|
25267
25623
|
imports: [
|
|
25268
25624
|
CommonModule,
|
|
@@ -25286,6 +25642,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
25286
25642
|
TextAreaComponent,
|
|
25287
25643
|
ButtonComponent,
|
|
25288
25644
|
ImageInputComponent,
|
|
25645
|
+
DropdownSelectorComponent,
|
|
25646
|
+
DateRangePickerComponent,
|
|
25289
25647
|
],
|
|
25290
25648
|
exports: [
|
|
25291
25649
|
DropdownSelectorComponent,
|
|
@@ -25359,7 +25717,7 @@ class AddLayerFromOgcApiComponent {
|
|
|
25359
25717
|
this.layerAdded.emit({ ...layerToAdd, title: layer });
|
|
25360
25718
|
}
|
|
25361
25719
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
25362
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer }}\n </p>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }] }); }
|
|
25720
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromOgcApiComponent, isStandalone: true, selector: "gn-ui-add-layer-from-ogc-api", inputs: { ogcUrl: "ogcUrl" }, outputs: { layerAdded: "layerAdded" }, ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"ogcUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.ogc.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer }}\n </p>\n <gn-ui-button\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }] }); }
|
|
25363
25721
|
}
|
|
25364
25722
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromOgcApiComponent, decorators: [{
|
|
25365
25723
|
type: Component,
|
|
@@ -26118,7 +26476,7 @@ class ApiCardComponent {
|
|
|
26118
26476
|
}
|
|
26119
26477
|
}
|
|
26120
26478
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26121
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3
|
|
26479
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ApiCardComponent, selector: "gn-ui-api-card", inputs: { link: "link", currentLink: "currentLink" }, outputs: { openRecordApiForm: "openRecordApiForm" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"group flex flex-col justify-between h-40 pt-5 pb-6 px-7 rounded filter overflow-hidden\"\n [ngClass]=\"{ 'cursor-pointer': displayApiFormButton }\"\n (click)=\"openRecordApiFormPanel()\"\n>\n <div\n class=\"font-title font-medium text-21 text-black text-ellipsis overflow-hidden break-words pb-5 h-[4.5rem]\"\n >\n {{ link.name || link.description }}\n </div>\n <div class=\"\">\n <div class=\"flex flex-row justify-between\">\n <span\n class=\"bg-primary-opacity-50 uppercase inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded text-primary-lightest group-hover:bg-primary transition-colors\"\n [ngClass]=\"{\n '!bg-primary': currentlyActive\n }\"\n >{{ link.accessServiceProtocol }}</span\n >\n <gn-ui-copy-text-button\n *ngIf=\"!displayApiFormButton\"\n [text]=\"link.url.toString()\"\n [tooltipText]=\"'tooltip.url.copy' | translate\"\n [displayText]=\"false\"\n ></gn-ui-copy-text-button>\n <button\n *ngIf=\"displayApiFormButton\"\n type=\"button\"\n [ngClass]=\"{\n 'py-2 px-4 rounded-r-md bg-gray-400 hover:bg-gray-600 focus:bg-gray-800 text-white':\n displayText\n }\"\n mat-raised-button\n [matTooltip]=\"\n !currentlyActive\n ? ('record.metadata.api.form.openForm' | translate)\n : ('record.metadata.api.form.closeForm' | translate)\n \"\n matTooltipPosition=\"above\"\n >\n <mat-icon\n class=\"material-symbols-outlined pointer-events-none align-middle card-icon\"\n [ngClass]=\"{\n 'text-secondary opacity-100': currentlyActive\n }\"\n >more_horiz</mat-icon\n >\n </button>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26122
26480
|
}
|
|
26123
26481
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ApiCardComponent, decorators: [{
|
|
26124
26482
|
type: Component,
|
|
@@ -26269,11 +26627,11 @@ class ImageOverlayPreviewComponent {
|
|
|
26269
26627
|
basicLightbox.create(`<img src="${src}"/>`).show();
|
|
26270
26628
|
}
|
|
26271
26629
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26272
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"
|
|
26630
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ImageOverlayPreviewComponent, selector: "gn-ui-image-overlay-preview", inputs: { imageUrl: "imageUrl" }, outputs: { isPlaceholderShown: "isPlaceholderShown" }, ngImport: i0, template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: ContentGhostComponent, selector: "gn-ui-content-ghost", inputs: ["showContent", "ghostClass"] }] }); }
|
|
26273
26631
|
}
|
|
26274
26632
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ImageOverlayPreviewComponent, decorators: [{
|
|
26275
26633
|
type: Component,
|
|
26276
|
-
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"
|
|
26634
|
+
args: [{ selector: 'gn-ui-image-overlay-preview', template: "<gn-ui-content-ghost\n [showContent]=\"imageUrl !== undefined\"\n ghostClass=\"h-48 mb-3\"\n>\n <div\n *ngIf=\"imageUrl\"\n [showContent]=\"imageUrl !== undefined\"\n data-cy=\"record-thumbnail\"\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 group-hover:shadow-xl group-hover:border-0 h-48 mb-3\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"imageUrl\"\n fit=\"cover\"\n (placeholderShown)=\"isPlaceholderShown.emit($event)\"\n ></gn-ui-thumbnail>\n <div class=\"relative\">\n <gn-ui-button\n class=\"absolute bottom-0 right-0 z-10 mr-2 mb-2\"\n [type]=\"'outline'\"\n [extraClass]=\"'!py-2 !px-0'\"\n (buttonClick)=\"openLightbox(imageUrl)\"\n >\n <mat-icon class=\"material-symbols-outlined font-extralight\"\n >zoom_out_map</mat-icon\n >\n </gn-ui-button>\n </div>\n </div>\n</gn-ui-content-ghost>\n" }]
|
|
26277
26635
|
}], propDecorators: { imageUrl: [{
|
|
26278
26636
|
type: Input
|
|
26279
26637
|
}], isPlaceholderShown: [{
|
|
@@ -26315,7 +26673,7 @@ class MarkdownEditorComponent {
|
|
|
26315
26673
|
this.textContentChanged.emit(this.textContent);
|
|
26316
26674
|
}
|
|
26317
26675
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26318
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p class=\"flex-none mb-2 font-medium text-sm text-gray-900\">\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26676
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: MarkdownEditorComponent, isStandalone: true, selector: "gn-ui-markdown-editor", inputs: { preview: "preview", helperText: "helperText", placeholder: "placeholder", textContent: "textContent" }, outputs: { textContentChanged: "textContentChanged" }, ngImport: i0, template: "<div class=\"h-full flex flex-col\">\n <p class=\"flex-none mb-2 font-medium text-sm text-gray-900\">\n {{ helperText }}\n </p>\n <div class=\"flex-1\" [hidden]=\"preview\">\n <gn-ui-text-area\n [placeholder]=\"placeholder\"\n [value]=\"textContent\"\n (valueChange)=\"textContentChangedHandler($event)\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"flex-1 border border-gray-800 rounded overflow-y-scroll\"\n [hidden]=\"!preview\"\n >\n <gn-ui-markdown-parser [textContent]=\"textContent\"></gn-ui-markdown-parser>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: MarkdownParserComponent, selector: "gn-ui-markdown-parser", inputs: ["textContent"] }, { kind: "ngmodule", type: TranslateModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26319
26677
|
}
|
|
26320
26678
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
|
|
26321
26679
|
type: Component,
|
|
@@ -26794,18 +27152,18 @@ class RecordApiFormComponent {
|
|
|
26794
27152
|
this.format$.next(DEFAULT_PARAMS.FORMAT);
|
|
26795
27153
|
}
|
|
26796
27154
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26797
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between
|
|
27155
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RecordApiFormComponent, selector: "gn-ui-record-api-form", inputs: { apiLink: "apiLink" }, ngImport: i0, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"formatsList\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: CopyTextButtonComponent, selector: "gn-ui-copy-text-button", inputs: ["text", "tooltipText", "displayText", "rows"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26798
27156
|
}
|
|
26799
27157
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordApiFormComponent, decorators: [{
|
|
26800
27158
|
type: Component,
|
|
26801
|
-
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between
|
|
27159
|
+
args: [{ selector: 'gn-ui-record-api-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-col gap-8\">\n <div class=\"flex flex-col bg-white p-8 ng-star-inserted shadow-xl gap-8\">\n <div class=\"flex flex-row\">\n <div class=\"text-[16px] text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.create\n </div>\n <button\n (click)=\"resetUrl()\"\n class=\"bg-primary-opacity-50 inline-flex items-center justify-center px-2 py-1 text-13 font-medium leading-none text-white rounded capitalize text-primary-lightest hover:bg-primary transition-colors\"\n >\n <p class=\"text-[13px] uppercase\" translate>\n record.metadata.api.form.reset\n </p>\n </button>\n </div>\n <div class=\"flex flex-row flex-wrap justify-between grow gap-5\">\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-[14px]\" translate>record.metadata.api.form.limit</p>\n <div class=\"flex flex-row items-center gap-2\">\n <gn-ui-text-input\n class=\"mr-2 w-20\"\n (valueChange)=\"setLimit($event)\"\n [value]=\"displayLimit$ | async\"\n hint=\"\"\n >\n </gn-ui-text-input>\n <div class=\"flex items-center\">\n <input\n class=\"mr-2 cursor-pointer\"\n type=\"checkbox\"\n [checked]=\"noLimitChecked$ | async\"\n (change)=\"setLimit('-1')\"\n />\n <span class=\"text-sm\" translate\n >record.metadata.api.form.limit.all</span\n >\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.offset</p>\n <gn-ui-text-input\n class=\"w-20\"\n [value]=\"offset$ | async\"\n (valueChange)=\"setOffset($event)\"\n hint=\"\"\n >\n </gn-ui-text-input>\n </div>\n <div class=\"flex flex-col gap-3\">\n <p class=\"text-sm\" translate>record.metadata.api.form.type</p>\n <gn-ui-dropdown-selector\n #dropdown\n [title]=\"''\"\n extraBtnClass=\"secondary min-w-full !w-40 !text-black\"\n [showTitle]=\"false\"\n class=\"text-black\"\n [choices]=\"formatsList\"\n (selectValue)=\"setFormat($event)\"\n [selected]=\"format$ | async\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n </div>\n <div class=\"flex flex-col gap-3 mb-3\">\n <div class=\"text-sm text-black truncate font-title w-11/12\" translate>\n record.metadata.api.form.customUrl\n </div>\n <div class=\"bg-white rounded-lg\">\n <gn-ui-copy-text-button\n [text]=\"apiQueryUrl$ | async\"\n ></gn-ui-copy-text-button>\n </div>\n </div>\n</div>\n", styles: [":host ::ng-deep input{color:#000;opacity:1}:host ::ng-deep gn-ui-copy-text-button input[type=text]{color:#000;background-color:#fff}:host ::ng-deep gn-ui-copy-text-button button,host ::ng-deep gn-ui-copy-text-button button:hover{background-color:var(--color-secondary)!important}:host ::ng-deep gn-ui-copy-text-button button mat-icon{color:#fff!important;opacity:1!important}:host ::ng-deep gn-ui-copy-text-button button:hover mat-icon{color:#d3d3d3!important}\n"] }]
|
|
26802
27160
|
}], propDecorators: { apiLink: [{
|
|
26803
27161
|
type: Input
|
|
26804
27162
|
}] } });
|
|
26805
27163
|
|
|
26806
27164
|
class RelatedRecordCardComponent {
|
|
26807
27165
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26808
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3
|
|
27166
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: RelatedRecordCardComponent, selector: "gn-ui-related-record-card", inputs: { record: "record" }, ngImport: i0, template: "<a\n class=\"w-72 h-96 overflow-hidden rounded-lg bg-white cursor-pointer block hover:-translate-y-2 duration-[180ms]\"\n [routerLink]=\"['/dataset', record.uniqueIdentifier]\"\n target=\"_blank\"\n>\n <div class=\"h-52 bg-gray-100\">\n <gn-ui-thumbnail\n class=\"h-52 w-full object-cover\"\n [thumbnailUrl]=\"record.overviews?.[0]?.url.toString()\"\n ></gn-ui-thumbnail>\n </div>\n <div class=\"flex flex-col justify-between h-44 px-5 pt-4 pb-6\">\n <h4\n class=\"max-h-24 font-title text-21 text-black text-ellipsis overflow-hidden\"\n >\n {{ record.title }}\n </h4>\n <div>\n <button\n mat-raised-button\n [matTooltip]=\"'tooltip.url.open' | translate\"\n matTooltipPosition=\"above\"\n >\n <mat-icon class=\"material-symbols-outlined align-middle text-secondary\"\n >open_in_new</mat-icon\n >\n </button>\n </div>\n </div>\n</a>\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i1$7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26809
27167
|
}
|
|
26810
27168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RelatedRecordCardComponent, decorators: [{
|
|
26811
27169
|
type: Component,
|
|
@@ -26942,11 +27300,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
26942
27300
|
|
|
26943
27301
|
class FormFieldWrapperComponent {
|
|
26944
27302
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26945
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: ["
|
|
27303
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", 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\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\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\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26946
27304
|
}
|
|
26947
27305
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldWrapperComponent, decorators: [{
|
|
26948
27306
|
type: Component,
|
|
26949
|
-
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatTooltipModule], template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\n class=\"material-symbols-outlined m-2 icon-small\"\n [matTooltip]=\"hint\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </div>\n <div class=\"flex-1\">\n <ng-content></ng-content>\n </div>\n</div>\n"
|
|
27307
|
+
args: [{ selector: 'gn-ui-form-field-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatIconModule, MatTooltipModule], template: "<div class=\"h-full flex flex-col\">\n <div class=\"flex-none w-full flex flex-row items-center\">\n <span class=\"flex-none font-bold\">{{ label }}</span>\n <div class=\"flex-1 flex justify-end items-center\">\n <ng-content select=\"[form-field-interaction]\"></ng-content>\n <span\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\">\n <ng-content></ng-content>\n </div>\n</div>\n" }]
|
|
26950
27308
|
}], propDecorators: { label: [{
|
|
26951
27309
|
type: Input
|
|
26952
27310
|
}], hint: [{
|
|
@@ -27130,7 +27488,7 @@ class UserPreviewComponent {
|
|
|
27130
27488
|
return (this.user.name + ' ' + this.user.surname).trim();
|
|
27131
27489
|
}
|
|
27132
27490
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27133
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i3
|
|
27491
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserPreviewComponent, selector: "gn-ui-user-preview", inputs: { user: "user", avatarPlaceholder: "avatarPlaceholder" }, ngImport: i0, template: "<figure class=\"text-center\">\n <div\n class=\"w-12 h-12 border border-primary rounded-full capitalize\"\n [matTooltip]=\"userFullName\"\n >\n <gn-ui-avatar\n [avatarUrl]=\"user.profileIcon\"\n [avatarPlaceholder]=\"avatarPlaceholder\"\n ></gn-ui-avatar>\n </div>\n</figure>\n", dependencies: [{ kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: AvatarComponent, selector: "gn-ui-avatar", inputs: ["avatarUrl", "avatarPlaceholder"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27134
27492
|
}
|
|
27135
27493
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserPreviewComponent, decorators: [{
|
|
27136
27494
|
type: Component,
|
|
@@ -27141,6 +27499,112 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27141
27499
|
type: Input
|
|
27142
27500
|
}] } });
|
|
27143
27501
|
|
|
27502
|
+
class TimeSincePipe {
|
|
27503
|
+
constructor(translate) {
|
|
27504
|
+
this.translate = translate;
|
|
27505
|
+
}
|
|
27506
|
+
transform(value) {
|
|
27507
|
+
if (isNaN(value.getTime())) {
|
|
27508
|
+
throw new Error('Invalid Date');
|
|
27509
|
+
}
|
|
27510
|
+
const maintenant = new Date();
|
|
27511
|
+
let locale;
|
|
27512
|
+
switch (this.translate.currentLang) {
|
|
27513
|
+
case 'fr':
|
|
27514
|
+
locale = fr$1;
|
|
27515
|
+
break;
|
|
27516
|
+
case 'de':
|
|
27517
|
+
locale = de$1;
|
|
27518
|
+
break;
|
|
27519
|
+
case 'es':
|
|
27520
|
+
locale = es$1;
|
|
27521
|
+
break;
|
|
27522
|
+
case 'it':
|
|
27523
|
+
locale = it$1;
|
|
27524
|
+
break;
|
|
27525
|
+
case 'nl':
|
|
27526
|
+
locale = nl$1;
|
|
27527
|
+
break;
|
|
27528
|
+
case 'pt':
|
|
27529
|
+
locale = pt$1;
|
|
27530
|
+
break;
|
|
27531
|
+
case 'sk':
|
|
27532
|
+
locale = sk;
|
|
27533
|
+
break;
|
|
27534
|
+
case 'en':
|
|
27535
|
+
default:
|
|
27536
|
+
locale = enUS;
|
|
27537
|
+
break;
|
|
27538
|
+
}
|
|
27539
|
+
return formatDistance(value, maintenant, {
|
|
27540
|
+
addSuffix: true,
|
|
27541
|
+
locale: locale,
|
|
27542
|
+
});
|
|
27543
|
+
}
|
|
27544
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TimeSincePipe, deps: [{ token: i1$1.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
27545
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: TimeSincePipe, isStandalone: true, name: "timeSince" }); }
|
|
27546
|
+
}
|
|
27547
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TimeSincePipe, decorators: [{
|
|
27548
|
+
type: Pipe,
|
|
27549
|
+
args: [{
|
|
27550
|
+
name: 'timeSince',
|
|
27551
|
+
standalone: true,
|
|
27552
|
+
}]
|
|
27553
|
+
}], ctorParameters: function () { return [{ type: i1$1.TranslateService }]; } });
|
|
27554
|
+
|
|
27555
|
+
class UserFeedbackItemComponent {
|
|
27556
|
+
constructor() {
|
|
27557
|
+
this.newUserFeedbackAnswer = new EventEmitter();
|
|
27558
|
+
this.isAnAnswer = false;
|
|
27559
|
+
this.newAnswer = '';
|
|
27560
|
+
this.isAnswerEmpty = true;
|
|
27561
|
+
}
|
|
27562
|
+
ngOnInit() {
|
|
27563
|
+
this.isAnAnswer = !!this.userFeedbackParent.parentUuid;
|
|
27564
|
+
}
|
|
27565
|
+
onNewAnswerValueChange() {
|
|
27566
|
+
this.isAnswerEmpty = this.newAnswer.length === 0;
|
|
27567
|
+
}
|
|
27568
|
+
publishNewAnswer() {
|
|
27569
|
+
if (this.newAnswer.trim() === '')
|
|
27570
|
+
return;
|
|
27571
|
+
const newAnswer = {
|
|
27572
|
+
...this.userFeedbackParent,
|
|
27573
|
+
uuid: undefined,
|
|
27574
|
+
published: true,
|
|
27575
|
+
comment: this.newAnswer,
|
|
27576
|
+
parentUuid: this.userFeedbackParent.uuid,
|
|
27577
|
+
authorUserId: this.activeUser?.id,
|
|
27578
|
+
authorEmail: this.activeUser?.email,
|
|
27579
|
+
date: new Date(),
|
|
27580
|
+
authorName: `${this.activeUser?.name} ${this.activeUser?.surname}`,
|
|
27581
|
+
};
|
|
27582
|
+
this.newUserFeedbackAnswer.emit(newAnswer);
|
|
27583
|
+
this.newAnswer = '';
|
|
27584
|
+
this.onNewAnswerValueChange();
|
|
27585
|
+
}
|
|
27586
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27587
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: { userFeedbackParent: "userFeedbackParent", userFeedBacksAnswers: "userFeedBacksAnswers", isActiveUserEditor: "isActiveUserEditor", activeUser: "activeUser", isLastComment: "isLastComment", isAddUserFeedbackLoading: "isAddUserFeedbackLoading" }, outputs: { newUserFeedbackAnswer: "newUserFeedbackAnswer" }, ngImport: i0, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span> {{ userFeedbackParent.date | timeSince }}</span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"isActiveUserEditor\" class=\"mt-2 flex flex-col\">\n <hr class=\"-mx-4 my-4\" />\n <div\n id=\"new-comment-buttons\"\n class=\"flex flex-row gap-2 items-center justify-end\"\n >\n <gn-ui-text-area\n [disabled]=\"isAddUserFeedbackLoading\"\n [(value)]=\"newAnswer\"\n (valueChange)=\"onNewAnswerValueChange()\"\n (keyup.control.enter)=\"publishNewAnswer()\"\n [placeholder]=\"\n 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate\n \"\n class=\"grow\"\n extraClass=\"bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9\"\n ></gn-ui-text-area>\n <div *ngIf=\"!isAnswerEmpty\" class=\"flex flex-row justify-end\">\n <gn-ui-button\n [disabled]=\"isAddUserFeedbackLoading\"\n [type]=\"'outline'\"\n (buttonClick)=\"publishNewAnswer()\"\n [title]=\"\n 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate\n \"\n extraClass=\"!p-[0.5em] text-primary-darker border-primary-darker h-9\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"!isAddUserFeedbackLoading\"\n >\n send\n </mat-icon>\n <ng-container *ngIf=\"isAddUserFeedbackLoading\">\n <div class=\"flex justify-center w-full\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: SpinningLoaderComponent, selector: "gn-ui-spinning-loader" }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: UserFeedbackItemComponent, selector: "gn-ui-user-feedback-item", inputs: ["userFeedbackParent", "userFeedBacksAnswers", "isActiveUserEditor", "activeUser", "isLastComment", "isAddUserFeedbackLoading"], outputs: ["newUserFeedbackAnswer"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: TimeSincePipe, name: "timeSince" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27588
|
+
}
|
|
27589
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UserFeedbackItemComponent, decorators: [{
|
|
27590
|
+
type: Component,
|
|
27591
|
+
args: [{ selector: 'gn-ui-user-feedback-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"userFeedbackParent.published\"\n class=\"flex flex-col bg-white rounded w-full\"\n [ngClass]=\"[isAnAnswer ? 'ps-4 ' : 'p-4']\"\n>\n <div class=\"flex flex-row\">\n <div class=\"avatar\">\n <img\n class=\"rounded-full\"\n [src]=\"userFeedbackParent.avatarUrl\"\n alt=\"avatar\"\n />\n </div>\n <div class=\"p-4 flex flex-col\">\n <span>{{ userFeedbackParent.authorName }}</span>\n <span> {{ userFeedbackParent.date | timeSince }}</span>\n </div>\n </div>\n <div data-cy=\"commentText\" class=\"mt-4 whitespace-pre-line\">\n {{ userFeedbackParent.comment }}\n </div>\n <div\n class=\"w-full\"\n *ngFor=\"let userFeedBacksAnswer of userFeedBacksAnswers; let last = last\"\n >\n <hr class=\"-mx-4 my-6\" />\n <gn-ui-user-feedback-item\n [userFeedbackParent]=\"userFeedBacksAnswer\"\n [isLastComment]=\"last\"\n ></gn-ui-user-feedback-item>\n </div>\n\n <div *ngIf=\"isActiveUserEditor\" class=\"mt-2 flex flex-col\">\n <hr class=\"-mx-4 my-4\" />\n <div\n id=\"new-comment-buttons\"\n class=\"flex flex-row gap-2 items-center justify-end\"\n >\n <gn-ui-text-area\n [disabled]=\"isAddUserFeedbackLoading\"\n [(value)]=\"newAnswer\"\n (valueChange)=\"onNewAnswerValueChange()\"\n (keyup.control.enter)=\"publishNewAnswer()\"\n [placeholder]=\"\n 'record.metadata.userFeedbacks.newAnswer.placeholder' | translate\n \"\n class=\"grow\"\n extraClass=\"bg-transparent border-0 placeholder-primary-darker text-primary-darker h-9\"\n ></gn-ui-text-area>\n <div *ngIf=\"!isAnswerEmpty\" class=\"flex flex-row justify-end\">\n <gn-ui-button\n [disabled]=\"isAddUserFeedbackLoading\"\n [type]=\"'outline'\"\n (buttonClick)=\"publishNewAnswer()\"\n [title]=\"\n 'record.metadata.userFeedbacks.newAnswer.buttonTitle' | translate\n \"\n extraClass=\"!p-[0.5em] text-primary-darker border-primary-darker h-9\"\n >\n <mat-icon\n class=\"material-symbols-outlined\"\n *ngIf=\"!isAddUserFeedbackLoading\"\n >\n send\n </mat-icon>\n <ng-container *ngIf=\"isAddUserFeedbackLoading\">\n <div class=\"flex justify-center w-full\">\n <gn-ui-spinning-loader></gn-ui-spinning-loader>\n </div>\n </ng-container>\n </gn-ui-button>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
27592
|
+
}], propDecorators: { userFeedbackParent: [{
|
|
27593
|
+
type: Input
|
|
27594
|
+
}], userFeedBacksAnswers: [{
|
|
27595
|
+
type: Input
|
|
27596
|
+
}], isActiveUserEditor: [{
|
|
27597
|
+
type: Input
|
|
27598
|
+
}], activeUser: [{
|
|
27599
|
+
type: Input
|
|
27600
|
+
}], isLastComment: [{
|
|
27601
|
+
type: Input
|
|
27602
|
+
}], isAddUserFeedbackLoading: [{
|
|
27603
|
+
type: Input
|
|
27604
|
+
}], newUserFeedbackAnswer: [{
|
|
27605
|
+
type: Output
|
|
27606
|
+
}] } });
|
|
27607
|
+
|
|
27144
27608
|
class UiElementsModule {
|
|
27145
27609
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27146
27610
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, declarations: [MetadataInfoComponent,
|
|
@@ -27162,6 +27626,7 @@ class UiElementsModule {
|
|
|
27162
27626
|
PaginationButtonsComponent,
|
|
27163
27627
|
MaxLinesComponent,
|
|
27164
27628
|
RecordApiFormComponent,
|
|
27629
|
+
UserFeedbackItemComponent,
|
|
27165
27630
|
ImageOverlayPreviewComponent], imports: [CommonModule,
|
|
27166
27631
|
MatIconModule,
|
|
27167
27632
|
MatTooltipModule,
|
|
@@ -27172,7 +27637,8 @@ class UiElementsModule {
|
|
|
27172
27637
|
FormsModule,
|
|
27173
27638
|
NgOptimizedImage,
|
|
27174
27639
|
MarkdownParserComponent,
|
|
27175
|
-
ThumbnailComponent
|
|
27640
|
+
ThumbnailComponent,
|
|
27641
|
+
TimeSincePipe], exports: [MetadataInfoComponent,
|
|
27176
27642
|
ContentGhostComponent,
|
|
27177
27643
|
DownloadItemComponent,
|
|
27178
27644
|
DownloadsListComponent,
|
|
@@ -27192,6 +27658,7 @@ class UiElementsModule {
|
|
|
27192
27658
|
MaxLinesComponent,
|
|
27193
27659
|
RecordApiFormComponent,
|
|
27194
27660
|
MarkdownParserComponent,
|
|
27661
|
+
UserFeedbackItemComponent,
|
|
27195
27662
|
ImageOverlayPreviewComponent] }); }
|
|
27196
27663
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiElementsModule, imports: [CommonModule,
|
|
27197
27664
|
MatIconModule,
|
|
@@ -27222,6 +27689,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27222
27689
|
NgOptimizedImage,
|
|
27223
27690
|
MarkdownParserComponent,
|
|
27224
27691
|
ThumbnailComponent,
|
|
27692
|
+
TimeSincePipe,
|
|
27225
27693
|
],
|
|
27226
27694
|
declarations: [
|
|
27227
27695
|
MetadataInfoComponent,
|
|
@@ -27243,6 +27711,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27243
27711
|
PaginationButtonsComponent,
|
|
27244
27712
|
MaxLinesComponent,
|
|
27245
27713
|
RecordApiFormComponent,
|
|
27714
|
+
UserFeedbackItemComponent,
|
|
27246
27715
|
ImageOverlayPreviewComponent,
|
|
27247
27716
|
],
|
|
27248
27717
|
exports: [
|
|
@@ -27266,11 +27735,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
27266
27735
|
MaxLinesComponent,
|
|
27267
27736
|
RecordApiFormComponent,
|
|
27268
27737
|
MarkdownParserComponent,
|
|
27738
|
+
UserFeedbackItemComponent,
|
|
27269
27739
|
ImageOverlayPreviewComponent,
|
|
27270
27740
|
],
|
|
27271
27741
|
}]
|
|
27272
27742
|
}] });
|
|
27273
27743
|
|
|
27744
|
+
class NotificationComponent {
|
|
27745
|
+
constructor() {
|
|
27746
|
+
this.type = 'info';
|
|
27747
|
+
this.notificationClose = new EventEmitter();
|
|
27748
|
+
}
|
|
27749
|
+
handleClose(event) {
|
|
27750
|
+
event?.preventDefault();
|
|
27751
|
+
this.notificationClose.emit();
|
|
27752
|
+
}
|
|
27753
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27754
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NotificationComponent, isStandalone: true, selector: "gn-ui-notification", inputs: { type: "type", title: "title", text: "text", closeMessage: "closeMessage" }, outputs: { notificationClose: "notificationClose" }, ngImport: i0, template: "<div\n class=\"p-[16px] flex flex-row gap-[16px] items-start border border-gray-200 shadow-md rounded bg-background\"\n>\n <div\n role=\"alert\"\n class=\"rounded-full text-white p-[6px] w-[32px] h-[32px] flex shrink-0\"\n [ngClass]=\"{\n 'bg-red-500': type === 'error',\n 'bg-yellow-500': type === 'warning',\n 'bg-green-500': type === 'success',\n 'bg-blue-500': type === 'info'\n }\"\n [ngSwitch]=\"type\"\n >\n <mat-icon class=\"material-symbols-outlined !w-[18px] !h-[18px] text-[20px]\">\n <ng-container *ngSwitchCase=\"'success'\">check_circle</ng-container>\n <ng-container *ngSwitchCase=\"'info'\">info</ng-container>\n <ng-container *ngSwitchCase=\"'warning'\">warning</ng-container>\n <ng-container *ngSwitchCase=\"'error'\">error</ng-container>\n </mat-icon>\n </div>\n <div\n class=\"flex flex-col items-start gap-[4px] pt-[3px] grow shrink overflow-hidden\"\n >\n <div class=\"font-bold text-[16px] text-gray-900\">\n {{ title }}\n </div>\n <div class=\"text-[14px] text-gray-800\">\n {{ text }}\n </div>\n <a\n href\n *ngIf=\"closeMessage\"\n class=\"text-[14px] gn-ui-link\"\n (click)=\"handleClose($event)\"\n >\n {{ closeMessage }}\n </a>\n </div>\n <gn-ui-button\n type=\"light\"\n class=\"shrink-0\"\n (buttonClick)=\"handleClose()\"\n [style.--gn-ui-button-padding]=\"0\"\n [style.--gn-ui-button-width]=\"'21px'\"\n [style.--gn-ui-button-height]=\"'21px'\"\n >\n <mat-icon class=\"material-symbols-outlined text-[22px] !w-[21px] !h-[21px]\"\n >close</mat-icon\n >\n </gn-ui-button>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27755
|
+
}
|
|
27756
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationComponent, decorators: [{
|
|
27757
|
+
type: Component,
|
|
27758
|
+
args: [{ selector: 'gn-ui-notification', standalone: true, imports: [CommonModule, MatIconModule, ButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"p-[16px] flex flex-row gap-[16px] items-start border border-gray-200 shadow-md rounded bg-background\"\n>\n <div\n role=\"alert\"\n class=\"rounded-full text-white p-[6px] w-[32px] h-[32px] flex shrink-0\"\n [ngClass]=\"{\n 'bg-red-500': type === 'error',\n 'bg-yellow-500': type === 'warning',\n 'bg-green-500': type === 'success',\n 'bg-blue-500': type === 'info'\n }\"\n [ngSwitch]=\"type\"\n >\n <mat-icon class=\"material-symbols-outlined !w-[18px] !h-[18px] text-[20px]\">\n <ng-container *ngSwitchCase=\"'success'\">check_circle</ng-container>\n <ng-container *ngSwitchCase=\"'info'\">info</ng-container>\n <ng-container *ngSwitchCase=\"'warning'\">warning</ng-container>\n <ng-container *ngSwitchCase=\"'error'\">error</ng-container>\n </mat-icon>\n </div>\n <div\n class=\"flex flex-col items-start gap-[4px] pt-[3px] grow shrink overflow-hidden\"\n >\n <div class=\"font-bold text-[16px] text-gray-900\">\n {{ title }}\n </div>\n <div class=\"text-[14px] text-gray-800\">\n {{ text }}\n </div>\n <a\n href\n *ngIf=\"closeMessage\"\n class=\"text-[14px] gn-ui-link\"\n (click)=\"handleClose($event)\"\n >\n {{ closeMessage }}\n </a>\n </div>\n <gn-ui-button\n type=\"light\"\n class=\"shrink-0\"\n (buttonClick)=\"handleClose()\"\n [style.--gn-ui-button-padding]=\"0\"\n [style.--gn-ui-button-width]=\"'21px'\"\n [style.--gn-ui-button-height]=\"'21px'\"\n >\n <mat-icon class=\"material-symbols-outlined text-[22px] !w-[21px] !h-[21px]\"\n >close</mat-icon\n >\n </gn-ui-button>\n</div>\n" }]
|
|
27759
|
+
}], propDecorators: { type: [{
|
|
27760
|
+
type: Input
|
|
27761
|
+
}], title: [{
|
|
27762
|
+
type: Input
|
|
27763
|
+
}], text: [{
|
|
27764
|
+
type: Input
|
|
27765
|
+
}], closeMessage: [{
|
|
27766
|
+
type: Input
|
|
27767
|
+
}], notificationClose: [{
|
|
27768
|
+
type: Output
|
|
27769
|
+
}] } });
|
|
27770
|
+
|
|
27274
27771
|
class UiSearchModule {
|
|
27275
27772
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
27276
27773
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: UiSearchModule, declarations: [RecordPreviewComponent,
|
|
@@ -29426,7 +29923,7 @@ class ResultsTableComponent {
|
|
|
29426
29923
|
}));
|
|
29427
29924
|
}
|
|
29428
29925
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, deps: [{ token: SearchFacade }, { token: SearchService }, { token: SelectionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29429
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\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 {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\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\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2
|
|
29926
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: ResultsTableComponent, isStandalone: true, selector: "gn-ui-results-table", outputs: { recordClick: "recordClick" }, ngImport: i0, template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\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 {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\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\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white 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-sm text-white 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\" *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 [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: UiInputsModule }, { kind: "component", type: CheckboxComponent, selector: "gn-ui-checkbox", inputs: ["type", "checked", "indeterminate"], outputs: ["changed"] }, { kind: "component", type: InteractiveTableComponent, selector: "gn-ui-interactive-table", inputs: ["items"], outputs: ["itemClick"] }, { kind: "component", type: InteractiveTableColumnComponent, selector: "gn-ui-interactive-table-column", inputs: ["grow", "sortable", "activeSort"], outputs: ["sortChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] }); }
|
|
29430
29927
|
}
|
|
29431
29928
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: ResultsTableComponent, decorators: [{
|
|
29432
29929
|
type: Component,
|
|
@@ -29437,7 +29934,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
29437
29934
|
InteractiveTableColumnComponent,
|
|
29438
29935
|
MatIconModule,
|
|
29439
29936
|
TranslateModule,
|
|
29440
|
-
], template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\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 {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\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\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white px-2
|
|
29937
|
+
], template: "<gn-ui-interactive-table\n [items]=\"records$ | async\"\n (itemClick)=\"handleRecordClick($event)\"\n>\n <!-- SELECTED COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <gn-ui-checkbox\n [checked]=\"isAllSelected() | async\"\n [indeterminate]=\"isSomeSelected() | async\"\n (changed)=\"toggleSelectAll()\"\n type=\"default\"\n class=\"-m-2 mr-3\"\n >\n </gn-ui-checkbox>\n </ng-template>\n <ng-template #cell let-item>\n <gn-ui-checkbox\n [checked]=\"isChecked(item) | async\"\n (changed)=\"handleRecordSelectedChange($event, item)\"\n class=\"-m-2\"\n type=\"default\"\n ></gn-ui-checkbox>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- TITLE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('resourceTitleObject.default.keyword') | async\"\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 {{ item.title }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- FORMATS COLUMN -->\n <gn-ui-interactive-table-column>\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\"\n *ngIf=\"getRecordFormats(item) as formats\"\n [title]=\"formats.join(', ')\"\n >\n <span\n class=\"badge-btn min-w-[45px] text-sm text-white 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-sm text-white 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\" *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 [sortable]=\"true\"\n [activeSort]=\"isSortedBy('recordOwner') | async\"\n (sortChange)=\"setSortBy('recordOwner', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.author</span>\n </ng-template>\n <ng-template #cell let-item>\n <mat-icon class=\"material-symbols-outlined\">person</mat-icon>\n <span>{{ formatUserInfo(item.extras?.ownerInfo) }}</span>\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- STATUS COLUMN -->\n <gn-ui-interactive-table-column>\n <ng-template #header>\n <span translate>record.metadata.status</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ item.status }}\n </ng-template>\n </gn-ui-interactive-table-column>\n\n <!-- UPDATE DATE COLUMN -->\n <gn-ui-interactive-table-column\n [sortable]=\"true\"\n [activeSort]=\"isSortedBy('changeDate') | async\"\n (sortChange)=\"setSortBy('changeDate', $event)\"\n >\n <ng-template #header>\n <span translate>record.metadata.updatedOn</span>\n </ng-template>\n <ng-template #cell let-item>\n {{ dateToString(item.recordUpdated) }}\n </ng-template>\n </gn-ui-interactive-table-column>\n</gn-ui-interactive-table>\n" }]
|
|
29441
29938
|
}], ctorParameters: function () { return [{ type: SearchFacade }, { type: SearchService }, { type: SelectionService }]; }, propDecorators: { recordClick: [{
|
|
29442
29939
|
type: Output
|
|
29443
29940
|
}] } });
|
|
@@ -29568,7 +30065,7 @@ class AddLayerFromWmsComponent {
|
|
|
29568
30065
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
29569
30066
|
}
|
|
29570
30067
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29571
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30068
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWmsComponent, selector: "gn-ui-add-layer-from-wms", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wmsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wms.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container\n *ngFor=\"let layer of layers\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: layer\n }\"\n ></ng-container>\n</div>\n\n<ng-template #layerTreeItem let-layer=\"layer\">\n <div class=\"flex items-center justify-between layer-tree-item my-2\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n <div *ngIf=\"layer.children?.length > 0\" class=\"ml-4\">\n <ng-container\n *ngFor=\"let child of layer.children\"\n [ngTemplateOutlet]=\"layerTreeItem\"\n [ngTemplateOutletContext]=\"{\n layer: child\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29572
30069
|
}
|
|
29573
30070
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWmsComponent, decorators: [{
|
|
29574
30071
|
type: Component,
|
|
@@ -29667,11 +30164,11 @@ class AddLayerFromFileComponent {
|
|
|
29667
30164
|
}, 5000);
|
|
29668
30165
|
}
|
|
29669
30166
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromFileComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29670
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file", ngImport: i0, template: "<div class=\"flex flex-col gap-2 my-2\">\n <div class=\"flex items-center gap-4\">\n <div class=\"
|
|
30167
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromFileComponent, selector: "gn-ui-add-layer-from-file", ngImport: i0, template: "<div class=\"flex flex-col gap-2 my-2\">\n <div class=\"flex items-center gap-4\">\n <div class=\"grow rounded-md border-2 border-gray-200\">\n <gn-ui-drag-and-drop-file-input\n (fileChange)=\"handleFileChange($event)\"\n [accept]=\"acceptedMimeType.join(',')\"\n [placeholder]=\"'map.addFromFile.placeholder' | translate\"\n class=\"placeholder-grey\"\n ></gn-ui-drag-and-drop-file-input>\n </div>\n </div>\n <p class=\"text-sm text-gray-600\" translate>map.help.addFromFile</p>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"successMessage\" class=\"text-green-500 mt-2\">\n {{ successMessage }}\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: DragAndDropFileInputComponent, selector: "gn-ui-drag-and-drop-file-input", inputs: ["placeholder", "accept"], outputs: ["fileChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29671
30168
|
}
|
|
29672
30169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromFileComponent, decorators: [{
|
|
29673
30170
|
type: Component,
|
|
29674
|
-
args: [{ selector: 'gn-ui-add-layer-from-file', template: "<div class=\"flex flex-col gap-2 my-2\">\n <div class=\"flex items-center gap-4\">\n <div class=\"
|
|
30171
|
+
args: [{ selector: 'gn-ui-add-layer-from-file', template: "<div class=\"flex flex-col gap-2 my-2\">\n <div class=\"flex items-center gap-4\">\n <div class=\"grow rounded-md border-2 border-gray-200\">\n <gn-ui-drag-and-drop-file-input\n (fileChange)=\"handleFileChange($event)\"\n [accept]=\"acceptedMimeType.join(',')\"\n [placeholder]=\"'map.addFromFile.placeholder' | translate\"\n class=\"placeholder-grey\"\n ></gn-ui-drag-and-drop-file-input>\n </div>\n </div>\n <p class=\"text-sm text-gray-600\" translate>map.help.addFromFile</p>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"successMessage\" class=\"text-green-500 mt-2\">\n {{ successMessage }}\n</div>\n" }]
|
|
29675
30172
|
}], ctorParameters: function () { return [{ type: MapFacade }, { type: i0.ChangeDetectorRef }]; } });
|
|
29676
30173
|
|
|
29677
30174
|
class AddLayerFromWfsComponent {
|
|
@@ -29719,7 +30216,7 @@ class AddLayerFromWfsComponent {
|
|
|
29719
30216
|
this.mapFacade.addLayer({ ...layerToAdd, title: layer.title });
|
|
29720
30217
|
}
|
|
29721
30218
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, deps: [{ token: MapFacade }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29722
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
30219
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: AddLayerFromWfsComponent, selector: "gn-ui-add-layer-from-wfs", ngImport: i0, template: "<div class=\"flex items-center mb-5\">\n <gn-ui-text-input\n [(value)]=\"wfsUrl\"\n (valueChange)=\"urlChange.next($event)\"\n [hint]=\"'map.wfs.urlInput.hint' | translate\"\n class=\"w-96\"\n >\n </gn-ui-text-input>\n</div>\n\n<div *ngIf=\"errorMessage\" class=\"text-red-500 mt-2\">\n {{ errorMessage }}\n</div>\n\n<div *ngIf=\"loading\">\n <p class=\"loading-message\" translate>map.loading.service</p>\n</div>\n\n<div *ngIf=\"!loading && layers.length > 0\">\n <h2 class=\"font-bold\" translate>map.layers.available</h2>\n <ng-container *ngFor=\"let layer of layers\">\n <div class=\"flex items-center justify-between my-2 layer-item-tree\">\n <p class=\"max-w-xs overflow-hidden overflow-ellipsis whitespace-nowrap\">\n {{ layer.title }}\n </p>\n <gn-ui-button\n *ngIf=\"layer.name\"\n class=\"layer-add-btn\"\n type=\"primary\"\n (buttonClick)=\"addLayer(layer)\"\n extraClass=\"text-sm !px-2 !py-1\"\n translate\n ><span translate> map.layer.add </span></gn-ui-button\n >\n </div>\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
|
|
29723
30220
|
}
|
|
29724
30221
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: AddLayerFromWfsComponent, decorators: [{
|
|
29725
30222
|
type: Component,
|
|
@@ -30032,31 +30529,143 @@ const DEFAULT_STYLE_HL_FIXTURE = new Style$1({
|
|
|
30032
30529
|
}),
|
|
30033
30530
|
});
|
|
30034
30531
|
|
|
30532
|
+
class NotificationsService {
|
|
30533
|
+
constructor() {
|
|
30534
|
+
this.notifications$ = new BehaviorSubject([]);
|
|
30535
|
+
}
|
|
30536
|
+
showNotification(content, timeoutMs) {
|
|
30537
|
+
const id = Math.floor(Math.random() * 1000000);
|
|
30538
|
+
this.notifications$.next([...this.notifications$.value, { ...content, id }]);
|
|
30539
|
+
if (typeof timeoutMs === 'undefined')
|
|
30540
|
+
return;
|
|
30541
|
+
setTimeout(() => {
|
|
30542
|
+
this.removeNotificationById(id);
|
|
30543
|
+
}, timeoutMs);
|
|
30544
|
+
}
|
|
30545
|
+
removeNotificationById(id) {
|
|
30546
|
+
this.notifications$.next(this.notifications$.value.filter((n) => n.id !== id));
|
|
30547
|
+
}
|
|
30548
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30549
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationsService, providedIn: 'root' }); }
|
|
30550
|
+
}
|
|
30551
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationsService, decorators: [{
|
|
30552
|
+
type: Injectable,
|
|
30553
|
+
args: [{
|
|
30554
|
+
providedIn: 'root',
|
|
30555
|
+
}]
|
|
30556
|
+
}] });
|
|
30557
|
+
|
|
30558
|
+
class FeatureNotificationsModule {
|
|
30559
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureNotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
30560
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: FeatureNotificationsModule }); }
|
|
30561
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureNotificationsModule, providers: [NotificationsService] }); }
|
|
30562
|
+
}
|
|
30563
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureNotificationsModule, decorators: [{
|
|
30564
|
+
type: NgModule,
|
|
30565
|
+
args: [{
|
|
30566
|
+
declarations: [],
|
|
30567
|
+
exports: [],
|
|
30568
|
+
imports: [],
|
|
30569
|
+
providers: [NotificationsService],
|
|
30570
|
+
}]
|
|
30571
|
+
}] });
|
|
30572
|
+
|
|
30573
|
+
class NotificationsContainerComponent {
|
|
30574
|
+
constructor(notificationsService) {
|
|
30575
|
+
this.notificationsService = notificationsService;
|
|
30576
|
+
}
|
|
30577
|
+
trackById(index, notification) {
|
|
30578
|
+
return notification.id;
|
|
30579
|
+
}
|
|
30580
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationsContainerComponent, deps: [{ token: NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30581
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: NotificationsContainerComponent, isStandalone: true, selector: "gn-ui-notifications-container", ngImport: i0, template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "component", type: NotificationComponent, selector: "gn-ui-notification", inputs: ["type", "title", "text", "closeMessage"], outputs: ["notificationClose"] }], animations: [
|
|
30582
|
+
trigger('enterExit', [
|
|
30583
|
+
transition(':enter', [
|
|
30584
|
+
animate('150ms', keyframes([
|
|
30585
|
+
style({ transform: 'scale(1)', opacity: 0 }),
|
|
30586
|
+
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
30587
|
+
style({ transform: 'scale(1)', opacity: 1 }),
|
|
30588
|
+
])),
|
|
30589
|
+
]),
|
|
30590
|
+
transition(':leave', [
|
|
30591
|
+
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
30592
|
+
]),
|
|
30593
|
+
]),
|
|
30594
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30595
|
+
}
|
|
30596
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: NotificationsContainerComponent, decorators: [{
|
|
30597
|
+
type: Component,
|
|
30598
|
+
args: [{ selector: 'gn-ui-notifications-container', standalone: true, imports: [CommonModule, NotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, animations: [
|
|
30599
|
+
trigger('enterExit', [
|
|
30600
|
+
transition(':enter', [
|
|
30601
|
+
animate('150ms', keyframes([
|
|
30602
|
+
style({ transform: 'scale(1)', opacity: 0 }),
|
|
30603
|
+
style({ transform: 'scale(1.03)', opacity: 0.5 }),
|
|
30604
|
+
style({ transform: 'scale(1)', opacity: 1 }),
|
|
30605
|
+
])),
|
|
30606
|
+
]),
|
|
30607
|
+
transition(':leave', [
|
|
30608
|
+
animate('200ms', style({ transform: 'translateX(50px)', opacity: 0 })),
|
|
30609
|
+
]),
|
|
30610
|
+
]),
|
|
30611
|
+
], template: "<div class=\"flex flex-col gap-6 p-6 items-start pointer-events-none\">\n <gn-ui-notification\n *ngFor=\"\n let notification of notificationsService.notifications$ | async;\n trackBy: trackById\n \"\n class=\"max-w-full pointer-events-auto\"\n [text]=\"notification.text\"\n [type]=\"notification.type\"\n [title]=\"notification.title\"\n [closeMessage]=\"notification.closeMessage\"\n (notificationClose)=\"\n notificationsService.removeNotificationById(notification.id)\n \"\n [@enterExit]\n ></gn-ui-notification>\n</div>\n" }]
|
|
30612
|
+
}], ctorParameters: function () { return [{ type: NotificationsService }]; } });
|
|
30613
|
+
|
|
30614
|
+
/*
|
|
30615
|
+
Metadata actions
|
|
30616
|
+
*/
|
|
30035
30617
|
const loadFullMetadata = createAction('[Metadata view] Load full metadata', props());
|
|
30036
30618
|
const setIncompleteMetadata = createAction('[Metadata view] Set incomplete metadata', props());
|
|
30037
|
-
const
|
|
30038
|
-
const
|
|
30619
|
+
const loadFullMetadataSuccess = createAction('[Metadata view] Load full metadata success', props());
|
|
30620
|
+
const loadFullMetadataFailure = createAction('[Metadata view] Load full metadata failure', props());
|
|
30621
|
+
const closeMetadata = createAction('[Metadata view] close');
|
|
30622
|
+
/*
|
|
30623
|
+
Related actions
|
|
30624
|
+
*/
|
|
30039
30625
|
const setRelated = createAction('[Metadata view] Set related records', props());
|
|
30626
|
+
/*
|
|
30627
|
+
ChartConfig actions
|
|
30628
|
+
*/
|
|
30040
30629
|
const setChartConfig = createAction('[Metadata view] Set chart config', props());
|
|
30041
|
-
|
|
30630
|
+
/*
|
|
30631
|
+
User Feedbacks actions
|
|
30632
|
+
*/
|
|
30633
|
+
const addUserFeedback = createAction('[Metadata view] Add UserFeedback', props());
|
|
30634
|
+
const addUserFeedbackSuccess = createAction('[Metadata view] Add UserFeedback Success', props());
|
|
30635
|
+
const addUserFeedbackFailure = createAction('[Metadata view] Add UserFeedback Failure', props());
|
|
30636
|
+
const loadUserFeedbacks = createAction('[Metadata view] Load UserFeedbacks', props());
|
|
30637
|
+
const loadUserFeedbacksSuccess = createAction('[Metadata view] Load UserFeedbacks Success', props());
|
|
30638
|
+
const loadUserFeedbacksFailure = createAction('[Metadata view] Load UserFeedbacks Failure', props());
|
|
30042
30639
|
|
|
30043
30640
|
var mdview_actions = /*#__PURE__*/Object.freeze({
|
|
30044
30641
|
__proto__: null,
|
|
30045
|
-
|
|
30046
|
-
|
|
30642
|
+
addUserFeedback: addUserFeedback,
|
|
30643
|
+
addUserFeedbackFailure: addUserFeedbackFailure,
|
|
30644
|
+
addUserFeedbackSuccess: addUserFeedbackSuccess,
|
|
30645
|
+
closeMetadata: closeMetadata,
|
|
30047
30646
|
loadFullMetadata: loadFullMetadata,
|
|
30048
|
-
|
|
30647
|
+
loadFullMetadataFailure: loadFullMetadataFailure,
|
|
30648
|
+
loadFullMetadataSuccess: loadFullMetadataSuccess,
|
|
30649
|
+
loadUserFeedbacks: loadUserFeedbacks,
|
|
30650
|
+
loadUserFeedbacksFailure: loadUserFeedbacksFailure,
|
|
30651
|
+
loadUserFeedbacksSuccess: loadUserFeedbacksSuccess,
|
|
30049
30652
|
setChartConfig: setChartConfig,
|
|
30050
30653
|
setIncompleteMetadata: setIncompleteMetadata,
|
|
30051
30654
|
setRelated: setRelated
|
|
30052
30655
|
});
|
|
30053
30656
|
|
|
30054
|
-
const
|
|
30055
|
-
const
|
|
30657
|
+
const METADATA_VIEW_FEATURE_STATE_KEY = 'metadataView';
|
|
30658
|
+
const initialMetadataViewState = {
|
|
30056
30659
|
error: null,
|
|
30057
30660
|
loadingFull: false,
|
|
30661
|
+
allUserFeedbacksLoading: false,
|
|
30662
|
+
addUserFeedbackLoading: false,
|
|
30058
30663
|
};
|
|
30059
|
-
const
|
|
30664
|
+
const metadataViewReducer = createReducer(initialMetadataViewState,
|
|
30665
|
+
/*
|
|
30666
|
+
Metadata reducers
|
|
30667
|
+
*/
|
|
30668
|
+
on(loadFullMetadata, (state) => ({
|
|
30060
30669
|
...state,
|
|
30061
30670
|
error: null,
|
|
30062
30671
|
loadingFull: true,
|
|
@@ -30064,38 +30673,82 @@ const mdViewReducer = createReducer(initialMdviewState, on(loadFullMetadata, (st
|
|
|
30064
30673
|
...state,
|
|
30065
30674
|
error: null,
|
|
30066
30675
|
metadata: incomplete,
|
|
30067
|
-
})), on(
|
|
30676
|
+
})), on(loadFullMetadataSuccess, (state, { full }) => ({
|
|
30068
30677
|
...state,
|
|
30069
30678
|
error: null,
|
|
30070
30679
|
metadata: full,
|
|
30071
30680
|
loadingFull: false,
|
|
30072
|
-
})), on(
|
|
30681
|
+
})), on(loadFullMetadataFailure, (state, { otherError, notFound }) => ({
|
|
30073
30682
|
...state,
|
|
30074
30683
|
error: { otherError, notFound },
|
|
30075
30684
|
loadingFull: false,
|
|
30076
|
-
})), on(
|
|
30685
|
+
})), on(closeMetadata, (state) => {
|
|
30686
|
+
const { metadata, related, userFeedbacks, ...stateWithoutMetadata } = state;
|
|
30687
|
+
return stateWithoutMetadata;
|
|
30688
|
+
}),
|
|
30689
|
+
/*
|
|
30690
|
+
Related reducers
|
|
30691
|
+
*/
|
|
30692
|
+
on(setRelated, (state, { related }) => ({
|
|
30077
30693
|
...state,
|
|
30078
30694
|
related,
|
|
30079
|
-
})),
|
|
30695
|
+
})),
|
|
30696
|
+
/*
|
|
30697
|
+
ChartConfig reducers
|
|
30698
|
+
*/
|
|
30699
|
+
on(setChartConfig, (state, { chartConfig }) => ({
|
|
30080
30700
|
...state,
|
|
30081
30701
|
chartConfig,
|
|
30082
|
-
})),
|
|
30083
|
-
|
|
30084
|
-
|
|
30085
|
-
|
|
30086
|
-
|
|
30087
|
-
|
|
30088
|
-
|
|
30702
|
+
})),
|
|
30703
|
+
/*
|
|
30704
|
+
UserFeedbacks reducers
|
|
30705
|
+
*/
|
|
30706
|
+
on(loadUserFeedbacks, (state) => ({
|
|
30707
|
+
...state,
|
|
30708
|
+
error: null,
|
|
30709
|
+
allUserFeedbacksLoading: true,
|
|
30710
|
+
})), on(addUserFeedback, (state) => ({
|
|
30711
|
+
...state,
|
|
30712
|
+
addUserFeedbackLoading: true,
|
|
30713
|
+
})), on(loadUserFeedbacksSuccess, (state, { userFeedbacks }) => ({
|
|
30714
|
+
...state,
|
|
30715
|
+
error: null,
|
|
30716
|
+
userFeedbacks: userFeedbacks,
|
|
30717
|
+
addUserFeedbackLoading: false,
|
|
30718
|
+
allUserFeedbacksLoading: false,
|
|
30719
|
+
})), on(loadUserFeedbacksFailure, (state, { otherError, notFound }) => ({
|
|
30720
|
+
...state,
|
|
30721
|
+
error: { otherError, notFound },
|
|
30722
|
+
addUserFeedbackLoading: false,
|
|
30723
|
+
allUserFeedbacksLoading: false,
|
|
30724
|
+
})));
|
|
30725
|
+
function reducer$1(metadataViewState, action) {
|
|
30726
|
+
return metadataViewReducer(metadataViewState, action);
|
|
30089
30727
|
}
|
|
30090
30728
|
|
|
30091
|
-
const getMdViewState = createFeatureSelector(
|
|
30729
|
+
const getMdViewState = createFeatureSelector(METADATA_VIEW_FEATURE_STATE_KEY);
|
|
30730
|
+
/*
|
|
30731
|
+
Metadata selectors
|
|
30732
|
+
*/
|
|
30092
30733
|
const getMetadataUuid = createSelector(getMdViewState, (state) => state.metadata ? state.metadata.uniqueIdentifier : null);
|
|
30093
30734
|
const getMetadata = createSelector(getMdViewState, (state) => state.metadata);
|
|
30094
30735
|
const getMetadataIsIncomplete = createSelector(getMdViewState, (state) => (state.metadata ? state.loadingFull : null));
|
|
30095
30736
|
const getMetadataIsLoading = createSelector(getMdViewState, (state) => state.loadingFull);
|
|
30096
30737
|
const getMetadataError = createSelector(getMdViewState, (state) => state.error);
|
|
30738
|
+
/*
|
|
30739
|
+
Related selectors
|
|
30740
|
+
*/
|
|
30097
30741
|
const getRelated = createSelector(getMdViewState, (state) => state.related);
|
|
30742
|
+
/*
|
|
30743
|
+
Metadata selectors
|
|
30744
|
+
*/
|
|
30098
30745
|
const getChartConfig = createSelector(getMdViewState, (state) => state.chartConfig);
|
|
30746
|
+
/*
|
|
30747
|
+
UserFeedback selectors
|
|
30748
|
+
*/
|
|
30749
|
+
const getUserFeedbacks = createSelector(getMdViewState, (state) => state.userFeedbacks);
|
|
30750
|
+
const getAllUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.allUserFeedbacksLoading);
|
|
30751
|
+
const getAddUserFeedbacksLoading = createSelector(getMdViewState, (state) => state.addUserFeedbackLoading);
|
|
30099
30752
|
|
|
30100
30753
|
/**
|
|
30101
30754
|
* The Metadata View Facade is used to render complete metadata records.
|
|
@@ -30104,11 +30757,12 @@ const getChartConfig = createSelector(getMdViewState, (state) => state.chartConf
|
|
|
30104
30757
|
* To clear the current record use the `close()` method.
|
|
30105
30758
|
*/
|
|
30106
30759
|
class MdViewFacade {
|
|
30107
|
-
constructor(store, linkClassifier) {
|
|
30760
|
+
constructor(store, linkClassifier, avatarService) {
|
|
30108
30761
|
this.store = store;
|
|
30109
30762
|
this.linkClassifier = linkClassifier;
|
|
30763
|
+
this.avatarService = avatarService;
|
|
30110
30764
|
this.isPresent$ = this.store.pipe(select(getMetadataUuid), map$1((uuid) => !!uuid));
|
|
30111
|
-
this.
|
|
30765
|
+
this.isMetadataLoading$ = this.store.pipe(select(getMetadataIsLoading));
|
|
30112
30766
|
this.metadata$ = this.store.pipe(select(getMetadata), filter((md) => !!md));
|
|
30113
30767
|
this.isIncomplete$ = this.store.pipe(select(getMetadataIsIncomplete), filter((incomplete) => incomplete !== null));
|
|
30114
30768
|
this.error$ = this.store.pipe(select(getMetadataError));
|
|
@@ -30122,6 +30776,9 @@ class MdViewFacade {
|
|
|
30122
30776
|
this.geoDataLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.GEODATA))));
|
|
30123
30777
|
this.landingPageLinks$ = this.metadata$.pipe(map$1((record) => ('landingPage' in record ? [record.landingPage] : [])));
|
|
30124
30778
|
this.otherLinks$ = this.allLinks$.pipe(map$1((links) => links.filter((link) => this.linkClassifier.hasUsage(link, LinkUsage.UNKNOWN))));
|
|
30779
|
+
this.userFeedbacks$ = this.store.pipe(select(getUserFeedbacks));
|
|
30780
|
+
this.isAllUserFeedbackLoading$ = this.store.pipe(select(getAllUserFeedbacksLoading));
|
|
30781
|
+
this.isAddUserFeedbackLoading$ = this.store.pipe(select(getAddUserFeedbacksLoading));
|
|
30125
30782
|
}
|
|
30126
30783
|
/**
|
|
30127
30784
|
* This will show an incomplete record (e.g. from a search result) as a preview
|
|
@@ -30136,39 +30793,73 @@ class MdViewFacade {
|
|
|
30136
30793
|
loadFull(uuid) {
|
|
30137
30794
|
this.store.dispatch(loadFullMetadata({ uuid }));
|
|
30138
30795
|
}
|
|
30139
|
-
|
|
30140
|
-
this.store.dispatch(
|
|
30796
|
+
closeMetadata() {
|
|
30797
|
+
this.store.dispatch(closeMetadata());
|
|
30141
30798
|
}
|
|
30142
30799
|
setChartConfig(chartConfig) {
|
|
30143
30800
|
this.store.dispatch(setChartConfig({ chartConfig }));
|
|
30144
30801
|
}
|
|
30145
|
-
|
|
30802
|
+
/**
|
|
30803
|
+
* UserFeedbacks
|
|
30804
|
+
*/
|
|
30805
|
+
addUserFeedback(userFeedback) {
|
|
30806
|
+
this.store.dispatch(addUserFeedback({ userFeedback }));
|
|
30807
|
+
}
|
|
30808
|
+
loadUserFeedbacks(datasetUuid) {
|
|
30809
|
+
this.store.dispatch(loadUserFeedbacks({ datasetUuid }));
|
|
30810
|
+
}
|
|
30811
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade, deps: [{ token: i1$2.Store }, { token: LinkClassifierService }, { token: AvatarServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30146
30812
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade }); }
|
|
30147
30813
|
}
|
|
30148
30814
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewFacade, decorators: [{
|
|
30149
30815
|
type: Injectable
|
|
30150
|
-
}], ctorParameters: function () { return [{ type: i1$2.Store }, { type: LinkClassifierService }]; } });
|
|
30816
|
+
}], ctorParameters: function () { return [{ type: i1$2.Store }, { type: LinkClassifierService }, { type: AvatarServiceInterface }]; } });
|
|
30151
30817
|
|
|
30152
30818
|
class MdViewEffects {
|
|
30153
|
-
constructor(actions$, recordsRepository) {
|
|
30819
|
+
constructor(actions$, recordsRepository, platformServiceInterface) {
|
|
30154
30820
|
this.actions$ = actions$;
|
|
30155
30821
|
this.recordsRepository = recordsRepository;
|
|
30156
|
-
this.
|
|
30822
|
+
this.platformServiceInterface = platformServiceInterface;
|
|
30823
|
+
/*
|
|
30824
|
+
Metadata effects
|
|
30825
|
+
*/
|
|
30826
|
+
this.loadFullMetadata$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadata), switchMap$1(({ uuid }) => this.recordsRepository.getByUniqueIdentifier(uuid)), map$1((record) => {
|
|
30157
30827
|
if (record === null) {
|
|
30158
|
-
return
|
|
30828
|
+
return loadFullMetadataFailure({ notFound: true });
|
|
30159
30829
|
}
|
|
30160
|
-
return
|
|
30161
|
-
}), catchError((error) => of(
|
|
30162
|
-
|
|
30830
|
+
return loadFullMetadataSuccess({ full: record });
|
|
30831
|
+
}), catchError((error) => of(loadFullMetadataFailure({ otherError: error.message })))));
|
|
30832
|
+
/*
|
|
30833
|
+
Related effects
|
|
30834
|
+
*/
|
|
30835
|
+
this.loadRelatedRecords$ = createEffect(() => this.actions$.pipe(ofType(loadFullMetadataSuccess), switchMap$1(({ full }) => this.recordsRepository.getSimilarRecords(full)), map$1((related) => {
|
|
30163
30836
|
return setRelated({ related });
|
|
30164
30837
|
}), catchError((error) => of(setRelated({ related: null })))));
|
|
30838
|
+
/*
|
|
30839
|
+
UserFeedback effects
|
|
30840
|
+
*/
|
|
30841
|
+
this.loadUserFeedbacks$ = createEffect(() => this.actions$.pipe(ofType(loadUserFeedbacks), exhaustMap(({ datasetUuid }) => this.platformServiceInterface.getUserFeedbacks(datasetUuid).pipe(map$1((userFeedbacks) => loadUserFeedbacksSuccess({ userFeedbacks })), catchError((error) => of(loadUserFeedbacksFailure({
|
|
30842
|
+
otherError: error.message,
|
|
30843
|
+
})))))));
|
|
30844
|
+
this.reloadUserFeedbacks$ = createEffect(() => this.actions$.pipe(ofType(addUserFeedbackSuccess), exhaustMap(({ datasetUuid }) => this.platformServiceInterface.getUserFeedbacks(datasetUuid).pipe(map$1((userFeedbacks) => loadUserFeedbacksSuccess({ userFeedbacks })), catchError((error) => of(loadUserFeedbacksFailure({
|
|
30845
|
+
otherError: error.message,
|
|
30846
|
+
})))))));
|
|
30847
|
+
this.addUserFeedback$ = createEffect(() => this.actions$.pipe(ofType(addUserFeedback), mergeMap$1((action) => this.platformServiceInterface
|
|
30848
|
+
.postUserFeedbacks(action.userFeedback)
|
|
30849
|
+
.pipe(map$1(() => addUserFeedbackSuccess({
|
|
30850
|
+
datasetUuid: action.userFeedback.metadataUUID,
|
|
30851
|
+
})), catchError((error) => {
|
|
30852
|
+
return of(addUserFeedbackFailure({
|
|
30853
|
+
otherError: error.message,
|
|
30854
|
+
}));
|
|
30855
|
+
})))));
|
|
30165
30856
|
}
|
|
30166
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$8.Actions }, { token: RecordsRepositoryInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30857
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, deps: [{ token: i1$8.Actions }, { token: RecordsRepositoryInterface }, { token: PlatformServiceInterface }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
30167
30858
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects }); }
|
|
30168
30859
|
}
|
|
30169
30860
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: MdViewEffects, decorators: [{
|
|
30170
30861
|
type: Injectable
|
|
30171
|
-
}], ctorParameters: function () { return [{ type: i1$8.Actions }, { type: RecordsRepositoryInterface }]; } });
|
|
30862
|
+
}], ctorParameters: function () { return [{ type: i1$8.Actions }, { type: RecordsRepositoryInterface }, { type: PlatformServiceInterface }]; } });
|
|
30172
30863
|
|
|
30173
30864
|
class FigureComponent {
|
|
30174
30865
|
constructor() {
|
|
@@ -30403,7 +31094,7 @@ class TableComponent {
|
|
|
30403
31094
|
return rowIdPrefix + id;
|
|
30404
31095
|
}
|
|
30405
31096
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30406
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\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]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 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</div>\n", styles: ["table{width:100%;background:white}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:whitesmoke}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)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$4.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$
|
|
31097
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: TableComponent, isStandalone: true, selector: "gn-ui-table", inputs: { data: "data", activeId: "activeId" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }], ngImport: i0, template: "<div class=\"border border-gray-300 rounded-lg overflow-hidden bg-white h-full\">\n <cdk-virtual-scroll-viewport\n tvsItemSize=\"48\"\n headerHeight=\"56\"\n style=\"height: calc(100% - 37px)\"\n >\n <table mat-table [dataSource]=\"dataSource\" class=\"mat-elevation-z8\" matSort>\n <ng-container *ngFor=\"let prop of properties\" [matColumnDef]=\"prop\">\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n class=\"text-sm text-black bg-white\"\n >\n {{ prop }}\n </th>\n <td\n mat-cell\n *matCellDef=\"let element\"\n class=\"whitespace-nowrap pr-1 truncate\"\n >\n {{ element[prop] }}\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]=\"row.id === activeId\"\n ></tr>\n </table>\n </cdk-virtual-scroll-viewport>\n <div class=\"text-gray-900 border-t border-gray-300 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</div>\n", styles: ["table{width:100%;background:white}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:whitesmoke}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)}\n"], dependencies: [{ kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i1$9.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i1$9.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i1$9.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i1$9.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i1$9.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i1$9.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i1$9.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i1$9.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i1$9.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i1$9.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i2$4.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i2$4.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: TableVirtualScrollModule }, { kind: "directive", type: i3$2.TableItemSizeDirective, selector: "cdk-virtual-scroll-viewport[tvsItemSize]", inputs: ["tvsItemSize", "headerEnabled", "headerHeight", "footerEnabled", "footerHeight", "bufferMultiplier"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
30407
31098
|
}
|
|
30408
31099
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: TableComponent, decorators: [{
|
|
30409
31100
|
type: Component,
|
|
@@ -31954,11 +32645,11 @@ class OrganisationPreviewComponent {
|
|
|
31954
32645
|
this.clickedOrganisation.emit(this.organisation);
|
|
31955
32646
|
}
|
|
31956
32647
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: OrganisationPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
31957
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: { organisation: "organisation", organisationUrl: "organisationUrl" }, outputs: { clickedOrganisation: "clickedOrganisation" }, ngImport: i0, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organisation.name\"\n >\n <div\n class=\"
|
|
32648
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: OrganisationPreviewComponent, selector: "gn-ui-organisation-preview", inputs: { organisation: "organisation", organisationUrl: "organisationUrl" }, outputs: { clickedOrganisation: "clickedOrganisation" }, ngImport: i0, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organisation.name\"\n >\n <div\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organisation.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col grow overflow-hidden\">\n <span\n class=\"shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organisation.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 grow shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organisation.description }}\n </p>\n <div class=\"shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organisation.recordCount\n }}</span>\n <span translate>record.metadata.publications</span>\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"], dependencies: [{ kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: ThumbnailComponent, selector: "gn-ui-thumbnail", inputs: ["thumbnailUrl", "fit"], outputs: ["placeholderShown"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31958
32649
|
}
|
|
31959
32650
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: OrganisationPreviewComponent, decorators: [{
|
|
31960
32651
|
type: Component,
|
|
31961
|
-
args: [{ selector: 'gn-ui-organisation-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organisation.name\"\n >\n <div\n class=\"
|
|
32652
|
+
args: [{ selector: 'gn-ui-organisation-preview', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a href (click)=\"clickOrganisation($event)\" [attr.href]=\"organisationUrl\">\n <div\n class=\"group cursor-pointer rounded-lg h-full flex flex-col\"\n [title]=\"organisation.name\"\n >\n <div\n class=\"shrink-0 bg-gray-100 rounded-lg overflow-hidden w-full border border-gray-300 h-36\"\n >\n <gn-ui-thumbnail\n class=\"relative h-full w-full\"\n [thumbnailUrl]=\"organisation.logoUrl\"\n [fit]=\"'contain'\"\n >\n </gn-ui-thumbnail>\n </div>\n <div class=\"px-3 pb-2 capitalize flex flex-col grow overflow-hidden\">\n <span\n class=\"shrink-0 mb-3 mt-5 font-title text-21 text-title group-hover:text-primary line-clamp-2 sm:mt-2 transition-colors\"\n data-cy=\"organizationName\"\n >\n {{ organisation.name }}</span\n >\n <p\n class=\"abstract mt-4 mb-5 sm:mb-2 sm:mt-0 grow shrink-1 overflow-hidden\"\n data-cy=\"organizationDesc\"\n >\n {{ organisation.description }}\n </p>\n <div class=\"shrink-0 text-primary opacity-50 flex leading-6\">\n <mat-icon class=\"material-symbols-outlined text-primary opacity-50 mr-1\"\n >folder_open\n </mat-icon>\n <span class=\"mx-1\" data-cy=\"organizationRecordsCount\">{{\n organisation.recordCount\n }}</span>\n <span translate>record.metadata.publications</span>\n </div>\n </div>\n </div>\n</a>\n", styles: [".abstract{position:relative}.abstract:after{content:\"\";position:absolute;bottom:0;left:0;right:0;background:linear-gradient(0deg,white,transparent);height:10px}\n"] }]
|
|
31962
32653
|
}], propDecorators: { organisation: [{
|
|
31963
32654
|
type: Input
|
|
31964
32655
|
}], organisationUrl: [{
|
|
@@ -32487,7 +33178,7 @@ class FeatureRecordModule {
|
|
|
32487
33178
|
DataViewWebComponentComponent,
|
|
32488
33179
|
DataViewShareComponent] }); }
|
|
32489
33180
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FeatureRecordModule, providers: [MdViewFacade], imports: [CommonModule,
|
|
32490
|
-
StoreModule.forFeature(
|
|
33181
|
+
StoreModule.forFeature(METADATA_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
32491
33182
|
EffectsModule.forFeature([MdViewEffects]),
|
|
32492
33183
|
UiLayoutModule,
|
|
32493
33184
|
FeatureMapModule,
|
|
@@ -32515,7 +33206,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
32515
33206
|
],
|
|
32516
33207
|
imports: [
|
|
32517
33208
|
CommonModule,
|
|
32518
|
-
StoreModule.forFeature(
|
|
33209
|
+
StoreModule.forFeature(METADATA_VIEW_FEATURE_STATE_KEY, reducer$1),
|
|
32519
33210
|
EffectsModule.forFeature([MdViewEffects]),
|
|
32520
33211
|
UiLayoutModule,
|
|
32521
33212
|
FeatureMapModule,
|
|
@@ -32580,6 +33271,20 @@ const DEFAULT_FIELDS = [
|
|
|
32580
33271
|
},
|
|
32581
33272
|
onSaveProcess: '${dateNow()}',
|
|
32582
33273
|
},
|
|
33274
|
+
{
|
|
33275
|
+
model: 'licenses',
|
|
33276
|
+
formFieldConfig: {
|
|
33277
|
+
labelKey: marker('editor.record.form.license'),
|
|
33278
|
+
type: 'list',
|
|
33279
|
+
},
|
|
33280
|
+
},
|
|
33281
|
+
{
|
|
33282
|
+
model: 'resourceUpdated',
|
|
33283
|
+
formFieldConfig: {
|
|
33284
|
+
labelKey: marker('editor.record.form.resourceUpdated'),
|
|
33285
|
+
type: 'date',
|
|
33286
|
+
},
|
|
33287
|
+
},
|
|
32583
33288
|
];
|
|
32584
33289
|
|
|
32585
33290
|
const EDITOR_FEATURE_KEY = 'editor';
|
|
@@ -32635,9 +33340,11 @@ const selectRecordFields = createSelector(selectEditorState, (state) => state.fi
|
|
|
32635
33340
|
class EditorFacade {
|
|
32636
33341
|
constructor() {
|
|
32637
33342
|
this.store = inject(Store);
|
|
33343
|
+
this.actions$ = inject(Actions);
|
|
32638
33344
|
this.record$ = this.store.pipe(select(selectRecord));
|
|
32639
33345
|
this.saving$ = this.store.pipe(select(selectRecordSaving));
|
|
32640
|
-
this.saveError$ = this.store.pipe(select(selectRecordSaveError));
|
|
33346
|
+
this.saveError$ = this.store.pipe(select(selectRecordSaveError), filter$1((error) => !!error));
|
|
33347
|
+
this.saveSuccess$ = this.actions$.pipe(ofType(saveRecordSuccess));
|
|
32641
33348
|
this.changedSinceSave$ = this.store.pipe(select(selectRecordChangedSinceSave));
|
|
32642
33349
|
this.recordFields$ = this.store.pipe(select(selectRecordFields));
|
|
32643
33350
|
}
|
|
@@ -32962,7 +33669,7 @@ class WizardFieldComponent {
|
|
|
32962
33669
|
deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
|
|
32963
33670
|
},
|
|
32964
33671
|
{ provide: MAT_DATE_FORMATS, useValue: MY_FORMATS },
|
|
32965
|
-
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type:
|
|
33672
|
+
], viewQueries: [{ propertyName: "searchText", first: true, predicate: ["searchText"], descendants: true }, { propertyName: "chips", first: true, predicate: ["chips"], descendants: true }, { propertyName: "textArea", first: true, predicate: ["textArea"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-1\">\n <span [class]=\"wizardFieldConfig.icon + ' pr-10'\"></span>\n <div class=\"flex flex-col flex-1\">\n <div translate class=\"text-xl font-bold pb-1\">\n {{ wizardFieldConfig.label }}\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.TEXT === wizardFieldConfig.type\"\n >\n <gn-ui-text-input\n #searchText\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n hint=\"\"\n ></gn-ui-text-input>\n </div>\n <div\n class=\"flex-1 w-11/12\"\n *ngIf=\"wizardFieldType.CHIPS === wizardFieldConfig.type\"\n >\n <gn-ui-chips-input\n #chips\n [selectedItems]=\"wizardFieldData\"\n placeholder=\"\"\n [id]=\"wizardFieldConfig.id\"\n [url]=\"wizardFieldConfig.options.url\"\n [loadOnce]=\"wizardFieldConfig.options.loadOnce\"\n ></gn-ui-chips-input>\n </div>\n <div\n class=\"h-32 w-11/12\"\n *ngIf=\"wizardFieldType.TEXT_AREA === wizardFieldConfig.type\"\n >\n <gn-ui-text-area\n #textArea\n [id]=\"wizardFieldConfig.id\"\n [value]=\"wizardFieldData\"\n [required]=\"wizardFieldConfig.required || false\"\n placeholder=\"\"\n ></gn-ui-text-area>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DATA_PICKER === wizardFieldConfig.type\"\n >\n <input\n [id]=\"wizardFieldConfig.id\"\n type=\"text\"\n (click)=\"datepicker.open()\"\n class=\"rounded p-2 text-gray-700 w-full leading-tight focus:outline-none focus:border-primary\"\n [value]=\"wizardFieldData\"\n [matDatepicker]=\"datepicker\"\n (dateChange)=\"onDateChange($event)\"\n />\n <mat-datepicker #datepicker></mat-datepicker>\n </div>\n <div\n class=\"w-1/2 h-12\"\n *ngIf=\"wizardFieldType.DROPDOWN === wizardFieldConfig.type\"\n >\n <gn-ui-dropdown-selector\n #dropdown\n [id]=\"wizardFieldConfig.id\"\n [title]=\"''\"\n [extraBtnClass]=\"'secondary min-w-full'\"\n [showTitle]=\"false\"\n [choices]=\"dropdownChoices\"\n [selected]=\"wizardFieldData\"\n ariaName=\"search-sort-by\"\n ></gn-ui-dropdown-selector>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;flex:1}gn-ui-text-input::ng-deep input,input[type=text]{height:100%;background:white;color:#000;font-style:italic;border-width:2px;border-color:var(--color-primary)}gn-ui-text-area::ng-deep textarea{border-width:2px;border-color:var(--color-primary)}gn-ui-dropdown-selector::ng-deep div{height:100%}gn-ui-dropdown-selector::ng-deep select{height:100%;border-width:2px;border-color:var(--color-primary);background-color:#fff}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }, { kind: "component", type: TextInputComponent, selector: "gn-ui-text-input", inputs: ["value", "extraClass", "hint", "required"], outputs: ["valueChange"] }, { kind: "component", type: TextAreaComponent, selector: "gn-ui-text-area", inputs: ["value", "disabled", "extraClass", "placeholder", "required"], outputs: ["valueChange"] }, { kind: "component", type: ChipsInputComponent, selector: "gn-ui-chips-input", inputs: ["url", "placeholder", "selectedItems", "required", "loadOnce", "autocompleteItems"], outputs: ["itemsChange"] }, { kind: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i2$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i2$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
32966
33673
|
}
|
|
32967
33674
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: WizardFieldComponent, decorators: [{
|
|
32968
33675
|
type: Component,
|
|
@@ -33232,7 +33939,7 @@ class FormFieldRichComponent {
|
|
|
33232
33939
|
this.control.setValue(textContent);
|
|
33233
33940
|
}
|
|
33234
33941
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldRichComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33235
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldRichComponent, isStandalone: true, selector: "gn-ui-form-field-rich", inputs: { control: "control", label: "label", hint: "hint", helperText: "helperText", placeholder: "placeholder" }, ngImport: i0, template: "<gn-ui-form-field-wrapper [label]=\"label\" [hint]=\"hint\">\n <gn-ui-button\n form-field-interaction\n [extraClass]=\"getButtonExtraClass()\"\n (buttonClick)=\"togglePreview()\"\n >\n <span class=\"material-symbols-outlined mr-1 icon-small\">{{\n preview ? 'visibility' : 'visibility_off'\n }}</span>\n {{ preview ? 'WYSIWYG' : 'Markdown' }}\n </gn-ui-button>\n <gn-ui-markdown-editor\n class=\"h-full\"\n [preview]=\"preview\"\n [helperText]=\"helperText\"\n [placeholder]=\"placeholder\"\n [textContent]=\"control.value\"\n (textContentChanged)=\"handleTextContentChanged($event)\"\n ></gn-ui-markdown-editor>\n</gn-ui-form-field-wrapper>\n", styles: ["
|
|
33942
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldRichComponent, isStandalone: true, selector: "gn-ui-form-field-rich", inputs: { control: "control", label: "label", hint: "hint", helperText: "helperText", placeholder: "placeholder" }, ngImport: i0, template: "<gn-ui-form-field-wrapper [label]=\"label\" [hint]=\"hint\">\n <gn-ui-button\n form-field-interaction\n [extraClass]=\"getButtonExtraClass()\"\n (buttonClick)=\"togglePreview()\"\n >\n <span class=\"material-symbols-outlined mr-1 gn-ui-icon-small\">{{\n preview ? 'visibility' : 'visibility_off'\n }}</span>\n {{ preview ? 'WYSIWYG' : 'Markdown' }}\n </gn-ui-button>\n <gn-ui-markdown-editor\n class=\"h-full\"\n [preview]=\"preview\"\n [helperText]=\"helperText\"\n [placeholder]=\"placeholder\"\n [textContent]=\"control.value\"\n (textContentChanged)=\"handleTextContentChanged($event)\"\n ></gn-ui-markdown-editor>\n</gn-ui-form-field-wrapper>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: MarkdownEditorComponent, selector: "gn-ui-markdown-editor", inputs: ["preview", "helperText", "placeholder", "textContent"], outputs: ["textContentChanged"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: ButtonComponent, selector: "gn-ui-button", inputs: ["type", "disabled", "extraClass"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33236
33943
|
}
|
|
33237
33944
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldRichComponent, decorators: [{
|
|
33238
33945
|
type: Component,
|
|
@@ -33242,7 +33949,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33242
33949
|
MarkdownEditorComponent,
|
|
33243
33950
|
FormFieldWrapperComponent,
|
|
33244
33951
|
ButtonComponent,
|
|
33245
|
-
], template: "<gn-ui-form-field-wrapper [label]=\"label\" [hint]=\"hint\">\n <gn-ui-button\n form-field-interaction\n [extraClass]=\"getButtonExtraClass()\"\n (buttonClick)=\"togglePreview()\"\n >\n <span class=\"material-symbols-outlined mr-1 icon-small\">{{\n preview ? 'visibility' : 'visibility_off'\n }}</span>\n {{ preview ? 'WYSIWYG' : 'Markdown' }}\n </gn-ui-button>\n <gn-ui-markdown-editor\n class=\"h-full\"\n [preview]=\"preview\"\n [helperText]=\"helperText\"\n [placeholder]=\"placeholder\"\n [textContent]=\"control.value\"\n (textContentChanged)=\"handleTextContentChanged($event)\"\n ></gn-ui-markdown-editor>\n</gn-ui-form-field-wrapper>\n"
|
|
33952
|
+
], template: "<gn-ui-form-field-wrapper [label]=\"label\" [hint]=\"hint\">\n <gn-ui-button\n form-field-interaction\n [extraClass]=\"getButtonExtraClass()\"\n (buttonClick)=\"togglePreview()\"\n >\n <span class=\"material-symbols-outlined mr-1 gn-ui-icon-small\">{{\n preview ? 'visibility' : 'visibility_off'\n }}</span>\n {{ preview ? 'WYSIWYG' : 'Markdown' }}\n </gn-ui-button>\n <gn-ui-markdown-editor\n class=\"h-full\"\n [preview]=\"preview\"\n [helperText]=\"helperText\"\n [placeholder]=\"placeholder\"\n [textContent]=\"control.value\"\n (textContentChanged)=\"handleTextContentChanged($event)\"\n ></gn-ui-markdown-editor>\n</gn-ui-form-field-wrapper>\n" }]
|
|
33246
33953
|
}], propDecorators: { control: [{
|
|
33247
33954
|
type: Input
|
|
33248
33955
|
}], label: [{
|
|
@@ -33291,6 +33998,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33291
33998
|
args: [{ selector: 'gn-ui-form-field-temporal-extent', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<p>form-field-temporal-extent works!</p>\n" }]
|
|
33292
33999
|
}] });
|
|
33293
34000
|
|
|
34001
|
+
class FormFieldLicenseComponent {
|
|
34002
|
+
constructor() {
|
|
34003
|
+
this.choices = [
|
|
34004
|
+
{
|
|
34005
|
+
value: 'cc-by',
|
|
34006
|
+
label: marker('editor.record.form.license.cc-by'),
|
|
34007
|
+
},
|
|
34008
|
+
{
|
|
34009
|
+
value: 'cc-by-sa',
|
|
34010
|
+
label: marker('editor.record.form.license.cc-by-sa'),
|
|
34011
|
+
},
|
|
34012
|
+
{
|
|
34013
|
+
value: 'cc-zero',
|
|
34014
|
+
label: marker('editor.record.form.license.cc-zero'),
|
|
34015
|
+
},
|
|
34016
|
+
{
|
|
34017
|
+
value: 'etalab',
|
|
34018
|
+
label: marker('editor.record.form.license.etalab'),
|
|
34019
|
+
},
|
|
34020
|
+
{
|
|
34021
|
+
value: 'etalab-v2',
|
|
34022
|
+
label: marker('editor.record.form.license.etalab-v2'),
|
|
34023
|
+
},
|
|
34024
|
+
{
|
|
34025
|
+
value: 'odbl',
|
|
34026
|
+
label: marker('editor.record.form.license.odbl'),
|
|
34027
|
+
},
|
|
34028
|
+
{
|
|
34029
|
+
value: 'odc-by',
|
|
34030
|
+
label: marker('editor.record.form.license.odc-by'),
|
|
34031
|
+
},
|
|
34032
|
+
{
|
|
34033
|
+
value: 'pddl',
|
|
34034
|
+
label: marker('editor.record.form.license.pddl'),
|
|
34035
|
+
},
|
|
34036
|
+
{
|
|
34037
|
+
value: 'unknown',
|
|
34038
|
+
label: marker('editor.record.form.license.unknown'),
|
|
34039
|
+
},
|
|
34040
|
+
];
|
|
34041
|
+
}
|
|
34042
|
+
get selected() {
|
|
34043
|
+
return this.control.value[0]?.text;
|
|
34044
|
+
}
|
|
34045
|
+
onSelectValue(value) {
|
|
34046
|
+
this.control.setValue([{ text: value }]);
|
|
34047
|
+
}
|
|
34048
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34049
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldLicenseComponent, isStandalone: true, selector: "gn-ui-form-field-license", inputs: { control: "control", label: "label" }, ngImport: i0, template: "<gn-ui-dropdown-selector\n [title]=\"label\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selected\"\n (selectValue)=\"onSelectValue($event)\"\n>\n</gn-ui-dropdown-selector>\n", styles: [""], dependencies: [{ kind: "component", type: DropdownSelectorComponent, selector: "gn-ui-dropdown-selector", inputs: ["title", "showTitle", "ariaName", "choices", "selected", "maxRows", "extraBtnClass", "minWidth"], outputs: ["selectValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34050
|
+
}
|
|
34051
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldLicenseComponent, decorators: [{
|
|
34052
|
+
type: Component,
|
|
34053
|
+
args: [{ selector: 'gn-ui-form-field-license', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [DropdownSelectorComponent], template: "<gn-ui-dropdown-selector\n [title]=\"label\"\n [showTitle]=\"false\"\n [choices]=\"choices\"\n [selected]=\"selected\"\n (selectValue)=\"onSelectValue($event)\"\n>\n</gn-ui-dropdown-selector>\n" }]
|
|
34054
|
+
}], propDecorators: { control: [{
|
|
34055
|
+
type: Input
|
|
34056
|
+
}], label: [{
|
|
34057
|
+
type: Input
|
|
34058
|
+
}] } });
|
|
34059
|
+
|
|
34060
|
+
class FormFieldResourceUpdatedComponent {
|
|
34061
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34062
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldResourceUpdatedComponent, isStandalone: true, selector: "gn-ui-form-field-resource-updated", inputs: { control: "control" }, ngImport: i0, template: "<gn-ui-date-picker\n [date]=\"control.value\"\n (dateChange)=\"control.setValue($event)\"\n></gn-ui-date-picker>\n", styles: [""], dependencies: [{ kind: "component", type: DatePickerComponent, selector: "gn-ui-date-picker", inputs: ["date"], outputs: ["dateChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
34063
|
+
}
|
|
34064
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldResourceUpdatedComponent, decorators: [{
|
|
34065
|
+
type: Component,
|
|
34066
|
+
args: [{ selector: 'gn-ui-form-field-resource-updated', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [DatePickerComponent], template: "<gn-ui-date-picker\n [date]=\"control.value\"\n (dateChange)=\"control.setValue($event)\"\n></gn-ui-date-picker>\n" }]
|
|
34067
|
+
}], propDecorators: { control: [{
|
|
34068
|
+
type: Input
|
|
34069
|
+
}] } });
|
|
34070
|
+
|
|
33294
34071
|
class FormFieldComponent {
|
|
33295
34072
|
set value(v) {
|
|
33296
34073
|
this.formControl.setValue(v, {
|
|
@@ -33301,6 +34078,9 @@ class FormFieldComponent {
|
|
|
33301
34078
|
this.formControl = new FormControl();
|
|
33302
34079
|
this.valueChange = this.formControl.valueChanges;
|
|
33303
34080
|
}
|
|
34081
|
+
focusTitleInput() {
|
|
34082
|
+
this.titleInput.nativeElement.children[0].focus();
|
|
34083
|
+
}
|
|
33304
34084
|
get simpleType() {
|
|
33305
34085
|
return this.config.type;
|
|
33306
34086
|
}
|
|
@@ -33336,15 +34116,35 @@ class FormFieldComponent {
|
|
|
33336
34116
|
get isFieldInvalid() {
|
|
33337
34117
|
return !this.config.locked && this.config.invalid;
|
|
33338
34118
|
}
|
|
34119
|
+
get isTitle() {
|
|
34120
|
+
return this.model === 'title';
|
|
34121
|
+
}
|
|
33339
34122
|
get isAbstract() {
|
|
33340
34123
|
return this.model === 'abstract';
|
|
33341
34124
|
}
|
|
34125
|
+
get isLicenses() {
|
|
34126
|
+
return this.model === 'licenses';
|
|
34127
|
+
}
|
|
34128
|
+
get isResourceUpdated() {
|
|
34129
|
+
return this.model === 'resourceUpdated';
|
|
34130
|
+
}
|
|
34131
|
+
get withoutWrapper() {
|
|
34132
|
+
return this.model === 'title' || this.model === 'abstract';
|
|
34133
|
+
}
|
|
33342
34134
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33343
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <
|
|
34135
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: FormFieldComponent, isStandalone: true, selector: "gn-ui-form-field", inputs: { model: "model", config: "config", value: "value" }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "titleInput", first: true, predicate: ["titleInput"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: EditableLabelDirective, selector: "[gnUiEditableLabel]", inputs: ["gnUiEditableLabel"], outputs: ["editableLabelChanged"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: FormFieldWrapperComponent, selector: "gn-ui-form-field-wrapper", inputs: ["label", "hint"] }, { kind: "component", type: FormFieldLicenseComponent, selector: "gn-ui-form-field-license", inputs: ["control", "label"] }, { kind: "component", type: FormFieldResourceUpdatedComponent, selector: "gn-ui-form-field-resource-updated", inputs: ["control"] }, { kind: "component", type: FormFieldSimpleComponent, selector: "gn-ui-form-field-simple", inputs: ["type", "control", "readonly", "invalid", "placeholder", "options"] }, { kind: "component", type: FormFieldRichComponent, selector: "gn-ui-form-field-rich", inputs: ["control", "label", "hint", "helperText", "placeholder"] }, { kind: "component", type: FormFieldObjectComponent, selector: "gn-ui-form-field-object" }, { kind: "component", type: FormFieldSpatialExtentComponent, selector: "gn-ui-form-field-spatial-extent" }, { kind: "component", type: FormFieldTemporalExtentComponent, selector: "gn-ui-form-field-temporal-extent" }, { kind: "component", type: FormFieldFileComponent, selector: "gn-ui-form-field-file", inputs: ["control", "readonly", "invalid", "placeholder"] }, { kind: "component", type: FormFieldArrayComponent, selector: "gn-ui-form-field-array" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
33344
34136
|
}
|
|
33345
34137
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
33346
34138
|
type: Component,
|
|
33347
34139
|
args: [{ selector: 'gn-ui-form-field', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
34140
|
+
CommonModule,
|
|
34141
|
+
ReactiveFormsModule,
|
|
34142
|
+
EditableLabelDirective,
|
|
34143
|
+
MatIconModule,
|
|
34144
|
+
MatTooltipModule,
|
|
34145
|
+
FormFieldWrapperComponent,
|
|
34146
|
+
FormFieldLicenseComponent,
|
|
34147
|
+
FormFieldResourceUpdatedComponent,
|
|
33348
34148
|
FormFieldSimpleComponent,
|
|
33349
34149
|
FormFieldRichComponent,
|
|
33350
34150
|
FormFieldObjectComponent,
|
|
@@ -33352,11 +34152,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33352
34152
|
FormFieldTemporalExtentComponent,
|
|
33353
34153
|
FormFieldFileComponent,
|
|
33354
34154
|
FormFieldArrayComponent,
|
|
33355
|
-
CommonModule,
|
|
33356
|
-
ReactiveFormsModule,
|
|
33357
34155
|
TranslateModule,
|
|
33358
|
-
|
|
33359
|
-
], template: "<div class=\"flex flex-col h-full\">\n <div class=\"mb-2 flex flex-row\">\n <label class=\"grow\">\n <span class=\"font-medium field-label\">{{\n config.labelKey | translate\n }}</span>\n <span *ngIf=\"config.hintKey\" class=\"text-gray-900 text-sm\">\n - {{ config.hintKey | translate }}\n </span>\n </label>\n <mat-icon\n *ngIf=\"isFieldOk\"\n class=\"material-symbols-outlined text-[#c6d950] icon-ok\"\n >check_circle</mat-icon\n >\n <mat-icon\n *ngIf=\"isFieldLocked\"\n class=\"material-symbols-outlined text-blue-400 icon-locked\"\n >lock</mat-icon\n >\n <mat-icon\n *ngIf=\"isFieldInvalid\"\n class=\"material-symbols-outlined text-pink-500 icon-invalid\"\n >cancel</mat-icon\n >\n </div>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</div>\n" }]
|
|
34156
|
+
], template: "<div class=\"flex flex-col h-full\">\n <ng-container *ngIf=\"withoutWrapper; else withGenericWrapper\">\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </ng-container>\n <ng-template #withGenericWrapper>\n <gn-ui-form-field-wrapper\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n >\n <ng-container *ngTemplateOutlet=\"fieldContent\"></ng-container>\n </gn-ui-form-field-wrapper>\n </ng-template>\n</div>\n\n<ng-template #fieldContent>\n <ng-container *ngIf=\"isTitle\">\n <div class=\"flex justify-between items-center gap-3\">\n <h2\n #titleInput\n class=\"grow text-3xl font-normal\"\n [gnUiEditableLabel]=\"true\"\n (editableLabelChanged)=\"formControl.setValue($event)\"\n >\n {{ formControl.value }}\n </h2>\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2 cursor-pointer\"\n (click)=\"focusTitleInput()\"\n >edit</span\n >\n <span\n class=\"material-symbols-outlined gn-ui-icon-small m-2\"\n [matTooltip]=\"config.hintKey | translate\"\n matTooltipPosition=\"above\"\n >\n help\n </span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isAbstract\">\n <gn-ui-form-field-rich\n class=\"h-[8rem]\"\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n [hint]=\"config.hintKey | translate\"\n ></gn-ui-form-field-rich>\n </ng-container>\n <ng-container *ngIf=\"isLicenses\">\n <gn-ui-form-field-license\n [control]=\"formControl\"\n [label]=\"config.labelKey | translate\"\n ></gn-ui-form-field-license>\n </ng-container>\n <ng-container *ngIf=\"isResourceUpdated\">\n <gn-ui-form-field-resource-updated\n [control]=\"formControl\"\n ></gn-ui-form-field-resource-updated>\n </ng-container>\n <ng-container *ngIf=\"isSimpleField\">\n <gn-ui-form-field-simple\n [type]=\"simpleType\"\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-simple>\n </ng-container>\n <ng-container *ngIf=\"isFileField\">\n <gn-ui-form-field-file\n [control]=\"formControl\"\n [readonly]=\"isFieldLocked\"\n [invalid]=\"isFieldInvalid\"\n ></gn-ui-form-field-file>\n </ng-container>\n <ng-container *ngIf=\"isArrayField\">\n <gn-ui-form-field-array></gn-ui-form-field-array>\n </ng-container>\n <ng-container *ngIf=\"isObjectField\">\n <gn-ui-form-field-object></gn-ui-form-field-object>\n </ng-container>\n <ng-container *ngIf=\"isSpatialExtentField\">\n <gn-ui-form-field-spatial-extent></gn-ui-form-field-spatial-extent>\n </ng-container>\n <ng-container *ngIf=\"isTemporalExtentField\">\n <gn-ui-form-field-temporal-extent></gn-ui-form-field-temporal-extent>\n </ng-container>\n <div\n *ngIf=\"isFieldInvalid && config.invalidHintKey\"\n class=\"mt-2 text-pink-500 text-sm field-invalid-hint\"\n >\n {{ config.invalidHintKey | translate }}\n </div>\n</ng-template>\n" }]
|
|
33360
34157
|
}], ctorParameters: function () { return []; }, propDecorators: { model: [{
|
|
33361
34158
|
type: Input
|
|
33362
34159
|
}], config: [{
|
|
@@ -33365,6 +34162,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33365
34162
|
type: Input
|
|
33366
34163
|
}], valueChange: [{
|
|
33367
34164
|
type: Output
|
|
34165
|
+
}], titleInput: [{
|
|
34166
|
+
type: ViewChild,
|
|
34167
|
+
args: ['titleInput']
|
|
33368
34168
|
}] } });
|
|
33369
34169
|
|
|
33370
34170
|
class RecordFormComponent {
|
|
@@ -33386,17 +34186,7 @@ class RecordFormComponent {
|
|
|
33386
34186
|
}
|
|
33387
34187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: RecordFormComponent, decorators: [{
|
|
33388
34188
|
type: Component,
|
|
33389
|
-
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
33390
|
-
CommonModule,
|
|
33391
|
-
FormFieldComponent,
|
|
33392
|
-
FormFieldArrayComponent,
|
|
33393
|
-
FormFieldFileComponent,
|
|
33394
|
-
FormFieldObjectComponent,
|
|
33395
|
-
FormFieldRichComponent,
|
|
33396
|
-
FormFieldSimpleComponent,
|
|
33397
|
-
FormFieldSpatialExtentComponent,
|
|
33398
|
-
FormFieldTemporalExtentComponent,
|
|
33399
|
-
], template: "<div class=\"flex flex-col gap-6 p-6\">\n <ng-container *ngFor=\"let field of fields$ | async; trackBy: fieldTracker\">\n <gn-ui-form-field\n *ngIf=\"field.config.formFieldConfig && !field.config.hidden\"\n [model]=\"field.config.model\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field, $event)\"\n ></gn-ui-form-field>\n </ng-container>\n</div>\n" }]
|
|
34189
|
+
args: [{ selector: 'gn-ui-record-form', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, FormFieldComponent], template: "<div class=\"flex flex-col gap-6 p-6\">\n <ng-container *ngFor=\"let field of fields$ | async; trackBy: fieldTracker\">\n <gn-ui-form-field\n *ngIf=\"field.config.formFieldConfig && !field.config.hidden\"\n [model]=\"field.config.model\"\n [config]=\"field.config.formFieldConfig\"\n [value]=\"field.value\"\n (valueChange)=\"handleFieldValueChange(field, $event)\"\n ></gn-ui-form-field>\n </ng-container>\n</div>\n" }]
|
|
33400
34190
|
}], ctorParameters: function () { return [{ type: EditorFacade }]; } });
|
|
33401
34191
|
|
|
33402
34192
|
const ROUTER_STATE_KEY = 'router';
|
|
@@ -33694,7 +34484,7 @@ class RouterEffects {
|
|
|
33694
34484
|
* the search results happens
|
|
33695
34485
|
*/
|
|
33696
34486
|
this.navigateToSearch$ = createEffect(() => this._actions$.pipe(navigation(this.routerConfig.searchRouteComponent, {
|
|
33697
|
-
run: () =>
|
|
34487
|
+
run: () => closeMetadata(),
|
|
33698
34488
|
})));
|
|
33699
34489
|
this.navigateBack$ = createEffect(() => this._actions$.pipe(ofType(backAction), tap$1(() => this._location.back())), { dispatch: false });
|
|
33700
34490
|
this.navigateForward$ = createEffect(() => this._actions$.pipe(ofType(forwardAction), tap$1(() => this._location.forward())), { dispatch: false });
|
|
@@ -33721,7 +34511,7 @@ class DefaultRouterModule {
|
|
|
33721
34511
|
};
|
|
33722
34512
|
}
|
|
33723
34513
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
33724
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$
|
|
34514
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, declarations: [SearchRouterContainerDirective], imports: [i1$2.StoreFeatureModule, i3$3.StoreRouterConnectingModule, i1$8.EffectsFeatureModule], exports: [SearchRouterContainerDirective] }); }
|
|
33725
34515
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: DefaultRouterModule, providers: [
|
|
33726
34516
|
RouterFacade,
|
|
33727
34517
|
{
|
|
@@ -33764,5 +34554,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImpor
|
|
|
33764
34554
|
* Generated bundle index. Do not edit.
|
|
33765
34555
|
*/
|
|
33766
34556
|
|
|
33767
|
-
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
34557
|
+
export { ADD_RESULTS, ADD_SEARCH, AbstractAction, AddLayerFromCatalogComponent, AddLayerRecordPreviewComponent, AddResults, AddSearch, AnchorLinkDirective, ApiCardComponent, AuthService, AutocompleteComponent, AvatarComponent, AvatarServiceInterface, BLOCK_MODEL_FIXTURE, BadgeComponent, BaseReader, ButtonComponent, CLEAR_ERROR, CLEAR_RESULTS, CONFIG_MALFORMED, CONFIG_MINIMAL, CONFIG_MISSING_MANDATORY, CONFIG_OK, CONFIG_UNRECOGNIZED_KEYS, CONFIG_WITH_TRANSLATIONS, CONFIG_WRONG_LANGUAGE_CODE, CarouselComponent, CatalogTitleComponent, ChartComponent, ChartViewComponent, CheckToggleComponent, CheckboxComponent, ChipsInputComponent, ClearError, ClearResults, ColorScaleComponent, ContentGhostComponent, CopyTextButtonComponent, DEFAULT_BASELAYER_CONTEXT, DEFAULT_GN4_LOGIN_URL, DEFAULT_LANG, DEFAULT_PAGE_SIZE, DEFAULT_RESULTS_LAYOUT_CONFIG, DEFAULT_SEARCH_KEY, DEFAULT_STYLE_FIXTURE, DEFAULT_STYLE_HL_FIXTURE, DEFAULT_VIEW, DataService, DataViewComponent, DataViewPermalinkComponent, DataViewShareComponent, DataViewWebComponentComponent, DatePickerComponent, DateRangePickerComponent, DefaultRouterModule, DownloadItemComponent, DownloadsListComponent, DragAndDropFileInputComponent, DropdownMultiselectComponent, DropdownSelectorComponent, EDITOR_FEATURE_KEY, EMPTY_BLOCK_MODEL_FIXTURE, ES_QUERY_FIELDS_PRIORITY, ES_RESOURCES_VALUES, ES_SOURCE_SUMMARY, EditableLabelDirective, EditorFacade, EditorService, ElasticsearchService, EmbeddedTranslateLoader, ErrorType, ExpandablePanelButtonComponent, ExpandablePanelComponent, ExternalViewerButtonComponent, FACET_ITEM_FIXTURE, FEATURE_MAP_OPTIONS, FIELDS_BRIEF, FIELDS_SUMMARY, FILTER_GEOMETRY, FORMATS, FacetBlockComponent, FacetBlockStubComponent, FacetItemComponent, FacetItemStubComponent, FacetListComponent, FacetsContainerComponent, FacetsModule, FavoriteStarComponent, FavoritesService, FeatureAuthModule, FeatureCatalogModule, FeatureDatavizModule, FeatureDetailComponent, FeatureEditorModule, FeatureInfoService, FeatureMapModule, FeatureNotificationsModule, FeatureRecordModule, FeatureSearchModule, FetchError, FieldsService, FigureComponent, FigureContainerComponent, FileTranslateLoader, FilterDropdownComponent, FormFieldWrapperComponent, FuzzySearchComponent, GN_UI_VERSION, GeoTableViewComponent, GeocodingComponent, Gn4Converter, Gn4PlatformMapper, Gn4PlatformService, Gn4Repository, Gn4SettingsService, GravatarService, HttpLoaderFactory, I18nInterceptor, ImageFallbackDirective, ImageOverlayPreviewComponent, InteractiveTableColumnComponent, InteractiveTableComponent, Iso191153Converter, Iso19139Converter, LANGUAGES_LIST, LANGUAGE_NAMES, LANGUAGE_STORAGE_KEY, LANG_2_TO_3_MAPPER, LANG_3_TO_2_MAPPER, LOGIN_URL, LONLAT_CRS_CODES, LangService, LanguageSwitcherComponent, LayersPanelComponent, LinkCardComponent, LinkClassifierService, LinkUsage, LoadingMaskComponent, LogService, MAP_CONFIG_FIXTURE, MAP_FEATURE_KEY, METADATA_LANGUAGE, MY_FORMATS, MapComponent, MapContainerComponent, MapContextComponent, MapContextLayerTypeEnum, MapContextService, MapFacade, MapInstanceDirective, MapManagerService, MapStyleService, MapUtilsService, MapViewComponent, MarkdownEditorComponent, MarkdownParserComponent, MaxLinesComponent, mdview_actions as MdViewActions, MdViewFacade, MetadataCatalogComponent, MetadataContactComponent, MetadataInfoComponent, MetadataLinkType, MetadataQualityComponent, MetadataQualityItemComponent, MyOrgService, NavigationButtonComponent, NotificationComponent, NotificationsContainerComponent, NotificationsService, ORGANIZATIONS_STRATEGY, ORGANIZATION_URL_TOKEN, OrganisationPreviewComponent, OrganisationsComponent, OrganisationsFilterComponent, OrganisationsResultComponent, OrganizationsFromGroupsService, OrganizationsFromMetadataService, PAGINATE, PARSE_DELIMITER, PATCH_RESULTS_AGGREGATIONS, PROXY_PATH, Paginate, PaginationButtonsComponent, PaginationComponent, PatchResultsAggregations, PopupAlertComponent, ProgressBarComponent, ProxyService, QUERY_FIELDS, RECORD_URL_TOKEN, REQUEST_MORE_ON_AGGREGATION, REQUEST_MORE_RESULTS, REQUEST_NEW_RESULTS, RESULTS_LAYOUT_CONFIG, ROUTER_CONFIG, ROUTER_ROUTE_DATASET, ROUTER_ROUTE_SEARCH, ROUTER_STATE_KEY, ROUTE_PARAMS, RecordApiFormComponent, RecordFormComponent, RecordMetricComponent, RecordPreviewCardComponent, RecordPreviewComponent, RecordPreviewFeedComponent, RecordPreviewListComponent, RecordPreviewRowComponent, RecordPreviewTextComponent, RecordPreviewTitleComponent, RecordsMetricsComponent, RecordsService, RelatedRecordCardComponent, RequestMoreOnAggregation, RequestMoreResults, RequestNewResults, ResultsHitsContainerComponent, ResultsHitsNumberComponent, ResultsLayoutComponent, ResultsLayoutConfigItem, ResultsListComponent, ResultsListContainerComponent, ResultsListItemComponent, ResultsTableComponent, RouterEffects, RouterFacade, RouterService, SEARCH_FEATURE_KEY, SET_CONFIG_AGGREGATIONS, SET_CONFIG_FILTERS, SET_CONFIG_REQUEST_FIELDS, SET_ERROR, SET_FAVORITES_ONLY, SET_FILTERS, SET_INCLUDE_ON_AGGREGATION, SET_PAGE_SIZE, SET_RESULTS_AGGREGATIONS, SET_RESULTS_HITS, SET_RESULTS_LAYOUT, SET_SEARCH, SET_SORT_BY, SET_SPATIAL_FILTER_ENABLED, SearchEffects, SearchFacade, SearchInputComponent, SearchResultsErrorComponent, SearchRouterContainerDirective, SearchService, SearchStateContainerDirective, SelectionService, SetConfigAggregations, SetConfigFilters, SetConfigRequestFields, SetError, SetFavoritesOnly, SetFilters, SetIncludeOnAggregation, SetPageSize, SetResultsAggregations, SetResultsHits, SetResultsLayout, SetSearch, SetSortBy, SetSpatialFilterEnabled, SiteTitleComponent, SortByComponent, SourceLabelComponent, SourcesService, SpinningLoaderComponent, StarToggleComponent, StepBarComponent, StickyHeaderComponent, SupportedTypes, TABLE_ITEM_FIXTURE, TABLE_ITEM_FIXTURE_HAB, THUMBNAIL_PLACEHOLDER, TRANSLATE_DEFAULT_CONFIG, TRANSLATE_WITH_OVERRIDES_CONFIG, TableComponent, TableViewComponent, TextAreaComponent, TextInputComponent, ThemeService, ThumbnailComponent, UPDATE_CONFIG_AGGREGATIONS, UPDATE_FILTERS, UPDATE_REQUEST_AGGREGATION_TERM, UiCatalogModule, UiDatavizModule, UiElementsModule, FacetsModule$1 as UiFacetsModule, UiInputsModule, UiLayoutModule, UiMapModule, UiSearchModule, UiWidgetsModule, UpdateConfigAggregations, UpdateFilters, UserPreviewComponent, UtilI18nModule, UtilSharedModule, ViewportIntersectorComponent, WEB_COMPONENT_EMBEDDER_URL, WFS_MAX_FEATURES, WizardComponent, WizardFieldComponent, WizardFieldType, WizardService, WizardSummarizeComponent, _reset, addLayer, changeLayerOrder, checkFileFormat, clearLayerError, createFuzzyFilter, currentPage, defaultMapOptions, downgradeImage, downsizeImage, dragPanCondition, dropEmptyTranslations, editorReducer, findConverterForDocument, getArrayItem, getAsArray, getAsUrl, getBadgeColor, getCustomTranslations, getError, getFavoritesOnly, getFileFormat, getFileFormatFromServiceOutput, getFirstValue, getFormatPriority, getGeometryFromGeoJSON, getGlobalConfig, getJsonDataItemsProxy, getLangFromBrowser, getLinkLabel, getLinkPriority, getMapLayers, getMapState, getMetadataQualityConfig, getMimeTypeForFormat, getOptionalMapConfig, getOptionalSearchConfig, getPageSize, getSearchConfigAggregations, getSearchFilters, getSearchResults, getSearchResultsAggregations, getSearchResultsHits, getSearchResultsLayout, getSearchResultsLoading, getSearchSortBy, getSearchState, getSearchStateSearch, getSpatialFilterEnabled, getTemporalRangeUnion, getThemeConfig, initSearch, initialEditorState, initialMapState, initialState, isConfigLoaded, isEndOfResults, isFormatInQueryParam, loadAppConfig, mapContact, mapKeywords, mapLogo, mapOrganization, mapReducer, markRecordAsChanged, megabytesToBytes, mimeTypeToFormat, mouseWheelZoomCondition, openDataset, openRecord, parse, placeholder, propagateToDocumentOnly, provideGn4, provideRepositoryUrl, readDataset, readDatasetHeaders, reducer$2 as reducer, reducerSearch, removeLayer, removeSearchParams, removeWhitespace, saveRecord, saveRecordFailure, saveRecordSuccess, selectEditorState, selectFallback, selectFallbackFields, selectField, selectRecord, selectRecordChangedSinceSave, selectRecordFields, selectRecordFieldsConfig, selectRecordSaveError, selectRecordSaving, selectTranslatedField, selectTranslatedValue, setLayerError, sortByFromString, sortByToString, sortByToStrings, stripHtml, toDate, totalPages, updateLayer, updateRecordField };
|
|
33768
34558
|
//# sourceMappingURL=geonetwork-ui.mjs.map
|