@sinequa/atomic-angular 0.1.46 → 0.1.51
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/filters/i18n/en.json +14 -14
- package/features/filters/i18n/fr.json +14 -14
- package/fesm2022/sinequa-atomic-angular.mjs +1241 -762
- package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
- package/index.d.ts +3363 -3380
- package/package.json +14 -14
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, output, Component, Injectable, inject, HostBinding, InjectionToken, computed, signal, effect, assertInInjectionContext, runInInjectionContext, Injector,
|
|
3
|
-
import { DropdownComponent, DropdownContentComponent, ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, BadgeComponent, DialogComponent, DialogHeaderComponent, DialogTitleComponent, DialogContentComponent, DialogFooterComponent, ListItemComponent, InputComponent, cn, SwitchComponent, DialogService, TabsComponent, TabComponent,
|
|
2
|
+
import { input, output, Component, Injectable, inject, HostBinding, InjectionToken, computed, signal, effect, assertInInjectionContext, runInInjectionContext, Injector, Inject, EventEmitter, viewChild, ElementRef, afterNextRender, untracked, Pipe, ChangeDetectorRef, DestroyRef, LOCALE_ID, Optional, linkedSignal, model, Directive, Renderer2, HostListener, contentChildren, contentChild, TemplateRef, booleanAttribute, afterEveryRender, Output, viewChildren, ViewContainerRef, resource } from '@angular/core';
|
|
3
|
+
import { DropdownComponent, DropdownContentComponent, ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, BadgeComponent, DialogComponent, DialogHeaderComponent, DialogTitleComponent, DialogContentComponent, DialogFooterComponent, ListItemComponent, InputComponent, cn, SwitchComponent, SelectOptionDirective, DialogService, TabsComponent, TabComponent, SearchIcon, XMarkIConComponent, PopoverContentComponent, HorizontalDividerComponent, PopoverComponent, ChevronRightIconComponent, LoadingCircleIconComponent, CircleCheckIconComponent, CardComponent, CardHeaderComponent, CardContentComponent, CardFooterComponent, VerticalDividerComponent } from '@sinequa/ui';
|
|
4
4
|
import { BehaviorSubject, Subscription, catchError, EMPTY, firstValueFrom, map, Subject, of, tap, throwError, from, forkJoin, filter, shareReplay, fromEvent, switchMap, debounceTime } from 'rxjs';
|
|
5
5
|
import { ActivatedRoute, Router, NavigationEnd, RouterLink, RouterModule } from '@angular/router';
|
|
6
6
|
import { signalStore, signalStoreFeature, withState, withMethods, patchState, getState, withComputed } from '@ngrx/signals';
|
|
7
7
|
import { withDevtools } from '@angular-architects/ngrx-toolkit';
|
|
8
|
-
import { globalConfig, EngineType, getQueryParamsFromUrl, warn, error, buildPathsAndLevels, info, escapeExpr, notify, isAuthenticated, patchUserSettings, deleteUserSettings, fetchUserSettings, fetchSuggest, isObject, Audit, login, setGlobalConfig, addConcepts, queryParamsFromUrl, getMetadata, bisect, isNotInputEvent,
|
|
8
|
+
import { globalConfig, EngineType, getQueryParamsFromUrl, warn, error, buildPathsAndLevels, info, escapeExpr, notify, isAuthenticated, patchUserSettings, deleteUserSettings, fetchUserSettings, fetchSuggest, isObject, Audit, login, setGlobalConfig, addConcepts, queryParamsFromUrl, sysLang, getMetadata, bisect, isNotInputEvent, fetchSponsoredLinks, isJsonable, addAuditAdditionalInfo, getToken, setToken, logout, getRelativeDate, labels, fetchLabels, guid, suggestionsToTreeAggregationNodes, fetchSuggestField, translateAggregationToDateOptions, fetchSimilarDocuments } from '@sinequa/atomic';
|
|
9
9
|
import { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';
|
|
10
10
|
import { Title, DomSanitizer } from '@angular/platform-browser';
|
|
11
|
-
import { Location, DatePipe, DATE_PIPE_DEFAULT_TIMEZONE, DATE_PIPE_DEFAULT_OPTIONS, NgTemplateOutlet, NgStyle, NgClass, NgComponentOutlet
|
|
11
|
+
import { Location, DatePipe, DATE_PIPE_DEFAULT_TIMEZONE, DATE_PIPE_DEFAULT_OPTIONS, NgTemplateOutlet, NgStyle, NgClass, NgComponentOutlet } from '@angular/common';
|
|
12
12
|
import { TranslocoPipe, provideTranslocoScope, TranslocoService } from '@jsverse/transloco';
|
|
13
|
+
import highlightWords from 'highlight-words';
|
|
14
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
13
15
|
import { cva } from 'class-variance-authority';
|
|
14
16
|
import * as i1 from '@angular/forms';
|
|
15
17
|
import { FormsModule, ReactiveFormsModule, FormGroup, FormControl, NonNullableFormBuilder } from '@angular/forms';
|
|
16
|
-
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
|
17
|
-
import highlightWords from 'highlight-words';
|
|
18
18
|
import { catchError as catchError$1 } from 'rxjs/operators';
|
|
19
19
|
import * as i1$1 from '@angular/cdk/drag-drop';
|
|
20
20
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
@@ -25,8 +25,8 @@ import { Overlay } from '@angular/cdk/overlay';
|
|
|
25
25
|
class DropdownListComponent {
|
|
26
26
|
items = input.required(...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
27
27
|
onClick = output();
|
|
28
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
29
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
28
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DropdownListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
30
30
|
@for (item of items(); track $index) {
|
|
31
31
|
<span class="bg-primary text-primary-foreground m-1 inline-flex cursor-default select-none items-center rounded-full px-2 py-1 text-sm font-semibold">
|
|
32
32
|
{{ item.display || item.value }}
|
|
@@ -47,7 +47,7 @@ class DropdownListComponent {
|
|
|
47
47
|
}
|
|
48
48
|
`, isInline: true });
|
|
49
49
|
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DropdownListComponent, decorators: [{
|
|
51
51
|
type: Component,
|
|
52
52
|
args: [{
|
|
53
53
|
selector: 'dropdown-list, DropdownList',
|
|
@@ -85,8 +85,8 @@ class DropdownInputComponent {
|
|
|
85
85
|
onKeyUp = output(); // emits the input value
|
|
86
86
|
removeItem = output();
|
|
87
87
|
addItem = output();
|
|
88
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
89
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
88
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DropdownInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
89
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
90
90
|
@if (label()) {
|
|
91
91
|
<p class="font-semibold">{{ label() }}</p>
|
|
92
92
|
}
|
|
@@ -120,7 +120,7 @@ class DropdownInputComponent {
|
|
|
120
120
|
</Dropdown>
|
|
121
121
|
`, 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"] }] });
|
|
122
122
|
}
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DropdownInputComponent, decorators: [{
|
|
124
124
|
type: Component,
|
|
125
125
|
args: [{
|
|
126
126
|
selector: 'dropdown-input, DropdownInput',
|
|
@@ -170,10 +170,10 @@ class BackdropService {
|
|
|
170
170
|
hide() {
|
|
171
171
|
this.isVisible.next(false);
|
|
172
172
|
}
|
|
173
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
174
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
173
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BackdropService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
174
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BackdropService, providedIn: 'root' });
|
|
175
175
|
}
|
|
176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
176
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BackdropService, decorators: [{
|
|
177
177
|
type: Injectable,
|
|
178
178
|
args: [{
|
|
179
179
|
providedIn: 'root'
|
|
@@ -190,13 +190,13 @@ class BackdropComponent {
|
|
|
190
190
|
ngOnDestroy() {
|
|
191
191
|
this.sub.unsubscribe();
|
|
192
192
|
}
|
|
193
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
194
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
193
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BackdropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
194
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.7", 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"] });
|
|
195
195
|
}
|
|
196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BackdropComponent, decorators: [{
|
|
197
197
|
type: Component,
|
|
198
|
-
args: [{ selector: '
|
|
199
|
-
class: 'z-[var(--z-backdrop)] bg-backdrop
|
|
198
|
+
args: [{ selector: 'Backdrop, backdrop', standalone: true, imports: [], template: ``, host: {
|
|
199
|
+
class: 'z-[var(--z-backdrop)] bg-backdrop fixed bottom-0 left-0 right-0 top-0 hidden select-none'
|
|
200
200
|
}, 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"] }]
|
|
201
201
|
}], ctorParameters: () => [], propDecorators: { backdropVisible: [{
|
|
202
202
|
type: HostBinding,
|
|
@@ -297,10 +297,10 @@ class AppService {
|
|
|
297
297
|
return EMPTY;
|
|
298
298
|
}));
|
|
299
299
|
}
|
|
300
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
301
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
300
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
301
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AppService, providedIn: 'root' });
|
|
302
302
|
}
|
|
303
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AppService, decorators: [{
|
|
304
304
|
type: Injectable,
|
|
305
305
|
args: [{
|
|
306
306
|
providedIn: 'root'
|
|
@@ -494,7 +494,7 @@ function withAppFeatures() {
|
|
|
494
494
|
const schema = state.indexes?.['_']?.columns;
|
|
495
495
|
const col = schema[column];
|
|
496
496
|
if (col) {
|
|
497
|
-
return col.aliases?.[0]
|
|
497
|
+
return col.aliases?.[0] ? `${col.aliases[0].charAt(0).toLowerCase()}${col.aliases[0].slice(1)}` : column;
|
|
498
498
|
}
|
|
499
499
|
return column;
|
|
500
500
|
},
|
|
@@ -765,7 +765,7 @@ function withExtractsFeatures() {
|
|
|
765
765
|
* @returns The extracts associated with the given ID.
|
|
766
766
|
*/
|
|
767
767
|
getExtracts(id) {
|
|
768
|
-
return store.extracts().get(id);
|
|
768
|
+
return store.extracts().get(id) || [];
|
|
769
769
|
}
|
|
770
770
|
})));
|
|
771
771
|
}
|
|
@@ -798,10 +798,10 @@ class PrincipalService {
|
|
|
798
798
|
return EMPTY;
|
|
799
799
|
}));
|
|
800
800
|
}
|
|
801
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
802
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
801
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: PrincipalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
802
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: PrincipalService, providedIn: 'root' });
|
|
803
803
|
}
|
|
804
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
804
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: PrincipalService, decorators: [{
|
|
805
805
|
type: Injectable,
|
|
806
806
|
args: [{
|
|
807
807
|
providedIn: 'root'
|
|
@@ -1230,10 +1230,10 @@ class QueryService {
|
|
|
1230
1230
|
};
|
|
1231
1231
|
this.queryParamsStore.patch({ page }, audit);
|
|
1232
1232
|
}
|
|
1233
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1234
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
1233
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: QueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1234
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: QueryService, providedIn: 'root' });
|
|
1235
1235
|
}
|
|
1236
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: QueryService, decorators: [{
|
|
1237
1237
|
type: Injectable,
|
|
1238
1238
|
args: [{
|
|
1239
1239
|
providedIn: 'root'
|
|
@@ -1480,10 +1480,10 @@ class AggregationsService {
|
|
|
1480
1480
|
}
|
|
1481
1481
|
return node;
|
|
1482
1482
|
}
|
|
1483
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1484
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
1483
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AggregationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1484
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AggregationsService, providedIn: 'root' });
|
|
1485
1485
|
}
|
|
1486
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
1486
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AggregationsService, decorators: [{
|
|
1487
1487
|
type: Injectable,
|
|
1488
1488
|
args: [{
|
|
1489
1489
|
providedIn: 'root'
|
|
@@ -1890,6 +1890,25 @@ function withBookmarkFeatures() {
|
|
|
1890
1890
|
})));
|
|
1891
1891
|
}
|
|
1892
1892
|
|
|
1893
|
+
function withDarkModeFeatures() {
|
|
1894
|
+
return signalStoreFeature(withState({ useDarkMode: false }), withMethods(store => ({
|
|
1895
|
+
async setDarkMode(useDarkMode) {
|
|
1896
|
+
const currentDarkMode = store.useDarkMode();
|
|
1897
|
+
if (currentDarkMode === useDarkMode)
|
|
1898
|
+
return;
|
|
1899
|
+
await patchUserSettings({ useDarkMode });
|
|
1900
|
+
patchState(store, state => {
|
|
1901
|
+
return { ...state, useDarkMode };
|
|
1902
|
+
});
|
|
1903
|
+
}
|
|
1904
|
+
})), withMethods(store => ({
|
|
1905
|
+
async toggleDarkMode() {
|
|
1906
|
+
const currentDarkMode = store.useDarkMode();
|
|
1907
|
+
await store.setDarkMode(!currentDarkMode);
|
|
1908
|
+
}
|
|
1909
|
+
})));
|
|
1910
|
+
}
|
|
1911
|
+
|
|
1893
1912
|
function withRecentSearchesFeatures() {
|
|
1894
1913
|
return signalStoreFeature(withState({ recentSearches: [] }), withMethods(store => ({
|
|
1895
1914
|
/**
|
|
@@ -2078,7 +2097,7 @@ function withUserSettingsFeatures() {
|
|
|
2078
2097
|
})));
|
|
2079
2098
|
}
|
|
2080
2099
|
|
|
2081
|
-
const UserSettingsStore = signalStore({ providedIn: 'root' }, withDevtools('UserSettings'), withBookmarkFeatures(), withRecentSearchesFeatures(), withSavedSearchesFeatures(), withBasketsFeatures(), withAssistantFeatures(), withUserSettingsFeatures(), withAlertsFeatures());
|
|
2100
|
+
const UserSettingsStore = signalStore({ providedIn: 'root' }, withDevtools('UserSettings'), withBookmarkFeatures(), withRecentSearchesFeatures(), withSavedSearchesFeatures(), withBasketsFeatures(), withAssistantFeatures(), withUserSettingsFeatures(), withAlertsFeatures(), withDarkModeFeatures());
|
|
2082
2101
|
|
|
2083
2102
|
const ROUTE_COMPONENTS = new InjectionToken('ROUTE_COMPONENTS', { factory: () => [] });
|
|
2084
2103
|
class ApplicationService {
|
|
@@ -2319,10 +2338,10 @@ class ApplicationService {
|
|
|
2319
2338
|
document.documentElement.style.setProperty('--logo-large', `url('${light.large}')`);
|
|
2320
2339
|
}
|
|
2321
2340
|
}
|
|
2322
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2323
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
2341
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ApplicationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2342
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ApplicationService, providedIn: 'root' });
|
|
2324
2343
|
}
|
|
2325
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ApplicationService, decorators: [{
|
|
2326
2345
|
type: Injectable,
|
|
2327
2346
|
args: [{
|
|
2328
2347
|
providedIn: 'root'
|
|
@@ -2434,10 +2453,10 @@ class AuditService {
|
|
|
2434
2453
|
}
|
|
2435
2454
|
});
|
|
2436
2455
|
}
|
|
2437
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2438
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
2456
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AuditService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2457
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AuditService, providedIn: 'root' });
|
|
2439
2458
|
}
|
|
2440
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2459
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AuditService, decorators: [{
|
|
2441
2460
|
type: Injectable,
|
|
2442
2461
|
args: [{
|
|
2443
2462
|
providedIn: 'root'
|
|
@@ -2508,10 +2527,10 @@ class AutocompleteService {
|
|
|
2508
2527
|
}
|
|
2509
2528
|
return items;
|
|
2510
2529
|
}
|
|
2511
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2512
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
2530
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AutocompleteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2531
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AutocompleteService, providedIn: 'root' });
|
|
2513
2532
|
}
|
|
2514
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2533
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AutocompleteService, decorators: [{
|
|
2515
2534
|
type: Injectable,
|
|
2516
2535
|
args: [{
|
|
2517
2536
|
providedIn: 'root'
|
|
@@ -2549,10 +2568,10 @@ class JsonMethodPluginService {
|
|
|
2549
2568
|
...options
|
|
2550
2569
|
});
|
|
2551
2570
|
}
|
|
2552
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2553
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
2571
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: JsonMethodPluginService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2572
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: JsonMethodPluginService, providedIn: 'root' });
|
|
2554
2573
|
}
|
|
2555
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2574
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: JsonMethodPluginService, decorators: [{
|
|
2556
2575
|
type: Injectable,
|
|
2557
2576
|
args: [{
|
|
2558
2577
|
providedIn: 'root'
|
|
@@ -2584,10 +2603,10 @@ class NavigationService {
|
|
|
2584
2603
|
this.auditService.notifyRouteChange(url);
|
|
2585
2604
|
}
|
|
2586
2605
|
}), tap(event => (this.urlAfterNavigation = event.url)), shareReplay(1));
|
|
2587
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2588
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
2606
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NavigationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2607
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NavigationService, providedIn: 'root' });
|
|
2589
2608
|
}
|
|
2590
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2609
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NavigationService, decorators: [{
|
|
2591
2610
|
type: Injectable,
|
|
2592
2611
|
args: [{
|
|
2593
2612
|
providedIn: 'root'
|
|
@@ -2645,7 +2664,8 @@ class PreviewService {
|
|
|
2645
2664
|
sanitizer = inject(DomSanitizer);
|
|
2646
2665
|
queryService = inject(QueryService);
|
|
2647
2666
|
auditService = inject(AuditService);
|
|
2648
|
-
events =
|
|
2667
|
+
events = signal('idle', ...(ngDevMode ? [{ debugName: "events" }] : []));
|
|
2668
|
+
DOMContentLoaded = signal(false, ...(ngDevMode ? [{ debugName: "DOMContentLoaded" }] : []));
|
|
2649
2669
|
// ! worker
|
|
2650
2670
|
onMessage = new Subject();
|
|
2651
2671
|
worker;
|
|
@@ -2687,12 +2707,13 @@ class PreviewService {
|
|
|
2687
2707
|
const { app } = globalConfig;
|
|
2688
2708
|
// when the iframe is ready, we can send the init message
|
|
2689
2709
|
if (message.type === 'ready') {
|
|
2710
|
+
this.DOMContentLoaded.set(true);
|
|
2690
2711
|
// Initialize the preview iframe with the app name and highlights
|
|
2691
2712
|
// app name is used to intialize the webworker
|
|
2692
2713
|
this.sendMessage({ action: 'init', highlights: this.highlights, appname: app });
|
|
2693
2714
|
if (this.previewData) {
|
|
2694
2715
|
const { id } = getState(this.selectionStore);
|
|
2695
|
-
this.events.
|
|
2716
|
+
this.events.set('fetching');
|
|
2696
2717
|
this.retrieveHtmlContent(id, this.highlightCategory, this.previewData);
|
|
2697
2718
|
}
|
|
2698
2719
|
}
|
|
@@ -2705,7 +2726,7 @@ class PreviewService {
|
|
|
2705
2726
|
if (this.previewData) {
|
|
2706
2727
|
const extracts = this.fetchExtracts(id, message.data, this.previewData);
|
|
2707
2728
|
this.applicationStore.updateExtracts(this.previewData?.record.id || '', extracts);
|
|
2708
|
-
this.events.
|
|
2729
|
+
this.events.set('fetched');
|
|
2709
2730
|
}
|
|
2710
2731
|
}
|
|
2711
2732
|
}
|
|
@@ -2714,7 +2735,7 @@ class PreviewService {
|
|
|
2714
2735
|
if (message.type === 'get-html-results-webworker') {
|
|
2715
2736
|
info('get html results with worker');
|
|
2716
2737
|
if (message.data.extracts.length === 0) {
|
|
2717
|
-
this.events.
|
|
2738
|
+
this.events.set('fetched');
|
|
2718
2739
|
this.applicationStore.updateExtracts(this.previewData?.record.id || '', []);
|
|
2719
2740
|
return;
|
|
2720
2741
|
}
|
|
@@ -2723,7 +2744,7 @@ class PreviewService {
|
|
|
2723
2744
|
text: this.sanitizer.bypassSecurityTrustHtml(item.text)
|
|
2724
2745
|
}));
|
|
2725
2746
|
this.applicationStore.updateExtracts(this.previewData?.record.id || '', extracts);
|
|
2726
|
-
this.events.
|
|
2747
|
+
this.events.set('fetched');
|
|
2727
2748
|
}
|
|
2728
2749
|
}
|
|
2729
2750
|
/**
|
|
@@ -2961,10 +2982,10 @@ class PreviewService {
|
|
|
2961
2982
|
// merge the entities with the default highlights without duplicates
|
|
2962
2983
|
this.entities = [...new Set([...this.entities, ...entities])];
|
|
2963
2984
|
}
|
|
2964
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2965
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
2985
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: PreviewService, deps: [{ token: i0.DestroyRef }, { token: HIGHLIGHTS }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2986
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: PreviewService, providedIn: 'root' });
|
|
2966
2987
|
}
|
|
2967
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
2988
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: PreviewService, decorators: [{
|
|
2968
2989
|
type: Injectable,
|
|
2969
2990
|
args: [{
|
|
2970
2991
|
providedIn: 'root'
|
|
@@ -3033,10 +3054,10 @@ class SavedSearchesService {
|
|
|
3033
3054
|
deleteSavedSearch(index) {
|
|
3034
3055
|
this.userSettingsStore.deleteSavedSearch(index);
|
|
3035
3056
|
}
|
|
3036
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3037
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
3057
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SavedSearchesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3058
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SavedSearchesService, providedIn: 'root' });
|
|
3038
3059
|
}
|
|
3039
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
3060
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SavedSearchesService, decorators: [{
|
|
3040
3061
|
type: Injectable,
|
|
3041
3062
|
args: [{
|
|
3042
3063
|
providedIn: 'root'
|
|
@@ -3129,10 +3150,10 @@ class SearchService {
|
|
|
3129
3150
|
}
|
|
3130
3151
|
});
|
|
3131
3152
|
}
|
|
3132
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3133
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
3153
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3154
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchService, providedIn: 'root' });
|
|
3134
3155
|
}
|
|
3135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
3156
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchService, decorators: [{
|
|
3136
3157
|
type: Injectable,
|
|
3137
3158
|
args: [{
|
|
3138
3159
|
providedIn: 'root'
|
|
@@ -3281,10 +3302,10 @@ class SelectionService {
|
|
|
3281
3302
|
const url = this.router.createUrlTree([], { relativeTo: this.route, queryParams }).toString();
|
|
3282
3303
|
this.location.replaceState(url);
|
|
3283
3304
|
}
|
|
3284
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3285
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
3305
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3306
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SelectionService, providedIn: 'root' });
|
|
3286
3307
|
}
|
|
3287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
3308
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SelectionService, decorators: [{
|
|
3288
3309
|
type: Injectable,
|
|
3289
3310
|
args: [{
|
|
3290
3311
|
providedIn: 'root'
|
|
@@ -3368,10 +3389,10 @@ class SelectionHistoryService {
|
|
|
3368
3389
|
this.selectionHistoryEvent.next('back');
|
|
3369
3390
|
return last;
|
|
3370
3391
|
}
|
|
3371
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3372
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
3392
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SelectionHistoryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3393
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SelectionHistoryService, providedIn: 'root' });
|
|
3373
3394
|
}
|
|
3374
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
3395
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SelectionHistoryService, decorators: [{
|
|
3375
3396
|
type: Injectable,
|
|
3376
3397
|
args: [{
|
|
3377
3398
|
providedIn: 'root'
|
|
@@ -3406,10 +3427,10 @@ class TextChunkService {
|
|
|
3406
3427
|
return [];
|
|
3407
3428
|
}));
|
|
3408
3429
|
}
|
|
3409
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3410
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
3430
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: TextChunkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3431
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: TextChunkService, providedIn: 'root' });
|
|
3411
3432
|
}
|
|
3412
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
3433
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: TextChunkService, decorators: [{
|
|
3413
3434
|
type: Injectable,
|
|
3414
3435
|
args: [{
|
|
3415
3436
|
providedIn: 'root'
|
|
@@ -3900,10 +3921,10 @@ class SourceComponent {
|
|
|
3900
3921
|
}
|
|
3901
3922
|
return { iconClass: defaultIconClass };
|
|
3902
3923
|
}, ...(ngDevMode ? [{ debugName: "iconDetails" }] : []));
|
|
3903
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3904
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
3924
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SourceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3925
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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" }] });
|
|
3905
3926
|
}
|
|
3906
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
3927
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SourceComponent, decorators: [{
|
|
3907
3928
|
type: Component,
|
|
3908
3929
|
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" }]
|
|
3909
3930
|
}] });
|
|
@@ -3988,8 +4009,8 @@ class DocumentLocatorComponent {
|
|
|
3988
4009
|
const { filters } = getState(this.queryParamStore);
|
|
3989
4010
|
this.router.navigate([], { queryParams: { f: JSON.stringify(filters) }, queryParamsHandling: 'merge' });
|
|
3990
4011
|
}
|
|
3991
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3992
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
4012
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DocumentLocatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4013
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
3993
4014
|
<!-- Renders all segment hidden to user to compute width -->
|
|
3994
4015
|
<div #shadowRender class="pointer-events-none invisible absolute left-0 top-0 -z-10 flex gap-2">
|
|
3995
4016
|
@for (segment of locationSegments(); track $index) {
|
|
@@ -4007,7 +4028,7 @@ class DocumentLocatorComponent {
|
|
|
4007
4028
|
|
|
4008
4029
|
<div #documentLocator class="flex grow items-center gap-2 overflow-auto">
|
|
4009
4030
|
@for (segment of visibleSegments(); track $index) {
|
|
4010
|
-
<
|
|
4031
|
+
<button decoration="underline" class="text-foreground cursor-pointer whitespace-nowrap p-0" (click)="navigateToSegment($index)">{{ segment }}</button>
|
|
4011
4032
|
|
|
4012
4033
|
@if (!$last) {
|
|
4013
4034
|
<i class="fa fal fa-chevron-right"></i>
|
|
@@ -4020,7 +4041,7 @@ class DocumentLocatorComponent {
|
|
|
4020
4041
|
|
|
4021
4042
|
@if (invisibleSegments().length > 0) {
|
|
4022
4043
|
<menu>
|
|
4023
|
-
<button
|
|
4044
|
+
<button class="h-0 w-full p-2">...</button>
|
|
4024
4045
|
|
|
4025
4046
|
<MenuContent position="bottom">
|
|
4026
4047
|
@for (segment of invisibleSegments(); track $index) {
|
|
@@ -4032,9 +4053,9 @@ class DocumentLocatorComponent {
|
|
|
4032
4053
|
</menu>
|
|
4033
4054
|
}
|
|
4034
4055
|
</div>
|
|
4035
|
-
`, isInline: true, dependencies: [{ kind: "component", type: SourceComponent, selector: "source, Source", inputs: ["collection", "connector"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "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"] }] });
|
|
4056
|
+
`, isInline: true, dependencies: [{ kind: "component", type: SourceComponent, selector: "source, Source", inputs: ["collection", "connector"] }, { kind: "directive", type: ButtonComponent, selector: "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"] }] });
|
|
4036
4057
|
}
|
|
4037
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
4058
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DocumentLocatorComponent, decorators: [{
|
|
4038
4059
|
type: Component,
|
|
4039
4060
|
args: [{
|
|
4040
4061
|
selector: 'document-locator, DocumentLocator',
|
|
@@ -4058,7 +4079,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4058
4079
|
|
|
4059
4080
|
<div #documentLocator class="flex grow items-center gap-2 overflow-auto">
|
|
4060
4081
|
@for (segment of visibleSegments(); track $index) {
|
|
4061
|
-
<
|
|
4082
|
+
<button decoration="underline" class="text-foreground cursor-pointer whitespace-nowrap p-0" (click)="navigateToSegment($index)">{{ segment }}</button>
|
|
4062
4083
|
|
|
4063
4084
|
@if (!$last) {
|
|
4064
4085
|
<i class="fa fal fa-chevron-right"></i>
|
|
@@ -4071,7 +4092,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4071
4092
|
|
|
4072
4093
|
@if (invisibleSegments().length > 0) {
|
|
4073
4094
|
<menu>
|
|
4074
|
-
<button
|
|
4095
|
+
<button class="h-0 w-full p-2">...</button>
|
|
4075
4096
|
|
|
4076
4097
|
<MenuContent position="bottom">
|
|
4077
4098
|
@for (segment of invisibleSegments(); track $index) {
|
|
@@ -4095,8 +4116,8 @@ class ErrorComponent {
|
|
|
4095
4116
|
reload() {
|
|
4096
4117
|
this.router.navigate(['/']).then(() => window.location.reload());
|
|
4097
4118
|
}
|
|
4098
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4099
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
4119
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4120
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.7", type: ErrorComponent, isStandalone: true, selector: "error-component, ErrorComponent", ngImport: i0, template: `
|
|
4100
4121
|
<div class="bg-background text-foreground flex min-h-screen flex-col items-center justify-center">
|
|
4101
4122
|
<svg
|
|
4102
4123
|
class="mb-8 h-20 w-20 text-red-600"
|
|
@@ -4139,7 +4160,7 @@ class ErrorComponent {
|
|
|
4139
4160
|
</div>
|
|
4140
4161
|
`, isInline: true });
|
|
4141
4162
|
}
|
|
4142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
4163
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ErrorComponent, decorators: [{
|
|
4143
4164
|
type: Component,
|
|
4144
4165
|
args: [{
|
|
4145
4166
|
selector: 'error-component, ErrorComponent',
|
|
@@ -4236,8 +4257,8 @@ class LoadingComponent {
|
|
|
4236
4257
|
});
|
|
4237
4258
|
}
|
|
4238
4259
|
}
|
|
4239
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4240
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
4260
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: LoadingComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
4261
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.7", type: LoadingComponent, isStandalone: true, selector: "app-wait", ngImport: i0, template: `
|
|
4241
4262
|
<div class="flex h-[100dvh] w-full items-center justify-center">
|
|
4242
4263
|
<div class="flex flex-col items-center space-y-4">
|
|
4243
4264
|
<span class="loader"></span>
|
|
@@ -4245,7 +4266,7 @@ class LoadingComponent {
|
|
|
4245
4266
|
</div>
|
|
4246
4267
|
`, 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"] });
|
|
4247
4268
|
}
|
|
4248
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
4269
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: LoadingComponent, decorators: [{
|
|
4249
4270
|
type: Component,
|
|
4250
4271
|
args: [{ selector: 'app-wait', standalone: true, imports: [], template: `
|
|
4251
4272
|
<div class="flex h-[100dvh] w-full items-center justify-center">
|
|
@@ -4256,10 +4277,311 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4256
4277
|
`, 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"] }]
|
|
4257
4278
|
}], ctorParameters: () => [{ type: i0.DestroyRef }] });
|
|
4258
4279
|
|
|
4280
|
+
/**
|
|
4281
|
+
* The HighlightWordPipe class is a custom pipe in the Atomic Angular library.
|
|
4282
|
+
* It is used to highlight a specific word within a given text.
|
|
4283
|
+
*
|
|
4284
|
+
* @remarks
|
|
4285
|
+
* This pipe takes in a `value` string, a `word` string to highlight, and an optional `clipBy` number to limit the length of the highlighted text.
|
|
4286
|
+
* It returns an array of `HighlightWords.Chunk` objects representing the highlighted portions of the text.
|
|
4287
|
+
*
|
|
4288
|
+
* @example
|
|
4289
|
+
* ```html
|
|
4290
|
+
* <div [innerHTML]="text | highlightWord:'search':10"></div>
|
|
4291
|
+
* ```
|
|
4292
|
+
*
|
|
4293
|
+
*/
|
|
4294
|
+
class HighlightWordPipe {
|
|
4295
|
+
transform(value, word, clipBy) {
|
|
4296
|
+
const valueNormalized = value.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
4297
|
+
const wordNormalized = word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
4298
|
+
return highlightWords({ text: valueNormalized, query: wordNormalized, clipBy });
|
|
4299
|
+
}
|
|
4300
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: HighlightWordPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4301
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: HighlightWordPipe, isStandalone: true, name: "highlightWord" });
|
|
4302
|
+
}
|
|
4303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: HighlightWordPipe, decorators: [{
|
|
4304
|
+
type: Pipe,
|
|
4305
|
+
args: [{
|
|
4306
|
+
name: 'highlightWord',
|
|
4307
|
+
standalone: true,
|
|
4308
|
+
pure: true
|
|
4309
|
+
}]
|
|
4310
|
+
}] });
|
|
4311
|
+
|
|
4312
|
+
/**
|
|
4313
|
+
* Pipe that transforms a collection of strings into a corresponding icon class.
|
|
4314
|
+
*
|
|
4315
|
+
* This pipe uses the first element of the collection to determine the icon class
|
|
4316
|
+
* based on the source name. If the collection is empty or undefined, it returns
|
|
4317
|
+
* a default icon class.
|
|
4318
|
+
*
|
|
4319
|
+
* @deprecated This pipe is deprecated and will be removed in the future.
|
|
4320
|
+
*
|
|
4321
|
+
* @param collection - An array of strings representing the collection.
|
|
4322
|
+
* @returns A string representing the icon class.
|
|
4323
|
+
*/
|
|
4324
|
+
class SourceIconPipe {
|
|
4325
|
+
appStore = inject(AppStore);
|
|
4326
|
+
transform(collection) {
|
|
4327
|
+
if (collection === undefined || collection.length === 0) {
|
|
4328
|
+
return 'far fa-file';
|
|
4329
|
+
}
|
|
4330
|
+
const name = collection[0].split('/')[1];
|
|
4331
|
+
const sources = this.appStore.sources();
|
|
4332
|
+
// workplace search uses a different format for sources
|
|
4333
|
+
if (Array.isArray(sources)) {
|
|
4334
|
+
return sources.find((source) => source.name === name)?.icon || 'far fa-file';
|
|
4335
|
+
}
|
|
4336
|
+
return 'far fa-file';
|
|
4337
|
+
}
|
|
4338
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SourceIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4339
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: SourceIconPipe, isStandalone: true, name: "sourceIcon" });
|
|
4340
|
+
}
|
|
4341
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SourceIconPipe, decorators: [{
|
|
4342
|
+
type: Pipe,
|
|
4343
|
+
args: [{
|
|
4344
|
+
name: 'sourceIcon',
|
|
4345
|
+
standalone: true,
|
|
4346
|
+
pure: true
|
|
4347
|
+
}]
|
|
4348
|
+
}] });
|
|
4349
|
+
|
|
4350
|
+
class OperatorPipe {
|
|
4351
|
+
transloco = inject(TranslocoService);
|
|
4352
|
+
lastTransformedValue = null;
|
|
4353
|
+
cdr = inject(ChangeDetectorRef);
|
|
4354
|
+
destroyRef = inject(DestroyRef);
|
|
4355
|
+
transform(filter) {
|
|
4356
|
+
this.transloco.langChanges$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(locale => {
|
|
4357
|
+
const transformedValue = this.transformFilter(filter, locale);
|
|
4358
|
+
if (transformedValue !== this.lastTransformedValue) {
|
|
4359
|
+
this.lastTransformedValue = transformedValue;
|
|
4360
|
+
this.cdr.markForCheck();
|
|
4361
|
+
}
|
|
4362
|
+
});
|
|
4363
|
+
return this.lastTransformedValue || this.transformFilter(filter);
|
|
4364
|
+
}
|
|
4365
|
+
transformFilter(filter, locale) {
|
|
4366
|
+
let op = this.transformOperator(filter?.operator);
|
|
4367
|
+
if (filter?.operator === 'between') {
|
|
4368
|
+
const { start, end } = filter;
|
|
4369
|
+
if (!start || !end) {
|
|
4370
|
+
return 'bad date range';
|
|
4371
|
+
}
|
|
4372
|
+
return `> ${new Intl.DateTimeFormat(locale).format(new Date(start))} ≤ ${new Intl.DateTimeFormat(locale).format(new Date(end))}`;
|
|
4373
|
+
}
|
|
4374
|
+
if (filter?.operator === 'and') {
|
|
4375
|
+
const value = filter?.display ?? filter?.value ?? '';
|
|
4376
|
+
const date = new Date(value);
|
|
4377
|
+
if (isNaN(date.getTime())) {
|
|
4378
|
+
return value;
|
|
4379
|
+
}
|
|
4380
|
+
else {
|
|
4381
|
+
return new Intl.DateTimeFormat(locale).format(date);
|
|
4382
|
+
}
|
|
4383
|
+
}
|
|
4384
|
+
const date = new Date(filter?.value || '');
|
|
4385
|
+
if (isNaN(date.getTime())) {
|
|
4386
|
+
return `${op} ${filter?.value || ''}`;
|
|
4387
|
+
}
|
|
4388
|
+
else {
|
|
4389
|
+
return `${op} ${new Intl.DateTimeFormat(locale).format(date)}`;
|
|
4390
|
+
}
|
|
4391
|
+
}
|
|
4392
|
+
transformOperator(operator) {
|
|
4393
|
+
switch (operator) {
|
|
4394
|
+
case 'lt':
|
|
4395
|
+
return '<';
|
|
4396
|
+
case 'lte':
|
|
4397
|
+
return '≤';
|
|
4398
|
+
case 'eq':
|
|
4399
|
+
return '=';
|
|
4400
|
+
case 'neq':
|
|
4401
|
+
return '≠';
|
|
4402
|
+
case 'gte':
|
|
4403
|
+
return '≥';
|
|
4404
|
+
case 'gt':
|
|
4405
|
+
return '>';
|
|
4406
|
+
default:
|
|
4407
|
+
return '';
|
|
4408
|
+
}
|
|
4409
|
+
}
|
|
4410
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OperatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4411
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: OperatorPipe, isStandalone: true, name: "operator", pure: false });
|
|
4412
|
+
}
|
|
4413
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OperatorPipe, decorators: [{
|
|
4414
|
+
type: Pipe,
|
|
4415
|
+
args: [{
|
|
4416
|
+
name: 'operator',
|
|
4417
|
+
standalone: true,
|
|
4418
|
+
pure: false
|
|
4419
|
+
}]
|
|
4420
|
+
}] });
|
|
4421
|
+
|
|
4422
|
+
/**
|
|
4423
|
+
* The `SyslangPipe` class is a custom pipe that transforms a string value using the current language.
|
|
4424
|
+
* This pipe is used to translate strings that are not part of the Angular i18n system.
|
|
4425
|
+
* This pipe exists to keep the compatibility with a legacy system that uses a custom language syntax.
|
|
4426
|
+
*
|
|
4427
|
+
* This pipe can be used in the following way:
|
|
4428
|
+
*
|
|
4429
|
+
* @example
|
|
4430
|
+
* <div>{{ 'Hello[fr]Bonjour' | syslang }}</div>
|
|
4431
|
+
* // output: `Bonjour` if your current language is 'fr'
|
|
4432
|
+
* // output: `Hello` if your current language is not 'fr'
|
|
4433
|
+
*
|
|
4434
|
+
* <div>{{ 'Hello[fr]Bonjour' | syslang: 'fr' }}</div>
|
|
4435
|
+
* // output: `Bonjour` even if your current language is not 'fr'
|
|
4436
|
+
*/
|
|
4437
|
+
class SyslangPipe {
|
|
4438
|
+
transloco = inject(TranslocoService);
|
|
4439
|
+
cdr = inject(ChangeDetectorRef);
|
|
4440
|
+
lastValue = null;
|
|
4441
|
+
currentLang;
|
|
4442
|
+
subscription = null;
|
|
4443
|
+
ngOnDestroy() {
|
|
4444
|
+
this.subscription?.unsubscribe();
|
|
4445
|
+
this.subscription = null;
|
|
4446
|
+
}
|
|
4447
|
+
constructor() {
|
|
4448
|
+
this.currentLang = this.transloco.getActiveLang();
|
|
4449
|
+
this.subscription = this.transloco.langChanges$.subscribe(locale => (this.currentLang = locale));
|
|
4450
|
+
}
|
|
4451
|
+
/**
|
|
4452
|
+
* Transforms the input value using the current language.
|
|
4453
|
+
* @param value The input string value to be transformed.
|
|
4454
|
+
* @returns The transformed string value.
|
|
4455
|
+
*/
|
|
4456
|
+
transform(value, lang) {
|
|
4457
|
+
const transformedValue = sysLang(value || '', lang || this.currentLang);
|
|
4458
|
+
if (transformedValue !== this.lastValue) {
|
|
4459
|
+
this.lastValue = transformedValue;
|
|
4460
|
+
this.cdr.markForCheck();
|
|
4461
|
+
}
|
|
4462
|
+
return this.lastValue;
|
|
4463
|
+
}
|
|
4464
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SyslangPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4465
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: SyslangPipe, isStandalone: true, name: "syslang", pure: false });
|
|
4466
|
+
}
|
|
4467
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SyslangPipe, decorators: [{
|
|
4468
|
+
type: Pipe,
|
|
4469
|
+
args: [{
|
|
4470
|
+
name: 'syslang',
|
|
4471
|
+
standalone: true,
|
|
4472
|
+
pure: false
|
|
4473
|
+
}]
|
|
4474
|
+
}], ctorParameters: () => [] });
|
|
4475
|
+
|
|
4476
|
+
class TranslocoDateImpurePipe extends DatePipe {
|
|
4477
|
+
transloco = inject(TranslocoService);
|
|
4478
|
+
cdr = inject(ChangeDetectorRef);
|
|
4479
|
+
lastTransformedValue = null;
|
|
4480
|
+
subscription = null;
|
|
4481
|
+
constructor(locale, defaultTimezone, defaultOptions) {
|
|
4482
|
+
super(locale, defaultTimezone, defaultOptions);
|
|
4483
|
+
}
|
|
4484
|
+
ngOnDestroy() {
|
|
4485
|
+
this.subscription?.unsubscribe();
|
|
4486
|
+
this.subscription = null;
|
|
4487
|
+
}
|
|
4488
|
+
transform(value, format, timezone) {
|
|
4489
|
+
this.subscription?.unsubscribe();
|
|
4490
|
+
this.subscription = this.transloco.langChanges$.subscribe(locale => {
|
|
4491
|
+
const transformedValue = super.transform(value, format, timezone, locale);
|
|
4492
|
+
if (transformedValue !== this.lastTransformedValue) {
|
|
4493
|
+
this.lastTransformedValue = transformedValue;
|
|
4494
|
+
this.cdr.markForCheck();
|
|
4495
|
+
}
|
|
4496
|
+
});
|
|
4497
|
+
return this.lastTransformedValue;
|
|
4498
|
+
}
|
|
4499
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", 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 });
|
|
4500
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: TranslocoDateImpurePipe, isStandalone: true, name: "translocoDate", pure: false });
|
|
4501
|
+
}
|
|
4502
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: TranslocoDateImpurePipe, decorators: [{
|
|
4503
|
+
type: Pipe,
|
|
4504
|
+
args: [{
|
|
4505
|
+
name: 'translocoDate',
|
|
4506
|
+
pure: false,
|
|
4507
|
+
standalone: true
|
|
4508
|
+
}]
|
|
4509
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
4510
|
+
type: Inject,
|
|
4511
|
+
args: [LOCALE_ID]
|
|
4512
|
+
}] }, { type: undefined, decorators: [{
|
|
4513
|
+
type: Inject,
|
|
4514
|
+
args: [DATE_PIPE_DEFAULT_TIMEZONE]
|
|
4515
|
+
}, {
|
|
4516
|
+
type: Optional
|
|
4517
|
+
}] }, { type: undefined, decorators: [{
|
|
4518
|
+
type: Inject,
|
|
4519
|
+
args: [DATE_PIPE_DEFAULT_OPTIONS]
|
|
4520
|
+
}, {
|
|
4521
|
+
type: Optional
|
|
4522
|
+
}] }] });
|
|
4523
|
+
|
|
4524
|
+
class FileSizePipe {
|
|
4525
|
+
transform(value) {
|
|
4526
|
+
return this.formatMemorySize(value);
|
|
4527
|
+
}
|
|
4528
|
+
/**
|
|
4529
|
+
* Formats a given size in bytes into a more readable format.
|
|
4530
|
+
* It converts the size into kilobytes, megabytes, gigabytes, terabytes, or petabytes as appropriate.
|
|
4531
|
+
*
|
|
4532
|
+
* @param size - The size in bytes to be formatted.
|
|
4533
|
+
* @returns An object containing the key representing the unit and the value in that unit.
|
|
4534
|
+
*
|
|
4535
|
+
* @example
|
|
4536
|
+
* In a component template:
|
|
4537
|
+
* {{ 1048576 | fileSize | json }}
|
|
4538
|
+
* Output: { "key": "memorySize.mb", "value": 1 }
|
|
4539
|
+
*/
|
|
4540
|
+
formatMemorySize(size) {
|
|
4541
|
+
const kiloBytes = size / 1024;
|
|
4542
|
+
const megaBytes = kiloBytes / 1024;
|
|
4543
|
+
const gigaBytes = megaBytes / 1024;
|
|
4544
|
+
const teraBytes = gigaBytes / 1024;
|
|
4545
|
+
const petaBytes = teraBytes / 1024;
|
|
4546
|
+
const obj = { key: 'memorySize.bytes', value: size };
|
|
4547
|
+
if (Math.abs(petaBytes) >= 1) {
|
|
4548
|
+
obj.key = 'memorySize.pb';
|
|
4549
|
+
obj.value = petaBytes;
|
|
4550
|
+
}
|
|
4551
|
+
else if (Math.abs(teraBytes) >= 1) {
|
|
4552
|
+
obj.key = 'memorySize.tb';
|
|
4553
|
+
obj.value = teraBytes;
|
|
4554
|
+
}
|
|
4555
|
+
else if (Math.abs(gigaBytes) >= 1) {
|
|
4556
|
+
obj.key = 'memorySize.gb';
|
|
4557
|
+
obj.value = gigaBytes;
|
|
4558
|
+
}
|
|
4559
|
+
else if (Math.abs(megaBytes) >= 1) {
|
|
4560
|
+
obj.key = 'memorySize.mb';
|
|
4561
|
+
obj.value = megaBytes;
|
|
4562
|
+
}
|
|
4563
|
+
else if (Math.abs(kiloBytes) >= 1) {
|
|
4564
|
+
obj.key = 'memorySize.kb';
|
|
4565
|
+
obj.value = kiloBytes;
|
|
4566
|
+
}
|
|
4567
|
+
return obj;
|
|
4568
|
+
}
|
|
4569
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: FileSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
4570
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.7", ngImport: i0, type: FileSizePipe, isStandalone: true, name: "fileSize" });
|
|
4571
|
+
}
|
|
4572
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: FileSizePipe, decorators: [{
|
|
4573
|
+
type: Pipe,
|
|
4574
|
+
args: [{
|
|
4575
|
+
name: 'fileSize'
|
|
4576
|
+
}]
|
|
4577
|
+
}] });
|
|
4578
|
+
|
|
4259
4579
|
class MetadataComponent {
|
|
4260
4580
|
click = output();
|
|
4261
4581
|
class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
|
|
4262
4582
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
4583
|
+
decoration = input('outline', ...(ngDevMode ? [{ debugName: "decoration" }] : []));
|
|
4584
|
+
hover = input('yes', ...(ngDevMode ? [{ debugName: "hover" }] : []));
|
|
4263
4585
|
metadata = input.required(...(ngDevMode ? [{ debugName: "metadata" }] : []));
|
|
4264
4586
|
article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
|
|
4265
4587
|
limit = input(undefined, ...(ngDevMode ? [{ debugName: "limit", transform: (value) => (value ? Math.max(0, Number(value)) : undefined) }] : [{ transform: (value) => (value ? Math.max(0, Number(value)) : undefined) }]));
|
|
@@ -4267,21 +4589,37 @@ class MetadataComponent {
|
|
|
4267
4589
|
handleClick(event, item) {
|
|
4268
4590
|
this.click.emit({ filter: item, event });
|
|
4269
4591
|
}
|
|
4270
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4271
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
4592
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MetadataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4593
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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 }, decoration: { classPropertyName: "decoration", publicName: "decoration", isSignal: true, isRequired: false, transformFunction: null }, hover: { classPropertyName: "hover", publicName: "hover", 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: `
|
|
4272
4594
|
@for (item of items().slice(0, limit()); track $index) {
|
|
4273
4595
|
@if (item) {
|
|
4274
|
-
<badge
|
|
4596
|
+
<badge
|
|
4597
|
+
[variant]="variant()"
|
|
4598
|
+
[decoration]="decoration()"
|
|
4599
|
+
[hover]="hover()"
|
|
4600
|
+
size="xs"
|
|
4601
|
+
[class]="class()"
|
|
4602
|
+
(click)="handleClick($event, { field: this.metadata(), value: item })">
|
|
4603
|
+
{{ item | syslang }}
|
|
4604
|
+
</badge>
|
|
4275
4605
|
}
|
|
4276
4606
|
}
|
|
4277
|
-
`, isInline: true, styles: [":host{display:contents}:host,:host:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }] });
|
|
4607
|
+
`, isInline: true, styles: [":host{display:contents}:host,:host:hover{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "size", "decoration", "hover"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
4278
4608
|
}
|
|
4279
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
4609
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MetadataComponent, decorators: [{
|
|
4280
4610
|
type: Component,
|
|
4281
|
-
args: [{ selector: 'Metadata, metadata', exportAs: 'metadata', standalone: true, imports: [BadgeComponent], template: `
|
|
4611
|
+
args: [{ selector: 'Metadata, metadata', exportAs: 'metadata', standalone: true, imports: [SyslangPipe, BadgeComponent], template: `
|
|
4282
4612
|
@for (item of items().slice(0, limit()); track $index) {
|
|
4283
4613
|
@if (item) {
|
|
4284
|
-
<badge
|
|
4614
|
+
<badge
|
|
4615
|
+
[variant]="variant()"
|
|
4616
|
+
[decoration]="decoration()"
|
|
4617
|
+
[hover]="hover()"
|
|
4618
|
+
size="xs"
|
|
4619
|
+
[class]="class()"
|
|
4620
|
+
(click)="handleClick($event, { field: this.metadata(), value: item })">
|
|
4621
|
+
{{ item | syslang }}
|
|
4622
|
+
</badge>
|
|
4285
4623
|
}
|
|
4286
4624
|
}
|
|
4287
4625
|
`, host: {
|
|
@@ -4305,10 +4643,10 @@ class MissingTermsComponent {
|
|
|
4305
4643
|
};
|
|
4306
4644
|
});
|
|
4307
4645
|
}, ...(ngDevMode ? [{ debugName: "missingTerms" }] : []));
|
|
4308
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4309
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
4646
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MissingTermsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4647
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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" }] });
|
|
4310
4648
|
}
|
|
4311
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
4649
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MissingTermsComponent, decorators: [{
|
|
4312
4650
|
type: Component,
|
|
4313
4651
|
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"] }]
|
|
4314
4652
|
}] });
|
|
@@ -4403,8 +4741,8 @@ class CollectionsDialog {
|
|
|
4403
4741
|
this.newCollectionName.set('');
|
|
4404
4742
|
this.creating.set(false);
|
|
4405
4743
|
}
|
|
4406
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4407
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
4744
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CollectionsDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4745
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
4408
4746
|
<dialog #dialog (closed)="closeBtn.click()">
|
|
4409
4747
|
<DialogHeader>
|
|
4410
4748
|
<DialogTitle>{{ 'collections.addToCollection' | transloco }}</DialogTitle>
|
|
@@ -4449,7 +4787,7 @@ class CollectionsDialog {
|
|
|
4449
4787
|
<DialogFooter class="flex flex-col">
|
|
4450
4788
|
<div class="flex w-full gap-1">
|
|
4451
4789
|
<button
|
|
4452
|
-
|
|
4790
|
+
decoration="outline"
|
|
4453
4791
|
class="grow"
|
|
4454
4792
|
tabindex="0"
|
|
4455
4793
|
[attr.title]="(creating() ? 'collections.cancelCreation' : 'collections.createCollection') | transloco"
|
|
@@ -4457,19 +4795,25 @@ class CollectionsDialog {
|
|
|
4457
4795
|
{{ (creating() ? 'collections.cancelCreation' : 'collections.createCollection') | transloco }}
|
|
4458
4796
|
</button>
|
|
4459
4797
|
@if (creating()) {
|
|
4460
|
-
<button
|
|
4798
|
+
<button
|
|
4799
|
+
variant="primary"
|
|
4800
|
+
class="grow"
|
|
4801
|
+
tabindex="0"
|
|
4802
|
+
[attr.title]="'collections.create' | transloco"
|
|
4803
|
+
[disabled]="!newCollectionName()"
|
|
4804
|
+
(click)="createCollection()">
|
|
4461
4805
|
{{ 'collections.create' | transloco }}
|
|
4462
4806
|
</button>
|
|
4463
4807
|
}
|
|
4464
4808
|
</div>
|
|
4465
|
-
<button #closeBtn (click)="onClose($event)" class="self-end">
|
|
4809
|
+
<button variant="primary" #closeBtn (click)="onClose($event)" class="self-end">
|
|
4466
4810
|
{{ 'collections.close' | transloco }}
|
|
4467
4811
|
</button>
|
|
4468
4812
|
</DialogFooter>
|
|
4469
4813
|
</dialog>
|
|
4470
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"
|
|
4814
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class", "variant"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { 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" }] });
|
|
4471
4815
|
}
|
|
4472
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
4816
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CollectionsDialog, decorators: [{
|
|
4473
4817
|
type: Component,
|
|
4474
4818
|
args: [{
|
|
4475
4819
|
selector: 'add-to-collection-dialog',
|
|
@@ -4532,7 +4876,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4532
4876
|
<DialogFooter class="flex flex-col">
|
|
4533
4877
|
<div class="flex w-full gap-1">
|
|
4534
4878
|
<button
|
|
4535
|
-
|
|
4879
|
+
decoration="outline"
|
|
4536
4880
|
class="grow"
|
|
4537
4881
|
tabindex="0"
|
|
4538
4882
|
[attr.title]="(creating() ? 'collections.cancelCreation' : 'collections.createCollection') | transloco"
|
|
@@ -4540,12 +4884,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4540
4884
|
{{ (creating() ? 'collections.cancelCreation' : 'collections.createCollection') | transloco }}
|
|
4541
4885
|
</button>
|
|
4542
4886
|
@if (creating()) {
|
|
4543
|
-
<button
|
|
4887
|
+
<button
|
|
4888
|
+
variant="primary"
|
|
4889
|
+
class="grow"
|
|
4890
|
+
tabindex="0"
|
|
4891
|
+
[attr.title]="'collections.create' | transloco"
|
|
4892
|
+
[disabled]="!newCollectionName()"
|
|
4893
|
+
(click)="createCollection()">
|
|
4544
4894
|
{{ 'collections.create' | transloco }}
|
|
4545
4895
|
</button>
|
|
4546
4896
|
}
|
|
4547
4897
|
</div>
|
|
4548
|
-
<button #closeBtn (click)="onClose($event)" class="self-end">
|
|
4898
|
+
<button variant="primary" #closeBtn (click)="onClose($event)" class="self-end">
|
|
4549
4899
|
{{ 'collections.close' | transloco }}
|
|
4550
4900
|
</button>
|
|
4551
4901
|
</DialogFooter>
|
|
@@ -4647,10 +4997,10 @@ class ExportService {
|
|
|
4647
4997
|
responseType: 'blob'
|
|
4648
4998
|
});
|
|
4649
4999
|
}
|
|
4650
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4651
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
5000
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ExportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5001
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ExportService, providedIn: 'root' });
|
|
4652
5002
|
}
|
|
4653
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5003
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ExportService, decorators: [{
|
|
4654
5004
|
type: Injectable,
|
|
4655
5005
|
args: [{
|
|
4656
5006
|
providedIn: 'root'
|
|
@@ -4718,15 +5068,15 @@ class ExportDialog {
|
|
|
4718
5068
|
this.maxCount.set(1);
|
|
4719
5069
|
}
|
|
4720
5070
|
}
|
|
4721
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4722
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
5071
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ExportDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5072
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
4723
5073
|
<dialog #dialog>
|
|
4724
5074
|
<DialogHeader>
|
|
4725
5075
|
<DialogTitle>{{ 'export.title' | transloco }}</DialogTitle>
|
|
4726
5076
|
</DialogHeader>
|
|
4727
5077
|
|
|
4728
5078
|
<DialogContent
|
|
4729
|
-
class="flex flex-col gap-4 [&_section>h1]:text-sm [&_section>h1]:font-semibold [&_section
|
|
5079
|
+
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">
|
|
4730
5080
|
<section>
|
|
4731
5081
|
<h1>{{ 'export.from' | transloco }}</h1>
|
|
4732
5082
|
<div class="flex items-center gap-2">
|
|
@@ -4743,7 +5093,7 @@ class ExportDialog {
|
|
|
4743
5093
|
<section>
|
|
4744
5094
|
<h1>{{ 'export.outputFormat' | transloco }}</h1>
|
|
4745
5095
|
<select
|
|
4746
|
-
class="hover:outline-primary focus:outline-primary h-8 w-full rounded-md border
|
|
5096
|
+
class="hover:outline-primary focus:outline-primary border-foreground/18 h-8 w-full rounded-md border px-2 hover:outline focus:outline"
|
|
4747
5097
|
id="format"
|
|
4748
5098
|
[(ngModel)]="format">
|
|
4749
5099
|
@for (format of supportedFormats; track $index) {
|
|
@@ -4756,7 +5106,7 @@ class ExportDialog {
|
|
|
4756
5106
|
<h1>{{ 'export.exportColumns' | transloco }}</h1>
|
|
4757
5107
|
<select
|
|
4758
5108
|
id="exportedColumns"
|
|
4759
|
-
class="hover:outline-primary focus:outline-primary w-full rounded-md border
|
|
5109
|
+
class="hover:outline-primary focus:outline-primary border-foreground/18 w-full rounded-md border px-2 hover:outline focus:outline"
|
|
4760
5110
|
multiple
|
|
4761
5111
|
[(ngModel)]="columnsToExport">
|
|
4762
5112
|
@for (column of exportableColumns(); track $index) {
|
|
@@ -4773,14 +5123,14 @@ class ExportDialog {
|
|
|
4773
5123
|
min="1"
|
|
4774
5124
|
autocomplete="off"
|
|
4775
5125
|
spellcheck="off"
|
|
4776
|
-
class="hover:outline-primary focus:outline-primary h-8 w-full rounded-md border
|
|
5126
|
+
class="hover:outline-primary focus:outline-primary border-foreground/18 h-8 w-full rounded-md border px-2 hover:outline focus:outline"
|
|
4777
5127
|
[(ngModel)]="maxCount"
|
|
4778
5128
|
(input)="onMaxCountInput($event)" />
|
|
4779
5129
|
</section>
|
|
4780
5130
|
</DialogContent>
|
|
4781
5131
|
|
|
4782
5132
|
<DialogFooter>
|
|
4783
|
-
<button
|
|
5133
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
4784
5134
|
{{ 'cancel' | transloco }}
|
|
4785
5135
|
</button>
|
|
4786
5136
|
<button tabindex="0" [attr.title]="'export.download' | transloco" (click)="onDownload($event)">
|
|
@@ -4788,9 +5138,9 @@ class ExportDialog {
|
|
|
4788
5138
|
</button>
|
|
4789
5139
|
</DialogFooter>
|
|
4790
5140
|
</dialog>
|
|
4791
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "component", type: SwitchComponent, selector: "switch, Switch", inputs: ["toggled", "disabled", "className", "size"], outputs: ["toggledChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
5141
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class", "variant"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "component", type: SwitchComponent, selector: "switch, Switch", inputs: ["toggled", "disabled", "className", "variant", "size"], outputs: ["toggledChange"] }, { kind: "directive", type: SelectOptionDirective, selector: "option", inputs: ["class"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
4792
5142
|
}
|
|
4793
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ExportDialog, decorators: [{
|
|
4794
5144
|
type: Component,
|
|
4795
5145
|
args: [{
|
|
4796
5146
|
selector: 'export-dialog',
|
|
@@ -4804,7 +5154,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4804
5154
|
DialogTitleComponent,
|
|
4805
5155
|
DialogContentComponent,
|
|
4806
5156
|
DialogFooterComponent,
|
|
4807
|
-
SwitchComponent
|
|
5157
|
+
SwitchComponent,
|
|
5158
|
+
SelectOptionDirective
|
|
4808
5159
|
],
|
|
4809
5160
|
providers: [provideTranslocoScope('export')],
|
|
4810
5161
|
template: `
|
|
@@ -4814,7 +5165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4814
5165
|
</DialogHeader>
|
|
4815
5166
|
|
|
4816
5167
|
<DialogContent
|
|
4817
|
-
class="flex flex-col gap-4 [&_section>h1]:text-sm [&_section>h1]:font-semibold [&_section
|
|
5168
|
+
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">
|
|
4818
5169
|
<section>
|
|
4819
5170
|
<h1>{{ 'export.from' | transloco }}</h1>
|
|
4820
5171
|
<div class="flex items-center gap-2">
|
|
@@ -4831,7 +5182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4831
5182
|
<section>
|
|
4832
5183
|
<h1>{{ 'export.outputFormat' | transloco }}</h1>
|
|
4833
5184
|
<select
|
|
4834
|
-
class="hover:outline-primary focus:outline-primary h-8 w-full rounded-md border
|
|
5185
|
+
class="hover:outline-primary focus:outline-primary border-foreground/18 h-8 w-full rounded-md border px-2 hover:outline focus:outline"
|
|
4835
5186
|
id="format"
|
|
4836
5187
|
[(ngModel)]="format">
|
|
4837
5188
|
@for (format of supportedFormats; track $index) {
|
|
@@ -4844,7 +5195,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4844
5195
|
<h1>{{ 'export.exportColumns' | transloco }}</h1>
|
|
4845
5196
|
<select
|
|
4846
5197
|
id="exportedColumns"
|
|
4847
|
-
class="hover:outline-primary focus:outline-primary w-full rounded-md border
|
|
5198
|
+
class="hover:outline-primary focus:outline-primary border-foreground/18 w-full rounded-md border px-2 hover:outline focus:outline"
|
|
4848
5199
|
multiple
|
|
4849
5200
|
[(ngModel)]="columnsToExport">
|
|
4850
5201
|
@for (column of exportableColumns(); track $index) {
|
|
@@ -4861,14 +5212,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4861
5212
|
min="1"
|
|
4862
5213
|
autocomplete="off"
|
|
4863
5214
|
spellcheck="off"
|
|
4864
|
-
class="hover:outline-primary focus:outline-primary h-8 w-full rounded-md border
|
|
5215
|
+
class="hover:outline-primary focus:outline-primary border-foreground/18 h-8 w-full rounded-md border px-2 hover:outline focus:outline"
|
|
4865
5216
|
[(ngModel)]="maxCount"
|
|
4866
5217
|
(input)="onMaxCountInput($event)" />
|
|
4867
5218
|
</section>
|
|
4868
5219
|
</DialogContent>
|
|
4869
5220
|
|
|
4870
5221
|
<DialogFooter>
|
|
4871
|
-
<button
|
|
5222
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
4872
5223
|
{{ 'cancel' | transloco }}
|
|
4873
5224
|
</button>
|
|
4874
5225
|
<button tabindex="0" [attr.title]="'export.download' | transloco" (click)="onDownload($event)">
|
|
@@ -4916,8 +5267,8 @@ class MultiSelectionToolbarComponent {
|
|
|
4916
5267
|
openCollectionDialog = () => this.dialog.open(CollectionsDialog, getState(this.selection).multiSelection);
|
|
4917
5268
|
openExportDialog = () => this.dialog.open(ExportDialog, this.ids());
|
|
4918
5269
|
attachToAssistant = () => this.selection.update({ assistantIdsToAttach: this.ids() });
|
|
4919
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4920
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
5270
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MultiSelectionToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5271
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: MultiSelectionToolbarComponent, isStandalone: true, selector: "MultiSelectionToolbar, multi-selection-toolbar", inputs: { className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.opacity-100": "count() > 0", "class.-translate-y-14": "count() > 0" }, classAttribute: "fixed bottom-[-40px] left-[50%] translate-x-[-50%] z-50 transition-[translate,opacity,discrete] duration-300 opacity-0" }, ngImport: i0, template: `
|
|
4921
5272
|
<menu id="multi-select-toolbar" [class]="cn(variants(), className())">
|
|
4922
5273
|
<li class="!ps-0">
|
|
4923
5274
|
{{ count() }} items selected
|
|
@@ -4951,7 +5302,7 @@ class MultiSelectionToolbarComponent {
|
|
|
4951
5302
|
</menu>
|
|
4952
5303
|
`, isInline: true });
|
|
4953
5304
|
}
|
|
4954
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5305
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MultiSelectionToolbarComponent, decorators: [{
|
|
4955
5306
|
type: Component,
|
|
4956
5307
|
args: [{
|
|
4957
5308
|
selector: 'MultiSelectionToolbar, multi-selection-toolbar',
|
|
@@ -5030,10 +5381,10 @@ class InfinityScrollDirective {
|
|
|
5030
5381
|
ngOnDestroy() {
|
|
5031
5382
|
this.observer.disconnect();
|
|
5032
5383
|
}
|
|
5033
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5034
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.
|
|
5384
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: InfinityScrollDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5385
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", type: InfinityScrollDirective, isStandalone: true, selector: "[infinity-scroll]", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onScroll: "onScroll" }, ngImport: i0 });
|
|
5035
5386
|
}
|
|
5036
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5387
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: InfinityScrollDirective, decorators: [{
|
|
5037
5388
|
type: Directive,
|
|
5038
5389
|
args: [{
|
|
5039
5390
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -5337,10 +5688,10 @@ class KeyboardNavigatorDirective {
|
|
|
5337
5688
|
this.renderer.setAttribute(this.listboxElement(), 'aria-hidden', 'true');
|
|
5338
5689
|
this.ariaExpanded.set(false);
|
|
5339
5690
|
}
|
|
5340
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5341
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.
|
|
5691
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: KeyboardNavigatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5692
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", 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 });
|
|
5342
5693
|
}
|
|
5343
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5694
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: KeyboardNavigatorDirective, decorators: [{
|
|
5344
5695
|
type: Directive,
|
|
5345
5696
|
args: [{
|
|
5346
5697
|
selector: 'input[role="combobox"]',
|
|
@@ -5375,10 +5726,10 @@ class OpenArticleOnCtrlEnterDirective {
|
|
|
5375
5726
|
return;
|
|
5376
5727
|
this.previewService.openExternal(this.article());
|
|
5377
5728
|
}
|
|
5378
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5379
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.
|
|
5729
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OpenArticleOnCtrlEnterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5730
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", 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 });
|
|
5380
5731
|
}
|
|
5381
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5732
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OpenArticleOnCtrlEnterDirective, decorators: [{
|
|
5382
5733
|
type: Directive,
|
|
5383
5734
|
args: [{
|
|
5384
5735
|
selector: '[appOpenArticleOnCtrlEnter],[openArticleOnCtrlEnter]',
|
|
@@ -5394,10 +5745,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
5394
5745
|
* overflow manager.
|
|
5395
5746
|
*/
|
|
5396
5747
|
class OverflowItemDirective {
|
|
5397
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5398
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.
|
|
5748
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OverflowItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5749
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.7", type: OverflowItemDirective, isStandalone: true, selector: "[overflowItem]", ngImport: i0 });
|
|
5399
5750
|
}
|
|
5400
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5751
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OverflowItemDirective, decorators: [{
|
|
5401
5752
|
type: Directive,
|
|
5402
5753
|
args: [{
|
|
5403
5754
|
selector: '[overflowItem]',
|
|
@@ -5409,10 +5760,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
5409
5760
|
* for the overflow manager.
|
|
5410
5761
|
*/
|
|
5411
5762
|
class OverflowStopDirective {
|
|
5412
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5413
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.
|
|
5763
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OverflowStopDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5764
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.7", type: OverflowStopDirective, isStandalone: true, selector: "[overflowStop]", ngImport: i0 });
|
|
5414
5765
|
}
|
|
5415
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5766
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OverflowStopDirective, decorators: [{
|
|
5416
5767
|
type: Directive,
|
|
5417
5768
|
args: [{
|
|
5418
5769
|
selector: '[overflowStop]',
|
|
@@ -5522,10 +5873,10 @@ class OverflowManagerDirective {
|
|
|
5522
5873
|
item.nativeElement.style.visibility = state;
|
|
5523
5874
|
});
|
|
5524
5875
|
}
|
|
5525
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5526
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.1.
|
|
5876
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OverflowManagerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5877
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.1.7", 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 });
|
|
5527
5878
|
}
|
|
5528
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
5879
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OverflowManagerDirective, decorators: [{
|
|
5529
5880
|
type: Directive,
|
|
5530
5881
|
args: [{
|
|
5531
5882
|
selector: '[overflowManager]',
|
|
@@ -5667,10 +6018,10 @@ class DrawerStackService {
|
|
|
5667
6018
|
this.openAssistant();
|
|
5668
6019
|
this.askAI$.next(text);
|
|
5669
6020
|
}
|
|
5670
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5671
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
6021
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerStackService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6022
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerStackService, providedIn: 'root' });
|
|
5672
6023
|
}
|
|
5673
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6024
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerStackService, decorators: [{
|
|
5674
6025
|
type: Injectable,
|
|
5675
6026
|
args: [{
|
|
5676
6027
|
providedIn: 'root'
|
|
@@ -5702,13 +6053,13 @@ class SelectArticleOnClickDirective {
|
|
|
5702
6053
|
break;
|
|
5703
6054
|
}
|
|
5704
6055
|
}
|
|
5705
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5706
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.
|
|
6056
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SelectArticleOnClickDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6057
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", 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 } }, host: { listeners: { "keydown.enter": "onEnter($event)", "click": "onClick()" } }, ngImport: i0 });
|
|
5707
6058
|
}
|
|
5708
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6059
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SelectArticleOnClickDirective, decorators: [{
|
|
5709
6060
|
type: Directive,
|
|
5710
6061
|
args: [{
|
|
5711
|
-
selector: '[
|
|
6062
|
+
selector: '[selectArticleOnClick]',
|
|
5712
6063
|
standalone: true,
|
|
5713
6064
|
host: {
|
|
5714
6065
|
'(keydown.enter)': 'onEnter($event)'
|
|
@@ -5754,10 +6105,10 @@ class ShowBookmarkDirective {
|
|
|
5754
6105
|
this.showBookmark.emit(bookmarkHovered || isBookmarked);
|
|
5755
6106
|
});
|
|
5756
6107
|
}
|
|
5757
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5758
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.
|
|
6108
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ShowBookmarkDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6109
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", 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 });
|
|
5759
6110
|
}
|
|
5760
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ShowBookmarkDirective, decorators: [{
|
|
5761
6112
|
type: Directive,
|
|
5762
6113
|
args: [{
|
|
5763
6114
|
selector: '[showBookmark]',
|
|
@@ -5788,10 +6139,10 @@ class ThemeProviderDirective {
|
|
|
5788
6139
|
applyThemeToNativeElement(this.host.nativeElement, vars);
|
|
5789
6140
|
});
|
|
5790
6141
|
}
|
|
5791
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5792
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.
|
|
6142
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ThemeProviderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6143
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", type: ThemeProviderDirective, isStandalone: true, selector: "[themeProvider]", inputs: { themeProvider: { classPropertyName: "themeProvider", publicName: "themeProvider", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
5793
6144
|
}
|
|
5794
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6145
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ThemeProviderDirective, decorators: [{
|
|
5795
6146
|
type: Directive,
|
|
5796
6147
|
args: [{
|
|
5797
6148
|
selector: '[themeProvider]',
|
|
@@ -5815,266 +6166,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
5815
6166
|
*/
|
|
5816
6167
|
class ChildMarkerDirective {
|
|
5817
6168
|
template = inject((TemplateRef));
|
|
5818
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5819
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.
|
|
6169
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ChildMarkerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
6170
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.7", type: ChildMarkerDirective, isStandalone: true, selector: "[childMarker]", ngImport: i0 });
|
|
5820
6171
|
}
|
|
5821
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ChildMarkerDirective, decorators: [{
|
|
5822
6173
|
type: Directive,
|
|
5823
6174
|
args: [{
|
|
5824
6175
|
selector: '[childMarker]'
|
|
5825
6176
|
}]
|
|
5826
6177
|
}] });
|
|
5827
6178
|
|
|
5828
|
-
/**
|
|
5829
|
-
* The HighlightWordPipe class is a custom pipe in the Atomic Angular library.
|
|
5830
|
-
* It is used to highlight a specific word within a given text.
|
|
5831
|
-
*
|
|
5832
|
-
* @remarks
|
|
5833
|
-
* This pipe takes in a `value` string, a `word` string to highlight, and an optional `clipBy` number to limit the length of the highlighted text.
|
|
5834
|
-
* It returns an array of `HighlightWords.Chunk` objects representing the highlighted portions of the text.
|
|
5835
|
-
*
|
|
5836
|
-
* @example
|
|
5837
|
-
* ```html
|
|
5838
|
-
* <div [innerHTML]="text | highlightWord:'search':10"></div>
|
|
5839
|
-
* ```
|
|
5840
|
-
*
|
|
5841
|
-
*/
|
|
5842
|
-
class HighlightWordPipe {
|
|
5843
|
-
transform(value, word, clipBy) {
|
|
5844
|
-
const valueNormalized = value.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
5845
|
-
const wordNormalized = word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
5846
|
-
return highlightWords({ text: valueNormalized, query: wordNormalized, clipBy });
|
|
5847
|
-
}
|
|
5848
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: HighlightWordPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5849
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: HighlightWordPipe, isStandalone: true, name: "highlightWord" });
|
|
5850
|
-
}
|
|
5851
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: HighlightWordPipe, decorators: [{
|
|
5852
|
-
type: Pipe,
|
|
5853
|
-
args: [{
|
|
5854
|
-
name: 'highlightWord',
|
|
5855
|
-
standalone: true,
|
|
5856
|
-
pure: true
|
|
5857
|
-
}]
|
|
5858
|
-
}] });
|
|
5859
|
-
|
|
5860
|
-
/**
|
|
5861
|
-
* Pipe that transforms a collection of strings into a corresponding icon class.
|
|
5862
|
-
*
|
|
5863
|
-
* This pipe uses the first element of the collection to determine the icon class
|
|
5864
|
-
* based on the source name. If the collection is empty or undefined, it returns
|
|
5865
|
-
* a default icon class.
|
|
5866
|
-
*
|
|
5867
|
-
* @deprecated This pipe is deprecated and will be removed in the future.
|
|
5868
|
-
*
|
|
5869
|
-
* @param collection - An array of strings representing the collection.
|
|
5870
|
-
* @returns A string representing the icon class.
|
|
5871
|
-
*/
|
|
5872
|
-
class SourceIconPipe {
|
|
5873
|
-
appStore = inject(AppStore);
|
|
5874
|
-
transform(collection) {
|
|
5875
|
-
if (collection === undefined || collection.length === 0) {
|
|
5876
|
-
return 'far fa-file';
|
|
5877
|
-
}
|
|
5878
|
-
const name = collection[0].split('/')[1];
|
|
5879
|
-
const sources = this.appStore.sources();
|
|
5880
|
-
// workplace search uses a different format for sources
|
|
5881
|
-
if (Array.isArray(sources)) {
|
|
5882
|
-
return sources.find((source) => source.name === name)?.icon || 'far fa-file';
|
|
5883
|
-
}
|
|
5884
|
-
return 'far fa-file';
|
|
5885
|
-
}
|
|
5886
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SourceIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5887
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: SourceIconPipe, isStandalone: true, name: "sourceIcon" });
|
|
5888
|
-
}
|
|
5889
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SourceIconPipe, decorators: [{
|
|
5890
|
-
type: Pipe,
|
|
5891
|
-
args: [{
|
|
5892
|
-
name: 'sourceIcon',
|
|
5893
|
-
standalone: true,
|
|
5894
|
-
pure: true
|
|
5895
|
-
}]
|
|
5896
|
-
}] });
|
|
5897
|
-
|
|
5898
|
-
class OperatorPipe {
|
|
5899
|
-
transloco = inject(TranslocoService);
|
|
5900
|
-
lastTransformedValue = null;
|
|
5901
|
-
cdr = inject(ChangeDetectorRef);
|
|
5902
|
-
destroyRef = inject(DestroyRef);
|
|
5903
|
-
transform(filter) {
|
|
5904
|
-
this.transloco.langChanges$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(locale => {
|
|
5905
|
-
const transformedValue = this.transformFilter(filter, locale);
|
|
5906
|
-
if (transformedValue !== this.lastTransformedValue) {
|
|
5907
|
-
this.lastTransformedValue = transformedValue;
|
|
5908
|
-
this.cdr.markForCheck();
|
|
5909
|
-
}
|
|
5910
|
-
});
|
|
5911
|
-
return this.lastTransformedValue || this.transformFilter(filter);
|
|
5912
|
-
}
|
|
5913
|
-
transformFilter(filter, locale) {
|
|
5914
|
-
let op = this.transformOperator(filter?.operator);
|
|
5915
|
-
if (filter?.operator === 'between') {
|
|
5916
|
-
const { start, end } = filter;
|
|
5917
|
-
if (!start || !end) {
|
|
5918
|
-
return 'bad date range';
|
|
5919
|
-
}
|
|
5920
|
-
return `> ${new Intl.DateTimeFormat(locale).format(new Date(start))} ≤ ${new Intl.DateTimeFormat(locale).format(new Date(end))}`;
|
|
5921
|
-
}
|
|
5922
|
-
if (filter?.operator === 'and') {
|
|
5923
|
-
const value = filter?.display ?? filter?.value ?? '';
|
|
5924
|
-
const date = new Date(value);
|
|
5925
|
-
if (isNaN(date.getTime())) {
|
|
5926
|
-
return value;
|
|
5927
|
-
}
|
|
5928
|
-
else {
|
|
5929
|
-
return new Intl.DateTimeFormat(locale).format(date);
|
|
5930
|
-
}
|
|
5931
|
-
}
|
|
5932
|
-
const date = new Date(filter?.value || '');
|
|
5933
|
-
if (isNaN(date.getTime())) {
|
|
5934
|
-
return `${op} ${filter?.value || ''}`;
|
|
5935
|
-
}
|
|
5936
|
-
else {
|
|
5937
|
-
return `${op} ${new Intl.DateTimeFormat(locale).format(date)}`;
|
|
5938
|
-
}
|
|
5939
|
-
}
|
|
5940
|
-
transformOperator(operator) {
|
|
5941
|
-
switch (operator) {
|
|
5942
|
-
case 'lt':
|
|
5943
|
-
return '<';
|
|
5944
|
-
case 'lte':
|
|
5945
|
-
return '≤';
|
|
5946
|
-
case 'eq':
|
|
5947
|
-
return '=';
|
|
5948
|
-
case 'neq':
|
|
5949
|
-
return '≠';
|
|
5950
|
-
case 'gte':
|
|
5951
|
-
return '≥';
|
|
5952
|
-
case 'gt':
|
|
5953
|
-
return '>';
|
|
5954
|
-
default:
|
|
5955
|
-
return '';
|
|
5956
|
-
}
|
|
5957
|
-
}
|
|
5958
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OperatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5959
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: OperatorPipe, isStandalone: true, name: "operator", pure: false });
|
|
5960
|
-
}
|
|
5961
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OperatorPipe, decorators: [{
|
|
5962
|
-
type: Pipe,
|
|
5963
|
-
args: [{
|
|
5964
|
-
name: 'operator',
|
|
5965
|
-
standalone: true,
|
|
5966
|
-
pure: false
|
|
5967
|
-
}]
|
|
5968
|
-
}] });
|
|
5969
|
-
|
|
5970
|
-
/**
|
|
5971
|
-
* The `SyslangPipe` class is a custom pipe that transforms a string value using the current language.
|
|
5972
|
-
* This pipe is used to translate strings that are not part of the Angular i18n system.
|
|
5973
|
-
* This pipe exists to keep the compatibility with a legacy system that uses a custom language syntax.
|
|
5974
|
-
*
|
|
5975
|
-
* This pipe can be used in the following way:
|
|
5976
|
-
*
|
|
5977
|
-
* @example
|
|
5978
|
-
* <div>{{ 'Hello[fr]Bonjour' | syslang }}</div>
|
|
5979
|
-
* // output: `Bonjour` if your current language is 'fr'
|
|
5980
|
-
* // output: `Hello` if your current language is not 'fr'
|
|
5981
|
-
*
|
|
5982
|
-
* <div>{{ 'Hello[fr]Bonjour' | syslang: 'fr' }}</div>
|
|
5983
|
-
* // output: `Bonjour` even if your current language is not 'fr'
|
|
5984
|
-
*/
|
|
5985
|
-
class SyslangPipe {
|
|
5986
|
-
transloco = inject(TranslocoService);
|
|
5987
|
-
cdr = inject(ChangeDetectorRef);
|
|
5988
|
-
lastValue = null;
|
|
5989
|
-
currentLang;
|
|
5990
|
-
subscription = null;
|
|
5991
|
-
ngOnDestroy() {
|
|
5992
|
-
this.subscription?.unsubscribe();
|
|
5993
|
-
this.subscription = null;
|
|
5994
|
-
}
|
|
5995
|
-
constructor() {
|
|
5996
|
-
this.currentLang = this.transloco.getActiveLang();
|
|
5997
|
-
this.subscription = this.transloco.langChanges$.subscribe(locale => (this.currentLang = locale));
|
|
5998
|
-
}
|
|
5999
|
-
/**
|
|
6000
|
-
* Transforms the input value using the current language.
|
|
6001
|
-
* @param value The input string value to be transformed.
|
|
6002
|
-
* @returns The transformed string value.
|
|
6003
|
-
*/
|
|
6004
|
-
transform(value, lang) {
|
|
6005
|
-
const transformedValue = sysLang(value || '', lang || this.currentLang);
|
|
6006
|
-
if (transformedValue !== this.lastValue) {
|
|
6007
|
-
this.lastValue = transformedValue;
|
|
6008
|
-
this.cdr.markForCheck();
|
|
6009
|
-
}
|
|
6010
|
-
return this.lastValue;
|
|
6011
|
-
}
|
|
6012
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SyslangPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
6013
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: SyslangPipe, isStandalone: true, name: "syslang", pure: false });
|
|
6014
|
-
}
|
|
6015
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SyslangPipe, decorators: [{
|
|
6016
|
-
type: Pipe,
|
|
6017
|
-
args: [{
|
|
6018
|
-
name: 'syslang',
|
|
6019
|
-
standalone: true,
|
|
6020
|
-
pure: false
|
|
6021
|
-
}]
|
|
6022
|
-
}], ctorParameters: () => [] });
|
|
6023
|
-
|
|
6024
|
-
class TranslocoDateImpurePipe extends DatePipe {
|
|
6025
|
-
transloco = inject(TranslocoService);
|
|
6026
|
-
cdr = inject(ChangeDetectorRef);
|
|
6027
|
-
lastTransformedValue = null;
|
|
6028
|
-
subscription = null;
|
|
6029
|
-
constructor(locale, defaultTimezone, defaultOptions) {
|
|
6030
|
-
super(locale, defaultTimezone, defaultOptions);
|
|
6031
|
-
}
|
|
6032
|
-
ngOnDestroy() {
|
|
6033
|
-
this.subscription?.unsubscribe();
|
|
6034
|
-
this.subscription = null;
|
|
6035
|
-
}
|
|
6036
|
-
transform(value, format, timezone) {
|
|
6037
|
-
this.subscription?.unsubscribe();
|
|
6038
|
-
this.subscription = this.transloco.langChanges$.subscribe(locale => {
|
|
6039
|
-
const transformedValue = super.transform(value, format, timezone, locale);
|
|
6040
|
-
if (transformedValue !== this.lastTransformedValue) {
|
|
6041
|
-
this.lastTransformedValue = transformedValue;
|
|
6042
|
-
this.cdr.markForCheck();
|
|
6043
|
-
}
|
|
6044
|
-
});
|
|
6045
|
-
return this.lastTransformedValue;
|
|
6046
|
-
}
|
|
6047
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", 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 });
|
|
6048
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: TranslocoDateImpurePipe, isStandalone: true, name: "translocoDate", pure: false });
|
|
6049
|
-
}
|
|
6050
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: TranslocoDateImpurePipe, decorators: [{
|
|
6051
|
-
type: Pipe,
|
|
6052
|
-
args: [{
|
|
6053
|
-
name: 'translocoDate',
|
|
6054
|
-
pure: false,
|
|
6055
|
-
standalone: true
|
|
6056
|
-
}]
|
|
6057
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
6058
|
-
type: Inject,
|
|
6059
|
-
args: [LOCALE_ID]
|
|
6060
|
-
}] }, { type: undefined, decorators: [{
|
|
6061
|
-
type: Inject,
|
|
6062
|
-
args: [DATE_PIPE_DEFAULT_TIMEZONE]
|
|
6063
|
-
}, {
|
|
6064
|
-
type: Optional
|
|
6065
|
-
}] }, { type: undefined, decorators: [{
|
|
6066
|
-
type: Inject,
|
|
6067
|
-
args: [DATE_PIPE_DEFAULT_OPTIONS]
|
|
6068
|
-
}, {
|
|
6069
|
-
type: Optional
|
|
6070
|
-
}] }] });
|
|
6071
|
-
|
|
6072
6179
|
class NavbarTabsComponent {
|
|
6073
6180
|
router = inject(Router);
|
|
6074
6181
|
route = inject(ActivatedRoute);
|
|
6075
6182
|
drawerStack = inject(DrawerStackService);
|
|
6076
6183
|
drawerOpened = signal(false, ...(ngDevMode ? [{ debugName: "drawerOpened" }] : []));
|
|
6077
6184
|
queryParamsStore = inject(QueryParamsStore);
|
|
6185
|
+
// Injecting the QueryService to access last search results
|
|
6186
|
+
queryService = inject(QueryService);
|
|
6187
|
+
/**
|
|
6188
|
+
* Determines whether the count should be displayed in the navbar tabs component.
|
|
6189
|
+
* This value is provided as an input property.
|
|
6190
|
+
*
|
|
6191
|
+
* @remarks
|
|
6192
|
+
* This works only if tabSearch is enabled in the administration panel.
|
|
6193
|
+
*/
|
|
6194
|
+
showCount = input(false, ...(ngDevMode ? [{ debugName: "showCount" }] : []));
|
|
6078
6195
|
searchText = computed(() => {
|
|
6079
6196
|
const state = getState(this.queryParamsStore);
|
|
6080
6197
|
return state.text || '';
|
|
@@ -6089,17 +6206,21 @@ class NavbarTabsComponent {
|
|
|
6089
6206
|
return childPath || 'all';
|
|
6090
6207
|
}, ...(ngDevMode ? [{ debugName: "currentPath" }] : []));
|
|
6091
6208
|
// create tabs from the search routes
|
|
6092
|
-
tabs = computed(() =>
|
|
6093
|
-
|
|
6094
|
-
|
|
6095
|
-
|
|
6096
|
-
|
|
6097
|
-
|
|
6098
|
-
|
|
6099
|
-
|
|
6100
|
-
|
|
6101
|
-
|
|
6102
|
-
|
|
6209
|
+
tabs = computed(() => {
|
|
6210
|
+
const r = this.router.config
|
|
6211
|
+
.find(item => item.path === 'search')
|
|
6212
|
+
?.children?.filter(c => c.path !== '**')
|
|
6213
|
+
.map(child => ({
|
|
6214
|
+
display: child.data?.['display'] || child.path,
|
|
6215
|
+
wsQueryTab: child.data?.['wsQueryTab'] || child.path,
|
|
6216
|
+
path: child.path,
|
|
6217
|
+
routerLink: `/search/${child.path}`,
|
|
6218
|
+
icon: child.data?.['icon'],
|
|
6219
|
+
queryName: child.data?.['queryName'],
|
|
6220
|
+
count: this.showCount() ? this.queryService.result?.tabs?.find(tab => tab.name === (child.data?.['wsQueryTab'] || child.path))?.count : undefined
|
|
6221
|
+
})) ?? [];
|
|
6222
|
+
return r;
|
|
6223
|
+
}, ...(ngDevMode ? [{ debugName: "tabs" }] : []));
|
|
6103
6224
|
moreTabs = computed(() => this.tabs().slice(this.visibleTabCount()), ...(ngDevMode ? [{ debugName: "moreTabs" }] : []));
|
|
6104
6225
|
changeTab(tab) {
|
|
6105
6226
|
// we use the routerlink to navigate, so just close the drawer and remove the id parameter from the query params
|
|
@@ -6108,15 +6229,15 @@ class NavbarTabsComponent {
|
|
|
6108
6229
|
constructor() {
|
|
6109
6230
|
this.drawerStack.isOpened.pipe(takeUntilDestroyed()).subscribe(state => this.drawerOpened.set(state));
|
|
6110
6231
|
}
|
|
6111
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6112
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
6232
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NavbarTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6233
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: NavbarTabsComponent, isStandalone: true, selector: "navbar-tabs", inputs: { showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
6113
6234
|
<!-- do not display the tabs if there are no tabs -->
|
|
6114
6235
|
@if (tabs().length > 0) {
|
|
6115
6236
|
<div overflowManager class="relative col-span-2 col-start-2 row-start-2 flex" (count)="visibleTabCount.set($event)">
|
|
6116
6237
|
<tabs class="w-full">
|
|
6117
6238
|
@for (tab of tabs(); track $index) {
|
|
6118
6239
|
<tab
|
|
6119
|
-
class="w-fit"
|
|
6240
|
+
class="bg-muted w-fit"
|
|
6120
6241
|
value="{{ tab.display | syslang | transloco }}"
|
|
6121
6242
|
overflowItem
|
|
6122
6243
|
[attr.aria-selected]="this.currentPath() === tab.path"
|
|
@@ -6128,6 +6249,7 @@ class NavbarTabsComponent {
|
|
|
6128
6249
|
<i class="fa-fw {{ tab.icon }} " aria-hidden="true"></i>
|
|
6129
6250
|
}
|
|
6130
6251
|
<span>{{ tab.display | syslang | transloco }}</span>
|
|
6252
|
+
<span class="empty:hidden">{{ tab.count }}</span>
|
|
6131
6253
|
</tab>
|
|
6132
6254
|
}
|
|
6133
6255
|
</tabs>
|
|
@@ -6162,9 +6284,9 @@ class NavbarTabsComponent {
|
|
|
6162
6284
|
}
|
|
6163
6285
|
</div>
|
|
6164
6286
|
}
|
|
6165
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MenuComponent, selector: "menu, Menu", inputs: ["disabled"] }, { kind: "directive", type: MenuItemComponent, selector: "menu-item, menuitem, MenuItem", inputs: ["class", "variant"] }, { kind: "directive", type: MenuContentComponent, selector: "MenuContent, menucontent, menu-content", inputs: ["class", "position"] }, { kind: "directive", type: TabsComponent, selector: "tabs, Tabs", inputs: ["class", "variant", "size"] }, { kind: "component", type: TabComponent, selector: "tab, Tab", inputs: ["class", "variant", "size", "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: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
6287
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "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", "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: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
6166
6288
|
}
|
|
6167
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6289
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NavbarTabsComponent, decorators: [{
|
|
6168
6290
|
type: Component,
|
|
6169
6291
|
args: [{
|
|
6170
6292
|
selector: 'navbar-tabs',
|
|
@@ -6176,7 +6298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6176
6298
|
<tabs class="w-full">
|
|
6177
6299
|
@for (tab of tabs(); track $index) {
|
|
6178
6300
|
<tab
|
|
6179
|
-
class="w-fit"
|
|
6301
|
+
class="bg-muted w-fit"
|
|
6180
6302
|
value="{{ tab.display | syslang | transloco }}"
|
|
6181
6303
|
overflowItem
|
|
6182
6304
|
[attr.aria-selected]="this.currentPath() === tab.path"
|
|
@@ -6188,6 +6310,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6188
6310
|
<i class="fa-fw {{ tab.icon }} " aria-hidden="true"></i>
|
|
6189
6311
|
}
|
|
6190
6312
|
<span>{{ tab.display | syslang | transloco }}</span>
|
|
6313
|
+
<span class="empty:hidden">{{ tab.count }}</span>
|
|
6191
6314
|
</tab>
|
|
6192
6315
|
}
|
|
6193
6316
|
</tabs>
|
|
@@ -6241,8 +6364,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6241
6364
|
}], ctorParameters: () => [] });
|
|
6242
6365
|
|
|
6243
6366
|
class NoResultComponent {
|
|
6244
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6245
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
6367
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NoResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6368
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.7", 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: `
|
|
6246
6369
|
<header class="flex items-center gap-2 text-xl font-semibold">
|
|
6247
6370
|
<i class="fa-fw far fa-face-sad-sweat text-3xl"></i>
|
|
6248
6371
|
<p>{{ 'noResult.noResult' | transloco }}</p>
|
|
@@ -6255,7 +6378,7 @@ class NoResultComponent {
|
|
|
6255
6378
|
<p>{{ 'noResult.noResultAssistance' | transloco }}</p>
|
|
6256
6379
|
`, isInline: true, dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
6257
6380
|
}
|
|
6258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6381
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NoResultComponent, decorators: [{
|
|
6259
6382
|
type: Component,
|
|
6260
6383
|
args: [{
|
|
6261
6384
|
selector: 'NoResult',
|
|
@@ -6275,7 +6398,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6275
6398
|
<p>{{ 'noResult.noResultAssistance' | transloco }}</p>
|
|
6276
6399
|
`,
|
|
6277
6400
|
host: {
|
|
6278
|
-
class: 'p-4 flex flex-col gap-2 bg-
|
|
6401
|
+
class: 'p-4 flex flex-col gap-2 bg-neutral-100 dark:bg-menu rounded-md'
|
|
6279
6402
|
}
|
|
6280
6403
|
}]
|
|
6281
6404
|
}] });
|
|
@@ -6301,8 +6424,8 @@ class PagerComponent {
|
|
|
6301
6424
|
this.page.set(this.page() - 1);
|
|
6302
6425
|
this.queryService.gotoPage(this.page());
|
|
6303
6426
|
}
|
|
6304
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6305
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
6427
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: PagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6428
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: PagerComponent, isStandalone: true, selector: "pager", inputs: { configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
6306
6429
|
<div class="flex gap-2">
|
|
6307
6430
|
@if ((hasPages() && page() > 1) || (!hasPages() && page() > 1)) {
|
|
6308
6431
|
<button variant="ghost" [attr.title]="'previousPage' | transloco" (click)="previousPage()">
|
|
@@ -6324,9 +6447,9 @@ class PagerComponent {
|
|
|
6324
6447
|
</button>
|
|
6325
6448
|
}
|
|
6326
6449
|
</div>
|
|
6327
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
6450
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
6328
6451
|
}
|
|
6329
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6452
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: PagerComponent, decorators: [{
|
|
6330
6453
|
type: Component,
|
|
6331
6454
|
args: [{
|
|
6332
6455
|
selector: 'pager',
|
|
@@ -6358,6 +6481,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6358
6481
|
}]
|
|
6359
6482
|
}], ctorParameters: () => [] });
|
|
6360
6483
|
|
|
6484
|
+
const searchVariants = cva(cn('group flex gap-1 px-2 py-3 min-w-0 h-9 rounded-full items-center text-sm/5', 'dark:bg-muted border border-foreground/20 text-foreground', 'hover:cursor-pointer hover:bg-foreground/2', '[&[disabled]]:pointer-events-none [&[disabled]]:opacity-50', 'transition-colors'), {
|
|
6485
|
+
variants: {
|
|
6486
|
+
variant: {
|
|
6487
|
+
default: '',
|
|
6488
|
+
primary: ['bg-primary/5 text-primary', 'hover:bg-primary/10', 'focus-within:bg-primary/10'],
|
|
6489
|
+
secondary: ['bg-secondary/5 text-secondary', 'hover:bg-secondary/10', 'focus-within:bg-secondary/10'],
|
|
6490
|
+
destructive: ['bg-destructive/5 text-destructive', 'hover:bg-destructive/10 ', 'focus-within:bg-destructive/10'],
|
|
6491
|
+
ai: [
|
|
6492
|
+
'bg-gradient-to-r text-foreground',
|
|
6493
|
+
'from-ai-from/10 via-ai-via/10 to-ai-to/10',
|
|
6494
|
+
'hover:from-ai-from/20 hover:via-ai-via/20 hover:to-ai-to/20',
|
|
6495
|
+
'focus-within:from-ai-from/20 focus-within:via-ai-via/20 focus-within:to-ai-to/20'
|
|
6496
|
+
]
|
|
6497
|
+
},
|
|
6498
|
+
decoration: {
|
|
6499
|
+
outline: 'border border-foreground/20 hover:border-foreground',
|
|
6500
|
+
none: ''
|
|
6501
|
+
}
|
|
6502
|
+
},
|
|
6503
|
+
compoundVariants: [
|
|
6504
|
+
{ decoration: 'outline', variant: 'primary', class: ['border-primary/50 hover:border-primary-hover focus-within:border-primary'] },
|
|
6505
|
+
{ decoration: 'outline', variant: 'secondary', class: ['border-secondary/50 hover:border-secondary-hover focus-within:border-secondary'] },
|
|
6506
|
+
{ decoration: 'outline', variant: 'destructive', class: ['border-destructive/50 hover:border-destructive-hover focus-within:border-destructive'] },
|
|
6507
|
+
{ decoration: 'outline', variant: 'ai', class: ['border-bg-ai-50/20 hover:border-bg-ai focus-within:border-bg-ai'] }
|
|
6508
|
+
],
|
|
6509
|
+
defaultVariants: {
|
|
6510
|
+
variant: 'default'
|
|
6511
|
+
}
|
|
6512
|
+
});
|
|
6361
6513
|
class SearchInputComponent {
|
|
6362
6514
|
cn = cn;
|
|
6363
6515
|
searchInput = viewChild.required('search');
|
|
@@ -6396,12 +6548,13 @@ class SearchInputComponent {
|
|
|
6396
6548
|
}
|
|
6397
6549
|
}, ...(ngDevMode ? [{ debugName: "keyboardNavigatorOptions" }] : []));
|
|
6398
6550
|
placeholder = input('Search...', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
6399
|
-
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
6551
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
6400
6552
|
hotkey = input('shift+/', ...(ngDevMode ? [{ debugName: "hotkey" }] : []));
|
|
6401
6553
|
class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
|
|
6402
6554
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
6555
|
+
decoration = input('none', ...(ngDevMode ? [{ debugName: "decoration" }] : []));
|
|
6403
6556
|
variants = computed(() => {
|
|
6404
|
-
return searchVariants({ variant: this.variant(), class: this.class() });
|
|
6557
|
+
return searchVariants({ variant: this.variant(), decoration: this.decoration(), class: this.class() });
|
|
6405
6558
|
}, ...(ngDevMode ? [{ debugName: "variants" }] : []));
|
|
6406
6559
|
onInput(event) {
|
|
6407
6560
|
const inputElement = event.target;
|
|
@@ -6413,10 +6566,9 @@ class SearchInputComponent {
|
|
|
6413
6566
|
e.stopImmediatePropagation();
|
|
6414
6567
|
this.control().reset();
|
|
6415
6568
|
this.control().updateValueAndValidity();
|
|
6416
|
-
this.searchInput()?.nativeElement.focus();
|
|
6417
6569
|
}
|
|
6418
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6419
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.
|
|
6570
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6571
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", type: SearchInputComponent, isStandalone: true, selector: "SearchInput", inputs: { control: { classPropertyName: "control", publicName: "control", isSignal: true, isRequired: true, transformFunction: null }, controls: { classPropertyName: "controls", publicName: "controls", isSignal: true, isRequired: true, transformFunction: null }, keyboardNavigatorOptions: { classPropertyName: "keyboardNavigatorOptions", publicName: "keyboardNavigatorOptions", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hotkey: { classPropertyName: "hotkey", publicName: "hotkey", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, decoration: { classPropertyName: "decoration", publicName: "decoration", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSelected: "onSelected" }, host: { properties: { "class": "cn(variants(), disabled() && 'pointer-events-none opacity-50')" } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["search"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
6420
6572
|
<SearchIcon class="text-foreground size-4 rotate-0 transition-[rotate] duration-500 group-focus-within:rotate-90" />
|
|
6421
6573
|
<input
|
|
6422
6574
|
#search
|
|
@@ -6436,18 +6588,17 @@ class SearchInputComponent {
|
|
|
6436
6588
|
(input)="onInput($event)" />
|
|
6437
6589
|
|
|
6438
6590
|
<button
|
|
6439
|
-
|
|
6591
|
+
class="text-foreground peer-not-placeholder-shown:rotate-90 peer-not-placeholder-shown:cursor-pointer peer-not-placeholder-shown:opacity-100 rotate-0 transform opacity-0 transition-[rotate,opacity] duration-500 peer-placeholder-shown:pointer-events-none"
|
|
6440
6592
|
[tabindex]="control().value ? 0 : -1"
|
|
6441
|
-
class="text-foreground peer-not-placeholder-shown:rotate-90 peer-not-placeholder-shown:cursor-pointer peer-not-placeholder-shown:opacity-100 mr-1 rotate-0 transform opacity-0 transition-[rotate,opacity] duration-500 peer-placeholder-shown:pointer-events-none"
|
|
6442
6593
|
(keydown.enter)="clearSearch($event)"
|
|
6443
6594
|
(click)="clearSearch($event)">
|
|
6444
6595
|
<XMark class="size-4" aria-hidden="true" />
|
|
6445
6596
|
</button>
|
|
6446
6597
|
|
|
6447
6598
|
<ng-content />
|
|
6448
|
-
`, isInline: true, styles: [":host input[type=search]::-ms-clear,:host input[type=search]::-ms-reveal{appearance:none;width:0;height:0}:host input[type=search]::-webkit-search-decoration,:host input[type=search]::-webkit-search-cancel-button,:host input[type=search]::-webkit-search-results-button,:host input[type=search]::-webkit-search-results-decoration{appearance:none}\n"], dependencies: [{ kind: "component", type: SearchIcon, selector: "SearchIcon", inputs: ["class"
|
|
6599
|
+
`, isInline: true, styles: [":host input[type=search]::-ms-clear,:host input[type=search]::-ms-reveal{appearance:none;width:0;height:0}:host input[type=search]::-webkit-search-decoration,:host input[type=search]::-webkit-search-cancel-button,:host input[type=search]::-webkit-search-results-button,:host input[type=search]::-webkit-search-results-decoration{appearance:none}\n"], dependencies: [{ kind: "component", type: SearchIcon, selector: "SearchIcon", inputs: ["class"] }, { kind: "component", type: XMarkIConComponent, selector: "XMark, xmark, x-mark", inputs: ["class"] }, { kind: "directive", type: KeyboardNavigatorDirective, selector: "input[role=\"combobox\"]", inputs: ["keyboardNavigator", "aria-controls"], outputs: ["onFocus", "onBlur", "onSelected"] }] });
|
|
6449
6600
|
}
|
|
6450
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6601
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchInputComponent, decorators: [{
|
|
6451
6602
|
type: Component,
|
|
6452
6603
|
args: [{ selector: 'SearchInput', standalone: true, imports: [SearchIcon, XMarkIConComponent, KeyboardNavigatorDirective], template: `
|
|
6453
6604
|
<SearchIcon class="text-foreground size-4 rotate-0 transition-[rotate] duration-500 group-focus-within:rotate-90" />
|
|
@@ -6469,9 +6620,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6469
6620
|
(input)="onInput($event)" />
|
|
6470
6621
|
|
|
6471
6622
|
<button
|
|
6472
|
-
|
|
6623
|
+
class="text-foreground peer-not-placeholder-shown:rotate-90 peer-not-placeholder-shown:cursor-pointer peer-not-placeholder-shown:opacity-100 rotate-0 transform opacity-0 transition-[rotate,opacity] duration-500 peer-placeholder-shown:pointer-events-none"
|
|
6473
6624
|
[tabindex]="control().value ? 0 : -1"
|
|
6474
|
-
class="text-foreground peer-not-placeholder-shown:rotate-90 peer-not-placeholder-shown:cursor-pointer peer-not-placeholder-shown:opacity-100 mr-1 rotate-0 transform opacity-0 transition-[rotate,opacity] duration-500 peer-placeholder-shown:pointer-events-none"
|
|
6475
6625
|
(keydown.enter)="clearSearch($event)"
|
|
6476
6626
|
(click)="clearSearch($event)">
|
|
6477
6627
|
<XMark class="size-4" aria-hidden="true" />
|
|
@@ -6528,10 +6678,10 @@ class SortSelectorComponent {
|
|
|
6528
6678
|
this.onSort.emit(sort);
|
|
6529
6679
|
}
|
|
6530
6680
|
}
|
|
6531
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6532
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
6681
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SortSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6682
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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", 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" }] });
|
|
6533
6683
|
}
|
|
6534
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6684
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SortSelectorComponent, decorators: [{
|
|
6535
6685
|
type: Component,
|
|
6536
6686
|
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" }]
|
|
6537
6687
|
}] });
|
|
@@ -6582,8 +6732,8 @@ class SponsoredResultsComponent {
|
|
|
6582
6732
|
}
|
|
6583
6733
|
});
|
|
6584
6734
|
}
|
|
6585
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6586
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
6735
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SponsoredResultsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6736
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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) {
|
|
6587
6737
|
@for (link of sponsoredResults(); track $index) {
|
|
6588
6738
|
<li role="listitem" class="text-primary flex items-center gap-2 rounded px-3 py-2 font-bold">
|
|
6589
6739
|
<a href="{{ link.url }}" target="_blank" rel="noopener" title="{{ link.tooltip }}" class="result-link peer flex items-center gap-2 hover:underline">
|
|
@@ -6601,7 +6751,7 @@ class SponsoredResultsComponent {
|
|
|
6601
6751
|
}
|
|
6602
6752
|
}`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
6603
6753
|
}
|
|
6604
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6754
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SponsoredResultsComponent, decorators: [{
|
|
6605
6755
|
type: Component,
|
|
6606
6756
|
args: [{
|
|
6607
6757
|
selector: 'sponsored-results, SponsoredResults, sponsoredresults',
|
|
@@ -6649,8 +6799,8 @@ class ThemeSelectorComponent {
|
|
|
6649
6799
|
theme = theme.name;
|
|
6650
6800
|
this.themeStore.setCurrentTheme(this.scope(), theme);
|
|
6651
6801
|
}
|
|
6652
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6653
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
6802
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ThemeSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6803
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
6654
6804
|
<Menu>
|
|
6655
6805
|
<ng-content></ng-content>
|
|
6656
6806
|
|
|
@@ -6669,7 +6819,7 @@ class ThemeSelectorComponent {
|
|
|
6669
6819
|
</Menu>
|
|
6670
6820
|
`, 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"] }] });
|
|
6671
6821
|
}
|
|
6672
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6822
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ThemeSelectorComponent, decorators: [{
|
|
6673
6823
|
type: Component,
|
|
6674
6824
|
args: [{ selector: 'theme-selector', standalone: true, imports: [MenuComponent, NgStyle, MenuContentComponent], template: `
|
|
6675
6825
|
<Menu>
|
|
@@ -6709,8 +6859,8 @@ class ThemeToggleComponent {
|
|
|
6709
6859
|
return;
|
|
6710
6860
|
this.themeStore.setDarkMode(this.scope(), status);
|
|
6711
6861
|
}
|
|
6712
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6713
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
6862
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ThemeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6863
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
6714
6864
|
<label class="flex cursor-pointer select-none items-center gap-2">
|
|
6715
6865
|
@if (darkMode()) {
|
|
6716
6866
|
<i class="fa-fw far fa-toggle-large-on text-primary"></i>
|
|
@@ -6724,7 +6874,7 @@ class ThemeToggleComponent {
|
|
|
6724
6874
|
</label>
|
|
6725
6875
|
`, 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"] }] });
|
|
6726
6876
|
}
|
|
6727
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
6877
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ThemeToggleComponent, decorators: [{
|
|
6728
6878
|
type: Component,
|
|
6729
6879
|
args: [{ selector: 'theme-toggle', standalone: true, imports: [FormsModule], template: `
|
|
6730
6880
|
<label class="flex cursor-pointer select-none items-center gap-2">
|
|
@@ -6926,28 +7076,32 @@ class SearchFooterComponent {
|
|
|
6926
7076
|
event.stopPropagation();
|
|
6927
7077
|
this.loadMore.emit();
|
|
6928
7078
|
}
|
|
6929
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6930
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
7079
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7080
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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">
|
|
6931
7081
|
@if (hasMore() && config().showLoadMore) {
|
|
6932
|
-
<button
|
|
7082
|
+
<button decoration="outline" class="w-full" tabindex="0" [attr.title]="'loadMore' | transloco" (click)="onLoadMore($event)">
|
|
6933
7083
|
{{ 'loadMore' | transloco }}
|
|
6934
7084
|
</button>
|
|
6935
7085
|
}
|
|
6936
|
-
<button
|
|
6937
|
-
|
|
7086
|
+
<button decoration="underline" class="ml-auto" [attr.title]="'seeMore' | transloco" [routerLink]="[config().routerLink]">
|
|
7087
|
+
{{ 'seeMore' | transloco }}
|
|
7088
|
+
</button>
|
|
7089
|
+
</div>`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
6938
7090
|
}
|
|
6939
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7091
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchFooterComponent, decorators: [{
|
|
6940
7092
|
type: Component,
|
|
6941
7093
|
args: [{
|
|
6942
7094
|
selector: 'search-footer, searchfooter, SearchFooter',
|
|
6943
7095
|
imports: [TranslocoPipe, RouterLink, ButtonComponent],
|
|
6944
7096
|
template: ` <div class="flex flex-col px-2">
|
|
6945
7097
|
@if (hasMore() && config().showLoadMore) {
|
|
6946
|
-
<button
|
|
7098
|
+
<button decoration="outline" class="w-full" tabindex="0" [attr.title]="'loadMore' | transloco" (click)="onLoadMore($event)">
|
|
6947
7099
|
{{ 'loadMore' | transloco }}
|
|
6948
7100
|
</button>
|
|
6949
7101
|
}
|
|
6950
|
-
<button
|
|
7102
|
+
<button decoration="underline" class="ml-auto" [attr.title]="'seeMore' | transloco" [routerLink]="[config().routerLink]">
|
|
7103
|
+
{{ 'seeMore' | transloco }}
|
|
7104
|
+
</button>
|
|
6951
7105
|
</div>`
|
|
6952
7106
|
}]
|
|
6953
7107
|
}] });
|
|
@@ -6955,17 +7109,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6955
7109
|
class SearchHeaderComponent {
|
|
6956
7110
|
floating = inject(PopoverContentComponent, { skipSelf: true, optional: true });
|
|
6957
7111
|
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
6958
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6959
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
7112
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7113
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: SearchHeaderComponent, isStandalone: true, selector: "search-header, searchheader, SearchHeader", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
6960
7114
|
@if (floating) {
|
|
6961
7115
|
<div class="p-2">
|
|
6962
7116
|
<label class="text-xl font-bold">{{ label() }}</label>
|
|
6963
|
-
<
|
|
7117
|
+
<HorizontalDivider />
|
|
6964
7118
|
</div>
|
|
6965
7119
|
}
|
|
6966
|
-
`, isInline: true, dependencies: [{ kind: "component", type: HorizontalDividerComponent, selector: "
|
|
7120
|
+
`, isInline: true, dependencies: [{ kind: "component", type: HorizontalDividerComponent, selector: "horizontal-divider, HorizontalDivider, horizontaldivider" }] });
|
|
6967
7121
|
}
|
|
6968
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7122
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchHeaderComponent, decorators: [{
|
|
6969
7123
|
type: Component,
|
|
6970
7124
|
args: [{
|
|
6971
7125
|
selector: 'search-header, searchheader, SearchHeader',
|
|
@@ -6974,7 +7128,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6974
7128
|
@if (floating) {
|
|
6975
7129
|
<div class="p-2">
|
|
6976
7130
|
<label class="text-xl font-bold">{{ label() }}</label>
|
|
6977
|
-
<
|
|
7131
|
+
<HorizontalDivider />
|
|
6978
7132
|
</div>
|
|
6979
7133
|
}
|
|
6980
7134
|
`
|
|
@@ -7004,8 +7158,8 @@ class SearchListComponent {
|
|
|
7004
7158
|
e.stopPropagation();
|
|
7005
7159
|
this.delete.emit(index);
|
|
7006
7160
|
}
|
|
7007
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7008
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
7161
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7162
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
7009
7163
|
@for (search of paginatedSearches(); track $index) {
|
|
7010
7164
|
<li
|
|
7011
7165
|
role="listitem"
|
|
@@ -7047,9 +7201,9 @@ class SearchListComponent {
|
|
|
7047
7201
|
<ng-content />
|
|
7048
7202
|
</li>
|
|
7049
7203
|
}
|
|
7050
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7204
|
+
`, 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7051
7205
|
}
|
|
7052
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7206
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchListComponent, decorators: [{
|
|
7053
7207
|
type: Component,
|
|
7054
7208
|
args: [{
|
|
7055
7209
|
selector: 'search-list, searchlist, SearchList',
|
|
@@ -7153,8 +7307,8 @@ class RecentSearchesComponent {
|
|
|
7153
7307
|
loadMore() {
|
|
7154
7308
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
7155
7309
|
}
|
|
7156
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7157
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.
|
|
7310
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: RecentSearchesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7311
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.7", 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: `
|
|
7158
7312
|
<SearchHeader [label]="'searches.recent.label' | transloco" />
|
|
7159
7313
|
|
|
7160
7314
|
<SearchList
|
|
@@ -7170,7 +7324,7 @@ class RecentSearchesComponent {
|
|
|
7170
7324
|
<SearchFooter [hasMore]="hasMore()" [config]="config" (loadMore)="loadMore()" />
|
|
7171
7325
|
`, 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" }] });
|
|
7172
7326
|
}
|
|
7173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7327
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: RecentSearchesComponent, decorators: [{
|
|
7174
7328
|
type: Component,
|
|
7175
7329
|
args: [{ selector: 'RecentSearches, recent-searches', standalone: true, providers: [provideTranslocoScope('searches')], imports: [TranslocoPipe, ChildMarkerDirective, SearchHeaderComponent, SearchListComponent, SearchFooterComponent], template: `
|
|
7176
7330
|
<SearchHeader [label]="'searches.recent.label' | transloco" />
|
|
@@ -7226,8 +7380,8 @@ class SavedSearchesComponent {
|
|
|
7226
7380
|
loadMore() {
|
|
7227
7381
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
7228
7382
|
}
|
|
7229
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7230
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.
|
|
7383
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SavedSearchesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7384
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.7", 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: `
|
|
7231
7385
|
<SearchHeader [label]="'searches.saved.label' | transloco" />
|
|
7232
7386
|
|
|
7233
7387
|
<SearchList [paginatedSearches]="paginatedSearches()" deleteButtonTitle="searches.saved.remove" (delete)="onDelete($event)">
|
|
@@ -7239,7 +7393,7 @@ class SavedSearchesComponent {
|
|
|
7239
7393
|
<SearchFooter [hasMore]="hasMore()" [config]="config" (loadMore)="loadMore()" />
|
|
7240
7394
|
`, 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" }] });
|
|
7241
7395
|
}
|
|
7242
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7396
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SavedSearchesComponent, decorators: [{
|
|
7243
7397
|
type: Component,
|
|
7244
7398
|
args: [{ selector: 'saved-searches, SavedSearches', standalone: true, imports: [TranslocoPipe, ChildMarkerDirective, SearchHeaderComponent, SearchListComponent, SearchFooterComponent], providers: [provideTranslocoScope('searches')], template: `
|
|
7245
7399
|
<SearchHeader [label]="'searches.saved.label' | transloco" />
|
|
@@ -7271,8 +7425,8 @@ class SavedSearchDialog {
|
|
|
7271
7425
|
// emit closed event for the diaglog service
|
|
7272
7426
|
this.closed.emit('dialog-confirm');
|
|
7273
7427
|
}
|
|
7274
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7275
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.
|
|
7428
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SavedSearchDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7429
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", 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: `
|
|
7276
7430
|
<dialog #dialog>
|
|
7277
7431
|
<DialogHeader>
|
|
7278
7432
|
<DialogTitle>{{ 'searches.saved.save' | transloco }}</DialogTitle>
|
|
@@ -7291,7 +7445,7 @@ class SavedSearchDialog {
|
|
|
7291
7445
|
|
|
7292
7446
|
<DialogFooter class="flex-col">
|
|
7293
7447
|
<div class="ml-auto flex justify-end gap-2">
|
|
7294
|
-
<button
|
|
7448
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
7295
7449
|
{{ 'cancel' | transloco }}
|
|
7296
7450
|
</button>
|
|
7297
7451
|
<button (click)="confirm($event)" [disabled]="!saveName()">
|
|
@@ -7300,9 +7454,9 @@ class SavedSearchDialog {
|
|
|
7300
7454
|
</div>
|
|
7301
7455
|
</DialogFooter>
|
|
7302
7456
|
</dialog>
|
|
7303
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"
|
|
7457
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class", "variant"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { 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" }] });
|
|
7304
7458
|
}
|
|
7305
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7459
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SavedSearchDialog, decorators: [{
|
|
7306
7460
|
type: Component,
|
|
7307
7461
|
args: [{
|
|
7308
7462
|
selector: 'saved-search-dialog, savedsearchdialog, SavedSearchDialog',
|
|
@@ -7338,7 +7492,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7338
7492
|
|
|
7339
7493
|
<DialogFooter class="flex-col">
|
|
7340
7494
|
<div class="ml-auto flex justify-end gap-2">
|
|
7341
|
-
<button
|
|
7495
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
7342
7496
|
{{ 'cancel' | transloco }}
|
|
7343
7497
|
</button>
|
|
7344
7498
|
<button (click)="confirm($event)" [disabled]="!saveName()">
|
|
@@ -7377,14 +7531,14 @@ class BookmarkButtonComponent {
|
|
|
7377
7531
|
notify.success(this.transloco.translate('bookmarks.bookmarkAdded'), { duration: 2000 });
|
|
7378
7532
|
}
|
|
7379
7533
|
}
|
|
7380
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7381
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
7534
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BookmarkButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7535
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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()) {
|
|
7382
7536
|
<i class="fa-fw fa-bookmark fa-solid"></i>
|
|
7383
7537
|
} @else {
|
|
7384
7538
|
<i class="fa-fw fa-bookmark fa-regular"></i>
|
|
7385
7539
|
}`, isInline: true });
|
|
7386
7540
|
}
|
|
7387
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7541
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BookmarkButtonComponent, decorators: [{
|
|
7388
7542
|
type: Component,
|
|
7389
7543
|
args: [{
|
|
7390
7544
|
selector: 'bookmark-button, bookmarkbutton, BookmarkButton',
|
|
@@ -7476,12 +7630,12 @@ class BookmarksComponent {
|
|
|
7476
7630
|
e.stopPropagation();
|
|
7477
7631
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
7478
7632
|
}
|
|
7479
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7480
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
7633
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BookmarksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7634
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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 <HorizontalDivider />\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 <i class=\"fa-fw fas fa-bookmark shrink-0\" aria-hidden=\"true\"></i>\n\n <p class=\"line-clamp-1\">{{ bookmark.label }}</p>\n\n @if (bookmark.author) {\n <p class=\"line-clamp-1 text-neutral-500\">\n <i class=\"fa-fw far fa-user\" aria-hidden=\"true\"></i>\n {{ bookmark.author }}\n </p>\n }\n @if (bookmark.parentFolder) {\n <p class=\"line-clamp-1 text-neutral-500\">\n <i class=\"fa-fw far fa-folder\" aria-hidden=\"true\"></i>\n {{ bookmark.parentFolder }}\n </p>\n }\n\n <button\n title=\"{{ 'bookmarks.openBookmark' | transloco }}\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n [attr.title]=\"'bookmarks.removeBookmark' | transloco\"\n [attr.aria-label]=\"'bookmarks.removeBookmark' | transloco\"\n (click)=\"onDelete(bookmark, $event)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\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 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", 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: ButtonComponent, selector: "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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7481
7635
|
}
|
|
7482
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7636
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: BookmarksComponent, decorators: [{
|
|
7483
7637
|
type: Component,
|
|
7484
|
-
args: [{ selector: 'bookmarks, Bookmarks', standalone: true, imports: [TranslocoPipe, RouterLink, ButtonComponent, HorizontalDividerComponent, ListItemComponent], providers: [provideTranslocoScope('bookmarks')], template: "@if (floating) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'bookmarks.label' | transloco }}</label>\n <
|
|
7638
|
+
args: [{ selector: 'bookmarks, Bookmarks', standalone: true, imports: [TranslocoPipe, RouterLink, ButtonComponent, HorizontalDividerComponent, ListItemComponent], providers: [provideTranslocoScope('bookmarks')], template: "@if (floating) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'bookmarks.label' | transloco }}</label>\n <HorizontalDivider />\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 <i class=\"fa-fw fas fa-bookmark shrink-0\" aria-hidden=\"true\"></i>\n\n <p class=\"line-clamp-1\">{{ bookmark.label }}</p>\n\n @if (bookmark.author) {\n <p class=\"line-clamp-1 text-neutral-500\">\n <i class=\"fa-fw far fa-user\" aria-hidden=\"true\"></i>\n {{ bookmark.author }}\n </p>\n }\n @if (bookmark.parentFolder) {\n <p class=\"line-clamp-1 text-neutral-500\">\n <i class=\"fa-fw far fa-folder\" aria-hidden=\"true\"></i>\n {{ bookmark.parentFolder }}\n </p>\n }\n\n <button\n title=\"{{ 'bookmarks.openBookmark' | transloco }}\"\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n [attr.title]=\"'bookmarks.removeBookmark' | transloco\"\n [attr.aria-label]=\"'bookmarks.removeBookmark' | transloco\"\n (click)=\"onDelete(bookmark, $event)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\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 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", styles: [":host ul{scrollbar-width:thin}\n"] }]
|
|
7485
7639
|
}], ctorParameters: () => [] });
|
|
7486
7640
|
|
|
7487
7641
|
class DeleteCollectionDialog {
|
|
@@ -7501,8 +7655,8 @@ class DeleteCollectionDialog {
|
|
|
7501
7655
|
const message = this.translocoService.translate('collections.deleted');
|
|
7502
7656
|
notify.success(message, { duration: 2000 });
|
|
7503
7657
|
}
|
|
7504
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7505
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.
|
|
7658
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DeleteCollectionDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7659
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", 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: `
|
|
7506
7660
|
<dialog #dialog>
|
|
7507
7661
|
<DialogHeader>
|
|
7508
7662
|
<DialogTitle>{{ 'collections.deleteCollection' | transloco }}</DialogTitle>
|
|
@@ -7513,7 +7667,7 @@ class DeleteCollectionDialog {
|
|
|
7513
7667
|
</DialogContent>
|
|
7514
7668
|
|
|
7515
7669
|
<DialogFooter>
|
|
7516
|
-
<button
|
|
7670
|
+
<button decoration="outline" (click)="dialog.cancel($event)">
|
|
7517
7671
|
{{ 'cancel' | transloco }}
|
|
7518
7672
|
</button>
|
|
7519
7673
|
|
|
@@ -7522,9 +7676,9 @@ class DeleteCollectionDialog {
|
|
|
7522
7676
|
</button>
|
|
7523
7677
|
</DialogFooter>
|
|
7524
7678
|
</dialog>
|
|
7525
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7679
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class", "variant"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7526
7680
|
}
|
|
7527
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7681
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DeleteCollectionDialog, decorators: [{
|
|
7528
7682
|
type: Component,
|
|
7529
7683
|
args: [{
|
|
7530
7684
|
selector: 'delete-collection-dialog',
|
|
@@ -7551,7 +7705,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7551
7705
|
</DialogContent>
|
|
7552
7706
|
|
|
7553
7707
|
<DialogFooter>
|
|
7554
|
-
<button
|
|
7708
|
+
<button decoration="outline" (click)="dialog.cancel($event)">
|
|
7555
7709
|
{{ 'cancel' | transloco }}
|
|
7556
7710
|
</button>
|
|
7557
7711
|
|
|
@@ -7604,12 +7758,12 @@ class CollectionsComponent {
|
|
|
7604
7758
|
e.stopPropagation();
|
|
7605
7759
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
7606
7760
|
}
|
|
7607
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7608
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
7761
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CollectionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7762
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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 <HorizontalDivider />\n </div>\n}\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\">\n @for (collection of paginatedCollections(); track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" (click)=\"onClick(collection)\" (keydown.enter)=\"onClick(collection)\">\n <i class=\"fas fa-inbox\"></i>\n\n <p class=\"line-clamp-1\">{{ collection.name }}</p>\n\n <button\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n title=\"{{ 'collections.deleteCollection' | transloco }}\"\n [attr.aria-label]=\"'collections.deleteCollection' | transloco\"\n (click)=\"onDelete(collection, $index, $event)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\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: HorizontalDividerComponent, selector: "horizontal-divider, HorizontalDivider, horizontaldivider" }, { kind: "component", type: DeleteCollectionDialog, selector: "delete-collection-dialog" }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
7609
7763
|
}
|
|
7610
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
7764
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: CollectionsComponent, decorators: [{
|
|
7611
7765
|
type: Component,
|
|
7612
|
-
args: [{ selector: 'app-collections', standalone: true, imports: [TranslocoPipe, RouterLink, HorizontalDividerComponent, DeleteCollectionDialog, ButtonComponent, ListItemComponent], providers: [provideTranslocoScope('collections')], template: "@if (floating) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'collections.label' | transloco }}</label>\n <
|
|
7766
|
+
args: [{ selector: 'app-collections', standalone: true, imports: [TranslocoPipe, RouterLink, HorizontalDividerComponent, DeleteCollectionDialog, ButtonComponent, ListItemComponent], providers: [provideTranslocoScope('collections')], template: "@if (floating) {\n <div class=\"p-2\">\n <label class=\"text-xl font-bold\">{{ 'collections.label' | transloco }}</label>\n <HorizontalDivider />\n </div>\n}\n<ul class=\"flex max-h-[460px] flex-col overflow-auto\">\n @for (collection of paginatedCollections(); track $index) {\n <li role=\"listitem\" class=\"group h-10\" tabindex=\"0\" (click)=\"onClick(collection)\" (keydown.enter)=\"onClick(collection)\">\n <i class=\"fas fa-inbox\"></i>\n\n <p class=\"line-clamp-1\">{{ collection.name }}</p>\n\n <button\n class=\"text-destructive hover:text-destructive invisible ms-auto transition-transform hover:scale-125 group-hover:visible\"\n title=\"{{ 'collections.deleteCollection' | transloco }}\"\n [attr.aria-label]=\"'collections.deleteCollection' | transloco\"\n (click)=\"onDelete(collection, $index, $event)\">\n <i class=\"fa-fw fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\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" }]
|
|
7613
7767
|
}], ctorParameters: () => [] });
|
|
7614
7768
|
|
|
7615
7769
|
class AlertDialog {
|
|
@@ -7734,8 +7888,8 @@ class AlertDialog {
|
|
|
7734
7888
|
this.queryParamsStore.patch({ text: q.text, tab: q.tab, basket: q.basket, sort: q.sort, filters, name: q.name });
|
|
7735
7889
|
this.dialog().close(e);
|
|
7736
7890
|
}
|
|
7737
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7738
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
7891
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AlertDialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7892
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
7739
7893
|
<dialog #dialog>
|
|
7740
7894
|
<DialogHeader class="px-1">
|
|
7741
7895
|
<DialogTitle>{{ 'alerts.createAlert' | transloco }}</DialogTitle>
|
|
@@ -7743,7 +7897,7 @@ class AlertDialog {
|
|
|
7743
7897
|
|
|
7744
7898
|
<DialogContent class="flex flex-col gap-2 overflow-auto px-1">
|
|
7745
7899
|
<div class="mb-2">
|
|
7746
|
-
<label for="alertName" class="mb-1 block text-sm font-medium
|
|
7900
|
+
<label for="alertName" class="text-muted-foreground mb-1 block text-sm font-medium">{{ 'alerts.alertName' | transloco }}</label>
|
|
7747
7901
|
<input
|
|
7748
7902
|
id="alertName"
|
|
7749
7903
|
name="alertName"
|
|
@@ -7757,12 +7911,12 @@ class AlertDialog {
|
|
|
7757
7911
|
</div>
|
|
7758
7912
|
|
|
7759
7913
|
<div class="mb-2">
|
|
7760
|
-
<label class="mb-1 block text-sm font-medium
|
|
7914
|
+
<label class="text-muted-foreground mb-1 block text-sm font-medium" for="frequency">{{ 'alerts.alertFrequency' | transloco }}</label>
|
|
7761
7915
|
<div class="relative">
|
|
7762
7916
|
<select
|
|
7763
7917
|
id="frequency"
|
|
7764
7918
|
name="frequency"
|
|
7765
|
-
class="hover:outline-primary focus:outline-primary h-8 w-full appearance-none rounded-md border
|
|
7919
|
+
class="hover:outline-primary focus:outline-primary border-foreground/18 h-8 w-full appearance-none rounded-md border px-2 pr-8 hover:outline focus:outline"
|
|
7766
7920
|
id="alertFrequency"
|
|
7767
7921
|
[ngModel]="alertFrequency()"
|
|
7768
7922
|
(ngModelChange)="alertFrequency.set($event)">
|
|
@@ -7770,26 +7924,29 @@ class AlertDialog {
|
|
|
7770
7924
|
<option [value]="frequencyValue">{{ 'alerts.frequency.' + frequency[frequencyValue] | transloco }}</option>
|
|
7771
7925
|
}
|
|
7772
7926
|
</select>
|
|
7773
|
-
<ChevronRight
|
|
7927
|
+
<ChevronRight
|
|
7928
|
+
width="16"
|
|
7929
|
+
height="16"
|
|
7930
|
+
class="text-muted-foreground pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 rotate-90 transform" />
|
|
7774
7931
|
</div>
|
|
7775
7932
|
</div>
|
|
7776
7933
|
|
|
7777
7934
|
<div class="mb-2">
|
|
7778
|
-
<p class="mb-2 block text-sm font-medium
|
|
7935
|
+
<p class="text-muted-foreground mb-2 block text-sm font-medium">{{ 'alerts.repeatOn' | transloco }}</p>
|
|
7779
7936
|
<div class="weekdays-grid gap-1.5 px-2.5 py-0">
|
|
7780
7937
|
@for (day of weekdays; track $index) {
|
|
7781
7938
|
<div>
|
|
7782
7939
|
<input class="me-1" type="checkbox" id="day_{{ day.value }}" [checked]="dayChecked(day.value)" (change)="dayChange($event, day.value)" />
|
|
7783
|
-
<label role="button" for="day_{{ day.value }}" class="form-check-label user-select-none cursor-pointer">
|
|
7784
|
-
'alerts.weekdays.' + day.key | transloco
|
|
7785
|
-
|
|
7940
|
+
<label role="button" for="day_{{ day.value }}" class="form-check-label user-select-none cursor-pointer">
|
|
7941
|
+
{{ 'alerts.weekdays.' + day.key | transloco }}
|
|
7942
|
+
</label>
|
|
7786
7943
|
</div>
|
|
7787
7944
|
}
|
|
7788
7945
|
</div>
|
|
7789
7946
|
</div>
|
|
7790
7947
|
|
|
7791
7948
|
<div class="mb-6">
|
|
7792
|
-
<label class="mb-1 block text-sm font-medium
|
|
7949
|
+
<label class="text-muted-foreground mb-1 block text-sm font-medium" for="alertTimes">Time</label>
|
|
7793
7950
|
<input
|
|
7794
7951
|
type="time"
|
|
7795
7952
|
id="alertTimes"
|
|
@@ -7812,12 +7969,12 @@ class AlertDialog {
|
|
|
7812
7969
|
@if (alert || canUpdateQuery()) {
|
|
7813
7970
|
<div class="flex w-full flex-col gap-2">
|
|
7814
7971
|
@if (alert) {
|
|
7815
|
-
<button
|
|
7972
|
+
<button decoration="outline" (click)="execute($event)" [disabled]="!canUpdateQuery()">
|
|
7816
7973
|
{{ 'alerts.execute' | transloco }}
|
|
7817
7974
|
</button>
|
|
7818
7975
|
}
|
|
7819
7976
|
@if (canUpdateQuery()) {
|
|
7820
|
-
<button [disabled]="updateStatus() !== 'idle'"
|
|
7977
|
+
<button [disabled]="updateStatus() !== 'idle'" decoration="outline" (click)="updateQuery()">
|
|
7821
7978
|
@switch (updateStatus()) {
|
|
7822
7979
|
@case ('updating') {
|
|
7823
7980
|
<LoadingCircle class="size-4 animate-spin" width="16" height="16" />
|
|
@@ -7836,18 +7993,18 @@ class AlertDialog {
|
|
|
7836
7993
|
</div>
|
|
7837
7994
|
}
|
|
7838
7995
|
<div class="ml-auto flex justify-end gap-2">
|
|
7839
|
-
<button
|
|
7996
|
+
<button decoration="outline" (click)="dialog.cancel($event)">
|
|
7840
7997
|
{{ 'cancel' | transloco }}
|
|
7841
7998
|
</button>
|
|
7842
|
-
<button (click)="confirm($event)" [disabled]="invalidForm()">
|
|
7999
|
+
<button variant="primary" (click)="confirm($event)" [disabled]="invalidForm()">
|
|
7843
8000
|
{{ 'confirm' | transloco }}
|
|
7844
8001
|
</button>
|
|
7845
8002
|
</div>
|
|
7846
8003
|
</DialogFooter>
|
|
7847
8004
|
</dialog>
|
|
7848
|
-
`, isInline: true, styles: [".weekdays-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"
|
|
8005
|
+
`, isInline: true, styles: [".weekdays-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class", "variant"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { 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: ChevronRightIconComponent, selector: "chevron-right, ChevronRight, chevronright", 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" }] });
|
|
7849
8006
|
}
|
|
7850
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
8007
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AlertDialog, decorators: [{
|
|
7851
8008
|
type: Component,
|
|
7852
8009
|
args: [{ selector: 'alert-dialog, alertdialog, AlertDialog', standalone: true, imports: [
|
|
7853
8010
|
FormsModule,
|
|
@@ -7861,7 +8018,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7861
8018
|
InputComponent,
|
|
7862
8019
|
ChevronRightIconComponent,
|
|
7863
8020
|
LoadingCircleIconComponent,
|
|
7864
|
-
CircleCheckIconComponent
|
|
8021
|
+
CircleCheckIconComponent,
|
|
8022
|
+
SelectOptionDirective
|
|
7865
8023
|
], providers: [provideTranslocoScope('alerts')], template: `
|
|
7866
8024
|
<dialog #dialog>
|
|
7867
8025
|
<DialogHeader class="px-1">
|
|
@@ -7870,7 +8028,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7870
8028
|
|
|
7871
8029
|
<DialogContent class="flex flex-col gap-2 overflow-auto px-1">
|
|
7872
8030
|
<div class="mb-2">
|
|
7873
|
-
<label for="alertName" class="mb-1 block text-sm font-medium
|
|
8031
|
+
<label for="alertName" class="text-muted-foreground mb-1 block text-sm font-medium">{{ 'alerts.alertName' | transloco }}</label>
|
|
7874
8032
|
<input
|
|
7875
8033
|
id="alertName"
|
|
7876
8034
|
name="alertName"
|
|
@@ -7884,12 +8042,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7884
8042
|
</div>
|
|
7885
8043
|
|
|
7886
8044
|
<div class="mb-2">
|
|
7887
|
-
<label class="mb-1 block text-sm font-medium
|
|
8045
|
+
<label class="text-muted-foreground mb-1 block text-sm font-medium" for="frequency">{{ 'alerts.alertFrequency' | transloco }}</label>
|
|
7888
8046
|
<div class="relative">
|
|
7889
8047
|
<select
|
|
7890
8048
|
id="frequency"
|
|
7891
8049
|
name="frequency"
|
|
7892
|
-
class="hover:outline-primary focus:outline-primary h-8 w-full appearance-none rounded-md border
|
|
8050
|
+
class="hover:outline-primary focus:outline-primary border-foreground/18 h-8 w-full appearance-none rounded-md border px-2 pr-8 hover:outline focus:outline"
|
|
7893
8051
|
id="alertFrequency"
|
|
7894
8052
|
[ngModel]="alertFrequency()"
|
|
7895
8053
|
(ngModelChange)="alertFrequency.set($event)">
|
|
@@ -7897,26 +8055,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7897
8055
|
<option [value]="frequencyValue">{{ 'alerts.frequency.' + frequency[frequencyValue] | transloco }}</option>
|
|
7898
8056
|
}
|
|
7899
8057
|
</select>
|
|
7900
|
-
<ChevronRight
|
|
8058
|
+
<ChevronRight
|
|
8059
|
+
width="16"
|
|
8060
|
+
height="16"
|
|
8061
|
+
class="text-muted-foreground pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 rotate-90 transform" />
|
|
7901
8062
|
</div>
|
|
7902
8063
|
</div>
|
|
7903
8064
|
|
|
7904
8065
|
<div class="mb-2">
|
|
7905
|
-
<p class="mb-2 block text-sm font-medium
|
|
8066
|
+
<p class="text-muted-foreground mb-2 block text-sm font-medium">{{ 'alerts.repeatOn' | transloco }}</p>
|
|
7906
8067
|
<div class="weekdays-grid gap-1.5 px-2.5 py-0">
|
|
7907
8068
|
@for (day of weekdays; track $index) {
|
|
7908
8069
|
<div>
|
|
7909
8070
|
<input class="me-1" type="checkbox" id="day_{{ day.value }}" [checked]="dayChecked(day.value)" (change)="dayChange($event, day.value)" />
|
|
7910
|
-
<label role="button" for="day_{{ day.value }}" class="form-check-label user-select-none cursor-pointer">
|
|
7911
|
-
'alerts.weekdays.' + day.key | transloco
|
|
7912
|
-
|
|
8071
|
+
<label role="button" for="day_{{ day.value }}" class="form-check-label user-select-none cursor-pointer">
|
|
8072
|
+
{{ 'alerts.weekdays.' + day.key | transloco }}
|
|
8073
|
+
</label>
|
|
7913
8074
|
</div>
|
|
7914
8075
|
}
|
|
7915
8076
|
</div>
|
|
7916
8077
|
</div>
|
|
7917
8078
|
|
|
7918
8079
|
<div class="mb-6">
|
|
7919
|
-
<label class="mb-1 block text-sm font-medium
|
|
8080
|
+
<label class="text-muted-foreground mb-1 block text-sm font-medium" for="alertTimes">Time</label>
|
|
7920
8081
|
<input
|
|
7921
8082
|
type="time"
|
|
7922
8083
|
id="alertTimes"
|
|
@@ -7939,12 +8100,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7939
8100
|
@if (alert || canUpdateQuery()) {
|
|
7940
8101
|
<div class="flex w-full flex-col gap-2">
|
|
7941
8102
|
@if (alert) {
|
|
7942
|
-
<button
|
|
8103
|
+
<button decoration="outline" (click)="execute($event)" [disabled]="!canUpdateQuery()">
|
|
7943
8104
|
{{ 'alerts.execute' | transloco }}
|
|
7944
8105
|
</button>
|
|
7945
8106
|
}
|
|
7946
8107
|
@if (canUpdateQuery()) {
|
|
7947
|
-
<button [disabled]="updateStatus() !== 'idle'"
|
|
8108
|
+
<button [disabled]="updateStatus() !== 'idle'" decoration="outline" (click)="updateQuery()">
|
|
7948
8109
|
@switch (updateStatus()) {
|
|
7949
8110
|
@case ('updating') {
|
|
7950
8111
|
<LoadingCircle class="size-4 animate-spin" width="16" height="16" />
|
|
@@ -7963,10 +8124,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7963
8124
|
</div>
|
|
7964
8125
|
}
|
|
7965
8126
|
<div class="ml-auto flex justify-end gap-2">
|
|
7966
|
-
<button
|
|
8127
|
+
<button decoration="outline" (click)="dialog.cancel($event)">
|
|
7967
8128
|
{{ 'cancel' | transloco }}
|
|
7968
8129
|
</button>
|
|
7969
|
-
<button (click)="confirm($event)" [disabled]="invalidForm()">
|
|
8130
|
+
<button variant="primary" (click)="confirm($event)" [disabled]="invalidForm()">
|
|
7970
8131
|
{{ 'confirm' | transloco }}
|
|
7971
8132
|
</button>
|
|
7972
8133
|
</div>
|
|
@@ -8017,12 +8178,12 @@ class AlertsComponent {
|
|
|
8017
8178
|
}
|
|
8018
8179
|
this.tmpAlerts.splice(drop.currentIndex, 0, this.tmpAlerts.splice(drop.previousIndex, 1)[0]);
|
|
8019
8180
|
}
|
|
8020
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8021
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
8181
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AlertsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8182
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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 variant=\"primary\" 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", 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" }] });
|
|
8022
8183
|
}
|
|
8023
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
8184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AlertsComponent, decorators: [{
|
|
8024
8185
|
type: Component,
|
|
8025
|
-
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 <
|
|
8186
|
+
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 variant=\"primary\" class=\"w-full\" [attr.title]=\"'alerts.createAlert' | transloco\" (click)=\"createAlert()\">\n {{ 'alerts.createAlert' | transloco }}\n </button>\n</div>\n" }]
|
|
8026
8187
|
}], ctorParameters: () => [] });
|
|
8027
8188
|
|
|
8028
8189
|
class OverrideUserDialogComponent {
|
|
@@ -8082,8 +8243,8 @@ class OverrideUserDialogComponent {
|
|
|
8082
8243
|
});
|
|
8083
8244
|
}
|
|
8084
8245
|
}
|
|
8085
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8086
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.
|
|
8246
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OverrideUserDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8247
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", 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: `
|
|
8087
8248
|
<dialog #dialog class="max-w-md">
|
|
8088
8249
|
<DialogHeader>
|
|
8089
8250
|
<DialogTitle>{{ 'dialogs.overrideUser.title' | transloco }}</DialogTitle>
|
|
@@ -8120,7 +8281,7 @@ class OverrideUserDialogComponent {
|
|
|
8120
8281
|
</DialogContent>
|
|
8121
8282
|
|
|
8122
8283
|
<DialogFooter>
|
|
8123
|
-
<button
|
|
8284
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8124
8285
|
{{ 'cancel' | transloco }}
|
|
8125
8286
|
</button>
|
|
8126
8287
|
|
|
@@ -8129,9 +8290,9 @@ class OverrideUserDialogComponent {
|
|
|
8129
8290
|
</button>
|
|
8130
8291
|
</DialogFooter>
|
|
8131
8292
|
</dialog>
|
|
8132
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"
|
|
8293
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "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", inputs: ["class", "variant"], outputs: ["closed"] }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8133
8294
|
}
|
|
8134
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
8295
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: OverrideUserDialogComponent, decorators: [{
|
|
8135
8296
|
type: Component,
|
|
8136
8297
|
args: [{
|
|
8137
8298
|
selector: 'override-user-dialog',
|
|
@@ -8185,7 +8346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
8185
8346
|
</DialogContent>
|
|
8186
8347
|
|
|
8187
8348
|
<DialogFooter>
|
|
8188
|
-
<button
|
|
8349
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8189
8350
|
{{ 'cancel' | transloco }}
|
|
8190
8351
|
</button>
|
|
8191
8352
|
|
|
@@ -8212,8 +8373,8 @@ class ResetUserSettingsDialogComponent {
|
|
|
8212
8373
|
notify.success(message, { duration: 2000 });
|
|
8213
8374
|
});
|
|
8214
8375
|
}
|
|
8215
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8216
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.
|
|
8376
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ResetUserSettingsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8377
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", 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: `
|
|
8217
8378
|
<dialog #dialog>
|
|
8218
8379
|
<DialogHeader>
|
|
8219
8380
|
<DialogTitle>{{ 'dialogs.resetUserSettings.title' | transloco }}</DialogTitle>
|
|
@@ -8224,7 +8385,7 @@ class ResetUserSettingsDialogComponent {
|
|
|
8224
8385
|
</DialogContent>
|
|
8225
8386
|
|
|
8226
8387
|
<DialogFooter>
|
|
8227
|
-
<button
|
|
8388
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8228
8389
|
{{ 'cancel' | transloco }}
|
|
8229
8390
|
</button>
|
|
8230
8391
|
|
|
@@ -8233,9 +8394,9 @@ class ResetUserSettingsDialogComponent {
|
|
|
8233
8394
|
</button>
|
|
8234
8395
|
</DialogFooter>
|
|
8235
8396
|
</dialog>
|
|
8236
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8397
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class", "variant"], outputs: ["closed"] }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8237
8398
|
}
|
|
8238
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
8399
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ResetUserSettingsDialogComponent, decorators: [{
|
|
8239
8400
|
type: Component,
|
|
8240
8401
|
args: [{
|
|
8241
8402
|
selector: 'reset-user-settings-dialog',
|
|
@@ -8253,7 +8414,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
8253
8414
|
</DialogContent>
|
|
8254
8415
|
|
|
8255
8416
|
<DialogFooter>
|
|
8256
|
-
<button
|
|
8417
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8257
8418
|
{{ 'cancel' | transloco }}
|
|
8258
8419
|
</button>
|
|
8259
8420
|
|
|
@@ -8281,12 +8442,12 @@ class DidYouMeanComponent {
|
|
|
8281
8442
|
this.queryParamsStore.patch({ spellingCorrectionMode: 'dymonly' });
|
|
8282
8443
|
this.router.navigate([], { queryParamsHandling: 'merge', queryParams: { c: 'dymonly', q: this.original() } });
|
|
8283
8444
|
}
|
|
8284
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8285
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
8445
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DidYouMeanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8446
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: "@switch (spellingCorrectionMode()?.toLowerCase()) {\n @case ('dymonly') {\n <p>\n <span class=\"me-1\">{{ 'didYouMean.didYouMean' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n <span>?</span>\n </p>\n }\n @case ('correct') {\n <p>\n <span class=\"me-1\">{{ 'didYouMean.showingResultsFor' | transloco }}</span>\n <a class=\"text-primary font-bold\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n\n <span class=\"me-1\">. {{ 'didYouMean.searchInsteadFor' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectOriginal()\">{{ original() }}</a>\n </p>\n }\n @case ('smart') {\n <p>\n <span class=\"me-1\">{{ 'didYouMean.showingResultsFor' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectOriginal()\">{{ original() }}</a>\n\n <span class=\"mx-1\">and</span>\n <a class=\"text-primary font-bold\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n </p>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8286
8447
|
}
|
|
8287
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
8448
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DidYouMeanComponent, decorators: [{
|
|
8288
8449
|
type: Component,
|
|
8289
|
-
args: [{ selector: '
|
|
8450
|
+
args: [{ selector: 'did-you-mean, DidYouMean, didyoumean', standalone: true, imports: [RouterModule, TranslocoPipe], providers: [provideTranslocoScope('did-you-mean')], template: "@switch (spellingCorrectionMode()?.toLowerCase()) {\n @case ('dymonly') {\n <p>\n <span class=\"me-1\">{{ 'didYouMean.didYouMean' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n <span>?</span>\n </p>\n }\n @case ('correct') {\n <p>\n <span class=\"me-1\">{{ 'didYouMean.showingResultsFor' | transloco }}</span>\n <a class=\"text-primary font-bold\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n\n <span class=\"me-1\">. {{ 'didYouMean.searchInsteadFor' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectOriginal()\">{{ original() }}</a>\n </p>\n }\n @case ('smart') {\n <p>\n <span class=\"me-1\">{{ 'didYouMean.showingResultsFor' | transloco }}</span>\n <a class=\"text-primary\" role=\"button\" (click)=\"selectOriginal()\">{{ original() }}</a>\n\n <span class=\"mx-1\">and</span>\n <a class=\"text-primary font-bold\" role=\"button\" (click)=\"selectCorrected()\">{{ correction() }}</a>\n </p>\n }\n}\n" }]
|
|
8290
8451
|
}] });
|
|
8291
8452
|
|
|
8292
8453
|
/**
|
|
@@ -8405,10 +8566,10 @@ class SignInComponent {
|
|
|
8405
8566
|
this.router.navigate(['/']);
|
|
8406
8567
|
}
|
|
8407
8568
|
}
|
|
8408
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8409
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: SignInComponent, isStandalone: true, selector: "signIn, signin, sign-in", providers: [provideTranslocoScope('login')], ngImport: i0, template: "<Card cdkTrapFocus cdkTrapFocusAutoCapture=\"true\">\n <CardHeader>\n <ng-content select=\"[logo]\">\n <svg\n version=\"1.1\"\n id=\"Calque_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 858 228\"\n style=\"enable-background: new 0 0 858 228\"\n xml:space=\"preserve\">\n <style type=\"text/css\">\n .st0 {\n fill: #0040bf;\n }\n .st1 {\n fill: url(#SVGID_1_);\n }\n .st2 {\n fill: url(#SVGID_00000085217246274894832600000009342302383523206054_);\n }\n </style>\n <path\n class=\"st0\"\n d=\"M44.7,168.7c-10.1-4.1-17.6-9.9-22.5-17.1c-5-7.3-7.6-15.7-8.1-25.2h25.7c0.5,10.2,4.6,17.9,12.2,23.1\n c7.6,5.2,18.4,7.8,32.4,7.8c13.5,0,23.5-2.2,30.2-6.5c6.7-4.3,10-10.4,10-18.1c0-6.5-1.7-11.4-5.2-14.6c-3.5-3.2-8.5-5.5-15.1-7\n c-6.6-1.5-14.6-2.9-24.2-4.1c-12.5-1.6-23.4-3.8-32.7-6.4C38.1,98,31,93.9,25.9,88.4c-5-5.5-7.5-13.1-7.5-22.9\n c0-9.1,2.6-16.8,7.7-23.1c5.2-6.3,12.5-11.1,22-14.5c9.5-3.3,20.7-5,33.4-5c19.3,0,34.3,3.8,45.1,11.5c10.8,7.7,16.6,18.4,17.4,32.1\n h-24.9c-0.5-9-4.2-15.6-11.1-19.9c-6.9-4.3-16.1-6.4-27.6-6.4c-11.8,0-21,2-27.4,6.1c-6.5,4.1-9.7,9.6-9.7,16.5\n c0,5.8,1.6,10.2,4.7,13.1c3.1,2.9,7.9,5.1,14.3,6.5c6.4,1.4,14.5,2.8,24.3,4c9.6,1.2,18.3,2.7,26.1,4.4c7.7,1.7,14.4,4.1,20,7.2\n c5.6,3.1,9.8,7.3,12.7,12.5c2.9,5.2,4.4,12,4.4,20.3c0,13.6-5.6,24.3-16.9,32.2c-11.3,7.9-27.7,11.8-49.3,11.8\n C67.7,174.9,54.7,172.9,44.7,168.7z\" />\n <path\n class=\"st0\"\n d=\"M346.6,168.2c-9.4-4.5-16.6-10.9-21.7-19.2c-5.1-8.3-7.6-18.1-7.6-29.4c0-11.5,2.5-21.5,7.6-29.9\n c5.1-8.4,12.3-14.8,21.5-19.4c9.2-4.6,20.1-6.8,32.6-6.8c13,0,24.2,2.4,33.3,7.1c9.2,4.8,16.1,11.6,20.7,20.6\n c4.6,9,6.5,19.8,5.7,32.4h-97.8c0.3,10.9,3.9,19.3,10.9,25.3c7,6,16.5,9,28.4,9c9.2,0,17-1.7,23.2-5c6.2-3.3,10.3-7.8,12-13.4h22.6\n c-1.1,7.1-4.3,13.2-9.7,18.5c-5.4,5.3-12.3,9.4-20.7,12.3c-8.4,2.9-17.8,4.4-28.1,4.4C367,174.9,356,172.7,346.6,168.2z M352.5,88.4\n c-6.7,5.2-10.6,12.4-11.8,21.5h74.4c-0.4-9.4-3.8-16.6-10.3-21.7c-6.5-5.1-15.1-7.6-26-7.6C367.9,80.6,359.2,83.2,352.5,88.4z\" />\n <path\n class=\"st0\"\n d=\"M546,151.9h-1c-3.4,7.1-9,12.7-16.9,16.8c-7.9,4.1-16.7,6.2-26.5,6.2c-10.7,0-20.1-2.3-28.1-6.8\n c-8-4.6-14.3-11-18.8-19.5c-4.5-8.4-6.7-18.3-6.7-29.6c0-11.4,2.2-21.3,6.7-29.6c4.5-8.3,10.8-14.7,18.9-19.2\n c8.1-4.5,17.4-6.7,28-6.7c11,0,20.3,2,27.8,6c7.5,4,12.9,9.3,16,15.8h1l0.8-20.2h22.4v141.9H546V151.9z M528.6,151.9\n c5.6-3.1,10-7.3,12.9-12.4c3-5.2,4.5-10.7,4.5-16.7v-7.9c0-6-1.5-11.4-4.5-16.4c-3-5-7.3-8.9-12.9-11.9c-5.6-3-12.5-4.5-20.5-4.5\n c-10.7,0-19.5,3.2-26.2,9.7c-6.7,6.5-10.1,15.6-10.1,27.4c0,11.6,3.3,20.7,10,27.4c6.7,6.7,15.4,10.1,26.3,10.1\n C516.1,156.6,522.9,155,528.6,151.9z\" />\n <linearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"780.8157\" y1=\"119.2805\" x2=\"690.0867\" y2=\"119.2805\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n class=\"st1\"\n d=\"M803.4,65.3l-0.8,20.2h-1c-3.3-6.5-8.6-11.8-16.1-15.8c-7.5-4-16.7-6-27.7-6c-10.6,0-19.9,2.2-28,6.7\n c-8.1,4.5-14.4,10.9-18.9,19.2c-4.5,8.3-6.7,18.2-6.7,29.8c0,11.3,2.2,21.1,6.7,29.5s10.7,14.8,18.8,19.4c8,4.6,17.4,6.8,28.1,6.8\n c9.9,0,18.8-2.1,26.6-6.2c7.8-4.1,14.4-12.2,17.8-19.3h23.6V65.3H803.4z M802.2,122.7c0,6-1.5,11.6-4.5,16.7\n c-3,5.2-7.3,9.3-12.9,12.4c-5.6,3.1-12.5,4.7-20.5,4.7c-10.9,0-19.6-3.3-26.3-10c-6.7-6.7-10-15.8-10-27.3c0-12,3.4-21.2,10.1-27.6\n c6.7-6.5,15.5-9.7,26.2-9.7c8,0,14.8,1.5,20.5,4.5c5.6,3,10,7,12.9,11.9c3,5,4.5,10.4,4.5,16.2V122.7z\" />\n <linearGradient\n id=\"SVGID_00000152963432808947599350000011020247854886079881_\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"780.8157\"\n y1=\"161.271\"\n x2=\"690.0867\"\n y2=\"161.271\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n style=\"fill: url(#SVGID_00000152963432808947599350000011020247854886079881_)\"\n d=\"M843.9,161.3c0,6.5-5.3,11.8-11.8,11.8l0,0\n c-6.5,0-11.8-5.3-11.8-11.8v0c0-6.5,5.3-11.8,11.8-11.8l0,0C838.6,149.4,843.9,154.7,843.9,161.3\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n <g>\n <polygon class=\"st0\" points=\"159.2,149.4 159.2,173.1 182.8,173.1 182.8,149.4 182.8,65.3 159.2,65.3 \t\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n </g>\n <path\n class=\"st0\"\n d=\"M302.7,84.2c-4-7.3-9.5-12.6-16.5-15.8c-7-3.2-15.1-4.8-24.4-4.8c-9.2,0-17.8,2.1-25.8,6.2\n c-7.9,4.1-13.9,10-17.8,17.6h-1.4l-0.6-22.2h-23v107.8h23.6v-53.4c0-7.5,1.6-14,4.7-19.7c3.1-5.6,7.5-10.1,13.1-13.2\n c5.6-3.2,12.2-4.8,19.7-4.8c10.6,0,18.4,3,23.3,8.9c5,5.9,7.4,15,7.4,27.2v55h23.6V114C308.7,101.5,306.7,91.6,302.7,84.2z\" />\n <path\n class=\"st0\"\n d=\"M671.7,65.3v53.4c0,7.5-1.6,14.1-4.7,19.8c-3.1,5.7-7.5,10.2-13.1,13.4c-5.6,3.2-12.2,4.8-19.7,4.8\n c-10.7,0-18.6-3-23.5-9.1c-5-6-7.4-15-7.4-27V65.3h-23.4v59.5c0,12.2,2,22,5.9,29.4c3.9,7.3,9.4,12.6,16.5,15.9\n c7.1,3.3,15.2,4.9,24.5,4.9c9.6,0,18.4-2.1,26.2-6.3c7.6-4.1,15-11.3,18.9-18.6v23.1h23.4v-23.6v-5.2v-79H671.7z\" />\n </svg>\n </ng-content>\n @if (authenticated()) {\n <h3 class=\"whitespace-nowrap text-2xl font-semibold tracking-tight\">{{ 'login.welcomeBack' | transloco: { name: user()?.fullName ?? '' } }}</h3>\n <p class=\"text-muted-foreground text-sm\">{{ 'login.youAreLoggedIn' | transloco }}</p>\n }\n </CardHeader>\n\n @if (!authenticated()) {\n <CardContent>\n <div class=\"grid gap-4\">\n @if (!config.autoOAuthProvider && !config.autoSAMLProvider) {\n <div class=\"grid gap-2\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"username\">{{\n 'login.username' | transloco\n }}</label>\n\n <input\n type=\"text\"\n id=\"username\"\n required\n [ngModel]=\"credentials().username\"\n (ngModelChange)=\"updateCredentials({ username: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n <div class=\"grid gap-2\">\n <div class=\"flex items-center\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"password\">{{\n 'login.password' | transloco\n }}</label>\n </div>\n <input\n type=\"password\"\n id=\"password\"\n required\n [ngModel]=\"credentials().password\"\n (ngModelChange)=\"updateCredentials({ password: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n <button [disabled]=\"!valid()\" (click)=\"handleLoginWithCredentials()\">{{ 'login.connect' | transloco }}</button>\n } @else {\n <button (click)=\"handleLogin()\">{{ 'login.SignInWith' | transloco: { provider: config.autoOAuthProvider ? 'OAuth' : 'SAML' } }}</button>\n }\n </div>\n </CardContent>\n } @else {\n <CardFooter class=\"justify-between gap-2\">\n <button class=\"w-full\" (click)=\"handleLogout()\" type=\"submit\">{{ 'login.disconnect' | transloco }}</button>\n <button class=\"w-full\" variant=\"ghost\" (click)=\"handleBack()\">{{ 'login.back' | transloco }}</button>\n </CardFooter>\n }\n</Card>\n", styles: [":host{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:2rem}.btn-primary{background-color:#000;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"password\"], input[type=\"number\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "directive", type: CardComponent, selector: ".card, card, Card", inputs: ["class"] }, { 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" }] });
|
|
8569
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SignInComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8570
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: SignInComponent, isStandalone: true, selector: "signIn, signin, sign-in", providers: [provideTranslocoScope('login')], ngImport: i0, template: "<Card hover=\"no\" cdkTrapFocus cdkTrapFocusAutoCapture=\"true\">\n <CardHeader>\n <ng-content select=\"[logo]\">\n <svg\n version=\"1.1\"\n id=\"Calque_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 858 228\"\n style=\"enable-background: new 0 0 858 228\"\n xml:space=\"preserve\">\n <style type=\"text/css\">\n .st0 {\n fill: #0040bf;\n }\n .st1 {\n fill: url(#SVGID_1_);\n }\n .st2 {\n fill: url(#SVGID_00000085217246274894832600000009342302383523206054_);\n }\n </style>\n <path\n class=\"st0\"\n d=\"M44.7,168.7c-10.1-4.1-17.6-9.9-22.5-17.1c-5-7.3-7.6-15.7-8.1-25.2h25.7c0.5,10.2,4.6,17.9,12.2,23.1\n c7.6,5.2,18.4,7.8,32.4,7.8c13.5,0,23.5-2.2,30.2-6.5c6.7-4.3,10-10.4,10-18.1c0-6.5-1.7-11.4-5.2-14.6c-3.5-3.2-8.5-5.5-15.1-7\n c-6.6-1.5-14.6-2.9-24.2-4.1c-12.5-1.6-23.4-3.8-32.7-6.4C38.1,98,31,93.9,25.9,88.4c-5-5.5-7.5-13.1-7.5-22.9\n c0-9.1,2.6-16.8,7.7-23.1c5.2-6.3,12.5-11.1,22-14.5c9.5-3.3,20.7-5,33.4-5c19.3,0,34.3,3.8,45.1,11.5c10.8,7.7,16.6,18.4,17.4,32.1\n h-24.9c-0.5-9-4.2-15.6-11.1-19.9c-6.9-4.3-16.1-6.4-27.6-6.4c-11.8,0-21,2-27.4,6.1c-6.5,4.1-9.7,9.6-9.7,16.5\n c0,5.8,1.6,10.2,4.7,13.1c3.1,2.9,7.9,5.1,14.3,6.5c6.4,1.4,14.5,2.8,24.3,4c9.6,1.2,18.3,2.7,26.1,4.4c7.7,1.7,14.4,4.1,20,7.2\n c5.6,3.1,9.8,7.3,12.7,12.5c2.9,5.2,4.4,12,4.4,20.3c0,13.6-5.6,24.3-16.9,32.2c-11.3,7.9-27.7,11.8-49.3,11.8\n C67.7,174.9,54.7,172.9,44.7,168.7z\" />\n <path\n class=\"st0\"\n d=\"M346.6,168.2c-9.4-4.5-16.6-10.9-21.7-19.2c-5.1-8.3-7.6-18.1-7.6-29.4c0-11.5,2.5-21.5,7.6-29.9\n c5.1-8.4,12.3-14.8,21.5-19.4c9.2-4.6,20.1-6.8,32.6-6.8c13,0,24.2,2.4,33.3,7.1c9.2,4.8,16.1,11.6,20.7,20.6\n c4.6,9,6.5,19.8,5.7,32.4h-97.8c0.3,10.9,3.9,19.3,10.9,25.3c7,6,16.5,9,28.4,9c9.2,0,17-1.7,23.2-5c6.2-3.3,10.3-7.8,12-13.4h22.6\n c-1.1,7.1-4.3,13.2-9.7,18.5c-5.4,5.3-12.3,9.4-20.7,12.3c-8.4,2.9-17.8,4.4-28.1,4.4C367,174.9,356,172.7,346.6,168.2z M352.5,88.4\n c-6.7,5.2-10.6,12.4-11.8,21.5h74.4c-0.4-9.4-3.8-16.6-10.3-21.7c-6.5-5.1-15.1-7.6-26-7.6C367.9,80.6,359.2,83.2,352.5,88.4z\" />\n <path\n class=\"st0\"\n d=\"M546,151.9h-1c-3.4,7.1-9,12.7-16.9,16.8c-7.9,4.1-16.7,6.2-26.5,6.2c-10.7,0-20.1-2.3-28.1-6.8\n c-8-4.6-14.3-11-18.8-19.5c-4.5-8.4-6.7-18.3-6.7-29.6c0-11.4,2.2-21.3,6.7-29.6c4.5-8.3,10.8-14.7,18.9-19.2\n c8.1-4.5,17.4-6.7,28-6.7c11,0,20.3,2,27.8,6c7.5,4,12.9,9.3,16,15.8h1l0.8-20.2h22.4v141.9H546V151.9z M528.6,151.9\n c5.6-3.1,10-7.3,12.9-12.4c3-5.2,4.5-10.7,4.5-16.7v-7.9c0-6-1.5-11.4-4.5-16.4c-3-5-7.3-8.9-12.9-11.9c-5.6-3-12.5-4.5-20.5-4.5\n c-10.7,0-19.5,3.2-26.2,9.7c-6.7,6.5-10.1,15.6-10.1,27.4c0,11.6,3.3,20.7,10,27.4c6.7,6.7,15.4,10.1,26.3,10.1\n C516.1,156.6,522.9,155,528.6,151.9z\" />\n <linearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"780.8157\" y1=\"119.2805\" x2=\"690.0867\" y2=\"119.2805\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n class=\"st1\"\n d=\"M803.4,65.3l-0.8,20.2h-1c-3.3-6.5-8.6-11.8-16.1-15.8c-7.5-4-16.7-6-27.7-6c-10.6,0-19.9,2.2-28,6.7\n c-8.1,4.5-14.4,10.9-18.9,19.2c-4.5,8.3-6.7,18.2-6.7,29.8c0,11.3,2.2,21.1,6.7,29.5s10.7,14.8,18.8,19.4c8,4.6,17.4,6.8,28.1,6.8\n c9.9,0,18.8-2.1,26.6-6.2c7.8-4.1,14.4-12.2,17.8-19.3h23.6V65.3H803.4z M802.2,122.7c0,6-1.5,11.6-4.5,16.7\n c-3,5.2-7.3,9.3-12.9,12.4c-5.6,3.1-12.5,4.7-20.5,4.7c-10.9,0-19.6-3.3-26.3-10c-6.7-6.7-10-15.8-10-27.3c0-12,3.4-21.2,10.1-27.6\n c6.7-6.5,15.5-9.7,26.2-9.7c8,0,14.8,1.5,20.5,4.5c5.6,3,10,7,12.9,11.9c3,5,4.5,10.4,4.5,16.2V122.7z\" />\n <linearGradient\n id=\"SVGID_00000152963432808947599350000011020247854886079881_\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"780.8157\"\n y1=\"161.271\"\n x2=\"690.0867\"\n y2=\"161.271\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n style=\"fill: url(#SVGID_00000152963432808947599350000011020247854886079881_)\"\n d=\"M843.9,161.3c0,6.5-5.3,11.8-11.8,11.8l0,0\n c-6.5,0-11.8-5.3-11.8-11.8v0c0-6.5,5.3-11.8,11.8-11.8l0,0C838.6,149.4,843.9,154.7,843.9,161.3\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n <g>\n <polygon class=\"st0\" points=\"159.2,149.4 159.2,173.1 182.8,173.1 182.8,149.4 182.8,65.3 159.2,65.3 \t\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n </g>\n <path\n class=\"st0\"\n d=\"M302.7,84.2c-4-7.3-9.5-12.6-16.5-15.8c-7-3.2-15.1-4.8-24.4-4.8c-9.2,0-17.8,2.1-25.8,6.2\n c-7.9,4.1-13.9,10-17.8,17.6h-1.4l-0.6-22.2h-23v107.8h23.6v-53.4c0-7.5,1.6-14,4.7-19.7c3.1-5.6,7.5-10.1,13.1-13.2\n c5.6-3.2,12.2-4.8,19.7-4.8c10.6,0,18.4,3,23.3,8.9c5,5.9,7.4,15,7.4,27.2v55h23.6V114C308.7,101.5,306.7,91.6,302.7,84.2z\" />\n <path\n class=\"st0\"\n d=\"M671.7,65.3v53.4c0,7.5-1.6,14.1-4.7,19.8c-3.1,5.7-7.5,10.2-13.1,13.4c-5.6,3.2-12.2,4.8-19.7,4.8\n c-10.7,0-18.6-3-23.5-9.1c-5-6-7.4-15-7.4-27V65.3h-23.4v59.5c0,12.2,2,22,5.9,29.4c3.9,7.3,9.4,12.6,16.5,15.9\n c7.1,3.3,15.2,4.9,24.5,4.9c9.6,0,18.4-2.1,26.2-6.3c7.6-4.1,15-11.3,18.9-18.6v23.1h23.4v-23.6v-5.2v-79H671.7z\" />\n </svg>\n </ng-content>\n @if (authenticated()) {\n <h3 class=\"whitespace-nowrap text-2xl font-semibold tracking-tight\">{{ 'login.welcomeBack' | transloco: { name: user()?.fullName ?? '' } }}</h3>\n <p class=\"text-muted-foreground text-sm\">{{ 'login.youAreLoggedIn' | transloco }}</p>\n }\n </CardHeader>\n\n @if (!authenticated()) {\n <CardContent>\n <div class=\"grid gap-4\">\n @if (!config.autoOAuthProvider && !config.autoSAMLProvider) {\n <div class=\"grid gap-2\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"username\">{{\n 'login.username' | transloco\n }}</label>\n\n <input\n type=\"text\"\n id=\"username\"\n required\n [ngModel]=\"credentials().username\"\n (ngModelChange)=\"updateCredentials({ username: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n\n <div class=\"grid gap-2\">\n <div class=\"flex items-center\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"password\">\n {{ 'login.password' | transloco }}\n </label>\n </div>\n\n <input\n type=\"password\"\n id=\"password\"\n required\n [ngModel]=\"credentials().password\"\n (ngModelChange)=\"updateCredentials({ password: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n\n <button [disabled]=\"!valid()\" (click)=\"handleLoginWithCredentials()\">{{ 'login.connect' | transloco }}</button>\n } @else {\n <button (click)=\"handleLogin()\">{{ 'login.SignInWith' | transloco: { provider: config.autoOAuthProvider ? 'OAuth' : 'SAML' } }}</button>\n }\n </div>\n </CardContent>\n }\n\n @if (authenticated()) {\n <CardFooter class=\"justify-between gap-2\">\n <button class=\"w-full\" (click)=\"handleLogout()\" type=\"submit\">{{ 'login.disconnect' | transloco }}</button>\n <button class=\"w-full\" variant=\"ghost\" (click)=\"handleBack()\">{{ 'login.back' | transloco }}</button>\n </CardFooter>\n }\n</Card>\n", styles: [":host{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:2rem}.btn-primary{background-color:#000;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: InputComponent, selector: "input[type=\"text\"], input[type=\"email\"], input[type=\"number\"], input[type=\"password\"], input[type=\"tel\"], input[type=\"url\"], input[type=\"time\"]", inputs: ["class", "variant", "decoration"] }, { kind: "directive", type: ButtonComponent, selector: "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" }] });
|
|
8410
8571
|
}
|
|
8411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
8572
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SignInComponent, decorators: [{
|
|
8412
8573
|
type: Component,
|
|
8413
8574
|
args: [{ selector: 'signIn, signin, sign-in', standalone: true, providers: [provideTranslocoScope('login')], imports: [
|
|
8414
8575
|
RouterModule,
|
|
@@ -8421,7 +8582,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
8421
8582
|
CardHeaderComponent,
|
|
8422
8583
|
CardContentComponent,
|
|
8423
8584
|
CardFooterComponent
|
|
8424
|
-
], template: "<Card cdkTrapFocus cdkTrapFocusAutoCapture=\"true\">\n <CardHeader>\n <ng-content select=\"[logo]\">\n <svg\n version=\"1.1\"\n id=\"Calque_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 858 228\"\n style=\"enable-background: new 0 0 858 228\"\n xml:space=\"preserve\">\n <style type=\"text/css\">\n .st0 {\n fill: #0040bf;\n }\n .st1 {\n fill: url(#SVGID_1_);\n }\n .st2 {\n fill: url(#SVGID_00000085217246274894832600000009342302383523206054_);\n }\n </style>\n <path\n class=\"st0\"\n d=\"M44.7,168.7c-10.1-4.1-17.6-9.9-22.5-17.1c-5-7.3-7.6-15.7-8.1-25.2h25.7c0.5,10.2,4.6,17.9,12.2,23.1\n c7.6,5.2,18.4,7.8,32.4,7.8c13.5,0,23.5-2.2,30.2-6.5c6.7-4.3,10-10.4,10-18.1c0-6.5-1.7-11.4-5.2-14.6c-3.5-3.2-8.5-5.5-15.1-7\n c-6.6-1.5-14.6-2.9-24.2-4.1c-12.5-1.6-23.4-3.8-32.7-6.4C38.1,98,31,93.9,25.9,88.4c-5-5.5-7.5-13.1-7.5-22.9\n c0-9.1,2.6-16.8,7.7-23.1c5.2-6.3,12.5-11.1,22-14.5c9.5-3.3,20.7-5,33.4-5c19.3,0,34.3,3.8,45.1,11.5c10.8,7.7,16.6,18.4,17.4,32.1\n h-24.9c-0.5-9-4.2-15.6-11.1-19.9c-6.9-4.3-16.1-6.4-27.6-6.4c-11.8,0-21,2-27.4,6.1c-6.5,4.1-9.7,9.6-9.7,16.5\n c0,5.8,1.6,10.2,4.7,13.1c3.1,2.9,7.9,5.1,14.3,6.5c6.4,1.4,14.5,2.8,24.3,4c9.6,1.2,18.3,2.7,26.1,4.4c7.7,1.7,14.4,4.1,20,7.2\n c5.6,3.1,9.8,7.3,12.7,12.5c2.9,5.2,4.4,12,4.4,20.3c0,13.6-5.6,24.3-16.9,32.2c-11.3,7.9-27.7,11.8-49.3,11.8\n C67.7,174.9,54.7,172.9,44.7,168.7z\" />\n <path\n class=\"st0\"\n d=\"M346.6,168.2c-9.4-4.5-16.6-10.9-21.7-19.2c-5.1-8.3-7.6-18.1-7.6-29.4c0-11.5,2.5-21.5,7.6-29.9\n c5.1-8.4,12.3-14.8,21.5-19.4c9.2-4.6,20.1-6.8,32.6-6.8c13,0,24.2,2.4,33.3,7.1c9.2,4.8,16.1,11.6,20.7,20.6\n c4.6,9,6.5,19.8,5.7,32.4h-97.8c0.3,10.9,3.9,19.3,10.9,25.3c7,6,16.5,9,28.4,9c9.2,0,17-1.7,23.2-5c6.2-3.3,10.3-7.8,12-13.4h22.6\n c-1.1,7.1-4.3,13.2-9.7,18.5c-5.4,5.3-12.3,9.4-20.7,12.3c-8.4,2.9-17.8,4.4-28.1,4.4C367,174.9,356,172.7,346.6,168.2z M352.5,88.4\n c-6.7,5.2-10.6,12.4-11.8,21.5h74.4c-0.4-9.4-3.8-16.6-10.3-21.7c-6.5-5.1-15.1-7.6-26-7.6C367.9,80.6,359.2,83.2,352.5,88.4z\" />\n <path\n class=\"st0\"\n d=\"M546,151.9h-1c-3.4,7.1-9,12.7-16.9,16.8c-7.9,4.1-16.7,6.2-26.5,6.2c-10.7,0-20.1-2.3-28.1-6.8\n c-8-4.6-14.3-11-18.8-19.5c-4.5-8.4-6.7-18.3-6.7-29.6c0-11.4,2.2-21.3,6.7-29.6c4.5-8.3,10.8-14.7,18.9-19.2\n c8.1-4.5,17.4-6.7,28-6.7c11,0,20.3,2,27.8,6c7.5,4,12.9,9.3,16,15.8h1l0.8-20.2h22.4v141.9H546V151.9z M528.6,151.9\n c5.6-3.1,10-7.3,12.9-12.4c3-5.2,4.5-10.7,4.5-16.7v-7.9c0-6-1.5-11.4-4.5-16.4c-3-5-7.3-8.9-12.9-11.9c-5.6-3-12.5-4.5-20.5-4.5\n c-10.7,0-19.5,3.2-26.2,9.7c-6.7,6.5-10.1,15.6-10.1,27.4c0,11.6,3.3,20.7,10,27.4c6.7,6.7,15.4,10.1,26.3,10.1\n C516.1,156.6,522.9,155,528.6,151.9z\" />\n <linearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"780.8157\" y1=\"119.2805\" x2=\"690.0867\" y2=\"119.2805\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n class=\"st1\"\n d=\"M803.4,65.3l-0.8,20.2h-1c-3.3-6.5-8.6-11.8-16.1-15.8c-7.5-4-16.7-6-27.7-6c-10.6,0-19.9,2.2-28,6.7\n c-8.1,4.5-14.4,10.9-18.9,19.2c-4.5,8.3-6.7,18.2-6.7,29.8c0,11.3,2.2,21.1,6.7,29.5s10.7,14.8,18.8,19.4c8,4.6,17.4,6.8,28.1,6.8\n c9.9,0,18.8-2.1,26.6-6.2c7.8-4.1,14.4-12.2,17.8-19.3h23.6V65.3H803.4z M802.2,122.7c0,6-1.5,11.6-4.5,16.7\n c-3,5.2-7.3,9.3-12.9,12.4c-5.6,3.1-12.5,4.7-20.5,4.7c-10.9,0-19.6-3.3-26.3-10c-6.7-6.7-10-15.8-10-27.3c0-12,3.4-21.2,10.1-27.6\n c6.7-6.5,15.5-9.7,26.2-9.7c8,0,14.8,1.5,20.5,4.5c5.6,3,10,7,12.9,11.9c3,5,4.5,10.4,4.5,16.2V122.7z\" />\n <linearGradient\n id=\"SVGID_00000152963432808947599350000011020247854886079881_\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"780.8157\"\n y1=\"161.271\"\n x2=\"690.0867\"\n y2=\"161.271\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n style=\"fill: url(#SVGID_00000152963432808947599350000011020247854886079881_)\"\n d=\"M843.9,161.3c0,6.5-5.3,11.8-11.8,11.8l0,0\n c-6.5,0-11.8-5.3-11.8-11.8v0c0-6.5,5.3-11.8,11.8-11.8l0,0C838.6,149.4,843.9,154.7,843.9,161.3\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n <g>\n <polygon class=\"st0\" points=\"159.2,149.4 159.2,173.1 182.8,173.1 182.8,149.4 182.8,65.3 159.2,65.3 \t\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n </g>\n <path\n class=\"st0\"\n d=\"M302.7,84.2c-4-7.3-9.5-12.6-16.5-15.8c-7-3.2-15.1-4.8-24.4-4.8c-9.2,0-17.8,2.1-25.8,6.2\n c-7.9,4.1-13.9,10-17.8,17.6h-1.4l-0.6-22.2h-23v107.8h23.6v-53.4c0-7.5,1.6-14,4.7-19.7c3.1-5.6,7.5-10.1,13.1-13.2\n c5.6-3.2,12.2-4.8,19.7-4.8c10.6,0,18.4,3,23.3,8.9c5,5.9,7.4,15,7.4,27.2v55h23.6V114C308.7,101.5,306.7,91.6,302.7,84.2z\" />\n <path\n class=\"st0\"\n d=\"M671.7,65.3v53.4c0,7.5-1.6,14.1-4.7,19.8c-3.1,5.7-7.5,10.2-13.1,13.4c-5.6,3.2-12.2,4.8-19.7,4.8\n c-10.7,0-18.6-3-23.5-9.1c-5-6-7.4-15-7.4-27V65.3h-23.4v59.5c0,12.2,2,22,5.9,29.4c3.9,7.3,9.4,12.6,16.5,15.9\n c7.1,3.3,15.2,4.9,24.5,4.9c9.6,0,18.4-2.1,26.2-6.3c7.6-4.1,15-11.3,18.9-18.6v23.1h23.4v-23.6v-5.2v-79H671.7z\" />\n </svg>\n </ng-content>\n @if (authenticated()) {\n <h3 class=\"whitespace-nowrap text-2xl font-semibold tracking-tight\">{{ 'login.welcomeBack' | transloco: { name: user()?.fullName ?? '' } }}</h3>\n <p class=\"text-muted-foreground text-sm\">{{ 'login.youAreLoggedIn' | transloco }}</p>\n }\n </CardHeader>\n\n @if (!authenticated()) {\n <CardContent>\n <div class=\"grid gap-4\">\n @if (!config.autoOAuthProvider && !config.autoSAMLProvider) {\n <div class=\"grid gap-2\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"username\">{{\n 'login.username' | transloco\n }}</label>\n\n <input\n type=\"text\"\n id=\"username\"\n required\n [ngModel]=\"credentials().username\"\n (ngModelChange)=\"updateCredentials({ username: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n <div class=\"grid gap-2\">\n <div class=\"flex items-center\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"password\"
|
|
8585
|
+
], template: "<Card hover=\"no\" cdkTrapFocus cdkTrapFocusAutoCapture=\"true\">\n <CardHeader>\n <ng-content select=\"[logo]\">\n <svg\n version=\"1.1\"\n id=\"Calque_1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 858 228\"\n style=\"enable-background: new 0 0 858 228\"\n xml:space=\"preserve\">\n <style type=\"text/css\">\n .st0 {\n fill: #0040bf;\n }\n .st1 {\n fill: url(#SVGID_1_);\n }\n .st2 {\n fill: url(#SVGID_00000085217246274894832600000009342302383523206054_);\n }\n </style>\n <path\n class=\"st0\"\n d=\"M44.7,168.7c-10.1-4.1-17.6-9.9-22.5-17.1c-5-7.3-7.6-15.7-8.1-25.2h25.7c0.5,10.2,4.6,17.9,12.2,23.1\n c7.6,5.2,18.4,7.8,32.4,7.8c13.5,0,23.5-2.2,30.2-6.5c6.7-4.3,10-10.4,10-18.1c0-6.5-1.7-11.4-5.2-14.6c-3.5-3.2-8.5-5.5-15.1-7\n c-6.6-1.5-14.6-2.9-24.2-4.1c-12.5-1.6-23.4-3.8-32.7-6.4C38.1,98,31,93.9,25.9,88.4c-5-5.5-7.5-13.1-7.5-22.9\n c0-9.1,2.6-16.8,7.7-23.1c5.2-6.3,12.5-11.1,22-14.5c9.5-3.3,20.7-5,33.4-5c19.3,0,34.3,3.8,45.1,11.5c10.8,7.7,16.6,18.4,17.4,32.1\n h-24.9c-0.5-9-4.2-15.6-11.1-19.9c-6.9-4.3-16.1-6.4-27.6-6.4c-11.8,0-21,2-27.4,6.1c-6.5,4.1-9.7,9.6-9.7,16.5\n c0,5.8,1.6,10.2,4.7,13.1c3.1,2.9,7.9,5.1,14.3,6.5c6.4,1.4,14.5,2.8,24.3,4c9.6,1.2,18.3,2.7,26.1,4.4c7.7,1.7,14.4,4.1,20,7.2\n c5.6,3.1,9.8,7.3,12.7,12.5c2.9,5.2,4.4,12,4.4,20.3c0,13.6-5.6,24.3-16.9,32.2c-11.3,7.9-27.7,11.8-49.3,11.8\n C67.7,174.9,54.7,172.9,44.7,168.7z\" />\n <path\n class=\"st0\"\n d=\"M346.6,168.2c-9.4-4.5-16.6-10.9-21.7-19.2c-5.1-8.3-7.6-18.1-7.6-29.4c0-11.5,2.5-21.5,7.6-29.9\n c5.1-8.4,12.3-14.8,21.5-19.4c9.2-4.6,20.1-6.8,32.6-6.8c13,0,24.2,2.4,33.3,7.1c9.2,4.8,16.1,11.6,20.7,20.6\n c4.6,9,6.5,19.8,5.7,32.4h-97.8c0.3,10.9,3.9,19.3,10.9,25.3c7,6,16.5,9,28.4,9c9.2,0,17-1.7,23.2-5c6.2-3.3,10.3-7.8,12-13.4h22.6\n c-1.1,7.1-4.3,13.2-9.7,18.5c-5.4,5.3-12.3,9.4-20.7,12.3c-8.4,2.9-17.8,4.4-28.1,4.4C367,174.9,356,172.7,346.6,168.2z M352.5,88.4\n c-6.7,5.2-10.6,12.4-11.8,21.5h74.4c-0.4-9.4-3.8-16.6-10.3-21.7c-6.5-5.1-15.1-7.6-26-7.6C367.9,80.6,359.2,83.2,352.5,88.4z\" />\n <path\n class=\"st0\"\n d=\"M546,151.9h-1c-3.4,7.1-9,12.7-16.9,16.8c-7.9,4.1-16.7,6.2-26.5,6.2c-10.7,0-20.1-2.3-28.1-6.8\n c-8-4.6-14.3-11-18.8-19.5c-4.5-8.4-6.7-18.3-6.7-29.6c0-11.4,2.2-21.3,6.7-29.6c4.5-8.3,10.8-14.7,18.9-19.2\n c8.1-4.5,17.4-6.7,28-6.7c11,0,20.3,2,27.8,6c7.5,4,12.9,9.3,16,15.8h1l0.8-20.2h22.4v141.9H546V151.9z M528.6,151.9\n c5.6-3.1,10-7.3,12.9-12.4c3-5.2,4.5-10.7,4.5-16.7v-7.9c0-6-1.5-11.4-4.5-16.4c-3-5-7.3-8.9-12.9-11.9c-5.6-3-12.5-4.5-20.5-4.5\n c-10.7,0-19.5,3.2-26.2,9.7c-6.7,6.5-10.1,15.6-10.1,27.4c0,11.6,3.3,20.7,10,27.4c6.7,6.7,15.4,10.1,26.3,10.1\n C516.1,156.6,522.9,155,528.6,151.9z\" />\n <linearGradient id=\"SVGID_1_\" gradientUnits=\"userSpaceOnUse\" x1=\"780.8157\" y1=\"119.2805\" x2=\"690.0867\" y2=\"119.2805\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n class=\"st1\"\n d=\"M803.4,65.3l-0.8,20.2h-1c-3.3-6.5-8.6-11.8-16.1-15.8c-7.5-4-16.7-6-27.7-6c-10.6,0-19.9,2.2-28,6.7\n c-8.1,4.5-14.4,10.9-18.9,19.2c-4.5,8.3-6.7,18.2-6.7,29.8c0,11.3,2.2,21.1,6.7,29.5s10.7,14.8,18.8,19.4c8,4.6,17.4,6.8,28.1,6.8\n c9.9,0,18.8-2.1,26.6-6.2c7.8-4.1,14.4-12.2,17.8-19.3h23.6V65.3H803.4z M802.2,122.7c0,6-1.5,11.6-4.5,16.7\n c-3,5.2-7.3,9.3-12.9,12.4c-5.6,3.1-12.5,4.7-20.5,4.7c-10.9,0-19.6-3.3-26.3-10c-6.7-6.7-10-15.8-10-27.3c0-12,3.4-21.2,10.1-27.6\n c6.7-6.5,15.5-9.7,26.2-9.7c8,0,14.8,1.5,20.5,4.5c5.6,3,10,7,12.9,11.9c3,5,4.5,10.4,4.5,16.2V122.7z\" />\n <linearGradient\n id=\"SVGID_00000152963432808947599350000011020247854886079881_\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"780.8157\"\n y1=\"161.271\"\n x2=\"690.0867\"\n y2=\"161.271\">\n <stop offset=\"0\" style=\"stop-color: #ff854a\" />\n <stop offset=\"0.8407\" style=\"stop-color: #0040bf\" />\n </linearGradient>\n <path\n style=\"fill: url(#SVGID_00000152963432808947599350000011020247854886079881_)\"\n d=\"M843.9,161.3c0,6.5-5.3,11.8-11.8,11.8l0,0\n c-6.5,0-11.8-5.3-11.8-11.8v0c0-6.5,5.3-11.8,11.8-11.8l0,0C838.6,149.4,843.9,154.7,843.9,161.3\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n <g>\n <polygon class=\"st0\" points=\"159.2,149.4 159.2,173.1 182.8,173.1 182.8,149.4 182.8,65.3 159.2,65.3 \t\" />\n <rect x=\"159.2\" y=\"25.3\" class=\"st0\" width=\"23.6\" height=\"23.6\" />\n </g>\n <path\n class=\"st0\"\n d=\"M302.7,84.2c-4-7.3-9.5-12.6-16.5-15.8c-7-3.2-15.1-4.8-24.4-4.8c-9.2,0-17.8,2.1-25.8,6.2\n c-7.9,4.1-13.9,10-17.8,17.6h-1.4l-0.6-22.2h-23v107.8h23.6v-53.4c0-7.5,1.6-14,4.7-19.7c3.1-5.6,7.5-10.1,13.1-13.2\n c5.6-3.2,12.2-4.8,19.7-4.8c10.6,0,18.4,3,23.3,8.9c5,5.9,7.4,15,7.4,27.2v55h23.6V114C308.7,101.5,306.7,91.6,302.7,84.2z\" />\n <path\n class=\"st0\"\n d=\"M671.7,65.3v53.4c0,7.5-1.6,14.1-4.7,19.8c-3.1,5.7-7.5,10.2-13.1,13.4c-5.6,3.2-12.2,4.8-19.7,4.8\n c-10.7,0-18.6-3-23.5-9.1c-5-6-7.4-15-7.4-27V65.3h-23.4v59.5c0,12.2,2,22,5.9,29.4c3.9,7.3,9.4,12.6,16.5,15.9\n c7.1,3.3,15.2,4.9,24.5,4.9c9.6,0,18.4-2.1,26.2-6.3c7.6-4.1,15-11.3,18.9-18.6v23.1h23.4v-23.6v-5.2v-79H671.7z\" />\n </svg>\n </ng-content>\n @if (authenticated()) {\n <h3 class=\"whitespace-nowrap text-2xl font-semibold tracking-tight\">{{ 'login.welcomeBack' | transloco: { name: user()?.fullName ?? '' } }}</h3>\n <p class=\"text-muted-foreground text-sm\">{{ 'login.youAreLoggedIn' | transloco }}</p>\n }\n </CardHeader>\n\n @if (!authenticated()) {\n <CardContent>\n <div class=\"grid gap-4\">\n @if (!config.autoOAuthProvider && !config.autoSAMLProvider) {\n <div class=\"grid gap-2\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"username\">{{\n 'login.username' | transloco\n }}</label>\n\n <input\n type=\"text\"\n id=\"username\"\n required\n [ngModel]=\"credentials().username\"\n (ngModelChange)=\"updateCredentials({ username: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n\n <div class=\"grid gap-2\">\n <div class=\"flex items-center\">\n <label class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\" for=\"password\">\n {{ 'login.password' | transloco }}\n </label>\n </div>\n\n <input\n type=\"password\"\n id=\"password\"\n required\n [ngModel]=\"credentials().password\"\n (ngModelChange)=\"updateCredentials({ password: $event })\"\n (keydown.enter)=\"handleLoginWithCredentials()\" />\n </div>\n\n <button [disabled]=\"!valid()\" (click)=\"handleLoginWithCredentials()\">{{ 'login.connect' | transloco }}</button>\n } @else {\n <button (click)=\"handleLogin()\">{{ 'login.SignInWith' | transloco: { provider: config.autoOAuthProvider ? 'OAuth' : 'SAML' } }}</button>\n }\n </div>\n </CardContent>\n }\n\n @if (authenticated()) {\n <CardFooter class=\"justify-between gap-2\">\n <button class=\"w-full\" (click)=\"handleLogout()\" type=\"submit\">{{ 'login.disconnect' | transloco }}</button>\n <button class=\"w-full\" variant=\"ghost\" (click)=\"handleBack()\">{{ 'login.back' | transloco }}</button>\n </CardFooter>\n }\n</Card>\n", styles: [":host{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:2rem}.btn-primary{background-color:#000;color:#fff}\n"] }]
|
|
8425
8586
|
}], ctorParameters: () => [{ type: i0.DestroyRef }] });
|
|
8426
8587
|
|
|
8427
8588
|
class LabelService {
|
|
@@ -8560,10 +8721,10 @@ class LabelService {
|
|
|
8560
8721
|
return from(labels.bulkRemove(labelsToRemove, query, publicOnly));
|
|
8561
8722
|
}));
|
|
8562
8723
|
}
|
|
8563
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8564
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
8724
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: LabelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
8725
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: LabelService, providedIn: 'root' });
|
|
8565
8726
|
}
|
|
8566
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
8727
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: LabelService, decorators: [{
|
|
8567
8728
|
type: Injectable,
|
|
8568
8729
|
args: [{
|
|
8569
8730
|
providedIn: 'root'
|
|
@@ -8670,8 +8831,8 @@ class MultiSelectLabelsComponent {
|
|
|
8670
8831
|
updateArticleWithLabels() {
|
|
8671
8832
|
this.article()[this.labelsField()] = this.labels();
|
|
8672
8833
|
}
|
|
8673
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8674
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
8834
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MultiSelectLabelsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8835
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["LabelsPopover"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
8675
8836
|
<div class="anchor" [ngStyle]="{ 'anchor-name': anchor() }">
|
|
8676
8837
|
<label [htmlFor]="id()" class="font-semibold">{{ (isPublic() ? 'labels.publicLabels' : 'labels.privateLabels') | transloco }}</label>
|
|
8677
8838
|
<input
|
|
@@ -8708,9 +8869,9 @@ class MultiSelectLabelsComponent {
|
|
|
8708
8869
|
</Badge>
|
|
8709
8870
|
}
|
|
8710
8871
|
</div>
|
|
8711
|
-
`, 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=\"
|
|
8872
|
+
`, 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", "size", "decoration", "hover"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8712
8873
|
}
|
|
8713
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
8874
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MultiSelectLabelsComponent, decorators: [{
|
|
8714
8875
|
type: Component,
|
|
8715
8876
|
args: [{ selector: 'multiselect-labels, multiselectlabels, MultiSelectLabels', standalone: true, imports: [FormsModule, NgStyle, TranslocoPipe, InputComponent, BadgeComponent, ListItemComponent], template: `
|
|
8716
8877
|
<div class="anchor" [ngStyle]="{ 'anchor-name': anchor() }">
|
|
@@ -8773,8 +8934,8 @@ class LabelsEditDialog {
|
|
|
8773
8934
|
close(event) {
|
|
8774
8935
|
this.closed.emit({ type: event, article: this.article() });
|
|
8775
8936
|
}
|
|
8776
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8777
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
8937
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: LabelsEditDialog, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
8938
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
8778
8939
|
<dialog #dialog (closed)="close($event)">
|
|
8779
8940
|
<DialogHeader>
|
|
8780
8941
|
<DialogTitle>{{ 'labels.title' | transloco }}</DialogTitle>
|
|
@@ -8802,9 +8963,9 @@ class LabelsEditDialog {
|
|
|
8802
8963
|
</button>
|
|
8803
8964
|
</DialogFooter>
|
|
8804
8965
|
</dialog>
|
|
8805
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "component", type: MultiSelectLabelsComponent, selector: "multiselect-labels, multiselectlabels, MultiSelectLabels", inputs: ["article", "isPublic", "allowModification", "labelsField", "labelInput"], outputs: ["articleChange", "labelInputChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8966
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class", "variant"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "component", type: MultiSelectLabelsComponent, selector: "multiselect-labels, multiselectlabels, MultiSelectLabels", inputs: ["article", "isPublic", "allowModification", "labelsField", "labelInput"], outputs: ["articleChange", "labelInputChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8806
8967
|
}
|
|
8807
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
8968
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: LabelsEditDialog, decorators: [{
|
|
8808
8969
|
type: Component,
|
|
8809
8970
|
args: [{
|
|
8810
8971
|
selector: 'labels-edit-dialog, labelseditdialog, LabelsEditDialog',
|
|
@@ -8879,8 +9040,8 @@ class FeedbackDialogComponent {
|
|
|
8879
9040
|
this.dialog().close(e);
|
|
8880
9041
|
notify.success(this.transloco.translate('feedback.feedbackSuccess'), { duration: 2000 });
|
|
8881
9042
|
}
|
|
8882
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8883
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
9043
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: FeedbackDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9044
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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: `
|
|
8884
9045
|
<dialog #dialog>
|
|
8885
9046
|
<DialogHeader>
|
|
8886
9047
|
<DialogTitle>{{ 'feedback.dialogTitle' | transloco }}</DialogTitle>
|
|
@@ -8899,7 +9060,7 @@ class FeedbackDialogComponent {
|
|
|
8899
9060
|
</DialogContent>
|
|
8900
9061
|
|
|
8901
9062
|
<DialogFooter>
|
|
8902
|
-
<button
|
|
9063
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8903
9064
|
{{ 'cancel' | transloco }}
|
|
8904
9065
|
</button>
|
|
8905
9066
|
<button [disabled]="!comment()" (click)="submit($event)">
|
|
@@ -8907,9 +9068,9 @@ class FeedbackDialogComponent {
|
|
|
8907
9068
|
</button>
|
|
8908
9069
|
</DialogFooter>
|
|
8909
9070
|
</dialog>
|
|
8910
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9071
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: DialogComponent, selector: "dialog", inputs: ["class", "variant"], outputs: ["closed"] }, { kind: "component", type: DialogHeaderComponent, selector: "DialogHeader" }, { kind: "directive", type: DialogFooterComponent, selector: "DialogFooter" }, { kind: "directive", type: DialogTitleComponent, selector: "DialogTitle" }, { kind: "directive", type: DialogContentComponent, selector: "DialogContent" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
8911
9072
|
}
|
|
8912
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
9073
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: FeedbackDialogComponent, decorators: [{
|
|
8913
9074
|
type: Component,
|
|
8914
9075
|
args: [{
|
|
8915
9076
|
selector: 'feedback-dialog, feedbackdialog, FeedbackDialog',
|
|
@@ -8944,7 +9105,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
8944
9105
|
</DialogContent>
|
|
8945
9106
|
|
|
8946
9107
|
<DialogFooter>
|
|
8947
|
-
<button
|
|
9108
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8948
9109
|
{{ 'cancel' | transloco }}
|
|
8949
9110
|
</button>
|
|
8950
9111
|
<button [disabled]="!comment()" (click)="submit($event)">
|
|
@@ -9014,12 +9175,12 @@ class SearchFeedbackComponent {
|
|
|
9014
9175
|
openFeedbackDialog(type) {
|
|
9015
9176
|
this.feedbackDialog()?.open(type);
|
|
9016
9177
|
}
|
|
9017
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9018
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
9178
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9179
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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-foreground/18 border p-5\" variant=\"ghost\" 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", 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" }] });
|
|
9019
9180
|
}
|
|
9020
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
9181
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SearchFeedbackComponent, decorators: [{
|
|
9021
9182
|
type: Component,
|
|
9022
|
-
args: [{ selector: 'feedback, Feedback', standalone: true, imports: [ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, TranslocoPipe, FeedbackDialogComponent], providers: [provideTranslocoScope('feedback')], template: "<menu>\n <button class=\"border border
|
|
9183
|
+
args: [{ selector: 'feedback, Feedback', standalone: true, imports: [ButtonComponent, MenuComponent, MenuContentComponent, MenuItemComponent, TranslocoPipe, FeedbackDialogComponent], providers: [provideTranslocoScope('feedback')], template: "<menu>\n <button class=\"border-foreground/18 border p-5\" variant=\"ghost\" 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" }]
|
|
9023
9184
|
}] });
|
|
9024
9185
|
|
|
9025
9186
|
class AggregationItemComponent {
|
|
@@ -9061,10 +9222,10 @@ class AggregationItemComponent {
|
|
|
9061
9222
|
}
|
|
9062
9223
|
this.onOpen.emit(node);
|
|
9063
9224
|
}
|
|
9064
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9065
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
9225
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AggregationItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9226
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: AggregationItemComponent, isStandalone: true, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onSelect: "onSelect", onOpen: "onOpen" }, host: { properties: { "attr.disabled": "this.disabled" } }, ngImport: i0, template: "<a\n role=\"listitem\"\n [attr.aria-selected]=\"node().$selected\"\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 && 'bg-primary-100 text-primary'\n )\n \"\n (click)=\"select($event, node())\">\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($event, node())\"\n [checked]=\"node().$selected\" />\n\n @if (node().icon) {\n <i class=\"fa-fw {{ node().icon }} self-center justify-self-center\" aria-hidden=\"true\"></i>\n }\n <p class=\"line-clamp-1 text-ellipsis break-all\" [title]=\"name() | syslang\">\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 [node]=\"item\" (onOpen)=\"onOpen.emit($event)\" (onSelect)=\"onSelect.emit($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"], outputs: ["onSelect", "onOpen"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "component", type: ChevronRightIconComponent, selector: "chevron-right, ChevronRight, chevronright", inputs: ["class"] }, { kind: "pipe", type: HighlightWordPipe, name: "highlightWord" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
9066
9227
|
}
|
|
9067
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
9228
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AggregationItemComponent, decorators: [{
|
|
9068
9229
|
type: Component,
|
|
9069
9230
|
args: [{ selector: 'aggregation-item, AggregationItem, aggregationitem', standalone: true, imports: [HighlightWordPipe, ListItemComponent, SyslangPipe, ChevronRightIconComponent], template: "<a\n role=\"listitem\"\n [attr.aria-selected]=\"node().$selected\"\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 && 'bg-primary-100 text-primary'\n )\n \"\n (click)=\"select($event, node())\">\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($event, node())\"\n [checked]=\"node().$selected\" />\n\n @if (node().icon) {\n <i class=\"fa-fw {{ node().icon }} self-center justify-self-center\" aria-hidden=\"true\"></i>\n }\n <p class=\"line-clamp-1 text-ellipsis break-all\" [title]=\"name() | syslang\">\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 [node]=\"item\" (onOpen)=\"onOpen.emit($event)\" (onSelect)=\"onSelect.emit($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"] }]
|
|
9070
9231
|
}], propDecorators: { disabled: [{
|
|
@@ -9104,7 +9265,7 @@ class AggregationComponent {
|
|
|
9104
9265
|
* A boolean flag indicating whether we want to see the filters count when some is applied
|
|
9105
9266
|
* This property is initialized to `false` by default.
|
|
9106
9267
|
*/
|
|
9107
|
-
|
|
9268
|
+
showFiltersCount = input(false, ...(ngDevMode ? [{ debugName: "showFiltersCount" }] : []));
|
|
9108
9269
|
/* aggregation */
|
|
9109
9270
|
aggregation = computed(() => {
|
|
9110
9271
|
// when the aggegation store updates, we need to check if the aggregation is still valid
|
|
@@ -9423,15 +9584,14 @@ class AggregationComponent {
|
|
|
9423
9584
|
}
|
|
9424
9585
|
return currentItems;
|
|
9425
9586
|
}
|
|
9426
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9427
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
9587
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AggregationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9588
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: AggregationComponent, isStandalone: true, selector: "Aggregation, aggregation", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, column: { classPropertyName: "column", publicName: "column", isSignal: true, isRequired: true, transformFunction: null }, headless: { classPropertyName: "headless", publicName: "headless", 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: { "style.--header-height": "`${this.computeHeight()}rem`" } }, ngImport: i0, template: "<fieldset class=\"flex flex-col gap-2\">\n @if (!headless()) {\n <legend class=\"text-muted-foreground mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold\">\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>\n {{ filtersCount() }}\n </Badge>\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 <i class=\"fa-fw far fa-filter-circle-xmark\"></i>\n </button>\n }\n @if (selection()) {\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 <i class=\"fa-fw far fa-filter\"></i>\n </button>\n }\n </legend>\n }\n\n @if (aggregation()?.searchable && items().length) {\n <input type=\"text\" [placeholder]=\"'search' | transloco\" [(ngModel)]=\"searchText\" />\n }\n\n <ul class=\"snap-y snap-start overflow-auto\" role=\"list\" [attr.aria-label]=\"aggregation()?.display | syslang | transloco\">\n @for (item of items(); track $index) {\n <AggregationItem [node]=\"item\" (onSelect)=\"select()\" (onOpen)=\"open($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\" (click)=\"loadMore()\">\n {{ 'loadMore' | transloco }}\n </button>\n }\n</fieldset>\n", styles: [":host{display:block}fieldset{height:100%;max-height:inherit;scrollbar-width:thin}ul[role=list]{scrollbar-width:inherit;max-height:calc(100vh - var(--header-height, 0px) - var(--agg-header-height, 0px))}AggregationItem:has(+AggregationItem){margin-bottom:var(--agg-item-gap, inherit)}\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", 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: AggregationItemComponent, selector: "aggregation-item, AggregationItem, aggregationitem", inputs: ["node"], outputs: ["onSelect", "onOpen"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "size", "decoration", "hover"] }, { kind: "pipe", type: SyslangPipe, name: "syslang" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9428
9589
|
}
|
|
9429
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
9590
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AggregationComponent, decorators: [{
|
|
9430
9591
|
type: Component,
|
|
9431
9592
|
args: [{ selector: 'Aggregation, aggregation', imports: [FormsModule, ReactiveFormsModule, ButtonComponent, InputComponent, AggregationItemComponent, SyslangPipe, TranslocoPipe, BadgeComponent], standalone: true, host: {
|
|
9432
|
-
class: 'd-flex flex-column h-100',
|
|
9433
9593
|
'[style.--header-height]': '`${this.computeHeight()}rem`'
|
|
9434
|
-
}, template: "<fieldset class=\"flex flex-col gap-2\">\n @if (!headless()) {\n <legend class=\"mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold
|
|
9594
|
+
}, template: "<fieldset class=\"flex flex-col gap-2\">\n @if (!headless()) {\n <legend class=\"text-muted-foreground mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold\">\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>\n {{ filtersCount() }}\n </Badge>\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 <i class=\"fa-fw far fa-filter-circle-xmark\"></i>\n </button>\n }\n @if (selection()) {\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 <i class=\"fa-fw far fa-filter\"></i>\n </button>\n }\n </legend>\n }\n\n @if (aggregation()?.searchable && items().length) {\n <input type=\"text\" [placeholder]=\"'search' | transloco\" [(ngModel)]=\"searchText\" />\n }\n\n <ul class=\"snap-y snap-start overflow-auto\" role=\"list\" [attr.aria-label]=\"aggregation()?.display | syslang | transloco\">\n @for (item of items(); track $index) {\n <AggregationItem [node]=\"item\" (onSelect)=\"select()\" (onOpen)=\"open($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\" (click)=\"loadMore()\">\n {{ 'loadMore' | transloco }}\n </button>\n }\n</fieldset>\n", styles: [":host{display:block}fieldset{height:100%;max-height:inherit;scrollbar-width:thin}ul[role=list]{scrollbar-width:inherit;max-height:calc(100vh - var(--header-height, 0px) - var(--agg-header-height, 0px))}AggregationItem:has(+AggregationItem){margin-bottom:var(--agg-item-gap, inherit)}\n"] }]
|
|
9435
9595
|
}], ctorParameters: () => [] });
|
|
9436
9596
|
|
|
9437
9597
|
/**
|
|
@@ -9596,12 +9756,12 @@ class DateComponent extends AggregationComponent {
|
|
|
9596
9756
|
}
|
|
9597
9757
|
throw new Error('filters.filterInvalid');
|
|
9598
9758
|
}
|
|
9599
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9600
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
9759
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DateComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
9760
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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 } }, providers: [provideTranslocoScope('filters')], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <fieldset class=\"overflow-auto\">\n @if (!headless()) {\n <legend class=\"text-muted-foreground mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold\">\n <p class=\"me-4 grow\">\n <i class=\"fa-fw {{ title().icon }}\" aria-hidden=\"true\"></i>\n {{ title().label | syslang | transloco }}\n </p>\n <div class=\"ms-4\">\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 </div>\n </legend>\n }\n\n <ul class=\"flex flex-col gap-1 pt-2\" 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\" [ngClass]=\"{ selected: 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 class=\"grid grow grid-cols-[4rem_auto] p-1 *:cursor-pointer\" formGroupName=\"customRange\" (click)=\"radiorange.click()\">\n <label for=\"date-filter-custom-from\">{{ 'from' | transloco }}</label>\n\n <input\n class=\"grow border-b border-neutral-400 bg-transparent text-neutral-600\"\n type=\"date\"\n id=\"date-filter-custom-from\"\n #dateFilterCustomFrom\n formControlName=\"from\"\n [max]=\"form.get('customRange.to')?.value ?? today\" />\n\n <label for=\"date-filter-custom-to\">{{ 'to' | transloco }}</label>\n\n <input\n class=\"border-b border-neutral-400 bg-transparent text-neutral-600\"\n type=\"date\"\n id=\"date-filter-custom-to\"\n formControlName=\"to\"\n [min]=\"form.get('customRange.from')?.value\"\n [max]=\"today\" />\n </div>\n </li>\n }\n </ul>\n </fieldset>\n</form>\n", styles: [":host{display:block}ul[role=list]{scrollbar-width:thin}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ButtonComponent, selector: "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: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
9601
9761
|
}
|
|
9602
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
9762
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DateComponent, decorators: [{
|
|
9603
9763
|
type: Component,
|
|
9604
|
-
args: [{ selector: 'date-filter,DateFilter', standalone: true, providers: [provideTranslocoScope('filters')], imports: [NgClass, ButtonComponent, ListItemComponent, ReactiveFormsModule, TranslocoPipe, SyslangPipe], template: "<form [formGroup]=\"form\">\n <fieldset class=\"overflow-auto\">\n @if (!headless()) {\n <legend class=\"mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold
|
|
9764
|
+
args: [{ selector: 'date-filter,DateFilter', standalone: true, providers: [provideTranslocoScope('filters')], imports: [NgClass, ButtonComponent, ListItemComponent, ReactiveFormsModule, TranslocoPipe, SyslangPipe], template: "<form [formGroup]=\"form\">\n <fieldset class=\"overflow-auto\">\n @if (!headless()) {\n <legend class=\"text-muted-foreground mb-1 flex h-8 w-full select-none items-center pl-1 text-sm font-semibold\">\n <p class=\"me-4 grow\">\n <i class=\"fa-fw {{ title().icon }}\" aria-hidden=\"true\"></i>\n {{ title().label | syslang | transloco }}\n </p>\n <div class=\"ms-4\">\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 </div>\n </legend>\n }\n\n <ul class=\"flex flex-col gap-1 pt-2\" 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\" [ngClass]=\"{ selected: 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 class=\"grid grow grid-cols-[4rem_auto] p-1 *:cursor-pointer\" formGroupName=\"customRange\" (click)=\"radiorange.click()\">\n <label for=\"date-filter-custom-from\">{{ 'from' | transloco }}</label>\n\n <input\n class=\"grow border-b border-neutral-400 bg-transparent text-neutral-600\"\n type=\"date\"\n id=\"date-filter-custom-from\"\n #dateFilterCustomFrom\n formControlName=\"from\"\n [max]=\"form.get('customRange.to')?.value ?? today\" />\n\n <label for=\"date-filter-custom-to\">{{ 'to' | transloco }}</label>\n\n <input\n class=\"border-b border-neutral-400 bg-transparent text-neutral-600\"\n type=\"date\"\n id=\"date-filter-custom-to\"\n formControlName=\"to\"\n [min]=\"form.get('customRange.from')?.value\"\n [max]=\"today\" />\n </div>\n </li>\n }\n </ul>\n </fieldset>\n</form>\n", styles: [":host{display:block}ul[role=list]{scrollbar-width:thin}\n"] }]
|
|
9605
9765
|
}], ctorParameters: () => [{ type: i0.DestroyRef }] });
|
|
9606
9766
|
|
|
9607
9767
|
class FilterButtonComponent {
|
|
@@ -9661,12 +9821,12 @@ class FilterButtonComponent {
|
|
|
9661
9821
|
isDate(column) {
|
|
9662
9822
|
return this.appStore.isDateColumn(column);
|
|
9663
9823
|
}
|
|
9664
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9665
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
9824
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: FilterButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9825
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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 } }, host: { properties: { "class.hidden": "filter().hidden" } }, ngImport: i0, template: `
|
|
9666
9826
|
<Popover [disabled]="filter().disabled" class="group">
|
|
9667
9827
|
<button
|
|
9668
9828
|
[variant]="variant()"
|
|
9669
|
-
class="group-data-[open=true]:border group-data-[open=true]:border
|
|
9829
|
+
class="group-data-[open=true]:border-foreground/50 group-data-[open=true]:border"
|
|
9670
9830
|
[attr.data-disabled]="filter().disabled"
|
|
9671
9831
|
[disabled]="filter().disabled || null">
|
|
9672
9832
|
<!-- display the filter icon if set -->
|
|
@@ -9684,13 +9844,14 @@ class FilterButtonComponent {
|
|
|
9684
9844
|
|
|
9685
9845
|
<!-- show the count of selected items -->
|
|
9686
9846
|
@if (filter().isTree && filter().count > 0) {
|
|
9687
|
-
<Badge
|
|
9847
|
+
<Badge size="xs" variant="primary">
|
|
9688
9848
|
{{ filter().count }}
|
|
9689
9849
|
</Badge>
|
|
9690
9850
|
} @else if (filter().count > 1) {
|
|
9691
|
-
<Badge
|
|
9851
|
+
<Badge size="xs" variant="primary">+{{ filter().count - 1 }}</Badge>
|
|
9692
9852
|
}
|
|
9693
9853
|
</button>
|
|
9854
|
+
|
|
9694
9855
|
<PopoverContent class="w-max" [position]="position()">
|
|
9695
9856
|
@if (isDate(filter().column)) {
|
|
9696
9857
|
<DateFilter
|
|
@@ -9704,9 +9865,9 @@ class FilterButtonComponent {
|
|
|
9704
9865
|
}
|
|
9705
9866
|
</PopoverContent>
|
|
9706
9867
|
</Popover>
|
|
9707
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["position", "keepOpen", "class"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["name", "column", "headless", "searchable", "
|
|
9868
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "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"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["name", "column", "headless", "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", "size", "decoration", "hover"] }, { kind: "pipe", type: OperatorPipe, name: "operator" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
9708
9869
|
}
|
|
9709
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
9870
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: FilterButtonComponent, decorators: [{
|
|
9710
9871
|
type: Component,
|
|
9711
9872
|
args: [{
|
|
9712
9873
|
selector: 'filter-button, FilterButton',
|
|
@@ -9726,7 +9887,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9726
9887
|
<Popover [disabled]="filter().disabled" class="group">
|
|
9727
9888
|
<button
|
|
9728
9889
|
[variant]="variant()"
|
|
9729
|
-
class="group-data-[open=true]:border group-data-[open=true]:border
|
|
9890
|
+
class="group-data-[open=true]:border-foreground/50 group-data-[open=true]:border"
|
|
9730
9891
|
[attr.data-disabled]="filter().disabled"
|
|
9731
9892
|
[disabled]="filter().disabled || null">
|
|
9732
9893
|
<!-- display the filter icon if set -->
|
|
@@ -9744,13 +9905,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9744
9905
|
|
|
9745
9906
|
<!-- show the count of selected items -->
|
|
9746
9907
|
@if (filter().isTree && filter().count > 0) {
|
|
9747
|
-
<Badge
|
|
9908
|
+
<Badge size="xs" variant="primary">
|
|
9748
9909
|
{{ filter().count }}
|
|
9749
9910
|
</Badge>
|
|
9750
9911
|
} @else if (filter().count > 1) {
|
|
9751
|
-
<Badge
|
|
9912
|
+
<Badge size="xs" variant="primary">+{{ filter().count - 1 }}</Badge>
|
|
9752
9913
|
}
|
|
9753
9914
|
</button>
|
|
9915
|
+
|
|
9754
9916
|
<PopoverContent class="w-max" [position]="position()">
|
|
9755
9917
|
@if (isDate(filter().column)) {
|
|
9756
9918
|
<DateFilter
|
|
@@ -9848,16 +10010,16 @@ class MoreComponent {
|
|
|
9848
10010
|
const { count = 0 } = this.queryParamsStore.getFilter({ field: aggregation.column, name: aggregation.name }) || {};
|
|
9849
10011
|
return count > 0;
|
|
9850
10012
|
}
|
|
9851
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9852
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
10013
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10014
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: MoreComponent, isStandalone: true, selector: "more, More", inputs: { count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, excludedFilters: { classPropertyName: "excludedFilters", publicName: "excludedFilters", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "divide-y divide-muted-foreground/18" }, ngImport: i0, template: `
|
|
9853
10015
|
@for (filter of filters(); track $index) {
|
|
9854
|
-
<li [class]="cn('collapse
|
|
10016
|
+
<li [class]="cn('hover:bg-foreground/5 collapse', filter.hidden && 'hidden')">
|
|
9855
10017
|
<!-- header -->
|
|
9856
10018
|
<input
|
|
9857
10019
|
role="button"
|
|
9858
10020
|
type="checkbox"
|
|
9859
10021
|
name="more-filters"
|
|
9860
|
-
[class]="cn('min-h-
|
|
10022
|
+
[class]="cn('min-h-10 w-full', filter.disabled && 'pointer-events-none cursor-default select-none')"
|
|
9861
10023
|
[attr.title]="'filters.openFilter' | transloco: { filter: filter.display || filter.name }" />
|
|
9862
10024
|
|
|
9863
10025
|
@if (isDate(filter.column)) {
|
|
@@ -9877,7 +10039,7 @@ class MoreComponent {
|
|
|
9877
10039
|
|
|
9878
10040
|
<!-- actions fragment -->
|
|
9879
10041
|
<ng-template #actions let-filter="filter" let-agg="agg">
|
|
9880
|
-
<div [class]="cn('collapse-title flex items-center gap-1 px-2 py-1
|
|
10042
|
+
<div [class]="cn('collapse-title text-foreground flex items-center gap-1 px-2 py-1', filter.disabled && 'text-muted-foreground')">
|
|
9881
10043
|
<!-- aggregation's icon -->
|
|
9882
10044
|
<i class="me-1 fa-fw {{ filter.icon }}" aria-hidden="true"></i>
|
|
9883
10045
|
|
|
@@ -9885,7 +10047,7 @@ class MoreComponent {
|
|
|
9885
10047
|
<span class="me-4 grow text-sm font-semibold">{{ filter.display || filter.name | transloco }}</span>
|
|
9886
10048
|
@if (filter.count > 0) {
|
|
9887
10049
|
<!-- count -->
|
|
9888
|
-
<Badge
|
|
10050
|
+
<Badge size="xs" variant="primary">
|
|
9889
10051
|
{{ filter.count }}
|
|
9890
10052
|
</Badge>
|
|
9891
10053
|
}
|
|
@@ -9894,7 +10056,7 @@ class MoreComponent {
|
|
|
9894
10056
|
<button
|
|
9895
10057
|
variant="ghost"
|
|
9896
10058
|
size="icon"
|
|
9897
|
-
class="z-10
|
|
10059
|
+
class="z-10"
|
|
9898
10060
|
[attr.title]="'filters.clearFilters' | transloco"
|
|
9899
10061
|
(click)="clearFilter(filter.column)"
|
|
9900
10062
|
(keydown.enter)="clearFilter(filter.column)">
|
|
@@ -9909,19 +10071,19 @@ class MoreComponent {
|
|
|
9909
10071
|
</div>
|
|
9910
10072
|
</ng-template>
|
|
9911
10073
|
}
|
|
9912
|
-
`, isInline: true, styles: [":host{scrollbar-width:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["name", "column", "headless", "searchable", "
|
|
10074
|
+
`, isInline: true, styles: [":host{scrollbar-width:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: AggregationComponent, selector: "Aggregation, aggregation", inputs: ["name", "column", "headless", "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", "size", "decoration", "hover"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
9913
10075
|
}
|
|
9914
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
10076
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MoreComponent, decorators: [{
|
|
9915
10077
|
type: Component,
|
|
9916
10078
|
args: [{ selector: 'more, More', standalone: true, imports: [NgTemplateOutlet, ButtonComponent, AggregationComponent, TranslocoPipe, DateComponent, BadgeComponent], template: `
|
|
9917
10079
|
@for (filter of filters(); track $index) {
|
|
9918
|
-
<li [class]="cn('collapse
|
|
10080
|
+
<li [class]="cn('hover:bg-foreground/5 collapse', filter.hidden && 'hidden')">
|
|
9919
10081
|
<!-- header -->
|
|
9920
10082
|
<input
|
|
9921
10083
|
role="button"
|
|
9922
10084
|
type="checkbox"
|
|
9923
10085
|
name="more-filters"
|
|
9924
|
-
[class]="cn('min-h-
|
|
10086
|
+
[class]="cn('min-h-10 w-full', filter.disabled && 'pointer-events-none cursor-default select-none')"
|
|
9925
10087
|
[attr.title]="'filters.openFilter' | transloco: { filter: filter.display || filter.name }" />
|
|
9926
10088
|
|
|
9927
10089
|
@if (isDate(filter.column)) {
|
|
@@ -9941,7 +10103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9941
10103
|
|
|
9942
10104
|
<!-- actions fragment -->
|
|
9943
10105
|
<ng-template #actions let-filter="filter" let-agg="agg">
|
|
9944
|
-
<div [class]="cn('collapse-title flex items-center gap-1 px-2 py-1
|
|
10106
|
+
<div [class]="cn('collapse-title text-foreground flex items-center gap-1 px-2 py-1', filter.disabled && 'text-muted-foreground')">
|
|
9945
10107
|
<!-- aggregation's icon -->
|
|
9946
10108
|
<i class="me-1 fa-fw {{ filter.icon }}" aria-hidden="true"></i>
|
|
9947
10109
|
|
|
@@ -9949,7 +10111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9949
10111
|
<span class="me-4 grow text-sm font-semibold">{{ filter.display || filter.name | transloco }}</span>
|
|
9950
10112
|
@if (filter.count > 0) {
|
|
9951
10113
|
<!-- count -->
|
|
9952
|
-
<Badge
|
|
10114
|
+
<Badge size="xs" variant="primary">
|
|
9953
10115
|
{{ filter.count }}
|
|
9954
10116
|
</Badge>
|
|
9955
10117
|
}
|
|
@@ -9958,7 +10120,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9958
10120
|
<button
|
|
9959
10121
|
variant="ghost"
|
|
9960
10122
|
size="icon"
|
|
9961
|
-
class="z-10
|
|
10123
|
+
class="z-10"
|
|
9962
10124
|
[attr.title]="'filters.clearFilters' | transloco"
|
|
9963
10125
|
(click)="clearFilter(filter.column)"
|
|
9964
10126
|
(keydown.enter)="clearFilter(filter.column)">
|
|
@@ -9974,7 +10136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9974
10136
|
</ng-template>
|
|
9975
10137
|
}
|
|
9976
10138
|
`, host: {
|
|
9977
|
-
class: 'divide-y divide-
|
|
10139
|
+
class: 'divide-y divide-muted-foreground/18'
|
|
9978
10140
|
}, styles: [":host{scrollbar-width:none}\n"] }]
|
|
9979
10141
|
}], ctorParameters: () => [] });
|
|
9980
10142
|
|
|
@@ -10000,18 +10162,18 @@ class MoreButtonComponent {
|
|
|
10000
10162
|
}, 0);
|
|
10001
10163
|
return total;
|
|
10002
10164
|
}, ...(ngDevMode ? [{ debugName: "totalFiltersCount" }] : []));
|
|
10003
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10004
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
10165
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MoreButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10166
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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 }, excludedFilters: { classPropertyName: "excludedFilters", publicName: "excludedFilters", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
10005
10167
|
<Popover class="group">
|
|
10006
10168
|
<button
|
|
10007
10169
|
variant="ghost"
|
|
10008
|
-
class="
|
|
10170
|
+
class="group-data-[open=true]:border-foreground/18 gap-1 truncate font-semibold group-data-[open=true]:border"
|
|
10009
10171
|
aria-label="more filters">
|
|
10010
10172
|
<i class="far fa-filters" aria-hidden="true"></i>
|
|
10011
10173
|
<span>{{ 'filters.moreFilters' | transloco }}</span>
|
|
10012
10174
|
|
|
10013
10175
|
@if (totalFiltersCount() > 0) {
|
|
10014
|
-
<Badge
|
|
10176
|
+
<Badge size="xs" variant="primary">
|
|
10015
10177
|
{{ totalFiltersCount() }}
|
|
10016
10178
|
</Badge>
|
|
10017
10179
|
}
|
|
@@ -10021,21 +10183,21 @@ class MoreButtonComponent {
|
|
|
10021
10183
|
<More [count]="count()" [excludedFilters]="excludedFilters()" class="h-full max-w-80 overflow-y-scroll" />
|
|
10022
10184
|
</PopoverContent>
|
|
10023
10185
|
</Popover>
|
|
10024
|
-
`, isInline: true, styles: [".more-filters{overflow:var(--scrollbar-overflow, hidden);padding-right:0;scrollbar-width:thin;scrollbar-gutter:stable}.more-filters:hover{--scrollbar-overflow: overlay}\n"], dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: PopoverComponent, selector: "popover, Popover", inputs: ["disabled", "closeOnScroll"] }, { kind: "directive", type: PopoverContentComponent, selector: "popover-content, PopoverContent, popovercontent", inputs: ["position", "keepOpen", "class"] }, { kind: "component", type: MoreComponent, selector: "more, More", inputs: ["count", "excludedFilters"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10186
|
+
`, isInline: true, styles: [".more-filters{overflow:var(--scrollbar-overflow, hidden);padding-right:0;scrollbar-width:thin;scrollbar-gutter:stable}.more-filters:hover{--scrollbar-overflow: overlay}\n"], dependencies: [{ kind: "directive", type: ButtonComponent, selector: "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"] }, { kind: "component", type: MoreComponent, selector: "more, More", inputs: ["count", "excludedFilters"] }, { kind: "directive", type: BadgeComponent, selector: "badge, Badge", inputs: ["class", "variant", "size", "decoration", "hover"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10025
10187
|
}
|
|
10026
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
10188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: MoreButtonComponent, decorators: [{
|
|
10027
10189
|
type: Component,
|
|
10028
10190
|
args: [{ selector: 'more-button, MoreButton', standalone: true, imports: [ButtonComponent, PopoverComponent, PopoverContentComponent, TranslocoPipe, MoreComponent, BadgeComponent], template: `
|
|
10029
10191
|
<Popover class="group">
|
|
10030
10192
|
<button
|
|
10031
10193
|
variant="ghost"
|
|
10032
|
-
class="
|
|
10194
|
+
class="group-data-[open=true]:border-foreground/18 gap-1 truncate font-semibold group-data-[open=true]:border"
|
|
10033
10195
|
aria-label="more filters">
|
|
10034
10196
|
<i class="far fa-filters" aria-hidden="true"></i>
|
|
10035
10197
|
<span>{{ 'filters.moreFilters' | transloco }}</span>
|
|
10036
10198
|
|
|
10037
10199
|
@if (totalFiltersCount() > 0) {
|
|
10038
|
-
<Badge
|
|
10200
|
+
<Badge size="xs" variant="primary">
|
|
10039
10201
|
{{ totalFiltersCount() }}
|
|
10040
10202
|
</Badge>
|
|
10041
10203
|
}
|
|
@@ -10051,6 +10213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
10051
10213
|
class FiltersBarComponent {
|
|
10052
10214
|
class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
|
|
10053
10215
|
position = input('bottom-start', ...(ngDevMode ? [{ debugName: "position" }] : []));
|
|
10216
|
+
morePosition = input('bottom-end', ...(ngDevMode ? [{ debugName: "morePosition" }] : []));
|
|
10054
10217
|
/**
|
|
10055
10218
|
* Filters that should be excluded from the filters bar.
|
|
10056
10219
|
* This can be used to hide specific filters from the UI.
|
|
@@ -10157,8 +10320,8 @@ class FiltersBarComponent {
|
|
|
10157
10320
|
// filtersCount is the number of filters that can be displayed before the "more filters" option is shown
|
|
10158
10321
|
this.moreFilterCount.set(count > this.filtersCount() ? this.filtersCount() : count);
|
|
10159
10322
|
}
|
|
10160
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10161
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
10323
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: FiltersBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10324
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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 }, excludeFilters: { classPropertyName: "excludeFilters", publicName: "excludeFilters", isSignal: true, isRequired: false, transformFunction: null }, filtersCount: { classPropertyName: "filtersCount", publicName: "filtersCount", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClearFilters: "onClearFilters", onClearBasket: "onClearBasket" }, host: { attributes: { "role": "list", "aria-label": "Filters list" }, properties: { "class": "cn(\"flex relative z-filter gap-2\", direction() === \"vertical\" ? \"flex-col items-start\" : \"flex-row\", class())" } }, providers: [provideTranslocoScope('filters')], viewQueries: [{ propertyName: "moreFilterElement", first: true, predicate: MoreButtonComponent, descendants: true, isSignal: true }, { propertyName: "dropdownElements", predicate: FilterButtonComponent, descendants: true, isSignal: true }, { propertyName: "overflowManager", first: true, predicate: OverflowManagerDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
10162
10325
|
<ng-container overflowManager [direction]="direction()" [target]="el.nativeElement" (count)="adjustFiltersCount($event)">
|
|
10163
10326
|
@if (hasFilters()) {
|
|
10164
10327
|
<button
|
|
@@ -10189,13 +10352,13 @@ class FiltersBarComponent {
|
|
|
10189
10352
|
overflowStop
|
|
10190
10353
|
[class]="cn('invisible absolute', direction() === 'horizontal' ? 'right-0' : 'bottom-0', hasMoreFilters().length > 0 && 'visible')"
|
|
10191
10354
|
[count]="moreFilterCount()"
|
|
10192
|
-
[position]="
|
|
10355
|
+
[position]="morePosition()"
|
|
10193
10356
|
[excludedFilters]="excludeFilters()" />
|
|
10194
10357
|
}
|
|
10195
10358
|
</ng-container>
|
|
10196
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "size"] }, { kind: "component", type: MoreButtonComponent, selector: "more-button, MoreButton", inputs: ["count", "position", "excludedFilters"] }, { kind: "component", type: FilterButtonComponent, selector: "filter-button, FilterButton", inputs: ["name", "column", "position"] }, { 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" }] });
|
|
10359
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: MoreButtonComponent, selector: "more-button, MoreButton", inputs: ["count", "position", "excludedFilters"] }, { kind: "component", type: FilterButtonComponent, selector: "filter-button, FilterButton", inputs: ["name", "column", "position"] }, { 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" }] });
|
|
10197
10360
|
}
|
|
10198
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
10361
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: FiltersBarComponent, decorators: [{
|
|
10199
10362
|
type: Component,
|
|
10200
10363
|
args: [{
|
|
10201
10364
|
selector: 'filters-bar, FiltersBar, filtersbar',
|
|
@@ -10233,7 +10396,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
10233
10396
|
overflowStop
|
|
10234
10397
|
[class]="cn('invisible absolute', direction() === 'horizontal' ? 'right-0' : 'bottom-0', hasMoreFilters().length > 0 && 'visible')"
|
|
10235
10398
|
[count]="moreFilterCount()"
|
|
10236
|
-
[position]="
|
|
10399
|
+
[position]="morePosition()"
|
|
10237
10400
|
[excludedFilters]="excludeFilters()" />
|
|
10238
10401
|
}
|
|
10239
10402
|
</ng-container>
|
|
@@ -10343,46 +10506,46 @@ class DrawerStackComponent {
|
|
|
10343
10506
|
drawer?.destroy();
|
|
10344
10507
|
}, 250);
|
|
10345
10508
|
}
|
|
10346
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10347
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
10509
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerStackComponent, deps: [{ token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
10510
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.7", type: DrawerStackComponent, isStandalone: true, selector: "DrawerStack, drawerstack", host: { properties: { "attr.drawer-opened": "this.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"] });
|
|
10348
10511
|
}
|
|
10349
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
10512
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerStackComponent, decorators: [{
|
|
10350
10513
|
type: Component,
|
|
10351
|
-
args: [{ selector: '
|
|
10514
|
+
args: [{ selector: 'DrawerStack, drawerstack', template: ``, 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"] }]
|
|
10352
10515
|
}], ctorParameters: () => [{ type: i0.DestroyRef }], propDecorators: { drawerOpened: [{
|
|
10353
10516
|
type: HostBinding,
|
|
10354
10517
|
args: ['attr.drawer-opened']
|
|
10355
10518
|
}] } });
|
|
10356
10519
|
|
|
10357
10520
|
class DrawerService {
|
|
10358
|
-
isOpened =
|
|
10359
|
-
isExtended =
|
|
10521
|
+
isOpened = signal(false, ...(ngDevMode ? [{ debugName: "isOpened" }] : []));
|
|
10522
|
+
isExtended = signal(false, ...(ngDevMode ? [{ debugName: "isExtended" }] : []));
|
|
10360
10523
|
backdrop = inject(BackdropService);
|
|
10361
10524
|
open() {
|
|
10362
|
-
this.isOpened.
|
|
10525
|
+
this.isOpened.set(true);
|
|
10363
10526
|
}
|
|
10364
10527
|
close() {
|
|
10365
10528
|
this.collapse();
|
|
10366
|
-
this.isOpened.
|
|
10529
|
+
this.isOpened.set(false);
|
|
10367
10530
|
}
|
|
10368
10531
|
toggle() {
|
|
10369
|
-
this.isOpened
|
|
10532
|
+
this.isOpened() ? this.close() : this.open();
|
|
10370
10533
|
}
|
|
10371
10534
|
extend() {
|
|
10372
|
-
this.isExtended.
|
|
10535
|
+
this.isExtended.set(true);
|
|
10373
10536
|
this.backdrop.show();
|
|
10374
10537
|
}
|
|
10375
10538
|
collapse() {
|
|
10376
10539
|
this.backdrop.hide();
|
|
10377
|
-
this.isExtended.
|
|
10540
|
+
this.isExtended.set(false);
|
|
10378
10541
|
}
|
|
10379
10542
|
toggleExtension() {
|
|
10380
|
-
this.isExtended
|
|
10543
|
+
this.isExtended() ? this.collapse() : this.extend();
|
|
10381
10544
|
}
|
|
10382
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10383
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.
|
|
10545
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10546
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerService });
|
|
10384
10547
|
}
|
|
10385
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
10548
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerService, decorators: [{
|
|
10386
10549
|
type: Injectable
|
|
10387
10550
|
}] });
|
|
10388
10551
|
|
|
@@ -10423,14 +10586,14 @@ class DrawerComponent {
|
|
|
10423
10586
|
afterNextRender(() => {
|
|
10424
10587
|
this.drawerGridTemplateColumns = this.element.style.gridTemplateColumns;
|
|
10425
10588
|
});
|
|
10426
|
-
|
|
10427
|
-
this.drawerOpened.set(
|
|
10428
|
-
if (!
|
|
10589
|
+
effect(() => {
|
|
10590
|
+
this.drawerOpened.set(this.drawer.isOpened());
|
|
10591
|
+
if (!this.drawer.isOpened())
|
|
10429
10592
|
this.resetGridTemplateColumns();
|
|
10430
10593
|
});
|
|
10431
|
-
|
|
10432
|
-
this.drawerExtended.set(
|
|
10433
|
-
if (!
|
|
10594
|
+
effect(() => {
|
|
10595
|
+
this.drawerExtended.set(this.drawer.isExtended());
|
|
10596
|
+
if (!this.drawer.isExtended())
|
|
10434
10597
|
this.resetGridTemplateColumns();
|
|
10435
10598
|
});
|
|
10436
10599
|
}
|
|
@@ -10443,12 +10606,12 @@ class DrawerComponent {
|
|
|
10443
10606
|
resetGridTemplateColumns() {
|
|
10444
10607
|
this.element.style.gridTemplateColumns = this.defaultDrawerGridTemplate;
|
|
10445
10608
|
}
|
|
10446
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10447
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.
|
|
10609
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10610
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.7", 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"] });
|
|
10448
10611
|
}
|
|
10449
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
10612
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerComponent, decorators: [{
|
|
10450
10613
|
type: Component,
|
|
10451
|
-
args: [{ selector: '
|
|
10614
|
+
args: [{ selector: 'Drawer, drawer', standalone: true, providers: [DrawerService], template: ``, host: {
|
|
10452
10615
|
'[attr.drawer-opened]': 'drawerOpened()',
|
|
10453
10616
|
'[attr.drawer-extended]': 'drawerExtended()'
|
|
10454
10617
|
}, 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"] }]
|
|
@@ -10469,13 +10632,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
10469
10632
|
class DrawerNavbarComponent {
|
|
10470
10633
|
drawerStack = inject(DrawerStackService);
|
|
10471
10634
|
drawerService = inject(DrawerService);
|
|
10472
|
-
isExtended =
|
|
10473
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10474
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.
|
|
10635
|
+
isExtended = this.drawerService.isExtended();
|
|
10636
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10637
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.7", type: DrawerNavbarComponent, isStandalone: true, selector: "DrawerNavbar, drawernavbar", ngImport: i0, template: "<menu class=\"flex items-center gap-2 p-4 font-semibold\">\n <li>\n <button variant=\"ghost\" class=\"group\" [attr.title]=\"'back' | transloco\" (click)=\"drawerStack.close()\">\n <i class=\"fa-fw far fa-arrow-left [&_svg]-ms-1 [&_svg]transition-transform opacity-60 group-hover:-translate-x-0.5\"></i>\n {{ 'back' | transloco }}\n </button>\n </li>\n\n <li role=\"presentation\">\n <VerticalDivider class=\"min-h-8\" />\n </li>\n\n <ng-content></ng-content>\n</menu>\n", dependencies: [{ kind: "directive", type: ButtonComponent, selector: "button", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: VerticalDividerComponent, selector: "vertical-divider, VerticalDivider, verticaldivider" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10475
10638
|
}
|
|
10476
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
10639
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerNavbarComponent, decorators: [{
|
|
10477
10640
|
type: Component,
|
|
10478
|
-
args: [{ selector: '
|
|
10641
|
+
args: [{ selector: 'DrawerNavbar, drawernavbar', standalone: true, imports: [TranslocoPipe, ButtonComponent, VerticalDividerComponent], template: "<menu class=\"flex items-center gap-2 p-4 font-semibold\">\n <li>\n <button variant=\"ghost\" class=\"group\" [attr.title]=\"'back' | transloco\" (click)=\"drawerStack.close()\">\n <i class=\"fa-fw far fa-arrow-left [&_svg]-ms-1 [&_svg]transition-transform opacity-60 group-hover:-translate-x-0.5\"></i>\n {{ 'back' | transloco }}\n </button>\n </li>\n\n <li role=\"presentation\">\n <VerticalDivider class=\"min-h-8\" />\n </li>\n\n <ng-content></ng-content>\n</menu>\n" }]
|
|
10479
10642
|
}] });
|
|
10480
10643
|
|
|
10481
10644
|
const searchRoute = 'search';
|
|
@@ -10700,31 +10863,19 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
10700
10863
|
// todo handle tree items
|
|
10701
10864
|
return res;
|
|
10702
10865
|
}
|
|
10703
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10704
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
10866
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerAdvancedFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10867
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: DrawerAdvancedFiltersComponent, isStandalone: true, selector: "advanced-filters", providers: [DrawerService, 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 bg-white\">\n <DrawerNavbar class=\"block border-b border-neutral-300 bg-white\">\n <button [attr.title]=\"'drawers.search' | transloco\" (click)=\"onSearch()\">\n {{ 'drawers.search' | transloco }}\n </button>\n </DrawerNavbar>\n\n <div class=\"flex h-full flex-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 h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white 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 id=\"content-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('content.operator')\"\n formControlName=\"value\" />\n </div>\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 h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white 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 <!-- TABS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.inScope' | transloco }} "{{ currentTab() }}"</h1>\n <div class=\"inline-flex -space-x-px rtl:space-x-reverse\">\n @for (tab of tabs(); track $index) {\n <button\n [decoration]=\"tab.path !== currentTab() ? 'outline' : 'none'\"\n class=\"rounded-none shadow-none first:rounded-s-md last:rounded-e-md\"\n (click)=\"onTabChange(tab.path)\">\n {{ tab.display | syslang | transloco }}\n </button>\n }\n </div>\n\n <!-- FILTERS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.applyFilters' | transloco }}</h1>\n @for (filter of filters(); track $index) {\n {{ filter.display || filter.alias | syslang | transloco }}\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;display:grid;justify-content:flex-end;position:absolute;top:0;height:100%;right:-100%;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", 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: "pipe", type: TranslocoPipe, name: "transloco" }, { kind: "pipe", type: SyslangPipe, name: "syslang" }] });
|
|
10705
10868
|
}
|
|
10706
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
10869
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerAdvancedFiltersComponent, decorators: [{
|
|
10707
10870
|
type: Component,
|
|
10708
|
-
args: [{ selector: 'advanced-filters', standalone: true, imports: [ReactiveFormsModule, TranslocoPipe, SyslangPipe, DrawerNavbarComponent, DropdownInputComponent, ButtonComponent, InputComponent], providers: [DrawerService, provideTranslocoScope('drawers')], 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 bg-white\">\n <
|
|
10871
|
+
args: [{ selector: 'advanced-filters', standalone: true, imports: [ReactiveFormsModule, TranslocoPipe, SyslangPipe, DrawerNavbarComponent, DropdownInputComponent, ButtonComponent, InputComponent], providers: [DrawerService, provideTranslocoScope('drawers')], 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 bg-white\">\n <DrawerNavbar class=\"block border-b border-neutral-300 bg-white\">\n <button [attr.title]=\"'drawers.search' | transloco\" (click)=\"onSearch()\">\n {{ 'drawers.search' | transloco }}\n </button>\n </DrawerNavbar>\n\n <div class=\"flex h-full flex-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 h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white 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 id=\"content-value\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [placeholder]=\"getPlaceholder('content.operator')\"\n formControlName=\"value\" />\n </div>\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 h-8 w-full rounded-md border border-gray-200 bg-neutral-50 px-2 hover:bg-white hover:outline focus:bg-white 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 <!-- TABS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.inScope' | transloco }} "{{ currentTab() }}"</h1>\n <div class=\"inline-flex -space-x-px rtl:space-x-reverse\">\n @for (tab of tabs(); track $index) {\n <button\n [decoration]=\"tab.path !== currentTab() ? 'outline' : 'none'\"\n class=\"rounded-none shadow-none first:rounded-s-md last:rounded-e-md\"\n (click)=\"onTabChange(tab.path)\">\n {{ tab.display | syslang | transloco }}\n </button>\n }\n </div>\n\n <!-- FILTERS -->\n <h1 class=\"mt-4 text-xl font-bold\">{{ 'drawers.applyFilters' | transloco }}</h1>\n @for (filter of filters(); track $index) {\n {{ filter.display || filter.alias | syslang | transloco }}\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;display:grid;justify-content:flex-end;position:absolute;top:0;height:100%;right:-100%;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"] }]
|
|
10709
10872
|
}], ctorParameters: () => [] });
|
|
10710
10873
|
|
|
10711
|
-
class
|
|
10712
|
-
|
|
10713
|
-
destroyRef = inject(DestroyRef);
|
|
10714
|
-
labels = inject(AppStore).getLabels();
|
|
10715
|
-
applicationStore = inject(ApplicationStore);
|
|
10874
|
+
class EntitiesPanel {
|
|
10875
|
+
cn = cn;
|
|
10716
10876
|
appStore = inject(AppStore);
|
|
10717
|
-
selectionStore = inject(SelectionStore);
|
|
10718
10877
|
previewService = inject(PreviewService);
|
|
10719
|
-
|
|
10720
|
-
input = signal(getState(this.selectionStore).queryText || '', ...(ngDevMode ? [{ debugName: "input" }] : []));
|
|
10721
|
-
extracts = computed(() => {
|
|
10722
|
-
getState(this.applicationStore);
|
|
10723
|
-
if (!this.article())
|
|
10724
|
-
return [];
|
|
10725
|
-
return this.applicationStore.getExtracts(this.article().id);
|
|
10726
|
-
}, ...(ngDevMode ? [{ debugName: "extracts" }] : []));
|
|
10727
|
-
similarDocuments = signal([], ...(ngDevMode ? [{ debugName: "similarDocuments" }] : []));
|
|
10878
|
+
article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
|
|
10728
10879
|
previewHighlights = computed(() => {
|
|
10729
10880
|
const highlights = this.appStore.getWebServiceByType('preview')?.highlights
|
|
10730
10881
|
?.split(',')
|
|
@@ -10738,42 +10889,10 @@ class AdvancedSearchComponent {
|
|
|
10738
10889
|
navigation = signal(undefined, ...(ngDevMode ? [{ debugName: "navigation" }] : []));
|
|
10739
10890
|
hovering = signal(undefined, ...(ngDevMode ? [{ debugName: "hovering" }] : []));
|
|
10740
10891
|
hoverIndex = computed(() => (this.navigation()?.value === this.hovering() ? this.navigation().index : 0), ...(ngDevMode ? [{ debugName: "hoverIndex" }] : []));
|
|
10741
|
-
hasLabels = computed(() => {
|
|
10742
|
-
const article = this.article(); // required as any otherwise the lines below won't compile
|
|
10743
|
-
const publicLabels = article[this.labels.public];
|
|
10744
|
-
const privateLabels = article[this.labels.private];
|
|
10745
|
-
return (publicLabels && publicLabels.length > 0) || (privateLabels && privateLabels.length > 0);
|
|
10746
|
-
}, ...(ngDevMode ? [{ debugName: "hasLabels" }] : []));
|
|
10747
|
-
loading = signal(true, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
10748
|
-
constructor() {
|
|
10749
|
-
this.previewService.events.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(event => {
|
|
10750
|
-
switch (event) {
|
|
10751
|
-
case 'fetching':
|
|
10752
|
-
this.loading.set(true);
|
|
10753
|
-
break;
|
|
10754
|
-
default:
|
|
10755
|
-
this.loading.set(false);
|
|
10756
|
-
break;
|
|
10757
|
-
}
|
|
10758
|
-
});
|
|
10759
|
-
effect(() => {
|
|
10760
|
-
const id = this.article().id;
|
|
10761
|
-
untracked(() => {
|
|
10762
|
-
const queryName = this.queryParamsStore.getQuery().name;
|
|
10763
|
-
fetchSimilarDocuments(id, queryName).then(res => this.similarDocuments.set(res.data));
|
|
10764
|
-
});
|
|
10765
|
-
});
|
|
10766
|
-
}
|
|
10767
|
-
executeSearch() {
|
|
10768
|
-
this.selectionStore.update({ queryText: this.input() });
|
|
10769
|
-
}
|
|
10770
|
-
clearInput() {
|
|
10771
|
-
this.input.set('');
|
|
10772
|
-
}
|
|
10773
10892
|
scrollTo(type, index, usePassageHighlighter = false) {
|
|
10774
10893
|
// if previewData contains "matchingpassages" then we use the passage highlighter otherwise we use "extractslocations"
|
|
10775
10894
|
const category = type || this.previewService.highlightCategory;
|
|
10776
|
-
this.previewService.events.
|
|
10895
|
+
this.previewService.events.set('scrollTo');
|
|
10777
10896
|
this.previewService.sendMessage({ action: 'select', id: `${category}_${index}`, usePassageHighlighter });
|
|
10778
10897
|
}
|
|
10779
10898
|
navigateNext(entity, data) {
|
|
@@ -10798,14 +10917,399 @@ class AdvancedSearchComponent {
|
|
|
10798
10917
|
this.scrollTo(entity, id);
|
|
10799
10918
|
}
|
|
10800
10919
|
}
|
|
10801
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10802
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
10920
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: EntitiesPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
10921
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: EntitiesPanel, isStandalone: true, selector: "entities-panel,EntitiesPanel,entitiesPanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
10922
|
+
<details [class]="cn('group/parent', '[&>details>summary>i>svg]:group-open/entities:rotate-180')" name="advanced-search-panels">
|
|
10923
|
+
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
10924
|
+
<p class="flex items-baseline gap-2 font-semibold capitalize">
|
|
10925
|
+
<i class="fa-fw far fa-highlighter"></i>
|
|
10926
|
+
{{ 'entities' | transloco }}
|
|
10927
|
+
</p>
|
|
10928
|
+
|
|
10929
|
+
<i class="fa-fw far fa-chevron-down group-open:rotate-180"></i>
|
|
10930
|
+
</summary>
|
|
10931
|
+
@for (highlight of previewHighlights(); track $index) {
|
|
10932
|
+
@if (highlight.metadata) {
|
|
10933
|
+
<ng-container *ngTemplateOutlet="metadataPanel; context: highlight" />
|
|
10934
|
+
}
|
|
10935
|
+
}
|
|
10936
|
+
</details>
|
|
10937
|
+
|
|
10938
|
+
<!-- entities's template -->
|
|
10939
|
+
<ng-template #metadataPanel let-metadata="metadata" let-name="name" let-iconClass="iconClass" let-entity="entity">
|
|
10940
|
+
<details class="group/entities p-3 first:pt-0" name="advanced-search-entities">
|
|
10941
|
+
<summary class="sticky top-8 flex cursor-pointer select-none items-baseline justify-between">
|
|
10942
|
+
<p class="flex items-baseline gap-2 font-semibold capitalize">
|
|
10943
|
+
<i class="fa-fw {{ iconClass || 'far fa-list' }}"></i>
|
|
10944
|
+
{{ name | transloco }}
|
|
10945
|
+
</p>
|
|
10946
|
+
|
|
10947
|
+
<i class="fa-fw far fa-chevron-down"></i>
|
|
10948
|
+
</summary>
|
|
10949
|
+
|
|
10950
|
+
<ul role="list">
|
|
10951
|
+
@for (data of metadata; track $index) {
|
|
10952
|
+
<li role="listitem" class="flex justify-between py-1 pl-2" (mouseenter)="hovering.set(data.value)" (mouseleave)="hovering.set(undefined)">
|
|
10953
|
+
<!-- shrink w-1/2 grow truncate ovoid the overlap when hovering the row -->
|
|
10954
|
+
<p class="w-1/2 shrink grow truncate">{{ data.display }}</p>
|
|
10955
|
+
|
|
10956
|
+
<p class="flex items-center gap-2">
|
|
10957
|
+
@if (hovering() === data.value) {
|
|
10958
|
+
<i class="fa-light fa-chevron-left" aria-label="previous entity" role="button" (click)="navigatePrev(entity, data)"></i>
|
|
10959
|
+
|
|
10960
|
+
<span>{{ hoverIndex() }} / {{ data.count }}</span>
|
|
10961
|
+
|
|
10962
|
+
<i class="fa-light fa-chevron-right" aria-label="next entity" role="button" (click)="navigateNext(entity, data)"></i>
|
|
10963
|
+
} @else {
|
|
10964
|
+
{{ data.count }}
|
|
10965
|
+
}
|
|
10966
|
+
</p>
|
|
10967
|
+
</li>
|
|
10968
|
+
}
|
|
10969
|
+
</ul>
|
|
10970
|
+
</details>
|
|
10971
|
+
</ng-template>
|
|
10972
|
+
`, 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: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10973
|
+
}
|
|
10974
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: EntitiesPanel, decorators: [{
|
|
10975
|
+
type: Component,
|
|
10976
|
+
args: [{
|
|
10977
|
+
selector: 'entities-panel,EntitiesPanel,entitiesPanel',
|
|
10978
|
+
imports: [TranslocoPipe, NgTemplateOutlet, ListItemComponent],
|
|
10979
|
+
template: `
|
|
10980
|
+
<details [class]="cn('group/parent', '[&>details>summary>i>svg]:group-open/entities:rotate-180')" name="advanced-search-panels">
|
|
10981
|
+
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
10982
|
+
<p class="flex items-baseline gap-2 font-semibold capitalize">
|
|
10983
|
+
<i class="fa-fw far fa-highlighter"></i>
|
|
10984
|
+
{{ 'entities' | transloco }}
|
|
10985
|
+
</p>
|
|
10986
|
+
|
|
10987
|
+
<i class="fa-fw far fa-chevron-down group-open:rotate-180"></i>
|
|
10988
|
+
</summary>
|
|
10989
|
+
@for (highlight of previewHighlights(); track $index) {
|
|
10990
|
+
@if (highlight.metadata) {
|
|
10991
|
+
<ng-container *ngTemplateOutlet="metadataPanel; context: highlight" />
|
|
10992
|
+
}
|
|
10993
|
+
}
|
|
10994
|
+
</details>
|
|
10995
|
+
|
|
10996
|
+
<!-- entities's template -->
|
|
10997
|
+
<ng-template #metadataPanel let-metadata="metadata" let-name="name" let-iconClass="iconClass" let-entity="entity">
|
|
10998
|
+
<details class="group/entities p-3 first:pt-0" name="advanced-search-entities">
|
|
10999
|
+
<summary class="sticky top-8 flex cursor-pointer select-none items-baseline justify-between">
|
|
11000
|
+
<p class="flex items-baseline gap-2 font-semibold capitalize">
|
|
11001
|
+
<i class="fa-fw {{ iconClass || 'far fa-list' }}"></i>
|
|
11002
|
+
{{ name | transloco }}
|
|
11003
|
+
</p>
|
|
11004
|
+
|
|
11005
|
+
<i class="fa-fw far fa-chevron-down"></i>
|
|
11006
|
+
</summary>
|
|
11007
|
+
|
|
11008
|
+
<ul role="list">
|
|
11009
|
+
@for (data of metadata; track $index) {
|
|
11010
|
+
<li role="listitem" class="flex justify-between py-1 pl-2" (mouseenter)="hovering.set(data.value)" (mouseleave)="hovering.set(undefined)">
|
|
11011
|
+
<!-- shrink w-1/2 grow truncate ovoid the overlap when hovering the row -->
|
|
11012
|
+
<p class="w-1/2 shrink grow truncate">{{ data.display }}</p>
|
|
11013
|
+
|
|
11014
|
+
<p class="flex items-center gap-2">
|
|
11015
|
+
@if (hovering() === data.value) {
|
|
11016
|
+
<i class="fa-light fa-chevron-left" aria-label="previous entity" role="button" (click)="navigatePrev(entity, data)"></i>
|
|
11017
|
+
|
|
11018
|
+
<span>{{ hoverIndex() }} / {{ data.count }}</span>
|
|
11019
|
+
|
|
11020
|
+
<i class="fa-light fa-chevron-right" aria-label="next entity" role="button" (click)="navigateNext(entity, data)"></i>
|
|
11021
|
+
} @else {
|
|
11022
|
+
{{ data.count }}
|
|
11023
|
+
}
|
|
11024
|
+
</p>
|
|
11025
|
+
</li>
|
|
11026
|
+
}
|
|
11027
|
+
</ul>
|
|
11028
|
+
</details>
|
|
11029
|
+
</ng-template>
|
|
11030
|
+
`
|
|
11031
|
+
}]
|
|
11032
|
+
}] });
|
|
11033
|
+
|
|
11034
|
+
class ExtractsPanel {
|
|
11035
|
+
cn = cn;
|
|
11036
|
+
destroyRef = inject(DestroyRef);
|
|
11037
|
+
applicationStore = inject(ApplicationStore);
|
|
11038
|
+
previewService = inject(PreviewService);
|
|
11039
|
+
article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
|
|
11040
|
+
loading = signal(true, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
11041
|
+
extracts = signal([], ...(ngDevMode ? [{ debugName: "extracts" }] : []));
|
|
11042
|
+
constructor() {
|
|
11043
|
+
effect(() => {
|
|
11044
|
+
this.loading.set(this.previewService.events() === 'fetching');
|
|
11045
|
+
});
|
|
11046
|
+
effect(() => {
|
|
11047
|
+
const { id } = this.article();
|
|
11048
|
+
if (id && !this.loading()) {
|
|
11049
|
+
this.extracts.set(this.applicationStore.getExtracts(id));
|
|
11050
|
+
}
|
|
11051
|
+
});
|
|
11052
|
+
}
|
|
11053
|
+
scrollTo(type, index, usePassageHighlighter = false) {
|
|
11054
|
+
// if previewData contains "matchingpassages" then we use the passage highlighter otherwise we use "extractslocations"
|
|
11055
|
+
const category = type || this.previewService.highlightCategory;
|
|
11056
|
+
this.previewService.events.set('scrollTo');
|
|
11057
|
+
this.previewService.sendMessage({ action: 'select', id: `${category}_${index}`, usePassageHighlighter });
|
|
11058
|
+
}
|
|
11059
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ExtractsPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11060
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: ExtractsPanel, isStandalone: true, selector: "extracts-panel, ExtractsPanel, extractspanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
11061
|
+
<details class="group/parent" name="advanced-search-panels" open>
|
|
11062
|
+
<summary [class]="cn('sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3', '')">
|
|
11063
|
+
<p class="flex items-baseline gap-2 font-semibold">
|
|
11064
|
+
<i class="fa-fw far fa-tags"></i>
|
|
11065
|
+
{{ 'extracts' | transloco }}
|
|
11066
|
+
</p>
|
|
11067
|
+
|
|
11068
|
+
<i class="fa-fw far fa-chevron-down"></i>
|
|
11069
|
+
</summary>
|
|
11070
|
+
|
|
11071
|
+
@if (loading()) {
|
|
11072
|
+
<div class="flex h-32 items-center justify-center">
|
|
11073
|
+
<i class="fa-fw far fa-spinner-third fa-spin text-primary"></i>
|
|
11074
|
+
</div>
|
|
11075
|
+
} @else {
|
|
11076
|
+
<ul>
|
|
11077
|
+
@for (extract of extracts(); track $index) {
|
|
11078
|
+
<li class="hover:bg-muted mr-2 rounded px-2 py-1" [id]="extract.id" [attr.data-id]="extract.textIndex">
|
|
11079
|
+
<p class="cursor-pointer" role="button" [innerHTML]="extract.text" (click)="scrollTo(undefined, extract.textIndex, true)"></p>
|
|
11080
|
+
</li>
|
|
11081
|
+
} @empty {
|
|
11082
|
+
<li class="text-slate-300">{{ 'drawers.noRelevantExtracts' | transloco }}</li>
|
|
11083
|
+
}
|
|
11084
|
+
</ul>
|
|
11085
|
+
}
|
|
11086
|
+
</details>
|
|
11087
|
+
`, isInline: true, dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
10803
11088
|
}
|
|
10804
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
11089
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: ExtractsPanel, decorators: [{
|
|
10805
11090
|
type: Component,
|
|
10806
|
-
args: [{
|
|
11091
|
+
args: [{
|
|
11092
|
+
selector: 'extracts-panel, ExtractsPanel, extractspanel',
|
|
11093
|
+
imports: [TranslocoPipe],
|
|
11094
|
+
template: `
|
|
11095
|
+
<details class="group/parent" name="advanced-search-panels" open>
|
|
11096
|
+
<summary [class]="cn('sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3', '')">
|
|
11097
|
+
<p class="flex items-baseline gap-2 font-semibold">
|
|
11098
|
+
<i class="fa-fw far fa-tags"></i>
|
|
11099
|
+
{{ 'extracts' | transloco }}
|
|
11100
|
+
</p>
|
|
11101
|
+
|
|
11102
|
+
<i class="fa-fw far fa-chevron-down"></i>
|
|
11103
|
+
</summary>
|
|
11104
|
+
|
|
11105
|
+
@if (loading()) {
|
|
11106
|
+
<div class="flex h-32 items-center justify-center">
|
|
11107
|
+
<i class="fa-fw far fa-spinner-third fa-spin text-primary"></i>
|
|
11108
|
+
</div>
|
|
11109
|
+
} @else {
|
|
11110
|
+
<ul>
|
|
11111
|
+
@for (extract of extracts(); track $index) {
|
|
11112
|
+
<li class="hover:bg-muted mr-2 rounded px-2 py-1" [id]="extract.id" [attr.data-id]="extract.textIndex">
|
|
11113
|
+
<p class="cursor-pointer" role="button" [innerHTML]="extract.text" (click)="scrollTo(undefined, extract.textIndex, true)"></p>
|
|
11114
|
+
</li>
|
|
11115
|
+
} @empty {
|
|
11116
|
+
<li class="text-slate-300">{{ 'drawers.noRelevantExtracts' | transloco }}</li>
|
|
11117
|
+
}
|
|
11118
|
+
</ul>
|
|
11119
|
+
}
|
|
11120
|
+
</details>
|
|
11121
|
+
`
|
|
11122
|
+
}]
|
|
10807
11123
|
}], ctorParameters: () => [] });
|
|
10808
11124
|
|
|
11125
|
+
class LabelsPanel {
|
|
11126
|
+
labels = inject(AppStore).getLabels();
|
|
11127
|
+
article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
|
|
11128
|
+
hasLabels = computed(() => {
|
|
11129
|
+
const article = this.article(); // required as any otherwise the lines below won't compile
|
|
11130
|
+
const publicLabels = article[this.labels.public];
|
|
11131
|
+
const privateLabels = article[this.labels.private];
|
|
11132
|
+
return (publicLabels && publicLabels.length > 0) || (privateLabels && privateLabels.length > 0);
|
|
11133
|
+
}, ...(ngDevMode ? [{ debugName: "hasLabels" }] : []));
|
|
11134
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: LabelsPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11135
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: LabelsPanel, isStandalone: true, selector: "labels-panel, LabelsPanel, labelspanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
11136
|
+
@if (hasLabels()) {
|
|
11137
|
+
<details class="group/parent" name="advanced-search-panels">
|
|
11138
|
+
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
11139
|
+
<p class="flex items-baseline gap-2 font-semibold">
|
|
11140
|
+
<i class="fa-fw far fa-tags"></i>
|
|
11141
|
+
{{ 'labels' | transloco }}
|
|
11142
|
+
</p>
|
|
11143
|
+
|
|
11144
|
+
<i class="fa-fw far fa-chevron-down group-open:rotate-180"></i>
|
|
11145
|
+
</summary>
|
|
11146
|
+
|
|
11147
|
+
<div>
|
|
11148
|
+
<ul class="mt-4 flex flex-col flex-wrap gap-2">
|
|
11149
|
+
<li>
|
|
11150
|
+
<Metadata decoration="outline" hover="yes" [article]="article()!" [metadata]="labels.public" />
|
|
11151
|
+
</li>
|
|
11152
|
+
|
|
11153
|
+
<li>
|
|
11154
|
+
<Metadata decoration="outline" hover="yes" [article]="article()!" [metadata]="labels.private" />
|
|
11155
|
+
</li>
|
|
11156
|
+
</ul>
|
|
11157
|
+
</div>
|
|
11158
|
+
</details>
|
|
11159
|
+
}
|
|
11160
|
+
`, isInline: true, dependencies: [{ kind: "component", type: MetadataComponent, selector: "Metadata, metadata", inputs: ["class", "variant", "decoration", "hover", "metadata", "article", "limit"], outputs: ["click"], exportAs: ["metadata"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11161
|
+
}
|
|
11162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: LabelsPanel, decorators: [{
|
|
11163
|
+
type: Component,
|
|
11164
|
+
args: [{
|
|
11165
|
+
selector: 'labels-panel, LabelsPanel, labelspanel',
|
|
11166
|
+
imports: [TranslocoPipe, MetadataComponent],
|
|
11167
|
+
template: `
|
|
11168
|
+
@if (hasLabels()) {
|
|
11169
|
+
<details class="group/parent" name="advanced-search-panels">
|
|
11170
|
+
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
11171
|
+
<p class="flex items-baseline gap-2 font-semibold">
|
|
11172
|
+
<i class="fa-fw far fa-tags"></i>
|
|
11173
|
+
{{ 'labels' | transloco }}
|
|
11174
|
+
</p>
|
|
11175
|
+
|
|
11176
|
+
<i class="fa-fw far fa-chevron-down group-open:rotate-180"></i>
|
|
11177
|
+
</summary>
|
|
11178
|
+
|
|
11179
|
+
<div>
|
|
11180
|
+
<ul class="mt-4 flex flex-col flex-wrap gap-2">
|
|
11181
|
+
<li>
|
|
11182
|
+
<Metadata decoration="outline" hover="yes" [article]="article()!" [metadata]="labels.public" />
|
|
11183
|
+
</li>
|
|
11184
|
+
|
|
11185
|
+
<li>
|
|
11186
|
+
<Metadata decoration="outline" hover="yes" [article]="article()!" [metadata]="labels.private" />
|
|
11187
|
+
</li>
|
|
11188
|
+
</ul>
|
|
11189
|
+
</div>
|
|
11190
|
+
</details>
|
|
11191
|
+
}
|
|
11192
|
+
`
|
|
11193
|
+
}]
|
|
11194
|
+
}] });
|
|
11195
|
+
|
|
11196
|
+
class SimilarDocumentsPanel {
|
|
11197
|
+
queryParamsStore = inject(QueryParamsStore);
|
|
11198
|
+
article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
|
|
11199
|
+
queryName = computed(() => this.queryParamsStore.getQuery().name, ...(ngDevMode ? [{ debugName: "queryName" }] : []));
|
|
11200
|
+
similarDocumentsResource = resource({
|
|
11201
|
+
params: () => {
|
|
11202
|
+
const { id } = this.article() || {};
|
|
11203
|
+
return { id };
|
|
11204
|
+
},
|
|
11205
|
+
loader: ({ params: { id }, abortSignal }) => {
|
|
11206
|
+
const queryName = this.queryName();
|
|
11207
|
+
return fetchSimilarDocuments(id, queryName, abortSignal);
|
|
11208
|
+
},
|
|
11209
|
+
defaultValue: []
|
|
11210
|
+
});
|
|
11211
|
+
similarDocuments = computed(() => {
|
|
11212
|
+
if (this.similarDocumentsResource.hasValue()) {
|
|
11213
|
+
return this.similarDocumentsResource.value() || [];
|
|
11214
|
+
}
|
|
11215
|
+
return [];
|
|
11216
|
+
}, ...(ngDevMode ? [{ debugName: "similarDocuments" }] : []));
|
|
11217
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SimilarDocumentsPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11218
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: SimilarDocumentsPanel, isStandalone: true, selector: "similar-documents-panel, SimilarDocumentsPanel, similardocumentspanel", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
11219
|
+
@if (similarDocuments().length > 0) {
|
|
11220
|
+
<details class="group/parent" name="advanced-search-panels">
|
|
11221
|
+
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
11222
|
+
<p class="flex items-baseline gap-2 font-semibold">
|
|
11223
|
+
<i class="fa-fw far fa-tags"></i>
|
|
11224
|
+
{{ 'drawers.similarDocuments' | transloco }}
|
|
11225
|
+
</p>
|
|
11226
|
+
|
|
11227
|
+
<i class="fa-fw far fa-chevron-down group-open:rotate-180"></i>
|
|
11228
|
+
</summary>
|
|
11229
|
+
|
|
11230
|
+
<div>
|
|
11231
|
+
<ul class="mb-2 mt-4 flex flex-col flex-wrap px-2" role="list">
|
|
11232
|
+
@for (document of similarDocuments(); track $index) {
|
|
11233
|
+
<li role="listitem" selectArticleOnClick [article]="document" strategy="stack">
|
|
11234
|
+
<div class="text-primary flex size-[20px] items-center justify-center rounded-full">
|
|
11235
|
+
<source [collection]="article().collection" [connector]="article().connector" class="text-xs" />
|
|
11236
|
+
</div>
|
|
11237
|
+
|
|
11238
|
+
<span>{{ document.displayTitle ?? document.title }}</span>
|
|
11239
|
+
</li>
|
|
11240
|
+
}
|
|
11241
|
+
</ul>
|
|
11242
|
+
</div>
|
|
11243
|
+
</details>
|
|
11244
|
+
}
|
|
11245
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: SelectArticleOnClickDirective, selector: "[selectArticleOnClick]", inputs: ["article", "strategy"] }, { kind: "component", type: SourceComponent, selector: "source, Source", inputs: ["collection", "connector"] }, { kind: "directive", type: ListItemComponent, selector: "[role=\"listitem\"], [role=\"option\"]", inputs: ["class", "variant", "decoration"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
11246
|
+
}
|
|
11247
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: SimilarDocumentsPanel, decorators: [{
|
|
11248
|
+
type: Component,
|
|
11249
|
+
args: [{
|
|
11250
|
+
selector: 'similar-documents-panel, SimilarDocumentsPanel, similardocumentspanel',
|
|
11251
|
+
imports: [TranslocoPipe, SelectArticleOnClickDirective, SourceComponent, ListItemComponent],
|
|
11252
|
+
template: `
|
|
11253
|
+
@if (similarDocuments().length > 0) {
|
|
11254
|
+
<details class="group/parent" name="advanced-search-panels">
|
|
11255
|
+
<summary class="sticky top-0 flex cursor-pointer select-none items-baseline justify-between p-3">
|
|
11256
|
+
<p class="flex items-baseline gap-2 font-semibold">
|
|
11257
|
+
<i class="fa-fw far fa-tags"></i>
|
|
11258
|
+
{{ 'drawers.similarDocuments' | transloco }}
|
|
11259
|
+
</p>
|
|
11260
|
+
|
|
11261
|
+
<i class="fa-fw far fa-chevron-down group-open:rotate-180"></i>
|
|
11262
|
+
</summary>
|
|
11263
|
+
|
|
11264
|
+
<div>
|
|
11265
|
+
<ul class="mb-2 mt-4 flex flex-col flex-wrap px-2" role="list">
|
|
11266
|
+
@for (document of similarDocuments(); track $index) {
|
|
11267
|
+
<li role="listitem" selectArticleOnClick [article]="document" strategy="stack">
|
|
11268
|
+
<div class="text-primary flex size-[20px] items-center justify-center rounded-full">
|
|
11269
|
+
<source [collection]="article().collection" [connector]="article().connector" class="text-xs" />
|
|
11270
|
+
</div>
|
|
11271
|
+
|
|
11272
|
+
<span>{{ document.displayTitle ?? document.title }}</span>
|
|
11273
|
+
</li>
|
|
11274
|
+
}
|
|
11275
|
+
</ul>
|
|
11276
|
+
</div>
|
|
11277
|
+
</details>
|
|
11278
|
+
}
|
|
11279
|
+
`
|
|
11280
|
+
}]
|
|
11281
|
+
}] });
|
|
11282
|
+
|
|
11283
|
+
class AdvancedSearchComponent {
|
|
11284
|
+
cn = cn;
|
|
11285
|
+
article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
|
|
11286
|
+
selectionStore = inject(SelectionStore);
|
|
11287
|
+
queryParamsStore = inject(QueryParamsStore);
|
|
11288
|
+
queryText = linkedSignal({
|
|
11289
|
+
source: () => {
|
|
11290
|
+
const { queryText } = getState(this.selectionStore);
|
|
11291
|
+
return queryText;
|
|
11292
|
+
},
|
|
11293
|
+
computation: queryText => {
|
|
11294
|
+
const text = queryText || '';
|
|
11295
|
+
return text ? text.trim() : '';
|
|
11296
|
+
}
|
|
11297
|
+
});
|
|
11298
|
+
queryName = computed(() => this.queryParamsStore.getQuery().name, ...(ngDevMode ? [{ debugName: "queryName" }] : []));
|
|
11299
|
+
executeSearch() {
|
|
11300
|
+
this.selectionStore.update({ queryText: this.queryText() });
|
|
11301
|
+
}
|
|
11302
|
+
clearInput() {
|
|
11303
|
+
this.queryText.set('');
|
|
11304
|
+
}
|
|
11305
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AdvancedSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11306
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", type: AdvancedSearchComponent, isStandalone: true, selector: "advanced-search", inputs: { article: { classPropertyName: "article", publicName: "article", isSignal: true, isRequired: true, transformFunction: null } }, providers: [provideTranslocoScope('drawers')], ngImport: i0, template: "@if (article()) {\n <div\n [class]=\"\n cn(\n 'scroll-stable flex h-screen 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()\" />\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", inputs: ["class", "variant", "decoration", "size"] }, { kind: "component", type: SimilarDocumentsPanel, selector: "similar-documents-panel, SimilarDocumentsPanel, similardocumentspanel", inputs: ["article"] }, { 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" }] });
|
|
11307
|
+
}
|
|
11308
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: AdvancedSearchComponent, decorators: [{
|
|
11309
|
+
type: Component,
|
|
11310
|
+
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 h-screen 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()\" />\n </div>\n}\n", styles: [":host{--panel-max-height: none}input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}\n"] }]
|
|
11311
|
+
}] });
|
|
11312
|
+
|
|
10809
11313
|
const COMPONENTS_FOR_DOCUMENT_TYPE = new InjectionToken('COMPONENTS_FOR_DOCUMENT_TYPE');
|
|
10810
11314
|
const GLOBAL_QUERY_NAME = new InjectionToken('GLOBAL_QUERY_NAME', {
|
|
10811
11315
|
factory() {
|
|
@@ -10820,69 +11324,44 @@ const GLOBAL_QUERY_NAME = new InjectionToken('GLOBAL_QUERY_NAME', {
|
|
|
10820
11324
|
class DrawerPreviewComponent extends DrawerComponent {
|
|
10821
11325
|
globalQueryName;
|
|
10822
11326
|
destroyRef;
|
|
11327
|
+
/* injections */
|
|
10823
11328
|
injector = inject(Injector);
|
|
10824
11329
|
appStore = inject(AppStore);
|
|
10825
11330
|
selectionStore = inject(SelectionStore);
|
|
10826
11331
|
queryParamsStore = inject(QueryParamsStore);
|
|
10827
11332
|
previewService = inject(PreviewService);
|
|
10828
11333
|
getComponentsForDocumentType = inject(COMPONENTS_FOR_DOCUMENT_TYPE);
|
|
11334
|
+
/* inputs */
|
|
11335
|
+
articleId = input.required(...(ngDevMode ? [{ debugName: "articleId" }] : []));
|
|
11336
|
+
/* computed signals */
|
|
10829
11337
|
queryText = computed(() => {
|
|
10830
11338
|
const { queryText } = getState(this.selectionStore);
|
|
10831
11339
|
const { text } = getState(this.queryParamsStore);
|
|
10832
11340
|
return queryText ?? text;
|
|
10833
11341
|
}, ...(ngDevMode ? [{ debugName: "queryText" }] : []));
|
|
10834
|
-
|
|
10835
|
-
|
|
10836
|
-
|
|
10837
|
-
|
|
10838
|
-
previewType = computed(() => {
|
|
10839
|
-
return this.getComponentsForDocumentType(this.article()?.docformat || '').previewComponent;
|
|
10840
|
-
}, ...(ngDevMode ? [{ debugName: "previewType" }] : []));
|
|
11342
|
+
article = computed(() => {
|
|
11343
|
+
const { article } = getState(this.selectionStore);
|
|
11344
|
+
return article;
|
|
11345
|
+
}, ...(ngDevMode ? [{ debugName: "article" }] : []));
|
|
11346
|
+
previewType = computed(() => this.getComponentsForDocumentType(this.article()?.docformat || '').previewComponent, ...(ngDevMode ? [{ debugName: "previewType" }] : []));
|
|
10841
11347
|
constructor(globalQueryName, destroyRef) {
|
|
10842
11348
|
super();
|
|
10843
11349
|
this.globalQueryName = globalQueryName;
|
|
10844
11350
|
this.destroyRef = destroyRef;
|
|
10845
11351
|
this.destroyRef.onDestroy(() => {
|
|
10846
|
-
|
|
10847
|
-
|
|
10848
|
-
|
|
10849
|
-
const articleId = this.articleId();
|
|
10850
|
-
const text = this.queryText();
|
|
10851
|
-
untracked(async () => {
|
|
10852
|
-
const state = getState(this.selectionStore);
|
|
10853
|
-
try {
|
|
10854
|
-
const previewData = await firstValueFrom(this.previewService.preview(articleId, {
|
|
10855
|
-
name: this.globalQueryName,
|
|
10856
|
-
text
|
|
10857
|
-
}, state.previewHighlights?.highlights));
|
|
10858
|
-
this.previewData.set(previewData);
|
|
10859
|
-
}
|
|
10860
|
-
catch (err) {
|
|
10861
|
-
this.previewData.set(undefined);
|
|
10862
|
-
if (err.status === 401) {
|
|
10863
|
-
error('preview service 401: ', err);
|
|
10864
|
-
this.drawerStack.close();
|
|
10865
|
-
runInInjectionContext(this.injector, () => signIn().then(() => {
|
|
10866
|
-
const { useCredentials } = globalConfig;
|
|
10867
|
-
if (!useCredentials) {
|
|
10868
|
-
notify.success('You have been signed in.');
|
|
10869
|
-
}
|
|
10870
|
-
}));
|
|
10871
|
-
}
|
|
10872
|
-
else {
|
|
10873
|
-
error('Error fetching preview data:', err);
|
|
10874
|
-
throw err;
|
|
10875
|
-
}
|
|
10876
|
-
}
|
|
10877
|
-
});
|
|
11352
|
+
if (this.articleId()) {
|
|
11353
|
+
this.previewService.close(this.articleId(), { name: this.globalQueryName });
|
|
11354
|
+
}
|
|
10878
11355
|
});
|
|
10879
11356
|
}
|
|
10880
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10881
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.
|
|
11357
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerPreviewComponent, deps: [{ token: GLOBAL_QUERY_NAME }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
11358
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.7", 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() && drawer.isExtended()) {\n <div 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"] }] });
|
|
10882
11359
|
}
|
|
10883
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.
|
|
11360
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: DrawerPreviewComponent, decorators: [{
|
|
10884
11361
|
type: Component,
|
|
10885
|
-
args: [{ selector: '
|
|
11362
|
+
args: [{ selector: 'DrawerPreview, drawerpreview', standalone: true, imports: [NgClass, NgComponentOutlet, AdvancedSearchComponent], providers: [DrawerService, PreviewService], host: {
|
|
11363
|
+
class: 'bg-transparent text-foreground'
|
|
11364
|
+
}, 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() && drawer.isExtended()) {\n <div 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"] }]
|
|
10886
11365
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
10887
11366
|
type: Inject,
|
|
10888
11367
|
args: [GLOBAL_QUERY_NAME]
|
|
@@ -10896,5 +11375,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
10896
11375
|
* Generated bundle index. Do not edit.
|
|
10897
11376
|
*/
|
|
10898
11377
|
|
|
10899
|
-
export { AGGREGATIONS_NAMES, AGGREGATIONS_NAMES_PRESET_DEFAULT, APP_FEATURES, AdvancedSearchComponent, AggregationComponent, AggregationsService, AggregationsStore, Alert, AlertDialog, AlertsComponent, AppService, AppStore, ApplicationService, ApplicationStore, AuditFeedbackType, AuditService, AuthGuard, AutocompleteService, BOOKMARKS_CONFIG, BOOKMARKS_OPTIONS, BackdropComponent, BackdropService, BookmarkButtonComponent, BookmarksComponent, COLLECTIONS_CONFIG, COLLECTIONS_OPTIONS, COMPONENTS_FOR_DOCUMENT_TYPE, 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, 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, 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, SearchInputComponent, SearchService, SelectArticleOnClickDirective, SelectionHistoryService, SelectionService, SelectionStore, ShowBookmarkDirective, SignInComponent, SortSelectorComponent, SourceComponent, SourceIconPipe, SponsoredResultsComponent, SyslangPipe, THEMES, TextChunkService, ThemeProviderDirective, ThemeSelectorComponent, ThemeStore, ThemeToggleComponent, TranslocoDateImpurePipe, UserSettingsStore, applyThemeToNativeElement, auditInterceptorFn, authInterceptorFn, bodyInterceptorFn, bootstrapApp, buildQuery, debouncedSignal, errorInterceptorFn, getCurrentPath, getCurrentQueryName, getQueryNameFromRoute, processCssVars, queryNameResolver, signIn, themeColorNameToCssVariable, themeColorsToCssVariables, toastInterceptorFn, withAggregationsFeatures, withAlertsFeatures, withAppCustomizationFeatures, withAppFeatures, withApplicationFeatures, withAssistantFeatures, withBasketsFeatures, withBookmarkFeatures, withExtractsFeatures, withMultiSelectionFeatures, withPrincipalFeatures, withQueryParamsFeatures, withRecentSearchesFeatures, withSavedSearchesFeatures, withSelectionFeatures, withThemeBodyHook, withThemes, withThemesFeatures, withUserSettingsFeatures };
|
|
11378
|
+
export { AGGREGATIONS_NAMES, AGGREGATIONS_NAMES_PRESET_DEFAULT, APP_FEATURES, AdvancedSearchComponent, AggregationComponent, AggregationsService, AggregationsStore, Alert, AlertDialog, AlertsComponent, AppService, AppStore, ApplicationService, ApplicationStore, AuditFeedbackType, AuditService, AuthGuard, AutocompleteService, BOOKMARKS_CONFIG, BOOKMARKS_OPTIONS, BackdropComponent, BackdropService, BookmarkButtonComponent, BookmarksComponent, COLLECTIONS_CONFIG, COLLECTIONS_OPTIONS, COMPONENTS_FOR_DOCUMENT_TYPE, 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, 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, SearchInputComponent, SearchService, SelectArticleOnClickDirective, SelectionHistoryService, SelectionService, SelectionStore, ShowBookmarkDirective, SignInComponent, SortSelectorComponent, SourceComponent, SourceIconPipe, SponsoredResultsComponent, SyslangPipe, THEMES, TextChunkService, ThemeProviderDirective, ThemeSelectorComponent, ThemeStore, ThemeToggleComponent, TranslocoDateImpurePipe, UserSettingsStore, applyThemeToNativeElement, auditInterceptorFn, authInterceptorFn, bodyInterceptorFn, bootstrapApp, buildQuery, debouncedSignal, errorInterceptorFn, getCurrentPath, getCurrentQueryName, getQueryNameFromRoute, processCssVars, queryNameResolver, searchVariants, signIn, themeColorNameToCssVariable, themeColorsToCssVariables, toastInterceptorFn, withAggregationsFeatures, withAlertsFeatures, withAppCustomizationFeatures, withAppFeatures, withApplicationFeatures, withAssistantFeatures, withBasketsFeatures, withBookmarkFeatures, withExtractsFeatures, withMultiSelectionFeatures, withPrincipalFeatures, withQueryParamsFeatures, withRecentSearchesFeatures, withSavedSearchesFeatures, withSelectionFeatures, withThemeBodyHook, withThemes, withThemesFeatures, withUserSettingsFeatures };
|
|
10900
11379
|
//# sourceMappingURL=sinequa-atomic-angular.mjs.map
|