@sinequa/atomic-angular 0.3.15 → 0.3.22
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/features/auth/i18n/de.json +2 -0
- package/features/auth/i18n/en.json +2 -0
- package/features/auth/i18n/fr.json +2 -0
- package/features/user-profile/i18n/de.json +13 -0
- package/features/user-profile/i18n/en.json +13 -0
- package/features/user-profile/i18n/fr.json +13 -0
- package/fesm2022/sinequa-atomic-angular.mjs +800 -415
- package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
- package/index.d.ts +322 -165
- package/package.json +5 -1
|
@@ -2,13 +2,13 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { Injectable, inject, HostBinding, Component, Pipe, InjectionToken, computed, ChangeDetectorRef, DestroyRef, LOCALE_ID, Inject, Optional, input, output, Directive, signal, effect, assertInInjectionContext, runInInjectionContext, Injector, EventEmitter, viewChild, ElementRef, afterNextRender, untracked, linkedSignal, model, Renderer2, HostListener, contentChildren, contentChild, TemplateRef, booleanAttribute, resource, ViewContainerRef, numberAttribute, viewChildren, afterEveryRender } from '@angular/core';
|
|
3
3
|
import { BehaviorSubject, Subscription, catchError, EMPTY, firstValueFrom, map, Subject, of, tap, throwError, filter, shareReplay, fromEvent, debounceTime, from, switchMap } from 'rxjs';
|
|
4
4
|
import { TranslocoService, TranslocoPipe, provideTranslocoScope } from '@jsverse/transloco';
|
|
5
|
-
import { DropdownComponent, DropdownContentComponent, InputComponent, cn, EllipsisIcon, ChevronRightIcon, ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, BadgeComponent, DialogComponent, DialogHeaderComponent, DialogTitleComponent, DialogContentComponent, DialogFooterComponent, ListItemComponent, SwitchComponent, SelectOptionDirective, DialogService, TabsComponent, TabsListComponent, TabComponent, ChevronLeftIconComponent, ChevronsLeftIconComponent, ChevronsRightIconComponent, LoadingCircleIconComponent, CircleCheckIconComponent, PopoverComponent, HorizontalDividerComponent, CardComponent, CardHeaderComponent, CardContentComponent, CardFooterComponent, PopoverContentComponent, Separator, BookmarkIcon, UserIcon, TrashIcon, FolderIcon, VerticalDividerComponent, ButtonGroup,
|
|
5
|
+
import { DropdownComponent, DropdownContentComponent, InputComponent, cn, EllipsisIcon, ChevronRightIcon, ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, BadgeComponent, DialogComponent, DialogHeaderComponent, DialogTitleComponent, DialogContentComponent, DialogFooterComponent, ListItemComponent, SwitchComponent, SelectOptionDirective, DialogService, TabsComponent, TabsListComponent, TabComponent, ChevronLeftIconComponent, ChevronsLeftIconComponent, ChevronsRightIconComponent, LoadingCircleIconComponent, CircleCheckIconComponent, PopoverComponent, HorizontalDividerComponent, CardComponent, CardHeaderComponent, CardContentComponent, CardFooterComponent, InputGroupInput, InputGroupComponent, InputGroupAddonComponent, PopoverContentComponent, Separator, BookmarkIcon, UserIcon, TrashIcon, FolderIcon, VerticalDividerComponent, ButtonGroup, SearchIcon, FilterIcon, DateRangePickerDirective, FlagEnglishIconComponent, FlagFrenchIconComponent, EditIcon, UndoIcon, AvatarComponent, AvatarFallbackComponent, AvatarImageComponent } from '@sinequa/ui';
|
|
6
6
|
import highlightWords from 'highlight-words';
|
|
7
7
|
import { ActivatedRoute, Router, NavigationEnd, RouterLink, 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 { globalConfig, EngineType, extraColumns, sysLang, getQueryParamsFromUrl, warn, notify, error, buildPathsAndLevels, info, escapeExpr, isAuthenticated, isExpired, patchUserSettings, deleteUserSettings, fetchUserSettings, setGlobalConfig, fetchSuggest, isObject, Audit, logout, login, addConcepts, queryParamsFromUrl, getMetadata, bisect, isNotInputEvent, fetchSponsoredLinks, fetchChangePassword, fetchSendPasswordResetEmail, expiresSoon, fetchQuery, translateAggregationToDateOptions, aggItemRegex, parseValueAndOperatorFromItem, debug, fetchSimilarDocuments, suggestionsToTreeAggregationNodes, fetchSuggestField, labels, fetchLabels, guid, getRelativeDate, isJsonable, addAuditAdditionalInfo, getToken, setToken, createHeaders } from '@sinequa/atomic';
|
|
11
|
-
import { HttpClient, HttpParams, HttpResponse, HttpHeaders } from '@angular/common/http';
|
|
10
|
+
import { globalConfig, EngineType, extraColumns, sysLang, getQueryParamsFromUrl, warn, notify, error, buildPathsAndLevels, info, escapeExpr, isAuthenticated, isExpired, patchUserSettings, deleteUserSettings, fetchUserSettings, setGlobalConfig, fetchSuggest, isObject, Audit, logout, login, addConcepts, queryParamsFromUrl, getMetadata, bisect, isNotInputEvent, fetchSponsoredLinks, fetchChangePassword, fetchSendPasswordResetEmail, expiresSoon, fetchQuery, translateAggregationToDateOptions, aggItemRegex, parseValueAndOperatorFromItem, debug, fetchSimilarDocuments, suggestionsToTreeAggregationNodes, fetchSuggestField, labels, fetchLabels, guid, getRelativeDate, createUserProfile, patchUserProfile, isJsonable, addAuditAdditionalInfo, getToken, setToken, createHeaders } from '@sinequa/atomic';
|
|
11
|
+
import { HttpClient, HttpParams, httpResource, HttpResponse, HttpHeaders } from '@angular/common/http';
|
|
12
12
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
13
13
|
import { DatePipe, DATE_PIPE_DEFAULT_TIMEZONE, DATE_PIPE_DEFAULT_OPTIONS, Location, NgTemplateOutlet, NgStyle, NgClass, NgComponentOutlet } from '@angular/common';
|
|
14
14
|
import { Title, DomSanitizer } from '@angular/platform-browser';
|
|
@@ -30,10 +30,10 @@ class BackdropService {
|
|
|
30
30
|
hide() {
|
|
31
31
|
this.isVisible.next(false);
|
|
32
32
|
}
|
|
33
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
34
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
33
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BackdropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
34
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BackdropService, providedIn: 'root' });
|
|
35
35
|
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BackdropService, decorators: [{
|
|
37
37
|
type: Injectable,
|
|
38
38
|
args: [{
|
|
39
39
|
providedIn: 'root'
|
|
@@ -50,10 +50,10 @@ class BackdropComponent {
|
|
|
50
50
|
ngOnDestroy() {
|
|
51
51
|
this.sub.unsubscribe();
|
|
52
52
|
}
|
|
53
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
54
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
53
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", 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"] });
|
|
55
55
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BackdropComponent, decorators: [{
|
|
57
57
|
type: Component,
|
|
58
58
|
args: [{ selector: 'Backdrop, backdrop', standalone: true, imports: [], template: ``, host: {
|
|
59
59
|
class: 'z-[var(--z-backdrop)] bg-backdrop fixed bottom-0 left-0 right-0 top-0 hidden select-none'
|
|
@@ -83,10 +83,10 @@ class HighlightWordPipe {
|
|
|
83
83
|
const wordNormalized = word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
84
84
|
return highlightWords({ text: valueNormalized, query: wordNormalized, clipBy });
|
|
85
85
|
}
|
|
86
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
87
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
86
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HighlightWordPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
87
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: HighlightWordPipe, isStandalone: true, name: "highlightWord" });
|
|
88
88
|
}
|
|
89
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HighlightWordPipe, decorators: [{
|
|
90
90
|
type: Pipe,
|
|
91
91
|
args: [{
|
|
92
92
|
name: 'highlightWord',
|
|
@@ -125,10 +125,10 @@ class AppService {
|
|
|
125
125
|
return EMPTY;
|
|
126
126
|
}));
|
|
127
127
|
}
|
|
128
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
129
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
128
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
129
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppService, providedIn: 'root' });
|
|
130
130
|
}
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AppService, decorators: [{
|
|
132
132
|
type: Injectable,
|
|
133
133
|
args: [{
|
|
134
134
|
providedIn: 'root'
|
|
@@ -244,7 +244,7 @@ const AGGREGATIONS_NAMES_PRESET_DEFAULT = [
|
|
|
244
244
|
const AGGREGATIONS_NAMES = new InjectionToken("Facets list to display", {
|
|
245
245
|
factory: () => AGGREGATIONS_NAMES_PRESET_DEFAULT
|
|
246
246
|
});
|
|
247
|
-
const AppStore = signalStore({ providedIn: "root" }, withDevtools("App"), withAppFeatures()
|
|
247
|
+
const AppStore = signalStore({ providedIn: "root" }, withDevtools("App"), withAppFeatures());
|
|
248
248
|
/**
|
|
249
249
|
* Basic app management features
|
|
250
250
|
*/
|
|
@@ -273,7 +273,9 @@ function withAppFeatures() {
|
|
|
273
273
|
revision: 0,
|
|
274
274
|
runnableModels: "",
|
|
275
275
|
authorizationLevel: "",
|
|
276
|
-
columnMap: {}
|
|
276
|
+
columnMap: {},
|
|
277
|
+
customJSONs: [],
|
|
278
|
+
data: {}
|
|
277
279
|
}),
|
|
278
280
|
/**
|
|
279
281
|
* Enhances the application store with various features and methods.
|
|
@@ -592,13 +594,7 @@ function withAppFeatures() {
|
|
|
592
594
|
}
|
|
593
595
|
return [];
|
|
594
596
|
}
|
|
595
|
-
})))
|
|
596
|
-
}
|
|
597
|
-
/**
|
|
598
|
-
* Management of customization JSONs features for the app
|
|
599
|
-
*/
|
|
600
|
-
function withAppCustomizationFeatures() {
|
|
601
|
-
return signalStoreFeature(withState({ customJSONs: [], data: {} }), withComputed(({ customJSONs, data }) => {
|
|
597
|
+
})), withComputed(({ customJSONs, data }) => {
|
|
602
598
|
// Helper function to parse JSON data with common error handling and fallback to default customJSONs
|
|
603
599
|
const parseCustomJson = (jsonName, defaultValue) => {
|
|
604
600
|
// Check if customJSONs is defined and is an array
|
|
@@ -683,31 +679,52 @@ function withAppCustomizationFeatures() {
|
|
|
683
679
|
},
|
|
684
680
|
/**
|
|
685
681
|
* Retrieves the customization for a specific aggregation column.
|
|
686
|
-
* @param
|
|
682
|
+
* @param aggColumn - The column name for which to retrieve the customization.
|
|
687
683
|
* @returns The customization object for the specified column, or undefined if not found.
|
|
688
684
|
*/
|
|
689
|
-
getAggregationCustomization(
|
|
685
|
+
getAggregationCustomization(aggColumn, aggName) {
|
|
690
686
|
// Be careful, because the column might not be defined in the filters JSON configuration file.
|
|
691
|
-
|
|
692
|
-
const
|
|
693
|
-
|
|
694
|
-
if
|
|
695
|
-
|
|
696
|
-
const column = store.filters().find(predicateByColumn);
|
|
697
|
-
if (column) {
|
|
698
|
-
return column;
|
|
699
|
-
}
|
|
700
|
-
// is name present in filters?
|
|
701
|
-
if (name) {
|
|
702
|
-
const byName = store.filters().find(predicateByName);
|
|
703
|
-
if (byName) {
|
|
704
|
-
return byName;
|
|
705
|
-
}
|
|
706
|
-
}
|
|
687
|
+
// aggColumn can be an alias and in the custom json filters, the column can also be an alias
|
|
688
|
+
const predicateByColumn = (filter) => filter?.column?.toLocaleLowerCase() === aggColumn.toLocaleLowerCase();
|
|
689
|
+
const predicateByName = (filter) => filter?.name?.toLocaleLowerCase() === aggName?.toLocaleLowerCase();
|
|
690
|
+
// Check if the custom JSON configuration for the filters is available in the store
|
|
691
|
+
if (store.filters().length === 0)
|
|
707
692
|
return undefined;
|
|
693
|
+
// try to return the customization
|
|
694
|
+
//
|
|
695
|
+
// The name takes priority in the custom JSON file.
|
|
696
|
+
// is the name exists in the json filters file?
|
|
697
|
+
if (aggName) {
|
|
698
|
+
const filter = store.filters().find(predicateByName);
|
|
699
|
+
// both name matches
|
|
700
|
+
if (filter) {
|
|
701
|
+
return filter;
|
|
702
|
+
}
|
|
708
703
|
}
|
|
709
|
-
//
|
|
710
|
-
|
|
704
|
+
// otherwise search by column's name
|
|
705
|
+
// both columns's values can be aliases
|
|
706
|
+
// is the column exists in the custom json filters file?
|
|
707
|
+
const filter = store.filters().find(predicateByColumn);
|
|
708
|
+
// if the aggName and the filter column's name matches
|
|
709
|
+
if (filter) {
|
|
710
|
+
return filter;
|
|
711
|
+
}
|
|
712
|
+
// check for aliases use cases
|
|
713
|
+
// is aggregation column name an alias, so we need to find the real name of the column
|
|
714
|
+
const aggCColumn = store.getColumn(aggColumn);
|
|
715
|
+
// case of an alias (we use the real name of the column)
|
|
716
|
+
if (aggCColumn?.name !== aggColumn) {
|
|
717
|
+
return store.filters().find((filter) => {
|
|
718
|
+
// filter column can also be an alias, so we need to get the real name
|
|
719
|
+
const filterCColumn = store.getColumn(filter?.column);
|
|
720
|
+
if (!filterCColumn)
|
|
721
|
+
return false;
|
|
722
|
+
// compare the real names
|
|
723
|
+
return filterCColumn?.name.toLocaleLowerCase() === aggCColumn?.name.toLocaleLowerCase();
|
|
724
|
+
});
|
|
725
|
+
}
|
|
726
|
+
// no customization found for the aggregation's column
|
|
727
|
+
return undefined;
|
|
711
728
|
},
|
|
712
729
|
/**
|
|
713
730
|
* Determines whether a specific assistant is allowed based on its presence and configuration in the store.
|
|
@@ -750,10 +767,10 @@ class SourceIconPipe {
|
|
|
750
767
|
}
|
|
751
768
|
return 'far fa-file';
|
|
752
769
|
}
|
|
753
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
754
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
770
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SourceIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
771
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: SourceIconPipe, isStandalone: true, name: "sourceIcon" });
|
|
755
772
|
}
|
|
756
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
773
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SourceIconPipe, decorators: [{
|
|
757
774
|
type: Pipe,
|
|
758
775
|
args: [{
|
|
759
776
|
name: 'sourceIcon',
|
|
@@ -822,10 +839,10 @@ class OperatorPipe {
|
|
|
822
839
|
return '';
|
|
823
840
|
}
|
|
824
841
|
}
|
|
825
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
826
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
842
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OperatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
843
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: OperatorPipe, isStandalone: true, name: "operator", pure: false });
|
|
827
844
|
}
|
|
828
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
845
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OperatorPipe, decorators: [{
|
|
829
846
|
type: Pipe,
|
|
830
847
|
args: [{
|
|
831
848
|
name: 'operator',
|
|
@@ -876,10 +893,10 @@ class SyslangPipe {
|
|
|
876
893
|
}
|
|
877
894
|
return this.lastValue;
|
|
878
895
|
}
|
|
879
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
880
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
896
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SyslangPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
897
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: SyslangPipe, isStandalone: true, name: "syslang", pure: false });
|
|
881
898
|
}
|
|
882
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
899
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SyslangPipe, decorators: [{
|
|
883
900
|
type: Pipe,
|
|
884
901
|
args: [{
|
|
885
902
|
name: 'syslang',
|
|
@@ -911,10 +928,10 @@ class TranslocoDateImpurePipe extends DatePipe {
|
|
|
911
928
|
});
|
|
912
929
|
return this.lastTransformedValue;
|
|
913
930
|
}
|
|
914
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
915
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
931
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", 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 });
|
|
932
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: TranslocoDateImpurePipe, isStandalone: true, name: "translocoDate", pure: false });
|
|
916
933
|
}
|
|
917
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
934
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TranslocoDateImpurePipe, decorators: [{
|
|
918
935
|
type: Pipe,
|
|
919
936
|
args: [{
|
|
920
937
|
name: 'translocoDate',
|
|
@@ -981,10 +998,10 @@ class FileSizePipe {
|
|
|
981
998
|
}
|
|
982
999
|
return obj;
|
|
983
1000
|
}
|
|
984
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
985
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.
|
|
1001
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1002
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: FileSizePipe, isStandalone: true, name: "fileSize" });
|
|
986
1003
|
}
|
|
987
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1004
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FileSizePipe, decorators: [{
|
|
988
1005
|
type: Pipe,
|
|
989
1006
|
args: [{
|
|
990
1007
|
name: 'fileSize'
|
|
@@ -994,8 +1011,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
994
1011
|
class DropdownListComponent {
|
|
995
1012
|
items = input.required(...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
996
1013
|
onClick = output();
|
|
997
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
998
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
1014
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1015
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
999
1016
|
@for (item of items(); track $index) {
|
|
1000
1017
|
<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">
|
|
1001
1018
|
{{ item.display || item.value | syslang | transloco }}
|
|
@@ -1016,7 +1033,7 @@ class DropdownListComponent {
|
|
|
1016
1033
|
}
|
|
1017
1034
|
`, isInline: true, dependencies: [{ kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
1018
1035
|
}
|
|
1019
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1036
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownListComponent, decorators: [{
|
|
1020
1037
|
type: Component,
|
|
1021
1038
|
args: [{
|
|
1022
1039
|
selector: "dropdown-list, DropdownList",
|
|
@@ -1055,8 +1072,8 @@ class DropdownInputComponent {
|
|
|
1055
1072
|
onKeyUp = output(); // emits the input value
|
|
1056
1073
|
removeItem = output();
|
|
1057
1074
|
addItem = output();
|
|
1058
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1059
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
1075
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1076
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
1060
1077
|
@if (label()) {
|
|
1061
1078
|
<p class="font-semibold">{{ label() }}</p>
|
|
1062
1079
|
}
|
|
@@ -1090,7 +1107,7 @@ class DropdownInputComponent {
|
|
|
1090
1107
|
</Dropdown>
|
|
1091
1108
|
`, 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"] }, { 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\"]", inputs: ["class", "variant", "decoration"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
1092
1109
|
}
|
|
1093
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DropdownInputComponent, decorators: [{
|
|
1094
1111
|
type: Component,
|
|
1095
1112
|
args: [{
|
|
1096
1113
|
selector: 'dropdown-input, DropdownInput',
|
|
@@ -1138,10 +1155,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
1138
1155
|
class SearchInputFooter {
|
|
1139
1156
|
class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
|
|
1140
1157
|
variants = computed(() => cn("pt-2", this.class()), ...(ngDevMode ? [{ debugName: "variants" }] : []));
|
|
1141
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1142
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
1158
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchInputFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1159
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", 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 });
|
|
1143
1160
|
}
|
|
1144
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchInputFooter, decorators: [{
|
|
1145
1162
|
type: Directive,
|
|
1146
1163
|
args: [{
|
|
1147
1164
|
selector: ".search-input-footer, search-input-footer, SearchInputFooter, searchinputfooter",
|
|
@@ -1252,10 +1269,10 @@ class PrincipalService {
|
|
|
1252
1269
|
return EMPTY;
|
|
1253
1270
|
}));
|
|
1254
1271
|
}
|
|
1255
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1256
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1272
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PrincipalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1273
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PrincipalService, providedIn: 'root' });
|
|
1257
1274
|
}
|
|
1258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PrincipalService, decorators: [{
|
|
1259
1276
|
type: Injectable,
|
|
1260
1277
|
args: [{
|
|
1261
1278
|
providedIn: 'root'
|
|
@@ -1567,8 +1584,14 @@ class QueryService {
|
|
|
1567
1584
|
const query = includeQueryParams ? { ...this.queryParamsStore.getQuery(), ...currentQuery } : currentQuery;
|
|
1568
1585
|
// Check if the search query is empty and if empty searches are allowed
|
|
1569
1586
|
// If not allowed, return an empty result
|
|
1570
|
-
//
|
|
1571
|
-
|
|
1587
|
+
//
|
|
1588
|
+
// note:
|
|
1589
|
+
// basket overrides this rule,
|
|
1590
|
+
// open action (to open aggregations's children) also overrides this rule
|
|
1591
|
+
// determine if there are any filters applied
|
|
1592
|
+
const currentFilters = this.queryParamsStore.filters() || [];
|
|
1593
|
+
const hasFilters = currentFilters.length > 0;
|
|
1594
|
+
if (!hasFilters && !query.basket && query.action !== "open") {
|
|
1572
1595
|
const allowEmptySearch = this.appStore.allowEmptySearch(query?.name || "");
|
|
1573
1596
|
if (allowEmptySearch === false && query?.text === "") {
|
|
1574
1597
|
warn("QueryService.search: Empty search query is not allowed. Returning empty result.");
|
|
@@ -1581,7 +1604,7 @@ class QueryService {
|
|
|
1581
1604
|
query,
|
|
1582
1605
|
$auditRecord
|
|
1583
1606
|
};
|
|
1584
|
-
return this.http.post(this.API_URL
|
|
1607
|
+
return this.http.post(`${this.API_URL}/query`, body).pipe(catchError((err) => {
|
|
1585
1608
|
error("queryService.getResults failure - error: ", err);
|
|
1586
1609
|
return of({});
|
|
1587
1610
|
}), map((result) => {
|
|
@@ -1638,7 +1661,7 @@ class QueryService {
|
|
|
1638
1661
|
query
|
|
1639
1662
|
});
|
|
1640
1663
|
}
|
|
1641
|
-
return this.http.post(this.API_URL
|
|
1664
|
+
return this.http.post(`${this.API_URL}/multi`, body).pipe(catchError((err) => {
|
|
1642
1665
|
error("queryService.bulkSearch failure - error: ", err);
|
|
1643
1666
|
return EMPTY;
|
|
1644
1667
|
}), map((response) => {
|
|
@@ -1694,10 +1717,10 @@ class QueryService {
|
|
|
1694
1717
|
};
|
|
1695
1718
|
this.queryParamsStore.patch({ page }, audit);
|
|
1696
1719
|
}
|
|
1697
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1698
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
1720
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: QueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1721
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: QueryService, providedIn: "root" });
|
|
1699
1722
|
}
|
|
1700
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1723
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: QueryService, decorators: [{
|
|
1701
1724
|
type: Injectable,
|
|
1702
1725
|
args: [{
|
|
1703
1726
|
providedIn: "root"
|
|
@@ -1754,6 +1777,7 @@ class AggregationsService {
|
|
|
1754
1777
|
const expression = `${aggregation.column}:${escapeExpr(value)}`;
|
|
1755
1778
|
const q = {
|
|
1756
1779
|
...query,
|
|
1780
|
+
text: "",
|
|
1757
1781
|
action: "open",
|
|
1758
1782
|
open: [{ expression, aggregation: aggregation.name }]
|
|
1759
1783
|
};
|
|
@@ -1962,34 +1986,34 @@ class AggregationsService {
|
|
|
1962
1986
|
return authorizedFilters;
|
|
1963
1987
|
}
|
|
1964
1988
|
getFilterCriteria = () => {
|
|
1965
|
-
//
|
|
1966
|
-
//
|
|
1967
|
-
return (
|
|
1968
|
-
return this.appStore.filters().some((
|
|
1969
|
-
// if
|
|
1970
|
-
if (
|
|
1971
|
-
return
|
|
1989
|
+
// filter: object filter from the custom JSON
|
|
1990
|
+
// agg: object aggregation returned by the backend
|
|
1991
|
+
return (agg) => {
|
|
1992
|
+
return this.appStore.filters().some((filter) => {
|
|
1993
|
+
// if filter.name is defined, use it to compare
|
|
1994
|
+
if (filter.name) {
|
|
1995
|
+
return filter.name.toLocaleLowerCase() === agg.name.toLocaleLowerCase();
|
|
1972
1996
|
}
|
|
1973
1997
|
// fallback to column comparison
|
|
1974
1998
|
// column can be a column's name or an alias
|
|
1975
1999
|
// resolve ambiguity between column and alias
|
|
1976
2000
|
const { columnMap } = getState(this.appStore);
|
|
1977
2001
|
// get the actual column for both filter and f
|
|
1978
|
-
const
|
|
1979
|
-
const
|
|
2002
|
+
const aggColumn = columnMap?.[agg.column.toLocaleLowerCase()];
|
|
2003
|
+
const filterColumn = columnMap?.[filter?.column?.toLocaleLowerCase() || filter.name.toLocaleLowerCase()];
|
|
1980
2004
|
// if either column is not found, fallback to comparing the raw values
|
|
1981
|
-
if (!
|
|
1982
|
-
return
|
|
2005
|
+
if (!aggColumn || !filterColumn) {
|
|
2006
|
+
return filter?.column?.toLocaleLowerCase() === agg?.column?.toLocaleLowerCase();
|
|
1983
2007
|
}
|
|
1984
2008
|
// compare the actual column names coming from the column map
|
|
1985
|
-
return
|
|
2009
|
+
return aggColumn?.name === filterColumn?.name;
|
|
1986
2010
|
});
|
|
1987
2011
|
};
|
|
1988
2012
|
};
|
|
1989
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1990
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
2013
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AggregationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2014
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AggregationsService, providedIn: "root" });
|
|
1991
2015
|
}
|
|
1992
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
2016
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AggregationsService, decorators: [{
|
|
1993
2017
|
type: Injectable,
|
|
1994
2018
|
args: [{
|
|
1995
2019
|
providedIn: "root"
|
|
@@ -2039,7 +2063,7 @@ function AuthGuard() {
|
|
|
2039
2063
|
sessionStorage.setItem("passwordExpiredFlow", "true");
|
|
2040
2064
|
const username = (p.name || "").trim();
|
|
2041
2065
|
router.navigate(["/login"], {
|
|
2042
|
-
queryParams: { mode: "changepassword", username, returnUrl: state.url }
|
|
2066
|
+
queryParams: { mode: "changepassword", alert: "passwordExpired", username, returnUrl: state.url }
|
|
2043
2067
|
});
|
|
2044
2068
|
return false;
|
|
2045
2069
|
}
|
|
@@ -2089,7 +2113,7 @@ function PasswordExpiryGuard() {
|
|
|
2089
2113
|
sessionStorage.setItem("passwordExpiredFlow", "true");
|
|
2090
2114
|
const username = (p.name || "").trim();
|
|
2091
2115
|
router.navigate(["/login"], {
|
|
2092
|
-
queryParams: { mode: "changepassword", username, returnUrl: state.url }
|
|
2116
|
+
queryParams: { mode: "changepassword", alert: "passwordExpired", username, returnUrl: state.url }
|
|
2093
2117
|
});
|
|
2094
2118
|
return false;
|
|
2095
2119
|
}
|
|
@@ -2972,10 +2996,10 @@ class ApplicationService {
|
|
|
2972
2996
|
this.titleService.setTitle(title);
|
|
2973
2997
|
}
|
|
2974
2998
|
}
|
|
2975
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
2976
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
2999
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ApplicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3000
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ApplicationService, providedIn: "root" });
|
|
2977
3001
|
}
|
|
2978
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3002
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ApplicationService, decorators: [{
|
|
2979
3003
|
type: Injectable,
|
|
2980
3004
|
args: [{
|
|
2981
3005
|
providedIn: "root"
|
|
@@ -3087,10 +3111,10 @@ class AuditService {
|
|
|
3087
3111
|
}
|
|
3088
3112
|
});
|
|
3089
3113
|
}
|
|
3090
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3091
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3114
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuditService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3115
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuditService, providedIn: 'root' });
|
|
3092
3116
|
}
|
|
3093
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuditService, decorators: [{
|
|
3094
3118
|
type: Injectable,
|
|
3095
3119
|
args: [{
|
|
3096
3120
|
providedIn: 'root'
|
|
@@ -3158,10 +3182,10 @@ class AutocompleteService {
|
|
|
3158
3182
|
}
|
|
3159
3183
|
return items;
|
|
3160
3184
|
}
|
|
3161
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3162
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3185
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3186
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteService, providedIn: 'root' });
|
|
3163
3187
|
}
|
|
3164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AutocompleteService, decorators: [{
|
|
3165
3189
|
type: Injectable,
|
|
3166
3190
|
args: [{
|
|
3167
3191
|
providedIn: 'root'
|
|
@@ -3199,10 +3223,10 @@ class JsonMethodPluginService {
|
|
|
3199
3223
|
...options
|
|
3200
3224
|
});
|
|
3201
3225
|
}
|
|
3202
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3203
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3226
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: JsonMethodPluginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3227
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: JsonMethodPluginService, providedIn: 'root' });
|
|
3204
3228
|
}
|
|
3205
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3229
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: JsonMethodPluginService, decorators: [{
|
|
3206
3230
|
type: Injectable,
|
|
3207
3231
|
args: [{
|
|
3208
3232
|
providedIn: 'root'
|
|
@@ -3238,10 +3262,10 @@ class NavigationService {
|
|
|
3238
3262
|
this.urlAfterNavigation = event.url;
|
|
3239
3263
|
}
|
|
3240
3264
|
}), shareReplay(1));
|
|
3241
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3242
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3265
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3266
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NavigationService, providedIn: "root" });
|
|
3243
3267
|
}
|
|
3244
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3268
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NavigationService, decorators: [{
|
|
3245
3269
|
type: Injectable,
|
|
3246
3270
|
args: [{
|
|
3247
3271
|
providedIn: "root"
|
|
@@ -3421,6 +3445,8 @@ class PreviewService {
|
|
|
3421
3445
|
customHighlights,
|
|
3422
3446
|
$auditRecord
|
|
3423
3447
|
};
|
|
3448
|
+
// reset preview data
|
|
3449
|
+
this.previewData = undefined;
|
|
3424
3450
|
return this.http
|
|
3425
3451
|
.post(`${this.API_URL}/preview`, body)
|
|
3426
3452
|
.pipe(tap((data) => this.setPreviewData(data)));
|
|
@@ -3669,10 +3695,10 @@ class PreviewService {
|
|
|
3669
3695
|
this.currentPage.set(this.totalPages());
|
|
3670
3696
|
this.sendMessage({ action: "last-page" });
|
|
3671
3697
|
}
|
|
3672
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3673
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3698
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PreviewService, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3699
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PreviewService, providedIn: "root" });
|
|
3674
3700
|
}
|
|
3675
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3701
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PreviewService, decorators: [{
|
|
3676
3702
|
type: Injectable,
|
|
3677
3703
|
args: [{
|
|
3678
3704
|
providedIn: "root"
|
|
@@ -3737,10 +3763,10 @@ class SavedSearchesService {
|
|
|
3737
3763
|
deleteSavedSearch(index) {
|
|
3738
3764
|
this.userSettingsStore.deleteSavedSearch(index);
|
|
3739
3765
|
}
|
|
3740
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3741
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3766
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SavedSearchesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3767
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SavedSearchesService, providedIn: 'root' });
|
|
3742
3768
|
}
|
|
3743
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3769
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SavedSearchesService, decorators: [{
|
|
3744
3770
|
type: Injectable,
|
|
3745
3771
|
args: [{
|
|
3746
3772
|
providedIn: 'root'
|
|
@@ -3833,10 +3859,10 @@ class SearchService {
|
|
|
3833
3859
|
}
|
|
3834
3860
|
});
|
|
3835
3861
|
}
|
|
3836
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
3837
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
3862
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3863
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchService, providedIn: 'root' });
|
|
3838
3864
|
}
|
|
3839
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
3865
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchService, decorators: [{
|
|
3840
3866
|
type: Injectable,
|
|
3841
3867
|
args: [{
|
|
3842
3868
|
providedIn: 'root'
|
|
@@ -3997,10 +4023,10 @@ class SelectionService {
|
|
|
3997
4023
|
const url = this.router.createUrlTree([], { relativeTo: this.route, queryParams }).toString();
|
|
3998
4024
|
this.location.replaceState(url);
|
|
3999
4025
|
}
|
|
4000
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4001
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4026
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4027
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectionService, providedIn: 'root' });
|
|
4002
4028
|
}
|
|
4003
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4029
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectionService, decorators: [{
|
|
4004
4030
|
type: Injectable,
|
|
4005
4031
|
args: [{
|
|
4006
4032
|
providedIn: 'root'
|
|
@@ -4084,10 +4110,10 @@ class SelectionHistoryService {
|
|
|
4084
4110
|
this.selectionHistoryEvent.next('back');
|
|
4085
4111
|
return last;
|
|
4086
4112
|
}
|
|
4087
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4088
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4113
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectionHistoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4114
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectionHistoryService, providedIn: 'root' });
|
|
4089
4115
|
}
|
|
4090
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4116
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectionHistoryService, decorators: [{
|
|
4091
4117
|
type: Injectable,
|
|
4092
4118
|
args: [{
|
|
4093
4119
|
providedIn: 'root'
|
|
@@ -4122,16 +4148,41 @@ class TextChunkService {
|
|
|
4122
4148
|
return [];
|
|
4123
4149
|
}));
|
|
4124
4150
|
}
|
|
4125
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4126
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
4151
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TextChunkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4152
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TextChunkService, providedIn: 'root' });
|
|
4127
4153
|
}
|
|
4128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: TextChunkService, decorators: [{
|
|
4129
4155
|
type: Injectable,
|
|
4130
4156
|
args: [{
|
|
4131
4157
|
providedIn: 'root'
|
|
4132
4158
|
}]
|
|
4133
4159
|
}] });
|
|
4134
4160
|
|
|
4161
|
+
class UserProfileService {
|
|
4162
|
+
API_URL = `${globalConfig.backendUrl}/api/v2/user-profile`;
|
|
4163
|
+
/**
|
|
4164
|
+
* Retrieves the user profile by user ID.
|
|
4165
|
+
*
|
|
4166
|
+
* @param id - The ID of the user.
|
|
4167
|
+
* @returns An Observable that emits an the UserProfile object.
|
|
4168
|
+
*/
|
|
4169
|
+
getUserProfile(principal) {
|
|
4170
|
+
return httpResource(() => (principal()?.userId ? `${this.API_URL}/${principal()?.userId}` : undefined), {
|
|
4171
|
+
parse: (response) => {
|
|
4172
|
+
return response;
|
|
4173
|
+
}
|
|
4174
|
+
});
|
|
4175
|
+
}
|
|
4176
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4177
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileService, providedIn: "root" });
|
|
4178
|
+
}
|
|
4179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileService, decorators: [{
|
|
4180
|
+
type: Injectable,
|
|
4181
|
+
args: [{
|
|
4182
|
+
providedIn: "root"
|
|
4183
|
+
}]
|
|
4184
|
+
}] });
|
|
4185
|
+
|
|
4135
4186
|
async function signIn() {
|
|
4136
4187
|
assertInInjectionContext(signIn);
|
|
4137
4188
|
const router = inject(Router);
|
|
@@ -4298,7 +4349,7 @@ function withQueryParamsFeatures() {
|
|
|
4298
4349
|
/**
|
|
4299
4350
|
* Sets the state from the given URL by extracting query parameters and updating the store.
|
|
4300
4351
|
*
|
|
4301
|
-
* @param
|
|
4352
|
+
* @param href - The URL containing query parameters to set the state from.
|
|
4302
4353
|
*
|
|
4303
4354
|
* The function performs the following steps:
|
|
4304
4355
|
* 1. Extracts the path from the URL.
|
|
@@ -4307,11 +4358,13 @@ function withQueryParamsFeatures() {
|
|
|
4307
4358
|
* 4. Converts the page parameter to a number if it exists.
|
|
4308
4359
|
* 5. Updates the store state with the extracted and parsed values.
|
|
4309
4360
|
*/
|
|
4310
|
-
setFromUrl(
|
|
4311
|
-
if (!
|
|
4361
|
+
setFromUrl(href) {
|
|
4362
|
+
if (!href)
|
|
4312
4363
|
return;
|
|
4313
|
-
|
|
4314
|
-
const
|
|
4364
|
+
// get the hash path without the query params and without the leading '#'
|
|
4365
|
+
const url = new URL(href, window.location.origin);
|
|
4366
|
+
const path = url.hash.split("?")[0].replace(/^#/, "");
|
|
4367
|
+
const { q: text, f, id, p, s: sort, c, t: tab, basket, n: name } = queryParamsFromUrl(href);
|
|
4315
4368
|
const filters = f ? JSON.parse(decodeURIComponent(f)) : [];
|
|
4316
4369
|
const spellingCorrectionMode = c;
|
|
4317
4370
|
let page;
|
|
@@ -4319,18 +4372,19 @@ function withQueryParamsFeatures() {
|
|
|
4319
4372
|
page = parseInt(p, 10);
|
|
4320
4373
|
}
|
|
4321
4374
|
patchState(store, (state) => {
|
|
4322
|
-
return { ...state, path, text, filters, id, page, sort, spellingCorrectionMode, tab, basket };
|
|
4375
|
+
return { ...state, path, text, filters, id, page, sort, spellingCorrectionMode, tab, basket, name };
|
|
4323
4376
|
});
|
|
4324
4377
|
},
|
|
4325
4378
|
_updateUrlQueryParams(state, audit) {
|
|
4326
|
-
const { filters, page, sort, tab, text, basket } = state;
|
|
4379
|
+
const { filters, page, sort, tab, text, basket, name } = state;
|
|
4327
4380
|
const queryParams = {
|
|
4328
4381
|
f: filters && filters.length > 0 ? JSON.stringify(filters) : undefined,
|
|
4329
4382
|
p: page,
|
|
4330
4383
|
s: sort,
|
|
4331
4384
|
t: tab,
|
|
4332
4385
|
q: text,
|
|
4333
|
-
b: basket
|
|
4386
|
+
b: basket,
|
|
4387
|
+
n: name
|
|
4334
4388
|
};
|
|
4335
4389
|
router.navigate([], { relativeTo: route, queryParamsHandling: "merge", queryParams, state: { audit } });
|
|
4336
4390
|
},
|
|
@@ -4342,7 +4396,8 @@ function withQueryParamsFeatures() {
|
|
|
4342
4396
|
s: state.sort,
|
|
4343
4397
|
t: state.tab,
|
|
4344
4398
|
q: state.text,
|
|
4345
|
-
b: state.basket
|
|
4399
|
+
b: state.basket,
|
|
4400
|
+
n: state.name
|
|
4346
4401
|
};
|
|
4347
4402
|
},
|
|
4348
4403
|
/**
|
|
@@ -4384,7 +4439,8 @@ function withQueryParamsFeatures() {
|
|
|
4384
4439
|
// cancel if a filter is found for the current field which contains the value we want to add
|
|
4385
4440
|
if (existingFilter &&
|
|
4386
4441
|
filter.value &&
|
|
4387
|
-
(existingFilter.value === filter.value
|
|
4442
|
+
(existingFilter.value?.toLowerCase() === filter.value?.toLowerCase() ||
|
|
4443
|
+
existingFilter.values?.some((v) => v?.toLowerCase() === filter.value?.toLowerCase())))
|
|
4388
4444
|
return state;
|
|
4389
4445
|
if (existingFilter) {
|
|
4390
4446
|
// if filter found for the field without the value we want to add, merge the filters and values
|
|
@@ -4508,7 +4564,9 @@ function withQueryParamsFeatures() {
|
|
|
4508
4564
|
*/
|
|
4509
4565
|
patch(params, audit) {
|
|
4510
4566
|
patchState(store, (state) => {
|
|
4511
|
-
|
|
4567
|
+
// get the hash path without the query params and without the leading '#'
|
|
4568
|
+
const path = window.location.hash.split("?")[0].replace(/^#/, "");
|
|
4569
|
+
const newState = { ...state, ...params, path };
|
|
4512
4570
|
this._updateUrlQueryParams(newState, audit);
|
|
4513
4571
|
return newState;
|
|
4514
4572
|
});
|
|
@@ -4749,10 +4807,10 @@ class SourceComponent {
|
|
|
4749
4807
|
}
|
|
4750
4808
|
return { iconClass: defaultIconClass };
|
|
4751
4809
|
}, ...(ngDevMode ? [{ debugName: "iconDetails" }] : []));
|
|
4752
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4753
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
4810
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SourceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4811
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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) {\n <img [src]=\"iconDetails()?.iconPath\" [alt]=\"collection()?.[0] || ('sources.sourceIcon' | transloco)\" />\n} @else {\n <i class=\"{{ iconDetails()?.iconClass }}\" [attr.aria-label]=\"'sources.sourceIcon' | transloco\"></i>\n}\n", dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
4754
4812
|
}
|
|
4755
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4813
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SourceComponent, decorators: [{
|
|
4756
4814
|
type: Component,
|
|
4757
4815
|
args: [{ selector: 'source, Source', standalone: true, imports: [TranslocoPipe], providers: [provideTranslocoScope('sources')], template: "@if (iconDetails()?.iconPath) {\n <img [src]=\"iconDetails()?.iconPath\" [alt]=\"collection()?.[0] || ('sources.sourceIcon' | transloco)\" />\n} @else {\n <i class=\"{{ iconDetails()?.iconClass }}\" [attr.aria-label]=\"'sources.sourceIcon' | transloco\"></i>\n}\n" }]
|
|
4758
4816
|
}], propDecorators: { collection: [{ type: i0.Input, args: [{ isSignal: true, alias: "collection", required: false }] }], connector: [{ type: i0.Input, args: [{ isSignal: true, alias: "connector", required: false }] }] } });
|
|
@@ -4837,8 +4895,8 @@ class DocumentLocatorComponent {
|
|
|
4837
4895
|
const { filters } = getState(this.queryParamStore);
|
|
4838
4896
|
this.router.navigate([], { queryParams: { f: JSON.stringify(filters) }, queryParamsHandling: "merge" });
|
|
4839
4897
|
}
|
|
4840
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4841
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
4898
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DocumentLocatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4899
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
4842
4900
|
<!-- Renders all segment hidden to user to compute width -->
|
|
4843
4901
|
<div #shadowRender class="pointer-events-none invisible absolute left-0 top-0 -z-10 flex gap-2">
|
|
4844
4902
|
@for (segment of locationSegments(); track $index) {
|
|
@@ -4887,7 +4945,7 @@ class DocumentLocatorComponent {
|
|
|
4887
4945
|
</div>
|
|
4888
4946
|
`, 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", inputs: ["class"] }, { kind: "component", type: SourceComponent, selector: "source, Source", inputs: ["collection", "connector"] }, { kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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"] }] });
|
|
4889
4947
|
}
|
|
4890
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
4948
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DocumentLocatorComponent, decorators: [{
|
|
4891
4949
|
type: Component,
|
|
4892
4950
|
args: [{
|
|
4893
4951
|
selector: "document-locator, DocumentLocator",
|
|
@@ -4960,8 +5018,8 @@ class ErrorComponent {
|
|
|
4960
5018
|
reload() {
|
|
4961
5019
|
this.router.navigate(['/']).then(() => window.location.reload());
|
|
4962
5020
|
}
|
|
4963
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
4964
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
5021
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5022
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: ErrorComponent, isStandalone: true, selector: "error-component, ErrorComponent", ngImport: i0, template: `
|
|
4965
5023
|
<div class="bg-background text-foreground flex min-h-screen flex-col items-center justify-center">
|
|
4966
5024
|
<svg
|
|
4967
5025
|
class="mb-8 h-20 w-20 text-red-600"
|
|
@@ -5004,7 +5062,7 @@ class ErrorComponent {
|
|
|
5004
5062
|
</div>
|
|
5005
5063
|
`, isInline: true });
|
|
5006
5064
|
}
|
|
5007
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5065
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ErrorComponent, decorators: [{
|
|
5008
5066
|
type: Component,
|
|
5009
5067
|
args: [{
|
|
5010
5068
|
selector: 'error-component, ErrorComponent',
|
|
@@ -5101,8 +5159,8 @@ class LoadingComponent {
|
|
|
5101
5159
|
});
|
|
5102
5160
|
}
|
|
5103
5161
|
}
|
|
5104
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5105
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
5162
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LoadingComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
5163
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: LoadingComponent, isStandalone: true, selector: "app-wait", ngImport: i0, template: `
|
|
5106
5164
|
<div class="flex h-[100dvh] w-full items-center justify-center">
|
|
5107
5165
|
<div class="flex flex-col items-center space-y-4">
|
|
5108
5166
|
<span class="loader"></span>
|
|
@@ -5110,7 +5168,7 @@ class LoadingComponent {
|
|
|
5110
5168
|
</div>
|
|
5111
5169
|
`, 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"] });
|
|
5112
5170
|
}
|
|
5113
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LoadingComponent, decorators: [{
|
|
5114
5172
|
type: Component,
|
|
5115
5173
|
args: [{ selector: 'app-wait', standalone: true, imports: [], template: `
|
|
5116
5174
|
<div class="flex h-[100dvh] w-full items-center justify-center">
|
|
@@ -5134,8 +5192,8 @@ class MetadataComponent {
|
|
|
5134
5192
|
handleClick(event, item) {
|
|
5135
5193
|
this.click.emit({ filter: item, event });
|
|
5136
5194
|
}
|
|
5137
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5138
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5195
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MetadataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5196
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
5139
5197
|
@for (item of items().slice(0, limit()); track $index) {
|
|
5140
5198
|
@if (item) {
|
|
5141
5199
|
<badge
|
|
@@ -5148,7 +5206,7 @@ class MetadataComponent {
|
|
|
5148
5206
|
}
|
|
5149
5207
|
`, isInline: true, styles: [":host{display:contents}:host,:host:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
5150
5208
|
}
|
|
5151
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MetadataComponent, decorators: [{
|
|
5152
5210
|
type: Component,
|
|
5153
5211
|
args: [{ selector: "Metadata, metadata", exportAs: "metadata", standalone: true, imports: [SyslangPipe, BadgeComponent], template: `
|
|
5154
5212
|
@for (item of items().slice(0, limit()); track $index) {
|
|
@@ -5182,10 +5240,10 @@ class MissingTermsComponent {
|
|
|
5182
5240
|
};
|
|
5183
5241
|
});
|
|
5184
5242
|
}, ...(ngDevMode ? [{ debugName: "missingTerms" }] : []));
|
|
5185
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5186
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5243
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MissingTermsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5244
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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" }] });
|
|
5187
5245
|
}
|
|
5188
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MissingTermsComponent, decorators: [{
|
|
5189
5247
|
type: Component,
|
|
5190
5248
|
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"] }]
|
|
5191
5249
|
}], propDecorators: { article: [{ type: i0.Input, args: [{ isSignal: true, alias: "article", required: true }] }] } });
|
|
@@ -5289,8 +5347,8 @@ class CollectionsDialog {
|
|
|
5289
5347
|
this.newCollectionName.set("");
|
|
5290
5348
|
this.creating.set(false);
|
|
5291
5349
|
}
|
|
5292
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5293
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5350
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CollectionsDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5351
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
5294
5352
|
<dialog #dialog (closed)="closeBtn.click()">
|
|
5295
5353
|
<DialogContent>
|
|
5296
5354
|
<DialogHeader>
|
|
@@ -5356,7 +5414,7 @@ class CollectionsDialog {
|
|
|
5356
5414
|
</dialog>
|
|
5357
5415
|
`, 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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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\"]", inputs: ["class", "variant", "decoration"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
5358
5416
|
}
|
|
5359
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5417
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CollectionsDialog, decorators: [{
|
|
5360
5418
|
type: Component,
|
|
5361
5419
|
args: [{
|
|
5362
5420
|
selector: "add-to-collection-dialog",
|
|
@@ -5535,10 +5593,10 @@ class ExportService {
|
|
|
5535
5593
|
responseType: 'blob'
|
|
5536
5594
|
});
|
|
5537
5595
|
}
|
|
5538
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5539
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
5596
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5597
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExportService, providedIn: 'root' });
|
|
5540
5598
|
}
|
|
5541
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5599
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExportService, decorators: [{
|
|
5542
5600
|
type: Injectable,
|
|
5543
5601
|
args: [{
|
|
5544
5602
|
providedIn: 'root'
|
|
@@ -5610,8 +5668,8 @@ class ExportDialog {
|
|
|
5610
5668
|
this.maxCount.set(1);
|
|
5611
5669
|
}
|
|
5612
5670
|
}
|
|
5613
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5614
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5671
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExportDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5672
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
5615
5673
|
<dialog #dialog>
|
|
5616
5674
|
<DialogContent
|
|
5617
5675
|
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">
|
|
@@ -5682,7 +5740,7 @@ class ExportDialog {
|
|
|
5682
5740
|
</dialog>
|
|
5683
5741
|
`, 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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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" }] });
|
|
5684
5742
|
}
|
|
5685
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5743
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExportDialog, decorators: [{
|
|
5686
5744
|
type: Component,
|
|
5687
5745
|
args: [{
|
|
5688
5746
|
selector: "export-dialog",
|
|
@@ -5820,8 +5878,8 @@ class MultiSelectionToolbarComponent {
|
|
|
5820
5878
|
});
|
|
5821
5879
|
openExportDialog = () => this.dialog.open(ExportDialog, this.ids());
|
|
5822
5880
|
attachToAssistant = () => this.selection.update({ assistantIdsToAttach: this.ids() });
|
|
5823
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5824
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
5881
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MultiSelectionToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5882
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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-14": "count() > 0" }, classAttribute: "fixed -bottom-10 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: `
|
|
5825
5883
|
<menu id="multi-select-toolbar" [class]="cn(variants(), class())">
|
|
5826
5884
|
<li class="ps-0!">
|
|
5827
5885
|
{{ 'multiSelectionToolbar.itemsSelected' | transloco: { count: count() } }}
|
|
@@ -5855,7 +5913,7 @@ class MultiSelectionToolbarComponent {
|
|
|
5855
5913
|
</menu>
|
|
5856
5914
|
`, isInline: true, dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
5857
5915
|
}
|
|
5858
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
5916
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MultiSelectionToolbarComponent, decorators: [{
|
|
5859
5917
|
type: Component,
|
|
5860
5918
|
args: [{
|
|
5861
5919
|
selector: "MultiSelectionToolbar, multi-selection-toolbar",
|
|
@@ -5936,10 +5994,10 @@ class InfinityScrollDirective {
|
|
|
5936
5994
|
ngOnDestroy() {
|
|
5937
5995
|
this.observer.disconnect();
|
|
5938
5996
|
}
|
|
5939
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
5940
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
5997
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InfinityScrollDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5998
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: InfinityScrollDirective, isStandalone: true, selector: "[infinity-scroll]", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onScroll: "onScroll" }, ngImport: i0 });
|
|
5941
5999
|
}
|
|
5942
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6000
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: InfinityScrollDirective, decorators: [{
|
|
5943
6001
|
type: Directive,
|
|
5944
6002
|
args: [{
|
|
5945
6003
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -6243,10 +6301,10 @@ class KeyboardNavigatorDirective {
|
|
|
6243
6301
|
this.renderer.setAttribute(this.listboxElement(), 'aria-hidden', 'true');
|
|
6244
6302
|
this.ariaExpanded.set(false);
|
|
6245
6303
|
}
|
|
6246
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6247
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
6304
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: KeyboardNavigatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6305
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", 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 });
|
|
6248
6306
|
}
|
|
6249
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: KeyboardNavigatorDirective, decorators: [{
|
|
6250
6308
|
type: Directive,
|
|
6251
6309
|
args: [{
|
|
6252
6310
|
selector: 'input[role="combobox"]',
|
|
@@ -6281,10 +6339,10 @@ class OpenArticleOnCtrlEnterDirective {
|
|
|
6281
6339
|
return;
|
|
6282
6340
|
this.previewService.openExternal(this.article());
|
|
6283
6341
|
}
|
|
6284
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6285
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
6342
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OpenArticleOnCtrlEnterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6343
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", 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 });
|
|
6286
6344
|
}
|
|
6287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6345
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OpenArticleOnCtrlEnterDirective, decorators: [{
|
|
6288
6346
|
type: Directive,
|
|
6289
6347
|
args: [{
|
|
6290
6348
|
selector: '[appOpenArticleOnCtrlEnter],[openArticleOnCtrlEnter]',
|
|
@@ -6300,10 +6358,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
6300
6358
|
* overflow manager.
|
|
6301
6359
|
*/
|
|
6302
6360
|
class OverflowItemDirective {
|
|
6303
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6304
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
6361
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OverflowItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6362
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: OverflowItemDirective, isStandalone: true, selector: "[overflowItem]", ngImport: i0 });
|
|
6305
6363
|
}
|
|
6306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6364
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OverflowItemDirective, decorators: [{
|
|
6307
6365
|
type: Directive,
|
|
6308
6366
|
args: [{
|
|
6309
6367
|
selector: '[overflowItem]',
|
|
@@ -6315,10 +6373,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
6315
6373
|
* for the overflow manager.
|
|
6316
6374
|
*/
|
|
6317
6375
|
class OverflowStopDirective {
|
|
6318
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6319
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
6376
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OverflowStopDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6377
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: OverflowStopDirective, isStandalone: true, selector: "[overflowStop]", ngImport: i0 });
|
|
6320
6378
|
}
|
|
6321
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6379
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OverflowStopDirective, decorators: [{
|
|
6322
6380
|
type: Directive,
|
|
6323
6381
|
args: [{
|
|
6324
6382
|
selector: '[overflowStop]',
|
|
@@ -6428,10 +6486,10 @@ class OverflowManagerDirective {
|
|
|
6428
6486
|
item.nativeElement.style.visibility = state;
|
|
6429
6487
|
});
|
|
6430
6488
|
}
|
|
6431
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6432
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.
|
|
6489
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OverflowManagerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6490
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.16", 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 } }, 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 });
|
|
6433
6491
|
}
|
|
6434
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6492
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OverflowManagerDirective, decorators: [{
|
|
6435
6493
|
type: Directive,
|
|
6436
6494
|
args: [{
|
|
6437
6495
|
selector: '[overflowManager]',
|
|
@@ -6570,10 +6628,10 @@ class DrawerStackService {
|
|
|
6570
6628
|
this.openAssistant();
|
|
6571
6629
|
this.askAI$.next(text);
|
|
6572
6630
|
}
|
|
6573
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6574
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
6631
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerStackService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6632
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerStackService, providedIn: 'root' });
|
|
6575
6633
|
}
|
|
6576
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6634
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerStackService, decorators: [{
|
|
6577
6635
|
type: Injectable,
|
|
6578
6636
|
args: [{
|
|
6579
6637
|
providedIn: 'root'
|
|
@@ -6615,10 +6673,10 @@ class SelectArticleOnClickDirective {
|
|
|
6615
6673
|
break;
|
|
6616
6674
|
}
|
|
6617
6675
|
}
|
|
6618
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6619
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
6676
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectArticleOnClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6677
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", 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 } }, host: { listeners: { "keydown.enter": "onEnter($event)", "click": "onClick()" } }, ngImport: i0 });
|
|
6620
6678
|
}
|
|
6621
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6679
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SelectArticleOnClickDirective, decorators: [{
|
|
6622
6680
|
type: Directive,
|
|
6623
6681
|
args: [{
|
|
6624
6682
|
selector: '[selectArticleOnClick]',
|
|
@@ -6667,10 +6725,10 @@ class ShowBookmarkDirective {
|
|
|
6667
6725
|
this.showBookmark.emit(bookmarkHovered || isBookmarked);
|
|
6668
6726
|
});
|
|
6669
6727
|
}
|
|
6670
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6671
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
6728
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ShowBookmarkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6729
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", 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 });
|
|
6672
6730
|
}
|
|
6673
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6731
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ShowBookmarkDirective, decorators: [{
|
|
6674
6732
|
type: Directive,
|
|
6675
6733
|
args: [{
|
|
6676
6734
|
selector: '[showBookmark]',
|
|
@@ -6701,10 +6759,10 @@ class ThemeProviderDirective {
|
|
|
6701
6759
|
applyThemeToNativeElement(this.host.nativeElement, vars);
|
|
6702
6760
|
});
|
|
6703
6761
|
}
|
|
6704
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6705
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.
|
|
6762
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ThemeProviderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6763
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.16", type: ThemeProviderDirective, isStandalone: true, selector: "[themeProvider]", inputs: { themeProvider: { classPropertyName: "themeProvider", publicName: "themeProvider", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
6706
6764
|
}
|
|
6707
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6765
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ThemeProviderDirective, decorators: [{
|
|
6708
6766
|
type: Directive,
|
|
6709
6767
|
args: [{
|
|
6710
6768
|
selector: '[themeProvider]',
|
|
@@ -6728,10 +6786,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
6728
6786
|
*/
|
|
6729
6787
|
class ChildMarkerDirective {
|
|
6730
6788
|
template = inject((TemplateRef));
|
|
6731
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6732
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
6789
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChildMarkerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6790
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.16", type: ChildMarkerDirective, isStandalone: true, selector: "[childMarker]", ngImport: i0 });
|
|
6733
6791
|
}
|
|
6734
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6792
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChildMarkerDirective, decorators: [{
|
|
6735
6793
|
type: Directive,
|
|
6736
6794
|
args: [{
|
|
6737
6795
|
selector: '[childMarker]'
|
|
@@ -6811,8 +6869,8 @@ class NavbarTabsComponent {
|
|
|
6811
6869
|
// we use the routerlink to navigate, so just close the drawer and remove the id parameter from the query params
|
|
6812
6870
|
this.drawerStack.closeAll();
|
|
6813
6871
|
}
|
|
6814
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6815
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
6872
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NavbarTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6873
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: NavbarTabsComponent, isStandalone: true, selector: "navbar-tabs", inputs: { showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null }, path: { classPropertyName: "path", publicName: "path", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
6816
6874
|
<!-- do not display the tabs if there are no tabs -->
|
|
6817
6875
|
@if (tabs().length > 0) {
|
|
6818
6876
|
<div overflowManager class="relative col-span-2 col-start-2 row-start-2 flex" (count)="visibleTabCount.set($event)">
|
|
@@ -6873,7 +6931,7 @@ class NavbarTabsComponent {
|
|
|
6873
6931
|
}
|
|
6874
6932
|
`, 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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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: "component", type: TabComponent, selector: "tab, Tab", inputs: ["class", "variant", "shadow", "size", "decoration", "value", "active"], outputs: ["clicked"] }, { kind: "directive", type: OverflowManagerDirective, selector: "[overflowManager]", inputs: ["target", "margin", "direction"], outputs: ["count"] }, { kind: "directive", type: OverflowItemDirective, selector: "[overflowItem]" }, { kind: "directive", type: OverflowStopDirective, selector: "[overflowStop]" }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "component", type: EllipsisIcon, selector: "ellipsis-icon, EllipsisIcon, ellipsisicon", inputs: ["class", "orientation"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
6875
6933
|
}
|
|
6876
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
6934
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NavbarTabsComponent, decorators: [{
|
|
6877
6935
|
type: Component,
|
|
6878
6936
|
args: [{
|
|
6879
6937
|
selector: "navbar-tabs",
|
|
@@ -6959,8 +7017,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
6959
7017
|
}], propDecorators: { showCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCount", required: false }] }], path: [{ type: i0.Input, args: [{ isSignal: true, alias: "path", required: false }] }] } });
|
|
6960
7018
|
|
|
6961
7019
|
class NoResultComponent {
|
|
6962
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
6963
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
7020
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NoResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7021
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: NoResultComponent, isStandalone: true, selector: "NoResult", host: { classAttribute: "p-4 flex flex-col gap-2 bg-neutral-100 dark:bg-menu rounded-md" }, providers: [provideTranslocoScope('no-result')], ngImport: i0, template: `
|
|
6964
7022
|
<header class="flex items-center gap-2 text-xl font-semibold">
|
|
6965
7023
|
<i class="fa-fw far fa-face-sad-sweat text-3xl"></i>
|
|
6966
7024
|
<p>{{ 'noResult.noResult' | transloco }}</p>
|
|
@@ -6973,7 +7031,7 @@ class NoResultComponent {
|
|
|
6973
7031
|
<p>{{ 'noResult.noResultAssistance' | transloco }}</p>
|
|
6974
7032
|
`, isInline: true, dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
6975
7033
|
}
|
|
6976
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7034
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: NoResultComponent, decorators: [{
|
|
6977
7035
|
type: Component,
|
|
6978
7036
|
args: [{
|
|
6979
7037
|
selector: 'NoResult',
|
|
@@ -7019,8 +7077,8 @@ class PagerComponent {
|
|
|
7019
7077
|
this.page.set(this.page() - 1);
|
|
7020
7078
|
this.queryService.gotoPage(this.page());
|
|
7021
7079
|
}
|
|
7022
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7023
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
7080
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7081
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: PagerComponent, isStandalone: true, selector: "pager", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
7024
7082
|
<div class="flex gap-2">
|
|
7025
7083
|
@if ((hasPages() && page() > 1) || (!hasPages() && page() > 1)) {
|
|
7026
7084
|
<button variant="ghost" [attr.title]="'previousPage' | transloco" (click)="previousPage()">
|
|
@@ -7044,7 +7102,7 @@ class PagerComponent {
|
|
|
7044
7102
|
</div>
|
|
7045
7103
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7046
7104
|
}
|
|
7047
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PagerComponent, decorators: [{
|
|
7048
7106
|
type: Component,
|
|
7049
7107
|
args: [{
|
|
7050
7108
|
selector: 'pager',
|
|
@@ -7088,8 +7146,8 @@ class PreviewNavigator {
|
|
|
7088
7146
|
n = Math.max(1, Math.min(n, t));
|
|
7089
7147
|
this.preview.gotoPage(n);
|
|
7090
7148
|
}
|
|
7091
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7092
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
7149
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PreviewNavigator, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7150
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: PreviewNavigator, isStandalone: true, selector: "preview-navigator", host: { properties: { "class.invisible": "!total() || total() <= 1" } }, ngImport: i0, template: `
|
|
7093
7151
|
<button
|
|
7094
7152
|
variant="ghost"
|
|
7095
7153
|
size="icon"
|
|
@@ -7146,7 +7204,7 @@ class PreviewNavigator {
|
|
|
7146
7204
|
</button>
|
|
7147
7205
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ChevronLeftIconComponent, selector: "chevron-left, ChevronLeft, chevronleft", inputs: ["class"] }, { kind: "component", type: ChevronsLeftIconComponent, selector: "chevrons-left, ChevronsLeft, chevronsleft", inputs: ["class"] }, { kind: "component", type: ChevronsRightIconComponent, selector: "chevrons-right, ChevronsRight, chevronsright", inputs: ["class"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon", inputs: ["class"] }] });
|
|
7148
7206
|
}
|
|
7149
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7207
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PreviewNavigator, decorators: [{
|
|
7150
7208
|
type: Component,
|
|
7151
7209
|
args: [{
|
|
7152
7210
|
selector: "preview-navigator",
|
|
@@ -7263,10 +7321,10 @@ class SortSelectorComponent {
|
|
|
7263
7321
|
this.onSort.emit(sort);
|
|
7264
7322
|
}
|
|
7265
7323
|
}
|
|
7266
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7267
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
7324
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SortSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7325
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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>\n <button tabindex=\"0\" variant=\"ghost\" [attr.title]=\"'sortSelector.selectSort' | transloco\">\n <i class=\"fa-fw fa-regular fa-arrow-{{ sort()?.$isDesc ? 'down' : 'up' }}-big-small me-1\"></i>\n <span>{{ sort()?.display | transloco }}</span>\n </button>\n\n <MenuContent [position]=\"position()\" class=\"min-w-max\">\n @if (sortOptions().length > 0) {\n @for (option of sortOptions(); track $index) {\n <menuitem (click)=\"onSortOptionClicked(option)\" class=\"justify-between\">\n <span>{{ option.display | transloco }}</span>\n <i class=\"fa-fw fa-regular fa-arrow-{{ option.$isDesc ? 'down' : 'up' }}-big-small\"></i>\n </menuitem>\n }\n }\n </MenuContent>\n</menu>\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7268
7326
|
}
|
|
7269
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7327
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SortSelectorComponent, decorators: [{
|
|
7270
7328
|
type: Component,
|
|
7271
7329
|
args: [{ selector: 'sort-selector, sortselector, SortSelector', standalone: true, imports: [TranslocoPipe, ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent], providers: [provideTranslocoScope('sort-selector')], template: "<menu>\n <button tabindex=\"0\" variant=\"ghost\" [attr.title]=\"'sortSelector.selectSort' | transloco\">\n <i class=\"fa-fw fa-regular fa-arrow-{{ sort()?.$isDesc ? 'down' : 'up' }}-big-small me-1\"></i>\n <span>{{ sort()?.display | transloco }}</span>\n </button>\n\n <MenuContent [position]=\"position()\" class=\"min-w-max\">\n @if (sortOptions().length > 0) {\n @for (option of sortOptions(); track $index) {\n <menuitem (click)=\"onSortOptionClicked(option)\" class=\"justify-between\">\n <span>{{ option.display | transloco }}</span>\n <i class=\"fa-fw fa-regular fa-arrow-{{ option.$isDesc ? 'down' : 'up' }}-big-small\"></i>\n </menuitem>\n }\n }\n </MenuContent>\n</menu>\n" }]
|
|
7272
7330
|
}], 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"] }] } });
|
|
@@ -7306,8 +7364,8 @@ class SponsoredResultsComponent {
|
|
|
7306
7364
|
}
|
|
7307
7365
|
});
|
|
7308
7366
|
}
|
|
7309
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7310
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
7367
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SponsoredResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7368
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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()?.length) {
|
|
7311
7369
|
@for (link of sponsoredResults(); track $index) {
|
|
7312
7370
|
<li role="listitem" class="text-primary flex items-center gap-2 rounded px-3 py-2 font-bold">
|
|
7313
7371
|
<a href="{{ link.url }}" target="_blank" rel="noopener" title="{{ link.tooltip }}" class="result-link peer flex items-center gap-2 hover:underline">
|
|
@@ -7325,7 +7383,7 @@ class SponsoredResultsComponent {
|
|
|
7325
7383
|
}
|
|
7326
7384
|
}`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
7327
7385
|
}
|
|
7328
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7386
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SponsoredResultsComponent, decorators: [{
|
|
7329
7387
|
type: Component,
|
|
7330
7388
|
args: [{
|
|
7331
7389
|
selector: 'sponsored-results, SponsoredResults, sponsoredresults',
|
|
@@ -7373,8 +7431,8 @@ class ThemeSelectorComponent {
|
|
|
7373
7431
|
theme = theme.name;
|
|
7374
7432
|
this.themeStore.setCurrentTheme(this.scope(), theme);
|
|
7375
7433
|
}
|
|
7376
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7377
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
7434
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ThemeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7435
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
7378
7436
|
<Menu>
|
|
7379
7437
|
<ng-content></ng-content>
|
|
7380
7438
|
|
|
@@ -7393,7 +7451,7 @@ class ThemeSelectorComponent {
|
|
|
7393
7451
|
</Menu>
|
|
7394
7452
|
`, 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"] }] });
|
|
7395
7453
|
}
|
|
7396
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7454
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ThemeSelectorComponent, decorators: [{
|
|
7397
7455
|
type: Component,
|
|
7398
7456
|
args: [{ selector: 'theme-selector', standalone: true, imports: [MenuComponent, NgStyle, MenuContentComponent], template: `
|
|
7399
7457
|
<Menu>
|
|
@@ -7433,8 +7491,8 @@ class ThemeToggleComponent {
|
|
|
7433
7491
|
return;
|
|
7434
7492
|
this.themeStore.setDarkMode(this.scope(), status);
|
|
7435
7493
|
}
|
|
7436
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7437
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
7494
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ThemeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7495
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
7438
7496
|
<label class="flex cursor-pointer select-none items-center gap-2">
|
|
7439
7497
|
@if (darkMode()) {
|
|
7440
7498
|
<i class="fa-fw far fa-toggle-large-on text-primary"></i>
|
|
@@ -7448,7 +7506,7 @@ class ThemeToggleComponent {
|
|
|
7448
7506
|
</label>
|
|
7449
7507
|
`, 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"] }] });
|
|
7450
7508
|
}
|
|
7451
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7509
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ThemeToggleComponent, decorators: [{
|
|
7452
7510
|
type: Component,
|
|
7453
7511
|
args: [{ selector: 'theme-toggle', standalone: true, imports: [FormsModule], template: `
|
|
7454
7512
|
<label class="flex cursor-pointer select-none items-center gap-2">
|
|
@@ -7618,8 +7676,8 @@ class AlertDialog {
|
|
|
7618
7676
|
this.queryParamsStore.patch({ text: q.text, tab: q.tab, basket: q.basket, sort: q.sort, filters, name: q.name });
|
|
7619
7677
|
this.dialog()?.close();
|
|
7620
7678
|
}
|
|
7621
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7622
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
7679
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlertDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7680
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
7623
7681
|
<dialog #dialog>
|
|
7624
7682
|
<DialogContent class="sm:max-w-[425px]">
|
|
7625
7683
|
<DialogHeader>
|
|
@@ -7733,7 +7791,7 @@ class AlertDialog {
|
|
|
7733
7791
|
</dialog>
|
|
7734
7792
|
`, 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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon", inputs: ["class"] }, { kind: "component", type: LoadingCircleIconComponent, selector: "loading-circle, LoadingCircle, loadingcircle", inputs: ["class"] }, { kind: "component", type: CircleCheckIconComponent, selector: "circle-check, CircleCheck, circlecheck", inputs: ["class"] }, { kind: "directive", type: SelectOptionDirective, selector: "option", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7735
7793
|
}
|
|
7736
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7794
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlertDialog, decorators: [{
|
|
7737
7795
|
type: Component,
|
|
7738
7796
|
args: [{ selector: "alert-dialog, alertdialog, AlertDialog", standalone: true, imports: [
|
|
7739
7797
|
FormsModule,
|
|
@@ -7906,10 +7964,10 @@ class AlertsComponent {
|
|
|
7906
7964
|
}
|
|
7907
7965
|
this.tmpAlerts.splice(drop.currentIndex, 0, this.tmpAlerts.splice(drop.previousIndex, 1)[0]);
|
|
7908
7966
|
}
|
|
7909
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
7910
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
7967
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlertsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7968
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AlertsComponent, isStandalone: true, selector: "Alerts", providers: [provideTranslocoScope('alerts')], viewQueries: [{ propertyName: "alertFormDialog", first: true, predicate: AlertDialog, descendants: true, isSignal: true }], ngImport: i0, template: "<ul\n role=\"list\"\n class=\"flex min-w-80 flex-col p-2\"\n cdkDropList\n [cdkDropListData]=\"tmpAlerts\"\n [cdkDropListDisabled]=\"!reordering()\"\n (cdkDropListDropped)=\"dropped($event)\">\n @if (floating) {\n <label class=\"text-xl font-bold\">{{ 'alerts.label' | transloco }}</label>\n <HorizontalDivider />\n }\n @for (alert of tmpAlerts; track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" cdkDrag (click)=\"onClick($index)\" (keydown.enter)=\"onClick($index)\">\n <i class=\"fa-fw fas fa-bell shrink-0\" aria-hidden=\"true\"></i>\n <p class=\"line-clamp-1\">{{ alert.name }}</p>\n @if (!reordering()) {\n <button\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n title=\"{{ 'alerts.deleteAlert' | transloco }}\"\n [attr.aria-label]=\"'alerts.deleteAlert' | transloco\"\n (click)=\"deleteAlert($event, $index)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n } @else {\n <i class=\"fa-fw fa-regular fa-bars\"></i>\n }\n </li>\n } @empty {\n <li role=\"listitem\" class=\"py-4 text-center text-neutral-500\">{{ 'alerts.noAlerts' | transloco }}</li>\n }\n</ul>\n<div class=\"flex flex-col gap-2 p-2\">\n <button decoration=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'alerts.manageAlerts' | transloco\" [disabled]=\"!alerts().length\" (click)=\"reorder()\">\n {{ (reordering() ? 'save' : 'alerts.manageAlerts') | transloco }}\n </button>\n <button class=\"w-full\" [attr.title]=\"'alerts.createAlert' | transloco\" (click)=\"createAlert()\">\n {{ 'alerts.createAlert' | transloco }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: HorizontalDividerComponent, selector: "horizontal-divider, HorizontalDivider, horizontaldivider" }, { 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7911
7969
|
}
|
|
7912
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
7970
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlertsComponent, decorators: [{
|
|
7913
7971
|
type: Component,
|
|
7914
7972
|
args: [{ selector: 'Alerts', standalone: true, imports: [TranslocoPipe, ButtonComponent, HorizontalDividerComponent, ListItemComponent, DragDropModule], providers: [provideTranslocoScope('alerts')], template: "<ul\n role=\"list\"\n class=\"flex min-w-80 flex-col p-2\"\n cdkDropList\n [cdkDropListData]=\"tmpAlerts\"\n [cdkDropListDisabled]=\"!reordering()\"\n (cdkDropListDropped)=\"dropped($event)\">\n @if (floating) {\n <label class=\"text-xl font-bold\">{{ 'alerts.label' | transloco }}</label>\n <HorizontalDivider />\n }\n @for (alert of tmpAlerts; track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" cdkDrag (click)=\"onClick($index)\" (keydown.enter)=\"onClick($index)\">\n <i class=\"fa-fw fas fa-bell shrink-0\" aria-hidden=\"true\"></i>\n <p class=\"line-clamp-1\">{{ alert.name }}</p>\n @if (!reordering()) {\n <button\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n title=\"{{ 'alerts.deleteAlert' | transloco }}\"\n [attr.aria-label]=\"'alerts.deleteAlert' | transloco\"\n (click)=\"deleteAlert($event, $index)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n } @else {\n <i class=\"fa-fw fa-regular fa-bars\"></i>\n }\n </li>\n } @empty {\n <li role=\"listitem\" class=\"py-4 text-center text-neutral-500\">{{ 'alerts.noAlerts' | transloco }}</li>\n }\n</ul>\n<div class=\"flex flex-col gap-2 p-2\">\n <button decoration=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'alerts.manageAlerts' | transloco\" [disabled]=\"!alerts().length\" (click)=\"reorder()\">\n {{ (reordering() ? 'save' : 'alerts.manageAlerts') | transloco }}\n </button>\n <button class=\"w-full\" [attr.title]=\"'alerts.createAlert' | transloco\" (click)=\"createAlert()\">\n {{ 'alerts.createAlert' | transloco }}\n </button>\n</div>\n" }]
|
|
7915
7973
|
}], ctorParameters: () => [], propDecorators: { alertFormDialog: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AlertDialog), { isSignal: true }] }] } });
|
|
@@ -7918,6 +7976,8 @@ class ChangePasswordComponent {
|
|
|
7918
7976
|
success = output();
|
|
7919
7977
|
cancel = output();
|
|
7920
7978
|
username = input(null, ...(ngDevMode ? [{ debugName: "username" }] : []));
|
|
7979
|
+
alert = input(undefined, ...(ngDevMode ? [{ debugName: "alert" }] : []));
|
|
7980
|
+
redirectAfterSuccess = input(true, ...(ngDevMode ? [{ debugName: "redirectAfterSuccess" }] : []));
|
|
7921
7981
|
transloco = inject(TranslocoService);
|
|
7922
7982
|
router = inject(Router);
|
|
7923
7983
|
principalStore = inject(PrincipalStore);
|
|
@@ -7928,10 +7988,14 @@ class ChangePasswordComponent {
|
|
|
7928
7988
|
confirmPassword = model("", ...(ngDevMode ? [{ debugName: "confirmPassword" }] : []));
|
|
7929
7989
|
pending = signal(false, ...(ngDevMode ? [{ debugName: "pending" }] : []));
|
|
7930
7990
|
errorMsg = signal(null, ...(ngDevMode ? [{ debugName: "errorMsg" }] : []));
|
|
7991
|
+
currentPasswordType = "password";
|
|
7992
|
+
newPasswordType = "password";
|
|
7993
|
+
confirmPasswordType = "password";
|
|
7931
7994
|
valid = computed(() => this.currentPassword().length > 0 &&
|
|
7932
7995
|
this.newPassword().length > 0 &&
|
|
7933
7996
|
this.confirmPassword().length > 0 &&
|
|
7934
7997
|
this.newPassword() === this.confirmPassword(), ...(ngDevMode ? [{ debugName: "valid" }] : []));
|
|
7998
|
+
confirmInvalid = computed(() => !!this.newPassword() && !!this.confirmPassword() && this.newPassword() !== this.confirmPassword(), ...(ngDevMode ? [{ debugName: "confirmInvalid" }] : []));
|
|
7935
7999
|
effectiveUsername = computed(() => {
|
|
7936
8000
|
const fromInput = this.username();
|
|
7937
8001
|
if (fromInput?.trim())
|
|
@@ -7987,10 +8051,15 @@ class ChangePasswordComponent {
|
|
|
7987
8051
|
this.router.navigate(["/login"], { queryParams: { username } });
|
|
7988
8052
|
return;
|
|
7989
8053
|
}
|
|
7990
|
-
|
|
7991
|
-
|
|
7992
|
-
|
|
7993
|
-
|
|
8054
|
+
if (this.redirectAfterSuccess()) {
|
|
8055
|
+
const { createRoutes = true } = globalConfig;
|
|
8056
|
+
await this.applicationService.initialize(createRoutes);
|
|
8057
|
+
this.success.emit();
|
|
8058
|
+
this.router.navigateByUrl("/");
|
|
8059
|
+
}
|
|
8060
|
+
else {
|
|
8061
|
+
this.success.emit();
|
|
8062
|
+
}
|
|
7994
8063
|
}
|
|
7995
8064
|
catch (e) {
|
|
7996
8065
|
const maybeError = e;
|
|
@@ -8011,8 +8080,8 @@ class ChangePasswordComponent {
|
|
|
8011
8080
|
this.cancel.emit();
|
|
8012
8081
|
this.location.back();
|
|
8013
8082
|
}
|
|
8014
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8015
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
8083
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChangePasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8084
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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 }, 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: `
|
|
8016
8085
|
<Card hover="no" cdkTrapFocus cdkTrapFocusAutoCapture="true" class="bg-card rounded-xl shadow-sm">
|
|
8017
8086
|
<CardHeader class="flex flex-col items-center gap-3">
|
|
8018
8087
|
<img class="h-12 content-(--logo-large)" alt="logo" />
|
|
@@ -8020,18 +8089,35 @@ class ChangePasswordComponent {
|
|
|
8020
8089
|
|
|
8021
8090
|
<CardContent class="grid gap-4">
|
|
8022
8091
|
|
|
8092
|
+
@if (alert()) {
|
|
8093
|
+
<div class="p-4 w-full bg-destructive/20 border-destructive">
|
|
8094
|
+
{{ alert() | transloco }}
|
|
8095
|
+
</div>
|
|
8096
|
+
}
|
|
8097
|
+
|
|
8023
8098
|
<!-- Current password -->
|
|
8024
8099
|
<div class="grid gap-2">
|
|
8025
8100
|
<label class="text-sm font-medium" for="auth-current-password">
|
|
8026
8101
|
{{ 'login.currentPassword' | transloco }}
|
|
8027
8102
|
</label>
|
|
8028
|
-
<
|
|
8029
|
-
|
|
8030
|
-
|
|
8031
|
-
|
|
8032
|
-
|
|
8033
|
-
|
|
8034
|
-
|
|
8103
|
+
<InputGroup class="group/item">
|
|
8104
|
+
<input
|
|
8105
|
+
input-group
|
|
8106
|
+
id="auth-current-password"
|
|
8107
|
+
[type]="currentPasswordType"
|
|
8108
|
+
required
|
|
8109
|
+
[(ngModel)]="currentPassword"
|
|
8110
|
+
(keydown.enter)="changePassword()"
|
|
8111
|
+
/>
|
|
8112
|
+
<InputGroupAddon align="inline-end"
|
|
8113
|
+
(click)="currentPasswordType = (currentPasswordType === 'password' ? 'text' : 'password')">
|
|
8114
|
+
@if(currentPasswordType === 'text') {
|
|
8115
|
+
<i class="fal fa-eye-slash }} cursor-pointer"></i>
|
|
8116
|
+
} @else {
|
|
8117
|
+
<i class="fal fa-eye }} cursor-pointer"></i>
|
|
8118
|
+
}
|
|
8119
|
+
</InputGroupAddon>
|
|
8120
|
+
</InputGroup>
|
|
8035
8121
|
</div>
|
|
8036
8122
|
|
|
8037
8123
|
<!-- New password -->
|
|
@@ -8039,13 +8125,24 @@ class ChangePasswordComponent {
|
|
|
8039
8125
|
<label class="text-sm font-medium" for="auth-new-password">
|
|
8040
8126
|
{{ 'login.newPassword' | transloco }}
|
|
8041
8127
|
</label>
|
|
8042
|
-
<
|
|
8043
|
-
|
|
8044
|
-
|
|
8045
|
-
|
|
8046
|
-
|
|
8047
|
-
|
|
8048
|
-
|
|
8128
|
+
<InputGroup class="group/item">
|
|
8129
|
+
<input
|
|
8130
|
+
input-group
|
|
8131
|
+
id="auth-new-password"
|
|
8132
|
+
[type]="newPasswordType"
|
|
8133
|
+
required
|
|
8134
|
+
[(ngModel)]="newPassword"
|
|
8135
|
+
(keydown.enter)="changePassword()"
|
|
8136
|
+
/>
|
|
8137
|
+
<InputGroupAddon align="inline-end"
|
|
8138
|
+
(click)="newPasswordType = (newPasswordType === 'password' ? 'text' : 'password')">
|
|
8139
|
+
@if(newPasswordType === 'text') {
|
|
8140
|
+
<i class="fal fa-eye-slash }} cursor-pointer"></i>
|
|
8141
|
+
} @else {
|
|
8142
|
+
<i class="fal fa-eye }} cursor-pointer"></i>
|
|
8143
|
+
}
|
|
8144
|
+
</InputGroupAddon>
|
|
8145
|
+
</InputGroup>
|
|
8049
8146
|
</div>
|
|
8050
8147
|
|
|
8051
8148
|
<!-- Confirm -->
|
|
@@ -8053,13 +8150,30 @@ class ChangePasswordComponent {
|
|
|
8053
8150
|
<label class="text-sm font-medium" for="auth-confirm-password">
|
|
8054
8151
|
{{ 'login.confirmPassword' | transloco }}
|
|
8055
8152
|
</label>
|
|
8056
|
-
<
|
|
8057
|
-
|
|
8058
|
-
|
|
8059
|
-
|
|
8060
|
-
|
|
8061
|
-
|
|
8062
|
-
|
|
8153
|
+
<InputGroup class="group/item">
|
|
8154
|
+
<input
|
|
8155
|
+
input-group
|
|
8156
|
+
id="auth-confirm-password"
|
|
8157
|
+
[ariaInvalid]="confirmInvalid()"
|
|
8158
|
+
[type]="confirmPasswordType"
|
|
8159
|
+
required
|
|
8160
|
+
[(ngModel)]="confirmPassword"
|
|
8161
|
+
(keydown.enter)="changePassword()"
|
|
8162
|
+
/>
|
|
8163
|
+
<InputGroupAddon align="inline-end"
|
|
8164
|
+
(click)="confirmPasswordType = (confirmPasswordType === 'password' ? 'text' : 'password')">
|
|
8165
|
+
@if(confirmPasswordType === 'text') {
|
|
8166
|
+
<i class="fal fa-eye-slash }} cursor-pointer"></i>
|
|
8167
|
+
} @else {
|
|
8168
|
+
<i class="fal fa-eye }} cursor-pointer"></i>
|
|
8169
|
+
}
|
|
8170
|
+
</InputGroupAddon>
|
|
8171
|
+
</InputGroup>
|
|
8172
|
+
@if (confirmInvalid()) {
|
|
8173
|
+
<p class="text-sm font-medium text-destructive" for="auth-confirm-password">
|
|
8174
|
+
{{ 'login.differentPasswords' | transloco }}
|
|
8175
|
+
</p>
|
|
8176
|
+
}
|
|
8063
8177
|
</div>
|
|
8064
8178
|
</CardContent>
|
|
8065
8179
|
|
|
@@ -8075,9 +8189,9 @@ class ChangePasswordComponent {
|
|
|
8075
8189
|
</button>
|
|
8076
8190
|
</CardFooter>
|
|
8077
8191
|
</Card>
|
|
8078
|
-
`, 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: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type:
|
|
8192
|
+
`, 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: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8079
8193
|
}
|
|
8080
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ChangePasswordComponent, decorators: [{
|
|
8081
8195
|
type: Component,
|
|
8082
8196
|
args: [{
|
|
8083
8197
|
selector: "change-password, ChangePassword, changepassword",
|
|
@@ -8086,12 +8200,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
8086
8200
|
FormsModule,
|
|
8087
8201
|
A11yModule,
|
|
8088
8202
|
TranslocoPipe,
|
|
8089
|
-
InputComponent,
|
|
8090
8203
|
ButtonComponent,
|
|
8091
8204
|
CardComponent,
|
|
8092
8205
|
CardHeaderComponent,
|
|
8093
8206
|
CardContentComponent,
|
|
8094
|
-
CardFooterComponent
|
|
8207
|
+
CardFooterComponent,
|
|
8208
|
+
InputGroupInput,
|
|
8209
|
+
InputGroupComponent,
|
|
8210
|
+
InputGroupAddonComponent
|
|
8095
8211
|
],
|
|
8096
8212
|
template: `
|
|
8097
8213
|
<Card hover="no" cdkTrapFocus cdkTrapFocusAutoCapture="true" class="bg-card rounded-xl shadow-sm">
|
|
@@ -8101,18 +8217,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
8101
8217
|
|
|
8102
8218
|
<CardContent class="grid gap-4">
|
|
8103
8219
|
|
|
8220
|
+
@if (alert()) {
|
|
8221
|
+
<div class="p-4 w-full bg-destructive/20 border-destructive">
|
|
8222
|
+
{{ alert() | transloco }}
|
|
8223
|
+
</div>
|
|
8224
|
+
}
|
|
8225
|
+
|
|
8104
8226
|
<!-- Current password -->
|
|
8105
8227
|
<div class="grid gap-2">
|
|
8106
8228
|
<label class="text-sm font-medium" for="auth-current-password">
|
|
8107
8229
|
{{ 'login.currentPassword' | transloco }}
|
|
8108
8230
|
</label>
|
|
8109
|
-
<
|
|
8110
|
-
|
|
8111
|
-
|
|
8112
|
-
|
|
8113
|
-
|
|
8114
|
-
|
|
8115
|
-
|
|
8231
|
+
<InputGroup class="group/item">
|
|
8232
|
+
<input
|
|
8233
|
+
input-group
|
|
8234
|
+
id="auth-current-password"
|
|
8235
|
+
[type]="currentPasswordType"
|
|
8236
|
+
required
|
|
8237
|
+
[(ngModel)]="currentPassword"
|
|
8238
|
+
(keydown.enter)="changePassword()"
|
|
8239
|
+
/>
|
|
8240
|
+
<InputGroupAddon align="inline-end"
|
|
8241
|
+
(click)="currentPasswordType = (currentPasswordType === 'password' ? 'text' : 'password')">
|
|
8242
|
+
@if(currentPasswordType === 'text') {
|
|
8243
|
+
<i class="fal fa-eye-slash }} cursor-pointer"></i>
|
|
8244
|
+
} @else {
|
|
8245
|
+
<i class="fal fa-eye }} cursor-pointer"></i>
|
|
8246
|
+
}
|
|
8247
|
+
</InputGroupAddon>
|
|
8248
|
+
</InputGroup>
|
|
8116
8249
|
</div>
|
|
8117
8250
|
|
|
8118
8251
|
<!-- New password -->
|
|
@@ -8120,13 +8253,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
8120
8253
|
<label class="text-sm font-medium" for="auth-new-password">
|
|
8121
8254
|
{{ 'login.newPassword' | transloco }}
|
|
8122
8255
|
</label>
|
|
8123
|
-
<
|
|
8124
|
-
|
|
8125
|
-
|
|
8126
|
-
|
|
8127
|
-
|
|
8128
|
-
|
|
8129
|
-
|
|
8256
|
+
<InputGroup class="group/item">
|
|
8257
|
+
<input
|
|
8258
|
+
input-group
|
|
8259
|
+
id="auth-new-password"
|
|
8260
|
+
[type]="newPasswordType"
|
|
8261
|
+
required
|
|
8262
|
+
[(ngModel)]="newPassword"
|
|
8263
|
+
(keydown.enter)="changePassword()"
|
|
8264
|
+
/>
|
|
8265
|
+
<InputGroupAddon align="inline-end"
|
|
8266
|
+
(click)="newPasswordType = (newPasswordType === 'password' ? 'text' : 'password')">
|
|
8267
|
+
@if(newPasswordType === 'text') {
|
|
8268
|
+
<i class="fal fa-eye-slash }} cursor-pointer"></i>
|
|
8269
|
+
} @else {
|
|
8270
|
+
<i class="fal fa-eye }} cursor-pointer"></i>
|
|
8271
|
+
}
|
|
8272
|
+
</InputGroupAddon>
|
|
8273
|
+
</InputGroup>
|
|
8130
8274
|
</div>
|
|
8131
8275
|
|
|
8132
8276
|
<!-- Confirm -->
|
|
@@ -8134,13 +8278,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
8134
8278
|
<label class="text-sm font-medium" for="auth-confirm-password">
|
|
8135
8279
|
{{ 'login.confirmPassword' | transloco }}
|
|
8136
8280
|
</label>
|
|
8137
|
-
<
|
|
8138
|
-
|
|
8139
|
-
|
|
8140
|
-
|
|
8141
|
-
|
|
8142
|
-
|
|
8143
|
-
|
|
8281
|
+
<InputGroup class="group/item">
|
|
8282
|
+
<input
|
|
8283
|
+
input-group
|
|
8284
|
+
id="auth-confirm-password"
|
|
8285
|
+
[ariaInvalid]="confirmInvalid()"
|
|
8286
|
+
[type]="confirmPasswordType"
|
|
8287
|
+
required
|
|
8288
|
+
[(ngModel)]="confirmPassword"
|
|
8289
|
+
(keydown.enter)="changePassword()"
|
|
8290
|
+
/>
|
|
8291
|
+
<InputGroupAddon align="inline-end"
|
|
8292
|
+
(click)="confirmPasswordType = (confirmPasswordType === 'password' ? 'text' : 'password')">
|
|
8293
|
+
@if(confirmPasswordType === 'text') {
|
|
8294
|
+
<i class="fal fa-eye-slash }} cursor-pointer"></i>
|
|
8295
|
+
} @else {
|
|
8296
|
+
<i class="fal fa-eye }} cursor-pointer"></i>
|
|
8297
|
+
}
|
|
8298
|
+
</InputGroupAddon>
|
|
8299
|
+
</InputGroup>
|
|
8300
|
+
@if (confirmInvalid()) {
|
|
8301
|
+
<p class="text-sm font-medium text-destructive" for="auth-confirm-password">
|
|
8302
|
+
{{ 'login.differentPasswords' | transloco }}
|
|
8303
|
+
</p>
|
|
8304
|
+
}
|
|
8144
8305
|
</div>
|
|
8145
8306
|
</CardContent>
|
|
8146
8307
|
|
|
@@ -8158,7 +8319,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
8158
8319
|
</Card>
|
|
8159
8320
|
`
|
|
8160
8321
|
}]
|
|
8161
|
-
}], propDecorators: { success: [{ type: i0.Output, args: ["success"] }], cancel: [{ type: i0.Output, args: ["cancel"] }], username: [{ type: i0.Input, args: [{ isSignal: true, alias: "username", required: false }] }], currentPassword: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPassword", required: false }] }, { type: i0.Output, args: ["currentPasswordChange"] }], newPassword: [{ type: i0.Input, args: [{ isSignal: true, alias: "newPassword", required: false }] }, { type: i0.Output, args: ["newPasswordChange"] }], confirmPassword: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmPassword", required: false }] }, { type: i0.Output, args: ["confirmPasswordChange"] }] } });
|
|
8322
|
+
}], propDecorators: { success: [{ type: i0.Output, args: ["success"] }], cancel: [{ type: i0.Output, args: ["cancel"] }], username: [{ type: i0.Input, args: [{ isSignal: true, alias: "username", required: false }] }], alert: [{ type: i0.Input, args: [{ isSignal: true, alias: "alert", required: false }] }], redirectAfterSuccess: [{ type: i0.Input, args: [{ isSignal: true, alias: "redirectAfterSuccess", required: false }] }], currentPassword: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPassword", required: false }] }, { type: i0.Output, args: ["currentPasswordChange"] }], newPassword: [{ type: i0.Input, args: [{ isSignal: true, alias: "newPassword", required: false }] }, { type: i0.Output, args: ["newPasswordChange"] }], confirmPassword: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmPassword", required: false }] }, { type: i0.Output, args: ["confirmPasswordChange"] }] } });
|
|
8162
8323
|
|
|
8163
8324
|
class ForgotPasswordComponent {
|
|
8164
8325
|
cancel = output();
|
|
@@ -8191,8 +8352,8 @@ class ForgotPasswordComponent {
|
|
|
8191
8352
|
this.pending.set(false);
|
|
8192
8353
|
}
|
|
8193
8354
|
}
|
|
8194
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8195
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.
|
|
8355
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ForgotPasswordComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8356
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", 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: `
|
|
8196
8357
|
<Card hover="no" class="bg-card rounded-xl shadow-sm">
|
|
8197
8358
|
<CardHeader class="flex flex-col items-center gap-3">
|
|
8198
8359
|
<img class="h-12 content-(--logo-large)" alt="logo" />
|
|
@@ -8232,7 +8393,7 @@ class ForgotPasswordComponent {
|
|
|
8232
8393
|
</Card>
|
|
8233
8394
|
`, 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\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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" }] });
|
|
8234
8395
|
}
|
|
8235
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8396
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ForgotPasswordComponent, decorators: [{
|
|
8236
8397
|
type: Component,
|
|
8237
8398
|
args: [{
|
|
8238
8399
|
selector: "forgot-password, ForgotPassword, forgotpassword",
|
|
@@ -8404,6 +8565,7 @@ class SignInComponent {
|
|
|
8404
8565
|
this.router.navigate(["/login"], {
|
|
8405
8566
|
queryParams: {
|
|
8406
8567
|
mode: "changepassword",
|
|
8568
|
+
alert: "passwordExpired",
|
|
8407
8569
|
username: this.username()
|
|
8408
8570
|
}
|
|
8409
8571
|
});
|
|
@@ -8418,8 +8580,8 @@ class SignInComponent {
|
|
|
8418
8580
|
this.returnUrl.set(null);
|
|
8419
8581
|
this.router.navigate(["/"]);
|
|
8420
8582
|
}
|
|
8421
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8422
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
8583
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SignInComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8584
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
8423
8585
|
<Card
|
|
8424
8586
|
hover="no"
|
|
8425
8587
|
cdkTrapFocus
|
|
@@ -8494,7 +8656,7 @@ class SignInComponent {
|
|
|
8494
8656
|
</Card>
|
|
8495
8657
|
`, isInline: true, 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\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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" }] });
|
|
8496
8658
|
}
|
|
8497
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8659
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SignInComponent, decorators: [{
|
|
8498
8660
|
type: Component,
|
|
8499
8661
|
args: [{
|
|
8500
8662
|
selector: "signIn, signin, sign-in",
|
|
@@ -8595,6 +8757,7 @@ class AuthPageComponent {
|
|
|
8595
8757
|
mode = input(...(ngDevMode ? [undefined, { debugName: "mode" }] : []));
|
|
8596
8758
|
view = linkedSignal(() => this.mode() ?? "signin", ...(ngDevMode ? [{ debugName: "view" }] : []));
|
|
8597
8759
|
username = signal("", ...(ngDevMode ? [{ debugName: "username" }] : []));
|
|
8760
|
+
alert = signal(undefined, ...(ngDevMode ? [{ debugName: "alert" }] : []));
|
|
8598
8761
|
route = inject(ActivatedRoute);
|
|
8599
8762
|
constructor() {
|
|
8600
8763
|
const params = this.route.snapshot.queryParams;
|
|
@@ -8604,13 +8767,15 @@ class AuthPageComponent {
|
|
|
8604
8767
|
if (modeFromQuery === "changepassword" || modeFromQuery === "forgotpassword") {
|
|
8605
8768
|
this.view.set(modeFromQuery);
|
|
8606
8769
|
}
|
|
8770
|
+
this.alert.set(`login.${params["alert"]}`);
|
|
8607
8771
|
}
|
|
8608
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8609
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
8772
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8773
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
8610
8774
|
<div class="w-full max-w-md">
|
|
8611
8775
|
@if (view() === 'changepassword') {
|
|
8612
8776
|
<change-password
|
|
8613
8777
|
[username]="username()"
|
|
8778
|
+
[alert]="alert()"
|
|
8614
8779
|
(cancel)="view.set('signin')"
|
|
8615
8780
|
/>
|
|
8616
8781
|
} @else if (view() === 'forgotpassword') {
|
|
@@ -8625,9 +8790,9 @@ class AuthPageComponent {
|
|
|
8625
8790
|
/>
|
|
8626
8791
|
}
|
|
8627
8792
|
</div>
|
|
8628
|
-
`, 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", "currentPassword", "newPassword", "confirmPassword"], outputs: ["success", "cancel", "currentPasswordChange", "newPasswordChange", "confirmPasswordChange"] }, { kind: "component", type: ForgotPasswordComponent, selector: "forgot-password, ForgotPassword, forgotpassword", inputs: ["userName"], outputs: ["cancel", "success", "userNameChange"] }] });
|
|
8793
|
+
`, 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", "currentPassword", "newPassword", "confirmPassword"], outputs: ["success", "cancel", "currentPasswordChange", "newPasswordChange", "confirmPasswordChange"] }, { kind: "component", type: ForgotPasswordComponent, selector: "forgot-password, ForgotPassword, forgotpassword", inputs: ["userName"], outputs: ["cancel", "success", "userNameChange"] }] });
|
|
8629
8794
|
}
|
|
8630
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8795
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AuthPageComponent, decorators: [{
|
|
8631
8796
|
type: Component,
|
|
8632
8797
|
args: [{
|
|
8633
8798
|
selector: "auth-page, AuthPage, authpage",
|
|
@@ -8639,6 +8804,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
8639
8804
|
@if (view() === 'changepassword') {
|
|
8640
8805
|
<change-password
|
|
8641
8806
|
[username]="username()"
|
|
8807
|
+
[alert]="alert()"
|
|
8642
8808
|
(cancel)="view.set('signin')"
|
|
8643
8809
|
/>
|
|
8644
8810
|
} @else if (view() === 'forgotpassword') {
|
|
@@ -8683,14 +8849,14 @@ class BookmarkButtonComponent {
|
|
|
8683
8849
|
notify.success(this.transloco.translate('bookmarks.bookmarkAdded'), { duration: 2000 });
|
|
8684
8850
|
}
|
|
8685
8851
|
}
|
|
8686
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8687
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
8852
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BookmarkButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8853
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: BookmarkButtonComponent, isStandalone: true, selector: "bookmark-button, bookmarkbutton, BookmarkButton", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "bookmark($event)" }, properties: { "title": "title()" }, classAttribute: "cursor-pointer" }, providers: [provideTranslocoScope('bookmark')], ngImport: i0, template: ` @if (isBookmarked()) {
|
|
8688
8854
|
<i class="fa-fw fa-bookmark fa-solid"></i>
|
|
8689
8855
|
} @else {
|
|
8690
8856
|
<i class="fa-fw fa-bookmark fa-regular"></i>
|
|
8691
8857
|
}`, isInline: true });
|
|
8692
8858
|
}
|
|
8693
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8859
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BookmarkButtonComponent, decorators: [{
|
|
8694
8860
|
type: Component,
|
|
8695
8861
|
args: [{
|
|
8696
8862
|
selector: 'bookmark-button, bookmarkbutton, BookmarkButton',
|
|
@@ -8786,10 +8952,10 @@ class BookmarksComponent {
|
|
|
8786
8952
|
e.stopPropagation();
|
|
8787
8953
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
8788
8954
|
}
|
|
8789
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8790
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
8955
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BookmarksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8956
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'bookmarks.label' | transloco }}</label>\n <Separator />\n </div>\n}\n\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\" role=\"list\">\n @for (bookmark of paginatedBookmarks(); track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" (click)=\"onClick(bookmark)\" (keydown.enter)=\"onClick(bookmark)\">\n <BookmarkIcon solid class=\"shrink-0\" />\n\n <p class=\"line-clamp-1\">{{ bookmark.label }}</p>\n\n @if (bookmark.author) {\n <Badge variant=\"ghost\" class=\"text-grey-500 text-xs\">\n <UserIcon class=\"size-3\"/>\n <span class=\"line-clamp-1\">{{ bookmark.author }}</span>\n </Badge>\n }\n @if (bookmark.parentFolder) {\n <Badge variant=\"ghost\" class=\"text-grey-500 text-xs\">\n <FolderIcon class=\"size-3\"/>\n <span class=\"line-clamp-1\">{{ bookmark.parentFolder }}</span>\n </Badge>\n }\n\n <button\n variant=\"ghost\"\n size=\"icon\"\n title=\"{{ 'bookmarks.openBookmark' | transloco }}\"\n class=\"text-destructive ms-auto group-hover:visible\"\n [attr.title]=\"'bookmarks.removeBookmark' | transloco\"\n [attr.aria-label]=\"'bookmarks.removeBookmark' | transloco\"\n (click)=\"onDelete(bookmark, $event)\">\n <TrashIcon />\n </button>\n </li>\n } @empty {\n <li class=\"py-4 text-center text-neutral-500\">{{ 'bookmarks.noBookmarks' | transloco }}</li>\n }\n</ul>\n\n<div class=\"flex flex-col px-2\">\n @if (hasMore() && config.showLoadMore) {\n <button variant=\"ghost\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'loadMore' | transloco\" (click)=\"loadMore($event)\">\n {{ 'loadMore' | transloco }}\n </button>\n }\n <button decoration=\"underline\" class=\"ml-auto\" [attr.title]=\"'seeMore' | transloco\" [routerLink]=\"[config.routerLink]\">{{ 'seeMore' | transloco }}</button>\n</div>\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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8791
8957
|
}
|
|
8792
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
8958
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BookmarksComponent, decorators: [{
|
|
8793
8959
|
type: Component,
|
|
8794
8960
|
args: [{ selector: "bookmarks, Bookmarks", standalone: true, imports: [
|
|
8795
8961
|
TranslocoPipe,
|
|
@@ -8825,8 +8991,8 @@ class DeleteCollectionDialog {
|
|
|
8825
8991
|
notify.success(message, { duration: 2000 });
|
|
8826
8992
|
}
|
|
8827
8993
|
}
|
|
8828
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8829
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
8994
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DeleteCollectionDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8995
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.16", 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: `
|
|
8830
8996
|
<dialog #dialog>
|
|
8831
8997
|
<DialogContent>
|
|
8832
8998
|
<DialogHeader>
|
|
@@ -8847,7 +9013,7 @@ class DeleteCollectionDialog {
|
|
|
8847
9013
|
</dialog>
|
|
8848
9014
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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" }] });
|
|
8849
9015
|
}
|
|
8850
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9016
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DeleteCollectionDialog, decorators: [{
|
|
8851
9017
|
type: Component,
|
|
8852
9018
|
args: [{
|
|
8853
9019
|
selector: "delete-collection-dialog",
|
|
@@ -8926,10 +9092,10 @@ class CollectionsComponent {
|
|
|
8926
9092
|
e.stopPropagation();
|
|
8927
9093
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
8928
9094
|
}
|
|
8929
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
8930
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
9095
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CollectionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9096
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: CollectionsComponent, isStandalone: true, selector: "app-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) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'collections.label' | transloco }}</label>\n <Separator />\n </div>\n}\n\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\">\n @for (collection of paginatedCollections(); track $index) {\n <li\n role=\"listitem\"\n class=\"group grid grid-cols-[min-content_auto_min-content] items-center\"\n tabindex=\"0\"\n (click)=\"onClick(collection)\"\n (keydown.enter)=\"onClick(collection)\">\n <i class=\"fas fa-inbox ps-2\"></i>\n\n <p class=\"mx-2 line-clamp-1\">{{ collection.name }}</p>\n\n <button\n variant=\"ghost\"\n size=\"icon\"\n class=\"text-destructive invisible group-hover:visible\"\n title=\"{{ 'collections.deleteCollection' | transloco }}\"\n [attr.aria-label]=\"'collections.deleteCollection' | transloco\"\n (click)=\"onDelete(collection, $index, $event)\">\n <TrashIcon />\n </button>\n </li>\n } @empty {\n <li class=\"list-none py-4 text-center text-neutral-500\">{{ 'collections.noCollections' | transloco }}</li>\n }\n</ul>\n\n<div class=\"flex flex-col px-2\">\n @if (hasMore() && config.showLoadMore) {\n <button decoration=\"outline\" class=\"w-full\" tabindex=\"0\" [attr.title]=\"'loadMore' | transloco\" (click)=\"loadMore($event)\">\n {{ 'loadMore' | transloco }}\n </button>\n }\n <button decoration=\"underline\" class=\"ml-auto\" [attr.title]=\"'seeMore' | transloco\" [routerLink]=\"[config.routerLink]\">{{ 'seeMore' | transloco }}</button>\n</div>\n\n<delete-collection-dialog />\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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8931
9097
|
}
|
|
8932
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9098
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: CollectionsComponent, decorators: [{
|
|
8933
9099
|
type: Component,
|
|
8934
9100
|
args: [{ selector: "app-collections", standalone: true, imports: [
|
|
8935
9101
|
TranslocoPipe,
|
|
@@ -9002,8 +9168,8 @@ class OverrideUserDialogComponent {
|
|
|
9002
9168
|
});
|
|
9003
9169
|
}
|
|
9004
9170
|
}
|
|
9005
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9006
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
9171
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OverrideUserDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9172
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.16", 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: `
|
|
9007
9173
|
<dialog #dialog>
|
|
9008
9174
|
<DialogContent class="sm:max-w-[425px]">
|
|
9009
9175
|
<DialogHeader>
|
|
@@ -9051,7 +9217,7 @@ class OverrideUserDialogComponent {
|
|
|
9051
9217
|
</dialog>
|
|
9052
9218
|
`, 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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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\"]", 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" }] });
|
|
9053
9219
|
}
|
|
9054
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: OverrideUserDialogComponent, decorators: [{
|
|
9055
9221
|
type: Component,
|
|
9056
9222
|
args: [{
|
|
9057
9223
|
selector: "override-user-dialog",
|
|
@@ -9132,8 +9298,8 @@ class ResetUserSettingsDialogComponent {
|
|
|
9132
9298
|
notify.success(message, { duration: 2000 });
|
|
9133
9299
|
});
|
|
9134
9300
|
}
|
|
9135
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9136
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
9301
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ResetUserSettingsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9302
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.16", 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: `
|
|
9137
9303
|
<dialog #dialog>
|
|
9138
9304
|
<DialogContent>
|
|
9139
9305
|
<DialogHeader>
|
|
@@ -9155,7 +9321,7 @@ class ResetUserSettingsDialogComponent {
|
|
|
9155
9321
|
</dialog>
|
|
9156
9322
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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" }] });
|
|
9157
9323
|
}
|
|
9158
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9324
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ResetUserSettingsDialogComponent, decorators: [{
|
|
9159
9325
|
type: Component,
|
|
9160
9326
|
args: [{
|
|
9161
9327
|
selector: "reset-user-settings-dialog",
|
|
@@ -9209,8 +9375,8 @@ class DidYouMeanComponent {
|
|
|
9209
9375
|
this.queryParamsStore.patch({ spellingCorrectionMode: "dymonly" });
|
|
9210
9376
|
this.router.navigate([], { queryParamsHandling: "merge", queryParams: { c: "dymonly", q: this.original() } });
|
|
9211
9377
|
}
|
|
9212
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9213
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
9378
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DidYouMeanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9379
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
9214
9380
|
@switch (spellingCorrectionMode()?.toLowerCase()) {
|
|
9215
9381
|
@case ('dymonly') {
|
|
9216
9382
|
<p>
|
|
@@ -9240,7 +9406,7 @@ class DidYouMeanComponent {
|
|
|
9240
9406
|
}
|
|
9241
9407
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9242
9408
|
}
|
|
9243
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9409
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DidYouMeanComponent, decorators: [{
|
|
9244
9410
|
type: Component,
|
|
9245
9411
|
args: [{
|
|
9246
9412
|
selector: "did-you-mean, DidYouMean, didyoumean",
|
|
@@ -9304,10 +9470,10 @@ class DrawerService {
|
|
|
9304
9470
|
toggleExtension() {
|
|
9305
9471
|
this.isExtended() ? this.collapse() : this.extend();
|
|
9306
9472
|
}
|
|
9307
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9308
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
9473
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
9474
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerService });
|
|
9309
9475
|
}
|
|
9310
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9476
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerService, decorators: [{
|
|
9311
9477
|
type: Injectable
|
|
9312
9478
|
}] });
|
|
9313
9479
|
|
|
@@ -9368,10 +9534,10 @@ class DrawerComponent {
|
|
|
9368
9534
|
resetGridTemplateColumns() {
|
|
9369
9535
|
this.element.style.gridTemplateColumns = this.defaultDrawerGridTemplate;
|
|
9370
9536
|
}
|
|
9371
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9372
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
9537
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9538
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.16", 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"] });
|
|
9373
9539
|
}
|
|
9374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9540
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerComponent, decorators: [{
|
|
9375
9541
|
type: Component,
|
|
9376
9542
|
args: [{ selector: 'Drawer, drawer', standalone: true, providers: [DrawerService], template: ``, host: {
|
|
9377
9543
|
'[attr.drawer-opened]': 'drawerOpened()',
|
|
@@ -9395,8 +9561,8 @@ class DrawerNavbarComponent {
|
|
|
9395
9561
|
drawerStack = inject(DrawerStackService);
|
|
9396
9562
|
drawerService = inject(DrawerService);
|
|
9397
9563
|
isExtended = this.drawerService.isExtended();
|
|
9398
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9399
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
9564
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9565
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: DrawerNavbarComponent, isStandalone: true, selector: "DrawerNavbar, drawernavbar", ngImport: i0, template: `
|
|
9400
9566
|
<menu class="flex items-center gap-2 p-4 font-semibold">
|
|
9401
9567
|
<li>
|
|
9402
9568
|
<button variant="ghost" class="group" [attr.title]="'back' | transloco" (click)="drawerStack.close()">
|
|
@@ -9413,7 +9579,7 @@ class DrawerNavbarComponent {
|
|
|
9413
9579
|
</menu>
|
|
9414
9580
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: VerticalDividerComponent, selector: "vertical-divider, VerticalDivider, verticaldivider" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9415
9581
|
}
|
|
9416
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9582
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerNavbarComponent, decorators: [{
|
|
9417
9583
|
type: Component,
|
|
9418
9584
|
args: [{
|
|
9419
9585
|
selector: 'DrawerNavbar, drawernavbar',
|
|
@@ -9749,10 +9915,10 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
9749
9915
|
});
|
|
9750
9916
|
return res;
|
|
9751
9917
|
}
|
|
9752
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9753
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
9918
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerAdvancedFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9919
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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}:is() .dropdown{width:100%}:is() .dropdown-content{width:50%}\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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: TabsComponent, selector: "tabs, Tabs", inputs: ["class"] }, { kind: "component", type: TabComponent, selector: "tab, Tab", inputs: ["class", "variant", "shadow", "size", "decoration", "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" }] });
|
|
9754
9920
|
}
|
|
9755
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
9921
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerAdvancedFiltersComponent, decorators: [{
|
|
9756
9922
|
type: Component,
|
|
9757
9923
|
args: [{ selector: "advanced-filters", standalone: true, imports: [
|
|
9758
9924
|
ReactiveFormsModule,
|
|
@@ -9838,8 +10004,8 @@ class EntitiesPanel {
|
|
|
9838
10004
|
navigatePrev(entity, data) {
|
|
9839
10005
|
this.navigate(entity, data, "prev");
|
|
9840
10006
|
}
|
|
9841
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9842
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10007
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EntitiesPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10008
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: EntitiesPanel, isStandalone: true, selector: "entities-panel,EntitiesPanel,entitiesPanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
9843
10009
|
<details class="group/parent" name="advanced-search-panels">
|
|
9844
10010
|
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
9845
10011
|
<p class="flex items-baseline gap-2 font-semibold capitalize">
|
|
@@ -9896,7 +10062,7 @@ class EntitiesPanel {
|
|
|
9896
10062
|
</ng-template>
|
|
9897
10063
|
`, 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", inputs: ["class"] }, { kind: "component", type: ChevronLeftIconComponent, selector: "chevron-left, ChevronLeft, chevronleft", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9898
10064
|
}
|
|
9899
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10065
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: EntitiesPanel, decorators: [{
|
|
9900
10066
|
type: Component,
|
|
9901
10067
|
args: [{
|
|
9902
10068
|
selector: "entities-panel,EntitiesPanel,entitiesPanel",
|
|
@@ -9985,8 +10151,8 @@ class ExtractsPanel {
|
|
|
9985
10151
|
this.previewService.events.set("scrollTo");
|
|
9986
10152
|
this.previewService.sendMessage({ action: "select", id: `${category}_${index}`, usePassageHighlighter });
|
|
9987
10153
|
}
|
|
9988
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
9989
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10154
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExtractsPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10155
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ExtractsPanel, isStandalone: true, selector: "extracts-panel, ExtractsPanel, extractspanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
9990
10156
|
<details class="group" name="advanced-search-panels" open>
|
|
9991
10157
|
<summary [class]="cn('sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3', '')">
|
|
9992
10158
|
<p class="flex items-baseline gap-2 font-semibold">
|
|
@@ -10015,7 +10181,7 @@ class ExtractsPanel {
|
|
|
10015
10181
|
</details>
|
|
10016
10182
|
`, isInline: true, dependencies: [{ kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10017
10183
|
}
|
|
10018
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ExtractsPanel, decorators: [{
|
|
10019
10185
|
type: Component,
|
|
10020
10186
|
args: [{
|
|
10021
10187
|
selector: "extracts-panel, ExtractsPanel, extractspanel",
|
|
@@ -10061,8 +10227,8 @@ class LabelsPanel {
|
|
|
10061
10227
|
const privateLabels = articleRecord[this.labels.private];
|
|
10062
10228
|
return (publicLabels && publicLabels.length > 0) || (privateLabels && privateLabels.length > 0);
|
|
10063
10229
|
}, ...(ngDevMode ? [{ debugName: "hasLabels" }] : []));
|
|
10064
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10065
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10230
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LabelsPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10231
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: LabelsPanel, isStandalone: true, selector: "labels-panel, LabelsPanel, labelspanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
10066
10232
|
@if (hasLabels()) {
|
|
10067
10233
|
<details class="group" name="advanced-search-panels">
|
|
10068
10234
|
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
@@ -10089,7 +10255,7 @@ class LabelsPanel {
|
|
|
10089
10255
|
}
|
|
10090
10256
|
`, 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", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10091
10257
|
}
|
|
10092
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10258
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LabelsPanel, decorators: [{
|
|
10093
10259
|
type: Component,
|
|
10094
10260
|
args: [{
|
|
10095
10261
|
selector: "labels-panel, LabelsPanel, labelspanel",
|
|
@@ -10145,8 +10311,8 @@ class SimilarDocumentsPanel {
|
|
|
10145
10311
|
}
|
|
10146
10312
|
return [];
|
|
10147
10313
|
}, ...(ngDevMode ? [{ debugName: "similarDocuments" }] : []));
|
|
10148
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10149
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10314
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SimilarDocumentsPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10315
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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 } }, ngImport: i0, template: `
|
|
10150
10316
|
@if (similarDocuments().length > 0) {
|
|
10151
10317
|
<details class="group" name="advanced-search-panels">
|
|
10152
10318
|
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
@@ -10175,7 +10341,7 @@ class SimilarDocumentsPanel {
|
|
|
10175
10341
|
}
|
|
10176
10342
|
`, isInline: true, dependencies: [{ kind: "directive", type: SelectArticleOnClickDirective, selector: "[selectArticleOnClick]", inputs: ["article", "strategy", "redirectUrl"] }, { 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", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10177
10343
|
}
|
|
10178
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SimilarDocumentsPanel, decorators: [{
|
|
10179
10345
|
type: Component,
|
|
10180
10346
|
args: [{
|
|
10181
10347
|
selector: "similar-documents-panel, SimilarDocumentsPanel, similardocumentspanel",
|
|
@@ -10241,10 +10407,10 @@ class AdvancedSearchComponent {
|
|
|
10241
10407
|
clearInput() {
|
|
10242
10408
|
this.queryText.set('');
|
|
10243
10409
|
}
|
|
10244
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10245
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10410
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AdvancedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10411
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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 } }, providers: [provideTranslocoScope('drawers')], ngImport: i0, template: "@if (article()) {\n <div\n [class]=\"\n cn(\n 'scroll-stable flex flex-col overflow-y-auto pb-6 pl-6 pr-3',\n '[&_details]:border-muted-foreground/18 [&_details]:border-b',\n '[&_details>summary]:bg-menu [&_details_details]:last:border-b-0',\n '[&_details>summary>i>svg]:transition-transform [&_details>summary>i>svg]:duration-300',\n '[&>details>summary>i>svg]:group-open/parent:rotate-180'\n )\n \">\n <section class=\"mb-4 mt-6 flex w-full flex-col gap-6\">\n <header\n id=\"panel-control\"\n class=\"focus-within:outline-primary not-focus-within:hover:outline-muted-foreground group flex rounded focus-within:outline hover:outline\">\n <div class=\"bg-muted flex grow items-center gap-2 rounded-e-none rounded-s px-3\">\n <input\n id=\"advanced-search-input\"\n type=\"search\"\n class=\"grow focus:outline-none\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.placeholder]=\"'drawers.inputPlaceholder' | transloco\"\n [attr.aria-label]=\"'drawers.inputPlaceholder' | transloco\"\n [ngModel]=\"queryText()\"\n (ngModelChange)=\"queryText.set($event)\"\n (keydown.enter)=\"executeSearch()\" />\n\n @if (queryText() !== '') {\n <button\n variant=\"icon\"\n size=\"xs\"\n [attr.title]=\"'clear' | transloco\"\n [attr.aria-label]=\"'clear' | transloco\"\n (click)=\"clearInput()\"\n (keydown.enter)=\"clearInput()\">\n <i class=\"fa-fw far fa-xmark\"></i>\n </button>\n }\n </div>\n\n <button\n size=\"default\"\n class=\"size-8 rounded-e rounded-s-none\"\n [disabled]=\"queryText() === '' || null\"\n [attr.title]=\"'search' | transloco\"\n [attr.aria-label]=\"'search' | transloco\"\n (click)=\"executeSearch()\">\n <i class=\"fa-fw far fa-magnifying-glass\"></i>\n </button>\n </header>\n </section>\n\n <!-- the same name is used everywhere to simulate an accordion -->\n <!-- extracts -->\n <ExtractsPanel [article]=\"article()\" />\n\n <!-- labels -->\n <LabelsPanel [article]=\"article()\" />\n\n <!-- entities -->\n <EntitiesPanel [article]=\"article()\" />\n\n <!-- similar documents -->\n <SimilarDocumentsPanel [article]=\"article()\" [strategy]=\"previewStrategy()\" />\n </div>\n}\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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: SimilarDocumentsPanel, selector: "similar-documents-panel, SimilarDocumentsPanel, similardocumentspanel", inputs: ["article", "strategy"] }, { 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10246
10412
|
}
|
|
10247
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10413
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AdvancedSearchComponent, decorators: [{
|
|
10248
10414
|
type: Component,
|
|
10249
10415
|
args: [{ selector: 'advanced-search', standalone: true, providers: [provideTranslocoScope('drawers')], imports: [FormsModule, ButtonComponent, TranslocoPipe, SimilarDocumentsPanel, EntitiesPanel, LabelsPanel, ExtractsPanel], template: "@if (article()) {\n <div\n [class]=\"\n cn(\n 'scroll-stable flex flex-col overflow-y-auto pb-6 pl-6 pr-3',\n '[&_details]:border-muted-foreground/18 [&_details]:border-b',\n '[&_details>summary]:bg-menu [&_details_details]:last:border-b-0',\n '[&_details>summary>i>svg]:transition-transform [&_details>summary>i>svg]:duration-300',\n '[&>details>summary>i>svg]:group-open/parent:rotate-180'\n )\n \">\n <section class=\"mb-4 mt-6 flex w-full flex-col gap-6\">\n <header\n id=\"panel-control\"\n class=\"focus-within:outline-primary not-focus-within:hover:outline-muted-foreground group flex rounded focus-within:outline hover:outline\">\n <div class=\"bg-muted flex grow items-center gap-2 rounded-e-none rounded-s px-3\">\n <input\n id=\"advanced-search-input\"\n type=\"search\"\n class=\"grow focus:outline-none\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [attr.placeholder]=\"'drawers.inputPlaceholder' | transloco\"\n [attr.aria-label]=\"'drawers.inputPlaceholder' | transloco\"\n [ngModel]=\"queryText()\"\n (ngModelChange)=\"queryText.set($event)\"\n (keydown.enter)=\"executeSearch()\" />\n\n @if (queryText() !== '') {\n <button\n variant=\"icon\"\n size=\"xs\"\n [attr.title]=\"'clear' | transloco\"\n [attr.aria-label]=\"'clear' | transloco\"\n (click)=\"clearInput()\"\n (keydown.enter)=\"clearInput()\">\n <i class=\"fa-fw far fa-xmark\"></i>\n </button>\n }\n </div>\n\n <button\n size=\"default\"\n class=\"size-8 rounded-e rounded-s-none\"\n [disabled]=\"queryText() === '' || null\"\n [attr.title]=\"'search' | transloco\"\n [attr.aria-label]=\"'search' | transloco\"\n (click)=\"executeSearch()\">\n <i class=\"fa-fw far fa-magnifying-glass\"></i>\n </button>\n </header>\n </section>\n\n <!-- the same name is used everywhere to simulate an accordion -->\n <!-- extracts -->\n <ExtractsPanel [article]=\"article()\" />\n\n <!-- labels -->\n <LabelsPanel [article]=\"article()\" />\n\n <!-- entities -->\n <EntitiesPanel [article]=\"article()\" />\n\n <!-- similar documents -->\n <SimilarDocumentsPanel [article]=\"article()\" [strategy]=\"previewStrategy()\" />\n </div>\n}\n", styles: [":host{--panel-max-height: none}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"] }]
|
|
10250
10416
|
}], propDecorators: { article: [{ type: i0.Input, args: [{ isSignal: true, alias: "article", required: true }] }], previewStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "previewStrategy", required: false }] }] } });
|
|
@@ -10293,10 +10459,10 @@ class DrawerPreviewComponent extends DrawerComponent {
|
|
|
10293
10459
|
}
|
|
10294
10460
|
});
|
|
10295
10461
|
}
|
|
10296
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10297
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10462
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerPreviewComponent, deps: [{ token: GLOBAL_QUERY_NAME }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
10463
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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"] }] });
|
|
10298
10464
|
}
|
|
10299
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10465
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerPreviewComponent, decorators: [{
|
|
10300
10466
|
type: Component,
|
|
10301
10467
|
args: [{ selector: 'DrawerPreview, drawerpreview', standalone: true, imports: [NgClass, NgComponentOutlet, AdvancedSearchComponent], providers: [DrawerService, PreviewService], host: {
|
|
10302
10468
|
class: 'bg-transparent text-foreground'
|
|
@@ -10403,10 +10569,10 @@ class DrawerStackComponent {
|
|
|
10403
10569
|
drawer?.destroy();
|
|
10404
10570
|
}, 250);
|
|
10405
10571
|
}
|
|
10406
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10407
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.
|
|
10572
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerStackComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
10573
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", 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"] });
|
|
10408
10574
|
}
|
|
10409
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10575
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DrawerStackComponent, decorators: [{
|
|
10410
10576
|
type: Component,
|
|
10411
10577
|
args: [{ selector: 'DrawerStack, drawerstack', template: ``, host: {
|
|
10412
10578
|
'[attr.drawer-opened]': 'drawerOpened()'
|
|
@@ -10439,8 +10605,8 @@ class FeedbackDialogComponent {
|
|
|
10439
10605
|
this.dialog()?.close();
|
|
10440
10606
|
notify.success(this.transloco.translate("feedback.feedbackSuccess"), { duration: 2000 });
|
|
10441
10607
|
}
|
|
10442
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10443
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10608
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FeedbackDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10609
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
10444
10610
|
<dialog #dialog>
|
|
10445
10611
|
<DialogContent>
|
|
10446
10612
|
<DialogHeader>
|
|
@@ -10469,7 +10635,7 @@ class FeedbackDialogComponent {
|
|
|
10469
10635
|
</dialog>
|
|
10470
10636
|
`, 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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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" }] });
|
|
10471
10637
|
}
|
|
10472
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FeedbackDialogComponent, decorators: [{
|
|
10473
10639
|
type: Component,
|
|
10474
10640
|
args: [{
|
|
10475
10641
|
selector: "feedback-dialog, feedbackdialog, FeedbackDialog",
|
|
@@ -10574,10 +10740,10 @@ class SearchFeedbackComponent {
|
|
|
10574
10740
|
openFeedbackDialog(type) {
|
|
10575
10741
|
this.feedbackDialog()?.open(type);
|
|
10576
10742
|
}
|
|
10577
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10578
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10743
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10744
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SearchFeedbackComponent, isStandalone: true, selector: "feedback, Feedback", inputs: { pages: { classPropertyName: "pages", publicName: "pages", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onClose: "onClose" }, providers: [provideTranslocoScope('feedback')], viewQueries: [{ propertyName: "feedbackDialog", first: true, predicate: FeedbackDialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<menu>\n <button class=\"border border-foreground/18\" variant=\"outline\" title=\"{{ 'feedback.button' | transloco }}\">\n <i class=\"fa-fw far fa-commenting\" aria-hidden=\"true\"></i>\n {{ 'feedback.label' | transloco }}\n <i class=\"fa-fw fas fa-xmark ms-2\" (click)=\"close($event)\" aria-hidden=\"true\"></i>\n </button>\n\n <MenuContent>\n @if (!disliked()) {\n <menuitem (click)=\"like()\" [attr.aria-label]=\"'feedback.like' | transloco\">\n @if (liked()) {\n <i class=\"fa-fw fas fa-thumbs-up\"></i> {{ 'feedback.liked' | transloco }}\n } @else {\n <i class=\"fa-fw far fa-thumbs-up\"></i> {{ 'feedback.like' | transloco }}\n }\n </menuitem>\n }\n @if (!liked()) {\n <menuitem (click)=\"dislike()\" [attr.aria-label]=\"'feedback.dislike' | transloco\">\n @if (disliked()) {\n <i class=\"fa-fw fas fa-thumbs-down\"></i> {{ 'feedback.disliked' | transloco }}\n } @else {\n <i class=\"fa-fw far fa-thumbs-down\"></i> {{ 'feedback.dislike' | transloco }}\n }\n </menuitem>\n }\n @for (menu of menus; track $index) {\n <menuitem (click)=\"openFeedbackDialog(menu.type)\" [attr.aria-label]=\"'feedback.' + menu.type + '.title' | transloco\">\n <i class=\"fa-fw {{ menu.icon }}\"></i> {{ 'feedback.' + menu.type + '.title' | transloco }}\n </menuitem>\n }\n </MenuContent>\n</menu>\n\n<feedback-dialog />\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10579
10745
|
}
|
|
10580
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10746
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchFeedbackComponent, decorators: [{
|
|
10581
10747
|
type: Component,
|
|
10582
10748
|
args: [{ selector: 'feedback, Feedback', standalone: true, imports: [ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, TranslocoPipe, FeedbackDialogComponent], providers: [provideTranslocoScope('feedback')], template: "<menu>\n <button class=\"border border-foreground/18\" variant=\"outline\" title=\"{{ 'feedback.button' | transloco }}\">\n <i class=\"fa-fw far fa-commenting\" aria-hidden=\"true\"></i>\n {{ 'feedback.label' | transloco }}\n <i class=\"fa-fw fas fa-xmark ms-2\" (click)=\"close($event)\" aria-hidden=\"true\"></i>\n </button>\n\n <MenuContent>\n @if (!disliked()) {\n <menuitem (click)=\"like()\" [attr.aria-label]=\"'feedback.like' | transloco\">\n @if (liked()) {\n <i class=\"fa-fw fas fa-thumbs-up\"></i> {{ 'feedback.liked' | transloco }}\n } @else {\n <i class=\"fa-fw far fa-thumbs-up\"></i> {{ 'feedback.like' | transloco }}\n }\n </menuitem>\n }\n @if (!liked()) {\n <menuitem (click)=\"dislike()\" [attr.aria-label]=\"'feedback.dislike' | transloco\">\n @if (disliked()) {\n <i class=\"fa-fw fas fa-thumbs-down\"></i> {{ 'feedback.disliked' | transloco }}\n } @else {\n <i class=\"fa-fw far fa-thumbs-down\"></i> {{ 'feedback.dislike' | transloco }}\n }\n </menuitem>\n }\n @for (menu of menus; track $index) {\n <menuitem (click)=\"openFeedbackDialog(menu.type)\" [attr.aria-label]=\"'feedback.' + menu.type + '.title' | transloco\">\n <i class=\"fa-fw {{ menu.icon }}\"></i> {{ 'feedback.' + menu.type + '.title' | transloco }}\n </menuitem>\n }\n </MenuContent>\n</menu>\n\n<feedback-dialog />\n" }]
|
|
10583
10749
|
}], 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 }] }] } });
|
|
@@ -10678,10 +10844,10 @@ class AggregationItemComponent {
|
|
|
10678
10844
|
this.node().$selectedVisually = false;
|
|
10679
10845
|
}
|
|
10680
10846
|
}
|
|
10681
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
10682
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
10847
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AggregationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10848
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AggregationItemComponent, isStandalone: true, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null }, path: { classPropertyName: "path", publicName: "path", isSignal: true, isRequired: true, transformFunction: null }, field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelect: "onSelect", onOpen: "onOpen", onFilter: "onFilter" }, host: { properties: { "attr.disabled": "this.disabled" } }, ngImport: i0, template: "<a\n role=\"listitem\"\n [attr.aria-selected]=\"node().$selected || node().$selectedVisually\"\n [attr.aria-label]=\"name() | syslang\"\n [style.--level]=\"level()\"\n [class]=\"\n cn(\n 'flex grow items-center gap-2 p-1 leading-7',\n node().count === 0 && 'disabled pointer-events-none text-neutral-300',\n (node().$selected || node().$selectedVisually) && 'bg-primary-100 text-primary'\n )\n \"\n (click)=\"select(node(), $event, true)\">\n <!-- chrevron is visible only if the node has children -->\n <button (click)=\"open($event, node())\" class=\"transition-transform ease-in hover:scale-125\" aria-label=\"Open\">\n <ChevronRight [class]=\"cn('size-4 translate-x-1', node().$opened && 'rotate-90', !node().hasChildren && 'hidden')\" width=\"16\" height=\"16\" />\n </button>\n\n <input\n type=\"checkbox\"\n role=\"checkbox\"\n value=\"{{ node().value }}\"\n [attr.disabled]=\"node().count === 0 ? true : null\"\n [attr.aria-disabled]=\"node().count === 0\"\n (keydown.enter)=\"select(node(), $event)\"\n [checked]=\"node().$selected || node().$selectedVisually\" />\n\n @if (node().icon) {\n <i class=\"fa-fw {{ node().icon }} self-center justify-self-center\" aria-hidden=\"true\"></i>\n }\n <p\n [class]=\"cn('line-clamp-1 text-ellipsis break-all', quickFilter() && 'hover:underline')\"\n [title]=\"quickFilter() ? ((isFiltered() ? 'filters.removeFilter' : 'filters.filter') | transloco) : (name() | syslang)\"\n (click)=\"onTextClick($event)\">\n @for (chunk of (name() | syslang) ?? '' | highlightWord: searchText() : 10; track $index) {\n <span [class]=\"{ 'font-bold': chunk.match }\" aria-hidden=\"true\">{{ chunk.text }}</span>\n }\n </p>\n</a>\n\n@if (node().hasChildren && node().$opened) {\n @for (item of node().items; track $index) {\n <AggregationItem\n [node]=\"item\"\n [path]=\"childrenPath()\"\n [field]=\"field()\"\n (onOpen)=\"onOpen.emit($event)\"\n (onFilter)=\"onFilter.emit($event)\"\n (onSelect)=\"onChildSelect($event)\" />\n }\n}\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none}:host a{padding-left:calc((var(--agg-tree-indent, .5rem) * var(--level)))}a{line-height:var(--agg-item-height, inherit)}\n"], dependencies: [{ kind: "component", type: AggregationItemComponent, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: ["node", "path", "field"], outputs: ["onSelect", "onOpen", "onFilter"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon", inputs: ["class"] }, { kind: "pipe", type: HighlightWordPipe, name: "highlightWord" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10683
10849
|
}
|
|
10684
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
10850
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AggregationItemComponent, decorators: [{
|
|
10685
10851
|
type: Component,
|
|
10686
10852
|
args: [{ selector: "aggregation-item, AggregationItem, aggregationitem", standalone: true, imports: [HighlightWordPipe, ListItemComponent, SyslangPipe, ChevronRightIcon, TranslocoPipe], template: "<a\n role=\"listitem\"\n [attr.aria-selected]=\"node().$selected || node().$selectedVisually\"\n [attr.aria-label]=\"name() | syslang\"\n [style.--level]=\"level()\"\n [class]=\"\n cn(\n 'flex grow items-center gap-2 p-1 leading-7',\n node().count === 0 && 'disabled pointer-events-none text-neutral-300',\n (node().$selected || node().$selectedVisually) && 'bg-primary-100 text-primary'\n )\n \"\n (click)=\"select(node(), $event, true)\">\n <!-- chrevron is visible only if the node has children -->\n <button (click)=\"open($event, node())\" class=\"transition-transform ease-in hover:scale-125\" aria-label=\"Open\">\n <ChevronRight [class]=\"cn('size-4 translate-x-1', node().$opened && 'rotate-90', !node().hasChildren && 'hidden')\" width=\"16\" height=\"16\" />\n </button>\n\n <input\n type=\"checkbox\"\n role=\"checkbox\"\n value=\"{{ node().value }}\"\n [attr.disabled]=\"node().count === 0 ? true : null\"\n [attr.aria-disabled]=\"node().count === 0\"\n (keydown.enter)=\"select(node(), $event)\"\n [checked]=\"node().$selected || node().$selectedVisually\" />\n\n @if (node().icon) {\n <i class=\"fa-fw {{ node().icon }} self-center justify-self-center\" aria-hidden=\"true\"></i>\n }\n <p\n [class]=\"cn('line-clamp-1 text-ellipsis break-all', quickFilter() && 'hover:underline')\"\n [title]=\"quickFilter() ? ((isFiltered() ? 'filters.removeFilter' : 'filters.filter') | transloco) : (name() | syslang)\"\n (click)=\"onTextClick($event)\">\n @for (chunk of (name() | syslang) ?? '' | highlightWord: searchText() : 10; track $index) {\n <span [class]=\"{ 'font-bold': chunk.match }\" aria-hidden=\"true\">{{ chunk.text }}</span>\n }\n </p>\n</a>\n\n@if (node().hasChildren && node().$opened) {\n @for (item of node().items; track $index) {\n <AggregationItem\n [node]=\"item\"\n [path]=\"childrenPath()\"\n [field]=\"field()\"\n (onOpen)=\"onOpen.emit($event)\"\n (onFilter)=\"onFilter.emit($event)\"\n (onSelect)=\"onChildSelect($event)\" />\n }\n}\n", styles: [":host{display:block;-webkit-user-select:none;user-select:none}:host a{padding-left:calc((var(--agg-tree-indent, .5rem) * var(--level)))}a{line-height:var(--agg-item-height, inherit)}\n"] }]
|
|
10687
10853
|
}], propDecorators: { disabled: [{
|
|
@@ -10911,6 +11077,8 @@ class AggregationComponent {
|
|
|
10911
11077
|
this.items().forEach((item) => {
|
|
10912
11078
|
item.$selected = false;
|
|
10913
11079
|
});
|
|
11080
|
+
sessionStorage.setItem(`agg-${this.aggregation()?.column}`, JSON.stringify([...this.items()]));
|
|
11081
|
+
this.selection.set(false);
|
|
10914
11082
|
this.isAllSelected.set(false);
|
|
10915
11083
|
}
|
|
10916
11084
|
}
|
|
@@ -11226,26 +11394,36 @@ class AggregationComponent {
|
|
|
11226
11394
|
currentFilters.filters.forEach((filter) => {
|
|
11227
11395
|
// check if the filter is already present in the current items
|
|
11228
11396
|
// if not, add it to the current items
|
|
11229
|
-
const found = currentItems.find((item) => item.value === filter.value);
|
|
11397
|
+
const found = currentItems.find((item) => item.value.toLocaleLowerCase() === filter.value?.toLocaleLowerCase());
|
|
11230
11398
|
if (!found) {
|
|
11399
|
+
// add it to the current items
|
|
11231
11400
|
currentItems.unshift({
|
|
11232
11401
|
value: filter.value,
|
|
11233
11402
|
display: filter.display,
|
|
11234
11403
|
$selected: true
|
|
11235
11404
|
});
|
|
11236
11405
|
}
|
|
11406
|
+
else {
|
|
11407
|
+
// mark as selected the existing item
|
|
11408
|
+
found.$selected = true;
|
|
11409
|
+
}
|
|
11237
11410
|
});
|
|
11238
11411
|
}
|
|
11239
11412
|
else {
|
|
11240
11413
|
// single filter
|
|
11241
|
-
const found = currentItems.find((item) => item.value === currentFilters.value);
|
|
11414
|
+
const found = currentItems.find((item) => item.value.toLocaleLowerCase() === currentFilters.value?.toLocaleLowerCase());
|
|
11242
11415
|
if (!found) {
|
|
11416
|
+
// add it to the current items
|
|
11243
11417
|
currentItems.push({
|
|
11244
11418
|
value: currentFilters.value,
|
|
11245
11419
|
display: currentFilters.display,
|
|
11246
11420
|
$selected: true
|
|
11247
11421
|
});
|
|
11248
11422
|
}
|
|
11423
|
+
else {
|
|
11424
|
+
// mark as selected the existing item
|
|
11425
|
+
found.$selected = true;
|
|
11426
|
+
}
|
|
11249
11427
|
}
|
|
11250
11428
|
}
|
|
11251
11429
|
}
|
|
@@ -11301,10 +11479,10 @@ class AggregationComponent {
|
|
|
11301
11479
|
return item;
|
|
11302
11480
|
});
|
|
11303
11481
|
}
|
|
11304
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11305
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
11482
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AggregationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11483
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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 }, 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", searchText: "searchTextChange" }, host: { properties: { "class": "cn(\"block h-[inherit] max-h-[inherit]\",class())" } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<details (toggle)=\"onToggle($event)\" [attr.open]=\"expanded()\" [attr.name]=\"id()\" class=\"group space-y-2\">\n <summary [class.cursor-pointer]=\"collapsible() && !isEmpty()\" [class.text-muted-foreground]=\"isEmpty()\"\n class=\"m-0 mt-1 flex gap-1 h-8 w-full select-none items-center pl-1 font-semibold\" (click)=\"onHeaderClick($event)\">\n <ng-content select=\"label\">\n @if (aggregation()?.icon) {\n <i class=\"fa-fw {{ aggregation()?.icon }} mr-1\" aria-hidden=\"true\"></i>\n }\n <span class=\"grow\">{{ aggregation()?.display | syslang | transloco }}</span>\n </ng-content>\n\n @if (showFiltersCount() && filtersCount() > 0) {\n <!-- count -->\n <Badge size=\"xs\" class=\"ml-1 pb-0.5\">\n {{ filtersCount() }}\n </Badge>\n }\n <!-- apply filter block -->\n @if (!isCollapsed()) {\n <ButtonGroup>\n @if (hasFilters()) {\n <button variant=\"outline\" size=\"icon\" class=\"size-6\" [attr.title]=\"'filters.clearFilters' | transloco\"\n [attr.aria-label]=\"'filters.clearFilters' | transloco\" (click)=\"$event.stopPropagation(); clear()\">\n <i class=\"fa-fw far fa-filter-circle-xmark\"></i>\n </button>\n }\n @if (selection()) {\n <button variant=\"primary\" size=\"xs\" [attr.title]=\"'filters.applyFilters' | transloco\"\n [attr.aria-label]=\"'filters.applyFilters' | transloco\" (click)=\"$event.stopPropagation(); apply()\" class=\"px-1 h-4\">\n <FilterIcon class=\"size-4\"/>\n {{ 'filters.apply' | transloco }}\n </button>\n }\n\n <!-- select / unselect all -->\n @if (isAllSelected()) {\n <button variant=\"outline\" size=\"icon\" class=\"size-6\" [attr.title]=\"'filters.unselectAllFilters' | transloco\"\n [attr.aria-label]=\"'filters.unselectAllFilters' | transloco\" (click)=\"$event.stopPropagation(); unselectAll()\">\n <i class=\"fa-fw far fa-check-square\"></i>\n </button>\n } @else {\n <button variant=\"outline\" size=\"icon\" class=\"size-6\" [attr.title]=\"'filters.selectAllFilters' | transloco\"\n [attr.aria-label]=\"'filters.selectAllFilters' | transloco\" (click)=\"$event.stopPropagation(); selectAll()\">\n <i class=\"fa-fw far fa-square\"></i>\n </button>\n }\n </ButtonGroup>\n }\n\n @if (collapsible()) {\n <button variant=\"none\" title=\"Open/Close\"\n class=\"cursor-pointer [&_svg]:transition-transform [&_svg]:duration-150 group-open:[&_svg]:rotate-90\">\n <chevronright />\n </button>\n }\n </summary>\n\n <!-- content wrapper -->\n @if (aggregation()?.searchable && items().length) {\n <InputGroup class=\"group/item mt-1\">\n <input #searchInput input-group id=\"aggregation-input-{{column()}}\" type=\"text\" [attr.placeholder]=\"'search' | transloco\" [(ngModel)]=\"searchText\" class=\"mt-1\"/>\n <InputGroupAddon>\n <SearchIcon class=\"text-foreground size-4 rotate-0 transition-[rotate] duration-500 group-focus-within/item:rotate-90\" />\n </InputGroupAddon>\n </InputGroup>\n }\n\n <ul class=\"scrollbar-thin max-h-[calc(var(--height,100%)-100px)] snap-y snap-start overflow-auto\" role=\"list\"\n [attr.aria-label]=\"aggregation()?.display | syslang | transloco\">\n @for (item of items(); track $index) {\n <AggregationItem [node]=\"item\" [path]=\"[]\" [field]=\"aggregation()?.column\" (onSelect)=\"select()\"\n (onOpen)=\"open($event)\" (onFilter)=\"quickFilter($event)\" />\n }\n </ul>\n @if (aggregation()?.$hasMore && this.searchedItems().length === 0) {\n <button decoration=\"underline\" class=\"mt-1 flex w-full justify-center\" [attr.aria-label]=\"'loadMore' | transloco\"\n (click)=\"loadMore()\">\n {{ 'loadMore' | transloco }}\n </button>\n }\n</details>\n", styles: ["AggregationItem:has(+AggregationItem){margin-bottom:var(--agg-item-gap, 0)}\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: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: AggregationItemComponent, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: ["node", "path", "field"], outputs: ["onSelect", "onOpen", "onFilter"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon", inputs: ["class"] }, { kind: "directive", type: ButtonGroup, selector: "button-group, ButtonGroup", inputs: ["class", "orientation"] }, { 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: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11306
11484
|
}
|
|
11307
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11485
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AggregationComponent, decorators: [{
|
|
11308
11486
|
type: Component,
|
|
11309
11487
|
args: [{ selector: "Aggregation, aggregation", imports: [
|
|
11310
11488
|
FormsModule,
|
|
@@ -11540,10 +11718,10 @@ class DateComponent extends AggregationComponent {
|
|
|
11540
11718
|
});
|
|
11541
11719
|
}
|
|
11542
11720
|
}
|
|
11543
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11544
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
11721
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DateComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
11722
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: DateComponent, isStandalone: true, selector: "date-filter,DateFilter", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, displayEmptyDistributionIntervals: { classPropertyName: "displayEmptyDistributionIntervals", publicName: "displayEmptyDistributionIntervals", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "@container" }, providers: [provideTranslocoScope("filters")], viewQueries: [{ propertyName: "datepicker", first: true, predicate: DateRangePickerDirective, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<details (toggle)=\"onToggle($event)\" [attr.open]=\"expanded()\" [attr.name]=\"id()\" class=\"group space-y-2\">\n <summary\n [class.cursor-pointer]=\"collapsible()\"\n class=\"m-0 flex h-8 w-full select-none items-center pl-1 font-semibold\"\n (click)=\"onHeaderClick($event)\">\n <ng-content select=\"label\">\n @if (aggregation()?.icon) {\n <i class=\"fa-fw {{ aggregation()?.icon }} mr-1\" aria-hidden=\"true\"></i>\n }\n <span class=\"grow\">{{ aggregation()?.display | syslang | transloco }}</span>\n </ng-content>\n\n @if (hasFilters()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.clearFilters' | transloco\"\n [attr.aria-label]=\"'filters.clearFilters' | transloco\"\n (click)=\"clear()\"\n (keydown.enter)=\"clear()\">\n <i class=\"fa-fw far fa-filter-circle-xmark\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (selection() && validSelection()) {\n <button\n variant=\"ghost\"\n size=\"icon\"\n [attr.title]=\"'filters.applyFilters' | transloco\"\n [attr.aria-label]=\"'filters.applyFilters' | transloco\"\n (click)=\"apply()\"\n (keydown.enter)=\"apply()\">\n <i class=\"fa-fw far fa-filter\" aria-hidden=\"true\"></i>\n </button>\n }\n @if (collapsible()) {\n <button variant=\"none\" title=\"Open/Close\" class=\"cursor-pointer [&_svg]:transition-transform [&_svg]:duration-150 group-open:[&_svg]:rotate-90\">\n <chevronright />\n </button>\n }\n </summary>\n\n <!-- content wrapper -->\n <form [formGroup]=\"form\">\n <ul class=\"flex flex-col gap-1 pt-2 scrollbar-thin max-h-[calc(var(--height,100%)-100px)] snap-y snap-start overflow-auto\" role=\"list\">\n @for (option of dateOptions(); track $index) {\n <li\n role=\"listitem\"\n tabindex=\"0\"\n (click)=\"radio.click()\"\n [attr.aria-label]=\"option.display | syslang | transloco\"\n [class]=\"\n cn(\n 'flex p-0 px-2 leading-7',\n form.get('option')?.value === option.display && 'bg-accent',\n option.hidden && 'hidden',\n option.disabled && 'disabled pointer-events-none text-neutral-300'\n )\n \"\n [attr.aria-hidden]=\"option.disabled\">\n <input\n #radio\n type=\"radio\"\n formControlName=\"option\"\n id=\"date-filter-{{ option.display }}\"\n [attr.disabled]=\"option.disabled ? true : null\"\n [attr.aria-disabled]=\"option.disabled\"\n (click)=\"select()\"\n value=\"{{ option.display }}\" />\n\n <label for=\"date-filter-{{ option.display }}\" class=\"grow cursor-pointer p-1\">\n {{ option.display | syslang | transloco }}\n </label>\n </li>\n }\n\n @if (allowCustomRange) {\n <li role=\"listitem\" aria-label=\"custom range\" class=\"flex px-2 leading-7\" [class.select]=\"form.get('option')?.value === 'custom-range'\">\n <input #radiorange type=\"radio\" formControlName=\"option\" id=\"date-filter-custom-range\" value=\"custom-range\" (click)=\"select()\" />\n\n <div\n class=\"flex @max-[340px]:flex-wrap grow gap-1 p-1 @container\"\n daterangepicker\n datepicker-buttons\n [datepicker-language]=\"lang()\"\n [datepicker-min]=\"form.get('customRange.from')?.value || undefined\"\n [datepicker-max]=\"form.get('customRange.to')?.value ?? today.toISOString()\"\n (click)=\"radiorange.click()\">\n <div class=\"flex gap-1\">\n <label for=\"datepicker-range-start\" class=\"min-w-10\">{{ 'from' | transloco }}</label>\n <input id=\"datepicker-range-start\" name=\"start\" type=\"text\" class=\"h-8 min-w-[13ch]\" />\n </div>\n <div class=\"flex gap-1\">\n <label for=\"datepicker-range-end\" class=\"text-right min-w-10\">{{ 'to' | transloco }}</label>\n <input id=\"datepicker-range-end\" name=\"end\" type=\"text\" class=\"h-8 min-w-[13ch]\" />\n </div>\n </div>\n </li>\n }\n </ul>\n </form>\n</details>\n", styles: [":host{display:block;width:340px;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\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "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: "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"] }, { kind: "component", type: ChevronRightIcon, selector: "chevron-right, ChevronRight, chevronright, ChevronRightIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
11545
11723
|
}
|
|
11546
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11724
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: DateComponent, decorators: [{
|
|
11547
11725
|
type: Component,
|
|
11548
11726
|
args: [{ selector: "date-filter,DateFilter", standalone: true, providers: [provideTranslocoScope("filters")], imports: [
|
|
11549
11727
|
InputComponent,
|
|
@@ -11568,8 +11746,8 @@ class AsideFiltersComponent {
|
|
|
11568
11746
|
const asideFilters = this.appStore.filters().filter((f) => f.position === "left");
|
|
11569
11747
|
return this.appStore.getAuthorized(asideFilters);
|
|
11570
11748
|
}, ...(ngDevMode ? [{ debugName: "asideFilters" }] : []));
|
|
11571
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11572
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
11749
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AsideFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11750
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
11573
11751
|
@for (agg of asideFilters(); track agg.name) {
|
|
11574
11752
|
<Card hover="no">
|
|
11575
11753
|
<Aggregation [name]="agg.name" [column]="agg.column" showFiltersCount />
|
|
@@ -11577,7 +11755,7 @@ class AsideFiltersComponent {
|
|
|
11577
11755
|
}
|
|
11578
11756
|
`, isInline: true, dependencies: [{ kind: "directive", type: CardComponent, selector: ".card, card, Card", inputs: ["class", "variant", "hover"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["class", "id", "name", "column", "collapsible", "collapsed", "searchable", "showFiltersCount", "searchText"], outputs: ["onSelect", "searchTextChange"] }] });
|
|
11579
11757
|
}
|
|
11580
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11758
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AsideFiltersComponent, decorators: [{
|
|
11581
11759
|
type: Component,
|
|
11582
11760
|
args: [{
|
|
11583
11761
|
selector: "aside-filters, AsideFilters, asidefilters",
|
|
@@ -11654,8 +11832,8 @@ class FilterButtonComponent {
|
|
|
11654
11832
|
isDate(column) {
|
|
11655
11833
|
return this.appStore.isDateColumn(column);
|
|
11656
11834
|
}
|
|
11657
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11658
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
11835
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FilterButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11836
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: FilterButtonComponent, isStandalone: true, selector: "filter-button, FilterButton", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, 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 } }, host: { attributes: { "role": "listitem" }, properties: { "class.hidden": "filter().hidden" } }, viewQueries: [{ propertyName: "popoverRef", first: true, predicate: PopoverComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
11659
11837
|
<Popover [disabled]="filter().disabled" class="group">
|
|
11660
11838
|
<button
|
|
11661
11839
|
[variant]="variant()"
|
|
@@ -11712,7 +11890,7 @@ class FilterButtonComponent {
|
|
|
11712
11890
|
</Popover>
|
|
11713
11891
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"], outputs: ["closed"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["position", "keepOpen", "class", "offset"], exportAs: ["popoverContent"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["class", "id", "name", "column", "collapsible", "collapsed", "searchable", "showFiltersCount", "searchText"], outputs: ["onSelect", "searchTextChange"] }, { kind: "component", type: DateComponent, selector: "date-filter,DateFilter", inputs: ["title", "displayEmptyDistributionIntervals"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "pipe", type: OperatorPipe, name: "operator" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
11714
11892
|
}
|
|
11715
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
11893
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FilterButtonComponent, decorators: [{
|
|
11716
11894
|
type: Component,
|
|
11717
11895
|
args: [{
|
|
11718
11896
|
selector: "filter-button, FilterButton",
|
|
@@ -11887,8 +12065,8 @@ class MoreComponent {
|
|
|
11887
12065
|
const { count = 0 } = this.queryParamsStore.getFilter({ field: aggregation.column, name: aggregation.name }) || {};
|
|
11888
12066
|
return count > 0;
|
|
11889
12067
|
}
|
|
11890
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11891
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12068
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12069
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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 } }, host: { classAttribute: "divide-y divide-muted-foreground/18" }, ngImport: i0, template: `
|
|
11892
12070
|
@for (filter of visibleFilters(); track $index) {
|
|
11893
12071
|
@if (isDate(filter.column)) {
|
|
11894
12072
|
<DateFilter class="p-1" id="more-filters" [name]="filter.name" [column]="filter.column" collapsible collapsed />
|
|
@@ -11906,7 +12084,7 @@ class MoreComponent {
|
|
|
11906
12084
|
}
|
|
11907
12085
|
`, isInline: true, styles: [":host{scrollbar-width:none}\n"], dependencies: [{ kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["class", "id", "name", "column", "collapsible", "collapsed", "searchable", "showFiltersCount", "searchText"], outputs: ["onSelect", "searchTextChange"] }, { kind: "component", type: DateComponent, selector: "date-filter,DateFilter", inputs: ["title", "displayEmptyDistributionIntervals"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11908
12086
|
}
|
|
11909
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12087
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MoreComponent, decorators: [{
|
|
11910
12088
|
type: Component,
|
|
11911
12089
|
args: [{ selector: "more, More", standalone: true, imports: [AggregationComponent, DateComponent, TranslocoPipe], template: `
|
|
11912
12090
|
@for (filter of visibleFilters(); track $index) {
|
|
@@ -11951,8 +12129,8 @@ class MoreButtonComponent {
|
|
|
11951
12129
|
}, 0);
|
|
11952
12130
|
return total;
|
|
11953
12131
|
}, ...(ngDevMode ? [{ debugName: "totalFiltersCount" }] : []));
|
|
11954
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
11955
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12132
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MoreButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12133
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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 } }, ngImport: i0, template: `
|
|
11956
12134
|
<Popover class="group/more">
|
|
11957
12135
|
<button
|
|
11958
12136
|
variant="ghost"
|
|
@@ -11976,7 +12154,7 @@ class MoreButtonComponent {
|
|
|
11976
12154
|
</Popover>
|
|
11977
12155
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"], outputs: ["closed"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["position", "keepOpen", "class", "offset"], exportAs: ["popoverContent"] }, { kind: "component", type: MoreComponent, selector: "more, More", inputs: ["count", "includedFilters", "excludedFilters", "aggregations"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11978
12156
|
}
|
|
11979
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12157
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MoreButtonComponent, decorators: [{
|
|
11980
12158
|
type: Component,
|
|
11981
12159
|
args: [{
|
|
11982
12160
|
selector: "more-button, MoreButton",
|
|
@@ -12179,8 +12357,8 @@ class FiltersBarComponent {
|
|
|
12179
12357
|
ref.popoverRef()?.onClick(event);
|
|
12180
12358
|
});
|
|
12181
12359
|
}
|
|
12182
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12183
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12360
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FiltersBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12361
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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 }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClearFilters: "onClearFilters", onClearBasket: "onClearBasket" }, host: { attributes: { "role": "list", "aria-label": "Filters list" }, listeners: { "click": "handleClick($event)" }, properties: { "class": "cn(\"flex relative z-filter gap-2 cursor-default\", direction() === \"vertical\" ? \"flex-col items-start\" : \"flex-row\", 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: `
|
|
12184
12362
|
<ng-container overflowManager [direction]="direction()" [target]="el.nativeElement" (count)="adjustFiltersCount($event)">
|
|
12185
12363
|
@if (hasFilters()) {
|
|
12186
12364
|
<button
|
|
@@ -12229,7 +12407,7 @@ class FiltersBarComponent {
|
|
|
12229
12407
|
</ng-container>
|
|
12230
12408
|
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: MoreButtonComponent, selector: "more-button, MoreButton", inputs: ["count", "position", "includedFilters", "excludedFilters", "aggregations"] }, { kind: "component", type: FilterButtonComponent, selector: "filter-button, FilterButton", inputs: ["name", "column", "position", "offset"] }, { kind: "directive", type: OverflowManagerDirective, selector: "[overflowManager]", inputs: ["target", "margin", "direction"], outputs: ["count"] }, { kind: "directive", type: OverflowItemDirective, selector: "[overflowItem]" }, { kind: "directive", type: OverflowStopDirective, selector: "[overflowStop]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
12231
12409
|
}
|
|
12232
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12410
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: FiltersBarComponent, decorators: [{
|
|
12233
12411
|
type: Component,
|
|
12234
12412
|
args: [{
|
|
12235
12413
|
selector: "filters-bar, FiltersBar, filtersbar",
|
|
@@ -12437,10 +12615,10 @@ class LabelService {
|
|
|
12437
12615
|
return from(labels.bulkRemove(labelsToRemove, query, publicOnly));
|
|
12438
12616
|
}));
|
|
12439
12617
|
}
|
|
12440
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12441
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
12618
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LabelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
12619
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LabelService, providedIn: 'root' });
|
|
12442
12620
|
}
|
|
12443
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12621
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LabelService, decorators: [{
|
|
12444
12622
|
type: Injectable,
|
|
12445
12623
|
args: [{
|
|
12446
12624
|
providedIn: 'root'
|
|
@@ -12575,8 +12753,8 @@ class MultiSelectLabelsComponent {
|
|
|
12575
12753
|
return;
|
|
12576
12754
|
article[labelsField] = this.labels();
|
|
12577
12755
|
}
|
|
12578
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12579
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12756
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MultiSelectLabelsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12757
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
12580
12758
|
<div class="anchor" [ngStyle]="{ 'anchor-name': anchor() }">
|
|
12581
12759
|
<label [htmlFor]="id()" class="font-semibold">{{ (isPublic() ? 'labels.publicLabels' : 'labels.privateLabels') | transloco }}</label>
|
|
12582
12760
|
<input
|
|
@@ -12620,7 +12798,7 @@ class MultiSelectLabelsComponent {
|
|
|
12620
12798
|
}
|
|
12621
12799
|
`, 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\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
12622
12800
|
}
|
|
12623
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12801
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MultiSelectLabelsComponent, decorators: [{
|
|
12624
12802
|
type: Component,
|
|
12625
12803
|
args: [{ selector: "multiselect-labels, multiselectlabels, MultiSelectLabels", providers: [provideTranslocoScope("labels")], standalone: true, imports: [FormsModule, NgStyle, TranslocoPipe, InputComponent, BadgeComponent, ListItemComponent], template: `
|
|
12626
12804
|
<div class="anchor" [ngStyle]="{ 'anchor-name': anchor() }">
|
|
@@ -12688,8 +12866,8 @@ class LabelsEditDialog {
|
|
|
12688
12866
|
close(event) {
|
|
12689
12867
|
this.closed.emit({ type: event, article: this.article() });
|
|
12690
12868
|
}
|
|
12691
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12692
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12869
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LabelsEditDialog, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
12870
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
12693
12871
|
<dialog #dialog (closed)="close($event)">
|
|
12694
12872
|
<DialogContent>
|
|
12695
12873
|
<DialogHeader>
|
|
@@ -12719,7 +12897,7 @@ class LabelsEditDialog {
|
|
|
12719
12897
|
</dialog>
|
|
12720
12898
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: ButtonComponent, selector: "button,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
12721
12899
|
}
|
|
12722
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12900
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: LabelsEditDialog, decorators: [{
|
|
12723
12901
|
type: Component,
|
|
12724
12902
|
args: [{
|
|
12725
12903
|
selector: "labels-edit-dialog, labelseditdialog, LabelsEditDialog",
|
|
@@ -12776,8 +12954,8 @@ class SearchFooterComponent {
|
|
|
12776
12954
|
event.stopPropagation();
|
|
12777
12955
|
this.loadMore.emit();
|
|
12778
12956
|
}
|
|
12779
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12780
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12957
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12958
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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">
|
|
12781
12959
|
@if (hasMore() && config().showLoadMore) {
|
|
12782
12960
|
<button decoration="outline" class="w-full" tabindex="0" [attr.title]="'loadMore' | transloco" (click)="onLoadMore($event)">
|
|
12783
12961
|
{{ 'loadMore' | transloco }}
|
|
@@ -12788,7 +12966,7 @@ class SearchFooterComponent {
|
|
|
12788
12966
|
</button>
|
|
12789
12967
|
</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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
12790
12968
|
}
|
|
12791
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
12969
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchFooterComponent, decorators: [{
|
|
12792
12970
|
type: Component,
|
|
12793
12971
|
args: [{
|
|
12794
12972
|
selector: 'search-footer, searchfooter, SearchFooter',
|
|
@@ -12809,8 +12987,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
12809
12987
|
class SearchHeaderComponent {
|
|
12810
12988
|
floating = inject(PopoverContentComponent, { skipSelf: true, optional: true });
|
|
12811
12989
|
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
12812
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12813
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
12990
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12991
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SearchHeaderComponent, isStandalone: true, selector: "search-header, searchheader, SearchHeader", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
12814
12992
|
@if (floating) {
|
|
12815
12993
|
<div class="p-2">
|
|
12816
12994
|
<label class="text-xl font-bold">{{ label() }}</label>
|
|
@@ -12819,7 +12997,7 @@ class SearchHeaderComponent {
|
|
|
12819
12997
|
}
|
|
12820
12998
|
`, isInline: true, dependencies: [{ kind: "component", type: HorizontalDividerComponent, selector: "horizontal-divider, HorizontalDivider, horizontaldivider" }] });
|
|
12821
12999
|
}
|
|
12822
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13000
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchHeaderComponent, decorators: [{
|
|
12823
13001
|
type: Component,
|
|
12824
13002
|
args: [{
|
|
12825
13003
|
selector: 'search-header, searchheader, SearchHeader',
|
|
@@ -12858,8 +13036,8 @@ class SearchListComponent {
|
|
|
12858
13036
|
e.stopPropagation();
|
|
12859
13037
|
this.delete.emit(index);
|
|
12860
13038
|
}
|
|
12861
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
12862
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
13039
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13040
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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: `
|
|
12863
13041
|
@for (search of paginatedSearches(); track $index) {
|
|
12864
13042
|
<li
|
|
12865
13043
|
role="listitem"
|
|
@@ -12904,7 +13082,7 @@ class SearchListComponent {
|
|
|
12904
13082
|
}
|
|
12905
13083
|
`, 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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: TrashIcon, selector: "trash-icon, TrashIcon", inputs: ["class"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "component", type: FilterIcon, selector: "filter-icon, FilterIcon", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
12906
13084
|
}
|
|
12907
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13085
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SearchListComponent, decorators: [{
|
|
12908
13086
|
type: Component,
|
|
12909
13087
|
args: [{
|
|
12910
13088
|
selector: "search-list, searchlist, SearchList",
|
|
@@ -13010,8 +13188,8 @@ class RecentSearchesComponent {
|
|
|
13010
13188
|
loadMore() {
|
|
13011
13189
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
13012
13190
|
}
|
|
13013
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
13014
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.
|
|
13191
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RecentSearchesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13192
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", 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: `
|
|
13015
13193
|
<SearchHeader [label]="'searches.recent.label' | transloco" />
|
|
13016
13194
|
|
|
13017
13195
|
<SearchList
|
|
@@ -13027,7 +13205,7 @@ class RecentSearchesComponent {
|
|
|
13027
13205
|
<SearchFooter [hasMore]="hasMore()" [config]="config" (loadMore)="loadMore()" />
|
|
13028
13206
|
`, 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
13029
13207
|
}
|
|
13030
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13208
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: RecentSearchesComponent, decorators: [{
|
|
13031
13209
|
type: Component,
|
|
13032
13210
|
args: [{ selector: 'RecentSearches, recent-searches', standalone: true, providers: [provideTranslocoScope('searches')], imports: [TranslocoPipe, ChildMarkerDirective, SearchHeaderComponent, SearchListComponent, SearchFooterComponent], template: `
|
|
13033
13211
|
<SearchHeader [label]="'searches.recent.label' | transloco" />
|
|
@@ -13065,8 +13243,8 @@ class SavedSearchDialog {
|
|
|
13065
13243
|
// emit closed event for the diaglog service
|
|
13066
13244
|
this.closed.emit("dialog-confirm");
|
|
13067
13245
|
}
|
|
13068
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
13069
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.
|
|
13246
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SavedSearchDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13247
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.16", 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: `
|
|
13070
13248
|
<dialog #dialog>
|
|
13071
13249
|
<DialogContent>
|
|
13072
13250
|
<DialogHeader>
|
|
@@ -13094,7 +13272,7 @@ class SavedSearchDialog {
|
|
|
13094
13272
|
</dialog>
|
|
13095
13273
|
`, 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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { 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\"]", inputs: ["class", "variant", "decoration"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
13096
13274
|
}
|
|
13097
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SavedSearchDialog, decorators: [{
|
|
13098
13276
|
type: Component,
|
|
13099
13277
|
args: [{
|
|
13100
13278
|
selector: "saved-search-dialog, savedsearchdialog, SavedSearchDialog",
|
|
@@ -13179,8 +13357,8 @@ class SavedSearchesComponent {
|
|
|
13179
13357
|
loadMore() {
|
|
13180
13358
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
13181
13359
|
}
|
|
13182
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
13183
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.
|
|
13360
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SavedSearchesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13361
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.16", 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: `
|
|
13184
13362
|
<SearchHeader [label]="'searches.saved.label' | transloco" />
|
|
13185
13363
|
|
|
13186
13364
|
<SearchList [paginatedSearches]="paginatedSearches()" deleteButtonTitle="searches.saved.remove" (delete)="onDelete($event)">
|
|
@@ -13192,7 +13370,7 @@ class SavedSearchesComponent {
|
|
|
13192
13370
|
<SearchFooter [hasMore]="hasMore()" [config]="config" (loadMore)="loadMore()" />
|
|
13193
13371
|
`, 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
13194
13372
|
}
|
|
13195
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
13373
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SavedSearchesComponent, decorators: [{
|
|
13196
13374
|
type: Component,
|
|
13197
13375
|
args: [{ selector: 'saved-searches, SavedSearches', standalone: true, imports: [TranslocoPipe, ChildMarkerDirective, SearchHeaderComponent, SearchListComponent, SearchFooterComponent], providers: [provideTranslocoScope('searches')], template: `
|
|
13198
13376
|
<SearchHeader [label]="'searches.saved.label' | transloco" />
|
|
@@ -13207,6 +13385,206 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
13207
13385
|
`, styles: [":host ul{scrollbar-width:thin}\n"] }]
|
|
13208
13386
|
}], ctorParameters: () => [], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }] } });
|
|
13209
13387
|
|
|
13388
|
+
const SUPPORTED_LANGUAGES = ["en", "fr"];
|
|
13389
|
+
class UserProfileFormComponent {
|
|
13390
|
+
principalStore = inject(PrincipalStore);
|
|
13391
|
+
userSettingsStore = inject(UserSettingsStore);
|
|
13392
|
+
userProfileService = inject(UserProfileService);
|
|
13393
|
+
transloco = inject(TranslocoService);
|
|
13394
|
+
createInputElement = viewChild("avatarInput", ...(ngDevMode ? [{ debugName: "createInputElement" }] : []));
|
|
13395
|
+
dataKeys = ["fullName", "mail", "jobTitle", "group", "organisation", "location"];
|
|
13396
|
+
initials = computed(() => {
|
|
13397
|
+
const fullName = this.userProfile()?.data?.fullName;
|
|
13398
|
+
if (!fullName)
|
|
13399
|
+
return undefined;
|
|
13400
|
+
return fullName
|
|
13401
|
+
.split(" ")
|
|
13402
|
+
.map((word) => word[0].toUpperCase())
|
|
13403
|
+
.join("");
|
|
13404
|
+
}, ...(ngDevMode ? [{ debugName: "initials" }] : []));
|
|
13405
|
+
propertyToEdit = signal(undefined, ...(ngDevMode ? [{ debugName: "propertyToEdit" }] : []));
|
|
13406
|
+
value = model(undefined, ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
13407
|
+
currentLanguage = model(...(ngDevMode ? [undefined, { debugName: "currentLanguage" }] : []));
|
|
13408
|
+
AllLanguages = [
|
|
13409
|
+
{ code: "en", label: "English", icon: FlagEnglishIconComponent },
|
|
13410
|
+
{ code: "fr", label: "Français", icon: FlagFrenchIconComponent }
|
|
13411
|
+
];
|
|
13412
|
+
changingPassword = signal(false, ...(ngDevMode ? [{ debugName: "changingPassword" }] : []));
|
|
13413
|
+
principal = computed(() => this.principalStore.principal?.(), ...(ngDevMode ? [{ debugName: "principal" }] : []));
|
|
13414
|
+
constructor() {
|
|
13415
|
+
this.currentLanguage.set(this.transloco.getActiveLang());
|
|
13416
|
+
}
|
|
13417
|
+
userProfileResource = this.userProfileService.getUserProfile(this.principal);
|
|
13418
|
+
userProfile = linkedSignal(() => {
|
|
13419
|
+
if (this.userProfileResource.hasValue()) {
|
|
13420
|
+
return this.userProfileResource.value();
|
|
13421
|
+
}
|
|
13422
|
+
const { userId: id, email: mail, fullName } = this.principal() || {};
|
|
13423
|
+
if (!id || !mail || !fullName) {
|
|
13424
|
+
return undefined;
|
|
13425
|
+
}
|
|
13426
|
+
return { data: { id, mail, fullName } };
|
|
13427
|
+
}, ...(ngDevMode ? [{ debugName: "userProfile" }] : []));
|
|
13428
|
+
async createUserProfile() {
|
|
13429
|
+
const { userId: id, email: mail, fullName } = this.principal() || {};
|
|
13430
|
+
if (!id) {
|
|
13431
|
+
return;
|
|
13432
|
+
}
|
|
13433
|
+
const response = await createUserProfile({ data: { id, mail, fullName } });
|
|
13434
|
+
if (response) {
|
|
13435
|
+
info("Created user profile", response);
|
|
13436
|
+
this.userProfileResource.set(response);
|
|
13437
|
+
}
|
|
13438
|
+
}
|
|
13439
|
+
/**
|
|
13440
|
+
* On editing a value, we save its former value to set it back in case of error
|
|
13441
|
+
*
|
|
13442
|
+
* @param category data or customData
|
|
13443
|
+
* @param propertyName property name
|
|
13444
|
+
*/
|
|
13445
|
+
onEdit(propertyName) {
|
|
13446
|
+
const data = this.userProfile()?.data;
|
|
13447
|
+
const value = data?.[propertyName];
|
|
13448
|
+
this.value.set(value || "");
|
|
13449
|
+
this.propertyToEdit.set(`${propertyName}`);
|
|
13450
|
+
}
|
|
13451
|
+
/**
|
|
13452
|
+
* On data property deletion, for now we make the property an empty string
|
|
13453
|
+
*
|
|
13454
|
+
* @param propertyName property name
|
|
13455
|
+
*/
|
|
13456
|
+
onDeleteData(propertyName) {
|
|
13457
|
+
this.userProfile.update((profile) => {
|
|
13458
|
+
if (profile?.data) {
|
|
13459
|
+
profile.data[propertyName] = "";
|
|
13460
|
+
}
|
|
13461
|
+
return profile;
|
|
13462
|
+
});
|
|
13463
|
+
this.onSaveData(propertyName);
|
|
13464
|
+
}
|
|
13465
|
+
/**
|
|
13466
|
+
* Saving a data property
|
|
13467
|
+
*
|
|
13468
|
+
* @param propertyName property name
|
|
13469
|
+
*/
|
|
13470
|
+
async onSaveData(propertyName) {
|
|
13471
|
+
// cloning the user profile to avoid changing the signal value before confirming the update
|
|
13472
|
+
const userProfile = JSON.parse(JSON.stringify(this.userProfile()));
|
|
13473
|
+
userProfile.data[propertyName] = this.value();
|
|
13474
|
+
const response = await patchUserProfile(userProfile, "data", propertyName);
|
|
13475
|
+
if (response) {
|
|
13476
|
+
console.log("Updated user profile", response);
|
|
13477
|
+
const newUserProfile = this.userProfile();
|
|
13478
|
+
this.userProfileResource.set({
|
|
13479
|
+
...newUserProfile,
|
|
13480
|
+
...response,
|
|
13481
|
+
data: { ...newUserProfile?.data, ...(response.data || {}) }
|
|
13482
|
+
});
|
|
13483
|
+
}
|
|
13484
|
+
this.value.set(undefined);
|
|
13485
|
+
this.propertyToEdit.set(undefined);
|
|
13486
|
+
}
|
|
13487
|
+
/**
|
|
13488
|
+
* Get the value of a data key
|
|
13489
|
+
*
|
|
13490
|
+
* @param key property key
|
|
13491
|
+
* @returns the value
|
|
13492
|
+
*/
|
|
13493
|
+
getDataValue(key) {
|
|
13494
|
+
const data = this.userProfile()?.data;
|
|
13495
|
+
const value = data?.[key];
|
|
13496
|
+
return value;
|
|
13497
|
+
}
|
|
13498
|
+
/**
|
|
13499
|
+
* TODO: how do we save the picture?
|
|
13500
|
+
*
|
|
13501
|
+
* @param event
|
|
13502
|
+
*/
|
|
13503
|
+
uploadAvatar(event) {
|
|
13504
|
+
const element = event.currentTarget;
|
|
13505
|
+
const fileList = element.files;
|
|
13506
|
+
console.log("fileList", fileList);
|
|
13507
|
+
}
|
|
13508
|
+
/**
|
|
13509
|
+
* Change the app language
|
|
13510
|
+
*/
|
|
13511
|
+
changeLanguage() {
|
|
13512
|
+
const language = this.currentLanguage();
|
|
13513
|
+
if (!language)
|
|
13514
|
+
return;
|
|
13515
|
+
this.userSettingsStore.updateLanguage(language);
|
|
13516
|
+
if (this.transloco.getActiveLang() !== language) {
|
|
13517
|
+
this.transloco.setActiveLang(language);
|
|
13518
|
+
}
|
|
13519
|
+
}
|
|
13520
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13521
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", 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" }, providers: [provideTranslocoScope("user-profile", "login")], viewQueries: [{ propertyName: "createInputElement", first: true, predicate: ["avatarInput"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (userProfileResource.hasValue()) {\n @let profile = userProfile();\n <div class=\"flex flex-col gap-2 p-4\">\n <div class=\"flex mb-4\">\n <!-- AVATAR -->\n <Avatar\n class=\"bg-accent text-accent-foreground hover:bg-accent/80 hover:text-accent-foreground/80 cursor-pointer size-14\"\n (click)=\"avatarInput.click()\">\n @if (profile?.data?.profilePhoto) {\n <AvatarImage [src]=\"profile?.data?.profilePhoto!\" width=\"44\" height=\"44\" alt=\"avatar\" />\n }\n <AvatarFallback class=\"text-lg\">\n @if (initials()) {\n <span>{{ initials() }}</span>\n }\n @else {\n <UserIcon class=\"size-7 p-1\" />\n }\n </AvatarFallback>\n </Avatar>\n <div class=\"grow\"></div>\n <div class=\"flex flex-col gap-4\">\n <!-- LANGUAGE -->\n <select\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\"\n [(ngModel)]=\"currentLanguage\" (change)=\"changeLanguage()\">\n @for (lang of AllLanguages; track lang.code) {\n <option [value]=\"lang.code\">\n {{ lang.label }}\n </option>\n }\n </select>\n <!-- CHANGE PASSWORD -->\n @if (principal().editablePartition) {\n <button [disabled]=\"changingPassword()\" (click)=\"changingPassword.set(true)\">\n {{ \"login.changePassword\" | transloco }}\n </button>\n }\n </div>\n </div>\n @if (changingPassword()) {\n <ChangePassword\n [redirectAfterSuccess]=\"false\"\n (cancel)=\"changingPassword.set(false)\"\n (success)=\"changingPassword.set(false)\" />\n }\n @else {\n @for (key of dataKeys; track key) {\n <div>\n <p>{{ `userProfile.data.${key}` | transloco}}</p>\n <div class=\"flex flex-row group\">\n <div class=\"grow\" [class.text-muted-foreground]=\"!getDataValue(key)\">\n @if (propertyToEdit() === key) {\n <input id=\"user-profile-{{key}}\" type=\"text\" [(ngModel)]=\"value\" (keydown.enter)=\"onSaveData(key)\" />\n } @else {\n {{ getDataValue(key) || ('userProfile.notDefined' | transloco) }}\n }\n </div>\n @if (propertyToEdit() === key) {\n <button variant=\"ghost\" size=\"icon\" class=\"mx-2 cursor-pointer\"\n title=\"{{ 'userProfile.editProperty' | transloco }}\" [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\n (click)=\"onSaveData(key)\">\n <i class=\"fa-fw fas fa-save\"></i>\n </button>\n <button variant=\"ghost\" size=\"icon\" class=\"cursor-pointer\" title=\"{{ 'userProfile.editProperty' | transloco }}\"\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\" (click)=\"propertyToEdit.set(undefined)\">\n <UndoIcon />\n </button>\n } @else {\n <button variant=\"ghost\" size=\"icon\" class=\"invisible group-hover:visible mx-2 cursor-pointer\"\n title=\"{{ 'userProfile.editProperty' | transloco }}\" [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\n (click)=\"onEdit(key)\">\n <EditIcon />\n </button>\n <button variant=\"ghost\" size=\"icon\" class=\"text-destructive invisible group-hover:visible cursor-pointer\"\n title=\"{{ 'userProfile.deleteProperty' | transloco }}\"\n [attr.aria-label]=\"'userProfile.deleteProperty' | transloco\" (click)=\"onDeleteData(key)\">\n <TrashIcon />\n </button>\n }\n </div>\n </div>\n }\n }\n </div>\n}\n@else if (userProfileResource.isLoading()) {\n <span>Loading...</span>\n}\n@else if (userProfileResource.error()) {\n @if(principal().isAdministrator) {\n <div class=\"p-4\">\n <p>Could not load user profile: </p>\n <p>{{ userProfileResource.error()?.message }}</p>\n </div>\n <button (click)=\"createUserProfile()\">Create Profile</button>\n }\n @else {\n <p>Please contact an administrator to create your user profile.</p>\n }\n}\n\n<!-- AVATAR UPLOAD -->\n<input #avatarInput class=\"hidden\" type=\"file\" accept=\"image/*\" (change)=\"uploadAvatar($event)\" />", 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: "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\"]", inputs: ["class", "variant", "decoration"] }, { 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: AvatarComponent, selector: "avatar, Avatar", inputs: ["class"] }, { kind: "component", type: AvatarFallbackComponent, selector: "avatar-fallback, avatarfallback, AvatarFallback", inputs: ["class"] }, { 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,a[role=\"button\"]", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: ChangePasswordComponent, selector: "change-password, ChangePassword, changepassword", inputs: ["username", "alert", "redirectAfterSuccess", "currentPassword", "newPassword", "confirmPassword"], outputs: ["success", "cancel", "currentPasswordChange", "newPasswordChange", "confirmPasswordChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
13522
|
+
}
|
|
13523
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileFormComponent, decorators: [{
|
|
13524
|
+
type: Component,
|
|
13525
|
+
args: [{ selector: "user-profile-form, UserProfileForm, userprofileform", standalone: true, imports: [
|
|
13526
|
+
FormsModule,
|
|
13527
|
+
RouterModule,
|
|
13528
|
+
TranslocoPipe,
|
|
13529
|
+
InputComponent,
|
|
13530
|
+
TrashIcon,
|
|
13531
|
+
EditIcon,
|
|
13532
|
+
UndoIcon,
|
|
13533
|
+
AvatarComponent,
|
|
13534
|
+
AvatarFallbackComponent,
|
|
13535
|
+
UserIcon,
|
|
13536
|
+
AvatarImageComponent,
|
|
13537
|
+
ButtonComponent,
|
|
13538
|
+
ChangePasswordComponent
|
|
13539
|
+
], providers: [provideTranslocoScope("user-profile", "login")], template: "@if (userProfileResource.hasValue()) {\n @let profile = userProfile();\n <div class=\"flex flex-col gap-2 p-4\">\n <div class=\"flex mb-4\">\n <!-- AVATAR -->\n <Avatar\n class=\"bg-accent text-accent-foreground hover:bg-accent/80 hover:text-accent-foreground/80 cursor-pointer size-14\"\n (click)=\"avatarInput.click()\">\n @if (profile?.data?.profilePhoto) {\n <AvatarImage [src]=\"profile?.data?.profilePhoto!\" width=\"44\" height=\"44\" alt=\"avatar\" />\n }\n <AvatarFallback class=\"text-lg\">\n @if (initials()) {\n <span>{{ initials() }}</span>\n }\n @else {\n <UserIcon class=\"size-7 p-1\" />\n }\n </AvatarFallback>\n </Avatar>\n <div class=\"grow\"></div>\n <div class=\"flex flex-col gap-4\">\n <!-- LANGUAGE -->\n <select\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\"\n [(ngModel)]=\"currentLanguage\" (change)=\"changeLanguage()\">\n @for (lang of AllLanguages; track lang.code) {\n <option [value]=\"lang.code\">\n {{ lang.label }}\n </option>\n }\n </select>\n <!-- CHANGE PASSWORD -->\n @if (principal().editablePartition) {\n <button [disabled]=\"changingPassword()\" (click)=\"changingPassword.set(true)\">\n {{ \"login.changePassword\" | transloco }}\n </button>\n }\n </div>\n </div>\n @if (changingPassword()) {\n <ChangePassword\n [redirectAfterSuccess]=\"false\"\n (cancel)=\"changingPassword.set(false)\"\n (success)=\"changingPassword.set(false)\" />\n }\n @else {\n @for (key of dataKeys; track key) {\n <div>\n <p>{{ `userProfile.data.${key}` | transloco}}</p>\n <div class=\"flex flex-row group\">\n <div class=\"grow\" [class.text-muted-foreground]=\"!getDataValue(key)\">\n @if (propertyToEdit() === key) {\n <input id=\"user-profile-{{key}}\" type=\"text\" [(ngModel)]=\"value\" (keydown.enter)=\"onSaveData(key)\" />\n } @else {\n {{ getDataValue(key) || ('userProfile.notDefined' | transloco) }}\n }\n </div>\n @if (propertyToEdit() === key) {\n <button variant=\"ghost\" size=\"icon\" class=\"mx-2 cursor-pointer\"\n title=\"{{ 'userProfile.editProperty' | transloco }}\" [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\n (click)=\"onSaveData(key)\">\n <i class=\"fa-fw fas fa-save\"></i>\n </button>\n <button variant=\"ghost\" size=\"icon\" class=\"cursor-pointer\" title=\"{{ 'userProfile.editProperty' | transloco }}\"\n [attr.aria-label]=\"'userProfile.editProperty' | transloco\" (click)=\"propertyToEdit.set(undefined)\">\n <UndoIcon />\n </button>\n } @else {\n <button variant=\"ghost\" size=\"icon\" class=\"invisible group-hover:visible mx-2 cursor-pointer\"\n title=\"{{ 'userProfile.editProperty' | transloco }}\" [attr.aria-label]=\"'userProfile.editProperty' | transloco\"\n (click)=\"onEdit(key)\">\n <EditIcon />\n </button>\n <button variant=\"ghost\" size=\"icon\" class=\"text-destructive invisible group-hover:visible cursor-pointer\"\n title=\"{{ 'userProfile.deleteProperty' | transloco }}\"\n [attr.aria-label]=\"'userProfile.deleteProperty' | transloco\" (click)=\"onDeleteData(key)\">\n <TrashIcon />\n </button>\n }\n </div>\n </div>\n }\n }\n </div>\n}\n@else if (userProfileResource.isLoading()) {\n <span>Loading...</span>\n}\n@else if (userProfileResource.error()) {\n @if(principal().isAdministrator) {\n <div class=\"p-4\">\n <p>Could not load user profile: </p>\n <p>{{ userProfileResource.error()?.message }}</p>\n </div>\n <button (click)=\"createUserProfile()\">Create Profile</button>\n }\n @else {\n <p>Please contact an administrator to create your user profile.</p>\n }\n}\n\n<!-- AVATAR UPLOAD -->\n<input #avatarInput class=\"hidden\" type=\"file\" accept=\"image/*\" (change)=\"uploadAvatar($event)\" />" }]
|
|
13540
|
+
}], ctorParameters: () => [], propDecorators: { createInputElement: [{ type: i0.ViewChild, args: ["avatarInput", { isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], currentLanguage: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentLanguage", required: false }] }, { type: i0.Output, args: ["currentLanguageChange"] }] } });
|
|
13541
|
+
|
|
13542
|
+
class UserProfileDialog {
|
|
13543
|
+
dialog = viewChild(DialogComponent, ...(ngDevMode ? [{ debugName: "dialog" }] : []));
|
|
13544
|
+
open() {
|
|
13545
|
+
this.dialog()?.showModal();
|
|
13546
|
+
}
|
|
13547
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13548
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.16", type: UserProfileDialog, isStandalone: true, selector: "user-profile-dialog, userprofiledialog, UserProfileDialog", viewQueries: [{ propertyName: "dialog", first: true, predicate: DialogComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
13549
|
+
<dialog #dialog>
|
|
13550
|
+
<DialogContent class="max-h-11/12 overflow-auto">
|
|
13551
|
+
<DialogHeader>
|
|
13552
|
+
<DialogTitle>User Profile</DialogTitle>
|
|
13553
|
+
</DialogHeader>
|
|
13554
|
+
|
|
13555
|
+
<user-profile-form />
|
|
13556
|
+
|
|
13557
|
+
</DialogContent>
|
|
13558
|
+
</dialog>
|
|
13559
|
+
`, 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"] }] });
|
|
13560
|
+
}
|
|
13561
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: UserProfileDialog, decorators: [{
|
|
13562
|
+
type: Component,
|
|
13563
|
+
args: [{
|
|
13564
|
+
selector: "user-profile-dialog, userprofiledialog, UserProfileDialog",
|
|
13565
|
+
standalone: true,
|
|
13566
|
+
imports: [
|
|
13567
|
+
DialogComponent,
|
|
13568
|
+
DialogHeaderComponent,
|
|
13569
|
+
DialogContentComponent,
|
|
13570
|
+
UserProfileFormComponent,
|
|
13571
|
+
DialogTitleComponent
|
|
13572
|
+
],
|
|
13573
|
+
template: `
|
|
13574
|
+
<dialog #dialog>
|
|
13575
|
+
<DialogContent class="max-h-11/12 overflow-auto">
|
|
13576
|
+
<DialogHeader>
|
|
13577
|
+
<DialogTitle>User Profile</DialogTitle>
|
|
13578
|
+
</DialogHeader>
|
|
13579
|
+
|
|
13580
|
+
<user-profile-form />
|
|
13581
|
+
|
|
13582
|
+
</DialogContent>
|
|
13583
|
+
</dialog>
|
|
13584
|
+
`
|
|
13585
|
+
}]
|
|
13586
|
+
}], propDecorators: { dialog: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DialogComponent), { isSignal: true }] }] } });
|
|
13587
|
+
|
|
13210
13588
|
/**
|
|
13211
13589
|
* Intercepts HTTP requests to add audit information if the request URL includes the API path.
|
|
13212
13590
|
*
|
|
@@ -13349,16 +13727,23 @@ const errorInterceptorFn = (request, next) => {
|
|
|
13349
13727
|
* @returns An observable that either passes the request through or handles errors with toast notifications.
|
|
13350
13728
|
*/
|
|
13351
13729
|
const toastInterceptorFn = (request, next) => {
|
|
13352
|
-
if (request.url.includes(
|
|
13730
|
+
if (request.url.includes("api/v1/audit.notify")) {
|
|
13353
13731
|
return next(request);
|
|
13354
13732
|
}
|
|
13355
|
-
return next(request).pipe(catchError$1(err => {
|
|
13356
|
-
const { status, statusText, error } = err;
|
|
13733
|
+
return next(request).pipe(catchError$1((err) => {
|
|
13734
|
+
const { status, statusText, error, url } = err;
|
|
13357
13735
|
if ([400, 403, 500, 503].includes(status)) {
|
|
13358
|
-
|
|
13359
|
-
|
|
13736
|
+
// Avoid showing error toasts for preview requests
|
|
13737
|
+
if (url.includes("api/v1/preview") === false) {
|
|
13738
|
+
const { errorMessage = err.statusText, errorCodeText = `Error ${status}` } = error;
|
|
13739
|
+
notify.error(statusText, {
|
|
13740
|
+
description: `${errorCodeText}: ${errorMessage}`,
|
|
13741
|
+
closeButton: true,
|
|
13742
|
+
duration: 5000
|
|
13743
|
+
});
|
|
13744
|
+
}
|
|
13360
13745
|
}
|
|
13361
|
-
return
|
|
13746
|
+
return throwError(() => err);
|
|
13362
13747
|
}));
|
|
13363
13748
|
};
|
|
13364
13749
|
|
|
@@ -13382,5 +13767,5 @@ const queryNameResolver = () => {
|
|
|
13382
13767
|
* Generated bundle index. Do not edit.
|
|
13383
13768
|
*/
|
|
13384
13769
|
|
|
13385
|
-
export { AGGREGATIONS_NAMES, AGGREGATIONS_NAMES_PRESET_DEFAULT, APP_FEATURES, AdvancedSearchComponent, AggregationComponent, AggregationsService, AggregationsStore, Alert, AlertDialog, AlertsComponent, AppService, AppStore, ApplicationService, ApplicationStore, 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, PasswordExpiryGuard, 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, SelectArticleOnClickDirective, SelectionHistoryService, SelectionService, SelectionStore, ShowBookmarkDirective, SignInComponent, SortSelectorComponent, SourceComponent, SourceIconPipe, SponsoredResultsComponent, SyslangPipe, THEMES, TextChunkService, ThemeProviderDirective, ThemeSelectorComponent, ThemeStore, ThemeToggleComponent, TranslocoDateImpurePipe, UserSettingsStore, applyThemeToNativeElement, auditInterceptorFn, authInterceptorFn, bodyInterceptorFn, buildQuery, debouncedSignal, errorInterceptorFn, getCurrentPath, getCurrentQueryName, getQueryNameFromRoute, processCssVars, queryNameResolver, signIn, themeColorNameToCssVariable, themeColorsToCssVariables, toastInterceptorFn, withAggregationsFeatures, withAlertsFeatures,
|
|
13770
|
+
export { AGGREGATIONS_NAMES, AGGREGATIONS_NAMES_PRESET_DEFAULT, APP_FEATURES, AdvancedSearchComponent, AggregationComponent, AggregationsService, AggregationsStore, Alert, AlertDialog, AlertsComponent, AppService, AppStore, ApplicationService, ApplicationStore, 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, PasswordExpiryGuard, 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, SelectArticleOnClickDirective, SelectionHistoryService, SelectionService, SelectionStore, ShowBookmarkDirective, SignInComponent, SortSelectorComponent, SourceComponent, SourceIconPipe, SponsoredResultsComponent, SyslangPipe, THEMES, TextChunkService, ThemeProviderDirective, ThemeSelectorComponent, ThemeStore, ThemeToggleComponent, TranslocoDateImpurePipe, UserProfileDialog, UserProfileFormComponent, UserProfileService, UserSettingsStore, applyThemeToNativeElement, auditInterceptorFn, authInterceptorFn, bodyInterceptorFn, buildQuery, debouncedSignal, errorInterceptorFn, getCurrentPath, getCurrentQueryName, getQueryNameFromRoute, 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 };
|
|
13386
13771
|
//# sourceMappingURL=sinequa-atomic-angular.mjs.map
|