@sinequa/atomic-angular 1.5.3 → 1.6.0
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/components/navbar-tabs/i18n/de.json +4 -0
- package/components/navbar-tabs/i18n/en.json +4 -0
- package/components/navbar-tabs/i18n/fr.json +4 -0
- package/features/auth/i18n/de.json +3 -1
- package/features/auth/i18n/en.json +3 -1
- package/features/auth/i18n/fr.json +3 -1
- package/features/did-you-mean/i18n/de.json +2 -1
- package/features/did-you-mean/i18n/en.json +2 -1
- package/features/did-you-mean/i18n/fr.json +2 -1
- package/fesm2022/sinequa-atomic-angular.mjs +818 -400
- package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
- package/index.d.ts +209 -26
- package/package.json +5 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, inject, HostBinding, Component, Pipe, InjectionToken, computed, ChangeDetectorRef, DestroyRef, LOCALE_ID, Inject, Optional, input, output, signal, effect, assertInInjectionContext, runInInjectionContext, EnvironmentInjector, Injector, EventEmitter, Directive, viewChild, ElementRef, afterNextRender, untracked, linkedSignal, model, TemplateRef, HostListener, Renderer2, contentChildren, contentChild, booleanAttribute, resource, ChangeDetectionStrategy, ViewContainerRef, numberAttribute, viewChildren, afterRenderEffect, afterEveryRender } from '@angular/core';
|
|
3
|
-
import { BehaviorSubject, Subscription,
|
|
3
|
+
import { BehaviorSubject, Subscription, Subject, of, catchError, map, tap, EMPTY, throwError, filter, shareReplay, from, switchMap, firstValueFrom, fromEvent, debounceTime } from 'rxjs';
|
|
4
4
|
import { TranslocoService, TranslocoPipe, provideTranslocoScope } from '@jsverse/transloco';
|
|
5
|
-
import { DropdownComponent, DropdownContentComponent, InputComponent, ButtonComponent, cn, FaIconComponent, EllipsisIcon, ChevronRightIcon, MenuComponent, MenuContentComponent, MenuItemComponent, LinkComponent, CardComponent, CardHeaderComponent, CardContentComponent, BadgeComponent, DialogComponent, DialogHeaderComponent, DialogTitleComponent, DialogContentComponent, DialogFooterComponent, ListItemComponent, SquareCheckIcon, SquareMinusIcon, SquareIcon, SwitchComponent, SelectOptionDirective, DialogService, XMarkIcon, InboxIcon, SparklesIcon, FileOutputIcon, TabsComponent, TabsListComponent, TabComponent, SidebarMenuComponent, SidebarMenuItemComponent, SidebarMenuButtonComponent, TooltipDirective, FrownIcon, ChevronLeftIcon, ChevronsLeftIcon, ChevronsRightIcon, ArrowUpAzIcon, ArrowDownZaIcon, ArrowUpRightFromSquareIcon, ToggleRightIcon, ToggleLeftIcon, Separator, SheetCloseDirective, ArrowLeftIcon, SheetService, DateRangePickerDirective, DatepickerDirective, FilterIcon, FilterXIcon, IconButtonComponent, HighlighterIcon, TagsIcon, SpinnerIcon, MagnifyingGlassIcon, LoadingCircleIcon, CircleCheckIcon, PopoverComponent, BellIcon, TrashIcon, BarsIcon, CardFooterComponent, InputGroupInput, InputGroupComponent, InputGroupAddonComponent, EyeSlashIcon, EyeIcon, BookmarkIcon, PopoverContentComponent, UserIcon, FolderIcon, VerticalDividerComponent, CommentIcon, ThumbsUpIcon, ThumbsDownIcon, DropdownDirective, SearchIcon, TriangleAlertIcon, ListFilterIcon, BreakpointObserverService, TrashCanIcon, CircleXIcon, InfoCircleIcon, HorizontalDividerComponent, HistoryIcon, StarIcon, FlagEnglishIcon, FlagFrenchIcon, EditIcon, UndoIcon, SaveIcon, AvatarComponent, AvatarFallbackComponent, AvatarImageComponent } from '@sinequa/ui';
|
|
5
|
+
import { DropdownComponent, DropdownContentComponent, InputComponent, ButtonComponent, cn, FaIconComponent, EllipsisIcon, ChevronRightIcon, MenuComponent, MenuContentComponent, MenuItemComponent, LinkComponent, CardComponent, CardHeaderComponent, CardContentComponent, BadgeComponent, DialogComponent, DialogHeaderComponent, DialogTitleComponent, DialogContentComponent, DialogFooterComponent, ListItemComponent, SquareCheckIcon, SquareMinusIcon, SquareIcon, SwitchComponent, SelectOptionDirective, DialogService, XMarkIcon, InboxIcon, SparklesIcon, FileOutputIcon, TabsComponent, TabsListComponent, TabComponent, SidebarMenuComponent, SidebarMenuItemComponent, SidebarMenuButtonComponent, TooltipDirective, FrownIcon, ChevronLeftIcon, ChevronsLeftIcon, ChevronsRightIcon, ArrowUpAzIcon, ArrowDownZaIcon, ArrowUpRightFromSquareIcon, ToggleRightIcon, ToggleLeftIcon, Separator, SheetCloseDirective, ArrowLeftIcon, SheetService, DateRangePickerDirective, DatepickerDirective, FilterIcon, FilterXIcon, IconButtonComponent, HighlighterIcon, TagsIcon, SpinnerIcon, MagnifyingGlassIcon, LoadingCircleIcon, CircleCheckIcon, PopoverComponent, BellIcon, TrashIcon, BarsIcon, CardFooterComponent, InputGroupInput, InputGroupComponent, InputGroupAddonComponent, EyeSlashIcon, EyeIcon, BookmarkIcon, PopoverContentComponent, UserIcon, FolderIcon, DialogDescriptionComponent, VerticalDividerComponent, CommentIcon, ThumbsUpIcon, ThumbsDownIcon, DropdownDirective, SearchIcon, TriangleAlertIcon, ListFilterIcon, BreakpointObserverService, TrashCanIcon, CircleXIcon, InfoCircleIcon, HorizontalDividerComponent, HistoryIcon, StarIcon, FlagEnglishIcon, FlagFrenchIcon, EditIcon, UndoIcon, SaveIcon, AvatarComponent, AvatarFallbackComponent, AvatarImageComponent } from '@sinequa/ui';
|
|
6
6
|
import highlightWords from 'highlight-words';
|
|
7
7
|
import { ActivatedRoute, Router, NavigationEnd, RouterLink, RouterLinkActive, RouterModule } from '@angular/router';
|
|
8
8
|
import { withDevtools } from '@angular-architects/ngrx-toolkit';
|
|
9
9
|
import { signalStore, signalStoreFeature, withState, withMethods, patchState, getState, withComputed } from '@ngrx/signals';
|
|
10
|
-
import { EngineType, fetchApp, extraColumns, sysLang, globalConfig, getQueryParamsFromUrl, clearSessionTokens, login, info, error, setGlobalConfig, initializeAppConfig, notify, addConcepts, queryParamsFromUrl, patchUserSettings, deleteUserSettings, fetchUserSettings, warn, buildPathsAndLevels, escapeExpr, isAuthenticated, isExpired, debug, AuditEventType, fetchSuggest, isObject, Audit, getMetadata, bisect, isNotInputEvent, fetchSponsoredLinks, fetchQuery, translateAggregationToDateOptions, aggItemRegex, parseValueAndOperatorFromItem, fetchSuggestField, fetchSimilarDocuments, logout, fetchChangePassword, fetchSendPasswordResetEmail, expiresSoon, suggestionsToTreeAggregationNodes, labels, fetchLabels, guid, getRelativeDate, createUserProfile, deleteUserProfileProperty, patchUserProfile, isJsonable, addAuditAdditionalInfo, getToken, setToken, createHeaders } from '@sinequa/atomic';
|
|
10
|
+
import { EngineType, fetchApp, extraColumns, sysLang, fetchPrincipal, globalConfig, getQueryParamsFromUrl, clearSessionTokens, login, info, error, setGlobalConfig, initializeAppConfig, notify, addConcepts, queryParamsFromUrl, patchUserSettings, deleteUserSettings, fetchUserSettings, warn, buildPathsAndLevels, escapeExpr, isAuthenticated, isExpired, debug, AuditEventType, fetchSuggest, isObject, Audit, getMetadata, bisect, isNotInputEvent, fetchSponsoredLinks, fetchQuery, translateAggregationToDateOptions, aggItemRegex, parseValueAndOperatorFromItem, fetchSuggestField, fetchSimilarDocuments, logout, fetchChangePassword, fetchSendPasswordResetEmail, expiresSoon, suggestionsToTreeAggregationNodes, labels, fetchLabels, guid, getRelativeDate, createUserProfile, deleteUserProfileProperty, patchUserProfile, isJsonable, addAuditAdditionalInfo, getToken, setToken, createHeaders } from '@sinequa/atomic';
|
|
11
11
|
import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
12
12
|
import { DatePipe, DATE_PIPE_DEFAULT_TIMEZONE, DATE_PIPE_DEFAULT_OPTIONS, Location, NgTemplateOutlet, NgStyle, NgClass, NgComponentOutlet } from '@angular/common';
|
|
13
13
|
import { HttpClient, HttpParams, httpResource, HttpResponse, HttpContextToken, HttpHeaders } from '@angular/common/http';
|
|
@@ -31,10 +31,10 @@ class BackdropService {
|
|
|
31
31
|
hide() {
|
|
32
32
|
this.isVisible.next(false);
|
|
33
33
|
}
|
|
34
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
35
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
34
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BackdropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BackdropService, providedIn: 'root' });
|
|
36
36
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BackdropService, decorators: [{
|
|
38
38
|
type: Injectable,
|
|
39
39
|
args: [{
|
|
40
40
|
providedIn: 'root'
|
|
@@ -51,10 +51,10 @@ class BackdropComponent {
|
|
|
51
51
|
ngOnDestroy() {
|
|
52
52
|
this.sub.unsubscribe();
|
|
53
53
|
}
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
55
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: BackdropComponent, isStandalone: true, selector: "Backdrop, backdrop", host: { properties: { "attr.backdrop-visible": "this.backdropVisible" }, classAttribute: "z-[var(--z-backdrop)] bg-backdrop fixed bottom-0 left-0 right-0 top-0 hidden select-none" }, ngImport: i0, template: ``, isInline: true, styles: [":host{--backdrop-animation-duration: .25s;animation:hide-backdrop var(--backdrop-animation-duration, .25s) ease-out;@keyframes show-backdrop{0%{display:none;opacity:0}1%{display:block}to{opacity:1}}@keyframes hide-backdrop{0%{display:block;opacity:1}99%{opacity:0}to{display:none}}}:host[backdrop-visible=true]{display:block;animation:show-backdrop var(--backdrop-animation-duration, .25s) ease-out}\n"] });
|
|
56
56
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BackdropComponent, decorators: [{
|
|
58
58
|
type: Component,
|
|
59
59
|
args: [{ selector: 'Backdrop, backdrop', standalone: true, imports: [], template: ``, host: {
|
|
60
60
|
class: 'z-[var(--z-backdrop)] bg-backdrop fixed bottom-0 left-0 right-0 top-0 hidden select-none'
|
|
@@ -84,10 +84,10 @@ class HighlightWordPipe {
|
|
|
84
84
|
const wordNormalized = word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
85
85
|
return highlightWords({ text: valueNormalized, query: wordNormalized, clipBy });
|
|
86
86
|
}
|
|
87
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
88
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
87
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HighlightWordPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
88
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: HighlightWordPipe, isStandalone: true, name: "highlightWord" });
|
|
89
89
|
}
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HighlightWordPipe, decorators: [{
|
|
91
91
|
type: Pipe,
|
|
92
92
|
args: [{
|
|
93
93
|
name: 'highlightWord',
|
|
@@ -748,10 +748,10 @@ class SourceIconPipe {
|
|
|
748
748
|
}
|
|
749
749
|
return 'far fa-file';
|
|
750
750
|
}
|
|
751
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
752
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
751
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SourceIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
752
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: SourceIconPipe, isStandalone: true, name: "sourceIcon" });
|
|
753
753
|
}
|
|
754
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
754
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SourceIconPipe, decorators: [{
|
|
755
755
|
type: Pipe,
|
|
756
756
|
args: [{
|
|
757
757
|
name: 'sourceIcon',
|
|
@@ -825,10 +825,10 @@ class OperatorPipe {
|
|
|
825
825
|
return '';
|
|
826
826
|
}
|
|
827
827
|
}
|
|
828
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
829
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
828
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OperatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
829
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: OperatorPipe, isStandalone: true, name: "operator", pure: false });
|
|
830
830
|
}
|
|
831
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
831
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OperatorPipe, decorators: [{
|
|
832
832
|
type: Pipe,
|
|
833
833
|
args: [{
|
|
834
834
|
name: 'operator',
|
|
@@ -879,10 +879,10 @@ class SyslangPipe {
|
|
|
879
879
|
}
|
|
880
880
|
return this.lastValue;
|
|
881
881
|
}
|
|
882
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
883
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
882
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SyslangPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
883
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: SyslangPipe, isStandalone: true, name: "syslang", pure: false });
|
|
884
884
|
}
|
|
885
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
885
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SyslangPipe, decorators: [{
|
|
886
886
|
type: Pipe,
|
|
887
887
|
args: [{
|
|
888
888
|
name: 'syslang',
|
|
@@ -914,10 +914,10 @@ class TranslocoDateImpurePipe extends DatePipe {
|
|
|
914
914
|
});
|
|
915
915
|
return this.lastTransformedValue;
|
|
916
916
|
}
|
|
917
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
918
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
917
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TranslocoDateImpurePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }, { token: DATE_PIPE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
918
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: TranslocoDateImpurePipe, isStandalone: true, name: "translocoDate", pure: false });
|
|
919
919
|
}
|
|
920
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
920
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TranslocoDateImpurePipe, decorators: [{
|
|
921
921
|
type: Pipe,
|
|
922
922
|
args: [{
|
|
923
923
|
name: 'translocoDate',
|
|
@@ -984,10 +984,10 @@ class FileSizePipe {
|
|
|
984
984
|
}
|
|
985
985
|
return obj;
|
|
986
986
|
}
|
|
987
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
988
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
987
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
988
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: FileSizePipe, isStandalone: true, name: "fileSize" });
|
|
989
989
|
}
|
|
990
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
990
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FileSizePipe, decorators: [{
|
|
991
991
|
type: Pipe,
|
|
992
992
|
args: [{
|
|
993
993
|
name: 'fileSize'
|
|
@@ -997,8 +997,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
997
997
|
class DropdownListComponent {
|
|
998
998
|
items = input.required(...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
999
999
|
onClick = output();
|
|
1000
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1001
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
1000
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DropdownListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1001
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DropdownListComponent, isStandalone: true, selector: "dropdown-list, DropdownList", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
|
|
1002
1002
|
@for (item of items(); track $index) {
|
|
1003
1003
|
<span class="bg-primary text-primary-foreground m-1 inline-flex cursor-default select-none items-center rounded-full px-2 py-1 font-semibold">
|
|
1004
1004
|
{{ item.display || item.value | syslang | transloco }}
|
|
@@ -1019,7 +1019,7 @@ class DropdownListComponent {
|
|
|
1019
1019
|
}
|
|
1020
1020
|
`, isInline: true, dependencies: [{ kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
1021
1021
|
}
|
|
1022
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1022
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DropdownListComponent, decorators: [{
|
|
1023
1023
|
type: Component,
|
|
1024
1024
|
args: [{
|
|
1025
1025
|
selector: "dropdown-list, DropdownList",
|
|
@@ -1058,8 +1058,8 @@ class DropdownInputComponent {
|
|
|
1058
1058
|
onKeyUp = output(); // emits the input value
|
|
1059
1059
|
removeItem = output();
|
|
1060
1060
|
addItem = output();
|
|
1061
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1062
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
1061
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DropdownInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1062
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DropdownInputComponent, isStandalone: true, selector: "dropdown-input, DropdownInput", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, noResultLabel: { classPropertyName: "noResultLabel", publicName: "noResultLabel", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onFocus: "onFocus", onKeyUp: "onKeyUp", removeItem: "removeItem", addItem: "addItem" }, ngImport: i0, template: `
|
|
1063
1063
|
@if (label()) {
|
|
1064
1064
|
<p class="font-semibold">{{ label() }}</p>
|
|
1065
1065
|
}
|
|
@@ -1093,7 +1093,7 @@ class DropdownInputComponent {
|
|
|
1093
1093
|
</Dropdown>
|
|
1094
1094
|
`, isInline: true, dependencies: [{ kind: "component", type: DropdownComponent, selector: "dropdown, Dropdown", inputs: ["disabled"] }, { kind: "component", type: DropdownListComponent, selector: "dropdown-list, DropdownList", inputs: ["items"], outputs: ["onClick"] }, { kind: "directive", type: DropdownContentComponent, selector: "dropdown-content, dropdowncontent, DropdownContent", inputs: ["class", "position", "strategy", "offset"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
1095
1095
|
}
|
|
1096
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1096
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DropdownInputComponent, decorators: [{
|
|
1097
1097
|
type: Component,
|
|
1098
1098
|
args: [{
|
|
1099
1099
|
selector: 'dropdown-input, DropdownInput',
|
|
@@ -1265,26 +1265,24 @@ const PrincipalStore = signalStore({ providedIn: 'root' }, withDevtools('Princip
|
|
|
1265
1265
|
}
|
|
1266
1266
|
})), withPrincipalFeatures());
|
|
1267
1267
|
function withPrincipalFeatures() {
|
|
1268
|
-
return signalStoreFeature(withMethods((store) => {
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
console.error('Principal fetch failed', error);
|
|
1279
|
-
patchState(store, { state: 'error' });
|
|
1280
|
-
throw error;
|
|
1281
|
-
}), map((principal) => {
|
|
1282
|
-
const { userOverrideActive = false } = globalConfig;
|
|
1283
|
-
patchState(store, { ...initialPrincipal, ...principal, userOverrideActive, state: 'loaded' });
|
|
1284
|
-
})));
|
|
1268
|
+
return signalStoreFeature(withMethods((store) => ({
|
|
1269
|
+
async initialize() {
|
|
1270
|
+
patchState(store, { state: 'loading' });
|
|
1271
|
+
try {
|
|
1272
|
+
// Use the SDK's fetchPrincipal so the principal load goes through the same auth handling
|
|
1273
|
+
// as the rest of atomic (credentials: "include" + the authMode-aware noAutoAuthentication
|
|
1274
|
+
// flag). In SSO mode it sends noAutoAuthentication=false, letting IIS/Windows authenticate.
|
|
1275
|
+
const principal = await fetchPrincipal();
|
|
1276
|
+
const { userOverrideActive = false } = globalConfig;
|
|
1277
|
+
patchState(store, { ...initialPrincipal, ...principal, userOverrideActive, state: 'loaded' });
|
|
1285
1278
|
}
|
|
1286
|
-
|
|
1287
|
-
|
|
1279
|
+
catch (error) {
|
|
1280
|
+
console.error('Principal fetch failed', error);
|
|
1281
|
+
patchState(store, { state: 'error' });
|
|
1282
|
+
throw error;
|
|
1283
|
+
}
|
|
1284
|
+
}
|
|
1285
|
+
})));
|
|
1288
1286
|
}
|
|
1289
1287
|
|
|
1290
1288
|
/**
|
|
@@ -1524,13 +1522,31 @@ function withThemes(app, themes) {
|
|
|
1524
1522
|
return app;
|
|
1525
1523
|
}
|
|
1526
1524
|
|
|
1525
|
+
/**
|
|
1526
|
+
* sessionStorage flag recording that an SSO re-authentication reload has already been attempted.
|
|
1527
|
+
*
|
|
1528
|
+
* Unlike the error interceptor's per-request HttpContext retry flag, this one survives a full-page
|
|
1529
|
+
* reload, so a 401 that is still unresolved AFTER the reload does not trigger an endless reload
|
|
1530
|
+
* loop. It is cleared as soon as a session is successfully (re)established.
|
|
1531
|
+
*/
|
|
1532
|
+
const SSO_RELOAD_ATTEMPT_KEY = "sq-sso-reload-attempt";
|
|
1533
|
+
function hasAttemptedSsoReload() {
|
|
1534
|
+
return sessionStorage.getItem(SSO_RELOAD_ATTEMPT_KEY) !== null;
|
|
1535
|
+
}
|
|
1536
|
+
function markSsoReloadAttempted() {
|
|
1537
|
+
sessionStorage.setItem(SSO_RELOAD_ATTEMPT_KEY, "1");
|
|
1538
|
+
}
|
|
1539
|
+
function clearSsoReloadAttempt() {
|
|
1540
|
+
sessionStorage.removeItem(SSO_RELOAD_ATTEMPT_KEY);
|
|
1541
|
+
}
|
|
1527
1542
|
/**
|
|
1528
1543
|
* Signs the user in according to the resolved {@link globalConfig.authMode}.
|
|
1529
1544
|
*
|
|
1530
1545
|
* The mode is expected to be resolved beforehand (by `initializeAppConfig`, awaited in
|
|
1531
1546
|
* `bootstrapApp`). This function clears any existing session, then:
|
|
1532
1547
|
* - `credentials` → redirect to the login form;
|
|
1533
|
-
* - `sso` →
|
|
1548
|
+
* - `sso` → re-probe the session and, only if it is genuinely gone, reload the page so the
|
|
1549
|
+
* browser/proxy performs the handshake (see {@link reauthenticateSso});
|
|
1534
1550
|
* - `oauth` / `saml` → delegate to `login()`, which redirects to the provider;
|
|
1535
1551
|
* - `bearer` → delegate to `login()`;
|
|
1536
1552
|
* - `unknown` → `login()` tries SSO silently then resolves to credentials; on failure the login
|
|
@@ -1550,16 +1566,20 @@ async function signIn() {
|
|
|
1550
1566
|
router.navigate([loginPath], { queryParams: { returnUrl: lastUrlAfterNavigation } });
|
|
1551
1567
|
return false; // prevent further execution
|
|
1552
1568
|
}
|
|
1553
|
-
// SSO: the browser/proxy
|
|
1569
|
+
// SSO: the browser/proxy owns authentication. A 401 landing here means the (cookie) session is
|
|
1570
|
+
// being challenged; recovering it needs a top-level navigation so the proxy can run its OIDC
|
|
1571
|
+
// redirect — which only a reload provides. But we re-probe BEFORE reloading to avoid both a
|
|
1572
|
+
// needless reload and an infinite reload loop (see reauthenticateSso).
|
|
1554
1573
|
if (authMode?.kind === "sso") {
|
|
1555
|
-
|
|
1556
|
-
return false; // prevent further execution
|
|
1574
|
+
return reauthenticateSso(router);
|
|
1557
1575
|
}
|
|
1558
1576
|
// oauth / saml / bearer / unknown — let login() drive the handshake.
|
|
1559
1577
|
try {
|
|
1560
1578
|
const response = await login();
|
|
1561
1579
|
if (response) {
|
|
1562
1580
|
info("Response from login", response);
|
|
1581
|
+
// Session (re)established — let a future expiry reload again.
|
|
1582
|
+
clearSsoReloadAttempt();
|
|
1563
1583
|
return true;
|
|
1564
1584
|
}
|
|
1565
1585
|
// Not authenticated. For provider redirects (oauth/saml) the page is already navigating away,
|
|
@@ -1587,6 +1607,40 @@ async function signIn() {
|
|
|
1587
1607
|
return false;
|
|
1588
1608
|
}
|
|
1589
1609
|
}
|
|
1610
|
+
/**
|
|
1611
|
+
* Recovers an SSO session after a 401, avoiding both a pointless reload and an infinite reload loop.
|
|
1612
|
+
*
|
|
1613
|
+
* 1. Re-probe the session with `fetchPrincipal`. A 200 means the session is in fact still valid — the
|
|
1614
|
+
* 401 was endpoint-specific (e.g. a missing CSRF token on a write), not a session loss. We do NOT
|
|
1615
|
+
* reload and report `true`, so the caller retries the original request once (the error
|
|
1616
|
+
* interceptor's own retry guard then stops any repeat).
|
|
1617
|
+
* 2. Otherwise the session is genuinely gone. If no reload has been attempted yet, flag the attempt
|
|
1618
|
+
* and reload, so the proxy can re-authenticate via its top-level OIDC redirect.
|
|
1619
|
+
* 3. If a reload has already been attempted and the session is still gone, stop looping and route to
|
|
1620
|
+
* the error page instead.
|
|
1621
|
+
*
|
|
1622
|
+
* @returns `true` when the session is still valid (retry the request), `false` otherwise.
|
|
1623
|
+
*/
|
|
1624
|
+
async function reauthenticateSso(router) {
|
|
1625
|
+
try {
|
|
1626
|
+
await fetchPrincipal();
|
|
1627
|
+
info("SSO session still valid on re-probe — skipping reload");
|
|
1628
|
+
clearSsoReloadAttempt();
|
|
1629
|
+
return true;
|
|
1630
|
+
}
|
|
1631
|
+
catch {
|
|
1632
|
+
// Session genuinely lost — fall through to the reload / give-up logic below.
|
|
1633
|
+
}
|
|
1634
|
+
if (hasAttemptedSsoReload()) {
|
|
1635
|
+
error("SSO re-authentication reload did not restore the session — routing to error");
|
|
1636
|
+
clearSsoReloadAttempt();
|
|
1637
|
+
router.navigate(["/error"], { queryParams: { message: "Session expired" } });
|
|
1638
|
+
return false;
|
|
1639
|
+
}
|
|
1640
|
+
markSsoReloadAttempted();
|
|
1641
|
+
window.location.reload();
|
|
1642
|
+
return false;
|
|
1643
|
+
}
|
|
1590
1644
|
|
|
1591
1645
|
/**
|
|
1592
1646
|
* Bootstraps the application by ensuring the user is authenticated and initializing the application.
|
|
@@ -3122,10 +3176,10 @@ class QueryService {
|
|
|
3122
3176
|
return [];
|
|
3123
3177
|
}));
|
|
3124
3178
|
}
|
|
3125
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3126
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3179
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: QueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3180
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: QueryService, providedIn: "root" });
|
|
3127
3181
|
}
|
|
3128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3182
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: QueryService, decorators: [{
|
|
3129
3183
|
type: Injectable,
|
|
3130
3184
|
args: [{
|
|
3131
3185
|
providedIn: "root"
|
|
@@ -3432,10 +3486,10 @@ class AggregationsService {
|
|
|
3432
3486
|
// only consider filters explicitly flagged with `homepage: true` in the custom JSON
|
|
3433
3487
|
return (agg) => this.appStore.filters().some((filter) => filter.homepage && this.matchesAggregation(filter, agg));
|
|
3434
3488
|
};
|
|
3435
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3436
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3489
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3490
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationsService, providedIn: "root" });
|
|
3437
3491
|
}
|
|
3438
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3492
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationsService, decorators: [{
|
|
3439
3493
|
type: Injectable,
|
|
3440
3494
|
args: [{
|
|
3441
3495
|
providedIn: "root"
|
|
@@ -3487,10 +3541,10 @@ class AppService {
|
|
|
3487
3541
|
return throwError(() => new Error(message));
|
|
3488
3542
|
}));
|
|
3489
3543
|
}
|
|
3490
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3491
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3544
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3545
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AppService, providedIn: 'root' });
|
|
3492
3546
|
}
|
|
3493
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3547
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AppService, decorators: [{
|
|
3494
3548
|
type: Injectable,
|
|
3495
3549
|
args: [{
|
|
3496
3550
|
providedIn: 'root'
|
|
@@ -3873,10 +3927,10 @@ class ApplicationService {
|
|
|
3873
3927
|
this.titleService.setTitle(title);
|
|
3874
3928
|
}
|
|
3875
3929
|
}
|
|
3876
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3877
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3930
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ApplicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3931
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ApplicationService, providedIn: "root" });
|
|
3878
3932
|
}
|
|
3879
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ApplicationService, decorators: [{
|
|
3880
3934
|
type: Injectable,
|
|
3881
3935
|
args: [{
|
|
3882
3936
|
providedIn: "root"
|
|
@@ -3990,10 +4044,10 @@ class AuditService {
|
|
|
3990
4044
|
}
|
|
3991
4045
|
});
|
|
3992
4046
|
}
|
|
3993
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3994
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4047
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AuditService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4048
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AuditService, providedIn: 'root' });
|
|
3995
4049
|
}
|
|
3996
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4050
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AuditService, decorators: [{
|
|
3997
4051
|
type: Injectable,
|
|
3998
4052
|
args: [{
|
|
3999
4053
|
providedIn: 'root'
|
|
@@ -4061,10 +4115,10 @@ class AutocompleteService {
|
|
|
4061
4115
|
}
|
|
4062
4116
|
return items;
|
|
4063
4117
|
}
|
|
4064
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4065
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4118
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AutocompleteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4119
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AutocompleteService, providedIn: 'root' });
|
|
4066
4120
|
}
|
|
4067
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AutocompleteService, decorators: [{
|
|
4068
4122
|
type: Injectable,
|
|
4069
4123
|
args: [{
|
|
4070
4124
|
providedIn: 'root'
|
|
@@ -4102,10 +4156,10 @@ class JsonMethodPluginService {
|
|
|
4102
4156
|
...options
|
|
4103
4157
|
});
|
|
4104
4158
|
}
|
|
4105
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4106
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4159
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: JsonMethodPluginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4160
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: JsonMethodPluginService, providedIn: 'root' });
|
|
4107
4161
|
}
|
|
4108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: JsonMethodPluginService, decorators: [{
|
|
4109
4163
|
type: Injectable,
|
|
4110
4164
|
args: [{
|
|
4111
4165
|
providedIn: 'root'
|
|
@@ -4140,10 +4194,10 @@ class NavigationService {
|
|
|
4140
4194
|
this.urlAfterNavigation = event.url;
|
|
4141
4195
|
}
|
|
4142
4196
|
}), shareReplay(1));
|
|
4143
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4144
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4197
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4198
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NavigationService, providedIn: "root" });
|
|
4145
4199
|
}
|
|
4146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NavigationService, decorators: [{
|
|
4147
4201
|
type: Injectable,
|
|
4148
4202
|
args: [{
|
|
4149
4203
|
providedIn: "root"
|
|
@@ -4579,10 +4633,10 @@ class PreviewService {
|
|
|
4579
4633
|
this.currentPage.set(this.totalPages());
|
|
4580
4634
|
this.sendMessage({ action: "last-page" });
|
|
4581
4635
|
}
|
|
4582
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4583
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4636
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PreviewService, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4637
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PreviewService, providedIn: "root" });
|
|
4584
4638
|
}
|
|
4585
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4639
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PreviewService, decorators: [{
|
|
4586
4640
|
type: Injectable,
|
|
4587
4641
|
args: [{
|
|
4588
4642
|
providedIn: "root"
|
|
@@ -4593,17 +4647,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
4593
4647
|
* @deprecated This service is deprecated and should not be used directly. Please use the PrincipalStore instead.
|
|
4594
4648
|
*/
|
|
4595
4649
|
class PrincipalService {
|
|
4596
|
-
http = inject(HttpClient);
|
|
4597
|
-
API_URL = `${globalConfig.backendUrl}/api/v1`;
|
|
4598
4650
|
/**
|
|
4599
4651
|
* Retrieves the principal information from the server.
|
|
4600
4652
|
*
|
|
4601
4653
|
* @returns Observable<Principal> An observable that emits the principal information.
|
|
4602
4654
|
*
|
|
4603
4655
|
* @remarks
|
|
4604
|
-
*
|
|
4605
|
-
*
|
|
4606
|
-
* In case of an error, it logs the error to the console and returns an empty observable.
|
|
4656
|
+
* Delegates to the SDK's fetchPrincipal so the request goes through atomic's auth handling
|
|
4657
|
+
* (credentials + authMode-aware noAutoAuthentication). On error it logs and returns EMPTY.
|
|
4607
4658
|
*
|
|
4608
4659
|
* @example
|
|
4609
4660
|
* ```typescript
|
|
@@ -4613,17 +4664,15 @@ class PrincipalService {
|
|
|
4613
4664
|
* ```
|
|
4614
4665
|
*/
|
|
4615
4666
|
getPrincipal() {
|
|
4616
|
-
|
|
4617
|
-
params.append('noAuthentication', 'true');
|
|
4618
|
-
return this.http.get(this.API_URL + '/principal', { params }).pipe(catchError(error => {
|
|
4667
|
+
return from(fetchPrincipal()).pipe(catchError(error => {
|
|
4619
4668
|
console.error('PrincipalService.getPrincipal failure - error: ', error);
|
|
4620
4669
|
return EMPTY;
|
|
4621
4670
|
}));
|
|
4622
4671
|
}
|
|
4623
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4624
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4672
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PrincipalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4673
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PrincipalService, providedIn: 'root' });
|
|
4625
4674
|
}
|
|
4626
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4675
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PrincipalService, decorators: [{
|
|
4627
4676
|
type: Injectable,
|
|
4628
4677
|
args: [{
|
|
4629
4678
|
providedIn: 'root'
|
|
@@ -4692,10 +4741,10 @@ class SavedSearchesService {
|
|
|
4692
4741
|
deleteSavedSearch(index) {
|
|
4693
4742
|
this.userSettingsStore.deleteSavedSearch(index);
|
|
4694
4743
|
}
|
|
4695
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4696
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4744
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SavedSearchesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4745
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SavedSearchesService, providedIn: "root" });
|
|
4697
4746
|
}
|
|
4698
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4747
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SavedSearchesService, decorators: [{
|
|
4699
4748
|
type: Injectable,
|
|
4700
4749
|
args: [{
|
|
4701
4750
|
providedIn: "root"
|
|
@@ -4788,10 +4837,10 @@ class SearchService {
|
|
|
4788
4837
|
}
|
|
4789
4838
|
});
|
|
4790
4839
|
}
|
|
4791
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4792
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4840
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4841
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchService, providedIn: 'root' });
|
|
4793
4842
|
}
|
|
4794
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4843
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchService, decorators: [{
|
|
4795
4844
|
type: Injectable,
|
|
4796
4845
|
args: [{
|
|
4797
4846
|
providedIn: 'root'
|
|
@@ -4864,10 +4913,10 @@ class SelectionService {
|
|
|
4864
4913
|
const url = this.router.createUrlTree([], { relativeTo: this.route, queryParams }).toString();
|
|
4865
4914
|
this.location.replaceState(url);
|
|
4866
4915
|
}
|
|
4867
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4868
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4916
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4917
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectionService, providedIn: 'root' });
|
|
4869
4918
|
}
|
|
4870
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4919
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectionService, decorators: [{
|
|
4871
4920
|
type: Injectable,
|
|
4872
4921
|
args: [{
|
|
4873
4922
|
providedIn: 'root'
|
|
@@ -4951,10 +5000,10 @@ class SelectionHistoryService {
|
|
|
4951
5000
|
this.selectionHistoryEvent.next('back');
|
|
4952
5001
|
return last;
|
|
4953
5002
|
}
|
|
4954
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4955
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
5003
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectionHistoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5004
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectionHistoryService, providedIn: 'root' });
|
|
4956
5005
|
}
|
|
4957
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5006
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectionHistoryService, decorators: [{
|
|
4958
5007
|
type: Injectable,
|
|
4959
5008
|
args: [{
|
|
4960
5009
|
providedIn: 'root'
|
|
@@ -4989,10 +5038,10 @@ class TextChunkService {
|
|
|
4989
5038
|
return [];
|
|
4990
5039
|
}));
|
|
4991
5040
|
}
|
|
4992
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4993
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
5041
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TextChunkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5042
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TextChunkService, providedIn: 'root' });
|
|
4994
5043
|
}
|
|
4995
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5044
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: TextChunkService, decorators: [{
|
|
4996
5045
|
type: Injectable,
|
|
4997
5046
|
args: [{
|
|
4998
5047
|
providedIn: 'root'
|
|
@@ -5014,10 +5063,10 @@ class UserProfileService {
|
|
|
5014
5063
|
}
|
|
5015
5064
|
});
|
|
5016
5065
|
}
|
|
5017
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5018
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
5066
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: UserProfileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5067
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: UserProfileService, providedIn: "root" });
|
|
5019
5068
|
}
|
|
5020
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5069
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: UserProfileService, decorators: [{
|
|
5021
5070
|
type: Injectable,
|
|
5022
5071
|
args: [{
|
|
5023
5072
|
providedIn: "root"
|
|
@@ -5049,8 +5098,8 @@ class PagerComponent {
|
|
|
5049
5098
|
this.page.set(this.page() - 1);
|
|
5050
5099
|
this.queryService.gotoPage(this.page());
|
|
5051
5100
|
}
|
|
5052
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5053
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5101
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5102
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: PagerComponent, isStandalone: true, selector: "pager", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
5054
5103
|
<div class="flex gap-2">
|
|
5055
5104
|
@if ((hasPages() && page() > 1) || (!hasPages() && page() > 1)) {
|
|
5056
5105
|
<button variant="ghost" [attr.title]="'previousPage' | transloco" (click)="previousPage()">
|
|
@@ -5074,7 +5123,7 @@ class PagerComponent {
|
|
|
5074
5123
|
</div>
|
|
5075
5124
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
5076
5125
|
}
|
|
5077
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5126
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PagerComponent, decorators: [{
|
|
5078
5127
|
type: Component,
|
|
5079
5128
|
args: [{
|
|
5080
5129
|
selector: "pager",
|
|
@@ -5112,10 +5161,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
5112
5161
|
class SearchInputFooter {
|
|
5113
5162
|
class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
|
|
5114
5163
|
variants = computed(() => cn("pt-2", this.class()), ...(ngDevMode ? [{ debugName: "variants" }] : []));
|
|
5115
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5116
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
5164
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchInputFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5165
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: SearchInputFooter, isStandalone: true, selector: ".search-input-footer, search-input-footer, SearchInputFooter, searchinputfooter", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "variants()" } }, ngImport: i0 });
|
|
5117
5166
|
}
|
|
5118
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchInputFooter, decorators: [{
|
|
5119
5168
|
type: Directive,
|
|
5120
5169
|
args: [{
|
|
5121
5170
|
selector: ".search-input-footer, search-input-footer, SearchInputFooter, searchinputfooter",
|
|
@@ -5157,10 +5206,10 @@ class SourceComponent {
|
|
|
5157
5206
|
}
|
|
5158
5207
|
return { iconClass: defaultIconClass };
|
|
5159
5208
|
}, ...(ngDevMode ? [{ debugName: "iconDetails" }] : []));
|
|
5160
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5161
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5209
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SourceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5210
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SourceComponent, isStandalone: true, selector: "source, Source", inputs: { collection: { classPropertyName: "collection", publicName: "collection", isSignal: true, isRequired: false, transformFunction: null }, connector: { classPropertyName: "connector", publicName: "connector", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope("sources")], ngImport: i0, template: "@if (iconDetails().iconPath) {\r\n <img\r\n [src]=\"iconDetails().iconPath\"\r\n [alt]=\"collection()?.[0] || ('sources.sourceIcon' | transloco)\" />\r\n} @else {\r\n <FaIcon\r\n [faClass]=\"iconDetails().iconClass\"\r\n [attr.aria-label]=\"'sources.sourceIcon' | transloco\" />\r\n}\r\n", dependencies: [{ kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
5162
5211
|
}
|
|
5163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SourceComponent, decorators: [{
|
|
5164
5213
|
type: Component,
|
|
5165
5214
|
args: [{ selector: "source, Source", standalone: true, imports: [TranslocoPipe, FaIconComponent], providers: [provideTranslocoScope("sources")], template: "@if (iconDetails().iconPath) {\r\n <img\r\n [src]=\"iconDetails().iconPath\"\r\n [alt]=\"collection()?.[0] || ('sources.sourceIcon' | transloco)\" />\r\n} @else {\r\n <FaIcon\r\n [faClass]=\"iconDetails().iconClass\"\r\n [attr.aria-label]=\"'sources.sourceIcon' | transloco\" />\r\n}\r\n" }]
|
|
5166
5215
|
}], propDecorators: { collection: [{ type: i0.Input, args: [{ isSignal: true, alias: "collection", required: false }] }], connector: [{ type: i0.Input, args: [{ isSignal: true, alias: "connector", required: false }] }] } });
|
|
@@ -5246,8 +5295,8 @@ class DocumentLocatorComponent {
|
|
|
5246
5295
|
const { filters } = getState(this.queryParamStore);
|
|
5247
5296
|
this.router.navigate([], { queryParams: { f: JSON.stringify(filters) }, queryParamsHandling: "merge" });
|
|
5248
5297
|
}
|
|
5249
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5250
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5298
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DocumentLocatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5299
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DocumentLocatorComponent, isStandalone: true, selector: "document-locator, DocumentLocator", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, aggregation: { classPropertyName: "aggregation", publicName: "aggregation", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "flex items-center grow gap-2 overflow-hidden" }, viewQueries: [{ propertyName: "shadow", first: true, predicate: ["shadowRender"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "client", first: true, predicate: ["documentLocator"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: `
|
|
5251
5300
|
<!-- Renders all segment hidden to user to compute width -->
|
|
5252
5301
|
<div #shadowRender class="pointer-events-none invisible absolute left-0 top-0 -z-10 flex gap-1">
|
|
5253
5302
|
@for (segment of locationSegments(); track $index) {
|
|
@@ -5295,7 +5344,7 @@ class DocumentLocatorComponent {
|
|
|
5295
5344
|
</div>
|
|
5296
5345
|
`, isInline: true, dependencies: [{ kind: "component", type: EllipsisIcon, selector: "ellipsis-icon, EllipsisIcon, ellipsisicon", inputs: ["class", "orientation"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: SourceComponent, selector: "source, Source", inputs: ["collection", "connector"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: LinkComponent, selector: "a[link], Link", inputs: ["class", "variant", "size", "weight", "underline", "disabled", "withIcon", "block"] }] });
|
|
5297
5346
|
}
|
|
5298
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5347
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DocumentLocatorComponent, decorators: [{
|
|
5299
5348
|
type: Component,
|
|
5300
5349
|
args: [{
|
|
5301
5350
|
selector: "document-locator, DocumentLocator",
|
|
@@ -5379,8 +5428,8 @@ class ErrorComponent {
|
|
|
5379
5428
|
goHome() {
|
|
5380
5429
|
this.router.navigate(['/']).then(() => window.location.reload());
|
|
5381
5430
|
}
|
|
5382
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5383
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5431
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5432
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ErrorComponent, isStandalone: true, selector: "error-component, ErrorComponent", host: { classAttribute: "bg-background text-foreground grid min-h-dvh w-full place-content-center p-6" }, ngImport: i0, template: `
|
|
5384
5433
|
<Card
|
|
5385
5434
|
hover="no"
|
|
5386
5435
|
class="bg-background border-(--popover-border) w-full max-w-md rounded-3xl border shadow-2xl">
|
|
@@ -5443,7 +5492,7 @@ class ErrorComponent {
|
|
|
5443
5492
|
</Card>
|
|
5444
5493
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: CardComponent, selector: ".card, card, Card", inputs: ["class", "variant", "hover"] }, { kind: "directive", type: CardHeaderComponent, selector: ".card-header, card-header, CardHeader, cardheader", inputs: ["class"] }, { kind: "directive", type: CardContentComponent, selector: ".card-content, card-content, CardContent, cardcontent", inputs: ["class"] }] });
|
|
5445
5494
|
}
|
|
5446
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5495
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ErrorComponent, decorators: [{
|
|
5447
5496
|
type: Component,
|
|
5448
5497
|
args: [{
|
|
5449
5498
|
selector: 'error-component, ErrorComponent',
|
|
@@ -5574,8 +5623,8 @@ class LoadingComponent {
|
|
|
5574
5623
|
});
|
|
5575
5624
|
}
|
|
5576
5625
|
}
|
|
5577
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5578
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
5626
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LoadingComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
5627
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: LoadingComponent, isStandalone: true, selector: "app-wait", ngImport: i0, template: `
|
|
5579
5628
|
<div class="flex h-dvh w-full items-center justify-center">
|
|
5580
5629
|
<div class="flex flex-col items-center space-y-4">
|
|
5581
5630
|
<span class="loader"></span>
|
|
@@ -5583,7 +5632,7 @@ class LoadingComponent {
|
|
|
5583
5632
|
</div>
|
|
5584
5633
|
`, isInline: true, styles: [".loader{--w: 96px;--h: 96px;transform:rotate(45deg);perspective:1000px;border-radius:50%;width:var(--w);height:var(--h);color:#0040bf}.loader:before,.loader:after{content:\"\";display:block;position:absolute;top:0;left:0;width:inherit;height:inherit;border-radius:50%;transform:rotateX(70deg);animation:1s spin linear infinite}.loader:after{color:#ff854a;transform:rotateY(70deg);animation-delay:.4s}@keyframes rotate{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes rotateccw{0%{transform:translate(-50%,-50%) rotate(0)}to{transform:translate(-50%,-50%) rotate(-360deg)}}@keyframes spin{0%,to{box-shadow:.4em 0 0 0 currentcolor}12%{box-shadow:.4em .4em 0 0 currentcolor}25%{box-shadow:0 .4em 0 0 currentcolor}37%{box-shadow:-.4em .4em 0 0 currentcolor}50%{box-shadow:-.4em 0 0 0 currentcolor}62%{box-shadow:-.4em -.4em 0 0 currentcolor}75%{box-shadow:0 -.4em 0 0 currentcolor}87%{box-shadow:.4em -.4em 0 0 currentcolor}}\n"] });
|
|
5585
5634
|
}
|
|
5586
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5635
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LoadingComponent, decorators: [{
|
|
5587
5636
|
type: Component,
|
|
5588
5637
|
args: [{ selector: 'app-wait', standalone: true, imports: [], template: `
|
|
5589
5638
|
<div class="flex h-dvh w-full items-center justify-center">
|
|
@@ -5607,8 +5656,8 @@ class MetadataComponent {
|
|
|
5607
5656
|
handleClick(event, item) {
|
|
5608
5657
|
this.click.emit({ filter: item, event });
|
|
5609
5658
|
}
|
|
5610
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5611
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5659
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MetadataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5660
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: MetadataComponent, isStandalone: true, selector: "Metadata, metadata", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, metadata: { classPropertyName: "metadata", publicName: "metadata", isSignal: true, isRequired: true, transformFunction: null }, article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, limit: { classPropertyName: "limit", publicName: "limit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click: "click" }, host: { properties: { "class.hidden": "items().length === 0" } }, exportAs: ["metadata"], ngImport: i0, template: `
|
|
5612
5661
|
@for (item of items().slice(0, limit()); track $index) {
|
|
5613
5662
|
@if (item) {
|
|
5614
5663
|
<badge
|
|
@@ -5619,9 +5668,9 @@ class MetadataComponent {
|
|
|
5619
5668
|
</badge>
|
|
5620
5669
|
}
|
|
5621
5670
|
}
|
|
5622
|
-
`, isInline: true, styles: [":host{display:contents}:host,:host:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
5671
|
+
`, isInline: true, styles: [":host{display:contents}:host,:host:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size", "aria-label"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
5623
5672
|
}
|
|
5624
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5673
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MetadataComponent, decorators: [{
|
|
5625
5674
|
type: Component,
|
|
5626
5675
|
args: [{ selector: "Metadata, metadata", exportAs: "metadata", standalone: true, imports: [SyslangPipe, BadgeComponent], template: `
|
|
5627
5676
|
@for (item of items().slice(0, limit()); track $index) {
|
|
@@ -5658,10 +5707,10 @@ class MissingTermsComponent {
|
|
|
5658
5707
|
};
|
|
5659
5708
|
});
|
|
5660
5709
|
}, ...(ngDevMode ? [{ debugName: "missingTerms" }] : []));
|
|
5661
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5662
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5710
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MissingTermsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5711
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: MissingTermsComponent, isStandalone: true, selector: "missing-terms, MissingTerms, missingterms", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, providers: [provideTranslocoScope('article')], ngImport: i0, template: "@if ((missingTerms() || []).length > 0) {\n <span class=\"terms-label\">{{ 'article.missingTerms' | transloco }}</span>\n <span class=\"terms\">\n @for (term of missingTerms(); track $index) {\n <span class=\"term ms-1\">{{ term.value }}</span>\n }\n </span>\n <span class=\"mx-1\">|</span>\n <span class=\"terms-label ms-1\">{{ 'article.mustInclude' | transloco }}</span>\n <span class=\"terms\">\n @for (term of missingTerms(); track $index) {\n <a role=\"button\" class=\"ms-1\" routerLink=\"search\" [queryParams]=\"term.queryParams\" (click)=\"$event.stopPropagation()\">{{ term.value }}</a>\n }\n </span>\n}\n", styles: [".term{text-decoration-line:line-through}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
5663
5712
|
}
|
|
5664
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5713
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MissingTermsComponent, decorators: [{
|
|
5665
5714
|
type: Component,
|
|
5666
5715
|
args: [{ selector: 'missing-terms, MissingTerms, missingterms', standalone: true, imports: [TranslocoPipe, RouterLink], providers: [provideTranslocoScope('article')], template: "@if ((missingTerms() || []).length > 0) {\n <span class=\"terms-label\">{{ 'article.missingTerms' | transloco }}</span>\n <span class=\"terms\">\n @for (term of missingTerms(); track $index) {\n <span class=\"term ms-1\">{{ term.value }}</span>\n }\n </span>\n <span class=\"mx-1\">|</span>\n <span class=\"terms-label ms-1\">{{ 'article.mustInclude' | transloco }}</span>\n <span class=\"terms\">\n @for (term of missingTerms(); track $index) {\n <a role=\"button\" class=\"ms-1\" routerLink=\"search\" [queryParams]=\"term.queryParams\" (click)=\"$event.stopPropagation()\">{{ term.value }}</a>\n }\n </span>\n}\n", styles: [".term{text-decoration-line:line-through}\n"] }]
|
|
5667
5716
|
}], propDecorators: { article: [{ type: i0.Input, args: [{ isSignal: true, alias: "article", required: true }] }] } });
|
|
@@ -5765,8 +5814,8 @@ class CollectionsDialog {
|
|
|
5765
5814
|
this.newCollectionName.set("");
|
|
5766
5815
|
this.creating.set(false);
|
|
5767
5816
|
}
|
|
5768
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5769
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5817
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CollectionsDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5818
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: CollectionsDialog, isStandalone: true, selector: "add-to-collection-dialog", outputs: { closed: "closed" }, providers: [provideTranslocoScope("collections")], viewQueries: [{ propertyName: "createInputElement", first: true, predicate: ["createInput"], descendants: true, isSignal: true }, { propertyName: "dialogElement", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
5770
5819
|
<dialog #dialog (closed)="closeBtn.click()">
|
|
5771
5820
|
<DialogContent>
|
|
5772
5821
|
<DialogHeader>
|
|
@@ -5832,7 +5881,7 @@ class CollectionsDialog {
|
|
|
5832
5881
|
</dialog>
|
|
5833
5882
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: SquareCheckIcon, selector: "square-check-icon, SquareCheckIcon", inputs: ["class"] }, { kind: "component", type: SquareMinusIcon, selector: "square-minus-icon, SquareMinusIcon", inputs: ["class"] }, { kind: "component", type: SquareIcon, selector: "square-icon, SquareIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
5834
5883
|
}
|
|
5835
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5884
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CollectionsDialog, decorators: [{
|
|
5836
5885
|
type: Component,
|
|
5837
5886
|
args: [{
|
|
5838
5887
|
selector: "add-to-collection-dialog",
|
|
@@ -6014,10 +6063,10 @@ class ExportService {
|
|
|
6014
6063
|
responseType: 'blob'
|
|
6015
6064
|
});
|
|
6016
6065
|
}
|
|
6017
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6018
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
6066
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6067
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ExportService, providedIn: 'root' });
|
|
6019
6068
|
}
|
|
6020
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6069
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ExportService, decorators: [{
|
|
6021
6070
|
type: Injectable,
|
|
6022
6071
|
args: [{
|
|
6023
6072
|
providedIn: 'root'
|
|
@@ -6089,8 +6138,8 @@ class ExportDialog {
|
|
|
6089
6138
|
this.maxCount.set(1);
|
|
6090
6139
|
}
|
|
6091
6140
|
}
|
|
6092
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6093
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
6141
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ExportDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6142
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ExportDialog, isStandalone: true, selector: "export-dialog", inputs: { format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, maxCount: { classPropertyName: "maxCount", publicName: "maxCount", isSignal: true, isRequired: false, transformFunction: null }, columnsToExport: { classPropertyName: "columnsToExport", publicName: "columnsToExport", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onExport: "onExport", format: "formatChange", maxCount: "maxCountChange", columnsToExport: "columnsToExportChange" }, providers: [provideTranslocoScope("export")], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
6094
6143
|
<dialog #dialog>
|
|
6095
6144
|
<DialogContent
|
|
6096
6145
|
class="[&_section>h1]:text-muted-foreground flex flex-col gap-4 [&_section>h1]:text-sm [&_section>h1]:font-semibold [&_section]:flex [&_section]:flex-col [&_section]:gap-2">
|
|
@@ -6161,7 +6210,7 @@ class ExportDialog {
|
|
|
6161
6210
|
</dialog>
|
|
6162
6211
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "component", type: SwitchComponent, selector: "switch, Switch", inputs: ["toggled", "disabled", "class", "variant", "size"], outputs: ["toggledChange"] }, { kind: "directive", type: SelectOptionDirective, selector: "option", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
6163
6212
|
}
|
|
6164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6213
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ExportDialog, decorators: [{
|
|
6165
6214
|
type: Component,
|
|
6166
6215
|
args: [{
|
|
6167
6216
|
selector: "export-dialog",
|
|
@@ -6299,8 +6348,8 @@ class MultiSelectionToolbarComponent {
|
|
|
6299
6348
|
});
|
|
6300
6349
|
openExportDialog = () => this.dialog.open(ExportDialog, this.ids());
|
|
6301
6350
|
attachToAssistant = () => this.selection.update({ assistantIdsToAttach: this.ids() });
|
|
6302
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6303
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
6351
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MultiSelectionToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6352
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: MultiSelectionToolbarComponent, isStandalone: true, selector: "MultiSelectionToolbar, multi-selection-toolbar", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { updatedCollections: "updatedCollections" }, host: { properties: { "class.opacity-100": "count() > 0", "class.-translate-y-24": "count() > 0" }, classAttribute: "fixed -bottom-20 left-[50%] translate-x-[-50%] z-50 transition-[translate,opacity,discrete] duration-300 opacity-0" }, providers: [provideTranslocoScope("multi-selection-toolbar", "article", "collections", "export")], ngImport: i0, template: `
|
|
6304
6353
|
<menu id="multi-select-toolbar" [class]="cn(variants(), class())">
|
|
6305
6354
|
<li class="ps-0!">
|
|
6306
6355
|
<button class="cursor-pointer inline-flex items-center gap-1" (click)="clearSelection()">
|
|
@@ -6334,7 +6383,7 @@ class MultiSelectionToolbarComponent {
|
|
|
6334
6383
|
</menu>
|
|
6335
6384
|
`, isInline: true, dependencies: [{ kind: "component", type: XMarkIcon, selector: "XMarkIcon, xmark-icon, x-mark-icon", inputs: ["class"] }, { kind: "component", type: InboxIcon, selector: "inbox-icon, InboxIcon", inputs: ["class"] }, { kind: "component", type: SparklesIcon, selector: "sparkles-icon, SparklesIcon", inputs: ["class"] }, { kind: "component", type: FileOutputIcon, selector: "file-output-icon, FileOutputIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
6336
6385
|
}
|
|
6337
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6386
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MultiSelectionToolbarComponent, decorators: [{
|
|
6338
6387
|
type: Component,
|
|
6339
6388
|
args: [{
|
|
6340
6389
|
selector: "MultiSelectionToolbar, multi-selection-toolbar",
|
|
@@ -6438,10 +6487,10 @@ function injectRouteNavigation(path, showCount) {
|
|
|
6438
6487
|
*/
|
|
6439
6488
|
class ChildMarkerDirective {
|
|
6440
6489
|
template = inject((TemplateRef));
|
|
6441
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6442
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
6490
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChildMarkerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6491
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: ChildMarkerDirective, isStandalone: true, selector: "[childMarker]", ngImport: i0 });
|
|
6443
6492
|
}
|
|
6444
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6493
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChildMarkerDirective, decorators: [{
|
|
6445
6494
|
type: Directive,
|
|
6446
6495
|
args: [{
|
|
6447
6496
|
selector: '[childMarker]'
|
|
@@ -6586,10 +6635,10 @@ class DrawerStackService {
|
|
|
6586
6635
|
this.openAssistant();
|
|
6587
6636
|
this.askAI$.next(text);
|
|
6588
6637
|
}
|
|
6589
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6590
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
6638
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerStackService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6639
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerStackService, providedIn: "root" });
|
|
6591
6640
|
}
|
|
6592
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6641
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerStackService, decorators: [{
|
|
6593
6642
|
type: Injectable,
|
|
6594
6643
|
args: [{
|
|
6595
6644
|
providedIn: "root"
|
|
@@ -6645,10 +6694,10 @@ class SelectArticleOnClickDirective {
|
|
|
6645
6694
|
break;
|
|
6646
6695
|
}
|
|
6647
6696
|
}
|
|
6648
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6649
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
6697
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectArticleOnClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6698
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: SelectArticleOnClickDirective, isStandalone: true, selector: "[selectArticleOnClick]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, strategy: { classPropertyName: "strategy", publicName: "strategy", isSignal: true, isRequired: false, transformFunction: null }, redirectUrl: { classPropertyName: "redirectUrl", publicName: "redirectUrl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { listeners: { "keydown.enter": "onEnter($event)", "click": "onClick()" } }, ngImport: i0 });
|
|
6650
6699
|
}
|
|
6651
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6700
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectArticleOnClickDirective, decorators: [{
|
|
6652
6701
|
type: Directive,
|
|
6653
6702
|
args: [{
|
|
6654
6703
|
selector: "[selectArticleOnClick]",
|
|
@@ -6699,10 +6748,10 @@ class ShowBookmarkDirective {
|
|
|
6699
6748
|
this.showBookmark.emit(bookmarkHovered || isBookmarked);
|
|
6700
6749
|
});
|
|
6701
6750
|
}
|
|
6702
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6703
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
6751
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ShowBookmarkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6752
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: ShowBookmarkDirective, isStandalone: true, selector: "[showBookmark]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { showBookmark: "showBookmark" }, host: { listeners: { "mouseenter": "mouseEnter()", "mouseleave": "mouseLeave()" } }, ngImport: i0 });
|
|
6704
6753
|
}
|
|
6705
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6754
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ShowBookmarkDirective, decorators: [{
|
|
6706
6755
|
type: Directive,
|
|
6707
6756
|
args: [{
|
|
6708
6757
|
selector: "[showBookmark]",
|
|
@@ -6750,10 +6799,10 @@ class InfinityScrollDirective {
|
|
|
6750
6799
|
ngOnDestroy() {
|
|
6751
6800
|
this.observer.disconnect();
|
|
6752
6801
|
}
|
|
6753
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6754
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
6802
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: InfinityScrollDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
6803
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: InfinityScrollDirective, isStandalone: true, selector: "[infinity-scroll]", inputs: { options: { classPropertyName: "options", publicName: "scroll-options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onScroll: "onScroll" }, ngImport: i0 });
|
|
6755
6804
|
}
|
|
6756
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6805
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: InfinityScrollDirective, decorators: [{
|
|
6757
6806
|
type: Directive,
|
|
6758
6807
|
args: [{
|
|
6759
6808
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -7057,10 +7106,10 @@ class KeyboardNavigatorDirective {
|
|
|
7057
7106
|
this.renderer.setAttribute(this.listboxElement(), 'aria-hidden', 'true');
|
|
7058
7107
|
this.ariaExpanded.set(false);
|
|
7059
7108
|
}
|
|
7060
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7061
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
7109
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KeyboardNavigatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7110
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: KeyboardNavigatorDirective, isStandalone: true, selector: "input[role=\"combobox\"]", inputs: { keyboardNavigator: { classPropertyName: "keyboardNavigator", publicName: "keyboardNavigator", isSignal: true, isRequired: false, transformFunction: null }, listboxId: { classPropertyName: "listboxId", publicName: "aria-controls", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFocus: "onFocus", onBlur: "onBlur", onSelected: "onSelected" }, host: { listeners: { "focus": "focus()", "blur": "blur()", "keydown.arrowup": "up()", "keydown.arrowdown": "down()", "keydown.arrowleft": "left()", "keydown.arrowright": "right()", "keydown.home": "home()", "keydown.end": "end()", "keydown.pageup": "pageUp()", "keydown.pagedown": "pageDown()", "keydown.enter": "enter()", "keydown.escape": "escape()" }, properties: { "attr.aria-expanded": "ariaExpanded()", "attr.aria-activedescendant": "activeDescendant()" } }, ngImport: i0 });
|
|
7062
7111
|
}
|
|
7063
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KeyboardNavigatorDirective, decorators: [{
|
|
7064
7113
|
type: Directive,
|
|
7065
7114
|
args: [{
|
|
7066
7115
|
selector: 'input[role="combobox"]',
|
|
@@ -7095,10 +7144,10 @@ class OpenArticleOnCtrlEnterDirective {
|
|
|
7095
7144
|
return;
|
|
7096
7145
|
this.previewService.openExternal(this.article());
|
|
7097
7146
|
}
|
|
7098
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7099
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
7147
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OpenArticleOnCtrlEnterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7148
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: OpenArticleOnCtrlEnterDirective, isStandalone: true, selector: "[appOpenArticleOnCtrlEnter],[openArticleOnCtrlEnter]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "keydown.control.Enter": "onCtrlEnter()" } }, ngImport: i0 });
|
|
7100
7149
|
}
|
|
7101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7150
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OpenArticleOnCtrlEnterDirective, decorators: [{
|
|
7102
7151
|
type: Directive,
|
|
7103
7152
|
args: [{
|
|
7104
7153
|
selector: '[appOpenArticleOnCtrlEnter],[openArticleOnCtrlEnter]',
|
|
@@ -7114,10 +7163,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
7114
7163
|
* overflow manager.
|
|
7115
7164
|
*/
|
|
7116
7165
|
class OverflowItemDirective {
|
|
7117
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7118
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
7166
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OverflowItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7167
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: OverflowItemDirective, isStandalone: true, selector: "[overflowItem]", ngImport: i0 });
|
|
7119
7168
|
}
|
|
7120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OverflowItemDirective, decorators: [{
|
|
7121
7170
|
type: Directive,
|
|
7122
7171
|
args: [{
|
|
7123
7172
|
selector: "[overflowItem]",
|
|
@@ -7130,10 +7179,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
7130
7179
|
* item never overlaps it. Its position is not used for measurement.
|
|
7131
7180
|
*/
|
|
7132
7181
|
class OverflowStopDirective {
|
|
7133
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7134
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
7182
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OverflowStopDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7183
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: OverflowStopDirective, isStandalone: true, selector: "[overflowStop]", ngImport: i0 });
|
|
7135
7184
|
}
|
|
7136
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OverflowStopDirective, decorators: [{
|
|
7137
7186
|
type: Directive,
|
|
7138
7187
|
args: [{
|
|
7139
7188
|
selector: "[overflowStop]",
|
|
@@ -7303,10 +7352,10 @@ class OverflowManagerDirective {
|
|
|
7303
7352
|
item.nativeElement.style.display = index < count ? "" : "none";
|
|
7304
7353
|
});
|
|
7305
7354
|
}
|
|
7306
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7307
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.
|
|
7355
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OverflowManagerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7356
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.25", type: OverflowManagerDirective, isStandalone: true, selector: "[overflowManager]", inputs: { target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, margin: { classPropertyName: "margin", publicName: "margin", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, reserveStop: { classPropertyName: "reserveStop", publicName: "reserveStop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { count: "count" }, queries: [{ propertyName: "items", predicate: OverflowItemDirective, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "stop", first: true, predicate: OverflowStopDirective, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0 });
|
|
7308
7357
|
}
|
|
7309
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7358
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OverflowManagerDirective, decorators: [{
|
|
7310
7359
|
type: Directive,
|
|
7311
7360
|
args: [{
|
|
7312
7361
|
selector: "[overflowManager]",
|
|
@@ -7364,10 +7413,10 @@ class SelectArticleDirective {
|
|
|
7364
7413
|
// set selection
|
|
7365
7414
|
this.selectionService.setCurrentArticle(article, withQueryText);
|
|
7366
7415
|
}
|
|
7367
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7368
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
7416
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectArticleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7417
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: SelectArticleDirective, isStandalone: true, selector: "[selectArticle]", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, strategy: { classPropertyName: "strategy", publicName: "strategy", isSignal: true, isRequired: false, transformFunction: null }, redirectUrl: { classPropertyName: "redirectUrl", publicName: "redirectUrl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { listeners: { "click": "onClick()", "keydown.enter": "onEnter($event)" } }, ngImport: i0 });
|
|
7369
7418
|
}
|
|
7370
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7419
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SelectArticleDirective, decorators: [{
|
|
7371
7420
|
type: Directive,
|
|
7372
7421
|
args: [{
|
|
7373
7422
|
selector: "[selectArticle]",
|
|
@@ -7396,10 +7445,10 @@ class ThemeProviderDirective {
|
|
|
7396
7445
|
applyThemeToNativeElement(this.host.nativeElement, vars);
|
|
7397
7446
|
});
|
|
7398
7447
|
}
|
|
7399
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7400
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
7448
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ThemeProviderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7449
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: ThemeProviderDirective, isStandalone: true, selector: "[themeProvider]", inputs: { themeProvider: { classPropertyName: "themeProvider", publicName: "themeProvider", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
7401
7450
|
}
|
|
7402
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7451
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ThemeProviderDirective, decorators: [{
|
|
7403
7452
|
type: Directive,
|
|
7404
7453
|
args: [{
|
|
7405
7454
|
selector: '[themeProvider]',
|
|
@@ -7478,8 +7527,8 @@ class NavbarTabsComponent {
|
|
|
7478
7527
|
};
|
|
7479
7528
|
}
|
|
7480
7529
|
changeTab() { }
|
|
7481
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7482
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
7530
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NavbarTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7531
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: NavbarTabsComponent, isStandalone: true, selector: "navbar-tabs", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null }, noTruncate: { classPropertyName: "noTruncate", publicName: "noTruncate", isSignal: true, isRequired: false, transformFunction: null }, minTabWidth: { classPropertyName: "minTabWidth", publicName: "minTabWidth", isSignal: true, isRequired: false, transformFunction: null }, path: { classPropertyName: "path", publicName: "path", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "cn('block', class())" } }, providers: [provideTranslocoScope('navbar-tabs')], ngImport: i0, template: `
|
|
7483
7532
|
<!-- do not display the tabs if there are no tabs -->
|
|
7484
7533
|
@if (nav.tabs().length > 0) {
|
|
7485
7534
|
<div overflowManager (count)="visibleTabCount.set($event)" class="flex items-end rounded-[inherit] bg-inherit">
|
|
@@ -7514,7 +7563,11 @@ class NavbarTabsComponent {
|
|
|
7514
7563
|
<span [class]="cn(!noTruncate() && 'truncate', !noTruncate() && tab.icon && '@max-[3rem]:w-0 @max-[3rem]:invisible')">{{ tab.display | syslang | transloco }}</span>
|
|
7515
7564
|
<!-- Show count badge only if count is > 0 -->
|
|
7516
7565
|
@if((tab.count ?? 0) > 0) {
|
|
7517
|
-
<Badge
|
|
7566
|
+
<Badge
|
|
7567
|
+
size="sm"
|
|
7568
|
+
[aria-label]="tab.count + ' ' + (tab.count === 1 ? ('navbarTabs.result' | transloco) : ('navbarTabs.results' | transloco))">
|
|
7569
|
+
{{ tab.count }}
|
|
7570
|
+
</Badge>
|
|
7518
7571
|
}
|
|
7519
7572
|
</div>
|
|
7520
7573
|
</Tab>
|
|
@@ -7554,9 +7607,9 @@ class NavbarTabsComponent {
|
|
|
7554
7607
|
</Menu>
|
|
7555
7608
|
</div>
|
|
7556
7609
|
}
|
|
7557
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: TabsComponent, selector: "tabs, Tabs", inputs: ["class"] }, { kind: "directive", type: TabsListComponent, selector: "tabs-list, TabsList", inputs: ["class", "variant", "size"] }, { kind: "directive", type: TabComponent, selector: "tab, Tab", inputs: ["class", "variant", "size", "noTruncate", "value", "active"], outputs: ["clicked"] }, { kind: "directive", type: OverflowManagerDirective, selector: "[overflowManager]", inputs: ["target", "margin", "direction", "reserveStop"], outputs: ["count"] }, { kind: "directive", type: OverflowItemDirective, selector: "[overflowItem]" }, { kind: "directive", type: OverflowStopDirective, selector: "[overflowStop]" }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size"] }, { kind: "component", type: EllipsisIcon, selector: "ellipsis-icon, EllipsisIcon, ellipsisicon", inputs: ["class", "orientation"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
7610
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: TabsComponent, selector: "tabs, Tabs", inputs: ["class"] }, { kind: "directive", type: TabsListComponent, selector: "tabs-list, TabsList", inputs: ["class", "variant", "size"] }, { kind: "directive", type: TabComponent, selector: "tab, Tab", inputs: ["class", "variant", "size", "noTruncate", "value", "active"], outputs: ["clicked"] }, { kind: "directive", type: OverflowManagerDirective, selector: "[overflowManager]", inputs: ["target", "margin", "direction", "reserveStop"], outputs: ["count"] }, { kind: "directive", type: OverflowItemDirective, selector: "[overflowItem]" }, { kind: "directive", type: OverflowStopDirective, selector: "[overflowStop]" }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size", "aria-label"] }, { kind: "component", type: EllipsisIcon, selector: "ellipsis-icon, EllipsisIcon, ellipsisicon", inputs: ["class", "orientation"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
7558
7611
|
}
|
|
7559
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7612
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NavbarTabsComponent, decorators: [{
|
|
7560
7613
|
type: Component,
|
|
7561
7614
|
args: [{
|
|
7562
7615
|
selector: "navbar-tabs",
|
|
@@ -7579,6 +7632,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
7579
7632
|
EllipsisIcon,
|
|
7580
7633
|
FaIconComponent
|
|
7581
7634
|
],
|
|
7635
|
+
providers: [provideTranslocoScope('navbar-tabs')],
|
|
7582
7636
|
template: `
|
|
7583
7637
|
<!-- do not display the tabs if there are no tabs -->
|
|
7584
7638
|
@if (nav.tabs().length > 0) {
|
|
@@ -7614,7 +7668,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
7614
7668
|
<span [class]="cn(!noTruncate() && 'truncate', !noTruncate() && tab.icon && '@max-[3rem]:w-0 @max-[3rem]:invisible')">{{ tab.display | syslang | transloco }}</span>
|
|
7615
7669
|
<!-- Show count badge only if count is > 0 -->
|
|
7616
7670
|
@if((tab.count ?? 0) > 0) {
|
|
7617
|
-
<Badge
|
|
7671
|
+
<Badge
|
|
7672
|
+
size="sm"
|
|
7673
|
+
[aria-label]="tab.count + ' ' + (tab.count === 1 ? ('navbarTabs.result' | transloco) : ('navbarTabs.results' | transloco))">
|
|
7674
|
+
{{ tab.count }}
|
|
7675
|
+
</Badge>
|
|
7618
7676
|
}
|
|
7619
7677
|
</div>
|
|
7620
7678
|
</Tab>
|
|
@@ -7665,8 +7723,8 @@ class SidebarNavComponent {
|
|
|
7665
7723
|
path = input("search", ...(ngDevMode ? [{ debugName: "path" }] : []));
|
|
7666
7724
|
showCount = input(false, ...(ngDevMode ? [{ debugName: "showCount", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
7667
7725
|
nav = injectRouteNavigation(this.path, this.showCount);
|
|
7668
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7669
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
7726
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SidebarNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7727
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SidebarNavComponent, isStandalone: true, selector: "sidebar-nav", inputs: { path: { classPropertyName: "path", publicName: "path", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
7670
7728
|
<sidebar-menu>
|
|
7671
7729
|
@for (tab of nav.tabs(); track tab.path) {
|
|
7672
7730
|
@let label = tab.display | syslang | transloco;
|
|
@@ -7688,7 +7746,7 @@ class SidebarNavComponent {
|
|
|
7688
7746
|
</sidebar-menu>
|
|
7689
7747
|
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "directive", type: SidebarMenuComponent, selector: "sidebar-menu", inputs: ["class"] }, { kind: "directive", type: SidebarMenuItemComponent, selector: "sidebar-menu-item", inputs: ["class"] }, { kind: "directive", type: SidebarMenuButtonComponent, selector: "sidebar-menu-button", inputs: ["isActive", "variant", "size", "class"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: TooltipDirective, selector: "[tooltip]", inputs: ["tooltip", "strategy", "tooltip-position", "tooltip-delay", "tooltip-duration", "tooltip-offset"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
7690
7748
|
}
|
|
7691
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7749
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SidebarNavComponent, decorators: [{
|
|
7692
7750
|
type: Component,
|
|
7693
7751
|
args: [{
|
|
7694
7752
|
selector: "sidebar-nav",
|
|
@@ -7729,8 +7787,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
7729
7787
|
}], propDecorators: { path: [{ type: i0.Input, args: [{ isSignal: true, alias: "path", required: false }] }], showCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCount", required: false }] }] } });
|
|
7730
7788
|
|
|
7731
7789
|
class NoResultComponent {
|
|
7732
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7733
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
7790
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NoResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7791
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: NoResultComponent, isStandalone: true, selector: "NoResult", host: { classAttribute: "p-4 flex flex-col gap-2 rounded-md" }, providers: [provideTranslocoScope("no-result")], ngImport: i0, template: `
|
|
7734
7792
|
<header class="flex items-center gap-2 text-xl font-semibold">
|
|
7735
7793
|
<frown-icon class="text-3xl" />
|
|
7736
7794
|
<p>{{ 'noResult.noResult' | transloco }}</p>
|
|
@@ -7743,7 +7801,7 @@ class NoResultComponent {
|
|
|
7743
7801
|
<p>{{ 'noResult.noResultAssistance' | transloco }}</p>
|
|
7744
7802
|
`, isInline: true, dependencies: [{ kind: "component", type: FrownIcon, selector: "frown-icon, FrownIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7745
7803
|
}
|
|
7746
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7804
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: NoResultComponent, decorators: [{
|
|
7747
7805
|
type: Component,
|
|
7748
7806
|
args: [{
|
|
7749
7807
|
selector: "NoResult",
|
|
@@ -7780,8 +7838,8 @@ class PreviewNavigator {
|
|
|
7780
7838
|
n = Math.max(1, Math.min(n, t));
|
|
7781
7839
|
this.preview.gotoPage(n);
|
|
7782
7840
|
}
|
|
7783
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7784
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
7841
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PreviewNavigator, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7842
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: PreviewNavigator, isStandalone: true, selector: "preview-navigator", host: { properties: { "class.invisible": "!total() || total() <= 1" } }, ngImport: i0, template: `
|
|
7785
7843
|
<button
|
|
7786
7844
|
variant="ghost"
|
|
7787
7845
|
[iconOnly]="true"
|
|
@@ -7838,7 +7896,7 @@ class PreviewNavigator {
|
|
|
7838
7896
|
</button>
|
|
7839
7897
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ChevronLeftIcon, selector: "chevron-left, ChevronLeft, chevronleft, chevron-left-icon, ChevronLeftIcon, chevronlefticon", inputs: ["class"] }, { kind: "component", type: ChevronsLeftIcon, selector: "chevrons-left, ChevronsLeft, chevronsleft, chevrons-left-icon, ChevronsLeftIcon, chevronslefticon", inputs: ["class"] }, { kind: "component", type: ChevronsRightIcon, selector: "chevrons-right, ChevronsRight, chevronsright, chevrons-right-icon, ChevronsRightIcon, chevronsrighticon", inputs: ["class"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }] });
|
|
7840
7898
|
}
|
|
7841
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7899
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: PreviewNavigator, decorators: [{
|
|
7842
7900
|
type: Component,
|
|
7843
7901
|
args: [{
|
|
7844
7902
|
selector: "preview-navigator",
|
|
@@ -7955,10 +8013,10 @@ class SortSelectorComponent {
|
|
|
7955
8013
|
this.onSort.emit(sort);
|
|
7956
8014
|
}
|
|
7957
8015
|
}
|
|
7958
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7959
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
8016
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SortSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8017
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SortSelectorComponent, isStandalone: true, selector: "sort-selector, sortselector, SortSelector", inputs: { result: { classPropertyName: "result", publicName: "result", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSort: "onSort" }, providers: [provideTranslocoScope('sort-selector')], viewQueries: [{ propertyName: "dropdown", first: true, predicate: DropdownComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<menu>\r\n <button\r\n tabindex=\"0\"\r\n variant=\"ghost\"\r\n [attr.title]=\"'sortSelector.selectSort' | transloco\">\r\n @let isSortDescending = sort()?.$isDesc ?? false;\r\n @if (isSortDescending) {\r\n <arrow-down-za-icon class=\"me-1\" />\r\n } @else {\r\n <arrow-up-az-icon class=\"me-1\" />\r\n }\r\n <span class=\"hidden min-w-10 truncate sm:inline\">{{\r\n sort()?.display | transloco\r\n }}</span>\r\n </button>\r\n\r\n <MenuContent [position]=\"position()\" class=\"min-w-max\">\r\n @if (sortOptions().length > 0) {\r\n @for (option of sortOptions(); track $index) {\r\n <menu-item\r\n (click)=\"onSortOptionClicked(option)\"\r\n class=\"justify-between\">\r\n <span>{{ option.display | transloco }}</span>\r\n @let isSortDescending = option.$isDesc ?? false;\r\n @if (isSortDescending) {\r\n <arrow-down-za-icon class=\"me-1\" />\r\n } @else {\r\n <arrow-up-az-icon class=\"me-1\" />\r\n }\r\n </menu-item>\r\n }\r\n }\r\n </MenuContent>\r\n</menu>\r\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ArrowUpAzIcon, selector: "arrow-up-az-icon, ArrowUpAzIcon", inputs: ["class"] }, { kind: "component", type: ArrowDownZaIcon, selector: "arrow-down-za-icon, ArrowDownZaIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7960
8018
|
}
|
|
7961
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8019
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SortSelectorComponent, decorators: [{
|
|
7962
8020
|
type: Component,
|
|
7963
8021
|
args: [{ selector: 'sort-selector, sortselector, SortSelector', standalone: true, imports: [TranslocoPipe, ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, ArrowUpAzIcon, ArrowDownZaIcon], providers: [provideTranslocoScope('sort-selector')], template: "<menu>\r\n <button\r\n tabindex=\"0\"\r\n variant=\"ghost\"\r\n [attr.title]=\"'sortSelector.selectSort' | transloco\">\r\n @let isSortDescending = sort()?.$isDesc ?? false;\r\n @if (isSortDescending) {\r\n <arrow-down-za-icon class=\"me-1\" />\r\n } @else {\r\n <arrow-up-az-icon class=\"me-1\" />\r\n }\r\n <span class=\"hidden min-w-10 truncate sm:inline\">{{\r\n sort()?.display | transloco\r\n }}</span>\r\n </button>\r\n\r\n <MenuContent [position]=\"position()\" class=\"min-w-max\">\r\n @if (sortOptions().length > 0) {\r\n @for (option of sortOptions(); track $index) {\r\n <menu-item\r\n (click)=\"onSortOptionClicked(option)\"\r\n class=\"justify-between\">\r\n <span>{{ option.display | transloco }}</span>\r\n @let isSortDescending = option.$isDesc ?? false;\r\n @if (isSortDescending) {\r\n <arrow-down-za-icon class=\"me-1\" />\r\n } @else {\r\n <arrow-up-az-icon class=\"me-1\" />\r\n }\r\n </menu-item>\r\n }\r\n }\r\n </MenuContent>\r\n</menu>\r\n" }]
|
|
7964
8022
|
}], propDecorators: { dropdown: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DropdownComponent), { isSignal: true }] }], result: [{ type: i0.Input, args: [{ isSignal: true, alias: "result", required: true }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], onSort: [{ type: i0.Output, args: ["onSort"] }] } });
|
|
@@ -7998,8 +8056,8 @@ class SponsoredResultsComponent {
|
|
|
7998
8056
|
},
|
|
7999
8057
|
defaultValue: [],
|
|
8000
8058
|
});
|
|
8001
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8002
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
8059
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SponsoredResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8060
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SponsoredResultsComponent, isStandalone: true, selector: "sponsored-results, SponsoredResults, sponsoredresults", inputs: { slice: { classPropertyName: "slice", publicName: "slice", isSignal: true, isRequired: false, transformFunction: null }, displayPromoted: { classPropertyName: "displayPromoted", publicName: "displayPromoted", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "list" } }, queries: [{ propertyName: "childElement", first: true, predicate: ChildMarkerDirective, descendants: true, isSignal: true }], ngImport: i0, template: ` @if (sponsoredResults.value().length) {
|
|
8003
8061
|
@for (link of sponsoredResults.value(); track $index) {
|
|
8004
8062
|
<li role="listitem" class="text-primary flex items-center gap-2 rounded px-3 py-2 font-bold">
|
|
8005
8063
|
<a href="{{ link.url }}" target="_blank" rel="noopener" title="{{ link.tooltip }}" class="result-link peer flex items-center gap-2 hover:underline">
|
|
@@ -8017,7 +8075,7 @@ class SponsoredResultsComponent {
|
|
|
8017
8075
|
}
|
|
8018
8076
|
}`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ArrowUpRightFromSquareIcon, selector: "arrow-up-right-from-square-icon, ArrowUpRightFromSquareIcon", inputs: ["class"] }] });
|
|
8019
8077
|
}
|
|
8020
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8078
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SponsoredResultsComponent, decorators: [{
|
|
8021
8079
|
type: Component,
|
|
8022
8080
|
args: [{
|
|
8023
8081
|
selector: 'sponsored-results, SponsoredResults, sponsoredresults',
|
|
@@ -8065,8 +8123,8 @@ class ThemeSelectorComponent {
|
|
|
8065
8123
|
theme = theme.name;
|
|
8066
8124
|
this.themeStore.setCurrentTheme(this.scope(), theme);
|
|
8067
8125
|
}
|
|
8068
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8069
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
8126
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ThemeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8127
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ThemeSelectorComponent, isStandalone: true, selector: "theme-selector", inputs: { scope: { classPropertyName: "scope", publicName: "scope", isSignal: true, isRequired: true, transformFunction: null }, showPrivate: { classPropertyName: "showPrivate", publicName: "showPrivate", isSignal: true, isRequired: false, transformFunction: null }, selectedTheme: { classPropertyName: "selectedTheme", publicName: "selectedTheme", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedTheme: "selectedThemeChange" }, ngImport: i0, template: `
|
|
8070
8128
|
<Menu>
|
|
8071
8129
|
<ng-content></ng-content>
|
|
8072
8130
|
|
|
@@ -8085,7 +8143,7 @@ class ThemeSelectorComponent {
|
|
|
8085
8143
|
</Menu>
|
|
8086
8144
|
`, isInline: true, styles: [""], dependencies: [{ kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }] });
|
|
8087
8145
|
}
|
|
8088
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ThemeSelectorComponent, decorators: [{
|
|
8089
8147
|
type: Component,
|
|
8090
8148
|
args: [{ selector: 'theme-selector', standalone: true, imports: [MenuComponent, NgStyle, MenuContentComponent], template: `
|
|
8091
8149
|
<Menu>
|
|
@@ -8125,8 +8183,8 @@ class ThemeToggleComponent {
|
|
|
8125
8183
|
return;
|
|
8126
8184
|
this.themeStore.setDarkMode(this.scope(), status);
|
|
8127
8185
|
}
|
|
8128
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8129
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
8186
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ThemeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8187
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ThemeToggleComponent, isStandalone: true, selector: "theme-toggle", inputs: { scope: { classPropertyName: "scope", publicName: "scope", isSignal: true, isRequired: true, transformFunction: null }, darkMode: { classPropertyName: "darkMode", publicName: "darkMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { darkMode: "darkModeChange" }, ngImport: i0, template: `
|
|
8130
8188
|
<label class="flex cursor-pointer select-none items-center gap-2">
|
|
8131
8189
|
@if (darkMode()) {
|
|
8132
8190
|
<toggle-right-icon class="text-primary" />
|
|
@@ -8140,7 +8198,7 @@ class ThemeToggleComponent {
|
|
|
8140
8198
|
</label>
|
|
8141
8199
|
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ToggleRightIcon, selector: "toggle-right-icon, ToggleRightIcon", inputs: ["class"] }, { kind: "component", type: ToggleLeftIcon, selector: "toggle-left-icon, ToggleLeftIcon", inputs: ["class"] }] });
|
|
8142
8200
|
}
|
|
8143
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8201
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ThemeToggleComponent, decorators: [{
|
|
8144
8202
|
type: Component,
|
|
8145
8203
|
args: [{ selector: 'theme-toggle', standalone: true, imports: [FormsModule, ToggleRightIcon, ToggleLeftIcon], template: `
|
|
8146
8204
|
<label class="flex cursor-pointer select-none items-center gap-2">
|
|
@@ -8168,8 +8226,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
8168
8226
|
* ```
|
|
8169
8227
|
*/
|
|
8170
8228
|
class SheetNavbarComponent {
|
|
8171
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8172
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
8229
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SheetNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8230
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: SheetNavbarComponent, isStandalone: true, selector: "SheetNavbar, sheetnavbar, sheet-navbar", ngImport: i0, template: `
|
|
8173
8231
|
<menu class="flex items-center gap-2 font-semibold">
|
|
8174
8232
|
<li>
|
|
8175
8233
|
<button variant="ghost" class="group" [attr.title]="'back' | transloco" sheetClose>
|
|
@@ -8186,7 +8244,7 @@ class SheetNavbarComponent {
|
|
|
8186
8244
|
</menu>
|
|
8187
8245
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: Separator, selector: "separator, Separator", inputs: ["class", "orientation"] }, { kind: "directive", type: SheetCloseDirective, selector: "[sheetClose]" }, { kind: "component", type: ArrowLeftIcon, selector: "arrow-left-icon, ArrowLeftIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8188
8246
|
}
|
|
8189
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SheetNavbarComponent, decorators: [{
|
|
8190
8248
|
type: Component,
|
|
8191
8249
|
args: [{
|
|
8192
8250
|
selector: "SheetNavbar, sheetnavbar, sheet-navbar",
|
|
@@ -8524,10 +8582,10 @@ class AdvancedFiltersComponent {
|
|
|
8524
8582
|
});
|
|
8525
8583
|
return res;
|
|
8526
8584
|
}
|
|
8527
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8528
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
8585
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8586
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AdvancedFiltersComponent, isStandalone: true, selector: "advanced-filters", host: { classAttribute: "contents" }, providers: [SyslangPipe, TranslocoPipe, provideTranslocoScope("drawers")], ngImport: i0, template: "<div class=\"flex h-full flex-col overflow-auto\">\n <sheet-navbar class=\"border-foreground/10 block border-b pb-2\">\n <button [attr.title]=\"'drawers.search' | transloco\" (click)=\"onSearch()\">\n {{ 'drawers.search' | transloco }}\n </button>\n </sheet-navbar>\n\n <div class=\"flex h-full grow flex-col overflow-auto p-4\">\n <section class=\"flex flex-col gap-4\" [formGroup]=\"form\">\n <!-- FIND IN -->\n <h1 class=\"text-xl font-bold\">{{ 'drawers.findInContent' | transloco }}</h1>\n <div class=\"flex items-center gap-4\" formGroupName=\"content\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInContent' | transloco }}</span>\n <select\n id=\"content-operator\"\n class=\"hover:outline-primary focus:outline-primary border-foreground/10 bg-background hover:bg-muted focus:bg-muted h-8 w-full rounded-md border px-2 hover:outline focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input\n [variant]=\"inputVariant()\"\n id=\"content-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('content.operator')\"\n formControlName=\"value\" />\n </div>\n @if (enableFieldedSearch()) {\n <div class=\"flex items-center gap-4\" formGroupName=\"title\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInTitle' | transloco }}</span>\n <select\n id=\"title-operator\"\n class=\"hover:outline-primary focus:outline-primary border-foreground/10 bg-background hover:bg-muted focus:bg-muted h-8 w-full rounded-md border px-2 hover:outline focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input id=\"title-value\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\" [placeholder]=\"getPlaceholder('title.operator')\" formControlName=\"value\" />\n </div>\n }\n\n <!-- TABS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.inScope' | transloco }} "{{ currentTab() }}"</h1>\n\n <Tabs>\n <TabsList variant=\"ghost\">\n @for (tab of tabs(); track $index) {\n <Tab class=\"w-fit\" [value]=\"tab.path\" [active]=\"tab.path === currentTab()\" (click)=\"onTabChange(tab.path)\">\n {{ tab.display | syslang | transloco }}\n </Tab>\n }\n </TabsList>\n </Tabs>\n\n <!-- FILTERS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.applyFilters' | transloco }}</h1>\n @for (filter of filters(); track $index) {\n <DropdownInput\n [suggestions]=\"suggestions()\"\n [selected]=\"getItems(filter.column)\"\n [label]=\"filter.display || filter.alias | syslang | transloco\"\n [placeholder]=\"'drawers.startTyping' | transloco\"\n [noResultLabel]=\"'drawers.noResult' | transloco\"\n (onFocus)=\"setFilterFocus($event, filter)\"\n (onKeyUp)=\"onInputTyping($event)\"\n (removeItem)=\"removeItem($event, filter)\"\n (addItem)=\"addItem($event, filter)\" />\n } @empty {\n {{ 'drawers.noFilters' | transloco }}\n }\n </section>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: DropdownInputComponent, selector: "dropdown-input, DropdownInput", inputs: ["label", "placeholder", "noResultLabel", "suggestions", "selected"], outputs: ["onFocus", "onKeyUp", "removeItem", "addItem"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: TabsComponent, selector: "tabs, Tabs", inputs: ["class"] }, { kind: "directive", type: TabComponent, selector: "tab, Tab", inputs: ["class", "variant", "size", "noTruncate", "value", "active"], outputs: ["clicked"] }, { kind: "directive", type: TabsListComponent, selector: "tabs-list, TabsList", inputs: ["class", "variant", "size"] }, { kind: "component", type: SheetNavbarComponent, selector: "SheetNavbar, sheetnavbar, sheet-navbar" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
8529
8587
|
}
|
|
8530
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8588
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedFiltersComponent, decorators: [{
|
|
8531
8589
|
type: Component,
|
|
8532
8590
|
args: [{ selector: "advanced-filters", standalone: true, imports: [
|
|
8533
8591
|
ReactiveFormsModule,
|
|
@@ -8563,8 +8621,8 @@ class AggregationDateCustomRangeComponent {
|
|
|
8563
8621
|
destroyRef.onDestroy(() => this.el.nativeElement.removeEventListener('changeDate', onChangeDate));
|
|
8564
8622
|
});
|
|
8565
8623
|
}
|
|
8566
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8567
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
8624
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationDateCustomRangeComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8625
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.25", type: AggregationDateCustomRangeComponent, isStandalone: true, selector: "aggregation-date-custom-range", inputs: { lang: { classPropertyName: "lang", publicName: "lang", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dateSelected: "dateSelected" }, viewQueries: [{ propertyName: "datepicker", first: true, predicate: DateRangePickerDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
8568
8626
|
<div
|
|
8569
8627
|
class="@container flex grow gap-1 p-1"
|
|
8570
8628
|
daterangepicker
|
|
@@ -8594,7 +8652,7 @@ class AggregationDateCustomRangeComponent {
|
|
|
8594
8652
|
</div>
|
|
8595
8653
|
`, isInline: true, dependencies: [{ kind: "directive", type: DateRangePickerDirective, selector: "[daterangepicker]", inputs: ["datepicker-title", "datepicker-autohide", "datepicker-clear", "datepicker-today", "datepicker-buttons", "datepicker-today-highlight", "datepicker-language", "datepicker-format", "datepicker-max", "datepicker-min", "datepicker-orientation", "datepicker-container"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8596
8654
|
}
|
|
8597
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8655
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationDateCustomRangeComponent, decorators: [{
|
|
8598
8656
|
type: Component,
|
|
8599
8657
|
args: [{
|
|
8600
8658
|
selector: "aggregation-date-custom-range",
|
|
@@ -8654,8 +8712,8 @@ class AggregationDateDualPickersComponent {
|
|
|
8654
8712
|
destroyRef.onDestroy(() => this.el.nativeElement.removeEventListener('changeDate', onChangeDate));
|
|
8655
8713
|
});
|
|
8656
8714
|
}
|
|
8657
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8658
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
8715
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationDateDualPickersComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8716
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.25", type: AggregationDateDualPickersComponent, isStandalone: true, selector: "aggregation-date-dual-pickers", inputs: { lang: { classPropertyName: "lang", publicName: "lang", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dateSelected: "dateSelected" }, viewQueries: [{ propertyName: "datepickerStart", first: true, predicate: ["datepickerStart"], descendants: true, isSignal: true }, { propertyName: "datepickerEnd", first: true, predicate: ["datepickerEnd"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
8659
8717
|
<div class="flex">
|
|
8660
8718
|
<div class="flex flex-col gap-1">
|
|
8661
8719
|
<span class="m-auto font-bold">{{ 'from' | transloco }}</span>
|
|
@@ -8676,7 +8734,7 @@ class AggregationDateDualPickersComponent {
|
|
|
8676
8734
|
</div>
|
|
8677
8735
|
`, isInline: true, dependencies: [{ kind: "directive", type: DatepickerDirective, selector: "[datepicker]", inputs: ["datepicker-title", "datepicker-autohide", "datepicker-clear", "datepicker-today", "datepicker-buttons", "datepicker-today-highlight", "datepicker-language", "datepicker-format", "datepicker-max", "datepicker-min"], exportAs: ["datepicker"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8678
8736
|
}
|
|
8679
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8737
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationDateDualPickersComponent, decorators: [{
|
|
8680
8738
|
type: Component,
|
|
8681
8739
|
args: [{
|
|
8682
8740
|
selector: "aggregation-date-dual-pickers",
|
|
@@ -8752,8 +8810,8 @@ class AggregationDateRangeDialogComponent {
|
|
|
8752
8810
|
}
|
|
8753
8811
|
this.dialog()?.close();
|
|
8754
8812
|
}
|
|
8755
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8756
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
8813
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationDateRangeDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8814
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AggregationDateRangeDialogComponent, isStandalone: true, selector: "aggregation-date-range-dialog", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, lang: { classPropertyName: "lang", publicName: "lang", isSignal: true, isRequired: false, transformFunction: null }, useDateRange: { classPropertyName: "useDateRange", publicName: "useDateRange", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { rangeSelected: "rangeSelected" }, viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }, { propertyName: "customRange", first: true, predicate: ["customRange"], descendants: true, isSignal: true }, { propertyName: "dualPickers", first: true, predicate: ["dualPickers"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
8757
8815
|
<div dialog #dialog="dialog">
|
|
8758
8816
|
<DialogContent [class]="cn(!useDateRange() && 'max-w-fit!')">
|
|
8759
8817
|
<DialogHeader>
|
|
@@ -8782,7 +8840,7 @@ class AggregationDateRangeDialogComponent {
|
|
|
8782
8840
|
</div>
|
|
8783
8841
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "component", type: AggregationDateCustomRangeComponent, selector: "aggregation-date-custom-range", inputs: ["lang", "min", "max"], outputs: ["dateSelected"] }, { kind: "component", type: AggregationDateDualPickersComponent, selector: "aggregation-date-dual-pickers", inputs: ["lang", "min", "max"], outputs: ["dateSelected"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8784
8842
|
}
|
|
8785
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8843
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationDateRangeDialogComponent, decorators: [{
|
|
8786
8844
|
type: Component,
|
|
8787
8845
|
args: [{
|
|
8788
8846
|
selector: "aggregation-date-range-dialog",
|
|
@@ -9258,10 +9316,10 @@ class AggregationDateComponent {
|
|
|
9258
9316
|
}
|
|
9259
9317
|
throw new Error("filters.filterInvalid");
|
|
9260
9318
|
}
|
|
9261
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9262
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
9319
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9320
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AggregationDateComponent, isStandalone: true, selector: "aggregation-date, AggregationDate, aggregationdate", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, showFiltersCount: { classPropertyName: "showFiltersCount", publicName: "showFiltersCount", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, displayEmptyDistributionIntervals: { classPropertyName: "displayEmptyDistributionIntervals", publicName: "displayEmptyDistributionIntervals", isSignal: true, isRequired: false, transformFunction: null }, searchText: { classPropertyName: "searchText", publicName: "searchText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect", onApply: "onApply", onClear: "onClear", searchText: "searchTextChange" }, host: { classAttribute: "@container" }, providers: [provideTranslocoScope("filters")], viewQueries: [{ propertyName: "dateRangeDialog", first: true, predicate: AggregationDateRangeDialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<details [attr.open]=\"expanded()\" [attr.name]=\"id()\" class=\"group space-y-2\">\r\n <summary\r\n [class.cursor-pointer]=\"collapsible()\"\r\n class=\"m-0 flex h-8 w-full items-center pl-1 font-semibold select-none\"\r\n (click)=\"onHeaderClick($event)\">\r\n <ng-content select=\"label\">\r\n @let icon = aggregation()?.icon;\r\n @if (icon) {\r\n <FaIcon [faClass]=\"icon\" class=\"mr-1 shrink-0\" />\r\n }\r\n <span class=\"grow\">{{\r\n aggregation()?.display | syslang | transloco\r\n }}</span>\r\n </ng-content>\r\n\r\n @if (hasFilters()) {\r\n <icon-button\r\n [attr.title]=\"'filters.clearFilters' | transloco\"\r\n [attr.aria-label]=\"'filters.clearFilters' | transloco\"\r\n (click)=\"clear()\"\r\n (keydown.enter)=\"clear()\">\r\n <filter-x-icon />\r\n <span class=\"sr-only\">{{ \"filters.clearFilters\" | transloco }}</span>\r\n </icon-button>\r\n }\r\n\r\n @if (selection() && validSelection()) {\r\n <icon-button\r\n [attr.title]=\"'filters.applyFilters' | transloco\"\r\n [attr.aria-label]=\"'filters.applyFilters' | transloco\"\r\n (click)=\"apply()\"\r\n (keydown.enter)=\"apply()\">\r\n <filter-icon />\r\n <span class=\"sr-only\">{{ \"filters.applyFilters\" | transloco }}</span>\r\n </icon-button>\r\n }\r\n @if (collapsible()) {\r\n <icon-button\r\n title=\"Open/Close\"\r\n class=\"cursor-pointer [&_svg]:transition-transform [&_svg]:duration-150 group-open:[&_svg]:rotate-90\">\r\n <chevronright />\r\n </icon-button>\r\n }\r\n </summary>\r\n\r\n <!-- content wrapper -->\r\n <form [formGroup]=\"form\">\r\n <ul\r\n class=\"scrollbar-thin flex max-h-[var(--scroll-height,20rem)] snap-y snap-start flex-col gap-1 overflow-auto pt-2\"\r\n role=\"list\">\r\n @for (option of dateOptions(); track $index) {\r\n <li\r\n role=\"listitem\"\r\n tabindex=\"0\"\r\n (click)=\"radio.click()\"\r\n [attr.aria-label]=\"option.display | syslang | transloco\"\r\n [class]=\"\r\n cn(\r\n 'flex p-0 px-2 leading-7',\r\n form.get('option')?.value === option.display && 'bg-accent',\r\n option.hidden && 'hidden',\r\n option.disabled && 'disabled pointer-events-none text-neutral-300'\r\n )\r\n \"\r\n [attr.aria-hidden]=\"option.disabled\">\r\n <input\r\n #radio\r\n type=\"radio\"\r\n formControlName=\"option\"\r\n id=\"date-filter-{{ option.display }}\"\r\n [attr.disabled]=\"option.disabled ? true : null\"\r\n [attr.aria-disabled]=\"option.disabled\"\r\n (click)=\"select()\"\r\n value=\"{{ option.display }}\" />\r\n\r\n <label\r\n for=\"date-filter-{{ option.display }}\"\r\n class=\"grow cursor-pointer p-1\">\r\n {{ option.display | syslang | transloco }}\r\n </label>\r\n </li>\r\n }\r\n\r\n @if (allowCustomRange) {\r\n <li\r\n role=\"listitem\"\r\n aria-label=\"open date range picker\"\r\n class=\"flex px-2 leading-7\"\r\n [class.select]=\"form.get('option')?.value === 'custom-range'\">\r\n <input\r\n type=\"radio\"\r\n formControlName=\"option\"\r\n id=\"date-filter-range-dialog\"\r\n value=\"custom-range\"\r\n (click)=\"select()\" />\r\n <div\r\n class=\"@container flex grow justify-end gap-1 p-1 @max-[340px]:flex-wrap\">\r\n <div class=\"flex gap-1\">\r\n <label for=\"datepicker-range-start\" class=\"min-w-10 truncate\">{{\r\n \"filters.from\" | transloco\r\n }}</label>\r\n <input\r\n id=\"datepicker-range-start\"\r\n name=\"start\"\r\n type=\"text\"\r\n readonly\r\n class=\"h-8 max-w-[13ch] min-w-[13ch]\"\r\n [value]=\"customRangeFrom()\"\r\n (click)=\"selectAndOpenDialog()\" />\r\n </div>\r\n <div class=\"flex gap-1\">\r\n <label\r\n for=\"datepicker-range-end\"\r\n class=\"min-w-10 truncate text-right\"\r\n >{{ \"filters.to\" | transloco }}</label\r\n >\r\n <input\r\n id=\"datepicker-range-end\"\r\n name=\"end\"\r\n type=\"text\"\r\n readonly\r\n class=\"h-8 max-w-[13ch] min-w-[13ch]\"\r\n [value]=\"customRangeTo()\"\r\n (click)=\"selectAndOpenDialog()\" />\r\n </div>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n </form>\r\n</details>\r\n\r\n<aggregation-date-range-dialog\r\n [lang]=\"lang()\"\r\n [useDateRange]=\"false\"\r\n [min]=\"form.get('customRange.from')?.value || undefined\"\r\n [max]=\"form.get('customRange.to')?.value || undefined\"\r\n (rangeSelected)=\"onRangeSelected($event)\" />\r\n", styles: [":host{display:block;min-width:200px}ul[role=list]{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: AggregationDateRangeDialogComponent, selector: "aggregation-date-range-dialog", inputs: ["min", "max", "lang", "useDateRange"], outputs: ["rangeSelected"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "component", type: FilterIcon, selector: "filter-icon, FilterIcon", inputs: ["class"] }, { kind: "component", type: FilterXIcon, selector: "filter-x-icon, FilterXIcon", inputs: ["class"] }, { kind: "directive", type: IconButtonComponent, selector: "button[icon-button], icon-button, IconButton", inputs: ["class", "size"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
9263
9321
|
}
|
|
9264
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationDateComponent, decorators: [{
|
|
9265
9323
|
type: Component,
|
|
9266
9324
|
args: [{ selector: "aggregation-date, AggregationDate, aggregationdate", standalone: true, providers: [provideTranslocoScope("filters")], imports: [
|
|
9267
9325
|
InputComponent,
|
|
@@ -9286,10 +9344,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
9286
9344
|
* @deprecated since version 4. Use `AggregationDateComponent` instead.
|
|
9287
9345
|
*/
|
|
9288
9346
|
class DateComponent extends AggregationDateComponent {
|
|
9289
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9290
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
9347
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
9348
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DateComponent, isStandalone: true, selector: "date-filter,DateFilter", host: { classAttribute: "@container" }, providers: [provideTranslocoScope("filters")], usesInheritance: true, ngImport: i0, template: "<details [attr.open]=\"expanded()\" [attr.name]=\"id()\" class=\"group space-y-2\">\r\n <summary\r\n [class.cursor-pointer]=\"collapsible()\"\r\n class=\"m-0 flex h-8 w-full items-center pl-1 font-semibold select-none\"\r\n (click)=\"onHeaderClick($event)\">\r\n <ng-content select=\"label\">\r\n @let icon = aggregation()?.icon;\r\n @if (icon) {\r\n <FaIcon [faClass]=\"icon\" class=\"mr-1 shrink-0\" />\r\n }\r\n <span class=\"grow\">{{\r\n aggregation()?.display | syslang | transloco\r\n }}</span>\r\n </ng-content>\r\n\r\n @if (hasFilters()) {\r\n <icon-button\r\n [attr.title]=\"'filters.clearFilters' | transloco\"\r\n [attr.aria-label]=\"'filters.clearFilters' | transloco\"\r\n (click)=\"clear()\"\r\n (keydown.enter)=\"clear()\">\r\n <filter-x-icon />\r\n <span class=\"sr-only\">{{ \"filters.clearFilters\" | transloco }}</span>\r\n </icon-button>\r\n }\r\n\r\n @if (selection() && validSelection()) {\r\n <icon-button\r\n [attr.title]=\"'filters.applyFilters' | transloco\"\r\n [attr.aria-label]=\"'filters.applyFilters' | transloco\"\r\n (click)=\"apply()\"\r\n (keydown.enter)=\"apply()\">\r\n <filter-icon />\r\n <span class=\"sr-only\">{{ \"filters.applyFilters\" | transloco }}</span>\r\n </icon-button>\r\n }\r\n @if (collapsible()) {\r\n <icon-button\r\n title=\"Open/Close\"\r\n class=\"cursor-pointer [&_svg]:transition-transform [&_svg]:duration-150 group-open:[&_svg]:rotate-90\">\r\n <chevronright />\r\n </icon-button>\r\n }\r\n </summary>\r\n\r\n <!-- content wrapper -->\r\n <form [formGroup]=\"form\">\r\n <ul\r\n class=\"scrollbar-thin flex max-h-[var(--scroll-height,20rem)] snap-y snap-start flex-col gap-1 overflow-auto pt-2\"\r\n role=\"list\">\r\n @for (option of dateOptions(); track $index) {\r\n <li\r\n role=\"listitem\"\r\n tabindex=\"0\"\r\n (click)=\"radio.click()\"\r\n [attr.aria-label]=\"option.display | syslang | transloco\"\r\n [class]=\"\r\n cn(\r\n 'flex p-0 px-2 leading-7',\r\n form.get('option')?.value === option.display && 'bg-accent',\r\n option.hidden && 'hidden',\r\n option.disabled && 'disabled pointer-events-none text-neutral-300'\r\n )\r\n \"\r\n [attr.aria-hidden]=\"option.disabled\">\r\n <input\r\n #radio\r\n type=\"radio\"\r\n formControlName=\"option\"\r\n id=\"date-filter-{{ option.display }}\"\r\n [attr.disabled]=\"option.disabled ? true : null\"\r\n [attr.aria-disabled]=\"option.disabled\"\r\n (click)=\"select()\"\r\n value=\"{{ option.display }}\" />\r\n\r\n <label\r\n for=\"date-filter-{{ option.display }}\"\r\n class=\"grow cursor-pointer p-1\">\r\n {{ option.display | syslang | transloco }}\r\n </label>\r\n </li>\r\n }\r\n\r\n @if (allowCustomRange) {\r\n <li\r\n role=\"listitem\"\r\n aria-label=\"open date range picker\"\r\n class=\"flex px-2 leading-7\"\r\n [class.select]=\"form.get('option')?.value === 'custom-range'\">\r\n <input\r\n type=\"radio\"\r\n formControlName=\"option\"\r\n id=\"date-filter-range-dialog\"\r\n value=\"custom-range\"\r\n (click)=\"select()\" />\r\n <div\r\n class=\"@container flex grow justify-end gap-1 p-1 @max-[340px]:flex-wrap\">\r\n <div class=\"flex gap-1\">\r\n <label for=\"datepicker-range-start\" class=\"min-w-10 truncate\">{{\r\n \"filters.from\" | transloco\r\n }}</label>\r\n <input\r\n id=\"datepicker-range-start\"\r\n name=\"start\"\r\n type=\"text\"\r\n readonly\r\n class=\"h-8 max-w-[13ch] min-w-[13ch]\"\r\n [value]=\"customRangeFrom()\"\r\n (click)=\"selectAndOpenDialog()\" />\r\n </div>\r\n <div class=\"flex gap-1\">\r\n <label\r\n for=\"datepicker-range-end\"\r\n class=\"min-w-10 truncate text-right\"\r\n >{{ \"filters.to\" | transloco }}</label\r\n >\r\n <input\r\n id=\"datepicker-range-end\"\r\n name=\"end\"\r\n type=\"text\"\r\n readonly\r\n class=\"h-8 max-w-[13ch] min-w-[13ch]\"\r\n [value]=\"customRangeTo()\"\r\n (click)=\"selectAndOpenDialog()\" />\r\n </div>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n </form>\r\n</details>\r\n\r\n<aggregation-date-range-dialog\r\n [lang]=\"lang()\"\r\n [useDateRange]=\"false\"\r\n [min]=\"form.get('customRange.from')?.value || undefined\"\r\n [max]=\"form.get('customRange.to')?.value || undefined\"\r\n (rangeSelected)=\"onRangeSelected($event)\" />\r\n", styles: [":host{display:block;min-width:200px}ul[role=list]{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: IconButtonComponent, selector: "button[icon-button], icon-button, IconButton", inputs: ["class", "size"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: AggregationDateRangeDialogComponent, selector: "aggregation-date-range-dialog", inputs: ["min", "max", "lang", "useDateRange"], outputs: ["rangeSelected"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "component", type: FilterIcon, selector: "filter-icon, FilterIcon", inputs: ["class"] }, { kind: "component", type: FilterXIcon, selector: "filter-x-icon, FilterXIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
9291
9349
|
}
|
|
9292
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DateComponent, decorators: [{
|
|
9293
9351
|
type: Component,
|
|
9294
9352
|
args: [{ selector: "date-filter,DateFilter", standalone: true, providers: [provideTranslocoScope("filters")], imports: [
|
|
9295
9353
|
IconButtonComponent,
|
|
@@ -9375,8 +9433,8 @@ class ArticleEntities {
|
|
|
9375
9433
|
navigatePrev(entity, data) {
|
|
9376
9434
|
this.navigate(entity, data, "prev");
|
|
9377
9435
|
}
|
|
9378
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9379
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
9436
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ArticleEntities, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9437
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ArticleEntities, isStandalone: true, selector: "article-entities,ArticleEntities,articleentities", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
9380
9438
|
<details class="group/parent" name="advanced-search-panels">
|
|
9381
9439
|
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
9382
9440
|
<p class="flex items-baseline gap-2 font-semibold capitalize">
|
|
@@ -9433,7 +9491,7 @@ class ArticleEntities {
|
|
|
9433
9491
|
</ng-template>
|
|
9434
9492
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: ChevronLeftIcon, selector: "chevron-left, ChevronLeft, chevronleft, chevron-left-icon, ChevronLeftIcon, chevronlefticon", inputs: ["class"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "component", type: HighlighterIcon, selector: "highlighter-icon, HighlighterIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9435
9493
|
}
|
|
9436
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9494
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ArticleEntities, decorators: [{
|
|
9437
9495
|
type: Component,
|
|
9438
9496
|
args: [{
|
|
9439
9497
|
selector: "article-entities,ArticleEntities,articleentities",
|
|
@@ -9522,8 +9580,8 @@ class ArticleExtracts {
|
|
|
9522
9580
|
this.previewService.events.set("scrollTo");
|
|
9523
9581
|
this.previewService.sendMessage({ action: "select", id: `${category}_${index}`, usePassageHighlighter });
|
|
9524
9582
|
}
|
|
9525
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9526
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
9583
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ArticleExtracts, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9584
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ArticleExtracts, isStandalone: true, selector: "article-extracts, ArticleExtracts, articleextracts", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
9527
9585
|
<details class="group" name="advanced-search-panels" open>
|
|
9528
9586
|
<summary [class]="cn('sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3', '')">
|
|
9529
9587
|
<p class="flex items-baseline gap-2 font-semibold">
|
|
@@ -9552,7 +9610,7 @@ class ArticleExtracts {
|
|
|
9552
9610
|
</details>
|
|
9553
9611
|
`, isInline: true, dependencies: [{ kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: TagsIcon, selector: "tags-icon, TagsIcon", inputs: ["class"] }, { kind: "component", type: SpinnerIcon, selector: "spinner-icon, SpinnerIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9554
9612
|
}
|
|
9555
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9613
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ArticleExtracts, decorators: [{
|
|
9556
9614
|
type: Component,
|
|
9557
9615
|
args: [{
|
|
9558
9616
|
selector: "article-extracts, ArticleExtracts, articleextracts",
|
|
@@ -9598,8 +9656,8 @@ class ArticleLabels {
|
|
|
9598
9656
|
const privateLabels = articleRecord[this.labels.private];
|
|
9599
9657
|
return (publicLabels && publicLabels.length > 0) || (privateLabels && privateLabels.length > 0);
|
|
9600
9658
|
}, ...(ngDevMode ? [{ debugName: "hasLabels" }] : []));
|
|
9601
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9602
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
9659
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ArticleLabels, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9660
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ArticleLabels, isStandalone: true, selector: "article-labels, ArticleLabels, articlelabels", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
9603
9661
|
@if (hasLabels()) {
|
|
9604
9662
|
<details class="group" name="advanced-search-panels">
|
|
9605
9663
|
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
@@ -9626,7 +9684,7 @@ class ArticleLabels {
|
|
|
9626
9684
|
}
|
|
9627
9685
|
`, isInline: true, dependencies: [{ kind: "component", type: MetadataComponent, selector: "Metadata, metadata", inputs: ["class", "variant", "metadata", "article", "limit"], outputs: ["click"], exportAs: ["metadata"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: TagsIcon, selector: "tags-icon, TagsIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9628
9686
|
}
|
|
9629
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9687
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ArticleLabels, decorators: [{
|
|
9630
9688
|
type: Component,
|
|
9631
9689
|
args: [{
|
|
9632
9690
|
selector: "article-labels, ArticleLabels, articlelabels",
|
|
@@ -9683,8 +9741,8 @@ class ArticleSimilarDocuments {
|
|
|
9683
9741
|
}
|
|
9684
9742
|
return [];
|
|
9685
9743
|
}, ...(ngDevMode ? [{ debugName: "similarDocuments" }] : []));
|
|
9686
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9687
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
9744
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ArticleSimilarDocuments, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9745
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ArticleSimilarDocuments, isStandalone: true, selector: "article-similar-documents, ArticleSimilarDocuments, articlesimilardocuments", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, strategy: { classPropertyName: "strategy", publicName: "strategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, ngImport: i0, template: `
|
|
9688
9746
|
@if (similarDocuments().length > 0) {
|
|
9689
9747
|
<details class="group" name="advanced-search-panels">
|
|
9690
9748
|
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
@@ -9713,7 +9771,7 @@ class ArticleSimilarDocuments {
|
|
|
9713
9771
|
}
|
|
9714
9772
|
`, isInline: true, dependencies: [{ kind: "component", type: SourceComponent, selector: "source, Source", inputs: ["collection", "connector"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "directive", type: SelectArticleDirective, selector: "[selectArticle]", inputs: ["article", "strategy", "redirectUrl"], outputs: ["selected"] }, { kind: "component", type: TagsIcon, selector: "tags-icon, TagsIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9715
9773
|
}
|
|
9716
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9774
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ArticleSimilarDocuments, decorators: [{
|
|
9717
9775
|
type: Component,
|
|
9718
9776
|
args: [{
|
|
9719
9777
|
selector: "article-similar-documents, ArticleSimilarDocuments, articlesimilardocuments",
|
|
@@ -9780,10 +9838,10 @@ class AdvancedSearch {
|
|
|
9780
9838
|
clearInput() {
|
|
9781
9839
|
this.queryText.set("");
|
|
9782
9840
|
}
|
|
9783
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9784
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
9841
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedSearch, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9842
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AdvancedSearch, isStandalone: true, selector: "advanced-search", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, previewStrategy: { classPropertyName: "previewStrategy", publicName: "previewStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, providers: [provideTranslocoScope("drawers")], ngImport: i0, template: "@if (article()) {\r\n <div\r\n [class]=\"\r\n cn(\r\n 'scroll-stable flex flex-col overflow-x-hidden overflow-y-auto pr-3 pb-6 pl-6',\r\n '[&_details]:border-muted-foreground/18 [&_details]:border-b',\r\n '[&_details>summary]:bg-menu [&_details_details]:last:border-b-0',\r\n '[&_details>summary>i>svg]:transition-transform [&_details>summary>i>svg]:duration-300',\r\n '[&>details>summary>i>svg]:group-open/parent:rotate-180'\r\n )\r\n \">\r\n <section class=\"mt-6 mb-4 flex w-full flex-col gap-6\">\r\n <header\r\n id=\"panel-control\"\r\n class=\"focus-within:outline-primary not-focus-within:hover:outline-muted-foreground group flex rounded-2xl focus-within:outline hover:outline\">\r\n <div\r\n class=\"inline-flex grow items-center rounded-s-lg rounded-e-none ps-3\">\r\n <input\r\n id=\"advanced-search-input\"\r\n type=\"search\"\r\n class=\"w-2/3 grow focus:outline-none\"\r\n autocomplete=\"off\"\r\n spellcheck=\"false\"\r\n [attr.placeholder]=\"'drawers.inputPlaceholder' | transloco\"\r\n [attr.aria-label]=\"'drawers.inputPlaceholder' | transloco\"\r\n [ngModel]=\"queryText()\"\r\n (ngModelChange)=\"queryText.set($event)\"\r\n (keydown.enter)=\"executeSearch()\" />\r\n\r\n @if (queryText() !== \"\") {\r\n <button\r\n variant=\"icon\"\r\n size=\"xs\"\r\n [attr.title]=\"'clear' | transloco\"\r\n [attr.aria-label]=\"'clear' | transloco\"\r\n (click)=\"clearInput()\"\r\n (keydown.enter)=\"clearInput()\">\r\n <xmark-icon />\r\n <span class=\"sr-only\">{{ \"clear\" | transloco }}</span>\r\n </button>\r\n }\r\n </div>\r\n\r\n <button\r\n class=\"size-8 rounded-s-none rounded-e-lg\"\r\n [disabled]=\"queryText() === '' || null\"\r\n [attr.title]=\"'search' | transloco\"\r\n [attr.aria-label]=\"'search' | transloco\"\r\n (click)=\"executeSearch()\">\r\n <magnifying-glass-icon />\r\n <span class=\"sr-only\">{{ \"search\" | transloco }}</span>\r\n </button>\r\n </header>\r\n </section>\r\n\r\n <!-- the same name is used everywhere to simulate an accordion -->\r\n <!-- extracts -->\r\n <article-extracts [article]=\"article()\" />\r\n\r\n <!-- labels -->\r\n <article-labels [article]=\"article()\" />\r\n\r\n <!-- entities -->\r\n <article-entities [article]=\"article()\" />\r\n\r\n <!-- similar documents -->\r\n <article-similar-documents\r\n [article]=\"article()\"\r\n [strategy]=\"previewStrategy()\"\r\n (selected)=\"selected.emit($event)\" />\r\n </div>\r\n}\r\n", styles: [":host{--panel-max-height: none}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: ArticleExtracts, selector: "article-extracts, ArticleExtracts, articleextracts", inputs: ["article"] }, { kind: "component", type: ArticleEntities, selector: "article-entities,ArticleEntities,articleentities", inputs: ["article"] }, { kind: "component", type: ArticleLabels, selector: "article-labels, ArticleLabels, articlelabels", inputs: ["article"] }, { kind: "component", type: ArticleSimilarDocuments, selector: "article-similar-documents, ArticleSimilarDocuments, articlesimilardocuments", inputs: ["article", "strategy"], outputs: ["selected"] }, { kind: "component", type: XMarkIcon, selector: "XMarkIcon, xmark-icon, x-mark-icon", inputs: ["class"] }, { kind: "component", type: MagnifyingGlassIcon, selector: "magnifying-glass-icon, MagnifyingGlassIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9785
9843
|
}
|
|
9786
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9844
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedSearch, decorators: [{
|
|
9787
9845
|
type: Component,
|
|
9788
9846
|
args: [{ selector: "advanced-search", standalone: true, providers: [provideTranslocoScope("drawers")], imports: [
|
|
9789
9847
|
FormsModule,
|
|
@@ -9953,8 +10011,8 @@ class AlertDialog {
|
|
|
9953
10011
|
this.queryParamsStore.patch({ text: q.text, tab: q.tab, basket: q.basket, sort: q.sort, filters, name: q.name });
|
|
9954
10012
|
this.dialog()?.close();
|
|
9955
10013
|
}
|
|
9956
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9957
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10014
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AlertDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10015
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AlertDialog, isStandalone: true, selector: "alert-dialog, alertdialog, AlertDialog", outputs: { closed: "closed" }, providers: [provideTranslocoScope("alerts")], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
9958
10016
|
<dialog #dialog>
|
|
9959
10017
|
<DialogContent class="sm:max-w-[520px]">
|
|
9960
10018
|
<DialogHeader>
|
|
@@ -10068,7 +10126,7 @@ class AlertDialog {
|
|
|
10068
10126
|
</dialog>
|
|
10069
10127
|
`, isInline: true, styles: [".weekdays-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: LoadingCircleIcon, selector: "loading-circle, LoadingCircle, loadingcircle, loading-circle-icon, LoadingCircleIcon, loadingcircleicon", inputs: ["class"] }, { kind: "component", type: CircleCheckIcon, selector: "circle-check, CircleCheck, circlecheck, circle-check-icon, CircleCheckIcon, circlecheckicon", inputs: ["class"] }, { kind: "directive", type: SelectOptionDirective, selector: "option", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10070
10128
|
}
|
|
10071
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AlertDialog, decorators: [{
|
|
10072
10130
|
type: Component,
|
|
10073
10131
|
args: [{ selector: "alert-dialog, alertdialog, AlertDialog", standalone: true, imports: [
|
|
10074
10132
|
FormsModule,
|
|
@@ -10241,10 +10299,10 @@ class AlertsComponent {
|
|
|
10241
10299
|
}
|
|
10242
10300
|
this.tmpAlerts.splice(drop.currentIndex, 0, this.tmpAlerts.splice(drop.previousIndex, 1)[0]);
|
|
10243
10301
|
}
|
|
10244
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10245
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10302
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AlertsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10303
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AlertsComponent, isStandalone: true, selector: "Alerts", providers: [provideTranslocoScope('alerts')], viewQueries: [{ propertyName: "alertFormDialog", first: true, predicate: AlertDialog, descendants: true, isSignal: true }], ngImport: i0, template: "<ul\r\n role=\"list\"\r\n class=\"flex min-w-80 flex-col p-2\"\r\n cdkDropList\r\n [cdkDropListData]=\"tmpAlerts\"\r\n [cdkDropListDisabled]=\"!reordering()\"\r\n (cdkDropListDropped)=\"dropped($event)\">\r\n @if (floating) {\r\n <label class=\"text-xl font-bold\">{{ \"alerts.label\" | transloco }}</label>\r\n <Separator />\r\n }\r\n @for (alert of tmpAlerts; track $index) {\r\n <li\r\n role=\"listitem\"\r\n class=\"group h-10\"\r\n tabindex=\"0\"\r\n cdkDrag\r\n (click)=\"onClick($index)\"\r\n (keydown.enter)=\"onClick($index)\">\r\n <bell-icon class=\"shrink-0\" />\r\n <p class=\"line-clamp-1\">{{ alert.name }}</p>\r\n @if (!reordering()) {\r\n @let openBookmark = \"bookmarks.openBookmark\" | transloco;\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n title=\"{{ openBookmark }}\"\r\n class=\"text-destructive ms-auto group-hover:visible\"\r\n [attr.title]=\"openBookmark\"\r\n [attr.aria-label]=\"openBookmark\"\r\n (click)=\"deleteAlert($event, $index)\">\r\n <TrashIcon />\r\n </button>\r\n } @else {\r\n <bars-icon class=\"ms-auto\" />\r\n }\r\n </li>\r\n } @empty {\r\n <span class=\"py-4 text-center text-neutral-500\">\r\n {{ \"alerts.noAlerts\" | transloco }}\r\n </span>\r\n }\r\n</ul>\r\n<div class=\"flex flex-col gap-2 p-2\">\r\n <button\r\n variant=\"outline\"\r\n class=\"w-full\"\r\n tabindex=\"0\"\r\n [attr.title]=\"'alerts.manageAlerts' | transloco\"\r\n [disabled]=\"!alerts().length\"\r\n (click)=\"reorder()\">\r\n {{ (reordering() ? \"save\" : \"alerts.manageAlerts\") | transloco }}\r\n </button>\r\n <button\r\n class=\"w-full\"\r\n [attr.title]=\"'alerts.createAlert' | transloco\"\r\n (click)=\"createAlert()\">\r\n {{ \"alerts.createAlert\" | transloco }}\r\n </button>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: Separator, selector: "separator, Separator", inputs: ["class", "orientation"] }, { kind: "component", type: BellIcon, selector: "bell-icon, BellIcon", inputs: ["class"] }, { kind: "component", type: TrashIcon, selector: "trash-icon, TrashIcon", inputs: ["class"] }, { kind: "component", type: BarsIcon, selector: "bars-icon, BarsIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10246
10304
|
}
|
|
10247
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10305
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AlertsComponent, decorators: [{
|
|
10248
10306
|
type: Component,
|
|
10249
10307
|
args: [{ selector: 'Alerts', standalone: true, imports: [TranslocoPipe, ButtonComponent, ListItemComponent, DragDropModule, Separator, BellIcon, TrashIcon, BarsIcon], providers: [provideTranslocoScope('alerts')], template: "<ul\r\n role=\"list\"\r\n class=\"flex min-w-80 flex-col p-2\"\r\n cdkDropList\r\n [cdkDropListData]=\"tmpAlerts\"\r\n [cdkDropListDisabled]=\"!reordering()\"\r\n (cdkDropListDropped)=\"dropped($event)\">\r\n @if (floating) {\r\n <label class=\"text-xl font-bold\">{{ \"alerts.label\" | transloco }}</label>\r\n <Separator />\r\n }\r\n @for (alert of tmpAlerts; track $index) {\r\n <li\r\n role=\"listitem\"\r\n class=\"group h-10\"\r\n tabindex=\"0\"\r\n cdkDrag\r\n (click)=\"onClick($index)\"\r\n (keydown.enter)=\"onClick($index)\">\r\n <bell-icon class=\"shrink-0\" />\r\n <p class=\"line-clamp-1\">{{ alert.name }}</p>\r\n @if (!reordering()) {\r\n @let openBookmark = \"bookmarks.openBookmark\" | transloco;\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n title=\"{{ openBookmark }}\"\r\n class=\"text-destructive ms-auto group-hover:visible\"\r\n [attr.title]=\"openBookmark\"\r\n [attr.aria-label]=\"openBookmark\"\r\n (click)=\"deleteAlert($event, $index)\">\r\n <TrashIcon />\r\n </button>\r\n } @else {\r\n <bars-icon class=\"ms-auto\" />\r\n }\r\n </li>\r\n } @empty {\r\n <span class=\"py-4 text-center text-neutral-500\">\r\n {{ \"alerts.noAlerts\" | transloco }}\r\n </span>\r\n }\r\n</ul>\r\n<div class=\"flex flex-col gap-2 p-2\">\r\n <button\r\n variant=\"outline\"\r\n class=\"w-full\"\r\n tabindex=\"0\"\r\n [attr.title]=\"'alerts.manageAlerts' | transloco\"\r\n [disabled]=\"!alerts().length\"\r\n (click)=\"reorder()\">\r\n {{ (reordering() ? \"save\" : \"alerts.manageAlerts\") | transloco }}\r\n </button>\r\n <button\r\n class=\"w-full\"\r\n [attr.title]=\"'alerts.createAlert' | transloco\"\r\n (click)=\"createAlert()\">\r\n {{ \"alerts.createAlert\" | transloco }}\r\n </button>\r\n</div>\r\n" }]
|
|
10250
10308
|
}], ctorParameters: () => [], propDecorators: { alertFormDialog: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AlertDialog), { isSignal: true }] }] } });
|
|
@@ -10362,8 +10420,8 @@ class ChangePasswordComponent {
|
|
|
10362
10420
|
this.location.back();
|
|
10363
10421
|
}
|
|
10364
10422
|
}
|
|
10365
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10366
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10423
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChangePasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10424
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ChangePasswordComponent, isStandalone: true, selector: "change-password, ChangePassword, changepassword", inputs: { username: { classPropertyName: "username", publicName: "username", isSignal: true, isRequired: false, transformFunction: null }, alert: { classPropertyName: "alert", publicName: "alert", isSignal: true, isRequired: false, transformFunction: null }, redirectAfterSuccess: { classPropertyName: "redirectAfterSuccess", publicName: "redirectAfterSuccess", isSignal: true, isRequired: false, transformFunction: null }, redirectAfterCancel: { classPropertyName: "redirectAfterCancel", publicName: "redirectAfterCancel", isSignal: true, isRequired: false, transformFunction: null }, currentPassword: { classPropertyName: "currentPassword", publicName: "currentPassword", isSignal: true, isRequired: false, transformFunction: null }, newPassword: { classPropertyName: "newPassword", publicName: "newPassword", isSignal: true, isRequired: false, transformFunction: null }, confirmPassword: { classPropertyName: "confirmPassword", publicName: "confirmPassword", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { success: "success", cancel: "cancel", currentPassword: "currentPasswordChange", newPassword: "newPasswordChange", confirmPassword: "confirmPasswordChange" }, providers: [provideTranslocoScope("login")], ngImport: i0, template: `
|
|
10367
10425
|
<Card hover="no" cdkTrapFocus cdkTrapFocusAutoCapture="true" class="bg-card rounded-xl shadow-sm">
|
|
10368
10426
|
<CardHeader class="flex flex-col items-center gap-3">
|
|
10369
10427
|
<img class="h-12 content-(--logo-large)" alt="logo" />
|
|
@@ -10473,7 +10531,7 @@ class ChangePasswordComponent {
|
|
|
10473
10531
|
</Card>
|
|
10474
10532
|
`, isInline: true, styles: ["input::-ms-reveal{display:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: CardComponent, selector: ".card, card, Card", inputs: ["class", "variant", "hover"] }, { kind: "directive", type: CardHeaderComponent, selector: ".card-header, card-header, CardHeader, cardheader", inputs: ["class"] }, { kind: "directive", type: CardContentComponent, selector: ".card-content, card-content, CardContent, cardcontent", inputs: ["class"] }, { kind: "directive", type: CardFooterComponent, selector: ".card-footer, card-footer, CardFooter, cardfooter", inputs: ["class"] }, { kind: "directive", type: InputGroupInput, selector: "input[input-group]", inputs: ["class", "type", "placeholder", "disabled"] }, { kind: "directive", type: InputGroupComponent, selector: "input-group, inputgroup, InputGroup", inputs: ["class"] }, { kind: "directive", type: InputGroupAddonComponent, selector: "input-group-addon, inputgroupaddon, InputGroupAddon", inputs: ["class", "align"] }, { kind: "component", type: EyeSlashIcon, selector: "eye-slash-icon, EyeSlashIcon", inputs: ["class"] }, { kind: "component", type: EyeIcon, selector: "eye-icon, EyeIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10475
10533
|
}
|
|
10476
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10534
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ChangePasswordComponent, decorators: [{
|
|
10477
10535
|
type: Component,
|
|
10478
10536
|
args: [{ selector: "change-password, ChangePassword, changepassword", providers: [provideTranslocoScope("login")], imports: [
|
|
10479
10537
|
FormsModule,
|
|
@@ -10635,8 +10693,8 @@ class ForgotPasswordComponent {
|
|
|
10635
10693
|
this.pending.set(false);
|
|
10636
10694
|
}
|
|
10637
10695
|
}
|
|
10638
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10639
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.
|
|
10696
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ForgotPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10697
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.25", type: ForgotPasswordComponent, isStandalone: true, selector: "forgot-password, ForgotPassword, forgotpassword", inputs: { userName: { classPropertyName: "userName", publicName: "userName", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cancel: "cancel", success: "success", userName: "userNameChange" }, providers: [provideTranslocoScope("login")], ngImport: i0, template: `
|
|
10640
10698
|
<Card hover="no" class="bg-card rounded-xl shadow-sm">
|
|
10641
10699
|
<CardHeader class="flex flex-col items-center gap-3">
|
|
10642
10700
|
<img class="h-12 content-(--logo-large)" alt="logo" />
|
|
@@ -10676,7 +10734,7 @@ class ForgotPasswordComponent {
|
|
|
10676
10734
|
</Card>
|
|
10677
10735
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: CardComponent, selector: ".card, card, Card", inputs: ["class", "variant", "hover"] }, { kind: "directive", type: CardHeaderComponent, selector: ".card-header, card-header, CardHeader, cardheader", inputs: ["class"] }, { kind: "directive", type: CardContentComponent, selector: ".card-content, card-content, CardContent, cardcontent", inputs: ["class"] }, { kind: "directive", type: CardFooterComponent, selector: ".card-footer, card-footer, CardFooter, cardfooter", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10678
10736
|
}
|
|
10679
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10737
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
|
|
10680
10738
|
type: Component,
|
|
10681
10739
|
args: [{
|
|
10682
10740
|
selector: "forgot-password, ForgotPassword, forgotpassword",
|
|
@@ -10733,6 +10791,96 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
10733
10791
|
}]
|
|
10734
10792
|
}], propDecorators: { cancel: [{ type: i0.Output, args: ["cancel"] }], success: [{ type: i0.Output, args: ["success"] }], userName: [{ type: i0.Input, args: [{ isSignal: true, alias: "userName", required: false }] }, { type: i0.Output, args: ["userNameChange"] }] } });
|
|
10735
10793
|
|
|
10794
|
+
/**
|
|
10795
|
+
* Post-logout confirmation shown on the `/logout` route.
|
|
10796
|
+
*
|
|
10797
|
+
* Rendering this view (instead of the sign-in form) is essential for the external-auth modes
|
|
10798
|
+
* (`sso` / `oauth` / `saml`): the sign-in form auto-initiates the handshake when
|
|
10799
|
+
* `authMode` is external, so showing it on `/logout` would immediately re-authenticate the user
|
|
10800
|
+
* (a spinner that loops back in). This view gives a clear "signed out" state and a single explicit
|
|
10801
|
+
* action to sign in again.
|
|
10802
|
+
*/
|
|
10803
|
+
class SignedOutComponent {
|
|
10804
|
+
router = inject(Router);
|
|
10805
|
+
/**
|
|
10806
|
+
* Navigate to the login screen, which then drives the normal sign-in handshake.
|
|
10807
|
+
*
|
|
10808
|
+
* A `returnUrl` is required: in the external-auth modes the sign-in screen only navigates away
|
|
10809
|
+
* once the handshake completes IF a `returnUrl` is present (otherwise it stays on the loader).
|
|
10810
|
+
* We send the user back to the app root after signing in again.
|
|
10811
|
+
*/
|
|
10812
|
+
signInAgain() {
|
|
10813
|
+
this.router.navigate([globalConfig.loginPath ?? "/login"], {
|
|
10814
|
+
queryParams: { returnUrl: "/" }
|
|
10815
|
+
});
|
|
10816
|
+
}
|
|
10817
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SignedOutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10818
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: SignedOutComponent, isStandalone: true, selector: "signed-out, SignedOut, signedout", providers: [provideTranslocoScope("login")], ngImport: i0, template: `
|
|
10819
|
+
<Card hover="no" class="bg-card rounded-xl shadow-sm">
|
|
10820
|
+
<CardHeader class="flex flex-col items-center gap-3">
|
|
10821
|
+
<img class="h-12 content-(--logo-large)" alt="logo" />
|
|
10822
|
+
<h2 class="text-lg font-semibold">
|
|
10823
|
+
{{ 'login.signedOutTitle' | transloco }}
|
|
10824
|
+
</h2>
|
|
10825
|
+
<p class="text-xs text-muted-foreground text-center">
|
|
10826
|
+
{{ 'login.signedOutDescription' | transloco }}
|
|
10827
|
+
</p>
|
|
10828
|
+
</CardHeader>
|
|
10829
|
+
|
|
10830
|
+
<CardContent />
|
|
10831
|
+
|
|
10832
|
+
<CardFooter class="mt-4 flex justify-center">
|
|
10833
|
+
<button
|
|
10834
|
+
type="button"
|
|
10835
|
+
class="w-full rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90"
|
|
10836
|
+
(click)="signInAgain()"
|
|
10837
|
+
>
|
|
10838
|
+
{{ 'login.connect' | transloco }}
|
|
10839
|
+
</button>
|
|
10840
|
+
</CardFooter>
|
|
10841
|
+
</Card>
|
|
10842
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: CardComponent, selector: ".card, card, Card", inputs: ["class", "variant", "hover"] }, { kind: "directive", type: CardHeaderComponent, selector: ".card-header, card-header, CardHeader, cardheader", inputs: ["class"] }, { kind: "directive", type: CardContentComponent, selector: ".card-content, card-content, CardContent, cardcontent", inputs: ["class"] }, { kind: "directive", type: CardFooterComponent, selector: ".card-footer, card-footer, CardFooter, cardfooter", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10843
|
+
}
|
|
10844
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SignedOutComponent, decorators: [{
|
|
10845
|
+
type: Component,
|
|
10846
|
+
args: [{
|
|
10847
|
+
selector: "signed-out, SignedOut, signedout",
|
|
10848
|
+
imports: [
|
|
10849
|
+
TranslocoPipe,
|
|
10850
|
+
CardComponent,
|
|
10851
|
+
CardHeaderComponent,
|
|
10852
|
+
CardContentComponent,
|
|
10853
|
+
CardFooterComponent
|
|
10854
|
+
],
|
|
10855
|
+
providers: [provideTranslocoScope("login")],
|
|
10856
|
+
template: `
|
|
10857
|
+
<Card hover="no" class="bg-card rounded-xl shadow-sm">
|
|
10858
|
+
<CardHeader class="flex flex-col items-center gap-3">
|
|
10859
|
+
<img class="h-12 content-(--logo-large)" alt="logo" />
|
|
10860
|
+
<h2 class="text-lg font-semibold">
|
|
10861
|
+
{{ 'login.signedOutTitle' | transloco }}
|
|
10862
|
+
</h2>
|
|
10863
|
+
<p class="text-xs text-muted-foreground text-center">
|
|
10864
|
+
{{ 'login.signedOutDescription' | transloco }}
|
|
10865
|
+
</p>
|
|
10866
|
+
</CardHeader>
|
|
10867
|
+
|
|
10868
|
+
<CardContent />
|
|
10869
|
+
|
|
10870
|
+
<CardFooter class="mt-4 flex justify-center">
|
|
10871
|
+
<button
|
|
10872
|
+
type="button"
|
|
10873
|
+
class="w-full rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90"
|
|
10874
|
+
(click)="signInAgain()"
|
|
10875
|
+
>
|
|
10876
|
+
{{ 'login.connect' | transloco }}
|
|
10877
|
+
</button>
|
|
10878
|
+
</CardFooter>
|
|
10879
|
+
</Card>
|
|
10880
|
+
`
|
|
10881
|
+
}]
|
|
10882
|
+
}] });
|
|
10883
|
+
|
|
10736
10884
|
/**
|
|
10737
10885
|
* Represents the LoginComponent class, which is responsible for handling the login functionality.
|
|
10738
10886
|
* This component is used to authenticate users and manage the user's authentication status.
|
|
@@ -10907,8 +11055,8 @@ class SignInComponent {
|
|
|
10907
11055
|
this.authenticated.set(false);
|
|
10908
11056
|
this.router.navigate(["/"]);
|
|
10909
11057
|
}
|
|
10910
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10911
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
11058
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SignInComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
11059
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SignInComponent, isStandalone: true, selector: "signIn, signin, sign-in", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, username: { classPropertyName: "username", publicName: "username", isSignal: true, isRequired: false, transformFunction: null }, password: { classPropertyName: "password", publicName: "password", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { forgotPassword: "forgotPassword", username: "usernameChange", password: "passwordChange" }, host: { properties: { "class": "cn('grid h-dvh w-full place-content-center', class())" } }, providers: [provideTranslocoScope("login")], ngImport: i0, template: `
|
|
10912
11060
|
@if (!authenticated() && !externalAuth) {
|
|
10913
11061
|
<Card
|
|
10914
11062
|
hover="no"
|
|
@@ -10969,7 +11117,7 @@ class SignInComponent {
|
|
|
10969
11117
|
}
|
|
10970
11118
|
`, isInline: true, styles: ["input{background-color:var(--background)}.loader{--w: 96px;--h: 96px;transform:rotate(45deg);perspective:1000px;border-radius:50%;width:var(--w);height:var(--h);color:#0040bf}.loader:before,.loader:after{content:\"\";display:block;position:absolute;top:0;left:0;width:inherit;height:inherit;border-radius:50%;transform:rotateX(70deg);animation:1s spin linear infinite}.loader:after{color:#ff854a;transform:rotateY(70deg);animation-delay:.4s}@keyframes spin{0%,to{box-shadow:.4em 0 0 0 currentcolor}12%{box-shadow:.4em .4em 0 0 currentcolor}25%{box-shadow:0 .4em 0 0 currentcolor}37%{box-shadow:-.4em .4em 0 0 currentcolor}50%{box-shadow:-.4em 0 0 0 currentcolor}62%{box-shadow:-.4em -.4em 0 0 currentcolor}75%{box-shadow:0 -.4em 0 0 currentcolor}87%{box-shadow:.4em -.4em 0 0 currentcolor}}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: CardComponent, selector: ".card, card, Card", inputs: ["class", "variant", "hover"] }, { kind: "directive", type: CardHeaderComponent, selector: ".card-header, card-header, CardHeader, cardheader", inputs: ["class"] }, { kind: "directive", type: CardContentComponent, selector: ".card-content, card-content, CardContent, cardcontent", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10971
11119
|
}
|
|
10972
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SignInComponent, decorators: [{
|
|
10973
11121
|
type: Component,
|
|
10974
11122
|
args: [{ selector: "signIn, signin, sign-in", imports: [
|
|
10975
11123
|
RouterModule,
|
|
@@ -11047,10 +11195,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
11047
11195
|
|
|
11048
11196
|
class AuthPageComponent {
|
|
11049
11197
|
mode = input(...(ngDevMode ? [undefined, { debugName: "mode" }] : []));
|
|
11050
|
-
view = linkedSignal(() => this.mode() ??
|
|
11198
|
+
view = linkedSignal(() => this.mode() ?? this.routeView(), ...(ngDevMode ? [{ debugName: "view" }] : []));
|
|
11051
11199
|
username = signal("", ...(ngDevMode ? [{ debugName: "username" }] : []));
|
|
11052
11200
|
alert = signal(undefined, ...(ngDevMode ? [{ debugName: "alert" }] : []));
|
|
11053
11201
|
route = inject(ActivatedRoute);
|
|
11202
|
+
/**
|
|
11203
|
+
* Default view derived from the route. The `/logout` route renders the "signed out" confirmation
|
|
11204
|
+
* (NOT the sign-in form): in external-auth modes the form would auto-restart the handshake and
|
|
11205
|
+
* re-authenticate the user, defeating the logout. Everything else defaults to the sign-in form.
|
|
11206
|
+
*/
|
|
11207
|
+
routeView() {
|
|
11208
|
+
return this.route.snapshot.routeConfig?.path === "logout" ? "signedout" : "signin";
|
|
11209
|
+
}
|
|
11054
11210
|
constructor() {
|
|
11055
11211
|
const params = this.route.snapshot.queryParams;
|
|
11056
11212
|
const u = params["username"] || "";
|
|
@@ -11063,8 +11219,8 @@ class AuthPageComponent {
|
|
|
11063
11219
|
this.alert.set(`login.${params["alert"]}`);
|
|
11064
11220
|
}
|
|
11065
11221
|
}
|
|
11066
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11067
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
11222
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AuthPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11223
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AuthPageComponent, isStandalone: true, selector: "auth-page, AuthPage, authpage", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "min-h-screen grid place-items-center p-6 bg-background" }, providers: [provideTranslocoScope("login")], ngImport: i0, template: `
|
|
11068
11224
|
<div class="w-full max-w-md">
|
|
11069
11225
|
@if (view() === 'changepassword') {
|
|
11070
11226
|
<change-password
|
|
@@ -11077,6 +11233,8 @@ class AuthPageComponent {
|
|
|
11077
11233
|
(cancel)="view.set('signin')"
|
|
11078
11234
|
(success)="view.set('signin')"
|
|
11079
11235
|
/>
|
|
11236
|
+
} @else if (view() === 'signedout') {
|
|
11237
|
+
<signed-out />
|
|
11080
11238
|
} @else {
|
|
11081
11239
|
<sign-in
|
|
11082
11240
|
(changePassword)="view.set('changepassword')"
|
|
@@ -11084,14 +11242,14 @@ class AuthPageComponent {
|
|
|
11084
11242
|
/>
|
|
11085
11243
|
}
|
|
11086
11244
|
</div>
|
|
11087
|
-
`, isInline: true, dependencies: [{ kind: "component", type: SignInComponent, selector: "signIn, signin, sign-in", inputs: ["class", "username", "password"], outputs: ["forgotPassword", "usernameChange", "passwordChange"] }, { kind: "component", type: ChangePasswordComponent, selector: "change-password, ChangePassword, changepassword", inputs: ["username", "alert", "redirectAfterSuccess", "redirectAfterCancel", "currentPassword", "newPassword", "confirmPassword"], outputs: ["success", "cancel", "currentPasswordChange", "newPasswordChange", "confirmPasswordChange"] }, { kind: "component", type: ForgotPasswordComponent, selector: "forgot-password, ForgotPassword, forgotpassword", inputs: ["userName"], outputs: ["cancel", "success", "userNameChange"] }] });
|
|
11245
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SignInComponent, selector: "signIn, signin, sign-in", inputs: ["class", "username", "password"], outputs: ["forgotPassword", "usernameChange", "passwordChange"] }, { kind: "component", type: ChangePasswordComponent, selector: "change-password, ChangePassword, changepassword", inputs: ["username", "alert", "redirectAfterSuccess", "redirectAfterCancel", "currentPassword", "newPassword", "confirmPassword"], outputs: ["success", "cancel", "currentPasswordChange", "newPasswordChange", "confirmPasswordChange"] }, { kind: "component", type: ForgotPasswordComponent, selector: "forgot-password, ForgotPassword, forgotpassword", inputs: ["userName"], outputs: ["cancel", "success", "userNameChange"] }, { kind: "component", type: SignedOutComponent, selector: "signed-out, SignedOut, signedout" }] });
|
|
11088
11246
|
}
|
|
11089
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AuthPageComponent, decorators: [{
|
|
11090
11248
|
type: Component,
|
|
11091
11249
|
args: [{
|
|
11092
11250
|
selector: "auth-page, AuthPage, authpage",
|
|
11093
11251
|
providers: [provideTranslocoScope("login")],
|
|
11094
|
-
imports: [SignInComponent, ChangePasswordComponent, ForgotPasswordComponent],
|
|
11252
|
+
imports: [SignInComponent, ChangePasswordComponent, ForgotPasswordComponent, SignedOutComponent],
|
|
11095
11253
|
host: { class: "min-h-screen grid place-items-center p-6 bg-background" },
|
|
11096
11254
|
template: `
|
|
11097
11255
|
<div class="w-full max-w-md">
|
|
@@ -11106,6 +11264,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
11106
11264
|
(cancel)="view.set('signin')"
|
|
11107
11265
|
(success)="view.set('signin')"
|
|
11108
11266
|
/>
|
|
11267
|
+
} @else if (view() === 'signedout') {
|
|
11268
|
+
<signed-out />
|
|
11109
11269
|
} @else {
|
|
11110
11270
|
<sign-in
|
|
11111
11271
|
(changePassword)="view.set('changepassword')"
|
|
@@ -11148,8 +11308,8 @@ class BookmarkButtonComponent {
|
|
|
11148
11308
|
notify.success(this.transloco.translate("bookmarks.bookmarkAdded"), { duration: 2000 });
|
|
11149
11309
|
}
|
|
11150
11310
|
}
|
|
11151
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11152
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
11311
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BookmarkButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11312
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: BookmarkButtonComponent, isStandalone: true, selector: "bookmark-button, bookmarkbutton, BookmarkButton", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.visible": "isBookmarked()", "title": "title()" }, classAttribute: "cursor-pointer" }, providers: [provideTranslocoScope("bookmark")], ngImport: i0, template: `
|
|
11153
11313
|
<button [variant]="variant()" [size]="size()" [iconOnly]="true" (click)="bookmark($event)">
|
|
11154
11314
|
@if (isBookmarked()) {
|
|
11155
11315
|
<bookmark-icon solid />
|
|
@@ -11160,7 +11320,7 @@ class BookmarkButtonComponent {
|
|
|
11160
11320
|
</button>
|
|
11161
11321
|
`, isInline: true, dependencies: [{ kind: "component", type: BookmarkIcon, selector: "bookmark-icon, BookmarkIcon", inputs: ["class", "solid"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }] });
|
|
11162
11322
|
}
|
|
11163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BookmarkButtonComponent, decorators: [{
|
|
11164
11324
|
type: Component,
|
|
11165
11325
|
args: [{
|
|
11166
11326
|
selector: "bookmark-button, bookmarkbutton, BookmarkButton",
|
|
@@ -11262,10 +11422,10 @@ class BookmarksComponent {
|
|
|
11262
11422
|
e.stopPropagation();
|
|
11263
11423
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
11264
11424
|
}
|
|
11265
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11266
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
11425
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BookmarksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11426
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: BookmarksComponent, isStandalone: true, selector: "bookmarks, Bookmarks", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope("bookmarks")], ngImport: i0, template: "@if (floating) {\r\n <div class=\"p-2\">\r\n <label class=\"text-xl font-bold\">{{ \"bookmarks.label\" | transloco }}</label>\r\n <Separator />\r\n </div>\r\n}\r\n\r\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\" role=\"list\">\r\n @for (bookmark of paginatedBookmarks(); track $index) {\r\n <li\r\n role=\"listitem\"\r\n class=\"group h-10\"\r\n tabindex=\"0\"\r\n (click)=\"onClick(bookmark)\"\r\n (keydown.enter)=\"onClick(bookmark)\">\r\n <BookmarkIcon solid class=\"shrink-0\" />\r\n\r\n <p class=\"line-clamp-1\">{{ bookmark.label }}</p>\r\n\r\n @if (bookmark.author) {\r\n <Badge class=\"text-grey-500 text-xs\">\r\n <UserIcon class=\"size-3\" />\r\n <span class=\"line-clamp-1\">{{ bookmark.author }}</span>\r\n </Badge>\r\n }\r\n @if (bookmark.parentFolder) {\r\n <Badge class=\"text-grey-500 text-xs\">\r\n <FolderIcon class=\"size-3\" />\r\n <span class=\"line-clamp-1\">{{ bookmark.parentFolder }}</span>\r\n </Badge>\r\n }\r\n\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n title=\"{{ 'bookmarks.openBookmark' | transloco }}\"\r\n class=\"text-destructive ms-auto group-hover:visible\"\r\n [attr.title]=\"'bookmarks.removeBookmark' | transloco\"\r\n [attr.aria-label]=\"'bookmarks.removeBookmark' | transloco\"\r\n (click)=\"onDelete(bookmark, $event)\">\r\n <TrashIcon />\r\n </button>\r\n </li>\r\n } @empty {\r\n <span class=\"py-4 text-center text-neutral-500\">\r\n {{ \"bookmarks.noBookmarks\" | transloco }}\r\n </span>\r\n }\r\n</ul>\r\n\r\n@if (paginatedBookmarks().length > 0) {\r\n <div class=\"flex flex-col px-2\">\r\n @if (hasMore() && config.showLoadMore) {\r\n @let loadMoreLabel = \"loadMore\" | transloco;\r\n <button\r\n variant=\"ghost\"\r\n class=\"w-full\"\r\n tabindex=\"0\"\r\n [attr.title]=\"loadMoreLabel\"\r\n (click)=\"loadMore($event)\">\r\n {{ loadMoreLabel }}\r\n </button>\r\n }\r\n @let seeMoreLabel = \"seeMore\" | transloco;\r\n <button\r\n variant=\"link\"\r\n class=\"ml-auto\"\r\n [attr.title]=\"seeMoreLabel\"\r\n [routerLink]=\"[config.routerLink]\">\r\n {{ seeMoreLabel }}\r\n </button>\r\n </div>\r\n}\r\n", styles: [":host ul{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: Separator, selector: "separator, Separator", inputs: ["class", "orientation"] }, { kind: "component", type: BookmarkIcon, selector: "bookmark-icon, BookmarkIcon", inputs: ["class", "solid"] }, { kind: "component", type: UserIcon, selector: "user-icon, UserIcon", inputs: ["class"] }, { kind: "component", type: TrashIcon, selector: "trash-icon, TrashIcon", inputs: ["class"] }, { kind: "component", type: FolderIcon, selector: "folder-icon, FolderIcon", inputs: ["class"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size", "aria-label"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11267
11427
|
}
|
|
11268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11428
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: BookmarksComponent, decorators: [{
|
|
11269
11429
|
type: Component,
|
|
11270
11430
|
args: [{ selector: "bookmarks, Bookmarks", standalone: true, imports: [
|
|
11271
11431
|
TranslocoPipe,
|
|
@@ -11301,8 +11461,8 @@ class DeleteCollectionDialog {
|
|
|
11301
11461
|
notify.success(message, { duration: 2000 });
|
|
11302
11462
|
}
|
|
11303
11463
|
}
|
|
11304
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11305
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
11464
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DeleteCollectionDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11465
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.25", type: DeleteCollectionDialog, isStandalone: true, selector: "delete-collection-dialog", providers: [provideTranslocoScope("collections")], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
11306
11466
|
<dialog #dialog>
|
|
11307
11467
|
<DialogContent>
|
|
11308
11468
|
<DialogHeader>
|
|
@@ -11323,7 +11483,7 @@ class DeleteCollectionDialog {
|
|
|
11323
11483
|
</dialog>
|
|
11324
11484
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11325
11485
|
}
|
|
11326
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11486
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DeleteCollectionDialog, decorators: [{
|
|
11327
11487
|
type: Component,
|
|
11328
11488
|
args: [{
|
|
11329
11489
|
selector: "delete-collection-dialog",
|
|
@@ -11402,10 +11562,10 @@ class CollectionsComponent {
|
|
|
11402
11562
|
e.stopPropagation();
|
|
11403
11563
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
11404
11564
|
}
|
|
11405
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11406
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
11565
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CollectionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11566
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: CollectionsComponent, isStandalone: true, selector: "app-collections, collections", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope("collections")], viewQueries: [{ propertyName: "deleteCollectionDialog", first: true, predicate: DeleteCollectionDialog, descendants: true, isSignal: true }], ngImport: i0, template: "@if (floating) {\r\n <div class=\"p-2\">\r\n <label class=\"text-xl font-bold\">{{\r\n \"collections.label\" | transloco\r\n }}</label>\r\n <Separator />\r\n </div>\r\n}\r\n\r\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\">\r\n @for (collection of paginatedCollections(); track $index) {\r\n <li\r\n role=\"listitem\"\r\n class=\"group grid grid-cols-[min-content_auto_min-content] items-center\"\r\n tabindex=\"0\"\r\n (click)=\"onClick(collection)\"\r\n (keydown.enter)=\"onClick(collection)\">\r\n <inbox-icon />\r\n\r\n <p class=\"line-clamp-1\">{{ collection.name }}</p>\r\n\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"text-destructive invisible group-hover:visible\"\r\n title=\"{{ 'collections.deleteCollection' | transloco }}\"\r\n [attr.aria-label]=\"'collections.deleteCollection' | transloco\"\r\n (click)=\"onDelete(collection, $index, $event)\">\r\n <TrashIcon />\r\n </button>\r\n </li>\r\n } @empty {\r\n <span class=\"py-4 text-center text-neutral-500\">\r\n {{ \"collections.noCollections\" | transloco }}\r\n </span>\r\n }\r\n</ul>\r\n\r\n@if (paginatedCollections().length > 0) {\r\n <div class=\"flex flex-col px-2\">\r\n @if (hasMore() && config.showLoadMore) {\r\n <button\r\n variant=\"outline\"\r\n class=\"w-full\"\r\n tabindex=\"0\"\r\n [attr.title]=\"'loadMore' | transloco\"\r\n (click)=\"loadMore($event)\">\r\n {{ \"loadMore\" | transloco }}\r\n </button>\r\n }\r\n <button\r\n class=\"ml-auto\"\r\n [attr.title]=\"'seeMore' | transloco\"\r\n [routerLink]=\"[config.routerLink]\">\r\n {{ \"seeMore\" | transloco }}\r\n </button>\r\n </div>\r\n\r\n <delete-collection-dialog />\r\n}\r\n", dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: DeleteCollectionDialog, selector: "delete-collection-dialog" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: Separator, selector: "separator, Separator", inputs: ["class", "orientation"] }, { kind: "component", type: TrashIcon, selector: "trash-icon, TrashIcon", inputs: ["class"] }, { kind: "component", type: InboxIcon, selector: "inbox-icon, InboxIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11407
11567
|
}
|
|
11408
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11568
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CollectionsComponent, decorators: [{
|
|
11409
11569
|
type: Component,
|
|
11410
11570
|
args: [{ selector: "app-collections, collections", standalone: true, imports: [
|
|
11411
11571
|
TranslocoPipe,
|
|
@@ -11419,6 +11579,250 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
11419
11579
|
], providers: [provideTranslocoScope("collections")], template: "@if (floating) {\r\n <div class=\"p-2\">\r\n <label class=\"text-xl font-bold\">{{\r\n \"collections.label\" | transloco\r\n }}</label>\r\n <Separator />\r\n </div>\r\n}\r\n\r\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\">\r\n @for (collection of paginatedCollections(); track $index) {\r\n <li\r\n role=\"listitem\"\r\n class=\"group grid grid-cols-[min-content_auto_min-content] items-center\"\r\n tabindex=\"0\"\r\n (click)=\"onClick(collection)\"\r\n (keydown.enter)=\"onClick(collection)\">\r\n <inbox-icon />\r\n\r\n <p class=\"line-clamp-1\">{{ collection.name }}</p>\r\n\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"text-destructive invisible group-hover:visible\"\r\n title=\"{{ 'collections.deleteCollection' | transloco }}\"\r\n [attr.aria-label]=\"'collections.deleteCollection' | transloco\"\r\n (click)=\"onDelete(collection, $index, $event)\">\r\n <TrashIcon />\r\n </button>\r\n </li>\r\n } @empty {\r\n <span class=\"py-4 text-center text-neutral-500\">\r\n {{ \"collections.noCollections\" | transloco }}\r\n </span>\r\n }\r\n</ul>\r\n\r\n@if (paginatedCollections().length > 0) {\r\n <div class=\"flex flex-col px-2\">\r\n @if (hasMore() && config.showLoadMore) {\r\n <button\r\n variant=\"outline\"\r\n class=\"w-full\"\r\n tabindex=\"0\"\r\n [attr.title]=\"'loadMore' | transloco\"\r\n (click)=\"loadMore($event)\">\r\n {{ \"loadMore\" | transloco }}\r\n </button>\r\n }\r\n <button\r\n class=\"ml-auto\"\r\n [attr.title]=\"'seeMore' | transloco\"\r\n [routerLink]=\"[config.routerLink]\">\r\n {{ \"seeMore\" | transloco }}\r\n </button>\r\n </div>\r\n\r\n <delete-collection-dialog />\r\n}\r\n" }]
|
|
11420
11580
|
}], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], deleteCollectionDialog: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DeleteCollectionDialog), { isSignal: true }] }] } });
|
|
11421
11581
|
|
|
11582
|
+
/** Static catalog of the known boolean feature flags, with human-readable metadata. */
|
|
11583
|
+
const FEATURE_FLAGS = [
|
|
11584
|
+
{ key: "advancedSearch", label: "Advanced search", description: "Enable the advanced search panel." },
|
|
11585
|
+
{ key: "allowChatDrawer", label: "Chat drawer", description: "Enable the AI assistant chat drawer." },
|
|
11586
|
+
{ key: "quickFilter", label: "Quick filter", description: "Show the quick filter on aggregations." },
|
|
11587
|
+
{ key: "filterLinkChildren", label: "Filter link children", description: "Link parent/children selection in filters." },
|
|
11588
|
+
{ key: "showAggregationItemCount", label: "Aggregation item count", description: "Display the document count on aggregation items." },
|
|
11589
|
+
{ key: "expandPreview", label: "Expand preview", description: "Allow the document preview to be expanded." },
|
|
11590
|
+
{ key: "previewMultiConversion", label: "Preview multi-conversion", description: "Enable multiple converters in the preview." },
|
|
11591
|
+
{ key: "persistFiltersAcrossTabs", label: "Persist filters across tabs", description: "Keep selected filters when switching navbar tabs." },
|
|
11592
|
+
{ key: "allowChangePassword", label: "Allow change password", description: "Show the change-password action in the user menu." },
|
|
11593
|
+
{ key: "editablepartition", label: "Editable partition", description: "Allow editing the partition." }
|
|
11594
|
+
];
|
|
11595
|
+
/**
|
|
11596
|
+
* Developer/QA tool that lists the application feature flags and lets you toggle them on the fly.
|
|
11597
|
+
*
|
|
11598
|
+
* Changes are applied **live** to the {@link AppStore}: every toggle rewrites the effective
|
|
11599
|
+
* `general.features` map so that the rest of the application — which reads features through
|
|
11600
|
+
* `appStore.general()?.features` — reacts immediately. This makes it possible to test how a
|
|
11601
|
+
* feature behaves without editing the customization JSON and reloading.
|
|
11602
|
+
*
|
|
11603
|
+
* Access is gated to administrators: the gate lives in the component itself (not in the caller) so
|
|
11604
|
+
* the dialog can always be opened, but a non-admin only sees an "admin only" notice — there is no
|
|
11605
|
+
* content to leak and no caller-side check to forget. "Admin" means `isAdministrator` or
|
|
11606
|
+
* `isDelegatedAdmin` on the {@link PrincipalStore}.
|
|
11607
|
+
*
|
|
11608
|
+
* Open it programmatically through the {@link DialogService}:
|
|
11609
|
+
* ```typescript
|
|
11610
|
+
* const modal = inject(DialogService);
|
|
11611
|
+
* modal.open(FeatureFlagsDialogComponent);
|
|
11612
|
+
* ```
|
|
11613
|
+
*/
|
|
11614
|
+
class FeatureFlagsDialogComponent {
|
|
11615
|
+
appStore = inject(AppStore);
|
|
11616
|
+
principalStore = inject(PrincipalStore);
|
|
11617
|
+
dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
|
|
11618
|
+
closed = output();
|
|
11619
|
+
/** The flag list and mutators are only available to administrators (see class doc). */
|
|
11620
|
+
isAdmin = computed(() => this.principalStore.isAdministrator() || this.principalStore.isDelegatedAdmin(), ...(ngDevMode ? [{ debugName: "isAdmin" }] : []));
|
|
11621
|
+
filter = signal("", ...(ngDevMode ? [{ debugName: "filter" }] : []));
|
|
11622
|
+
/** Snapshot of the features when the dialog was opened, used by {@link reset}. */
|
|
11623
|
+
initialFeatures = signal({}, ...(ngDevMode ? [{ debugName: "initialFeatures" }] : []));
|
|
11624
|
+
/** Every flag row to display: the known catalog plus any extra boolean flag found in the live config. */
|
|
11625
|
+
flags = computed(() => {
|
|
11626
|
+
const features = this.appStore.general()?.features ?? {};
|
|
11627
|
+
const known = FEATURE_FLAGS.map((descriptor) => ({
|
|
11628
|
+
...descriptor,
|
|
11629
|
+
enabled: features[descriptor.key] === true
|
|
11630
|
+
}));
|
|
11631
|
+
const knownKeys = new Set(FEATURE_FLAGS.map((descriptor) => descriptor.key));
|
|
11632
|
+
const extras = Object.keys(features)
|
|
11633
|
+
.filter((key) => typeof features[key] === "boolean" && !knownKeys.has(key))
|
|
11634
|
+
.map((key) => ({ key: key, label: key, description: "", enabled: features[key] === true }));
|
|
11635
|
+
return [...known, ...extras];
|
|
11636
|
+
}, ...(ngDevMode ? [{ debugName: "flags" }] : []));
|
|
11637
|
+
visibleFlags = computed(() => {
|
|
11638
|
+
const query = this.filter().trim().toLowerCase();
|
|
11639
|
+
const rows = this.flags();
|
|
11640
|
+
if (!query)
|
|
11641
|
+
return rows;
|
|
11642
|
+
return rows.filter((row) => row.key.toLowerCase().includes(query) || row.label.toLowerCase().includes(query));
|
|
11643
|
+
}, ...(ngDevMode ? [{ debugName: "visibleFlags" }] : []));
|
|
11644
|
+
/** Whether the live features differ from the snapshot taken when the dialog opened. */
|
|
11645
|
+
modified = computed(() => {
|
|
11646
|
+
const current = this.appStore.general()?.features ?? {};
|
|
11647
|
+
const initial = this.initialFeatures();
|
|
11648
|
+
const keys = new Set([...Object.keys(current), ...Object.keys(initial)]);
|
|
11649
|
+
for (const key of keys) {
|
|
11650
|
+
if (current[key] !== initial[key])
|
|
11651
|
+
return true;
|
|
11652
|
+
}
|
|
11653
|
+
return false;
|
|
11654
|
+
}, ...(ngDevMode ? [{ debugName: "modified" }] : []));
|
|
11655
|
+
open() {
|
|
11656
|
+
this.initialFeatures.set({ ...(this.appStore.general()?.features ?? {}) });
|
|
11657
|
+
this.dialog()?.showModal();
|
|
11658
|
+
}
|
|
11659
|
+
setFeature(key, value) {
|
|
11660
|
+
if (!this.isAdmin())
|
|
11661
|
+
return;
|
|
11662
|
+
const current = this.appStore.general()?.features ?? {};
|
|
11663
|
+
this.applyFeatures({ ...current, [key]: value });
|
|
11664
|
+
}
|
|
11665
|
+
reset() {
|
|
11666
|
+
if (!this.isAdmin())
|
|
11667
|
+
return;
|
|
11668
|
+
this.applyFeatures({ ...this.initialFeatures() });
|
|
11669
|
+
}
|
|
11670
|
+
/**
|
|
11671
|
+
* Writes `features` back to the source that `general()` actually reads from: the `general`
|
|
11672
|
+
* side customization JSON when one exists, otherwise the inline `data.general`. We rewrite the
|
|
11673
|
+
* whole object because {@link AppStore.update} performs a shallow merge of the top-level state.
|
|
11674
|
+
*/
|
|
11675
|
+
applyFeatures(features) {
|
|
11676
|
+
const customJSONs = this.appStore.customJSONs();
|
|
11677
|
+
const index = customJSONs.findIndex((json) => json.name.toLowerCase() === "general");
|
|
11678
|
+
if (index >= 0) {
|
|
11679
|
+
const entry = customJSONs[index];
|
|
11680
|
+
const data = typeof entry.data === "string" ? JSON.parse(entry.data) : { ...entry.data };
|
|
11681
|
+
const next = [...customJSONs];
|
|
11682
|
+
next[index] = { ...entry, data: { ...data, features } };
|
|
11683
|
+
this.appStore.update({ customJSONs: next });
|
|
11684
|
+
return;
|
|
11685
|
+
}
|
|
11686
|
+
const data = { ...(this.appStore.customizationJson() ?? {}) };
|
|
11687
|
+
data.general = { ...(data.general ?? {}), features };
|
|
11688
|
+
this.appStore.update({ data });
|
|
11689
|
+
}
|
|
11690
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FeatureFlagsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11691
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FeatureFlagsDialogComponent, isStandalone: true, selector: "feature-flags-dialog", outputs: { closed: "closed" }, viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
11692
|
+
<dialog #dialog (closed)="closed.emit($event)">
|
|
11693
|
+
<DialogContent class="sm:max-w-[560px]">
|
|
11694
|
+
<DialogHeader>
|
|
11695
|
+
<DialogTitle>Feature flags</DialogTitle>
|
|
11696
|
+
@if (isAdmin()) {
|
|
11697
|
+
<DialogDescription>Toggle features to test their behaviour. Changes apply immediately.</DialogDescription>
|
|
11698
|
+
}
|
|
11699
|
+
</DialogHeader>
|
|
11700
|
+
|
|
11701
|
+
@if (isAdmin()) {
|
|
11702
|
+
<input
|
|
11703
|
+
type="text"
|
|
11704
|
+
name="feature-filter"
|
|
11705
|
+
autocomplete="off"
|
|
11706
|
+
spellcheck="false"
|
|
11707
|
+
placeholder="Filter features…"
|
|
11708
|
+
[value]="filter()"
|
|
11709
|
+
(input)="filter.set($any($event.target).value)" />
|
|
11710
|
+
|
|
11711
|
+
<ul class="mt-2 flex max-h-[50vh] flex-col gap-1 overflow-y-auto">
|
|
11712
|
+
@for (flag of visibleFlags(); track flag.key) {
|
|
11713
|
+
<li class="hover:bg-muted/50 flex items-center justify-between gap-4 rounded-md px-2 py-1.5">
|
|
11714
|
+
<label class="min-w-0 cursor-pointer" [attr.for]="'flag_' + flag.key">
|
|
11715
|
+
<span class="block truncate text-sm font-medium">{{ flag.label }}</span>
|
|
11716
|
+
@if (flag.description) {
|
|
11717
|
+
<span class="text-muted-foreground block truncate text-xs">{{ flag.description }}</span>
|
|
11718
|
+
}
|
|
11719
|
+
</label>
|
|
11720
|
+
<Switch
|
|
11721
|
+
[id]="'flag_' + flag.key"
|
|
11722
|
+
variant="primary"
|
|
11723
|
+
[toggled]="flag.enabled"
|
|
11724
|
+
(toggledChange)="setFeature(flag.key, $event)" />
|
|
11725
|
+
</li>
|
|
11726
|
+
} @empty {
|
|
11727
|
+
<li class="text-muted-foreground px-2 py-4 text-center text-sm">No feature matches your filter.</li>
|
|
11728
|
+
}
|
|
11729
|
+
</ul>
|
|
11730
|
+
|
|
11731
|
+
<DialogFooter>
|
|
11732
|
+
<button variant="outline" [disabled]="!modified()" (click)="reset()">Reset</button>
|
|
11733
|
+
<button (click)="dialog.close()">Close</button>
|
|
11734
|
+
</DialogFooter>
|
|
11735
|
+
} @else {
|
|
11736
|
+
<div class="text-muted-foreground flex flex-col items-center gap-1 py-8 text-center">
|
|
11737
|
+
<p class="text-sm font-medium">Nothing to see here.</p>
|
|
11738
|
+
<p class="text-xs">Feature flags can only be accessed by an administrator.</p>
|
|
11739
|
+
</div>
|
|
11740
|
+
|
|
11741
|
+
<DialogFooter>
|
|
11742
|
+
<button (click)="dialog.close()">Close</button>
|
|
11743
|
+
</DialogFooter>
|
|
11744
|
+
}
|
|
11745
|
+
</DialogContent>
|
|
11746
|
+
</dialog>
|
|
11747
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "directive", type: DialogDescriptionComponent, selector: "DialogDescription", inputs: ["class"] }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: SwitchComponent, selector: "switch, Switch", inputs: ["toggled", "disabled", "class", "variant", "size"], outputs: ["toggledChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
11748
|
+
}
|
|
11749
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FeatureFlagsDialogComponent, decorators: [{
|
|
11750
|
+
type: Component,
|
|
11751
|
+
args: [{
|
|
11752
|
+
selector: "feature-flags-dialog",
|
|
11753
|
+
standalone: true,
|
|
11754
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11755
|
+
imports: [
|
|
11756
|
+
ButtonComponent,
|
|
11757
|
+
DialogComponent,
|
|
11758
|
+
DialogContentComponent,
|
|
11759
|
+
DialogHeaderComponent,
|
|
11760
|
+
DialogTitleComponent,
|
|
11761
|
+
DialogDescriptionComponent,
|
|
11762
|
+
DialogFooterComponent,
|
|
11763
|
+
InputComponent,
|
|
11764
|
+
SwitchComponent
|
|
11765
|
+
],
|
|
11766
|
+
template: `
|
|
11767
|
+
<dialog #dialog (closed)="closed.emit($event)">
|
|
11768
|
+
<DialogContent class="sm:max-w-[560px]">
|
|
11769
|
+
<DialogHeader>
|
|
11770
|
+
<DialogTitle>Feature flags</DialogTitle>
|
|
11771
|
+
@if (isAdmin()) {
|
|
11772
|
+
<DialogDescription>Toggle features to test their behaviour. Changes apply immediately.</DialogDescription>
|
|
11773
|
+
}
|
|
11774
|
+
</DialogHeader>
|
|
11775
|
+
|
|
11776
|
+
@if (isAdmin()) {
|
|
11777
|
+
<input
|
|
11778
|
+
type="text"
|
|
11779
|
+
name="feature-filter"
|
|
11780
|
+
autocomplete="off"
|
|
11781
|
+
spellcheck="false"
|
|
11782
|
+
placeholder="Filter features…"
|
|
11783
|
+
[value]="filter()"
|
|
11784
|
+
(input)="filter.set($any($event.target).value)" />
|
|
11785
|
+
|
|
11786
|
+
<ul class="mt-2 flex max-h-[50vh] flex-col gap-1 overflow-y-auto">
|
|
11787
|
+
@for (flag of visibleFlags(); track flag.key) {
|
|
11788
|
+
<li class="hover:bg-muted/50 flex items-center justify-between gap-4 rounded-md px-2 py-1.5">
|
|
11789
|
+
<label class="min-w-0 cursor-pointer" [attr.for]="'flag_' + flag.key">
|
|
11790
|
+
<span class="block truncate text-sm font-medium">{{ flag.label }}</span>
|
|
11791
|
+
@if (flag.description) {
|
|
11792
|
+
<span class="text-muted-foreground block truncate text-xs">{{ flag.description }}</span>
|
|
11793
|
+
}
|
|
11794
|
+
</label>
|
|
11795
|
+
<Switch
|
|
11796
|
+
[id]="'flag_' + flag.key"
|
|
11797
|
+
variant="primary"
|
|
11798
|
+
[toggled]="flag.enabled"
|
|
11799
|
+
(toggledChange)="setFeature(flag.key, $event)" />
|
|
11800
|
+
</li>
|
|
11801
|
+
} @empty {
|
|
11802
|
+
<li class="text-muted-foreground px-2 py-4 text-center text-sm">No feature matches your filter.</li>
|
|
11803
|
+
}
|
|
11804
|
+
</ul>
|
|
11805
|
+
|
|
11806
|
+
<DialogFooter>
|
|
11807
|
+
<button variant="outline" [disabled]="!modified()" (click)="reset()">Reset</button>
|
|
11808
|
+
<button (click)="dialog.close()">Close</button>
|
|
11809
|
+
</DialogFooter>
|
|
11810
|
+
} @else {
|
|
11811
|
+
<div class="text-muted-foreground flex flex-col items-center gap-1 py-8 text-center">
|
|
11812
|
+
<p class="text-sm font-medium">Nothing to see here.</p>
|
|
11813
|
+
<p class="text-xs">Feature flags can only be accessed by an administrator.</p>
|
|
11814
|
+
</div>
|
|
11815
|
+
|
|
11816
|
+
<DialogFooter>
|
|
11817
|
+
<button (click)="dialog.close()">Close</button>
|
|
11818
|
+
</DialogFooter>
|
|
11819
|
+
}
|
|
11820
|
+
</DialogContent>
|
|
11821
|
+
</dialog>
|
|
11822
|
+
`
|
|
11823
|
+
}]
|
|
11824
|
+
}], propDecorators: { dialog: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DialogComponent), { isSignal: true }] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
11825
|
+
|
|
11422
11826
|
class OverrideUserDialogComponent {
|
|
11423
11827
|
dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
|
|
11424
11828
|
appService = inject(ApplicationService);
|
|
@@ -11458,8 +11862,8 @@ class OverrideUserDialogComponent {
|
|
|
11458
11862
|
setGlobalConfig({ userOverrideActive: false, userOverride: undefined });
|
|
11459
11863
|
});
|
|
11460
11864
|
}
|
|
11461
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11462
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
11865
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OverrideUserDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11866
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.25", type: OverrideUserDialogComponent, isStandalone: true, selector: "override-user-dialog", inputs: { overrideUser: { classPropertyName: "overrideUser", publicName: "overrideUser", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { overrideUser: "overrideUserChange" }, providers: [provideTranslocoScope("dialogs")], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
11463
11867
|
<dialog #dialog>
|
|
11464
11868
|
<DialogContent class="sm:max-w-[425px]">
|
|
11465
11869
|
<DialogHeader>
|
|
@@ -11507,7 +11911,7 @@ class OverrideUserDialogComponent {
|
|
|
11507
11911
|
</dialog>
|
|
11508
11912
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11509
11913
|
}
|
|
11510
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11914
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: OverrideUserDialogComponent, decorators: [{
|
|
11511
11915
|
type: Component,
|
|
11512
11916
|
args: [{
|
|
11513
11917
|
selector: "override-user-dialog",
|
|
@@ -11588,8 +11992,8 @@ class ResetUserSettingsDialogComponent {
|
|
|
11588
11992
|
notify.success(message, { duration: 2000 });
|
|
11589
11993
|
});
|
|
11590
11994
|
}
|
|
11591
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11592
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
11995
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ResetUserSettingsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11996
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.25", type: ResetUserSettingsDialogComponent, isStandalone: true, selector: "reset-user-settings-dialog", providers: [provideTranslocoScope("dialogs")], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
11593
11997
|
<dialog #dialog>
|
|
11594
11998
|
<DialogContent>
|
|
11595
11999
|
<DialogHeader>
|
|
@@ -11611,7 +12015,7 @@ class ResetUserSettingsDialogComponent {
|
|
|
11611
12015
|
</dialog>
|
|
11612
12016
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11613
12017
|
}
|
|
11614
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12018
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ResetUserSettingsDialogComponent, decorators: [{
|
|
11615
12019
|
type: Component,
|
|
11616
12020
|
args: [{
|
|
11617
12021
|
selector: "reset-user-settings-dialog",
|
|
@@ -11665,8 +12069,8 @@ class DidYouMeanComponent {
|
|
|
11665
12069
|
this.queryParamsStore.patch({ spellingCorrectionMode: "dymonly" });
|
|
11666
12070
|
this.router.navigate([], { queryParamsHandling: "merge", queryParams: { c: "dymonly", q: this.original() } });
|
|
11667
12071
|
}
|
|
11668
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11669
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12072
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DidYouMeanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12073
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DidYouMeanComponent, isStandalone: true, selector: "did-you-mean, DidYouMean, didyoumean", inputs: { result: { classPropertyName: "result", publicName: "result", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope("did-you-mean")], ngImport: i0, template: `
|
|
11670
12074
|
@switch (spellingCorrectionMode()?.toLowerCase()) {
|
|
11671
12075
|
@case ('dymonly') {
|
|
11672
12076
|
<p>
|
|
@@ -11689,14 +12093,14 @@ class DidYouMeanComponent {
|
|
|
11689
12093
|
<span class="me-1">{{ 'didYouMean.showingResultsFor' | transloco }}</span>
|
|
11690
12094
|
<a class="text-primary hover:underline cursor-pointer" role="button" (click)="selectOriginal()">{{ original() }}</a>
|
|
11691
12095
|
|
|
11692
|
-
<span class="mx-1">and</span>
|
|
12096
|
+
<span class="mx-1">{{ 'didYouMean.and' | transloco }}</span>
|
|
11693
12097
|
<a class="text-primary hover:underline cursor-pointer font-bold" role="button" (click)="selectCorrected()">{{ correction() }}</a>
|
|
11694
12098
|
</p>
|
|
11695
12099
|
}
|
|
11696
12100
|
}
|
|
11697
12101
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11698
12102
|
}
|
|
11699
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DidYouMeanComponent, decorators: [{
|
|
11700
12104
|
type: Component,
|
|
11701
12105
|
args: [{
|
|
11702
12106
|
selector: "did-you-mean, DidYouMean, didyoumean",
|
|
@@ -11725,7 +12129,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
11725
12129
|
<span class="me-1">{{ 'didYouMean.showingResultsFor' | transloco }}</span>
|
|
11726
12130
|
<a class="text-primary hover:underline cursor-pointer" role="button" (click)="selectOriginal()">{{ original() }}</a>
|
|
11727
12131
|
|
|
11728
|
-
<span class="mx-1">and</span>
|
|
12132
|
+
<span class="mx-1">{{ 'didYouMean.and' | transloco }}</span>
|
|
11729
12133
|
<a class="text-primary hover:underline cursor-pointer font-bold" role="button" (click)="selectCorrected()">{{ correction() }}</a>
|
|
11730
12134
|
</p>
|
|
11731
12135
|
}
|
|
@@ -11776,10 +12180,10 @@ class DrawerService {
|
|
|
11776
12180
|
this.extend();
|
|
11777
12181
|
}
|
|
11778
12182
|
}
|
|
11779
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11780
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
12183
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12184
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerService });
|
|
11781
12185
|
}
|
|
11782
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerService, decorators: [{
|
|
11783
12187
|
type: Injectable
|
|
11784
12188
|
}] });
|
|
11785
12189
|
|
|
@@ -11843,10 +12247,10 @@ class DrawerComponent {
|
|
|
11843
12247
|
resetGridTemplateColumns() {
|
|
11844
12248
|
this.element.style.gridTemplateColumns = this.defaultDrawerGridTemplate;
|
|
11845
12249
|
}
|
|
11846
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11847
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
12250
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12251
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.25", type: DrawerComponent, isStandalone: true, selector: "Drawer, drawer", host: { listeners: { "mousemove": "mouseMove($event)", "mousedown": "mouseDown($event)", "mouseup": "mouseUp()" }, properties: { "attr.drawer-opened": "drawerOpened()", "attr.drawer-extended": "drawerExtended()", "style.grid-template-columns": "this.drawerGridTemplateColumns" } }, providers: [DrawerService], viewQueries: [{ propertyName: "drawerHandle", first: true, predicate: ["drawerHandle"], descendants: true, isSignal: true }], ngImport: i0, template: ``, isInline: true, styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;display:grid;position:absolute;height:100%;top:0;right:-100%;justify-content:flex-end;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{right:0;width:100vw;grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}\n"] });
|
|
11848
12252
|
}
|
|
11849
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12253
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerComponent, decorators: [{
|
|
11850
12254
|
type: Component,
|
|
11851
12255
|
args: [{ selector: "Drawer, drawer", standalone: true, providers: [DrawerService], template: ``, host: {
|
|
11852
12256
|
"[attr.drawer-opened]": "drawerOpened()",
|
|
@@ -11876,8 +12280,8 @@ class DrawerNavbarComponent {
|
|
|
11876
12280
|
drawerStack = inject(DrawerStackService);
|
|
11877
12281
|
drawerService = inject(DrawerService);
|
|
11878
12282
|
isExtended = this.drawerService.isExtended();
|
|
11879
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11880
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
12283
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12284
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: DrawerNavbarComponent, isStandalone: true, selector: "DrawerNavbar, drawernavbar", ngImport: i0, template: `
|
|
11881
12285
|
<menu class="flex items-center gap-2 p-4 font-semibold">
|
|
11882
12286
|
<li>
|
|
11883
12287
|
<button variant="ghost" class="group" [attr.title]="'back' | transloco" (click)="drawerStack.close()">
|
|
@@ -11894,7 +12298,7 @@ class DrawerNavbarComponent {
|
|
|
11894
12298
|
</menu>
|
|
11895
12299
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: VerticalDividerComponent, selector: "vertical-divider, VerticalDivider, verticaldivider" }, { kind: "component", type: ArrowLeftIcon, selector: "arrow-left-icon, ArrowLeftIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11896
12300
|
}
|
|
11897
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerNavbarComponent, decorators: [{
|
|
11898
12302
|
type: Component,
|
|
11899
12303
|
args: [{
|
|
11900
12304
|
selector: "DrawerNavbar, drawernavbar",
|
|
@@ -12245,10 +12649,10 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
12245
12649
|
});
|
|
12246
12650
|
return res;
|
|
12247
12651
|
}
|
|
12248
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12249
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12652
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerAdvancedFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12653
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DrawerAdvancedFiltersComponent, isStandalone: true, selector: "advanced-filters", host: { classAttribute: "fixed bg-background grid h-full top-0 -right-full justify-end" }, providers: [DrawerService, SyslangPipe, TranslocoPipe, provideTranslocoScope("drawers")], usesInheritance: true, ngImport: i0, template: "<div (click)=\"drawer.toggleExtension()\" (keydown.escape)=\"drawer.toggleExtension()\" [attr.aria-hidden]=\"true\"></div>\n\n<div class=\"flex h-full flex-col overflow-auto\">\n <DrawerNavbar class=\"border-foreground/10 block border-b\">\n <button [attr.title]=\"'drawers.search' | transloco\" (click)=\"onSearch()\">\n {{ 'drawers.search' | transloco }}\n </button>\n </DrawerNavbar>\n\n <div class=\"flex h-full grow flex-col overflow-auto\">\n <section class=\"flex flex-col gap-4 p-6\" [formGroup]=\"form\">\n <!-- FIND IN -->\n <h1 class=\"text-xl font-bold\">{{ 'drawers.findInContent' | transloco }}</h1>\n <div class=\"flex items-center gap-4\" formGroupName=\"content\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInContent' | transloco }}</span>\n <select\n id=\"content-operator\"\n class=\"hover:outline-primary focus:outline-primary border-foreground/10 bg-background hover:bg-muted focus:bg-muted h-8 w-full rounded-md border px-2 hover:outline focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input\n [variant]=\"inputVariant()\"\n id=\"content-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('content.operator')\"\n formControlName=\"value\" />\n </div>\n @if (enableFieldedSearch()) {\n <div class=\"flex items-center gap-4\" formGroupName=\"title\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInTitle' | transloco }}</span>\n <select\n id=\"title-operator\"\n class=\"hover:outline-primary focus:outline-primary border-foreground/10 bg-background hover:bg-muted focus:bg-muted h-8 w-full rounded-md border px-2 hover:outline focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input id=\"title-value\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\" [placeholder]=\"getPlaceholder('title.operator')\" formControlName=\"value\" />\n </div>\n }\n\n <!-- TABS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.inScope' | transloco }} "{{ currentTab() }}"</h1>\n\n <Tabs>\n <TabsList variant=\"ghost\">\n @for (tab of tabs(); track $index) {\n <Tab class=\"w-fit\" [value]=\"tab.path\" [active]=\"tab.path === currentTab()\" (click)=\"onTabChange(tab.path)\">\n {{ tab.display | syslang | transloco }}\n </Tab>\n }\n </TabsList>\n </Tabs>\n\n <!-- FILTERS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.applyFilters' | transloco }}</h1>\n @for (filter of filters(); track $index) {\n <DropdownInput\n [suggestions]=\"suggestions()\"\n [selected]=\"getItems(filter.column)\"\n [label]=\"filter.display || filter.alias | syslang | transloco\"\n [placeholder]=\"'drawers.startTyping' | transloco\"\n [noResultLabel]=\"'drawers.noResult' | transloco\"\n (onFocus)=\"setFilterFocus($event, filter)\"\n (onKeyUp)=\"onInputTyping($event)\"\n (removeItem)=\"removeItem($event, filter)\"\n (addItem)=\"addItem($event, filter)\" />\n } @empty {\n {{ 'drawers.noFilters' | transloco }}\n }\n </section>\n </div>\n</div>\n", styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{width:100vw;right:calc(var(--spacing) * 0);grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: DrawerNavbarComponent, selector: "DrawerNavbar, drawernavbar" }, { kind: "component", type: DropdownInputComponent, selector: "dropdown-input, DropdownInput", inputs: ["label", "placeholder", "noResultLabel", "suggestions", "selected"], outputs: ["onFocus", "onKeyUp", "removeItem", "addItem"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: TabsComponent, selector: "tabs, Tabs", inputs: ["class"] }, { kind: "directive", type: TabComponent, selector: "tab, Tab", inputs: ["class", "variant", "size", "noTruncate", "value", "active"], outputs: ["clicked"] }, { kind: "directive", type: TabsListComponent, selector: "tabs-list, TabsList", inputs: ["class", "variant", "size"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
12250
12654
|
}
|
|
12251
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12655
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerAdvancedFiltersComponent, decorators: [{
|
|
12252
12656
|
type: Component,
|
|
12253
12657
|
args: [{ selector: "advanced-filters", standalone: true, imports: [
|
|
12254
12658
|
ReactiveFormsModule,
|
|
@@ -12263,7 +12667,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
12263
12667
|
TabsListComponent
|
|
12264
12668
|
], providers: [DrawerService, SyslangPipe, TranslocoPipe, provideTranslocoScope("drawers")], host: {
|
|
12265
12669
|
class: "fixed bg-background grid h-full top-0 -right-full justify-end"
|
|
12266
|
-
}, template: "<div (click)=\"drawer.toggleExtension()\" (keydown.escape)=\"drawer.toggleExtension()\" [attr.aria-hidden]=\"true\"></div>\n\n<div class=\"flex h-full flex-col overflow-auto\">\n <DrawerNavbar class=\"border-foreground/10 block border-b\">\n <button [attr.title]=\"'drawers.search' | transloco\" (click)=\"onSearch()\">\n {{ 'drawers.search' | transloco }}\n </button>\n </DrawerNavbar>\n\n <div class=\"flex h-full grow flex-col overflow-auto\">\n <section class=\"flex flex-col gap-4 p-6\" [formGroup]=\"form\">\n <!-- FIND IN -->\n <h1 class=\"text-xl font-bold\">{{ 'drawers.findInContent' | transloco }}</h1>\n <div class=\"flex items-center gap-4\" formGroupName=\"content\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInContent' | transloco }}</span>\n <select\n id=\"content-operator\"\n class=\"hover:outline-primary focus:outline-primary border-foreground/10 bg-background hover:bg-muted focus:bg-muted h-8 w-full rounded-md border px-2 hover:outline focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input\n [variant]=\"inputVariant()\"\n id=\"content-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('content.operator')\"\n formControlName=\"value\" />\n </div>\n @if (enableFieldedSearch()) {\n <div class=\"flex items-center gap-4\" formGroupName=\"title\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInTitle' | transloco }}</span>\n <select\n id=\"title-operator\"\n class=\"hover:outline-primary focus:outline-primary border-foreground/10 bg-background hover:bg-muted focus:bg-muted h-8 w-full rounded-md border px-2 hover:outline focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input id=\"title-value\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\" [placeholder]=\"getPlaceholder('title.operator')\" formControlName=\"value\" />\n </div>\n }\n\n <!-- TABS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.inScope' | transloco }} "{{ currentTab() }}"</h1>\n\n <Tabs>\n <TabsList variant=\"ghost\">\n @for (tab of tabs(); track $index) {\n <Tab class=\"w-fit\" [value]=\"tab.path\" [active]=\"tab.path === currentTab()\" (click)=\"onTabChange(tab.path)\">\n {{ tab.display | syslang | transloco }}\n </Tab>\n }\n </TabsList>\n </Tabs>\n\n <!-- FILTERS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.applyFilters' | transloco }}</h1>\n @for (filter of filters(); track $index) {\n <DropdownInput\n [suggestions]=\"suggestions()\"\n [selected]=\"getItems(filter.column)\"\n [label]=\"filter.display || filter.alias | syslang | transloco\"\n [placeholder]=\"'drawers.startTyping' | transloco\"\n [noResultLabel]=\"'drawers.noResult' | transloco\"\n (onFocus)=\"setFilterFocus($event, filter)\"\n (onKeyUp)=\"onInputTyping($event)\"\n (removeItem)=\"removeItem($event, filter)\"\n (addItem)=\"addItem($event, filter)\" />\n } @empty {\n {{ 'drawers.noFilters' | transloco }}\n }\n </section>\n </div>\n</div>\n", styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{width:100vw;right:calc(var(--spacing) * 0);grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}
|
|
12670
|
+
}, template: "<div (click)=\"drawer.toggleExtension()\" (keydown.escape)=\"drawer.toggleExtension()\" [attr.aria-hidden]=\"true\"></div>\n\n<div class=\"flex h-full flex-col overflow-auto\">\n <DrawerNavbar class=\"border-foreground/10 block border-b\">\n <button [attr.title]=\"'drawers.search' | transloco\" (click)=\"onSearch()\">\n {{ 'drawers.search' | transloco }}\n </button>\n </DrawerNavbar>\n\n <div class=\"flex h-full grow flex-col overflow-auto\">\n <section class=\"flex flex-col gap-4 p-6\" [formGroup]=\"form\">\n <!-- FIND IN -->\n <h1 class=\"text-xl font-bold\">{{ 'drawers.findInContent' | transloco }}</h1>\n <div class=\"flex items-center gap-4\" formGroupName=\"content\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInContent' | transloco }}</span>\n <select\n id=\"content-operator\"\n class=\"hover:outline-primary focus:outline-primary border-foreground/10 bg-background hover:bg-muted focus:bg-muted h-8 w-full rounded-md border px-2 hover:outline focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input\n [variant]=\"inputVariant()\"\n id=\"content-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('content.operator')\"\n formControlName=\"value\" />\n </div>\n @if (enableFieldedSearch()) {\n <div class=\"flex items-center gap-4\" formGroupName=\"title\">\n <span class=\"w-1/3 font-semibold\">{{ 'drawers.findInTitle' | transloco }}</span>\n <select\n id=\"title-operator\"\n class=\"hover:outline-primary focus:outline-primary border-foreground/10 bg-background hover:bg-muted focus:bg-muted h-8 w-full rounded-md border px-2 hover:outline focus:outline\"\n formControlName=\"operator\">\n @for (data of selectData; track $index) {\n <option [value]=\"data.operator\">{{ 'drawers.' + data.display | transloco }}</option>\n }\n </select>\n <input id=\"title-value\" type=\"text\" autocomplete=\"off\" spellcheck=\"false\" [placeholder]=\"getPlaceholder('title.operator')\" formControlName=\"value\" />\n </div>\n }\n\n <!-- TABS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.inScope' | transloco }} "{{ currentTab() }}"</h1>\n\n <Tabs>\n <TabsList variant=\"ghost\">\n @for (tab of tabs(); track $index) {\n <Tab class=\"w-fit\" [value]=\"tab.path\" [active]=\"tab.path === currentTab()\" (click)=\"onTabChange(tab.path)\">\n {{ tab.display | syslang | transloco }}\n </Tab>\n }\n </TabsList>\n </Tabs>\n\n <!-- FILTERS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.applyFilters' | transloco }}</h1>\n @for (filter of filters(); track $index) {\n <DropdownInput\n [suggestions]=\"suggestions()\"\n [selected]=\"getItems(filter.column)\"\n [label]=\"filter.display || filter.alias | syslang | transloco\"\n [placeholder]=\"'drawers.startTyping' | transloco\"\n [noResultLabel]=\"'drawers.noResult' | transloco\"\n (onFocus)=\"setFilterFocus($event, filter)\"\n (onKeyUp)=\"onInputTyping($event)\"\n (removeItem)=\"removeItem($event, filter)\"\n (addItem)=\"addItem($event, filter)\" />\n } @empty {\n {{ 'drawers.noFilters' | transloco }}\n }\n </section>\n </div>\n</div>\n", styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{width:100vw;right:calc(var(--spacing) * 0);grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}\n"] }]
|
|
12267
12671
|
}], ctorParameters: () => [] });
|
|
12268
12672
|
|
|
12269
12673
|
/**
|
|
@@ -12341,8 +12745,8 @@ class EntitiesPanel {
|
|
|
12341
12745
|
navigatePrev(entity, data) {
|
|
12342
12746
|
this.navigate(entity, data, "prev");
|
|
12343
12747
|
}
|
|
12344
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12345
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12748
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EntitiesPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12749
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: EntitiesPanel, isStandalone: true, selector: "entities-panel,EntitiesPanel,entitiesPanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
12346
12750
|
<details class="group/parent" name="advanced-search-panels">
|
|
12347
12751
|
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
12348
12752
|
<p class="flex items-baseline gap-2 font-semibold capitalize">
|
|
@@ -12399,7 +12803,7 @@ class EntitiesPanel {
|
|
|
12399
12803
|
</ng-template>
|
|
12400
12804
|
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: ChevronLeftIcon, selector: "chevron-left, ChevronLeft, chevronleft, chevron-left-icon, ChevronLeftIcon, chevronlefticon", inputs: ["class"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "component", type: HighlighterIcon, selector: "highlighter-icon, HighlighterIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
12401
12805
|
}
|
|
12402
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12806
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EntitiesPanel, decorators: [{
|
|
12403
12807
|
type: Component,
|
|
12404
12808
|
args: [{
|
|
12405
12809
|
selector: "entities-panel,EntitiesPanel,entitiesPanel",
|
|
@@ -12495,8 +12899,8 @@ class ExtractsPanel {
|
|
|
12495
12899
|
this.previewService.events.set("scrollTo");
|
|
12496
12900
|
this.previewService.sendMessage({ action: "select", id: `${category}_${index}`, usePassageHighlighter });
|
|
12497
12901
|
}
|
|
12498
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12499
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12902
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ExtractsPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12903
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: ExtractsPanel, isStandalone: true, selector: "extracts-panel, ExtractsPanel, extractspanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
12500
12904
|
<details class="group" name="advanced-search-panels" open>
|
|
12501
12905
|
<summary [class]="cn('sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3', '')">
|
|
12502
12906
|
<p class="flex items-baseline gap-2 font-semibold">
|
|
@@ -12525,7 +12929,7 @@ class ExtractsPanel {
|
|
|
12525
12929
|
</details>
|
|
12526
12930
|
`, isInline: true, dependencies: [{ kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: TagsIcon, selector: "tags-icon, TagsIcon", inputs: ["class"] }, { kind: "component", type: SpinnerIcon, selector: "spinner-icon, SpinnerIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
12527
12931
|
}
|
|
12528
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12932
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ExtractsPanel, decorators: [{
|
|
12529
12933
|
type: Component,
|
|
12530
12934
|
args: [{
|
|
12531
12935
|
selector: "extracts-panel, ExtractsPanel, extractspanel",
|
|
@@ -12577,8 +12981,8 @@ class LabelsPanel {
|
|
|
12577
12981
|
const privateLabels = articleRecord[this.labels.private];
|
|
12578
12982
|
return (publicLabels && publicLabels.length > 0) || (privateLabels && privateLabels.length > 0);
|
|
12579
12983
|
}, ...(ngDevMode ? [{ debugName: "hasLabels" }] : []));
|
|
12580
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12581
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12984
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LabelsPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12985
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: LabelsPanel, isStandalone: true, selector: "labels-panel, LabelsPanel, labelspanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
12582
12986
|
@if (hasLabels()) {
|
|
12583
12987
|
<details class="group" name="advanced-search-panels">
|
|
12584
12988
|
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
@@ -12605,7 +13009,7 @@ class LabelsPanel {
|
|
|
12605
13009
|
}
|
|
12606
13010
|
`, isInline: true, dependencies: [{ kind: "component", type: MetadataComponent, selector: "Metadata, metadata", inputs: ["class", "variant", "metadata", "article", "limit"], outputs: ["click"], exportAs: ["metadata"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: TagsIcon, selector: "tags-icon, TagsIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
12607
13011
|
}
|
|
12608
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13012
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LabelsPanel, decorators: [{
|
|
12609
13013
|
type: Component,
|
|
12610
13014
|
args: [{
|
|
12611
13015
|
selector: "labels-panel, LabelsPanel, labelspanel",
|
|
@@ -12671,8 +13075,8 @@ class SimilarDocumentsPanel {
|
|
|
12671
13075
|
}
|
|
12672
13076
|
return [];
|
|
12673
13077
|
}, ...(ngDevMode ? [{ debugName: "similarDocuments" }] : []));
|
|
12674
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12675
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
13078
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SimilarDocumentsPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13079
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SimilarDocumentsPanel, isStandalone: true, selector: "similar-documents-panel, SimilarDocumentsPanel, similardocumentspanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, strategy: { classPropertyName: "strategy", publicName: "strategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, ngImport: i0, template: `
|
|
12676
13080
|
@if (similarDocuments().length > 0) {
|
|
12677
13081
|
<details class="group" name="advanced-search-panels">
|
|
12678
13082
|
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
@@ -12701,7 +13105,7 @@ class SimilarDocumentsPanel {
|
|
|
12701
13105
|
}
|
|
12702
13106
|
`, isInline: true, dependencies: [{ kind: "directive", type: SelectArticleOnClickDirective, selector: "[selectArticleOnClick]", inputs: ["article", "strategy", "redirectUrl"], outputs: ["selected"] }, { kind: "component", type: SourceComponent, selector: "source, Source", inputs: ["collection", "connector"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: TagsIcon, selector: "tags-icon, TagsIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
12703
13107
|
}
|
|
12704
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SimilarDocumentsPanel, decorators: [{
|
|
12705
13109
|
type: Component,
|
|
12706
13110
|
args: [{
|
|
12707
13111
|
selector: "similar-documents-panel, SimilarDocumentsPanel, similardocumentspanel",
|
|
@@ -12774,10 +13178,10 @@ class AdvancedSearchComponent {
|
|
|
12774
13178
|
clearInput() {
|
|
12775
13179
|
this.queryText.set("");
|
|
12776
13180
|
}
|
|
12777
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12778
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
13181
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13182
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AdvancedSearchComponent, isStandalone: true, selector: "advanced-search", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null }, previewStrategy: { classPropertyName: "previewStrategy", publicName: "previewStrategy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, providers: [provideTranslocoScope("drawers")], ngImport: i0, template: "@if (article()) {\r\n <div\r\n [class]=\"\r\n cn(\r\n 'scroll-stable flex flex-col overflow-y-auto pr-3 pb-6 pl-6',\r\n '[&_details]:border-muted-foreground/18 [&_details]:border-b',\r\n '[&_details>summary]:bg-menu [&_details_details]:last:border-b-0',\r\n '[&_details>summary>i>svg]:transition-transform [&_details>summary>i>svg]:duration-300',\r\n '[&>details>summary>i>svg]:group-open/parent:rotate-180'\r\n )\r\n \">\r\n <section class=\"mt-6 mb-4 flex w-full flex-col gap-6\">\r\n <header\r\n id=\"panel-control\"\r\n class=\"focus-within:outline-primary not-focus-within:hover:outline-muted-foreground group flex rounded focus-within:outline hover:outline\">\r\n <div\r\n class=\"bg-muted flex grow items-center gap-2 rounded-s rounded-e-none px-3\">\r\n <input\r\n id=\"advanced-search-input\"\r\n type=\"search\"\r\n class=\"grow focus:outline-none\"\r\n autocomplete=\"off\"\r\n spellcheck=\"false\"\r\n [attr.placeholder]=\"'drawers.inputPlaceholder' | transloco\"\r\n [attr.aria-label]=\"'drawers.inputPlaceholder' | transloco\"\r\n [ngModel]=\"queryText()\"\r\n (ngModelChange)=\"queryText.set($event)\"\r\n (keydown.enter)=\"executeSearch()\" />\r\n\r\n @if (queryText() !== \"\") {\r\n <button\r\n [iconOnly]=\"true\"\r\n size=\"sm\"\r\n [attr.title]=\"'clear' | transloco\"\r\n [attr.aria-label]=\"'clear' | transloco\"\r\n (click)=\"clearInput()\"\r\n (keydown.enter)=\"clearInput()\">\r\n <xmark-icon />\r\n </button>\r\n }\r\n </div>\r\n\r\n <button\r\n class=\"size-8 rounded-s-none rounded-e-lg\"\r\n [disabled]=\"queryText() === '' || null\"\r\n [attr.title]=\"'search' | transloco\"\r\n [attr.aria-label]=\"'search' | transloco\"\r\n (click)=\"executeSearch()\">\r\n <magnifying-glass-icon />\r\n </button>\r\n </header>\r\n </section>\r\n\r\n <!-- the same name is used everywhere to simulate an accordion -->\r\n <!-- extracts -->\r\n <ExtractsPanel [article]=\"article()\" />\r\n\r\n <!-- labels -->\r\n <LabelsPanel [article]=\"article()\" />\r\n\r\n <!-- entities -->\r\n <EntitiesPanel [article]=\"article()\" />\r\n\r\n <!-- similar documents -->\r\n <SimilarDocumentsPanel\r\n [article]=\"article()\"\r\n [strategy]=\"previewStrategy()\"\r\n (selected)=\"selected.emit($event)\" />\r\n </div>\r\n}\r\n", styles: [":host{--panel-max-height: none}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: SimilarDocumentsPanel, selector: "similar-documents-panel, SimilarDocumentsPanel, similardocumentspanel", inputs: ["article", "strategy"], outputs: ["selected"] }, { kind: "component", type: EntitiesPanel, selector: "entities-panel,EntitiesPanel,entitiesPanel", inputs: ["article"] }, { kind: "component", type: LabelsPanel, selector: "labels-panel, LabelsPanel, labelspanel", inputs: ["article"] }, { kind: "component", type: ExtractsPanel, selector: "extracts-panel, ExtractsPanel, extractspanel", inputs: ["article"] }, { kind: "component", type: XMarkIcon, selector: "XMarkIcon, xmark-icon, x-mark-icon", inputs: ["class"] }, { kind: "component", type: MagnifyingGlassIcon, selector: "magnifying-glass-icon, MagnifyingGlassIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
12779
13183
|
}
|
|
12780
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedSearchComponent, decorators: [{
|
|
12781
13185
|
type: Component,
|
|
12782
13186
|
args: [{ selector: "advanced-search", standalone: true, providers: [provideTranslocoScope("drawers")], imports: [
|
|
12783
13187
|
FormsModule,
|
|
@@ -12843,10 +13247,10 @@ class DrawerPreviewComponent extends DrawerComponent {
|
|
|
12843
13247
|
}
|
|
12844
13248
|
});
|
|
12845
13249
|
}
|
|
12846
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12847
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
13250
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerPreviewComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
13251
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: DrawerPreviewComponent, isStandalone: true, selector: "DrawerPreview, drawerpreview", inputs: { articleId: { classPropertyName: "articleId", publicName: "articleId", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "bg-transparent text-foreground" }, providers: [DrawerService, PreviewService], usesInheritance: true, ngImport: i0, template: "<!-- when the extended panel is open clicking in the backdrop panel close it -->\n<div (click)=\"drawer.toggleExtension()\" (keydown.escape)=\"drawer.toggleExtension()\" [attr.aria-hidden]=\"true\"></div>\n\n<div class=\"bg-menu flex overflow-auto\">\n <!-- Drawer handle when extended -->\n <div\n #drawerHandle\n class=\"fixed h-full w-[5px] select-none hover:cursor-ew-resize hover:bg-orange-300\"\n [ngClass]=\"{ hidden: drawer.isExtended() === false }\"></div>\n\n @if (previewType()) {\n <ng-container *ngComponentOutlet=\"previewType()\" />\n }\n</div>\n\n<!-- this is the extended panel -->\n@if (article()) {\n <div [class.invisible]=\"!drawer.isExtended()\" class=\"bg-menu border-foreground/18 flex flex-col border-l\">\n <div class=\"relative flex grow flex-col\">\n <advanced-search class=\"absolute h-full w-full overflow-y-auto\" [article]=\"article()!\" (close)=\"drawer.collapse()\" />\n </div>\n </div>\n}\n", styles: [":host{--drawer-width: 46;--drawer-subdrawer-width: 400px;display:grid;height:100%;top:0;right:-100%;justify-content:flex-end;width:calc(100vw / 100 * var(--drawer-width) + var(--drawer-subdrawer-width));z-index:var(--z-drawer);grid-template-columns:0 1fr var(--drawer-subdrawer-width);transition:right .3s ease-in-out,transform .3s ease-in-out}:host[drawer-opened=true]{right:calc(var(--drawer-subdrawer-width) * -1);box-shadow:var(--drawer-box-shadow)}:host[drawer-extended=true]{right:0;width:100vw;grid-template-columns:1fr calc(var(--drawer-width) * 1%) var(--drawer-subdrawer-width);box-shadow:unset}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: AdvancedSearchComponent, selector: "advanced-search", inputs: ["article", "previewStrategy"], outputs: ["selected"] }] });
|
|
12848
13252
|
}
|
|
12849
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13253
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerPreviewComponent, decorators: [{
|
|
12850
13254
|
type: Component,
|
|
12851
13255
|
args: [{ selector: "DrawerPreview, drawerpreview", standalone: true, imports: [NgClass, NgComponentOutlet, AdvancedSearchComponent], providers: [DrawerService, PreviewService], host: {
|
|
12852
13256
|
class: "bg-transparent text-foreground"
|
|
@@ -12967,10 +13371,10 @@ class DrawerStackComponent {
|
|
|
12967
13371
|
drawer?.destroy();
|
|
12968
13372
|
}, 250);
|
|
12969
13373
|
}
|
|
12970
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12971
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
13374
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerStackComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
13375
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: DrawerStackComponent, isStandalone: true, selector: "DrawerStack, drawerstack", host: { properties: { "attr.drawer-opened": "drawerOpened()" } }, ngImport: i0, template: ``, isInline: true, styles: [":host{position:absolute;top:50%;right:0;--drawer-width: 46;--drawer-subdrawer-width: 400px;z-index:var(--z-drawer);transition:right .3s linear}:host[drawer-opened=true]{right:calc(1% * var(--drawer-width))}\n"] });
|
|
12972
13376
|
}
|
|
12973
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13377
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: DrawerStackComponent, decorators: [{
|
|
12974
13378
|
type: Component,
|
|
12975
13379
|
args: [{ selector: "DrawerStack, drawerstack", template: ``, host: {
|
|
12976
13380
|
"[attr.drawer-opened]": "drawerOpened()"
|
|
@@ -13003,8 +13407,8 @@ class FeedbackDialogComponent {
|
|
|
13003
13407
|
this.dialog()?.close();
|
|
13004
13408
|
notify.success(this.transloco.translate("feedback.feedbackSuccess"), { duration: 2000 });
|
|
13005
13409
|
}
|
|
13006
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
13007
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
13410
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FeedbackDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13411
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FeedbackDialogComponent, isStandalone: true, selector: "feedback-dialog, feedbackdialog, FeedbackDialog", inputs: { comment: { classPropertyName: "comment", publicName: "comment", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { comment: "commentChange" }, providers: [provideTranslocoScope("feedback")], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
13008
13412
|
<dialog #dialog>
|
|
13009
13413
|
<DialogContent>
|
|
13010
13414
|
<DialogHeader>
|
|
@@ -13033,7 +13437,7 @@ class FeedbackDialogComponent {
|
|
|
13033
13437
|
</dialog>
|
|
13034
13438
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
13035
13439
|
}
|
|
13036
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13440
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FeedbackDialogComponent, decorators: [{
|
|
13037
13441
|
type: Component,
|
|
13038
13442
|
args: [{
|
|
13039
13443
|
selector: "feedback-dialog, feedbackdialog, FeedbackDialog",
|
|
@@ -13089,6 +13493,7 @@ class SearchFeedbackComponent {
|
|
|
13089
13493
|
auditService = inject(AuditService);
|
|
13090
13494
|
queryParamsStore = inject(QueryParamsStore);
|
|
13091
13495
|
transloco = inject(TranslocoService);
|
|
13496
|
+
appStore = inject(AppStore);
|
|
13092
13497
|
liked = signal(false, ...(ngDevMode ? [{ debugName: "liked" }] : []));
|
|
13093
13498
|
disliked = signal(false, ...(ngDevMode ? [{ debugName: "disliked" }] : []));
|
|
13094
13499
|
menus = [
|
|
@@ -13140,12 +13545,20 @@ class SearchFeedbackComponent {
|
|
|
13140
13545
|
openFeedbackDialog(type) {
|
|
13141
13546
|
this.feedbackDialog()?.open(type);
|
|
13142
13547
|
}
|
|
13143
|
-
|
|
13144
|
-
|
|
13548
|
+
effectiveConfig = computed(() => ({
|
|
13549
|
+
like: true, dislike: true, content: true, ui: true, lang: true, other: true,
|
|
13550
|
+
...this.appStore.general()?.feedback,
|
|
13551
|
+
}), ...(ngDevMode ? [{ debugName: "effectiveConfig" }] : []));
|
|
13552
|
+
visibleMenus = computed(() => this.menus.filter(m => this.effectiveConfig()[m.type]), ...(ngDevMode ? [{ debugName: "visibleMenus" }] : []));
|
|
13553
|
+
showButton = computed(() => Object.values(this.effectiveConfig()).some(Boolean), ...(ngDevMode ? [{ debugName: "showButton" }] : []));
|
|
13554
|
+
showLike = computed(() => this.effectiveConfig().like, ...(ngDevMode ? [{ debugName: "showLike" }] : []));
|
|
13555
|
+
showDislike = computed(() => this.effectiveConfig().dislike, ...(ngDevMode ? [{ debugName: "showDislike" }] : []));
|
|
13556
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13557
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SearchFeedbackComponent, isStandalone: true, selector: "feedback, Feedback", inputs: { pages: { classPropertyName: "pages", publicName: "pages", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, solid: { classPropertyName: "solid", publicName: "solid", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClose: "onClose" }, providers: [provideTranslocoScope('feedback')], viewQueries: [{ propertyName: "feedbackDialog", first: true, predicate: FeedbackDialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@if (showButton()) {\r\n <menu>\r\n @let feedback = \"feedback.label\" | transloco;\r\n <button [variant]=\"variant()\" [solid]=\"solid()\" [aria-label]=\"feedback\">\r\n <comment-icon />\r\n <span>{{ feedback }}</span>\r\n <x-mark-icon class=\"ms-2\" (click)=\"close($event)\" />\r\n </button>\r\n\r\n <MenuContent>\r\n @if (showLike() && !disliked()) {\r\n @let feedbackLike = \"feedback.like\" | transloco;\r\n @let feedbackLiked = \"feedback.liked\" | transloco;\r\n <menuitem (click)=\"like()\" aria-label=\"feedback\">\r\n @if (liked()) {\r\n <thumbs-up-icon [fill]=\"true\" />\r\n {{ feedbackLiked }}\r\n } @else {\r\n <thumbs-up-icon />\r\n {{ feedbackLike }}\r\n }\r\n </menuitem>\r\n }\r\n\r\n @if (showDislike() && !liked()) {\r\n <menuitem\r\n (click)=\"dislike()\"\r\n [aria-label]=\"'feedback.dislike' | transloco\">\r\n @if (disliked()) {\r\n <thumbs-down-icon [fill]=\"true\" />\r\n {{ \"feedback.disliked\" | transloco }}\r\n } @else {\r\n <thumbs-down-icon />\r\n {{ \"feedback.dislike\" | transloco }}\r\n }\r\n </menuitem>\r\n }\r\n @for (menu of visibleMenus(); track menu.type) {\r\n @let feedbackTitle = \"feedback.\" + menu.type + \".title\" | transloco;\r\n <menuitem\r\n (click)=\"openFeedbackDialog(menu.type)\"\r\n [aria-label]=\"feedbackTitle\">\r\n <fa-icon [faClass]=\"menu.icon\" />\r\n {{ feedbackTitle }}\r\n </menuitem>\r\n }\r\n </MenuContent>\r\n </menu>\r\n}\r\n\r\n<feedback-dialog />\r\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: FeedbackDialogComponent, selector: "feedback-dialog, feedbackdialog, FeedbackDialog", inputs: ["comment"], outputs: ["commentChange"] }, { kind: "component", type: CommentIcon, selector: "comment-icon, CommentIcon", inputs: ["class"] }, { kind: "component", type: XMarkIcon, selector: "XMarkIcon, xmark-icon, x-mark-icon", inputs: ["class"] }, { kind: "component", type: ThumbsUpIcon, selector: "thumbs-up-icon, ThumbsUpIcon, thumbsupicon", inputs: ["class", "fill", "solid"] }, { kind: "component", type: ThumbsDownIcon, selector: "thumbs-down-icon, ThumbsDownIcon", inputs: ["class", "fill", "solid"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
13145
13558
|
}
|
|
13146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13559
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchFeedbackComponent, decorators: [{
|
|
13147
13560
|
type: Component,
|
|
13148
|
-
args: [{ selector: 'feedback, Feedback', standalone: true, imports: [ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, TranslocoPipe, FeedbackDialogComponent, CommentIcon, XMarkIcon, ThumbsUpIcon, ThumbsDownIcon, FaIconComponent], providers: [provideTranslocoScope('feedback')], template: "<menu>\r\n
|
|
13561
|
+
args: [{ selector: 'feedback, Feedback', standalone: true, imports: [ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, TranslocoPipe, FeedbackDialogComponent, CommentIcon, XMarkIcon, ThumbsUpIcon, ThumbsDownIcon, FaIconComponent], providers: [provideTranslocoScope('feedback')], template: "@if (showButton()) {\r\n <menu>\r\n @let feedback = \"feedback.label\" | transloco;\r\n <button [variant]=\"variant()\" [solid]=\"solid()\" [aria-label]=\"feedback\">\r\n <comment-icon />\r\n <span>{{ feedback }}</span>\r\n <x-mark-icon class=\"ms-2\" (click)=\"close($event)\" />\r\n </button>\r\n\r\n <MenuContent>\r\n @if (showLike() && !disliked()) {\r\n @let feedbackLike = \"feedback.like\" | transloco;\r\n @let feedbackLiked = \"feedback.liked\" | transloco;\r\n <menuitem (click)=\"like()\" aria-label=\"feedback\">\r\n @if (liked()) {\r\n <thumbs-up-icon [fill]=\"true\" />\r\n {{ feedbackLiked }}\r\n } @else {\r\n <thumbs-up-icon />\r\n {{ feedbackLike }}\r\n }\r\n </menuitem>\r\n }\r\n\r\n @if (showDislike() && !liked()) {\r\n <menuitem\r\n (click)=\"dislike()\"\r\n [aria-label]=\"'feedback.dislike' | transloco\">\r\n @if (disliked()) {\r\n <thumbs-down-icon [fill]=\"true\" />\r\n {{ \"feedback.disliked\" | transloco }}\r\n } @else {\r\n <thumbs-down-icon />\r\n {{ \"feedback.dislike\" | transloco }}\r\n }\r\n </menuitem>\r\n }\r\n @for (menu of visibleMenus(); track menu.type) {\r\n @let feedbackTitle = \"feedback.\" + menu.type + \".title\" | transloco;\r\n <menuitem\r\n (click)=\"openFeedbackDialog(menu.type)\"\r\n [aria-label]=\"feedbackTitle\">\r\n <fa-icon [faClass]=\"menu.icon\" />\r\n {{ feedbackTitle }}\r\n </menuitem>\r\n }\r\n </MenuContent>\r\n </menu>\r\n}\r\n\r\n<feedback-dialog />\r\n" }]
|
|
13149
13562
|
}], propDecorators: { onClose: [{ type: i0.Output, args: ["onClose"] }], feedbackDialog: [{ type: i0.ViewChild, args: [i0.forwardRef(() => FeedbackDialogComponent), { isSignal: true }] }], pages: [{ type: i0.Input, args: [{ isSignal: true, alias: "pages", required: true }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], solid: [{ type: i0.Input, args: [{ isSignal: true, alias: "solid", required: false }] }] } });
|
|
13150
13563
|
|
|
13151
13564
|
class AggregationPanelComponent {
|
|
@@ -13207,10 +13620,10 @@ class AggregationPanelComponent {
|
|
|
13207
13620
|
e.stopImmediatePropagation();
|
|
13208
13621
|
this.searchText.set("");
|
|
13209
13622
|
}
|
|
13210
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
13211
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
13623
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13624
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AggregationPanelComponent, isStandalone: true, selector: "AggregationPanel, aggregation-panel", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, isDate: { classPropertyName: "isDate", publicName: "isDate", isSignal: true, isRequired: false, transformFunction: null }, isEmpty: { classPropertyName: "isEmpty", publicName: "isEmpty", isSignal: true, isRequired: false, transformFunction: null }, aggregation: { classPropertyName: "aggregation", publicName: "aggregation", isSignal: true, isRequired: false, transformFunction: null }, showFiltersCount: { classPropertyName: "showFiltersCount", publicName: "showFiltersCount", isSignal: true, isRequired: false, transformFunction: null }, filtersCount: { classPropertyName: "filtersCount", publicName: "filtersCount", isSignal: true, isRequired: false, transformFunction: null }, hasFilters: { classPropertyName: "hasFilters", publicName: "hasFilters", isSignal: true, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: true, isRequired: false, transformFunction: null }, isAllSelected: { classPropertyName: "isAllSelected", publicName: "isAllSelected", isSignal: true, isRequired: false, transformFunction: null }, searchText: { classPropertyName: "searchText", publicName: "searchText", isSignal: true, isRequired: false, transformFunction: null }, itemsLength: { classPropertyName: "itemsLength", publicName: "itemsLength", isSignal: true, isRequired: false, transformFunction: null }, hasMore: { classPropertyName: "hasMore", publicName: "hasMore", isSignal: true, isRequired: false, transformFunction: null }, searchedItemsLength: { classPropertyName: "searchedItemsLength", publicName: "searchedItemsLength", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchText: "searchTextChange", cleared: "cleared", applied: "applied", allSelected: "allSelected", allUnselected: "allUnselected", loadedMore: "loadedMore" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<details\r\n [attr.open]=\"expanded()\"\r\n [attr.name]=\"id()\"\r\n class=\"group space-y-2\"\r\n (toggle)=\"onToggle($event)\">\r\n <summary\r\n [class.cursor-pointer]=\"collapsible() && !isEmpty()\"\r\n [class.text-muted-foreground]=\"isEmpty()\"\r\n class=\"m-0 mt-1 flex h-8 w-full items-center gap-1 pl-1 font-semibold select-none\"\r\n (click)=\"onHeaderClick($event)\">\r\n <ng-content select=\"label\">\r\n @let icon = aggregation()?.icon;\r\n @if (icon) {\r\n <FaIcon [faClass]=\"icon\" class=\"mr-1 shrink-0\" />\r\n }\r\n <span class=\"grow truncate\">{{\r\n aggregation()?.display | syslang | transloco\r\n }}</span>\r\n </ng-content>\r\n\r\n @if (showFiltersCount() && filtersCount() > 0) {\r\n <Badge size=\"xs\" class=\"ml-1\">\r\n {{ filtersCount() }}\r\n </Badge>\r\n }\r\n @if (!isCollapsed()) {\r\n @if (hasFilters()) {\r\n @let label = \"filters.clearFilters\" | transloco;\r\n <button\r\n variant=\"none\"\r\n icon-button\r\n [aria-label]=\"label\"\r\n (click)=\"$event.stopPropagation(); cleared.emit()\">\r\n <filter-x-icon />\r\n </button>\r\n }\r\n @if (selection()) {\r\n @let label = \"filters.apply\" | transloco;\r\n <button\r\n variant=\"accent\"\r\n size=\"sm\"\r\n [aria-label]=\"label\"\r\n (click)=\"$event.stopPropagation(); applied.emit()\">\r\n <FilterIcon />\r\n {{ label }}\r\n </button>\r\n }\r\n\r\n @if (isAllSelected()) {\r\n @let label = \"filters.unselectAllFilters\" | transloco;\r\n <button\r\n variant=\"none\"\r\n icon-button\r\n [aria-label]=\"label\"\r\n (click)=\"$event.stopPropagation(); allUnselected.emit()\">\r\n <square-check-icon />\r\n </button>\r\n } @else {\r\n @let label = \"filters.selectAllFilters\" | transloco;\r\n <button\r\n variant=\"none\"\r\n icon-button\r\n [aria-label]=\"label\"\r\n (click)=\"$event.stopPropagation(); allSelected.emit()\">\r\n <square-icon />\r\n </button>\r\n }\r\n }\r\n\r\n @if (collapsible()) {\r\n <icon-button\r\n title=\"Open/Close\"\r\n class=\"cursor-pointer [&_svg]:transition-transform [&_svg]:duration-150 group-open:[&_svg]:rotate-90\">\r\n <chevronright />\r\n <span class=\"sr-only\">{{ \"filters.toggle\" | transloco }}</span>\r\n </icon-button>\r\n }\r\n </summary>\r\n\r\n @if (aggregation()?.searchable && itemsLength() > 0) {\r\n <InputGroup class=\"group/item mt-1\">\r\n <input\r\n #searchInput\r\n input-group\r\n id=\"aggregation-input-{{ aggregation()?.column }}\"\r\n type=\"text\"\r\n [attr.aria-label]=\"'search' | transloco\"\r\n [attr.placeholder]=\"'search' | transloco\"\r\n [(ngModel)]=\"searchText\"\r\n class=\"mt-1\" />\r\n <InputGroupAddon>\r\n <SearchIcon\r\n class=\"text-foreground size-4 rotate-0 transition-[rotate] duration-500 group-focus-within/item:rotate-90\" />\r\n </InputGroupAddon>\r\n <InputGroupAddon align=\"inline-end\" class=\"gap-0.5!\">\r\n <icon-button\r\n size=\"sm\"\r\n [class]=\"\r\n searchText().length > 0\r\n ? 'rotate-90 cursor-pointer opacity-100 transition-[rotate,opacity] duration-500'\r\n : 'pointer-events-none rotate-0 opacity-0 transition-[rotate,opacity] duration-500'\r\n \"\r\n aria-label=\"Clear search\"\r\n [tabindex]=\"searchText().length > 0 ? 0 : -1\"\r\n (keydown.enter)=\"clearSearch($event)\"\r\n (click)=\"clearSearch($event)\">\r\n <XMarkIcon />\r\n </icon-button>\r\n <ng-content select=\"[search-addon]\" />\r\n </InputGroupAddon>\r\n </InputGroup>\r\n }\r\n\r\n <ng-content />\r\n\r\n @if (hasMore() && searchedItemsLength() === 0) {\r\n <button\r\n class=\"mt-1 flex w-full justify-center\"\r\n [attr.aria-label]=\"'loadMore' | transloco\"\r\n (click)=\"loadedMore.emit()\">\r\n {{ \"loadMore\" | transloco }}\r\n </button>\r\n }\r\n</details>\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size", "aria-label"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "directive", type: InputGroupInput, selector: "input[input-group]", inputs: ["class", "type", "placeholder", "disabled"] }, { kind: "directive", type: InputGroupComponent, selector: "input-group, inputgroup, InputGroup", inputs: ["class"] }, { kind: "directive", type: InputGroupAddonComponent, selector: "input-group-addon, inputgroupaddon, InputGroupAddon", inputs: ["class", "align"] }, { kind: "component", type: SearchIcon, selector: "SearchIcon", inputs: ["class"] }, { kind: "component", type: FilterIcon, selector: "filter-icon, FilterIcon", inputs: ["class"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "component", type: FilterXIcon, selector: "filter-x-icon, FilterXIcon", inputs: ["class"] }, { kind: "component", type: SquareCheckIcon, selector: "square-check-icon, SquareCheckIcon", inputs: ["class"] }, { kind: "component", type: SquareIcon, selector: "square-icon, SquareIcon", inputs: ["class"] }, { kind: "component", type: XMarkIcon, selector: "XMarkIcon, xmark-icon, x-mark-icon", inputs: ["class"] }, { kind: "directive", type: IconButtonComponent, selector: "button[icon-button], icon-button, IconButton", inputs: ["class", "size"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
13212
13625
|
}
|
|
13213
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13626
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationPanelComponent, decorators: [{
|
|
13214
13627
|
type: Component,
|
|
13215
13628
|
args: [{ selector: "AggregationPanel, aggregation-panel", standalone: true, imports: [
|
|
13216
13629
|
FormsModule,
|
|
@@ -13625,10 +14038,10 @@ class AggregationTreeComponent {
|
|
|
13625
14038
|
}
|
|
13626
14039
|
return false;
|
|
13627
14040
|
}
|
|
13628
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
13629
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
14041
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14042
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AggregationTreeComponent, isStandalone: true, selector: "AggregationTree, aggregation-tree, aggregationtree", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, showFiltersCount: { classPropertyName: "showFiltersCount", publicName: "showFiltersCount", isSignal: true, isRequired: false, transformFunction: null }, expandedLevel: { classPropertyName: "expandedLevel", publicName: "expandedLevel", isSignal: true, isRequired: false, transformFunction: null }, searchText: { classPropertyName: "searchText", publicName: "searchText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect", onApply: "onApply", onClear: "onClear", searchText: "searchTextChange" }, host: { properties: { "class": "cn(\"block h-[inherit] max-h-[inherit] w-[inherit]\", class())" } }, viewQueries: [{ propertyName: "virtualItems", predicate: ["virtualItem"], descendants: true, isSignal: true }, { propertyName: "scrollElement", first: true, predicate: ["scrollElement"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (!aggregation()?.isTree) {\r\n <div class=\"p-2 text-sm text-red-500\">\r\n <triangle-alert-icon class=\"mr-1\" />\r\n The aggregationTree component does not support list aggregations. Please use\r\n the <Aggregation /> component instead.\r\n </div>\r\n}\r\n<aggregation-panel\r\n [id]=\"id()\"\r\n [collapsible]=\"collapsible()\"\r\n [collapsed]=\"collapsed()\"\r\n [isEmpty]=\"isEmpty()\"\r\n [isDate]=\"isDate()\"\r\n [aggregation]=\"aggregation()\"\r\n [showFiltersCount]=\"showFiltersCount()\"\r\n [filtersCount]=\"filtersCount()\"\r\n [hasFilters]=\"hasFilters()\"\r\n [selection]=\"selection()\"\r\n [isAllSelected]=\"isAllSelected()\"\r\n [(searchText)]=\"searchText\"\r\n [itemsLength]=\"items().length\"\r\n [hasMore]=\"aggregation()?.$hasMore ?? false\"\r\n [searchedItemsLength]=\"searchedItems().length\"\r\n (cleared)=\"clear()\"\r\n (applied)=\"apply()\"\r\n (allSelected)=\"selectAll()\"\r\n (allUnselected)=\"unselectAll()\"\r\n (loadedMore)=\"loadMore()\">\r\n <div\r\n #scrollElement\r\n class=\"scrollbar-thin max-h-(--scroll-height,20rem) w-full overflow-auto\">\r\n <div\r\n class=\"relative w-full\"\r\n [style.height]=\"virtualizer.getTotalSize() + 'px'\"\r\n role=\"tree\"\r\n [attr.aria-label]=\"aggregation()?.display | syslang | transloco\">\r\n <div\r\n class=\"absolute top-0 left-0 w-full\"\r\n [style.transform]=\"\r\n 'translateY(' +\r\n (virtualizer.getVirtualItems()[0]\r\n ? virtualizer.getVirtualItems()[0].start\r\n : 0) +\r\n 'px)'\r\n \">\r\n @for (vItem of virtualizer.getVirtualItems(); track vItem.index) {\r\n @let item = items()[vItem.index];\r\n <div #virtualItem [attr.data-index]=\"vItem.index\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"treeItemTpl\"\r\n [ngTemplateOutletContext]=\"{\r\n node: item,\r\n path: [],\r\n field: aggregation()?.column,\r\n tpl: treeItemTpl,\r\n parent: null\r\n }\">\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</aggregation-panel>\r\n\r\n<ng-template\r\n #treeItemTpl\r\n let-node=\"node\"\r\n let-path=\"path\"\r\n let-field=\"field\"\r\n let-tpl=\"tpl\"\r\n let-parent=\"parent\">\r\n <div\r\n role=\"treeitem\"\r\n [style.--level]=\"treeItemLevel(node)\"\r\n [attr.aria-selected]=\"node.$selected ?? false\"\r\n [attr.aria-expanded]=\"\r\n node.hasChildren !== false ? (node.$opened ?? false) : null\r\n \"\r\n [attr.aria-disabled]=\"node.count === 0 ? 'true' : null\"\r\n [attr.disabled]=\"node.count === 0 ? 'disabled' : null\">\r\n <a\r\n [attr.aria-label]=\"treeItemName(node) | syslang\"\r\n [class]=\"\r\n cn(\r\n 'flex grow items-center gap-2 p-1 leading-7',\r\n node.count === 0 && 'disabled pointer-events-none',\r\n (node.$selected || node.$selectedVisually) && ''\r\n )\r\n \"\r\n (click)=\"selectTreeItem(node, parent, $event, true)\">\r\n <button\r\n variant=\"none\"\r\n [iconOnly]=\"true\"\r\n (click)=\"toggleTreeNode($event, node)\"\r\n class=\"transition-transform ease-in hover:scale-125\"\r\n aria-label=\"Open\">\r\n <ChevronRight\r\n [class]=\"\r\n cn(\r\n 'size-4 translate-x-1',\r\n node.$opened && 'rotate-90',\r\n !node.hasChildren && 'hidden'\r\n )\r\n \"\r\n width=\"16\"\r\n height=\"16\" />\r\n </button>\r\n <input\r\n type=\"checkbox\"\r\n role=\"checkbox\"\r\n value=\"{{ node.value }}\"\r\n [attr.disabled]=\"node.count === 0 ? true : null\"\r\n [attr.aria-disabled]=\"node.count === 0\"\r\n (keydown.enter)=\"selectTreeItem(node, parent, $event)\"\r\n [checked]=\"node.$selected || node.$selectedVisually\" />\r\n @let icon = node.icon;\r\n @if (icon) {\r\n <FaIcon [faClass]=\"icon\" class=\"self-center justify-self-center\" />\r\n }\r\n <span\r\n [class]=\"\r\n cn(\r\n 'line-clamp-1 break-all text-ellipsis',\r\n quickFilter() && 'hover:underline'\r\n )\r\n \"\r\n [title]=\"\r\n quickFilter()\r\n ? ((isTreeItemFiltered(node, field)\r\n ? 'filters.removeFilter'\r\n : 'filters.addFilter'\r\n ) | transloco) +\r\n ': ' +\r\n (treeItemName(node) | syslang)\r\n : (treeItemName(node) | syslang)\r\n \"\r\n (click)=\"onTreeItemTextClick(node, parent, $event)\">\r\n @for (\r\n chunk of (treeItemName(node) | syslang) ?? \"\"\r\n | highlightWord: searchText() : 10;\r\n track $index\r\n ) {\r\n <span [class]=\"{ 'font-bold': chunk.match }\" aria-hidden=\"true\">{{\r\n chunk.text\r\n }}</span>\r\n }\r\n </span>\r\n @if (showCount() && node.count > 0) {\r\n <span class=\"ml-auto px-1 text-xs empty:hidden\" aria-hidden=\"true\">{{\r\n node.count\r\n }}</span>\r\n }\r\n </a>\r\n @if (node.hasChildren && node.$opened) {\r\n <div role=\"group\">\r\n @for (child of node.items; track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"tpl\"\r\n [ngTemplateOutletContext]=\"{\r\n node: child,\r\n path: treeChildrenPath(node, path),\r\n field: field,\r\n tpl: tpl,\r\n parent: node\r\n }\">\r\n </ng-container>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n", styles: ["div[role=treeitem]:has(+div[role=treeitem]){margin-bottom:var(--agg-item-gap, 0)}div[role=treeitem]{display:block;-webkit-user-select:none;user-select:none}div[role=treeitem] a{padding-left:calc(var(--agg-tree-indent, .5rem) * var(--level, 0));line-height:var(--agg-item-height, inherit)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon, chevron-right-icon, chevronrighticon", inputs: ["class"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "component", type: TriangleAlertIcon, selector: "triangle-alert-icon, TriangleAlertIcon", inputs: ["class"] }, { kind: "component", type: AggregationPanelComponent, selector: "AggregationPanel, aggregation-panel", inputs: ["id", "collapsible", "collapsed", "isDate", "isEmpty", "aggregation", "showFiltersCount", "filtersCount", "hasFilters", "selection", "isAllSelected", "searchText", "itemsLength", "hasMore", "searchedItemsLength"], outputs: ["searchTextChange", "cleared", "applied", "allSelected", "allUnselected", "loadedMore"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: HighlightWordPipe, name: "highlightWord" }] });
|
|
13630
14043
|
}
|
|
13631
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
14044
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationTreeComponent, decorators: [{
|
|
13632
14045
|
type: Component,
|
|
13633
14046
|
args: [{ selector: "AggregationTree, aggregation-tree, aggregationtree", imports: [
|
|
13634
14047
|
NgTemplateOutlet,
|
|
@@ -13836,10 +14249,10 @@ class AggregationListComponent {
|
|
|
13836
14249
|
addCurrentFiltersToItems() {
|
|
13837
14250
|
return this.base.addCurrentFiltersToItems(this.aggregation());
|
|
13838
14251
|
}
|
|
13839
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
13840
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
14252
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14253
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AggregationListComponent, isStandalone: true, selector: "AggregationList, aggregation-list, aggregationlist", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, showFiltersCount: { classPropertyName: "showFiltersCount", publicName: "showFiltersCount", isSignal: true, isRequired: false, transformFunction: null }, searchText: { classPropertyName: "searchText", publicName: "searchText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect", onApply: "onApply", onClear: "onClear", searchText: "searchTextChange" }, host: { properties: { "class": "cn(\"block h-[inherit] max-h-[inherit]\", class())" } }, viewQueries: [{ propertyName: "scrollElement", first: true, predicate: ["scrollElement"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (aggregation()?.isTree) {\r\n <div class=\"p-2 text-sm text-red-500\">\r\n <triangle-alert-icon class=\"mr-1\" />\r\n The aggregation component no longer supports tree aggregations. Please use\r\n the <AggregationTree /> component instead.\r\n </div>\r\n}\r\n<aggregation-panel\r\n [id]=\"id()\"\r\n [collapsible]=\"collapsible()\"\r\n [collapsed]=\"collapsed()\"\r\n [isEmpty]=\"isEmpty()\"\r\n [isDate]=\"isDate()\"\r\n [aggregation]=\"aggregation()\"\r\n [showFiltersCount]=\"showFiltersCount()\"\r\n [filtersCount]=\"filtersCount()\"\r\n [hasFilters]=\"hasFilters()\"\r\n [selection]=\"selection()\"\r\n [isAllSelected]=\"isAllSelected()\"\r\n [(searchText)]=\"searchText\"\r\n [itemsLength]=\"items().length\"\r\n [hasMore]=\"aggregation()?.$hasMore ?? false\"\r\n [searchedItemsLength]=\"searchedItems().length\"\r\n (cleared)=\"clear()\"\r\n (applied)=\"apply()\"\r\n (allSelected)=\"selectAll()\"\r\n (allUnselected)=\"unselectAll()\"\r\n (loadedMore)=\"loadMore()\">\r\n <div\r\n #scrollElement\r\n class=\"scrollbar-thin max-h-(--scroll-height,20rem) w-full overflow-auto\">\r\n <div\r\n class=\"relative w-full\"\r\n [style.height]=\"virtualizer.getTotalSize() + 'px'\"\r\n role=\"listbox\"\r\n aria-multiselectable=\"true\"\r\n [attr.aria-label]=\"aggregation()?.display | syslang | transloco\">\r\n @for (vItem of virtualizer.getVirtualItems(); track vItem.index) {\r\n @let item = items()[vItem.index];\r\n <div\r\n class=\"absolute w-full\"\r\n [style.transform]=\"'translateY(' + vItem.start + 'px)'\"\r\n role=\"option\"\r\n [attr.aria-selected]=\"item.$selected ?? false\"\r\n [attr.aria-disabled]=\"item.count === 0 ? 'true' : null\"\r\n [attr.disabled]=\"item.count === 0 ? 'disabled' : null\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"listItemTpl\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: item,\r\n field: aggregation()?.column\r\n }\">\r\n </ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</aggregation-panel>\r\n\r\n<ng-template #listItemTpl let-item let-field=\"field\">\r\n <a\r\n [attr.aria-label]=\"listItemName(item) | syslang\"\r\n [class]=\"\r\n cn(\r\n 'flex grow items-center gap-2 p-1 leading-7',\r\n item.count === 0 && 'disabled pointer-events-none'\r\n )\r\n \"\r\n (click)=\"selectListItem(item, $event)\">\r\n <input\r\n type=\"checkbox\"\r\n role=\"checkbox\"\r\n value=\"{{ item.value }}\"\r\n [attr.disabled]=\"item.count === 0 ? true : null\"\r\n [attr.aria-disabled]=\"item.count === 0\"\r\n (keydown.enter)=\"selectListItem(item, $event)\"\r\n [checked]=\"item.$selected\" />\r\n @let icon = item.icon;\r\n @if (icon) {\r\n <FaIcon [faClass]=\"icon\" class=\"self-center justify-self-center\" />\r\n }\r\n <span\r\n [class]=\"\r\n cn(\r\n 'line-clamp-1 break-all text-ellipsis',\r\n quickFilter() && 'hover:underline'\r\n )\r\n \"\r\n [title]=\"\r\n quickFilter()\r\n ? ((isListItemFiltered(item, field)\r\n ? 'filters.removeFilter'\r\n : 'filters.addFilter'\r\n ) | transloco) +\r\n ': ' +\r\n (listItemName(item) | syslang)\r\n : (listItemName(item) | syslang)\r\n \"\r\n (click)=\"onListItemTextClick(item, $event)\">\r\n @for (\r\n chunk of (listItemName(item) | syslang) ?? \"\"\r\n | highlightWord: searchText() : 10;\r\n track $index\r\n ) {\r\n <span [class]=\"{ 'font-bold': chunk.match }\" aria-hidden=\"true\">{{\r\n chunk.text\r\n }}</span>\r\n }\r\n </span>\r\n @if (showCount() && item.count > 0) {\r\n <span class=\"ml-auto px-1 text-xs empty:hidden\" aria-hidden=\"true\">{{\r\n item.count\r\n }}</span>\r\n }\r\n </a>\r\n</ng-template>\r\n", styles: ["div[role=option]{display:block;-webkit-user-select:none;user-select:none}div[role=option] a{padding-left:var(--agg-tree-indent, .5rem);line-height:var(--agg-item-height, inherit)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "component", type: TriangleAlertIcon, selector: "triangle-alert-icon, TriangleAlertIcon", inputs: ["class"] }, { kind: "component", type: AggregationPanelComponent, selector: "AggregationPanel, aggregation-panel", inputs: ["id", "collapsible", "collapsed", "isDate", "isEmpty", "aggregation", "showFiltersCount", "filtersCount", "hasFilters", "selection", "isAllSelected", "searchText", "itemsLength", "hasMore", "searchedItemsLength"], outputs: ["searchTextChange", "cleared", "applied", "allSelected", "allUnselected", "loadedMore"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: HighlightWordPipe, name: "highlightWord" }] });
|
|
13841
14254
|
}
|
|
13842
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
14255
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationListComponent, decorators: [{
|
|
13843
14256
|
type: Component,
|
|
13844
14257
|
args: [{ selector: "AggregationList, aggregation-list, aggregationlist", imports: [
|
|
13845
14258
|
NgTemplateOutlet,
|
|
@@ -13967,8 +14380,8 @@ class AggregationComponent {
|
|
|
13967
14380
|
}
|
|
13968
14381
|
return this.appStore.isDateColumn(column);
|
|
13969
14382
|
}
|
|
13970
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
13971
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
14383
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14384
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AggregationComponent, isStandalone: true, selector: "Aggregation, aggregation", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, showFiltersCount: { classPropertyName: "showFiltersCount", publicName: "showFiltersCount", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, expandedLevel: { classPropertyName: "expandedLevel", publicName: "expandedLevel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect", onApply: "onApply", onClear: "onClear" }, host: { properties: { "class": "cn(\"block h-[inherit] max-h-[inherit]\",class())" } }, viewQueries: [{ propertyName: "aggregationDate", first: true, predicate: AggregationDateComponent, descendants: true, isSignal: true }, { propertyName: "aggregationTree", first: true, predicate: AggregationTreeComponent, descendants: true, isSignal: true }, { propertyName: "aggregationList", first: true, predicate: AggregationListComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
13972
14385
|
@if (isDate(aggregation()?.column)) {
|
|
13973
14386
|
<AggregationDate
|
|
13974
14387
|
[id]="id()"
|
|
@@ -14013,7 +14426,7 @@ class AggregationComponent {
|
|
|
14013
14426
|
}
|
|
14014
14427
|
`, isInline: true, dependencies: [{ kind: "component", type: AggregationListComponent, selector: "AggregationList, aggregation-list, aggregationlist", inputs: ["class", "id", "name", "column", "collapsible", "collapsed", "searchable", "showFiltersCount", "searchText"], outputs: ["onSelect", "onApply", "onClear", "searchTextChange"] }, { kind: "component", type: AggregationTreeComponent, selector: "AggregationTree, aggregation-tree, aggregationtree", inputs: ["class", "id", "name", "column", "collapsible", "collapsed", "searchable", "showFiltersCount", "expandedLevel", "searchText"], outputs: ["onSelect", "onApply", "onClear", "searchTextChange"] }, { kind: "component", type: AggregationDateComponent, selector: "aggregation-date, AggregationDate, aggregationdate", inputs: ["name", "column", "id", "collapsible", "collapsed", "searchable", "showFiltersCount", "title", "displayEmptyDistributionIntervals", "searchText"], outputs: ["onSelect", "onApply", "onClear", "searchTextChange"] }] });
|
|
14015
14428
|
}
|
|
14016
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
14429
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AggregationComponent, decorators: [{
|
|
14017
14430
|
type: Component,
|
|
14018
14431
|
args: [{
|
|
14019
14432
|
selector: "Aggregation, aggregation",
|
|
@@ -14086,8 +14499,8 @@ class AsideFiltersComponent {
|
|
|
14086
14499
|
isDate(column) {
|
|
14087
14500
|
return this.appStore.isDateColumn(column);
|
|
14088
14501
|
}
|
|
14089
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
14090
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
14502
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AsideFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14503
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: AsideFiltersComponent, isStandalone: true, selector: "aside-filters, AsideFilters, asidefilters", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "cn('flex flex-col gap-2 overflow-auto', class())" } }, ngImport: i0, template: `
|
|
14091
14504
|
<div class="flex flex-col gap-2">
|
|
14092
14505
|
@for (agg of asideFilters(); track agg.name) {
|
|
14093
14506
|
<Aggregation id="aside-filters" [name]="agg.name" [column]="agg.column" showFiltersCount />
|
|
@@ -14095,7 +14508,7 @@ class AsideFiltersComponent {
|
|
|
14095
14508
|
</div>
|
|
14096
14509
|
`, isInline: true, dependencies: [{ kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["class", "id", "name", "column", "showFiltersCount", "collapsible", "collapsed", "searchable", "expandedLevel"], outputs: ["onSelect", "onApply", "onClear"] }] });
|
|
14097
14510
|
}
|
|
14098
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
14511
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AsideFiltersComponent, decorators: [{
|
|
14099
14512
|
type: Component,
|
|
14100
14513
|
args: [{
|
|
14101
14514
|
selector: "aside-filters, AsideFilters, asidefilters",
|
|
@@ -14182,8 +14595,8 @@ class FilterButtonComponent {
|
|
|
14182
14595
|
isDate(column) {
|
|
14183
14596
|
return this.appStore.isDateColumn(column);
|
|
14184
14597
|
}
|
|
14185
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
14186
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
14598
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FilterButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14599
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FilterButtonComponent, isStandalone: true, selector: "filter-button, FilterButton", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, expandedLevel: { classPropertyName: "expandedLevel", publicName: "expandedLevel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listitem" }, properties: { "class.hidden": "filter().hidden" } }, viewQueries: [{ propertyName: "popoverRef", first: true, predicate: PopoverComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
14187
14600
|
<Popover [disabled]="filter().disabled" class="group">
|
|
14188
14601
|
<button
|
|
14189
14602
|
[variant]="variant()"
|
|
@@ -14238,9 +14651,9 @@ class FilterButtonComponent {
|
|
|
14238
14651
|
}
|
|
14239
14652
|
</PopoverContent>
|
|
14240
14653
|
</Popover>
|
|
14241
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"], outputs: ["closed"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["class", "position", "keepOpen", "offset", "strategy"], exportAs: ["popoverContent"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["class", "id", "name", "column", "showFiltersCount", "collapsible", "collapsed", "searchable", "expandedLevel"], outputs: ["onSelect", "onApply", "onClear"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "pipe", type: OperatorPipe, name: "operator" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
14654
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"], outputs: ["closed"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["class", "position", "keepOpen", "offset", "strategy"], exportAs: ["popoverContent"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["class", "id", "name", "column", "showFiltersCount", "collapsible", "collapsed", "searchable", "expandedLevel"], outputs: ["onSelect", "onApply", "onClear"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size", "aria-label"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon, FaIcon", inputs: ["faClass", "class"] }, { kind: "pipe", type: OperatorPipe, name: "operator" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
14242
14655
|
}
|
|
14243
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
14656
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FilterButtonComponent, decorators: [{
|
|
14244
14657
|
type: Component,
|
|
14245
14658
|
args: [{
|
|
14246
14659
|
selector: "filter-button, FilterButton",
|
|
@@ -14405,13 +14818,13 @@ class MoreComponent {
|
|
|
14405
14818
|
const { count = 0 } = this.queryParamsStore.getFilter({ field: aggregation.column, name: aggregation.name }) || {};
|
|
14406
14819
|
return count > 0;
|
|
14407
14820
|
}
|
|
14408
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
14409
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
14821
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14822
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: MoreComponent, isStandalone: true, selector: "more, More", inputs: { count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, includedFilters: { classPropertyName: "includedFilters", publicName: "includedFilters", isSignal: true, isRequired: false, transformFunction: null }, excludedFilters: { classPropertyName: "excludedFilters", publicName: "excludedFilters", isSignal: true, isRequired: false, transformFunction: null }, aggregations: { classPropertyName: "aggregations", publicName: "aggregations", isSignal: true, isRequired: false, transformFunction: null }, homepage: { classPropertyName: "homepage", publicName: "homepage", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "divide-y divide-muted-foreground/18" }, ngImport: i0, template: `
|
|
14410
14823
|
@for (filter of visibleFilters(); track $index) {
|
|
14411
14824
|
<Aggregation
|
|
14412
14825
|
class="w-60 max-w-80 px-1 [--height:15lh]"
|
|
14413
14826
|
id="more-filters"
|
|
14414
|
-
[attr.title]="'filters.openFilter' | transloco: { filter: filter.
|
|
14827
|
+
[attr.title]="'filters.openFilter' | transloco: { filter: filter.name }"
|
|
14415
14828
|
showFiltersCount
|
|
14416
14829
|
[collapsible]="true"
|
|
14417
14830
|
[collapsed]="true"
|
|
@@ -14420,14 +14833,14 @@ class MoreComponent {
|
|
|
14420
14833
|
}
|
|
14421
14834
|
`, isInline: true, styles: [":host{scrollbar-width:none}\n"], dependencies: [{ kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["class", "id", "name", "column", "showFiltersCount", "collapsible", "collapsed", "searchable", "expandedLevel"], outputs: ["onSelect", "onApply", "onClear"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
14422
14835
|
}
|
|
14423
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
14836
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MoreComponent, decorators: [{
|
|
14424
14837
|
type: Component,
|
|
14425
14838
|
args: [{ selector: "more, More", standalone: true, imports: [AggregationComponent, TranslocoPipe], template: `
|
|
14426
14839
|
@for (filter of visibleFilters(); track $index) {
|
|
14427
14840
|
<Aggregation
|
|
14428
14841
|
class="w-60 max-w-80 px-1 [--height:15lh]"
|
|
14429
14842
|
id="more-filters"
|
|
14430
|
-
[attr.title]="'filters.openFilter' | transloco: { filter: filter.
|
|
14843
|
+
[attr.title]="'filters.openFilter' | transloco: { filter: filter.name }"
|
|
14431
14844
|
showFiltersCount
|
|
14432
14845
|
[collapsible]="true"
|
|
14433
14846
|
[collapsed]="true"
|
|
@@ -14462,8 +14875,8 @@ class MoreButtonComponent {
|
|
|
14462
14875
|
}, 0);
|
|
14463
14876
|
return total;
|
|
14464
14877
|
}, ...(ngDevMode ? [{ debugName: "totalFiltersCount" }] : []));
|
|
14465
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
14466
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
14878
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MoreButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14879
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: MoreButtonComponent, isStandalone: true, selector: "more-button, MoreButton", inputs: { count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, includedFilters: { classPropertyName: "includedFilters", publicName: "includedFilters", isSignal: true, isRequired: false, transformFunction: null }, excludedFilters: { classPropertyName: "excludedFilters", publicName: "excludedFilters", isSignal: true, isRequired: false, transformFunction: null }, aggregations: { classPropertyName: "aggregations", publicName: "aggregations", isSignal: true, isRequired: false, transformFunction: null }, homepage: { classPropertyName: "homepage", publicName: "homepage", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
14467
14880
|
<Popover class="group/more">
|
|
14468
14881
|
<button
|
|
14469
14882
|
variant="ghost"
|
|
@@ -14485,9 +14898,9 @@ class MoreButtonComponent {
|
|
|
14485
14898
|
}
|
|
14486
14899
|
</PopoverContent>
|
|
14487
14900
|
</Popover>
|
|
14488
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"], outputs: ["closed"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["class", "position", "keepOpen", "offset", "strategy"], exportAs: ["popoverContent"] }, { kind: "component", type: MoreComponent, selector: "more, More", inputs: ["count", "includedFilters", "excludedFilters", "aggregations", "homepage"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size"] }, { kind: "component", type: ListFilterIcon, selector: "list-filter-icon, ListFilterIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
14901
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"], outputs: ["closed"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["class", "position", "keepOpen", "offset", "strategy"], exportAs: ["popoverContent"] }, { kind: "component", type: MoreComponent, selector: "more, More", inputs: ["count", "includedFilters", "excludedFilters", "aggregations", "homepage"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size", "aria-label"] }, { kind: "component", type: ListFilterIcon, selector: "list-filter-icon, ListFilterIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
14489
14902
|
}
|
|
14490
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
14903
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MoreButtonComponent, decorators: [{
|
|
14491
14904
|
type: Component,
|
|
14492
14905
|
args: [{
|
|
14493
14906
|
selector: "more-button, MoreButton",
|
|
@@ -14730,8 +15143,8 @@ class FiltersBarComponent {
|
|
|
14730
15143
|
ref.popoverRef()?.onClick(event);
|
|
14731
15144
|
});
|
|
14732
15145
|
}
|
|
14733
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
14734
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
15146
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FiltersBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15147
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: FiltersBarComponent, isStandalone: true, selector: "filters-bar, FiltersBar, filtersbar", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, morePosition: { classPropertyName: "morePosition", publicName: "morePosition", isSignal: true, isRequired: false, transformFunction: null }, aggregations: { classPropertyName: "aggregations", publicName: "aggregations", isSignal: true, isRequired: false, transformFunction: null }, includeFilters: { classPropertyName: "includeFilters", publicName: "includeFilters", isSignal: true, isRequired: false, transformFunction: null }, excludeFilters: { classPropertyName: "excludeFilters", publicName: "excludeFilters", isSignal: true, isRequired: false, transformFunction: null }, filtersCount: { classPropertyName: "filtersCount", publicName: "filtersCount", isSignal: true, isRequired: false, transformFunction: null }, showMoreFiltersButton: { classPropertyName: "showMoreFiltersButton", publicName: "showMoreFiltersButton", isSignal: true, isRequired: false, transformFunction: null }, homepage: { classPropertyName: "homepage", publicName: "homepage", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, expandedLevel: { classPropertyName: "expandedLevel", publicName: "expandedLevel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClearFilters: "onClearFilters", onClearBasket: "onClearBasket" }, host: { listeners: { "click": "handleClick($event)" }, properties: { "class": "cn('block relative min-w-0', class())" } }, providers: [provideTranslocoScope("filters")], viewQueries: [{ propertyName: "moreButtonRef", first: true, predicate: MoreButtonComponent, descendants: true, isSignal: true }, { propertyName: "filterButtonRefs", predicate: FilterButtonComponent, descendants: true, isSignal: true }, { propertyName: "overflowManagerRef", first: true, predicate: OverflowManagerDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
14735
15148
|
<div overflowManager [direction]="direction()" [reserveStop]="hasCappedFilters()" (count)="adjustFiltersCount($event)" class="flex items-end gap-2 rounded-[inherit] bg-inherit">
|
|
14736
15149
|
@if (hasFilters()) {
|
|
14737
15150
|
<button
|
|
@@ -14786,7 +15199,7 @@ class FiltersBarComponent {
|
|
|
14786
15199
|
</div>
|
|
14787
15200
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: MoreButtonComponent, selector: "more-button, MoreButton", inputs: ["count", "position", "includedFilters", "excludedFilters", "aggregations", "homepage"] }, { kind: "component", type: FilterButtonComponent, selector: "filter-button, FilterButton", inputs: ["name", "column", "position", "offset", "expandedLevel"] }, { kind: "directive", type: OverflowManagerDirective, selector: "[overflowManager]", inputs: ["target", "margin", "direction", "reserveStop"], outputs: ["count"] }, { kind: "directive", type: OverflowItemDirective, selector: "[overflowItem]" }, { kind: "directive", type: OverflowStopDirective, selector: "[overflowStop]" }, { kind: "component", type: TrashCanIcon, selector: "trash-can-icon, TrashCanIcon", inputs: ["class"] }, { kind: "component", type: InboxIcon, selector: "inbox-icon, InboxIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
14788
15201
|
}
|
|
14789
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
15202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: FiltersBarComponent, decorators: [{
|
|
14790
15203
|
type: Component,
|
|
14791
15204
|
args: [{
|
|
14792
15205
|
selector: "filters-bar, FiltersBar, filtersbar",
|
|
@@ -15000,10 +15413,10 @@ class LabelService {
|
|
|
15000
15413
|
return from(labels.bulkRemove(labelsToRemove, query, publicOnly));
|
|
15001
15414
|
}));
|
|
15002
15415
|
}
|
|
15003
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
15004
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
15416
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LabelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15417
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LabelService, providedIn: 'root' });
|
|
15005
15418
|
}
|
|
15006
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
15419
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LabelService, decorators: [{
|
|
15007
15420
|
type: Injectable,
|
|
15008
15421
|
args: [{
|
|
15009
15422
|
providedIn: 'root'
|
|
@@ -15143,8 +15556,8 @@ class MultiSelectLabelsComponent {
|
|
|
15143
15556
|
return;
|
|
15144
15557
|
article[labelsField] = this.labels();
|
|
15145
15558
|
}
|
|
15146
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
15147
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
15559
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MultiSelectLabelsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15560
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: MultiSelectLabelsComponent, isStandalone: true, selector: "multiselect-labels, multiselectlabels, MultiSelectLabels", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: false, transformFunction: null }, isPublic: { classPropertyName: "isPublic", publicName: "isPublic", isSignal: true, isRequired: false, transformFunction: null }, allowModification: { classPropertyName: "allowModification", publicName: "allowModification", isSignal: true, isRequired: false, transformFunction: null }, labelsField: { classPropertyName: "labelsField", publicName: "labelsField", isSignal: true, isRequired: false, transformFunction: null }, labelInput: { classPropertyName: "labelInput", publicName: "labelInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { article: "articleChange", labelInput: "labelInputChange" }, providers: [provideTranslocoScope("labels")], viewQueries: [{ propertyName: "popover", first: true, predicate: ["LabelsPopover"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
15148
15561
|
<div class="anchor" [ngStyle]="{ 'anchor-name': anchor() }">
|
|
15149
15562
|
<label [htmlFor]="id()" class="font-semibold">{{ (isPublic() ? 'labels.publicLabels' : 'labels.privateLabels') | transloco }}</label>
|
|
15150
15563
|
<input
|
|
@@ -15186,9 +15599,9 @@ class MultiSelectLabelsComponent {
|
|
|
15186
15599
|
{{ 'labels.error' | transloco }}
|
|
15187
15600
|
</div>
|
|
15188
15601
|
}
|
|
15189
|
-
`, isInline: true, styles: [".anchor:has(.popover:popover-open){z-index:var(--z-menu, 1000);border-radius:var(--radius) var(--radius) 0 0}.anchor .popover::backdrop{background-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.popover{width:anchor-size(width);top:anchor(bottom);left:anchor(left)}@supports (-moz-appearance: none){.popover{margin:calc(33.3333333333vh + 30px) 25vw;width:50vw}}@supports (background: -webkit-named-image(i)){.popover{margin:calc(33.3333333333vh + 30px) 25vw;width:50vw}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: CircleXIcon, selector: "circle-x, CircleX, circlex, circle-x-icon, CircleXIcon, circlexicon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
15602
|
+
`, isInline: true, styles: [".anchor:has(.popover:popover-open){z-index:var(--z-menu, 1000);border-radius:var(--radius) var(--radius) 0 0}.anchor .popover::backdrop{background-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.popover{width:anchor-size(width);top:anchor(bottom);left:anchor(left)}@supports (-moz-appearance: none){.popover{margin:calc(33.3333333333vh + 30px) 25vw;width:50vw}}@supports (background: -webkit-named-image(i)){.popover{margin:calc(33.3333333333vh + 30px) 25vw;width:50vw}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size", "aria-label"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: CircleXIcon, selector: "circle-x, CircleX, circlex, circle-x-icon, CircleXIcon, circlexicon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
15190
15603
|
}
|
|
15191
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
15604
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: MultiSelectLabelsComponent, decorators: [{
|
|
15192
15605
|
type: Component,
|
|
15193
15606
|
args: [{ selector: "multiselect-labels, multiselectlabels, MultiSelectLabels", providers: [provideTranslocoScope("labels")], standalone: true, imports: [FormsModule, NgStyle, TranslocoPipe, InputComponent, BadgeComponent, ListItemComponent, CircleXIcon], template: `
|
|
15194
15607
|
<div class="anchor" [ngStyle]="{ 'anchor-name': anchor() }">
|
|
@@ -15256,8 +15669,8 @@ class LabelsEditDialog {
|
|
|
15256
15669
|
close(event) {
|
|
15257
15670
|
this.closed.emit({ type: event, article: this.article() });
|
|
15258
15671
|
}
|
|
15259
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
15260
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
15672
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LabelsEditDialog, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
15673
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: LabelsEditDialog, isStandalone: true, selector: "labels-edit-dialog, labelseditdialog, LabelsEditDialog", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", article: "articleChange" }, providers: [provideTranslocoScope("labels")], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
15261
15674
|
<dialog #dialog (closed)="close($event)">
|
|
15262
15675
|
<DialogContent>
|
|
15263
15676
|
<DialogHeader>
|
|
@@ -15287,7 +15700,7 @@ class LabelsEditDialog {
|
|
|
15287
15700
|
</dialog>
|
|
15288
15701
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "component", type: MultiSelectLabelsComponent, selector: "multiselect-labels, multiselectlabels, MultiSelectLabels", inputs: ["article", "isPublic", "allowModification", "labelsField", "labelInput"], outputs: ["articleChange", "labelInputChange"] }, { kind: "component", type: InfoCircleIcon, selector: "info-circle-icon, InfoCircleIcon, infocircleicon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
15289
15702
|
}
|
|
15290
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
15703
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: LabelsEditDialog, decorators: [{
|
|
15291
15704
|
type: Component,
|
|
15292
15705
|
args: [{
|
|
15293
15706
|
selector: "labels-edit-dialog, labelseditdialog, LabelsEditDialog",
|
|
@@ -15345,8 +15758,8 @@ class SearchFooterComponent {
|
|
|
15345
15758
|
event.stopPropagation();
|
|
15346
15759
|
this.loadMore.emit();
|
|
15347
15760
|
}
|
|
15348
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
15349
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
15761
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15762
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SearchFooterComponent, isStandalone: true, selector: "search-footer, searchfooter, SearchFooter", inputs: { hasMore: { classPropertyName: "hasMore", publicName: "hasMore", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { loadMore: "loadMore" }, ngImport: i0, template: ` <div class="flex flex-col px-2">
|
|
15350
15763
|
@if (hasMore() && config().showLoadMore) {
|
|
15351
15764
|
@let loadMore = 'loadMore' | transloco;
|
|
15352
15765
|
<button variant="outline" class="w-full" tabindex="0" [attr.title]="loadMore" (click)="onLoadMore($event)">
|
|
@@ -15359,7 +15772,7 @@ class SearchFooterComponent {
|
|
|
15359
15772
|
</button>
|
|
15360
15773
|
</div>`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
15361
15774
|
}
|
|
15362
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
15775
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchFooterComponent, decorators: [{
|
|
15363
15776
|
type: Component,
|
|
15364
15777
|
args: [{
|
|
15365
15778
|
selector: 'search-footer, searchfooter, SearchFooter',
|
|
@@ -15382,8 +15795,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
15382
15795
|
class SearchHeaderComponent {
|
|
15383
15796
|
floating = inject(PopoverContentComponent, { skipSelf: true, optional: true });
|
|
15384
15797
|
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
15385
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
15386
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
15798
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15799
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SearchHeaderComponent, isStandalone: true, selector: "search-header, searchheader, SearchHeader", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
15387
15800
|
@if (floating) {
|
|
15388
15801
|
<div class="p-2">
|
|
15389
15802
|
<label class="text-xl font-bold">{{ label() }}</label>
|
|
@@ -15392,7 +15805,7 @@ class SearchHeaderComponent {
|
|
|
15392
15805
|
}
|
|
15393
15806
|
`, isInline: true, dependencies: [{ kind: "component", type: HorizontalDividerComponent, selector: "horizontal-divider, HorizontalDivider, horizontaldivider" }] });
|
|
15394
15807
|
}
|
|
15395
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
15808
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchHeaderComponent, decorators: [{
|
|
15396
15809
|
type: Component,
|
|
15397
15810
|
args: [{
|
|
15398
15811
|
selector: 'search-header, searchheader, SearchHeader',
|
|
@@ -15431,8 +15844,8 @@ class SearchListComponent {
|
|
|
15431
15844
|
e.stopPropagation();
|
|
15432
15845
|
this.delete.emit(index);
|
|
15433
15846
|
}
|
|
15434
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
15435
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
15847
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15848
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SearchListComponent, isStandalone: true, selector: "search-list, searchlist, SearchList", inputs: { paginatedSearches: { classPropertyName: "paginatedSearches", publicName: "paginatedSearches", isSignal: true, isRequired: true, transformFunction: null }, deleteButtonTitle: { classPropertyName: "deleteButtonTitle", publicName: "deleteButtonTitle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { delete: "delete" }, host: { attributes: { "role": "list" }, classAttribute: "flex max-h-[460px] flex-col overflow-auto" }, providers: [provideTranslocoScope("searches")], queries: [{ propertyName: "iconTemplate", first: true, predicate: ChildMarkerDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
15436
15849
|
@for (search of paginatedSearches(); track $index) {
|
|
15437
15850
|
<li
|
|
15438
15851
|
role="listitem"
|
|
@@ -15475,9 +15888,9 @@ class SearchListComponent {
|
|
|
15475
15888
|
<ng-content />
|
|
15476
15889
|
</span>
|
|
15477
15890
|
}
|
|
15478
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: TrashIcon, selector: "trash-icon, TrashIcon", inputs: ["class"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size"] }, { kind: "component", type: FilterIcon, selector: "filter-icon, FilterIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
15891
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: TrashIcon, selector: "trash-icon, TrashIcon", inputs: ["class"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "scheme", "size", "aria-label"] }, { kind: "component", type: FilterIcon, selector: "filter-icon, FilterIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
15479
15892
|
}
|
|
15480
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
15893
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SearchListComponent, decorators: [{
|
|
15481
15894
|
type: Component,
|
|
15482
15895
|
args: [{
|
|
15483
15896
|
selector: "search-list, searchlist, SearchList",
|
|
@@ -15586,8 +15999,8 @@ class RecentSearchesComponent {
|
|
|
15586
15999
|
loadMore() {
|
|
15587
16000
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
15588
16001
|
}
|
|
15589
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
15590
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
16002
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: RecentSearchesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16003
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: RecentSearchesComponent, isStandalone: true, selector: "RecentSearches, recent-searches", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope("searches")], ngImport: i0, template: `
|
|
15591
16004
|
<SearchHeader [label]="'searches.recent.label' | transloco" />
|
|
15592
16005
|
|
|
15593
16006
|
<SearchList
|
|
@@ -15608,7 +16021,7 @@ class RecentSearchesComponent {
|
|
|
15608
16021
|
}
|
|
15609
16022
|
`, isInline: true, styles: [":host ul{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: ChildMarkerDirective, selector: "[childMarker]" }, { kind: "component", type: SearchHeaderComponent, selector: "search-header, searchheader, SearchHeader", inputs: ["label"] }, { kind: "component", type: SearchListComponent, selector: "search-list, searchlist, SearchList", inputs: ["paginatedSearches", "deleteButtonTitle"], outputs: ["delete"] }, { kind: "component", type: SearchFooterComponent, selector: "search-footer, searchfooter, SearchFooter", inputs: ["hasMore", "config"], outputs: ["loadMore"] }, { kind: "component", type: HistoryIcon, selector: "history-icon, HistoryIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
15610
16023
|
}
|
|
15611
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
16024
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: RecentSearchesComponent, decorators: [{
|
|
15612
16025
|
type: Component,
|
|
15613
16026
|
args: [{ selector: "RecentSearches, recent-searches", standalone: true, providers: [provideTranslocoScope("searches")], imports: [
|
|
15614
16027
|
TranslocoPipe,
|
|
@@ -15658,8 +16071,8 @@ class SavedSearchDialog {
|
|
|
15658
16071
|
// emit closed event for the diaglog service
|
|
15659
16072
|
this.closed.emit("dialog-confirm");
|
|
15660
16073
|
}
|
|
15661
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
15662
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
16074
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SavedSearchDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16075
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.25", type: SavedSearchDialog, isStandalone: true, selector: "saved-search-dialog, savedsearchdialog, SavedSearchDialog", outputs: { closed: "closed" }, providers: [provideTranslocoScope("searches")], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
15663
16076
|
<dialog #dialog>
|
|
15664
16077
|
<DialogContent>
|
|
15665
16078
|
<DialogHeader>
|
|
@@ -15687,7 +16100,7 @@ class SavedSearchDialog {
|
|
|
15687
16100
|
</dialog>
|
|
15688
16101
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter", inputs: ["class"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"], input[type=\"file\"]", inputs: ["class", "variant", "decoration"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
15689
16102
|
}
|
|
15690
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
16103
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SavedSearchDialog, decorators: [{
|
|
15691
16104
|
type: Component,
|
|
15692
16105
|
args: [{
|
|
15693
16106
|
selector: "saved-search-dialog, savedsearchdialog, SavedSearchDialog",
|
|
@@ -15772,8 +16185,8 @@ class SavedSearchesComponent {
|
|
|
15772
16185
|
loadMore() {
|
|
15773
16186
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
15774
16187
|
}
|
|
15775
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
15776
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
16188
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SavedSearchesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16189
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: SavedSearchesComponent, isStandalone: true, selector: "saved-searches, SavedSearches", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideTranslocoScope('searches')], ngImport: i0, template: `
|
|
15777
16190
|
<SearchHeader [label]="'searches.saved.label' | transloco" />
|
|
15778
16191
|
|
|
15779
16192
|
<SearchList [paginatedSearches]="paginatedSearches()" deleteButtonTitle="searches.saved.remove" (delete)="onDelete($event)">
|
|
@@ -15787,7 +16200,7 @@ class SavedSearchesComponent {
|
|
|
15787
16200
|
}
|
|
15788
16201
|
`, isInline: true, styles: [":host ul{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: ChildMarkerDirective, selector: "[childMarker]" }, { kind: "component", type: SearchHeaderComponent, selector: "search-header, searchheader, SearchHeader", inputs: ["label"] }, { kind: "component", type: SearchListComponent, selector: "search-list, searchlist, SearchList", inputs: ["paginatedSearches", "deleteButtonTitle"], outputs: ["delete"] }, { kind: "component", type: SearchFooterComponent, selector: "search-footer, searchfooter, SearchFooter", inputs: ["hasMore", "config"], outputs: ["loadMore"] }, { kind: "component", type: StarIcon, selector: "star-icon, StarIcon, staricon", inputs: ["class", "solid"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
15789
16202
|
}
|
|
15790
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
16203
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: SavedSearchesComponent, decorators: [{
|
|
15791
16204
|
type: Component,
|
|
15792
16205
|
args: [{ selector: 'saved-searches, SavedSearches', standalone: true, imports: [TranslocoPipe, ChildMarkerDirective, SearchHeaderComponent, SearchListComponent, SearchFooterComponent, StarIcon], providers: [provideTranslocoScope('searches')], template: `
|
|
15793
16206
|
<SearchHeader [label]="'searches.saved.label' | transloco" />
|
|
@@ -15979,10 +16392,10 @@ class UserProfileFormComponent {
|
|
|
15979
16392
|
this.transloco.setActiveLang(language);
|
|
15980
16393
|
}
|
|
15981
16394
|
}
|
|
15982
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
15983
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: UserProfileFormComponent, isStandalone: true, selector: "user-profile-form, UserProfileForm, userprofileform", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, currentLanguage: { classPropertyName: "currentLanguage", publicName: "currentLanguage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", currentLanguage: "currentLanguageChange" }, host: { classAttribute: "flex flex-col h-full overflow-hidden" }, providers: [provideTranslocoScope("user-profile", "login")], viewQueries: [{ propertyName: "createInputElement", first: true, predicate: ["avatarInput"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (userProfileResource.hasValue()) {\r\n @let profile = userProfile();\r\n <div class=\"flex min-h-0 flex-1 flex-col gap-2 p-4\">\r\n <div class=\"mb-4 flex\">\r\n @if (allowProfilePhoto()) {\r\n <!-- AVATAR -->\r\n <Avatar class=\"size-14 cursor-pointer\" (click)=\"avatarInput.click()\">\r\n @if (profile?.data?.profilePhoto) {\r\n <AvatarImage\r\n [src]=\"profile?.data?.profilePhoto!\"\r\n width=\"44\"\r\n height=\"44\"\r\n alt=\"avatar\" />\r\n }\r\n <AvatarFallback class=\"text-lg\">\r\n @if (initials()) {\r\n <span>{{ initials() }}</span>\r\n } @else {\r\n <UserIcon class=\"size-7\" />\r\n }\r\n </AvatarFallback>\r\n </Avatar>\r\n @if (profile?.data?.profilePhoto) {\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"text-destructive cursor-pointer\"\r\n title=\"{{ 'userProfile.deleteProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.deleteProperty' | transloco\"\r\n (click)=\"onDeleteData('data', 'profilePhoto')\">\r\n <TrashIcon />\r\n </button>\r\n }\r\n }\r\n <div class=\"grow\"></div>\r\n <div class=\"flex flex-col gap-4\">\r\n <!-- LANGUAGE -->\r\n <select\r\n class=\"hover:outline-primary focus:outline-primary border-foreground/10 bg-background hover:bg-muted focus:bg-muted h-8 rounded-md border px-2 hover:outline focus:outline\"\r\n [(ngModel)]=\"currentLanguage\"\r\n (change)=\"changeLanguage()\">\r\n @for (lang of AllLanguages; track lang.code) {\r\n <option [value]=\"lang.code\">\r\n {{ lang.label }}\r\n </option>\r\n }\r\n </select>\r\n <!-- CHANGE PASSWORD -->\r\n @if (allowChangePassword()) {\r\n <button\r\n [disabled]=\"changingPassword()\"\r\n (click)=\"changingPassword.set(true)\">\r\n {{ \"login.changePassword\" | transloco }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n @if (changingPassword()) {\r\n <ChangePassword\r\n [username]=\"username()\"\r\n [redirectAfterSuccess]=\"false\"\r\n [redirectAfterCancel]=\"false\"\r\n (cancel)=\"changingPassword.set(false)\"\r\n (success)=\"changingPassword.set(false)\" />\r\n } @else {\r\n <div class=\"min-h-0 flex-1 overflow-auto\">\r\n <div>\r\n @for (key of formKeys(); track key) {\r\n <div>\r\n <p>{{ `userProfile.data.${key}` | transloco }}</p>\r\n <div class=\"group flex flex-row\">\r\n <div\r\n class=\"grow whitespace-pre-line\"\r\n [class.text-muted-foreground]=\"!getDataValue('data', key)\">\r\n @if (propertyToEdit() === \"data.\" + key) {\r\n <textarea\r\n class=\"hover:outline-primary focus:outline-primary border-foreground/20 hover:bg-muted focus:bg-muted mt-2 w-full rounded-md border px-2 pt-1 hover:outline focus:outline\"\r\n id=\"user-profile-{{ key }}\"\r\n [(ngModel)]=\"value\"></textarea>\r\n } @else {\r\n {{\r\n getDataValue(\"data\", key) ||\r\n (\"userProfile.notDefined\" | transloco)\r\n }}\r\n }\r\n </div>\r\n @if (propertyToEdit() === \"data.\" + key) {\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible mx-2 cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"onSaveData('data', key)\">\r\n <save-icon class=\"ml-2\" />\r\n </button>\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"propertyToEdit.set(undefined)\">\r\n <UndoIcon />\r\n </button>\r\n } @else {\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible mx-2 cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"onEdit('data', key)\">\r\n <EditIcon />\r\n </button>\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"text-destructive visible cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.deleteProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.deleteProperty' | transloco\"\r\n (click)=\"onDeleteData('data', key)\">\r\n <TrashIcon />\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @for (key of customData(); track key) {\r\n <div>\r\n <p>{{ key }}</p>\r\n <div class=\"group flex flex-row\">\r\n <div\r\n class=\"grow whitespace-pre-line\"\r\n [class.text-muted-foreground]=\"\r\n !getDataValue('customData', key)\r\n \">\r\n @if (propertyToEdit() === \"customData.\" + key) {\r\n <textarea\r\n class=\"hover:outline-primary focus:outline-primary border-foreground/20 hover:bg-muted focus:bg-muted mt-2 w-full rounded-md border px-2 pt-1 hover:outline focus:outline\"\r\n id=\"user-profile-{{ key }}\"\r\n [(ngModel)]=\"value\"></textarea>\r\n } @else {\r\n {{\r\n getDataValue(\"customData\", key) ||\r\n (\"userProfile.notDefined\" | transloco)\r\n }}\r\n }\r\n </div>\r\n @if (propertyToEdit() === \"customData.\" + key) {\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible mx-2 cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"onSaveData('customData', key)\">\r\n <save-icon class=\"ml-2\" />\r\n </button>\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"propertyToEdit.set(undefined)\">\r\n <UndoIcon />\r\n </button>\r\n } @else {\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible mx-2 cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"onEdit('customData', key)\">\r\n <EditIcon />\r\n </button>\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"text-destructive visible cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.deleteProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.deleteProperty' | transloco\"\r\n (click)=\"onDeleteData('customData', key)\">\r\n <TrashIcon />\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n} @else if (userProfileResource.isLoading()) {\r\n <span>Loading...</span>\r\n} @else if (userProfileResource.error()) {\r\n <p>Please contact an administrator to create your user profile.</p>\r\n}\r\n\r\n<!-- AVATAR UPLOAD -->\r\n<input\r\n #avatarInput\r\n class=\"hidden\"\r\n type=\"file\"\r\n accept=\"image/*\"\r\n (change)=\"uploadAvatar($event)\" />\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: TrashIcon, selector: "trash-icon, TrashIcon", inputs: ["class"] }, { kind: "component", type: EditIcon, selector: "edit-icon, EditIcon, editicon", inputs: ["class"] }, { kind: "component", type: UndoIcon, selector: "UndoIcon, undoicon, undo-icon", inputs: ["class"] }, { kind: "component", type: SaveIcon, selector: "save-icon, SaveIcon", inputs: ["class"] }, { kind: "component", type: AvatarComponent, selector: "avatar, Avatar", inputs: ["class", "size"] }, { kind: "component", type: AvatarFallbackComponent, selector: "avatar-fallback, avatarfallback, AvatarFallback", inputs: ["class", "size"] }, { kind: "component", type: UserIcon, selector: "user-icon, UserIcon", inputs: ["class"] }, { kind: "component", type: AvatarImageComponent, selector: "avatar-image, AvatarImage, avatarimage", inputs: ["class", "src", "alt", "width", "height", "referrerPolicy", "crossOrigin"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: ChangePasswordComponent, selector: "change-password, ChangePassword, changepassword", inputs: ["username", "alert", "redirectAfterSuccess", "redirectAfterCancel", "currentPassword", "newPassword", "confirmPassword"], outputs: ["success", "cancel", "currentPasswordChange", "newPasswordChange", "confirmPasswordChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
16395
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: UserProfileFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16396
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: UserProfileFormComponent, isStandalone: true, selector: "user-profile-form, UserProfileForm, userprofileform", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, currentLanguage: { classPropertyName: "currentLanguage", publicName: "currentLanguage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", currentLanguage: "currentLanguageChange" }, host: { classAttribute: "flex flex-col h-full overflow-hidden" }, providers: [provideTranslocoScope("user-profile", "login")], viewQueries: [{ propertyName: "createInputElement", first: true, predicate: ["avatarInput"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (userProfileResource.hasValue()) {\r\n @let profile = userProfile();\r\n <div class=\"flex min-h-0 flex-1 flex-col gap-2 p-4\">\r\n <div class=\"mb-4 flex\">\r\n @if (allowProfilePhoto()) {\r\n <!-- AVATAR -->\r\n <Avatar class=\"size-14 cursor-pointer\" (click)=\"avatarInput.click()\">\r\n @if (profile?.data?.profilePhoto) {\r\n <AvatarImage\r\n [src]=\"profile?.data?.profilePhoto!\"\r\n width=\"44\"\r\n height=\"44\"\r\n alt=\"avatar\" />\r\n }\r\n <AvatarFallback class=\"text-lg\">\r\n @if (initials()) {\r\n <span>{{ initials() }}</span>\r\n } @else {\r\n <UserIcon class=\"size-7\" />\r\n }\r\n </AvatarFallback>\r\n </Avatar>\r\n @if (profile?.data?.profilePhoto) {\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"text-destructive cursor-pointer\"\r\n title=\"{{ 'userProfile.deleteProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.deleteProperty' | transloco\"\r\n (click)=\"onDeleteData('data', 'profilePhoto')\">\r\n <TrashIcon />\r\n </button>\r\n }\r\n }\r\n <div class=\"grow\"></div>\r\n <div class=\"flex flex-col gap-4\">\r\n <!-- LANGUAGE -->\r\n <select\r\n class=\"hover:outline-primary focus:outline-primary border-foreground/10 bg-background hover:bg-muted focus:bg-muted h-8 rounded-md border px-2 hover:outline focus:outline\"\r\n [(ngModel)]=\"currentLanguage\"\r\n (change)=\"changeLanguage()\">\r\n @for (lang of AllLanguages; track lang.code) {\r\n <option [value]=\"lang.code\">\r\n {{ lang.label }}\r\n </option>\r\n }\r\n </select>\r\n <!-- CHANGE PASSWORD -->\r\n @if (allowChangePassword()) {\r\n <button\r\n [disabled]=\"changingPassword()\"\r\n (click)=\"changingPassword.set(true)\">\r\n {{ \"login.changePassword\" | transloco }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n @if (changingPassword()) {\r\n <ChangePassword\r\n [username]=\"username()\"\r\n [redirectAfterSuccess]=\"false\"\r\n [redirectAfterCancel]=\"false\"\r\n (cancel)=\"changingPassword.set(false)\"\r\n (success)=\"changingPassword.set(false)\" />\r\n } @else {\r\n <div class=\"min-h-0 flex-1 overflow-auto\">\r\n <div>\r\n @for (key of formKeys(); track key) {\r\n <div>\r\n <p>{{ `userProfile.data.${key}` | transloco }}</p>\r\n <div class=\"group flex flex-row\">\r\n <div\r\n class=\"grow whitespace-pre-line\"\r\n [class.text-muted-foreground]=\"!getDataValue('data', key)\">\r\n @if (propertyToEdit() === \"data.\" + key) {\r\n <textarea\r\n class=\"hover:outline-primary focus:outline-primary border-foreground/20 hover:bg-muted focus:bg-muted mt-2 w-full rounded-md border px-2 pt-1 hover:outline focus:outline\"\r\n id=\"user-profile-{{ key }}\"\r\n [(ngModel)]=\"value\"></textarea>\r\n } @else {\r\n {{\r\n getDataValue(\"data\", key) ||\r\n (\"userProfile.notDefined\" | transloco)\r\n }}\r\n }\r\n </div>\r\n @if (propertyToEdit() === \"data.\" + key) {\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible mx-2 cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"onSaveData('data', key)\">\r\n <save-icon class=\"ml-2\" />\r\n </button>\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"propertyToEdit.set(undefined)\">\r\n <UndoIcon />\r\n </button>\r\n } @else {\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible mx-2 cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"onEdit('data', key)\">\r\n <EditIcon />\r\n </button>\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"text-destructive visible cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.deleteProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.deleteProperty' | transloco\"\r\n (click)=\"onDeleteData('data', key)\">\r\n <TrashIcon />\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @for (key of customData(); track key) {\r\n <div>\r\n <p>{{ key }}</p>\r\n <div class=\"group flex flex-row\">\r\n <div\r\n class=\"grow whitespace-pre-line\"\r\n [class.text-muted-foreground]=\"\r\n !getDataValue('customData', key)\r\n \">\r\n @if (propertyToEdit() === \"customData.\" + key) {\r\n <textarea\r\n class=\"hover:outline-primary focus:outline-primary border-foreground/20 hover:bg-muted focus:bg-muted mt-2 w-full rounded-md border px-2 pt-1 hover:outline focus:outline\"\r\n id=\"user-profile-{{ key }}\"\r\n [(ngModel)]=\"value\"></textarea>\r\n } @else {\r\n {{\r\n getDataValue(\"customData\", key) ||\r\n (\"userProfile.notDefined\" | transloco)\r\n }}\r\n }\r\n </div>\r\n @if (propertyToEdit() === \"customData.\" + key) {\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible mx-2 cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"onSaveData('customData', key)\">\r\n <save-icon class=\"ml-2\" />\r\n </button>\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"propertyToEdit.set(undefined)\">\r\n <UndoIcon />\r\n </button>\r\n } @else {\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"visible mx-2 cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.editProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\r\n (click)=\"onEdit('customData', key)\">\r\n <EditIcon />\r\n </button>\r\n <button\r\n variant=\"ghost\"\r\n [iconOnly]=\"true\"\r\n class=\"text-destructive visible cursor-pointer sm:invisible sm:group-hover:visible\"\r\n title=\"{{ 'userProfile.deleteProperty' | transloco }}\"\r\n [attr.aria-label]=\"'userProfile.deleteProperty' | transloco\"\r\n (click)=\"onDeleteData('customData', key)\">\r\n <TrashIcon />\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n} @else if (userProfileResource.isLoading()) {\r\n <span>Loading...</span>\r\n} @else if (userProfileResource.error()) {\r\n <p>Please contact an administrator to create your user profile.</p>\r\n}\r\n\r\n<!-- AVATAR UPLOAD -->\r\n<input\r\n #avatarInput\r\n class=\"hidden\"\r\n type=\"file\"\r\n accept=\"image/*\"\r\n (change)=\"uploadAvatar($event)\" />\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.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: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: TrashIcon, selector: "trash-icon, TrashIcon", inputs: ["class"] }, { kind: "component", type: EditIcon, selector: "edit-icon, EditIcon, editicon", inputs: ["class"] }, { kind: "component", type: UndoIcon, selector: "UndoIcon, undoicon, undo-icon", inputs: ["class"] }, { kind: "component", type: SaveIcon, selector: "save-icon, SaveIcon", inputs: ["class"] }, { kind: "component", type: AvatarComponent, selector: "avatar, Avatar", inputs: ["class", "size"] }, { kind: "component", type: AvatarFallbackComponent, selector: "avatar-fallback, avatarfallback, AvatarFallback", inputs: ["class", "size"] }, { kind: "component", type: UserIcon, selector: "user-icon, UserIcon", inputs: ["class"] }, { kind: "component", type: AvatarImageComponent, selector: "avatar-image, AvatarImage, avatarimage", inputs: ["class", "src", "alt", "width", "height", "referrerPolicy", "crossOrigin"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "scheme", "iconOnly", "size", "solid"] }, { kind: "component", type: ChangePasswordComponent, selector: "change-password, ChangePassword, changepassword", inputs: ["username", "alert", "redirectAfterSuccess", "redirectAfterCancel", "currentPassword", "newPassword", "confirmPassword"], outputs: ["success", "cancel", "currentPasswordChange", "newPasswordChange", "confirmPasswordChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
15984
16397
|
}
|
|
15985
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
16398
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: UserProfileFormComponent, decorators: [{
|
|
15986
16399
|
type: Component,
|
|
15987
16400
|
args: [{ selector: "user-profile-form, UserProfileForm, userprofileform", standalone: true, host: { class: "flex flex-col h-full overflow-hidden" }, imports: [
|
|
15988
16401
|
FormsModule,
|
|
@@ -16008,8 +16421,8 @@ class UserProfileDialog {
|
|
|
16008
16421
|
this.dialog()?.open();
|
|
16009
16422
|
this.opened.set(true);
|
|
16010
16423
|
}
|
|
16011
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
16012
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
16424
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: UserProfileDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16425
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: UserProfileDialog, isStandalone: true, selector: "user-profile-dialog, userprofiledialog, UserProfileDialog", providers: [provideTranslocoScope("user-profile")], viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
16013
16426
|
<div dialog #dialog="dialog">
|
|
16014
16427
|
<DialogContent class="flex flex-col max-h-11/12 overflow-hidden">
|
|
16015
16428
|
<DialogHeader>
|
|
@@ -16023,7 +16436,7 @@ class UserProfileDialog {
|
|
|
16023
16436
|
</div>
|
|
16024
16437
|
`, isInline: true, dependencies: [{ kind: "component", type: DialogComponent, selector: "dialog, [dialog]", outputs: ["closed"], exportAs: ["dialog"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent", inputs: ["class"] }, { kind: "component", type: UserProfileFormComponent, selector: "user-profile-form, UserProfileForm, userprofileform", inputs: ["value", "currentLanguage"], outputs: ["valueChange", "currentLanguageChange"] }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
16025
16438
|
}
|
|
16026
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
16439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: UserProfileDialog, decorators: [{
|
|
16027
16440
|
type: Component,
|
|
16028
16441
|
args: [{
|
|
16029
16442
|
selector: "user-profile-dialog, userprofiledialog, UserProfileDialog",
|
|
@@ -16109,6 +16522,11 @@ const authInterceptorFn = (request, next) => {
|
|
|
16109
16522
|
};
|
|
16110
16523
|
}
|
|
16111
16524
|
request = request.clone({
|
|
16525
|
+
// Send the session cookie on every request. Aligns the Angular HttpClient path with atomic's
|
|
16526
|
+
// raw fetch (which uses `credentials: "include"`), so cookie-based sessions (e.g. an OIDC reverse
|
|
16527
|
+
// proxy setting an HttpOnly session cookie, no token in headers) authenticate cross-origin too.
|
|
16528
|
+
// No-op for same-origin requests, where cookies are already sent.
|
|
16529
|
+
withCredentials: true,
|
|
16112
16530
|
setHeaders: headers
|
|
16113
16531
|
});
|
|
16114
16532
|
return next(request).pipe(map((event) => {
|
|
@@ -16270,5 +16688,5 @@ const queryNameResolver = () => {
|
|
|
16270
16688
|
* Generated bundle index. Do not edit.
|
|
16271
16689
|
*/
|
|
16272
16690
|
|
|
16273
|
-
export { AGGREGATIONS_NAMES, AGGREGATIONS_NAMES_PRESET_DEFAULT, APP_FEATURES, AdvancedFiltersComponent, AdvancedSearch, AdvancedSearchComponent, AggregationComponent, AggregationDateComponent, AggregationDateRangeDialogComponent, AggregationListComponent, AggregationPanelComponent, AggregationTreeComponent, AggregationsService, AggregationsStore, Alert, AlertDialog, AlertsComponent, AppService, AppStore, ApplicationService, ApplicationStore, ArticleEntities, ArticleExtracts, ArticleLabels, ArticleSimilarDocuments, AsideFiltersComponent, AuditFeedbackType, AuditService, AuthGuard, AuthPageComponent, AutocompleteService, BOOKMARKS_CONFIG, BOOKMARKS_OPTIONS, BackdropComponent, BackdropService, BookmarkButtonComponent, BookmarksComponent, COLLECTIONS_CONFIG, COLLECTIONS_OPTIONS, COMPONENTS_FOR_DOCUMENT_TYPE, ChangePasswordComponent, ChildMarkerDirective, CollectionsComponent, CollectionsDialog, DRAWER_COMPONENT, DRAWER_STACK_MAX_COUNT, DateComponent, DeleteCollectionDialog, DidYouMeanComponent, DocumentLocatorComponent, DrawerAdvancedFiltersComponent, DrawerComponent, DrawerNavbarComponent, DrawerPreviewComponent, DrawerService, DrawerStackComponent, DrawerStackService, DropdownInputComponent, DropdownListComponent, ErrorComponent, ExportDialog, ExportService, FILTERS_BREAKPOINT, FILTER_DATE_ALLOW_CUSTOM_RANGE, FeedbackDialogComponent, FileSizePipe, FilterButtonComponent, FiltersBarComponent, HIGHLIGHTS, HighlightWordPipe, InfinityScrollDirective, InlineWorker, JsonMethodPluginService, KeyboardNavigatorDirective, LabelService, LabelsEditDialog, LoadingComponent, MetadataComponent, MissingTermsComponent, MoreButtonComponent, MoreComponent, MultiSelectLabelsComponent, MultiSelectionToolbarComponent, NON_SEARCHABLE_COLUMNS, NON_SEARCHABLE_DEFAULTS, NavbarTabsComponent, NavigationService, NoResultComponent, OpenArticleOnCtrlEnterDirective, OperatorPipe, OverflowItemDirective, OverflowManagerDirective, OverflowStopDirective, OverrideUserDialogComponent, PREVIEW_CONFIG, PagerComponent, PreviewNavigator, PreviewService, PrincipalService, PrincipalStore, QueryParamsStore, QueryService, RECENT_SEARCHES_CONFIG, RECENT_SEARCHES_OPTIONS, ROUTE_COMPONENTS, RecentSearchesComponent, ResetUserSettingsDialogComponent, SAVED_SEARCHES_CONFIG, SAVED_SEARCHES_OPTIONS, SavedSearchDialog, SavedSearchesComponent, SavedSearchesService, SearchFeedbackComponent, SearchInputFooter, SearchService, SelectArticleDirective, SelectArticleOnClickDirective, SelectionHistoryService, SelectionService, SelectionStore, ShowBookmarkDirective, SidebarNavComponent, SignInComponent, SortSelectorComponent, SourceComponent, SourceIconPipe, SponsoredResultsComponent, SyslangPipe, THEMES, TextChunkService, ThemeProviderDirective, ThemeSelectorComponent, ThemeStore, ThemeToggleComponent, TranslocoDateImpurePipe, UserProfileDialog, UserProfileFormComponent, UserProfileService, UserSettingsStore, applyThemeToNativeElement, auditInterceptorFn, authInterceptorFn, bodyInterceptorFn, bootstrapApp, buildQuery, debouncedSignal, errorInterceptorFn, getCurrentPath, getCurrentQueryName, getQueryNameFromRoute, injectRouteNavigation, processCssVars, queryNameResolver, signIn, themeColorNameToCssVariable, themeColorsToCssVariables, toastInterceptorFn, withAggregationsFeatures, withAlertsFeatures, withAppFeatures, withApplicationFeatures, withAssistantFeatures, withBasketsFeatures, withBookmarkFeatures, withBootstrapApp, withExtractsFeatures, withFetch, withMultiSelectionFeatures, withPrincipalFeatures, withQueryParamsFeatures, withRecentSearchesFeatures, withSavedSearchesFeatures, withSelectionFeatures, withThemeBodyHook, withThemes, withThemesFeatures, withUserSettingsFeatures };
|
|
16691
|
+
export { AGGREGATIONS_NAMES, AGGREGATIONS_NAMES_PRESET_DEFAULT, APP_FEATURES, AdvancedFiltersComponent, AdvancedSearch, AdvancedSearchComponent, AggregationComponent, AggregationDateComponent, AggregationDateRangeDialogComponent, AggregationListComponent, AggregationPanelComponent, AggregationTreeComponent, AggregationsService, AggregationsStore, Alert, AlertDialog, AlertsComponent, AppService, AppStore, ApplicationService, ApplicationStore, ArticleEntities, ArticleExtracts, ArticleLabels, ArticleSimilarDocuments, AsideFiltersComponent, AuditFeedbackType, AuditService, AuthGuard, AuthPageComponent, AutocompleteService, BOOKMARKS_CONFIG, BOOKMARKS_OPTIONS, BackdropComponent, BackdropService, BookmarkButtonComponent, BookmarksComponent, COLLECTIONS_CONFIG, COLLECTIONS_OPTIONS, COMPONENTS_FOR_DOCUMENT_TYPE, ChangePasswordComponent, ChildMarkerDirective, CollectionsComponent, CollectionsDialog, DRAWER_COMPONENT, DRAWER_STACK_MAX_COUNT, DateComponent, DeleteCollectionDialog, DidYouMeanComponent, DocumentLocatorComponent, DrawerAdvancedFiltersComponent, DrawerComponent, DrawerNavbarComponent, DrawerPreviewComponent, DrawerService, DrawerStackComponent, DrawerStackService, DropdownInputComponent, DropdownListComponent, ErrorComponent, ExportDialog, ExportService, FILTERS_BREAKPOINT, FILTER_DATE_ALLOW_CUSTOM_RANGE, FeatureFlagsDialogComponent, FeedbackDialogComponent, FileSizePipe, FilterButtonComponent, FiltersBarComponent, HIGHLIGHTS, HighlightWordPipe, InfinityScrollDirective, InlineWorker, JsonMethodPluginService, KeyboardNavigatorDirective, LabelService, LabelsEditDialog, LoadingComponent, MetadataComponent, MissingTermsComponent, MoreButtonComponent, MoreComponent, MultiSelectLabelsComponent, MultiSelectionToolbarComponent, NON_SEARCHABLE_COLUMNS, NON_SEARCHABLE_DEFAULTS, NavbarTabsComponent, NavigationService, NoResultComponent, OpenArticleOnCtrlEnterDirective, OperatorPipe, OverflowItemDirective, OverflowManagerDirective, OverflowStopDirective, OverrideUserDialogComponent, PREVIEW_CONFIG, PagerComponent, PreviewNavigator, PreviewService, PrincipalService, PrincipalStore, QueryParamsStore, QueryService, RECENT_SEARCHES_CONFIG, RECENT_SEARCHES_OPTIONS, ROUTE_COMPONENTS, RecentSearchesComponent, ResetUserSettingsDialogComponent, SAVED_SEARCHES_CONFIG, SAVED_SEARCHES_OPTIONS, SavedSearchDialog, SavedSearchesComponent, SavedSearchesService, SearchFeedbackComponent, SearchInputFooter, SearchService, SelectArticleDirective, SelectArticleOnClickDirective, SelectionHistoryService, SelectionService, SelectionStore, ShowBookmarkDirective, SidebarNavComponent, SignInComponent, SignedOutComponent, SortSelectorComponent, SourceComponent, SourceIconPipe, SponsoredResultsComponent, SyslangPipe, THEMES, TextChunkService, ThemeProviderDirective, ThemeSelectorComponent, ThemeStore, ThemeToggleComponent, TranslocoDateImpurePipe, UserProfileDialog, UserProfileFormComponent, UserProfileService, UserSettingsStore, applyThemeToNativeElement, auditInterceptorFn, authInterceptorFn, bodyInterceptorFn, bootstrapApp, buildQuery, debouncedSignal, errorInterceptorFn, getCurrentPath, getCurrentQueryName, getQueryNameFromRoute, injectRouteNavigation, processCssVars, queryNameResolver, signIn, themeColorNameToCssVariable, themeColorsToCssVariables, toastInterceptorFn, withAggregationsFeatures, withAlertsFeatures, withAppFeatures, withApplicationFeatures, withAssistantFeatures, withBasketsFeatures, withBookmarkFeatures, withBootstrapApp, withExtractsFeatures, withFetch, withMultiSelectionFeatures, withPrincipalFeatures, withQueryParamsFeatures, withRecentSearchesFeatures, withSavedSearchesFeatures, withSelectionFeatures, withThemeBodyHook, withThemes, withThemesFeatures, withUserSettingsFeatures };
|
|
16274
16692
|
//# sourceMappingURL=sinequa-atomic-angular.mjs.map
|