@sinequa/atomic-angular 0.1.43 → 0.1.50
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/features/searches/i18n/de.json +2 -1
- package/features/searches/i18n/en.json +4 -3
- package/features/searches/i18n/fr.json +2 -1
- package/fesm2022/sinequa-atomic-angular.mjs +1281 -781
- package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
- package/index.d.ts +1709 -1664
- package/package.json +14 -14
|
@@ -1,30 +1,32 @@
|
|
|
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';
|
|
21
|
+
import * as i2 from '@angular/cdk/a11y';
|
|
22
|
+
import { A11yModule } from '@angular/cdk/a11y';
|
|
21
23
|
import { Overlay } from '@angular/cdk/overlay';
|
|
22
24
|
|
|
23
25
|
class DropdownListComponent {
|
|
24
26
|
items = input.required(...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
25
27
|
onClick = output();
|
|
26
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
27
|
-
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: `
|
|
28
30
|
@for (item of items(); track $index) {
|
|
29
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">
|
|
30
32
|
{{ item.display || item.value }}
|
|
@@ -45,7 +47,7 @@ class DropdownListComponent {
|
|
|
45
47
|
}
|
|
46
48
|
`, isInline: true });
|
|
47
49
|
}
|
|
48
|
-
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: [{
|
|
49
51
|
type: Component,
|
|
50
52
|
args: [{
|
|
51
53
|
selector: 'dropdown-list, DropdownList',
|
|
@@ -83,8 +85,8 @@ class DropdownInputComponent {
|
|
|
83
85
|
onKeyUp = output(); // emits the input value
|
|
84
86
|
removeItem = output();
|
|
85
87
|
addItem = output();
|
|
86
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
87
|
-
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: `
|
|
88
90
|
@if (label()) {
|
|
89
91
|
<p class="font-semibold">{{ label() }}</p>
|
|
90
92
|
}
|
|
@@ -118,7 +120,7 @@ class DropdownInputComponent {
|
|
|
118
120
|
</Dropdown>
|
|
119
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"] }] });
|
|
120
122
|
}
|
|
121
|
-
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: [{
|
|
122
124
|
type: Component,
|
|
123
125
|
args: [{
|
|
124
126
|
selector: 'dropdown-input, DropdownInput',
|
|
@@ -168,10 +170,10 @@ class BackdropService {
|
|
|
168
170
|
hide() {
|
|
169
171
|
this.isVisible.next(false);
|
|
170
172
|
}
|
|
171
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
172
|
-
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' });
|
|
173
175
|
}
|
|
174
|
-
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: [{
|
|
175
177
|
type: Injectable,
|
|
176
178
|
args: [{
|
|
177
179
|
providedIn: 'root'
|
|
@@ -188,13 +190,13 @@ class BackdropComponent {
|
|
|
188
190
|
ngOnDestroy() {
|
|
189
191
|
this.sub.unsubscribe();
|
|
190
192
|
}
|
|
191
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
192
|
-
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"] });
|
|
193
195
|
}
|
|
194
|
-
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: [{
|
|
195
197
|
type: Component,
|
|
196
|
-
args: [{ selector: '
|
|
197
|
-
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'
|
|
198
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"] }]
|
|
199
201
|
}], ctorParameters: () => [], propDecorators: { backdropVisible: [{
|
|
200
202
|
type: HostBinding,
|
|
@@ -295,10 +297,10 @@ class AppService {
|
|
|
295
297
|
return EMPTY;
|
|
296
298
|
}));
|
|
297
299
|
}
|
|
298
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
299
|
-
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' });
|
|
300
302
|
}
|
|
301
|
-
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: [{
|
|
302
304
|
type: Injectable,
|
|
303
305
|
args: [{
|
|
304
306
|
providedIn: 'root'
|
|
@@ -492,7 +494,7 @@ function withAppFeatures() {
|
|
|
492
494
|
const schema = state.indexes?.['_']?.columns;
|
|
493
495
|
const col = schema[column];
|
|
494
496
|
if (col) {
|
|
495
|
-
return col.aliases?.[0]
|
|
497
|
+
return col.aliases?.[0] ? `${col.aliases[0].charAt(0).toLowerCase()}${col.aliases[0].slice(1)}` : column;
|
|
496
498
|
}
|
|
497
499
|
return column;
|
|
498
500
|
},
|
|
@@ -763,7 +765,7 @@ function withExtractsFeatures() {
|
|
|
763
765
|
* @returns The extracts associated with the given ID.
|
|
764
766
|
*/
|
|
765
767
|
getExtracts(id) {
|
|
766
|
-
return store.extracts().get(id);
|
|
768
|
+
return store.extracts().get(id) || [];
|
|
767
769
|
}
|
|
768
770
|
})));
|
|
769
771
|
}
|
|
@@ -796,10 +798,10 @@ class PrincipalService {
|
|
|
796
798
|
return EMPTY;
|
|
797
799
|
}));
|
|
798
800
|
}
|
|
799
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
800
|
-
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' });
|
|
801
803
|
}
|
|
802
|
-
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: [{
|
|
803
805
|
type: Injectable,
|
|
804
806
|
args: [{
|
|
805
807
|
providedIn: 'root'
|
|
@@ -1228,10 +1230,10 @@ class QueryService {
|
|
|
1228
1230
|
};
|
|
1229
1231
|
this.queryParamsStore.patch({ page }, audit);
|
|
1230
1232
|
}
|
|
1231
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1232
|
-
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' });
|
|
1233
1235
|
}
|
|
1234
|
-
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: [{
|
|
1235
1237
|
type: Injectable,
|
|
1236
1238
|
args: [{
|
|
1237
1239
|
providedIn: 'root'
|
|
@@ -1478,10 +1480,10 @@ class AggregationsService {
|
|
|
1478
1480
|
}
|
|
1479
1481
|
return node;
|
|
1480
1482
|
}
|
|
1481
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
1482
|
-
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' });
|
|
1483
1485
|
}
|
|
1484
|
-
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: [{
|
|
1485
1487
|
type: Injectable,
|
|
1486
1488
|
args: [{
|
|
1487
1489
|
providedIn: 'root'
|
|
@@ -1888,6 +1890,25 @@ function withBookmarkFeatures() {
|
|
|
1888
1890
|
})));
|
|
1889
1891
|
}
|
|
1890
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
|
+
|
|
1891
1912
|
function withRecentSearchesFeatures() {
|
|
1892
1913
|
return signalStoreFeature(withState({ recentSearches: [] }), withMethods(store => ({
|
|
1893
1914
|
/**
|
|
@@ -2021,7 +2042,13 @@ function withSavedSearchesFeatures() {
|
|
|
2021
2042
|
if (!search)
|
|
2022
2043
|
return undefined;
|
|
2023
2044
|
const savedSearches = store.savedSearches();
|
|
2024
|
-
return savedSearches?.find(savedSearch =>
|
|
2045
|
+
return savedSearches?.find(savedSearch => {
|
|
2046
|
+
const queryParams = savedSearch.url.split('?')[1];
|
|
2047
|
+
if (!queryParams)
|
|
2048
|
+
return false;
|
|
2049
|
+
const q = queryParams.split('&').find(qp => qp.startsWith('q='));
|
|
2050
|
+
return !!q && decodeURI(q.substring(2)) === search;
|
|
2051
|
+
});
|
|
2025
2052
|
}
|
|
2026
2053
|
})));
|
|
2027
2054
|
}
|
|
@@ -2070,7 +2097,7 @@ function withUserSettingsFeatures() {
|
|
|
2070
2097
|
})));
|
|
2071
2098
|
}
|
|
2072
2099
|
|
|
2073
|
-
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());
|
|
2074
2101
|
|
|
2075
2102
|
const ROUTE_COMPONENTS = new InjectionToken('ROUTE_COMPONENTS', { factory: () => [] });
|
|
2076
2103
|
class ApplicationService {
|
|
@@ -2311,10 +2338,10 @@ class ApplicationService {
|
|
|
2311
2338
|
document.documentElement.style.setProperty('--logo-large', `url('${light.large}')`);
|
|
2312
2339
|
}
|
|
2313
2340
|
}
|
|
2314
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2315
|
-
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' });
|
|
2316
2343
|
}
|
|
2317
|
-
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: [{
|
|
2318
2345
|
type: Injectable,
|
|
2319
2346
|
args: [{
|
|
2320
2347
|
providedIn: 'root'
|
|
@@ -2426,10 +2453,10 @@ class AuditService {
|
|
|
2426
2453
|
}
|
|
2427
2454
|
});
|
|
2428
2455
|
}
|
|
2429
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2430
|
-
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' });
|
|
2431
2458
|
}
|
|
2432
|
-
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: [{
|
|
2433
2460
|
type: Injectable,
|
|
2434
2461
|
args: [{
|
|
2435
2462
|
providedIn: 'root'
|
|
@@ -2500,10 +2527,10 @@ class AutocompleteService {
|
|
|
2500
2527
|
}
|
|
2501
2528
|
return items;
|
|
2502
2529
|
}
|
|
2503
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2504
|
-
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' });
|
|
2505
2532
|
}
|
|
2506
|
-
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: [{
|
|
2507
2534
|
type: Injectable,
|
|
2508
2535
|
args: [{
|
|
2509
2536
|
providedIn: 'root'
|
|
@@ -2541,10 +2568,10 @@ class JsonMethodPluginService {
|
|
|
2541
2568
|
...options
|
|
2542
2569
|
});
|
|
2543
2570
|
}
|
|
2544
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2545
|
-
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' });
|
|
2546
2573
|
}
|
|
2547
|
-
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: [{
|
|
2548
2575
|
type: Injectable,
|
|
2549
2576
|
args: [{
|
|
2550
2577
|
providedIn: 'root'
|
|
@@ -2576,10 +2603,10 @@ class NavigationService {
|
|
|
2576
2603
|
this.auditService.notifyRouteChange(url);
|
|
2577
2604
|
}
|
|
2578
2605
|
}), tap(event => (this.urlAfterNavigation = event.url)), shareReplay(1));
|
|
2579
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2580
|
-
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' });
|
|
2581
2608
|
}
|
|
2582
|
-
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: [{
|
|
2583
2610
|
type: Injectable,
|
|
2584
2611
|
args: [{
|
|
2585
2612
|
providedIn: 'root'
|
|
@@ -2637,7 +2664,8 @@ class PreviewService {
|
|
|
2637
2664
|
sanitizer = inject(DomSanitizer);
|
|
2638
2665
|
queryService = inject(QueryService);
|
|
2639
2666
|
auditService = inject(AuditService);
|
|
2640
|
-
events =
|
|
2667
|
+
events = signal('idle', ...(ngDevMode ? [{ debugName: "events" }] : []));
|
|
2668
|
+
DOMContentLoaded = signal(false, ...(ngDevMode ? [{ debugName: "DOMContentLoaded" }] : []));
|
|
2641
2669
|
// ! worker
|
|
2642
2670
|
onMessage = new Subject();
|
|
2643
2671
|
worker;
|
|
@@ -2679,12 +2707,13 @@ class PreviewService {
|
|
|
2679
2707
|
const { app } = globalConfig;
|
|
2680
2708
|
// when the iframe is ready, we can send the init message
|
|
2681
2709
|
if (message.type === 'ready') {
|
|
2710
|
+
this.DOMContentLoaded.set(true);
|
|
2682
2711
|
// Initialize the preview iframe with the app name and highlights
|
|
2683
2712
|
// app name is used to intialize the webworker
|
|
2684
2713
|
this.sendMessage({ action: 'init', highlights: this.highlights, appname: app });
|
|
2685
2714
|
if (this.previewData) {
|
|
2686
2715
|
const { id } = getState(this.selectionStore);
|
|
2687
|
-
this.events.
|
|
2716
|
+
this.events.set('fetching');
|
|
2688
2717
|
this.retrieveHtmlContent(id, this.highlightCategory, this.previewData);
|
|
2689
2718
|
}
|
|
2690
2719
|
}
|
|
@@ -2697,7 +2726,7 @@ class PreviewService {
|
|
|
2697
2726
|
if (this.previewData) {
|
|
2698
2727
|
const extracts = this.fetchExtracts(id, message.data, this.previewData);
|
|
2699
2728
|
this.applicationStore.updateExtracts(this.previewData?.record.id || '', extracts);
|
|
2700
|
-
this.events.
|
|
2729
|
+
this.events.set('fetched');
|
|
2701
2730
|
}
|
|
2702
2731
|
}
|
|
2703
2732
|
}
|
|
@@ -2706,7 +2735,7 @@ class PreviewService {
|
|
|
2706
2735
|
if (message.type === 'get-html-results-webworker') {
|
|
2707
2736
|
info('get html results with worker');
|
|
2708
2737
|
if (message.data.extracts.length === 0) {
|
|
2709
|
-
this.events.
|
|
2738
|
+
this.events.set('fetched');
|
|
2710
2739
|
this.applicationStore.updateExtracts(this.previewData?.record.id || '', []);
|
|
2711
2740
|
return;
|
|
2712
2741
|
}
|
|
@@ -2715,7 +2744,7 @@ class PreviewService {
|
|
|
2715
2744
|
text: this.sanitizer.bypassSecurityTrustHtml(item.text)
|
|
2716
2745
|
}));
|
|
2717
2746
|
this.applicationStore.updateExtracts(this.previewData?.record.id || '', extracts);
|
|
2718
|
-
this.events.
|
|
2747
|
+
this.events.set('fetched');
|
|
2719
2748
|
}
|
|
2720
2749
|
}
|
|
2721
2750
|
/**
|
|
@@ -2953,10 +2982,10 @@ class PreviewService {
|
|
|
2953
2982
|
// merge the entities with the default highlights without duplicates
|
|
2954
2983
|
this.entities = [...new Set([...this.entities, ...entities])];
|
|
2955
2984
|
}
|
|
2956
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
2957
|
-
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' });
|
|
2958
2987
|
}
|
|
2959
|
-
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: [{
|
|
2960
2989
|
type: Injectable,
|
|
2961
2990
|
args: [{
|
|
2962
2991
|
providedIn: 'root'
|
|
@@ -3025,10 +3054,10 @@ class SavedSearchesService {
|
|
|
3025
3054
|
deleteSavedSearch(index) {
|
|
3026
3055
|
this.userSettingsStore.deleteSavedSearch(index);
|
|
3027
3056
|
}
|
|
3028
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3029
|
-
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' });
|
|
3030
3059
|
}
|
|
3031
|
-
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: [{
|
|
3032
3061
|
type: Injectable,
|
|
3033
3062
|
args: [{
|
|
3034
3063
|
providedIn: 'root'
|
|
@@ -3121,10 +3150,10 @@ class SearchService {
|
|
|
3121
3150
|
}
|
|
3122
3151
|
});
|
|
3123
3152
|
}
|
|
3124
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3125
|
-
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' });
|
|
3126
3155
|
}
|
|
3127
|
-
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: [{
|
|
3128
3157
|
type: Injectable,
|
|
3129
3158
|
args: [{
|
|
3130
3159
|
providedIn: 'root'
|
|
@@ -3273,10 +3302,10 @@ class SelectionService {
|
|
|
3273
3302
|
const url = this.router.createUrlTree([], { relativeTo: this.route, queryParams }).toString();
|
|
3274
3303
|
this.location.replaceState(url);
|
|
3275
3304
|
}
|
|
3276
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3277
|
-
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' });
|
|
3278
3307
|
}
|
|
3279
|
-
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: [{
|
|
3280
3309
|
type: Injectable,
|
|
3281
3310
|
args: [{
|
|
3282
3311
|
providedIn: 'root'
|
|
@@ -3360,10 +3389,10 @@ class SelectionHistoryService {
|
|
|
3360
3389
|
this.selectionHistoryEvent.next('back');
|
|
3361
3390
|
return last;
|
|
3362
3391
|
}
|
|
3363
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3364
|
-
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' });
|
|
3365
3394
|
}
|
|
3366
|
-
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: [{
|
|
3367
3396
|
type: Injectable,
|
|
3368
3397
|
args: [{
|
|
3369
3398
|
providedIn: 'root'
|
|
@@ -3398,10 +3427,10 @@ class TextChunkService {
|
|
|
3398
3427
|
return [];
|
|
3399
3428
|
}));
|
|
3400
3429
|
}
|
|
3401
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3402
|
-
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' });
|
|
3403
3432
|
}
|
|
3404
|
-
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: [{
|
|
3405
3434
|
type: Injectable,
|
|
3406
3435
|
args: [{
|
|
3407
3436
|
providedIn: 'root'
|
|
@@ -3703,8 +3732,11 @@ function withQueryParamsFeatures() {
|
|
|
3703
3732
|
}
|
|
3704
3733
|
if (filter && filter.value)
|
|
3705
3734
|
return { ...filter, count: 1 };
|
|
3706
|
-
if (filter && filter.values)
|
|
3707
|
-
|
|
3735
|
+
if (filter && filter.values) {
|
|
3736
|
+
// "filter.values" is an array of strings, Set() automatically deletes duplicates
|
|
3737
|
+
const uniqueValues = new Set(filter.values);
|
|
3738
|
+
return { ...filter, count: uniqueValues.size };
|
|
3739
|
+
}
|
|
3708
3740
|
if (filter && Array.isArray(filter.filters) === false)
|
|
3709
3741
|
return { ...filter, count: 1 };
|
|
3710
3742
|
if (filter && Array.isArray(filter.filters))
|
|
@@ -3889,10 +3921,10 @@ class SourceComponent {
|
|
|
3889
3921
|
}
|
|
3890
3922
|
return { iconClass: defaultIconClass };
|
|
3891
3923
|
}, ...(ngDevMode ? [{ debugName: "iconDetails" }] : []));
|
|
3892
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3893
|
-
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" }] });
|
|
3894
3926
|
}
|
|
3895
|
-
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: [{
|
|
3896
3928
|
type: Component,
|
|
3897
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" }]
|
|
3898
3930
|
}] });
|
|
@@ -3977,8 +4009,8 @@ class DocumentLocatorComponent {
|
|
|
3977
4009
|
const { filters } = getState(this.queryParamStore);
|
|
3978
4010
|
this.router.navigate([], { queryParams: { f: JSON.stringify(filters) }, queryParamsHandling: 'merge' });
|
|
3979
4011
|
}
|
|
3980
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
3981
|
-
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: `
|
|
3982
4014
|
<!-- Renders all segment hidden to user to compute width -->
|
|
3983
4015
|
<div #shadowRender class="pointer-events-none invisible absolute left-0 top-0 -z-10 flex gap-2">
|
|
3984
4016
|
@for (segment of locationSegments(); track $index) {
|
|
@@ -3996,7 +4028,7 @@ class DocumentLocatorComponent {
|
|
|
3996
4028
|
|
|
3997
4029
|
<div #documentLocator class="flex grow items-center gap-2 overflow-auto">
|
|
3998
4030
|
@for (segment of visibleSegments(); track $index) {
|
|
3999
|
-
<
|
|
4031
|
+
<button decoration="underline" class="text-foreground cursor-pointer whitespace-nowrap p-0" (click)="navigateToSegment($index)">{{ segment }}</button>
|
|
4000
4032
|
|
|
4001
4033
|
@if (!$last) {
|
|
4002
4034
|
<i class="fa fal fa-chevron-right"></i>
|
|
@@ -4009,7 +4041,7 @@ class DocumentLocatorComponent {
|
|
|
4009
4041
|
|
|
4010
4042
|
@if (invisibleSegments().length > 0) {
|
|
4011
4043
|
<menu>
|
|
4012
|
-
<button
|
|
4044
|
+
<button class="h-0 w-full p-2">...</button>
|
|
4013
4045
|
|
|
4014
4046
|
<MenuContent position="bottom">
|
|
4015
4047
|
@for (segment of invisibleSegments(); track $index) {
|
|
@@ -4021,9 +4053,9 @@ class DocumentLocatorComponent {
|
|
|
4021
4053
|
</menu>
|
|
4022
4054
|
}
|
|
4023
4055
|
</div>
|
|
4024
|
-
`, 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"] }] });
|
|
4025
4057
|
}
|
|
4026
|
-
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: [{
|
|
4027
4059
|
type: Component,
|
|
4028
4060
|
args: [{
|
|
4029
4061
|
selector: 'document-locator, DocumentLocator',
|
|
@@ -4047,7 +4079,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4047
4079
|
|
|
4048
4080
|
<div #documentLocator class="flex grow items-center gap-2 overflow-auto">
|
|
4049
4081
|
@for (segment of visibleSegments(); track $index) {
|
|
4050
|
-
<
|
|
4082
|
+
<button decoration="underline" class="text-foreground cursor-pointer whitespace-nowrap p-0" (click)="navigateToSegment($index)">{{ segment }}</button>
|
|
4051
4083
|
|
|
4052
4084
|
@if (!$last) {
|
|
4053
4085
|
<i class="fa fal fa-chevron-right"></i>
|
|
@@ -4060,7 +4092,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4060
4092
|
|
|
4061
4093
|
@if (invisibleSegments().length > 0) {
|
|
4062
4094
|
<menu>
|
|
4063
|
-
<button
|
|
4095
|
+
<button class="h-0 w-full p-2">...</button>
|
|
4064
4096
|
|
|
4065
4097
|
<MenuContent position="bottom">
|
|
4066
4098
|
@for (segment of invisibleSegments(); track $index) {
|
|
@@ -4084,8 +4116,8 @@ class ErrorComponent {
|
|
|
4084
4116
|
reload() {
|
|
4085
4117
|
this.router.navigate(['/']).then(() => window.location.reload());
|
|
4086
4118
|
}
|
|
4087
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4088
|
-
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: `
|
|
4089
4121
|
<div class="bg-background text-foreground flex min-h-screen flex-col items-center justify-center">
|
|
4090
4122
|
<svg
|
|
4091
4123
|
class="mb-8 h-20 w-20 text-red-600"
|
|
@@ -4128,7 +4160,7 @@ class ErrorComponent {
|
|
|
4128
4160
|
</div>
|
|
4129
4161
|
`, isInline: true });
|
|
4130
4162
|
}
|
|
4131
|
-
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: [{
|
|
4132
4164
|
type: Component,
|
|
4133
4165
|
args: [{
|
|
4134
4166
|
selector: 'error-component, ErrorComponent',
|
|
@@ -4225,8 +4257,8 @@ class LoadingComponent {
|
|
|
4225
4257
|
});
|
|
4226
4258
|
}
|
|
4227
4259
|
}
|
|
4228
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4229
|
-
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: `
|
|
4230
4262
|
<div class="flex h-[100dvh] w-full items-center justify-center">
|
|
4231
4263
|
<div class="flex flex-col items-center space-y-4">
|
|
4232
4264
|
<span class="loader"></span>
|
|
@@ -4234,7 +4266,7 @@ class LoadingComponent {
|
|
|
4234
4266
|
</div>
|
|
4235
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"] });
|
|
4236
4268
|
}
|
|
4237
|
-
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: [{
|
|
4238
4270
|
type: Component,
|
|
4239
4271
|
args: [{ selector: 'app-wait', standalone: true, imports: [], template: `
|
|
4240
4272
|
<div class="flex h-[100dvh] w-full items-center justify-center">
|
|
@@ -4245,10 +4277,311 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4245
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"] }]
|
|
4246
4278
|
}], ctorParameters: () => [{ type: i0.DestroyRef }] });
|
|
4247
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
|
+
|
|
4248
4579
|
class MetadataComponent {
|
|
4249
4580
|
click = output();
|
|
4250
4581
|
class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
|
|
4251
4582
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
4583
|
+
decoration = input('outline', ...(ngDevMode ? [{ debugName: "decoration" }] : []));
|
|
4584
|
+
hover = input('yes', ...(ngDevMode ? [{ debugName: "hover" }] : []));
|
|
4252
4585
|
metadata = input.required(...(ngDevMode ? [{ debugName: "metadata" }] : []));
|
|
4253
4586
|
article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
|
|
4254
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) }]));
|
|
@@ -4256,21 +4589,37 @@ class MetadataComponent {
|
|
|
4256
4589
|
handleClick(event, item) {
|
|
4257
4590
|
this.click.emit({ filter: item, event });
|
|
4258
4591
|
}
|
|
4259
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4260
|
-
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: `
|
|
4261
4594
|
@for (item of items().slice(0, limit()); track $index) {
|
|
4262
4595
|
@if (item) {
|
|
4263
|
-
<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>
|
|
4264
4605
|
}
|
|
4265
4606
|
}
|
|
4266
|
-
`, 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" }] });
|
|
4267
4608
|
}
|
|
4268
|
-
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: [{
|
|
4269
4610
|
type: Component,
|
|
4270
|
-
args: [{ selector: 'Metadata, metadata', exportAs: 'metadata', standalone: true, imports: [BadgeComponent], template: `
|
|
4611
|
+
args: [{ selector: 'Metadata, metadata', exportAs: 'metadata', standalone: true, imports: [SyslangPipe, BadgeComponent], template: `
|
|
4271
4612
|
@for (item of items().slice(0, limit()); track $index) {
|
|
4272
4613
|
@if (item) {
|
|
4273
|
-
<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>
|
|
4274
4623
|
}
|
|
4275
4624
|
}
|
|
4276
4625
|
`, host: {
|
|
@@ -4294,10 +4643,10 @@ class MissingTermsComponent {
|
|
|
4294
4643
|
};
|
|
4295
4644
|
});
|
|
4296
4645
|
}, ...(ngDevMode ? [{ debugName: "missingTerms" }] : []));
|
|
4297
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4298
|
-
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" }] });
|
|
4299
4648
|
}
|
|
4300
|
-
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: [{
|
|
4301
4650
|
type: Component,
|
|
4302
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"] }]
|
|
4303
4652
|
}] });
|
|
@@ -4392,8 +4741,8 @@ class CollectionsDialog {
|
|
|
4392
4741
|
this.newCollectionName.set('');
|
|
4393
4742
|
this.creating.set(false);
|
|
4394
4743
|
}
|
|
4395
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4396
|
-
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: `
|
|
4397
4746
|
<dialog #dialog (closed)="closeBtn.click()">
|
|
4398
4747
|
<DialogHeader>
|
|
4399
4748
|
<DialogTitle>{{ 'collections.addToCollection' | transloco }}</DialogTitle>
|
|
@@ -4438,7 +4787,7 @@ class CollectionsDialog {
|
|
|
4438
4787
|
<DialogFooter class="flex flex-col">
|
|
4439
4788
|
<div class="flex w-full gap-1">
|
|
4440
4789
|
<button
|
|
4441
|
-
|
|
4790
|
+
decoration="outline"
|
|
4442
4791
|
class="grow"
|
|
4443
4792
|
tabindex="0"
|
|
4444
4793
|
[attr.title]="(creating() ? 'collections.cancelCreation' : 'collections.createCollection') | transloco"
|
|
@@ -4446,19 +4795,25 @@ class CollectionsDialog {
|
|
|
4446
4795
|
{{ (creating() ? 'collections.cancelCreation' : 'collections.createCollection') | transloco }}
|
|
4447
4796
|
</button>
|
|
4448
4797
|
@if (creating()) {
|
|
4449
|
-
<button
|
|
4798
|
+
<button
|
|
4799
|
+
variant="primary"
|
|
4800
|
+
class="grow"
|
|
4801
|
+
tabindex="0"
|
|
4802
|
+
[attr.title]="'collections.create' | transloco"
|
|
4803
|
+
[disabled]="!newCollectionName()"
|
|
4804
|
+
(click)="createCollection()">
|
|
4450
4805
|
{{ 'collections.create' | transloco }}
|
|
4451
4806
|
</button>
|
|
4452
4807
|
}
|
|
4453
4808
|
</div>
|
|
4454
|
-
<button #closeBtn (click)="onClose($event)" class="self-end">
|
|
4809
|
+
<button variant="primary" #closeBtn (click)="onClose($event)" class="self-end">
|
|
4455
4810
|
{{ 'collections.close' | transloco }}
|
|
4456
4811
|
</button>
|
|
4457
4812
|
</DialogFooter>
|
|
4458
4813
|
</dialog>
|
|
4459
|
-
`, 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" }] });
|
|
4460
4815
|
}
|
|
4461
|
-
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: [{
|
|
4462
4817
|
type: Component,
|
|
4463
4818
|
args: [{
|
|
4464
4819
|
selector: 'add-to-collection-dialog',
|
|
@@ -4521,7 +4876,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4521
4876
|
<DialogFooter class="flex flex-col">
|
|
4522
4877
|
<div class="flex w-full gap-1">
|
|
4523
4878
|
<button
|
|
4524
|
-
|
|
4879
|
+
decoration="outline"
|
|
4525
4880
|
class="grow"
|
|
4526
4881
|
tabindex="0"
|
|
4527
4882
|
[attr.title]="(creating() ? 'collections.cancelCreation' : 'collections.createCollection') | transloco"
|
|
@@ -4529,12 +4884,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4529
4884
|
{{ (creating() ? 'collections.cancelCreation' : 'collections.createCollection') | transloco }}
|
|
4530
4885
|
</button>
|
|
4531
4886
|
@if (creating()) {
|
|
4532
|
-
<button
|
|
4887
|
+
<button
|
|
4888
|
+
variant="primary"
|
|
4889
|
+
class="grow"
|
|
4890
|
+
tabindex="0"
|
|
4891
|
+
[attr.title]="'collections.create' | transloco"
|
|
4892
|
+
[disabled]="!newCollectionName()"
|
|
4893
|
+
(click)="createCollection()">
|
|
4533
4894
|
{{ 'collections.create' | transloco }}
|
|
4534
4895
|
</button>
|
|
4535
4896
|
}
|
|
4536
4897
|
</div>
|
|
4537
|
-
<button #closeBtn (click)="onClose($event)" class="self-end">
|
|
4898
|
+
<button variant="primary" #closeBtn (click)="onClose($event)" class="self-end">
|
|
4538
4899
|
{{ 'collections.close' | transloco }}
|
|
4539
4900
|
</button>
|
|
4540
4901
|
</DialogFooter>
|
|
@@ -4636,10 +4997,10 @@ class ExportService {
|
|
|
4636
4997
|
responseType: 'blob'
|
|
4637
4998
|
});
|
|
4638
4999
|
}
|
|
4639
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4640
|
-
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' });
|
|
4641
5002
|
}
|
|
4642
|
-
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: [{
|
|
4643
5004
|
type: Injectable,
|
|
4644
5005
|
args: [{
|
|
4645
5006
|
providedIn: 'root'
|
|
@@ -4707,15 +5068,15 @@ class ExportDialog {
|
|
|
4707
5068
|
this.maxCount.set(1);
|
|
4708
5069
|
}
|
|
4709
5070
|
}
|
|
4710
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4711
|
-
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: `
|
|
4712
5073
|
<dialog #dialog>
|
|
4713
5074
|
<DialogHeader>
|
|
4714
5075
|
<DialogTitle>{{ 'export.title' | transloco }}</DialogTitle>
|
|
4715
5076
|
</DialogHeader>
|
|
4716
5077
|
|
|
4717
5078
|
<DialogContent
|
|
4718
|
-
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">
|
|
4719
5080
|
<section>
|
|
4720
5081
|
<h1>{{ 'export.from' | transloco }}</h1>
|
|
4721
5082
|
<div class="flex items-center gap-2">
|
|
@@ -4732,7 +5093,7 @@ class ExportDialog {
|
|
|
4732
5093
|
<section>
|
|
4733
5094
|
<h1>{{ 'export.outputFormat' | transloco }}</h1>
|
|
4734
5095
|
<select
|
|
4735
|
-
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"
|
|
4736
5097
|
id="format"
|
|
4737
5098
|
[(ngModel)]="format">
|
|
4738
5099
|
@for (format of supportedFormats; track $index) {
|
|
@@ -4745,7 +5106,7 @@ class ExportDialog {
|
|
|
4745
5106
|
<h1>{{ 'export.exportColumns' | transloco }}</h1>
|
|
4746
5107
|
<select
|
|
4747
5108
|
id="exportedColumns"
|
|
4748
|
-
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"
|
|
4749
5110
|
multiple
|
|
4750
5111
|
[(ngModel)]="columnsToExport">
|
|
4751
5112
|
@for (column of exportableColumns(); track $index) {
|
|
@@ -4762,14 +5123,14 @@ class ExportDialog {
|
|
|
4762
5123
|
min="1"
|
|
4763
5124
|
autocomplete="off"
|
|
4764
5125
|
spellcheck="off"
|
|
4765
|
-
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"
|
|
4766
5127
|
[(ngModel)]="maxCount"
|
|
4767
5128
|
(input)="onMaxCountInput($event)" />
|
|
4768
5129
|
</section>
|
|
4769
5130
|
</DialogContent>
|
|
4770
5131
|
|
|
4771
5132
|
<DialogFooter>
|
|
4772
|
-
<button
|
|
5133
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
4773
5134
|
{{ 'cancel' | transloco }}
|
|
4774
5135
|
</button>
|
|
4775
5136
|
<button tabindex="0" [attr.title]="'export.download' | transloco" (click)="onDownload($event)">
|
|
@@ -4777,9 +5138,9 @@ class ExportDialog {
|
|
|
4777
5138
|
</button>
|
|
4778
5139
|
</DialogFooter>
|
|
4779
5140
|
</dialog>
|
|
4780
|
-
`, 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" }] });
|
|
4781
5142
|
}
|
|
4782
|
-
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: [{
|
|
4783
5144
|
type: Component,
|
|
4784
5145
|
args: [{
|
|
4785
5146
|
selector: 'export-dialog',
|
|
@@ -4793,7 +5154,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4793
5154
|
DialogTitleComponent,
|
|
4794
5155
|
DialogContentComponent,
|
|
4795
5156
|
DialogFooterComponent,
|
|
4796
|
-
SwitchComponent
|
|
5157
|
+
SwitchComponent,
|
|
5158
|
+
SelectOptionDirective
|
|
4797
5159
|
],
|
|
4798
5160
|
providers: [provideTranslocoScope('export')],
|
|
4799
5161
|
template: `
|
|
@@ -4803,7 +5165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4803
5165
|
</DialogHeader>
|
|
4804
5166
|
|
|
4805
5167
|
<DialogContent
|
|
4806
|
-
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">
|
|
4807
5169
|
<section>
|
|
4808
5170
|
<h1>{{ 'export.from' | transloco }}</h1>
|
|
4809
5171
|
<div class="flex items-center gap-2">
|
|
@@ -4820,7 +5182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4820
5182
|
<section>
|
|
4821
5183
|
<h1>{{ 'export.outputFormat' | transloco }}</h1>
|
|
4822
5184
|
<select
|
|
4823
|
-
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"
|
|
4824
5186
|
id="format"
|
|
4825
5187
|
[(ngModel)]="format">
|
|
4826
5188
|
@for (format of supportedFormats; track $index) {
|
|
@@ -4833,7 +5195,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4833
5195
|
<h1>{{ 'export.exportColumns' | transloco }}</h1>
|
|
4834
5196
|
<select
|
|
4835
5197
|
id="exportedColumns"
|
|
4836
|
-
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"
|
|
4837
5199
|
multiple
|
|
4838
5200
|
[(ngModel)]="columnsToExport">
|
|
4839
5201
|
@for (column of exportableColumns(); track $index) {
|
|
@@ -4850,14 +5212,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
4850
5212
|
min="1"
|
|
4851
5213
|
autocomplete="off"
|
|
4852
5214
|
spellcheck="off"
|
|
4853
|
-
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"
|
|
4854
5216
|
[(ngModel)]="maxCount"
|
|
4855
5217
|
(input)="onMaxCountInput($event)" />
|
|
4856
5218
|
</section>
|
|
4857
5219
|
</DialogContent>
|
|
4858
5220
|
|
|
4859
5221
|
<DialogFooter>
|
|
4860
|
-
<button
|
|
5222
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
4861
5223
|
{{ 'cancel' | transloco }}
|
|
4862
5224
|
</button>
|
|
4863
5225
|
<button tabindex="0" [attr.title]="'export.download' | transloco" (click)="onDownload($event)">
|
|
@@ -4905,8 +5267,8 @@ class MultiSelectionToolbarComponent {
|
|
|
4905
5267
|
openCollectionDialog = () => this.dialog.open(CollectionsDialog, getState(this.selection).multiSelection);
|
|
4906
5268
|
openExportDialog = () => this.dialog.open(ExportDialog, this.ids());
|
|
4907
5269
|
attachToAssistant = () => this.selection.update({ assistantIdsToAttach: this.ids() });
|
|
4908
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
4909
|
-
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: `
|
|
4910
5272
|
<menu id="multi-select-toolbar" [class]="cn(variants(), className())">
|
|
4911
5273
|
<li class="!ps-0">
|
|
4912
5274
|
{{ count() }} items selected
|
|
@@ -4940,7 +5302,7 @@ class MultiSelectionToolbarComponent {
|
|
|
4940
5302
|
</menu>
|
|
4941
5303
|
`, isInline: true });
|
|
4942
5304
|
}
|
|
4943
|
-
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: [{
|
|
4944
5306
|
type: Component,
|
|
4945
5307
|
args: [{
|
|
4946
5308
|
selector: 'MultiSelectionToolbar, multi-selection-toolbar',
|
|
@@ -5019,10 +5381,10 @@ class InfinityScrollDirective {
|
|
|
5019
5381
|
ngOnDestroy() {
|
|
5020
5382
|
this.observer.disconnect();
|
|
5021
5383
|
}
|
|
5022
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5023
|
-
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 });
|
|
5024
5386
|
}
|
|
5025
|
-
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: [{
|
|
5026
5388
|
type: Directive,
|
|
5027
5389
|
args: [{
|
|
5028
5390
|
// eslint-disable-next-line @angular-eslint/directive-selector
|
|
@@ -5326,10 +5688,10 @@ class KeyboardNavigatorDirective {
|
|
|
5326
5688
|
this.renderer.setAttribute(this.listboxElement(), 'aria-hidden', 'true');
|
|
5327
5689
|
this.ariaExpanded.set(false);
|
|
5328
5690
|
}
|
|
5329
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5330
|
-
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 });
|
|
5331
5693
|
}
|
|
5332
|
-
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: [{
|
|
5333
5695
|
type: Directive,
|
|
5334
5696
|
args: [{
|
|
5335
5697
|
selector: 'input[role="combobox"]',
|
|
@@ -5364,10 +5726,10 @@ class OpenArticleOnCtrlEnterDirective {
|
|
|
5364
5726
|
return;
|
|
5365
5727
|
this.previewService.openExternal(this.article());
|
|
5366
5728
|
}
|
|
5367
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5368
|
-
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 });
|
|
5369
5731
|
}
|
|
5370
|
-
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: [{
|
|
5371
5733
|
type: Directive,
|
|
5372
5734
|
args: [{
|
|
5373
5735
|
selector: '[appOpenArticleOnCtrlEnter],[openArticleOnCtrlEnter]',
|
|
@@ -5383,10 +5745,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
5383
5745
|
* overflow manager.
|
|
5384
5746
|
*/
|
|
5385
5747
|
class OverflowItemDirective {
|
|
5386
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5387
|
-
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 });
|
|
5388
5750
|
}
|
|
5389
|
-
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: [{
|
|
5390
5752
|
type: Directive,
|
|
5391
5753
|
args: [{
|
|
5392
5754
|
selector: '[overflowItem]',
|
|
@@ -5398,10 +5760,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
5398
5760
|
* for the overflow manager.
|
|
5399
5761
|
*/
|
|
5400
5762
|
class OverflowStopDirective {
|
|
5401
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5402
|
-
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 });
|
|
5403
5765
|
}
|
|
5404
|
-
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: [{
|
|
5405
5767
|
type: Directive,
|
|
5406
5768
|
args: [{
|
|
5407
5769
|
selector: '[overflowStop]',
|
|
@@ -5511,10 +5873,10 @@ class OverflowManagerDirective {
|
|
|
5511
5873
|
item.nativeElement.style.visibility = state;
|
|
5512
5874
|
});
|
|
5513
5875
|
}
|
|
5514
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5515
|
-
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 });
|
|
5516
5878
|
}
|
|
5517
|
-
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: [{
|
|
5518
5880
|
type: Directive,
|
|
5519
5881
|
args: [{
|
|
5520
5882
|
selector: '[overflowManager]',
|
|
@@ -5656,10 +6018,10 @@ class DrawerStackService {
|
|
|
5656
6018
|
this.openAssistant();
|
|
5657
6019
|
this.askAI$.next(text);
|
|
5658
6020
|
}
|
|
5659
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5660
|
-
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' });
|
|
5661
6023
|
}
|
|
5662
|
-
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: [{
|
|
5663
6025
|
type: Injectable,
|
|
5664
6026
|
args: [{
|
|
5665
6027
|
providedIn: 'root'
|
|
@@ -5691,13 +6053,13 @@ class SelectArticleOnClickDirective {
|
|
|
5691
6053
|
break;
|
|
5692
6054
|
}
|
|
5693
6055
|
}
|
|
5694
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5695
|
-
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 });
|
|
5696
6058
|
}
|
|
5697
|
-
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: [{
|
|
5698
6060
|
type: Directive,
|
|
5699
6061
|
args: [{
|
|
5700
|
-
selector: '[
|
|
6062
|
+
selector: '[selectArticleOnClick]',
|
|
5701
6063
|
standalone: true,
|
|
5702
6064
|
host: {
|
|
5703
6065
|
'(keydown.enter)': 'onEnter($event)'
|
|
@@ -5743,10 +6105,10 @@ class ShowBookmarkDirective {
|
|
|
5743
6105
|
this.showBookmark.emit(bookmarkHovered || isBookmarked);
|
|
5744
6106
|
});
|
|
5745
6107
|
}
|
|
5746
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5747
|
-
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 });
|
|
5748
6110
|
}
|
|
5749
|
-
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: [{
|
|
5750
6112
|
type: Directive,
|
|
5751
6113
|
args: [{
|
|
5752
6114
|
selector: '[showBookmark]',
|
|
@@ -5777,10 +6139,10 @@ class ThemeProviderDirective {
|
|
|
5777
6139
|
applyThemeToNativeElement(this.host.nativeElement, vars);
|
|
5778
6140
|
});
|
|
5779
6141
|
}
|
|
5780
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5781
|
-
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 });
|
|
5782
6144
|
}
|
|
5783
|
-
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: [{
|
|
5784
6146
|
type: Directive,
|
|
5785
6147
|
args: [{
|
|
5786
6148
|
selector: '[themeProvider]',
|
|
@@ -5804,266 +6166,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
5804
6166
|
*/
|
|
5805
6167
|
class ChildMarkerDirective {
|
|
5806
6168
|
template = inject((TemplateRef));
|
|
5807
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
5808
|
-
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 });
|
|
5809
6171
|
}
|
|
5810
|
-
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: [{
|
|
5811
6173
|
type: Directive,
|
|
5812
6174
|
args: [{
|
|
5813
6175
|
selector: '[childMarker]'
|
|
5814
6176
|
}]
|
|
5815
6177
|
}] });
|
|
5816
6178
|
|
|
5817
|
-
/**
|
|
5818
|
-
* The HighlightWordPipe class is a custom pipe in the Atomic Angular library.
|
|
5819
|
-
* It is used to highlight a specific word within a given text.
|
|
5820
|
-
*
|
|
5821
|
-
* @remarks
|
|
5822
|
-
* 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.
|
|
5823
|
-
* It returns an array of `HighlightWords.Chunk` objects representing the highlighted portions of the text.
|
|
5824
|
-
*
|
|
5825
|
-
* @example
|
|
5826
|
-
* ```html
|
|
5827
|
-
* <div [innerHTML]="text | highlightWord:'search':10"></div>
|
|
5828
|
-
* ```
|
|
5829
|
-
*
|
|
5830
|
-
*/
|
|
5831
|
-
class HighlightWordPipe {
|
|
5832
|
-
transform(value, word, clipBy) {
|
|
5833
|
-
const valueNormalized = value.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
5834
|
-
const wordNormalized = word.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
5835
|
-
return highlightWords({ text: valueNormalized, query: wordNormalized, clipBy });
|
|
5836
|
-
}
|
|
5837
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: HighlightWordPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5838
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: HighlightWordPipe, isStandalone: true, name: "highlightWord" });
|
|
5839
|
-
}
|
|
5840
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: HighlightWordPipe, decorators: [{
|
|
5841
|
-
type: Pipe,
|
|
5842
|
-
args: [{
|
|
5843
|
-
name: 'highlightWord',
|
|
5844
|
-
standalone: true,
|
|
5845
|
-
pure: true
|
|
5846
|
-
}]
|
|
5847
|
-
}] });
|
|
5848
|
-
|
|
5849
|
-
/**
|
|
5850
|
-
* Pipe that transforms a collection of strings into a corresponding icon class.
|
|
5851
|
-
*
|
|
5852
|
-
* This pipe uses the first element of the collection to determine the icon class
|
|
5853
|
-
* based on the source name. If the collection is empty or undefined, it returns
|
|
5854
|
-
* a default icon class.
|
|
5855
|
-
*
|
|
5856
|
-
* @deprecated This pipe is deprecated and will be removed in the future.
|
|
5857
|
-
*
|
|
5858
|
-
* @param collection - An array of strings representing the collection.
|
|
5859
|
-
* @returns A string representing the icon class.
|
|
5860
|
-
*/
|
|
5861
|
-
class SourceIconPipe {
|
|
5862
|
-
appStore = inject(AppStore);
|
|
5863
|
-
transform(collection) {
|
|
5864
|
-
if (collection === undefined || collection.length === 0) {
|
|
5865
|
-
return 'far fa-file';
|
|
5866
|
-
}
|
|
5867
|
-
const name = collection[0].split('/')[1];
|
|
5868
|
-
const sources = this.appStore.sources();
|
|
5869
|
-
// workplace search uses a different format for sources
|
|
5870
|
-
if (Array.isArray(sources)) {
|
|
5871
|
-
return sources.find((source) => source.name === name)?.icon || 'far fa-file';
|
|
5872
|
-
}
|
|
5873
|
-
return 'far fa-file';
|
|
5874
|
-
}
|
|
5875
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SourceIconPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5876
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: SourceIconPipe, isStandalone: true, name: "sourceIcon" });
|
|
5877
|
-
}
|
|
5878
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SourceIconPipe, decorators: [{
|
|
5879
|
-
type: Pipe,
|
|
5880
|
-
args: [{
|
|
5881
|
-
name: 'sourceIcon',
|
|
5882
|
-
standalone: true,
|
|
5883
|
-
pure: true
|
|
5884
|
-
}]
|
|
5885
|
-
}] });
|
|
5886
|
-
|
|
5887
|
-
class OperatorPipe {
|
|
5888
|
-
transloco = inject(TranslocoService);
|
|
5889
|
-
lastTransformedValue = null;
|
|
5890
|
-
cdr = inject(ChangeDetectorRef);
|
|
5891
|
-
destroyRef = inject(DestroyRef);
|
|
5892
|
-
transform(filter) {
|
|
5893
|
-
this.transloco.langChanges$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(locale => {
|
|
5894
|
-
const transformedValue = this.transformFilter(filter, locale);
|
|
5895
|
-
if (transformedValue !== this.lastTransformedValue) {
|
|
5896
|
-
this.lastTransformedValue = transformedValue;
|
|
5897
|
-
this.cdr.markForCheck();
|
|
5898
|
-
}
|
|
5899
|
-
});
|
|
5900
|
-
return this.lastTransformedValue || this.transformFilter(filter);
|
|
5901
|
-
}
|
|
5902
|
-
transformFilter(filter, locale) {
|
|
5903
|
-
let op = this.transformOperator(filter?.operator);
|
|
5904
|
-
if (filter?.operator === 'between') {
|
|
5905
|
-
const { start, end } = filter;
|
|
5906
|
-
if (!start || !end) {
|
|
5907
|
-
return 'bad date range';
|
|
5908
|
-
}
|
|
5909
|
-
return `> ${new Intl.DateTimeFormat(locale).format(new Date(start))} ≤ ${new Intl.DateTimeFormat(locale).format(new Date(end))}`;
|
|
5910
|
-
}
|
|
5911
|
-
if (filter?.operator === 'and') {
|
|
5912
|
-
const value = filter?.display ?? filter?.value ?? '';
|
|
5913
|
-
const date = new Date(value);
|
|
5914
|
-
if (isNaN(date.getTime())) {
|
|
5915
|
-
return value;
|
|
5916
|
-
}
|
|
5917
|
-
else {
|
|
5918
|
-
return new Intl.DateTimeFormat(locale).format(date);
|
|
5919
|
-
}
|
|
5920
|
-
}
|
|
5921
|
-
const date = new Date(filter?.value || '');
|
|
5922
|
-
if (isNaN(date.getTime())) {
|
|
5923
|
-
return `${op} ${filter?.value || ''}`;
|
|
5924
|
-
}
|
|
5925
|
-
else {
|
|
5926
|
-
return `${op} ${new Intl.DateTimeFormat(locale).format(date)}`;
|
|
5927
|
-
}
|
|
5928
|
-
}
|
|
5929
|
-
transformOperator(operator) {
|
|
5930
|
-
switch (operator) {
|
|
5931
|
-
case 'lt':
|
|
5932
|
-
return '<';
|
|
5933
|
-
case 'lte':
|
|
5934
|
-
return '≤';
|
|
5935
|
-
case 'eq':
|
|
5936
|
-
return '=';
|
|
5937
|
-
case 'neq':
|
|
5938
|
-
return '≠';
|
|
5939
|
-
case 'gte':
|
|
5940
|
-
return '≥';
|
|
5941
|
-
case 'gt':
|
|
5942
|
-
return '>';
|
|
5943
|
-
default:
|
|
5944
|
-
return '';
|
|
5945
|
-
}
|
|
5946
|
-
}
|
|
5947
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OperatorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5948
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: OperatorPipe, isStandalone: true, name: "operator", pure: false });
|
|
5949
|
-
}
|
|
5950
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: OperatorPipe, decorators: [{
|
|
5951
|
-
type: Pipe,
|
|
5952
|
-
args: [{
|
|
5953
|
-
name: 'operator',
|
|
5954
|
-
standalone: true,
|
|
5955
|
-
pure: false
|
|
5956
|
-
}]
|
|
5957
|
-
}] });
|
|
5958
|
-
|
|
5959
|
-
/**
|
|
5960
|
-
* The `SyslangPipe` class is a custom pipe that transforms a string value using the current language.
|
|
5961
|
-
* This pipe is used to translate strings that are not part of the Angular i18n system.
|
|
5962
|
-
* This pipe exists to keep the compatibility with a legacy system that uses a custom language syntax.
|
|
5963
|
-
*
|
|
5964
|
-
* This pipe can be used in the following way:
|
|
5965
|
-
*
|
|
5966
|
-
* @example
|
|
5967
|
-
* <div>{{ 'Hello[fr]Bonjour' | syslang }}</div>
|
|
5968
|
-
* // output: `Bonjour` if your current language is 'fr'
|
|
5969
|
-
* // output: `Hello` if your current language is not 'fr'
|
|
5970
|
-
*
|
|
5971
|
-
* <div>{{ 'Hello[fr]Bonjour' | syslang: 'fr' }}</div>
|
|
5972
|
-
* // output: `Bonjour` even if your current language is not 'fr'
|
|
5973
|
-
*/
|
|
5974
|
-
class SyslangPipe {
|
|
5975
|
-
transloco = inject(TranslocoService);
|
|
5976
|
-
cdr = inject(ChangeDetectorRef);
|
|
5977
|
-
lastValue = null;
|
|
5978
|
-
currentLang;
|
|
5979
|
-
subscription = null;
|
|
5980
|
-
ngOnDestroy() {
|
|
5981
|
-
this.subscription?.unsubscribe();
|
|
5982
|
-
this.subscription = null;
|
|
5983
|
-
}
|
|
5984
|
-
constructor() {
|
|
5985
|
-
this.currentLang = this.transloco.getActiveLang();
|
|
5986
|
-
this.subscription = this.transloco.langChanges$.subscribe(locale => (this.currentLang = locale));
|
|
5987
|
-
}
|
|
5988
|
-
/**
|
|
5989
|
-
* Transforms the input value using the current language.
|
|
5990
|
-
* @param value The input string value to be transformed.
|
|
5991
|
-
* @returns The transformed string value.
|
|
5992
|
-
*/
|
|
5993
|
-
transform(value, lang) {
|
|
5994
|
-
const transformedValue = sysLang(value || '', lang || this.currentLang);
|
|
5995
|
-
if (transformedValue !== this.lastValue) {
|
|
5996
|
-
this.lastValue = transformedValue;
|
|
5997
|
-
this.cdr.markForCheck();
|
|
5998
|
-
}
|
|
5999
|
-
return this.lastValue;
|
|
6000
|
-
}
|
|
6001
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SyslangPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
6002
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: SyslangPipe, isStandalone: true, name: "syslang", pure: false });
|
|
6003
|
-
}
|
|
6004
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: SyslangPipe, decorators: [{
|
|
6005
|
-
type: Pipe,
|
|
6006
|
-
args: [{
|
|
6007
|
-
name: 'syslang',
|
|
6008
|
-
standalone: true,
|
|
6009
|
-
pure: false
|
|
6010
|
-
}]
|
|
6011
|
-
}], ctorParameters: () => [] });
|
|
6012
|
-
|
|
6013
|
-
class TranslocoDateImpurePipe extends DatePipe {
|
|
6014
|
-
transloco = inject(TranslocoService);
|
|
6015
|
-
cdr = inject(ChangeDetectorRef);
|
|
6016
|
-
lastTransformedValue = null;
|
|
6017
|
-
subscription = null;
|
|
6018
|
-
constructor(locale, defaultTimezone, defaultOptions) {
|
|
6019
|
-
super(locale, defaultTimezone, defaultOptions);
|
|
6020
|
-
}
|
|
6021
|
-
ngOnDestroy() {
|
|
6022
|
-
this.subscription?.unsubscribe();
|
|
6023
|
-
this.subscription = null;
|
|
6024
|
-
}
|
|
6025
|
-
transform(value, format, timezone) {
|
|
6026
|
-
this.subscription?.unsubscribe();
|
|
6027
|
-
this.subscription = this.transloco.langChanges$.subscribe(locale => {
|
|
6028
|
-
const transformedValue = super.transform(value, format, timezone, locale);
|
|
6029
|
-
if (transformedValue !== this.lastTransformedValue) {
|
|
6030
|
-
this.lastTransformedValue = transformedValue;
|
|
6031
|
-
this.cdr.markForCheck();
|
|
6032
|
-
}
|
|
6033
|
-
});
|
|
6034
|
-
return this.lastTransformedValue;
|
|
6035
|
-
}
|
|
6036
|
-
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 });
|
|
6037
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.2", ngImport: i0, type: TranslocoDateImpurePipe, isStandalone: true, name: "translocoDate", pure: false });
|
|
6038
|
-
}
|
|
6039
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: TranslocoDateImpurePipe, decorators: [{
|
|
6040
|
-
type: Pipe,
|
|
6041
|
-
args: [{
|
|
6042
|
-
name: 'translocoDate',
|
|
6043
|
-
pure: false,
|
|
6044
|
-
standalone: true
|
|
6045
|
-
}]
|
|
6046
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
6047
|
-
type: Inject,
|
|
6048
|
-
args: [LOCALE_ID]
|
|
6049
|
-
}] }, { type: undefined, decorators: [{
|
|
6050
|
-
type: Inject,
|
|
6051
|
-
args: [DATE_PIPE_DEFAULT_TIMEZONE]
|
|
6052
|
-
}, {
|
|
6053
|
-
type: Optional
|
|
6054
|
-
}] }, { type: undefined, decorators: [{
|
|
6055
|
-
type: Inject,
|
|
6056
|
-
args: [DATE_PIPE_DEFAULT_OPTIONS]
|
|
6057
|
-
}, {
|
|
6058
|
-
type: Optional
|
|
6059
|
-
}] }] });
|
|
6060
|
-
|
|
6061
6179
|
class NavbarTabsComponent {
|
|
6062
6180
|
router = inject(Router);
|
|
6063
6181
|
route = inject(ActivatedRoute);
|
|
6064
6182
|
drawerStack = inject(DrawerStackService);
|
|
6065
6183
|
drawerOpened = signal(false, ...(ngDevMode ? [{ debugName: "drawerOpened" }] : []));
|
|
6066
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" }] : []));
|
|
6067
6195
|
searchText = computed(() => {
|
|
6068
6196
|
const state = getState(this.queryParamsStore);
|
|
6069
6197
|
return state.text || '';
|
|
@@ -6078,17 +6206,21 @@ class NavbarTabsComponent {
|
|
|
6078
6206
|
return childPath || 'all';
|
|
6079
6207
|
}, ...(ngDevMode ? [{ debugName: "currentPath" }] : []));
|
|
6080
6208
|
// create tabs from the search routes
|
|
6081
|
-
tabs = computed(() =>
|
|
6082
|
-
|
|
6083
|
-
|
|
6084
|
-
|
|
6085
|
-
|
|
6086
|
-
|
|
6087
|
-
|
|
6088
|
-
|
|
6089
|
-
|
|
6090
|
-
|
|
6091
|
-
|
|
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" }] : []));
|
|
6092
6224
|
moreTabs = computed(() => this.tabs().slice(this.visibleTabCount()), ...(ngDevMode ? [{ debugName: "moreTabs" }] : []));
|
|
6093
6225
|
changeTab(tab) {
|
|
6094
6226
|
// we use the routerlink to navigate, so just close the drawer and remove the id parameter from the query params
|
|
@@ -6097,15 +6229,15 @@ class NavbarTabsComponent {
|
|
|
6097
6229
|
constructor() {
|
|
6098
6230
|
this.drawerStack.isOpened.pipe(takeUntilDestroyed()).subscribe(state => this.drawerOpened.set(state));
|
|
6099
6231
|
}
|
|
6100
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6101
|
-
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: `
|
|
6102
6234
|
<!-- do not display the tabs if there are no tabs -->
|
|
6103
6235
|
@if (tabs().length > 0) {
|
|
6104
6236
|
<div overflowManager class="relative col-span-2 col-start-2 row-start-2 flex" (count)="visibleTabCount.set($event)">
|
|
6105
6237
|
<tabs class="w-full">
|
|
6106
6238
|
@for (tab of tabs(); track $index) {
|
|
6107
6239
|
<tab
|
|
6108
|
-
class="w-fit"
|
|
6240
|
+
class="bg-muted w-fit"
|
|
6109
6241
|
value="{{ tab.display | syslang | transloco }}"
|
|
6110
6242
|
overflowItem
|
|
6111
6243
|
[attr.aria-selected]="this.currentPath() === tab.path"
|
|
@@ -6117,6 +6249,7 @@ class NavbarTabsComponent {
|
|
|
6117
6249
|
<i class="fa-fw {{ tab.icon }} " aria-hidden="true"></i>
|
|
6118
6250
|
}
|
|
6119
6251
|
<span>{{ tab.display | syslang | transloco }}</span>
|
|
6252
|
+
<span class="empty:hidden">{{ tab.count }}</span>
|
|
6120
6253
|
</tab>
|
|
6121
6254
|
}
|
|
6122
6255
|
</tabs>
|
|
@@ -6151,9 +6284,9 @@ class NavbarTabsComponent {
|
|
|
6151
6284
|
}
|
|
6152
6285
|
</div>
|
|
6153
6286
|
}
|
|
6154
|
-
`, 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" }] });
|
|
6155
6288
|
}
|
|
6156
|
-
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: [{
|
|
6157
6290
|
type: Component,
|
|
6158
6291
|
args: [{
|
|
6159
6292
|
selector: 'navbar-tabs',
|
|
@@ -6165,7 +6298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6165
6298
|
<tabs class="w-full">
|
|
6166
6299
|
@for (tab of tabs(); track $index) {
|
|
6167
6300
|
<tab
|
|
6168
|
-
class="w-fit"
|
|
6301
|
+
class="bg-muted w-fit"
|
|
6169
6302
|
value="{{ tab.display | syslang | transloco }}"
|
|
6170
6303
|
overflowItem
|
|
6171
6304
|
[attr.aria-selected]="this.currentPath() === tab.path"
|
|
@@ -6177,6 +6310,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6177
6310
|
<i class="fa-fw {{ tab.icon }} " aria-hidden="true"></i>
|
|
6178
6311
|
}
|
|
6179
6312
|
<span>{{ tab.display | syslang | transloco }}</span>
|
|
6313
|
+
<span class="empty:hidden">{{ tab.count }}</span>
|
|
6180
6314
|
</tab>
|
|
6181
6315
|
}
|
|
6182
6316
|
</tabs>
|
|
@@ -6230,8 +6364,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6230
6364
|
}], ctorParameters: () => [] });
|
|
6231
6365
|
|
|
6232
6366
|
class NoResultComponent {
|
|
6233
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6234
|
-
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: `
|
|
6235
6369
|
<header class="flex items-center gap-2 text-xl font-semibold">
|
|
6236
6370
|
<i class="fa-fw far fa-face-sad-sweat text-3xl"></i>
|
|
6237
6371
|
<p>{{ 'noResult.noResult' | transloco }}</p>
|
|
@@ -6244,7 +6378,7 @@ class NoResultComponent {
|
|
|
6244
6378
|
<p>{{ 'noResult.noResultAssistance' | transloco }}</p>
|
|
6245
6379
|
`, isInline: true, dependencies: [{ kind: "pipe", type: TranslocoPipe, name: "transloco" }] });
|
|
6246
6380
|
}
|
|
6247
|
-
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: [{
|
|
6248
6382
|
type: Component,
|
|
6249
6383
|
args: [{
|
|
6250
6384
|
selector: 'NoResult',
|
|
@@ -6264,7 +6398,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6264
6398
|
<p>{{ 'noResult.noResultAssistance' | transloco }}</p>
|
|
6265
6399
|
`,
|
|
6266
6400
|
host: {
|
|
6267
|
-
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'
|
|
6268
6402
|
}
|
|
6269
6403
|
}]
|
|
6270
6404
|
}] });
|
|
@@ -6290,8 +6424,8 @@ class PagerComponent {
|
|
|
6290
6424
|
this.page.set(this.page() - 1);
|
|
6291
6425
|
this.queryService.gotoPage(this.page());
|
|
6292
6426
|
}
|
|
6293
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6294
|
-
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: `
|
|
6295
6429
|
<div class="flex gap-2">
|
|
6296
6430
|
@if ((hasPages() && page() > 1) || (!hasPages() && page() > 1)) {
|
|
6297
6431
|
<button variant="ghost" [attr.title]="'previousPage' | transloco" (click)="previousPage()">
|
|
@@ -6313,9 +6447,9 @@ class PagerComponent {
|
|
|
6313
6447
|
</button>
|
|
6314
6448
|
}
|
|
6315
6449
|
</div>
|
|
6316
|
-
`, 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" }] });
|
|
6317
6451
|
}
|
|
6318
|
-
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: [{
|
|
6319
6453
|
type: Component,
|
|
6320
6454
|
args: [{
|
|
6321
6455
|
selector: 'pager',
|
|
@@ -6347,6 +6481,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6347
6481
|
}]
|
|
6348
6482
|
}], ctorParameters: () => [] });
|
|
6349
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
|
+
});
|
|
6350
6513
|
class SearchInputComponent {
|
|
6351
6514
|
cn = cn;
|
|
6352
6515
|
searchInput = viewChild.required('search');
|
|
@@ -6385,12 +6548,13 @@ class SearchInputComponent {
|
|
|
6385
6548
|
}
|
|
6386
6549
|
}, ...(ngDevMode ? [{ debugName: "keyboardNavigatorOptions" }] : []));
|
|
6387
6550
|
placeholder = input('Search...', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
6388
|
-
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
6551
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
6389
6552
|
hotkey = input('shift+/', ...(ngDevMode ? [{ debugName: "hotkey" }] : []));
|
|
6390
6553
|
class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
|
|
6391
6554
|
variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
6555
|
+
decoration = input('none', ...(ngDevMode ? [{ debugName: "decoration" }] : []));
|
|
6392
6556
|
variants = computed(() => {
|
|
6393
|
-
return searchVariants({ variant: this.variant(), class: this.class() });
|
|
6557
|
+
return searchVariants({ variant: this.variant(), decoration: this.decoration(), class: this.class() });
|
|
6394
6558
|
}, ...(ngDevMode ? [{ debugName: "variants" }] : []));
|
|
6395
6559
|
onInput(event) {
|
|
6396
6560
|
const inputElement = event.target;
|
|
@@ -6402,10 +6566,9 @@ class SearchInputComponent {
|
|
|
6402
6566
|
e.stopImmediatePropagation();
|
|
6403
6567
|
this.control().reset();
|
|
6404
6568
|
this.control().updateValueAndValidity();
|
|
6405
|
-
this.searchInput()?.nativeElement.focus();
|
|
6406
6569
|
}
|
|
6407
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6408
|
-
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: `
|
|
6409
6572
|
<SearchIcon class="text-foreground size-4 rotate-0 transition-[rotate] duration-500 group-focus-within:rotate-90" />
|
|
6410
6573
|
<input
|
|
6411
6574
|
#search
|
|
@@ -6425,18 +6588,17 @@ class SearchInputComponent {
|
|
|
6425
6588
|
(input)="onInput($event)" />
|
|
6426
6589
|
|
|
6427
6590
|
<button
|
|
6428
|
-
|
|
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"
|
|
6429
6592
|
[tabindex]="control().value ? 0 : -1"
|
|
6430
|
-
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"
|
|
6431
6593
|
(keydown.enter)="clearSearch($event)"
|
|
6432
6594
|
(click)="clearSearch($event)">
|
|
6433
6595
|
<XMark class="size-4" aria-hidden="true" />
|
|
6434
6596
|
</button>
|
|
6435
6597
|
|
|
6436
6598
|
<ng-content />
|
|
6437
|
-
`, 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"] }] });
|
|
6438
6600
|
}
|
|
6439
|
-
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: [{
|
|
6440
6602
|
type: Component,
|
|
6441
6603
|
args: [{ selector: 'SearchInput', standalone: true, imports: [SearchIcon, XMarkIConComponent, KeyboardNavigatorDirective], template: `
|
|
6442
6604
|
<SearchIcon class="text-foreground size-4 rotate-0 transition-[rotate] duration-500 group-focus-within:rotate-90" />
|
|
@@ -6458,9 +6620,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6458
6620
|
(input)="onInput($event)" />
|
|
6459
6621
|
|
|
6460
6622
|
<button
|
|
6461
|
-
|
|
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"
|
|
6462
6624
|
[tabindex]="control().value ? 0 : -1"
|
|
6463
|
-
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"
|
|
6464
6625
|
(keydown.enter)="clearSearch($event)"
|
|
6465
6626
|
(click)="clearSearch($event)">
|
|
6466
6627
|
<XMark class="size-4" aria-hidden="true" />
|
|
@@ -6517,10 +6678,10 @@ class SortSelectorComponent {
|
|
|
6517
6678
|
this.onSort.emit(sort);
|
|
6518
6679
|
}
|
|
6519
6680
|
}
|
|
6520
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6521
|
-
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" }] });
|
|
6522
6683
|
}
|
|
6523
|
-
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: [{
|
|
6524
6685
|
type: Component,
|
|
6525
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" }]
|
|
6526
6687
|
}] });
|
|
@@ -6571,8 +6732,8 @@ class SponsoredResultsComponent {
|
|
|
6571
6732
|
}
|
|
6572
6733
|
});
|
|
6573
6734
|
}
|
|
6574
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6575
|
-
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) {
|
|
6576
6737
|
@for (link of sponsoredResults(); track $index) {
|
|
6577
6738
|
<li role="listitem" class="text-primary flex items-center gap-2 rounded px-3 py-2 font-bold">
|
|
6578
6739
|
<a href="{{ link.url }}" target="_blank" rel="noopener" title="{{ link.tooltip }}" class="result-link peer flex items-center gap-2 hover:underline">
|
|
@@ -6590,7 +6751,7 @@ class SponsoredResultsComponent {
|
|
|
6590
6751
|
}
|
|
6591
6752
|
}`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
6592
6753
|
}
|
|
6593
|
-
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: [{
|
|
6594
6755
|
type: Component,
|
|
6595
6756
|
args: [{
|
|
6596
6757
|
selector: 'sponsored-results, SponsoredResults, sponsoredresults',
|
|
@@ -6638,8 +6799,8 @@ class ThemeSelectorComponent {
|
|
|
6638
6799
|
theme = theme.name;
|
|
6639
6800
|
this.themeStore.setCurrentTheme(this.scope(), theme);
|
|
6640
6801
|
}
|
|
6641
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6642
|
-
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: `
|
|
6643
6804
|
<Menu>
|
|
6644
6805
|
<ng-content></ng-content>
|
|
6645
6806
|
|
|
@@ -6658,7 +6819,7 @@ class ThemeSelectorComponent {
|
|
|
6658
6819
|
</Menu>
|
|
6659
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"] }] });
|
|
6660
6821
|
}
|
|
6661
|
-
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: [{
|
|
6662
6823
|
type: Component,
|
|
6663
6824
|
args: [{ selector: 'theme-selector', standalone: true, imports: [MenuComponent, NgStyle, MenuContentComponent], template: `
|
|
6664
6825
|
<Menu>
|
|
@@ -6698,8 +6859,8 @@ class ThemeToggleComponent {
|
|
|
6698
6859
|
return;
|
|
6699
6860
|
this.themeStore.setDarkMode(this.scope(), status);
|
|
6700
6861
|
}
|
|
6701
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6702
|
-
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: `
|
|
6703
6864
|
<label class="flex cursor-pointer select-none items-center gap-2">
|
|
6704
6865
|
@if (darkMode()) {
|
|
6705
6866
|
<i class="fa-fw far fa-toggle-large-on text-primary"></i>
|
|
@@ -6713,7 +6874,7 @@ class ThemeToggleComponent {
|
|
|
6713
6874
|
</label>
|
|
6714
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"] }] });
|
|
6715
6876
|
}
|
|
6716
|
-
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: [{
|
|
6717
6878
|
type: Component,
|
|
6718
6879
|
args: [{ selector: 'theme-toggle', standalone: true, imports: [FormsModule], template: `
|
|
6719
6880
|
<label class="flex cursor-pointer select-none items-center gap-2">
|
|
@@ -6915,28 +7076,32 @@ class SearchFooterComponent {
|
|
|
6915
7076
|
event.stopPropagation();
|
|
6916
7077
|
this.loadMore.emit();
|
|
6917
7078
|
}
|
|
6918
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6919
|
-
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">
|
|
6920
7081
|
@if (hasMore() && config().showLoadMore) {
|
|
6921
|
-
<button
|
|
7082
|
+
<button decoration="outline" class="w-full" tabindex="0" [attr.title]="'loadMore' | transloco" (click)="onLoadMore($event)">
|
|
6922
7083
|
{{ 'loadMore' | transloco }}
|
|
6923
7084
|
</button>
|
|
6924
7085
|
}
|
|
6925
|
-
<button
|
|
6926
|
-
|
|
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" }] });
|
|
6927
7090
|
}
|
|
6928
|
-
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: [{
|
|
6929
7092
|
type: Component,
|
|
6930
7093
|
args: [{
|
|
6931
7094
|
selector: 'search-footer, searchfooter, SearchFooter',
|
|
6932
7095
|
imports: [TranslocoPipe, RouterLink, ButtonComponent],
|
|
6933
7096
|
template: ` <div class="flex flex-col px-2">
|
|
6934
7097
|
@if (hasMore() && config().showLoadMore) {
|
|
6935
|
-
<button
|
|
7098
|
+
<button decoration="outline" class="w-full" tabindex="0" [attr.title]="'loadMore' | transloco" (click)="onLoadMore($event)">
|
|
6936
7099
|
{{ 'loadMore' | transloco }}
|
|
6937
7100
|
</button>
|
|
6938
7101
|
}
|
|
6939
|
-
<button
|
|
7102
|
+
<button decoration="underline" class="ml-auto" [attr.title]="'seeMore' | transloco" [routerLink]="[config().routerLink]">
|
|
7103
|
+
{{ 'seeMore' | transloco }}
|
|
7104
|
+
</button>
|
|
6940
7105
|
</div>`
|
|
6941
7106
|
}]
|
|
6942
7107
|
}] });
|
|
@@ -6944,17 +7109,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6944
7109
|
class SearchHeaderComponent {
|
|
6945
7110
|
floating = inject(PopoverContentComponent, { skipSelf: true, optional: true });
|
|
6946
7111
|
label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
6947
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6948
|
-
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: `
|
|
6949
7114
|
@if (floating) {
|
|
6950
7115
|
<div class="p-2">
|
|
6951
7116
|
<label class="text-xl font-bold">{{ label() }}</label>
|
|
6952
|
-
<
|
|
7117
|
+
<HorizontalDivider />
|
|
6953
7118
|
</div>
|
|
6954
7119
|
}
|
|
6955
|
-
`, isInline: true, dependencies: [{ kind: "component", type: HorizontalDividerComponent, selector: "
|
|
7120
|
+
`, isInline: true, dependencies: [{ kind: "component", type: HorizontalDividerComponent, selector: "horizontal-divider, HorizontalDivider, horizontaldivider" }] });
|
|
6956
7121
|
}
|
|
6957
|
-
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: [{
|
|
6958
7123
|
type: Component,
|
|
6959
7124
|
args: [{
|
|
6960
7125
|
selector: 'search-header, searchheader, SearchHeader',
|
|
@@ -6963,7 +7128,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
6963
7128
|
@if (floating) {
|
|
6964
7129
|
<div class="p-2">
|
|
6965
7130
|
<label class="text-xl font-bold">{{ label() }}</label>
|
|
6966
|
-
<
|
|
7131
|
+
<HorizontalDivider />
|
|
6967
7132
|
</div>
|
|
6968
7133
|
}
|
|
6969
7134
|
`
|
|
@@ -6982,7 +7147,8 @@ class SearchListComponent {
|
|
|
6982
7147
|
transloco = inject(TranslocoService);
|
|
6983
7148
|
onClick(search) {
|
|
6984
7149
|
const queryParams = {
|
|
6985
|
-
q: search.queryParams?.text
|
|
7150
|
+
q: search.queryParams?.text,
|
|
7151
|
+
t: search.queryParams?.tab
|
|
6986
7152
|
};
|
|
6987
7153
|
if (search.queryParams?.filters && search.queryParams?.filters?.length > 0)
|
|
6988
7154
|
queryParams.f = JSON.stringify(search.queryParams?.filters);
|
|
@@ -6992,8 +7158,8 @@ class SearchListComponent {
|
|
|
6992
7158
|
e.stopPropagation();
|
|
6993
7159
|
this.delete.emit(index);
|
|
6994
7160
|
}
|
|
6995
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
6996
|
-
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: `
|
|
6997
7163
|
@for (search of paginatedSearches(); track $index) {
|
|
6998
7164
|
<li
|
|
6999
7165
|
role="listitem"
|
|
@@ -7035,9 +7201,9 @@ class SearchListComponent {
|
|
|
7035
7201
|
<ng-content />
|
|
7036
7202
|
</li>
|
|
7037
7203
|
}
|
|
7038
|
-
`, 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" }] });
|
|
7039
7205
|
}
|
|
7040
|
-
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: [{
|
|
7041
7207
|
type: Component,
|
|
7042
7208
|
args: [{
|
|
7043
7209
|
selector: 'search-list, searchlist, SearchList',
|
|
@@ -7141,8 +7307,8 @@ class RecentSearchesComponent {
|
|
|
7141
7307
|
loadMore() {
|
|
7142
7308
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
7143
7309
|
}
|
|
7144
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7145
|
-
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: `
|
|
7146
7312
|
<SearchHeader [label]="'searches.recent.label' | transloco" />
|
|
7147
7313
|
|
|
7148
7314
|
<SearchList
|
|
@@ -7158,7 +7324,7 @@ class RecentSearchesComponent {
|
|
|
7158
7324
|
<SearchFooter [hasMore]="hasMore()" [config]="config" (loadMore)="loadMore()" />
|
|
7159
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" }] });
|
|
7160
7326
|
}
|
|
7161
|
-
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: [{
|
|
7162
7328
|
type: Component,
|
|
7163
7329
|
args: [{ selector: 'RecentSearches, recent-searches', standalone: true, providers: [provideTranslocoScope('searches')], imports: [TranslocoPipe, ChildMarkerDirective, SearchHeaderComponent, SearchListComponent, SearchFooterComponent], template: `
|
|
7164
7330
|
<SearchHeader [label]="'searches.recent.label' | transloco" />
|
|
@@ -7214,8 +7380,8 @@ class SavedSearchesComponent {
|
|
|
7214
7380
|
loadMore() {
|
|
7215
7381
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
7216
7382
|
}
|
|
7217
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7218
|
-
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: `
|
|
7219
7385
|
<SearchHeader [label]="'searches.saved.label' | transloco" />
|
|
7220
7386
|
|
|
7221
7387
|
<SearchList [paginatedSearches]="paginatedSearches()" deleteButtonTitle="searches.saved.remove" (delete)="onDelete($event)">
|
|
@@ -7227,7 +7393,7 @@ class SavedSearchesComponent {
|
|
|
7227
7393
|
<SearchFooter [hasMore]="hasMore()" [config]="config" (loadMore)="loadMore()" />
|
|
7228
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" }] });
|
|
7229
7395
|
}
|
|
7230
|
-
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: [{
|
|
7231
7397
|
type: Component,
|
|
7232
7398
|
args: [{ selector: 'saved-searches, SavedSearches', standalone: true, imports: [TranslocoPipe, ChildMarkerDirective, SearchHeaderComponent, SearchListComponent, SearchFooterComponent], providers: [provideTranslocoScope('searches')], template: `
|
|
7233
7399
|
<SearchHeader [label]="'searches.saved.label' | transloco" />
|
|
@@ -7259,8 +7425,8 @@ class SavedSearchDialog {
|
|
|
7259
7425
|
// emit closed event for the diaglog service
|
|
7260
7426
|
this.closed.emit('dialog-confirm');
|
|
7261
7427
|
}
|
|
7262
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7263
|
-
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: `
|
|
7264
7430
|
<dialog #dialog>
|
|
7265
7431
|
<DialogHeader>
|
|
7266
7432
|
<DialogTitle>{{ 'searches.saved.save' | transloco }}</DialogTitle>
|
|
@@ -7279,7 +7445,7 @@ class SavedSearchDialog {
|
|
|
7279
7445
|
|
|
7280
7446
|
<DialogFooter class="flex-col">
|
|
7281
7447
|
<div class="ml-auto flex justify-end gap-2">
|
|
7282
|
-
<button
|
|
7448
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
7283
7449
|
{{ 'cancel' | transloco }}
|
|
7284
7450
|
</button>
|
|
7285
7451
|
<button (click)="confirm($event)" [disabled]="!saveName()">
|
|
@@ -7288,9 +7454,9 @@ class SavedSearchDialog {
|
|
|
7288
7454
|
</div>
|
|
7289
7455
|
</DialogFooter>
|
|
7290
7456
|
</dialog>
|
|
7291
|
-
`, 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" }] });
|
|
7292
7458
|
}
|
|
7293
|
-
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: [{
|
|
7294
7460
|
type: Component,
|
|
7295
7461
|
args: [{
|
|
7296
7462
|
selector: 'saved-search-dialog, savedsearchdialog, SavedSearchDialog',
|
|
@@ -7326,7 +7492,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7326
7492
|
|
|
7327
7493
|
<DialogFooter class="flex-col">
|
|
7328
7494
|
<div class="ml-auto flex justify-end gap-2">
|
|
7329
|
-
<button
|
|
7495
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
7330
7496
|
{{ 'cancel' | transloco }}
|
|
7331
7497
|
</button>
|
|
7332
7498
|
<button (click)="confirm($event)" [disabled]="!saveName()">
|
|
@@ -7365,14 +7531,14 @@ class BookmarkButtonComponent {
|
|
|
7365
7531
|
notify.success(this.transloco.translate('bookmarks.bookmarkAdded'), { duration: 2000 });
|
|
7366
7532
|
}
|
|
7367
7533
|
}
|
|
7368
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7369
|
-
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()) {
|
|
7370
7536
|
<i class="fa-fw fa-bookmark fa-solid"></i>
|
|
7371
7537
|
} @else {
|
|
7372
7538
|
<i class="fa-fw fa-bookmark fa-regular"></i>
|
|
7373
7539
|
}`, isInline: true });
|
|
7374
7540
|
}
|
|
7375
|
-
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: [{
|
|
7376
7542
|
type: Component,
|
|
7377
7543
|
args: [{
|
|
7378
7544
|
selector: 'bookmark-button, bookmarkbutton, BookmarkButton',
|
|
@@ -7464,12 +7630,12 @@ class BookmarksComponent {
|
|
|
7464
7630
|
e.stopPropagation();
|
|
7465
7631
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
7466
7632
|
}
|
|
7467
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7468
|
-
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" }] });
|
|
7469
7635
|
}
|
|
7470
|
-
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: [{
|
|
7471
7637
|
type: Component,
|
|
7472
|
-
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"] }]
|
|
7473
7639
|
}], ctorParameters: () => [] });
|
|
7474
7640
|
|
|
7475
7641
|
class DeleteCollectionDialog {
|
|
@@ -7489,8 +7655,8 @@ class DeleteCollectionDialog {
|
|
|
7489
7655
|
const message = this.translocoService.translate('collections.deleted');
|
|
7490
7656
|
notify.success(message, { duration: 2000 });
|
|
7491
7657
|
}
|
|
7492
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7493
|
-
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: `
|
|
7494
7660
|
<dialog #dialog>
|
|
7495
7661
|
<DialogHeader>
|
|
7496
7662
|
<DialogTitle>{{ 'collections.deleteCollection' | transloco }}</DialogTitle>
|
|
@@ -7501,7 +7667,7 @@ class DeleteCollectionDialog {
|
|
|
7501
7667
|
</DialogContent>
|
|
7502
7668
|
|
|
7503
7669
|
<DialogFooter>
|
|
7504
|
-
<button
|
|
7670
|
+
<button decoration="outline" (click)="dialog.cancel($event)">
|
|
7505
7671
|
{{ 'cancel' | transloco }}
|
|
7506
7672
|
</button>
|
|
7507
7673
|
|
|
@@ -7510,9 +7676,9 @@ class DeleteCollectionDialog {
|
|
|
7510
7676
|
</button>
|
|
7511
7677
|
</DialogFooter>
|
|
7512
7678
|
</dialog>
|
|
7513
|
-
`, 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" }] });
|
|
7514
7680
|
}
|
|
7515
|
-
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: [{
|
|
7516
7682
|
type: Component,
|
|
7517
7683
|
args: [{
|
|
7518
7684
|
selector: 'delete-collection-dialog',
|
|
@@ -7539,7 +7705,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7539
7705
|
</DialogContent>
|
|
7540
7706
|
|
|
7541
7707
|
<DialogFooter>
|
|
7542
|
-
<button
|
|
7708
|
+
<button decoration="outline" (click)="dialog.cancel($event)">
|
|
7543
7709
|
{{ 'cancel' | transloco }}
|
|
7544
7710
|
</button>
|
|
7545
7711
|
|
|
@@ -7592,12 +7758,12 @@ class CollectionsComponent {
|
|
|
7592
7758
|
e.stopPropagation();
|
|
7593
7759
|
this.range.set(this.range() + (this.config.itemsPerPage ?? 10));
|
|
7594
7760
|
}
|
|
7595
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7596
|
-
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" }] });
|
|
7597
7763
|
}
|
|
7598
|
-
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: [{
|
|
7599
7765
|
type: Component,
|
|
7600
|
-
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" }]
|
|
7601
7767
|
}], ctorParameters: () => [] });
|
|
7602
7768
|
|
|
7603
7769
|
class AlertDialog {
|
|
@@ -7722,8 +7888,8 @@ class AlertDialog {
|
|
|
7722
7888
|
this.queryParamsStore.patch({ text: q.text, tab: q.tab, basket: q.basket, sort: q.sort, filters, name: q.name });
|
|
7723
7889
|
this.dialog().close(e);
|
|
7724
7890
|
}
|
|
7725
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
7726
|
-
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: `
|
|
7727
7893
|
<dialog #dialog>
|
|
7728
7894
|
<DialogHeader class="px-1">
|
|
7729
7895
|
<DialogTitle>{{ 'alerts.createAlert' | transloco }}</DialogTitle>
|
|
@@ -7731,7 +7897,7 @@ class AlertDialog {
|
|
|
7731
7897
|
|
|
7732
7898
|
<DialogContent class="flex flex-col gap-2 overflow-auto px-1">
|
|
7733
7899
|
<div class="mb-2">
|
|
7734
|
-
<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>
|
|
7735
7901
|
<input
|
|
7736
7902
|
id="alertName"
|
|
7737
7903
|
name="alertName"
|
|
@@ -7745,12 +7911,12 @@ class AlertDialog {
|
|
|
7745
7911
|
</div>
|
|
7746
7912
|
|
|
7747
7913
|
<div class="mb-2">
|
|
7748
|
-
<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>
|
|
7749
7915
|
<div class="relative">
|
|
7750
7916
|
<select
|
|
7751
7917
|
id="frequency"
|
|
7752
7918
|
name="frequency"
|
|
7753
|
-
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"
|
|
7754
7920
|
id="alertFrequency"
|
|
7755
7921
|
[ngModel]="alertFrequency()"
|
|
7756
7922
|
(ngModelChange)="alertFrequency.set($event)">
|
|
@@ -7758,26 +7924,29 @@ class AlertDialog {
|
|
|
7758
7924
|
<option [value]="frequencyValue">{{ 'alerts.frequency.' + frequency[frequencyValue] | transloco }}</option>
|
|
7759
7925
|
}
|
|
7760
7926
|
</select>
|
|
7761
|
-
<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" />
|
|
7762
7931
|
</div>
|
|
7763
7932
|
</div>
|
|
7764
7933
|
|
|
7765
7934
|
<div class="mb-2">
|
|
7766
|
-
<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>
|
|
7767
7936
|
<div class="weekdays-grid gap-1.5 px-2.5 py-0">
|
|
7768
7937
|
@for (day of weekdays; track $index) {
|
|
7769
7938
|
<div>
|
|
7770
7939
|
<input class="me-1" type="checkbox" id="day_{{ day.value }}" [checked]="dayChecked(day.value)" (change)="dayChange($event, day.value)" />
|
|
7771
|
-
<label role="button" for="day_{{ day.value }}" class="form-check-label user-select-none cursor-pointer">
|
|
7772
|
-
'alerts.weekdays.' + day.key | transloco
|
|
7773
|
-
|
|
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>
|
|
7774
7943
|
</div>
|
|
7775
7944
|
}
|
|
7776
7945
|
</div>
|
|
7777
7946
|
</div>
|
|
7778
7947
|
|
|
7779
7948
|
<div class="mb-6">
|
|
7780
|
-
<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>
|
|
7781
7950
|
<input
|
|
7782
7951
|
type="time"
|
|
7783
7952
|
id="alertTimes"
|
|
@@ -7800,12 +7969,12 @@ class AlertDialog {
|
|
|
7800
7969
|
@if (alert || canUpdateQuery()) {
|
|
7801
7970
|
<div class="flex w-full flex-col gap-2">
|
|
7802
7971
|
@if (alert) {
|
|
7803
|
-
<button
|
|
7972
|
+
<button decoration="outline" (click)="execute($event)" [disabled]="!canUpdateQuery()">
|
|
7804
7973
|
{{ 'alerts.execute' | transloco }}
|
|
7805
7974
|
</button>
|
|
7806
7975
|
}
|
|
7807
7976
|
@if (canUpdateQuery()) {
|
|
7808
|
-
<button [disabled]="updateStatus() !== 'idle'"
|
|
7977
|
+
<button [disabled]="updateStatus() !== 'idle'" decoration="outline" (click)="updateQuery()">
|
|
7809
7978
|
@switch (updateStatus()) {
|
|
7810
7979
|
@case ('updating') {
|
|
7811
7980
|
<LoadingCircle class="size-4 animate-spin" width="16" height="16" />
|
|
@@ -7824,18 +7993,18 @@ class AlertDialog {
|
|
|
7824
7993
|
</div>
|
|
7825
7994
|
}
|
|
7826
7995
|
<div class="ml-auto flex justify-end gap-2">
|
|
7827
|
-
<button
|
|
7996
|
+
<button decoration="outline" (click)="dialog.cancel($event)">
|
|
7828
7997
|
{{ 'cancel' | transloco }}
|
|
7829
7998
|
</button>
|
|
7830
|
-
<button (click)="confirm($event)" [disabled]="invalidForm()">
|
|
7999
|
+
<button variant="primary" (click)="confirm($event)" [disabled]="invalidForm()">
|
|
7831
8000
|
{{ 'confirm' | transloco }}
|
|
7832
8001
|
</button>
|
|
7833
8002
|
</div>
|
|
7834
8003
|
</DialogFooter>
|
|
7835
8004
|
</dialog>
|
|
7836
|
-
`, 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" }] });
|
|
7837
8006
|
}
|
|
7838
|
-
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: [{
|
|
7839
8008
|
type: Component,
|
|
7840
8009
|
args: [{ selector: 'alert-dialog, alertdialog, AlertDialog', standalone: true, imports: [
|
|
7841
8010
|
FormsModule,
|
|
@@ -7849,7 +8018,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7849
8018
|
InputComponent,
|
|
7850
8019
|
ChevronRightIconComponent,
|
|
7851
8020
|
LoadingCircleIconComponent,
|
|
7852
|
-
CircleCheckIconComponent
|
|
8021
|
+
CircleCheckIconComponent,
|
|
8022
|
+
SelectOptionDirective
|
|
7853
8023
|
], providers: [provideTranslocoScope('alerts')], template: `
|
|
7854
8024
|
<dialog #dialog>
|
|
7855
8025
|
<DialogHeader class="px-1">
|
|
@@ -7858,7 +8028,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7858
8028
|
|
|
7859
8029
|
<DialogContent class="flex flex-col gap-2 overflow-auto px-1">
|
|
7860
8030
|
<div class="mb-2">
|
|
7861
|
-
<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>
|
|
7862
8032
|
<input
|
|
7863
8033
|
id="alertName"
|
|
7864
8034
|
name="alertName"
|
|
@@ -7872,12 +8042,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7872
8042
|
</div>
|
|
7873
8043
|
|
|
7874
8044
|
<div class="mb-2">
|
|
7875
|
-
<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>
|
|
7876
8046
|
<div class="relative">
|
|
7877
8047
|
<select
|
|
7878
8048
|
id="frequency"
|
|
7879
8049
|
name="frequency"
|
|
7880
|
-
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"
|
|
7881
8051
|
id="alertFrequency"
|
|
7882
8052
|
[ngModel]="alertFrequency()"
|
|
7883
8053
|
(ngModelChange)="alertFrequency.set($event)">
|
|
@@ -7885,26 +8055,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7885
8055
|
<option [value]="frequencyValue">{{ 'alerts.frequency.' + frequency[frequencyValue] | transloco }}</option>
|
|
7886
8056
|
}
|
|
7887
8057
|
</select>
|
|
7888
|
-
<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" />
|
|
7889
8062
|
</div>
|
|
7890
8063
|
</div>
|
|
7891
8064
|
|
|
7892
8065
|
<div class="mb-2">
|
|
7893
|
-
<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>
|
|
7894
8067
|
<div class="weekdays-grid gap-1.5 px-2.5 py-0">
|
|
7895
8068
|
@for (day of weekdays; track $index) {
|
|
7896
8069
|
<div>
|
|
7897
8070
|
<input class="me-1" type="checkbox" id="day_{{ day.value }}" [checked]="dayChecked(day.value)" (change)="dayChange($event, day.value)" />
|
|
7898
|
-
<label role="button" for="day_{{ day.value }}" class="form-check-label user-select-none cursor-pointer">
|
|
7899
|
-
'alerts.weekdays.' + day.key | transloco
|
|
7900
|
-
|
|
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>
|
|
7901
8074
|
</div>
|
|
7902
8075
|
}
|
|
7903
8076
|
</div>
|
|
7904
8077
|
</div>
|
|
7905
8078
|
|
|
7906
8079
|
<div class="mb-6">
|
|
7907
|
-
<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>
|
|
7908
8081
|
<input
|
|
7909
8082
|
type="time"
|
|
7910
8083
|
id="alertTimes"
|
|
@@ -7927,12 +8100,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7927
8100
|
@if (alert || canUpdateQuery()) {
|
|
7928
8101
|
<div class="flex w-full flex-col gap-2">
|
|
7929
8102
|
@if (alert) {
|
|
7930
|
-
<button
|
|
8103
|
+
<button decoration="outline" (click)="execute($event)" [disabled]="!canUpdateQuery()">
|
|
7931
8104
|
{{ 'alerts.execute' | transloco }}
|
|
7932
8105
|
</button>
|
|
7933
8106
|
}
|
|
7934
8107
|
@if (canUpdateQuery()) {
|
|
7935
|
-
<button [disabled]="updateStatus() !== 'idle'"
|
|
8108
|
+
<button [disabled]="updateStatus() !== 'idle'" decoration="outline" (click)="updateQuery()">
|
|
7936
8109
|
@switch (updateStatus()) {
|
|
7937
8110
|
@case ('updating') {
|
|
7938
8111
|
<LoadingCircle class="size-4 animate-spin" width="16" height="16" />
|
|
@@ -7951,10 +8124,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
7951
8124
|
</div>
|
|
7952
8125
|
}
|
|
7953
8126
|
<div class="ml-auto flex justify-end gap-2">
|
|
7954
|
-
<button
|
|
8127
|
+
<button decoration="outline" (click)="dialog.cancel($event)">
|
|
7955
8128
|
{{ 'cancel' | transloco }}
|
|
7956
8129
|
</button>
|
|
7957
|
-
<button (click)="confirm($event)" [disabled]="invalidForm()">
|
|
8130
|
+
<button variant="primary" (click)="confirm($event)" [disabled]="invalidForm()">
|
|
7958
8131
|
{{ 'confirm' | transloco }}
|
|
7959
8132
|
</button>
|
|
7960
8133
|
</div>
|
|
@@ -8005,12 +8178,12 @@ class AlertsComponent {
|
|
|
8005
8178
|
}
|
|
8006
8179
|
this.tmpAlerts.splice(drop.currentIndex, 0, this.tmpAlerts.splice(drop.previousIndex, 1)[0]);
|
|
8007
8180
|
}
|
|
8008
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8009
|
-
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" }] });
|
|
8010
8183
|
}
|
|
8011
|
-
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: [{
|
|
8012
8185
|
type: Component,
|
|
8013
|
-
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" }]
|
|
8014
8187
|
}], ctorParameters: () => [] });
|
|
8015
8188
|
|
|
8016
8189
|
class OverrideUserDialogComponent {
|
|
@@ -8070,8 +8243,8 @@ class OverrideUserDialogComponent {
|
|
|
8070
8243
|
});
|
|
8071
8244
|
}
|
|
8072
8245
|
}
|
|
8073
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8074
|
-
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: `
|
|
8075
8248
|
<dialog #dialog class="max-w-md">
|
|
8076
8249
|
<DialogHeader>
|
|
8077
8250
|
<DialogTitle>{{ 'dialogs.overrideUser.title' | transloco }}</DialogTitle>
|
|
@@ -8108,7 +8281,7 @@ class OverrideUserDialogComponent {
|
|
|
8108
8281
|
</DialogContent>
|
|
8109
8282
|
|
|
8110
8283
|
<DialogFooter>
|
|
8111
|
-
<button
|
|
8284
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8112
8285
|
{{ 'cancel' | transloco }}
|
|
8113
8286
|
</button>
|
|
8114
8287
|
|
|
@@ -8117,9 +8290,9 @@ class OverrideUserDialogComponent {
|
|
|
8117
8290
|
</button>
|
|
8118
8291
|
</DialogFooter>
|
|
8119
8292
|
</dialog>
|
|
8120
|
-
`, 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" }] });
|
|
8121
8294
|
}
|
|
8122
|
-
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: [{
|
|
8123
8296
|
type: Component,
|
|
8124
8297
|
args: [{
|
|
8125
8298
|
selector: 'override-user-dialog',
|
|
@@ -8173,7 +8346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
8173
8346
|
</DialogContent>
|
|
8174
8347
|
|
|
8175
8348
|
<DialogFooter>
|
|
8176
|
-
<button
|
|
8349
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8177
8350
|
{{ 'cancel' | transloco }}
|
|
8178
8351
|
</button>
|
|
8179
8352
|
|
|
@@ -8200,8 +8373,8 @@ class ResetUserSettingsDialogComponent {
|
|
|
8200
8373
|
notify.success(message, { duration: 2000 });
|
|
8201
8374
|
});
|
|
8202
8375
|
}
|
|
8203
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8204
|
-
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: `
|
|
8205
8378
|
<dialog #dialog>
|
|
8206
8379
|
<DialogHeader>
|
|
8207
8380
|
<DialogTitle>{{ 'dialogs.resetUserSettings.title' | transloco }}</DialogTitle>
|
|
@@ -8212,7 +8385,7 @@ class ResetUserSettingsDialogComponent {
|
|
|
8212
8385
|
</DialogContent>
|
|
8213
8386
|
|
|
8214
8387
|
<DialogFooter>
|
|
8215
|
-
<button
|
|
8388
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8216
8389
|
{{ 'cancel' | transloco }}
|
|
8217
8390
|
</button>
|
|
8218
8391
|
|
|
@@ -8221,9 +8394,9 @@ class ResetUserSettingsDialogComponent {
|
|
|
8221
8394
|
</button>
|
|
8222
8395
|
</DialogFooter>
|
|
8223
8396
|
</dialog>
|
|
8224
|
-
`, 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" }] });
|
|
8225
8398
|
}
|
|
8226
|
-
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: [{
|
|
8227
8400
|
type: Component,
|
|
8228
8401
|
args: [{
|
|
8229
8402
|
selector: 'reset-user-settings-dialog',
|
|
@@ -8241,7 +8414,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
8241
8414
|
</DialogContent>
|
|
8242
8415
|
|
|
8243
8416
|
<DialogFooter>
|
|
8244
|
-
<button
|
|
8417
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8245
8418
|
{{ 'cancel' | transloco }}
|
|
8246
8419
|
</button>
|
|
8247
8420
|
|
|
@@ -8269,12 +8442,12 @@ class DidYouMeanComponent {
|
|
|
8269
8442
|
this.queryParamsStore.patch({ spellingCorrectionMode: 'dymonly' });
|
|
8270
8443
|
this.router.navigate([], { queryParamsHandling: 'merge', queryParams: { c: 'dymonly', q: this.original() } });
|
|
8271
8444
|
}
|
|
8272
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8273
|
-
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" }] });
|
|
8274
8447
|
}
|
|
8275
|
-
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: [{
|
|
8276
8449
|
type: Component,
|
|
8277
|
-
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" }]
|
|
8278
8451
|
}] });
|
|
8279
8452
|
|
|
8280
8453
|
/**
|
|
@@ -8393,14 +8566,15 @@ class SignInComponent {
|
|
|
8393
8566
|
this.router.navigate(['/']);
|
|
8394
8567
|
}
|
|
8395
8568
|
}
|
|
8396
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8397
|
-
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>\n <CardHeader>\n <a href=\"#\" title=\"Logo\">\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 </a>\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 }}</label\n >\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 }}</label\n >\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: "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" }] });
|
|
8398
8571
|
}
|
|
8399
|
-
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: [{
|
|
8400
8573
|
type: Component,
|
|
8401
8574
|
args: [{ selector: 'signIn, signin, sign-in', standalone: true, providers: [provideTranslocoScope('login')], imports: [
|
|
8402
8575
|
RouterModule,
|
|
8403
8576
|
FormsModule,
|
|
8577
|
+
A11yModule,
|
|
8404
8578
|
TranslocoPipe,
|
|
8405
8579
|
InputComponent,
|
|
8406
8580
|
ButtonComponent,
|
|
@@ -8408,7 +8582,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
8408
8582
|
CardHeaderComponent,
|
|
8409
8583
|
CardContentComponent,
|
|
8410
8584
|
CardFooterComponent
|
|
8411
|
-
], template: "<Card
|
|
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"] }]
|
|
8412
8586
|
}], ctorParameters: () => [{ type: i0.DestroyRef }] });
|
|
8413
8587
|
|
|
8414
8588
|
class LabelService {
|
|
@@ -8547,10 +8721,10 @@ class LabelService {
|
|
|
8547
8721
|
return from(labels.bulkRemove(labelsToRemove, query, publicOnly));
|
|
8548
8722
|
}));
|
|
8549
8723
|
}
|
|
8550
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8551
|
-
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' });
|
|
8552
8726
|
}
|
|
8553
|
-
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: [{
|
|
8554
8728
|
type: Injectable,
|
|
8555
8729
|
args: [{
|
|
8556
8730
|
providedIn: 'root'
|
|
@@ -8657,8 +8831,8 @@ class MultiSelectLabelsComponent {
|
|
|
8657
8831
|
updateArticleWithLabels() {
|
|
8658
8832
|
this.article()[this.labelsField()] = this.labels();
|
|
8659
8833
|
}
|
|
8660
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8661
|
-
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: `
|
|
8662
8836
|
<div class="anchor" [ngStyle]="{ 'anchor-name': anchor() }">
|
|
8663
8837
|
<label [htmlFor]="id()" class="font-semibold">{{ (isPublic() ? 'labels.publicLabels' : 'labels.privateLabels') | transloco }}</label>
|
|
8664
8838
|
<input
|
|
@@ -8695,9 +8869,9 @@ class MultiSelectLabelsComponent {
|
|
|
8695
8869
|
</Badge>
|
|
8696
8870
|
}
|
|
8697
8871
|
</div>
|
|
8698
|
-
`, 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" }] });
|
|
8699
8873
|
}
|
|
8700
|
-
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: [{
|
|
8701
8875
|
type: Component,
|
|
8702
8876
|
args: [{ selector: 'multiselect-labels, multiselectlabels, MultiSelectLabels', standalone: true, imports: [FormsModule, NgStyle, TranslocoPipe, InputComponent, BadgeComponent, ListItemComponent], template: `
|
|
8703
8877
|
<div class="anchor" [ngStyle]="{ 'anchor-name': anchor() }">
|
|
@@ -8760,8 +8934,8 @@ class LabelsEditDialog {
|
|
|
8760
8934
|
close(event) {
|
|
8761
8935
|
this.closed.emit({ type: event, article: this.article() });
|
|
8762
8936
|
}
|
|
8763
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8764
|
-
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: `
|
|
8765
8939
|
<dialog #dialog (closed)="close($event)">
|
|
8766
8940
|
<DialogHeader>
|
|
8767
8941
|
<DialogTitle>{{ 'labels.title' | transloco }}</DialogTitle>
|
|
@@ -8789,9 +8963,9 @@ class LabelsEditDialog {
|
|
|
8789
8963
|
</button>
|
|
8790
8964
|
</DialogFooter>
|
|
8791
8965
|
</dialog>
|
|
8792
|
-
`, 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" }] });
|
|
8793
8967
|
}
|
|
8794
|
-
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: [{
|
|
8795
8969
|
type: Component,
|
|
8796
8970
|
args: [{
|
|
8797
8971
|
selector: 'labels-edit-dialog, labelseditdialog, LabelsEditDialog',
|
|
@@ -8866,8 +9040,8 @@ class FeedbackDialogComponent {
|
|
|
8866
9040
|
this.dialog().close(e);
|
|
8867
9041
|
notify.success(this.transloco.translate('feedback.feedbackSuccess'), { duration: 2000 });
|
|
8868
9042
|
}
|
|
8869
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
8870
|
-
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: `
|
|
8871
9045
|
<dialog #dialog>
|
|
8872
9046
|
<DialogHeader>
|
|
8873
9047
|
<DialogTitle>{{ 'feedback.dialogTitle' | transloco }}</DialogTitle>
|
|
@@ -8886,7 +9060,7 @@ class FeedbackDialogComponent {
|
|
|
8886
9060
|
</DialogContent>
|
|
8887
9061
|
|
|
8888
9062
|
<DialogFooter>
|
|
8889
|
-
<button
|
|
9063
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8890
9064
|
{{ 'cancel' | transloco }}
|
|
8891
9065
|
</button>
|
|
8892
9066
|
<button [disabled]="!comment()" (click)="submit($event)">
|
|
@@ -8894,9 +9068,9 @@ class FeedbackDialogComponent {
|
|
|
8894
9068
|
</button>
|
|
8895
9069
|
</DialogFooter>
|
|
8896
9070
|
</dialog>
|
|
8897
|
-
`, 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" }] });
|
|
8898
9072
|
}
|
|
8899
|
-
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: [{
|
|
8900
9074
|
type: Component,
|
|
8901
9075
|
args: [{
|
|
8902
9076
|
selector: 'feedback-dialog, feedbackdialog, FeedbackDialog',
|
|
@@ -8931,7 +9105,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
8931
9105
|
</DialogContent>
|
|
8932
9106
|
|
|
8933
9107
|
<DialogFooter>
|
|
8934
|
-
<button
|
|
9108
|
+
<button decoration="outline" (click)="dialog.close($event)">
|
|
8935
9109
|
{{ 'cancel' | transloco }}
|
|
8936
9110
|
</button>
|
|
8937
9111
|
<button [disabled]="!comment()" (click)="submit($event)">
|
|
@@ -9001,12 +9175,12 @@ class SearchFeedbackComponent {
|
|
|
9001
9175
|
openFeedbackDialog(type) {
|
|
9002
9176
|
this.feedbackDialog()?.open(type);
|
|
9003
9177
|
}
|
|
9004
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9005
|
-
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" }] });
|
|
9006
9180
|
}
|
|
9007
|
-
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: [{
|
|
9008
9182
|
type: Component,
|
|
9009
|
-
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" }]
|
|
9010
9184
|
}] });
|
|
9011
9185
|
|
|
9012
9186
|
class AggregationItemComponent {
|
|
@@ -9048,10 +9222,10 @@ class AggregationItemComponent {
|
|
|
9048
9222
|
}
|
|
9049
9223
|
this.onOpen.emit(node);
|
|
9050
9224
|
}
|
|
9051
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9052
|
-
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" }] });
|
|
9053
9227
|
}
|
|
9054
|
-
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: [{
|
|
9055
9229
|
type: Component,
|
|
9056
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"] }]
|
|
9057
9231
|
}], propDecorators: { disabled: [{
|
|
@@ -9091,7 +9265,7 @@ class AggregationComponent {
|
|
|
9091
9265
|
* A boolean flag indicating whether we want to see the filters count when some is applied
|
|
9092
9266
|
* This property is initialized to `false` by default.
|
|
9093
9267
|
*/
|
|
9094
|
-
|
|
9268
|
+
showFiltersCount = input(false, ...(ngDevMode ? [{ debugName: "showFiltersCount" }] : []));
|
|
9095
9269
|
/* aggregation */
|
|
9096
9270
|
aggregation = computed(() => {
|
|
9097
9271
|
// when the aggegation store updates, we need to check if the aggregation is still valid
|
|
@@ -9410,15 +9584,14 @@ class AggregationComponent {
|
|
|
9410
9584
|
}
|
|
9411
9585
|
return currentItems;
|
|
9412
9586
|
}
|
|
9413
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9414
|
-
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" }] });
|
|
9415
9589
|
}
|
|
9416
|
-
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: [{
|
|
9417
9591
|
type: Component,
|
|
9418
9592
|
args: [{ selector: 'Aggregation, aggregation', imports: [FormsModule, ReactiveFormsModule, ButtonComponent, InputComponent, AggregationItemComponent, SyslangPipe, TranslocoPipe, BadgeComponent], standalone: true, host: {
|
|
9419
|
-
class: 'd-flex flex-column h-100',
|
|
9420
9593
|
'[style.--header-height]': '`${this.computeHeight()}rem`'
|
|
9421
|
-
}, 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"] }]
|
|
9422
9595
|
}], ctorParameters: () => [] });
|
|
9423
9596
|
|
|
9424
9597
|
/**
|
|
@@ -9583,12 +9756,12 @@ class DateComponent extends AggregationComponent {
|
|
|
9583
9756
|
}
|
|
9584
9757
|
throw new Error('filters.filterInvalid');
|
|
9585
9758
|
}
|
|
9586
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9587
|
-
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" }] });
|
|
9588
9761
|
}
|
|
9589
|
-
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: [{
|
|
9590
9763
|
type: Component,
|
|
9591
|
-
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"] }]
|
|
9592
9765
|
}], ctorParameters: () => [{ type: i0.DestroyRef }] });
|
|
9593
9766
|
|
|
9594
9767
|
class FilterButtonComponent {
|
|
@@ -9648,12 +9821,12 @@ class FilterButtonComponent {
|
|
|
9648
9821
|
isDate(column) {
|
|
9649
9822
|
return this.appStore.isDateColumn(column);
|
|
9650
9823
|
}
|
|
9651
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9652
|
-
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: `
|
|
9653
9826
|
<Popover [disabled]="filter().disabled" class="group">
|
|
9654
9827
|
<button
|
|
9655
9828
|
[variant]="variant()"
|
|
9656
|
-
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"
|
|
9657
9830
|
[attr.data-disabled]="filter().disabled"
|
|
9658
9831
|
[disabled]="filter().disabled || null">
|
|
9659
9832
|
<!-- display the filter icon if set -->
|
|
@@ -9671,13 +9844,14 @@ class FilterButtonComponent {
|
|
|
9671
9844
|
|
|
9672
9845
|
<!-- show the count of selected items -->
|
|
9673
9846
|
@if (filter().isTree && filter().count > 0) {
|
|
9674
|
-
<Badge
|
|
9847
|
+
<Badge size="xs" variant="primary">
|
|
9675
9848
|
{{ filter().count }}
|
|
9676
9849
|
</Badge>
|
|
9677
9850
|
} @else if (filter().count > 1) {
|
|
9678
|
-
<Badge
|
|
9851
|
+
<Badge size="xs" variant="primary">+{{ filter().count - 1 }}</Badge>
|
|
9679
9852
|
}
|
|
9680
9853
|
</button>
|
|
9854
|
+
|
|
9681
9855
|
<PopoverContent class="w-max" [position]="position()">
|
|
9682
9856
|
@if (isDate(filter().column)) {
|
|
9683
9857
|
<DateFilter
|
|
@@ -9691,9 +9865,9 @@ class FilterButtonComponent {
|
|
|
9691
9865
|
}
|
|
9692
9866
|
</PopoverContent>
|
|
9693
9867
|
</Popover>
|
|
9694
|
-
`, 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" }] });
|
|
9695
9869
|
}
|
|
9696
|
-
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: [{
|
|
9697
9871
|
type: Component,
|
|
9698
9872
|
args: [{
|
|
9699
9873
|
selector: 'filter-button, FilterButton',
|
|
@@ -9713,7 +9887,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9713
9887
|
<Popover [disabled]="filter().disabled" class="group">
|
|
9714
9888
|
<button
|
|
9715
9889
|
[variant]="variant()"
|
|
9716
|
-
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"
|
|
9717
9891
|
[attr.data-disabled]="filter().disabled"
|
|
9718
9892
|
[disabled]="filter().disabled || null">
|
|
9719
9893
|
<!-- display the filter icon if set -->
|
|
@@ -9731,13 +9905,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9731
9905
|
|
|
9732
9906
|
<!-- show the count of selected items -->
|
|
9733
9907
|
@if (filter().isTree && filter().count > 0) {
|
|
9734
|
-
<Badge
|
|
9908
|
+
<Badge size="xs" variant="primary">
|
|
9735
9909
|
{{ filter().count }}
|
|
9736
9910
|
</Badge>
|
|
9737
9911
|
} @else if (filter().count > 1) {
|
|
9738
|
-
<Badge
|
|
9912
|
+
<Badge size="xs" variant="primary">+{{ filter().count - 1 }}</Badge>
|
|
9739
9913
|
}
|
|
9740
9914
|
</button>
|
|
9915
|
+
|
|
9741
9916
|
<PopoverContent class="w-max" [position]="position()">
|
|
9742
9917
|
@if (isDate(filter().column)) {
|
|
9743
9918
|
<DateFilter
|
|
@@ -9835,16 +10010,16 @@ class MoreComponent {
|
|
|
9835
10010
|
const { count = 0 } = this.queryParamsStore.getFilter({ field: aggregation.column, name: aggregation.name }) || {};
|
|
9836
10011
|
return count > 0;
|
|
9837
10012
|
}
|
|
9838
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9839
|
-
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: `
|
|
9840
10015
|
@for (filter of filters(); track $index) {
|
|
9841
|
-
<li [class]="cn('collapse
|
|
10016
|
+
<li [class]="cn('hover:bg-foreground/5 collapse', filter.hidden && 'hidden')">
|
|
9842
10017
|
<!-- header -->
|
|
9843
10018
|
<input
|
|
9844
10019
|
role="button"
|
|
9845
10020
|
type="checkbox"
|
|
9846
10021
|
name="more-filters"
|
|
9847
|
-
[class]="cn('min-h-
|
|
10022
|
+
[class]="cn('min-h-10 w-full', filter.disabled && 'pointer-events-none cursor-default select-none')"
|
|
9848
10023
|
[attr.title]="'filters.openFilter' | transloco: { filter: filter.display || filter.name }" />
|
|
9849
10024
|
|
|
9850
10025
|
@if (isDate(filter.column)) {
|
|
@@ -9864,7 +10039,7 @@ class MoreComponent {
|
|
|
9864
10039
|
|
|
9865
10040
|
<!-- actions fragment -->
|
|
9866
10041
|
<ng-template #actions let-filter="filter" let-agg="agg">
|
|
9867
|
-
<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')">
|
|
9868
10043
|
<!-- aggregation's icon -->
|
|
9869
10044
|
<i class="me-1 fa-fw {{ filter.icon }}" aria-hidden="true"></i>
|
|
9870
10045
|
|
|
@@ -9872,7 +10047,7 @@ class MoreComponent {
|
|
|
9872
10047
|
<span class="me-4 grow text-sm font-semibold">{{ filter.display || filter.name | transloco }}</span>
|
|
9873
10048
|
@if (filter.count > 0) {
|
|
9874
10049
|
<!-- count -->
|
|
9875
|
-
<Badge
|
|
10050
|
+
<Badge size="xs" variant="primary">
|
|
9876
10051
|
{{ filter.count }}
|
|
9877
10052
|
</Badge>
|
|
9878
10053
|
}
|
|
@@ -9881,7 +10056,7 @@ class MoreComponent {
|
|
|
9881
10056
|
<button
|
|
9882
10057
|
variant="ghost"
|
|
9883
10058
|
size="icon"
|
|
9884
|
-
class="z-10
|
|
10059
|
+
class="z-10"
|
|
9885
10060
|
[attr.title]="'filters.clearFilters' | transloco"
|
|
9886
10061
|
(click)="clearFilter(filter.column)"
|
|
9887
10062
|
(keydown.enter)="clearFilter(filter.column)">
|
|
@@ -9896,19 +10071,19 @@ class MoreComponent {
|
|
|
9896
10071
|
</div>
|
|
9897
10072
|
</ng-template>
|
|
9898
10073
|
}
|
|
9899
|
-
`, 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" }] });
|
|
9900
10075
|
}
|
|
9901
|
-
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: [{
|
|
9902
10077
|
type: Component,
|
|
9903
10078
|
args: [{ selector: 'more, More', standalone: true, imports: [NgTemplateOutlet, ButtonComponent, AggregationComponent, TranslocoPipe, DateComponent, BadgeComponent], template: `
|
|
9904
10079
|
@for (filter of filters(); track $index) {
|
|
9905
|
-
<li [class]="cn('collapse
|
|
10080
|
+
<li [class]="cn('hover:bg-foreground/5 collapse', filter.hidden && 'hidden')">
|
|
9906
10081
|
<!-- header -->
|
|
9907
10082
|
<input
|
|
9908
10083
|
role="button"
|
|
9909
10084
|
type="checkbox"
|
|
9910
10085
|
name="more-filters"
|
|
9911
|
-
[class]="cn('min-h-
|
|
10086
|
+
[class]="cn('min-h-10 w-full', filter.disabled && 'pointer-events-none cursor-default select-none')"
|
|
9912
10087
|
[attr.title]="'filters.openFilter' | transloco: { filter: filter.display || filter.name }" />
|
|
9913
10088
|
|
|
9914
10089
|
@if (isDate(filter.column)) {
|
|
@@ -9928,7 +10103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9928
10103
|
|
|
9929
10104
|
<!-- actions fragment -->
|
|
9930
10105
|
<ng-template #actions let-filter="filter" let-agg="agg">
|
|
9931
|
-
<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')">
|
|
9932
10107
|
<!-- aggregation's icon -->
|
|
9933
10108
|
<i class="me-1 fa-fw {{ filter.icon }}" aria-hidden="true"></i>
|
|
9934
10109
|
|
|
@@ -9936,7 +10111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9936
10111
|
<span class="me-4 grow text-sm font-semibold">{{ filter.display || filter.name | transloco }}</span>
|
|
9937
10112
|
@if (filter.count > 0) {
|
|
9938
10113
|
<!-- count -->
|
|
9939
|
-
<Badge
|
|
10114
|
+
<Badge size="xs" variant="primary">
|
|
9940
10115
|
{{ filter.count }}
|
|
9941
10116
|
</Badge>
|
|
9942
10117
|
}
|
|
@@ -9945,7 +10120,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9945
10120
|
<button
|
|
9946
10121
|
variant="ghost"
|
|
9947
10122
|
size="icon"
|
|
9948
|
-
class="z-10
|
|
10123
|
+
class="z-10"
|
|
9949
10124
|
[attr.title]="'filters.clearFilters' | transloco"
|
|
9950
10125
|
(click)="clearFilter(filter.column)"
|
|
9951
10126
|
(keydown.enter)="clearFilter(filter.column)">
|
|
@@ -9961,7 +10136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
9961
10136
|
</ng-template>
|
|
9962
10137
|
}
|
|
9963
10138
|
`, host: {
|
|
9964
|
-
class: 'divide-y divide-
|
|
10139
|
+
class: 'divide-y divide-muted-foreground/18'
|
|
9965
10140
|
}, styles: [":host{scrollbar-width:none}\n"] }]
|
|
9966
10141
|
}], ctorParameters: () => [] });
|
|
9967
10142
|
|
|
@@ -9987,18 +10162,18 @@ class MoreButtonComponent {
|
|
|
9987
10162
|
}, 0);
|
|
9988
10163
|
return total;
|
|
9989
10164
|
}, ...(ngDevMode ? [{ debugName: "totalFiltersCount" }] : []));
|
|
9990
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
9991
|
-
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: `
|
|
9992
10167
|
<Popover class="group">
|
|
9993
10168
|
<button
|
|
9994
10169
|
variant="ghost"
|
|
9995
|
-
class="
|
|
10170
|
+
class="group-data-[open=true]:border-foreground/18 gap-1 truncate font-semibold group-data-[open=true]:border"
|
|
9996
10171
|
aria-label="more filters">
|
|
9997
10172
|
<i class="far fa-filters" aria-hidden="true"></i>
|
|
9998
10173
|
<span>{{ 'filters.moreFilters' | transloco }}</span>
|
|
9999
10174
|
|
|
10000
10175
|
@if (totalFiltersCount() > 0) {
|
|
10001
|
-
<Badge
|
|
10176
|
+
<Badge size="xs" variant="primary">
|
|
10002
10177
|
{{ totalFiltersCount() }}
|
|
10003
10178
|
</Badge>
|
|
10004
10179
|
}
|
|
@@ -10008,21 +10183,21 @@ class MoreButtonComponent {
|
|
|
10008
10183
|
<More [count]="count()" [excludedFilters]="excludedFilters()" class="h-full max-w-80 overflow-y-scroll" />
|
|
10009
10184
|
</PopoverContent>
|
|
10010
10185
|
</Popover>
|
|
10011
|
-
`, 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" }] });
|
|
10012
10187
|
}
|
|
10013
|
-
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: [{
|
|
10014
10189
|
type: Component,
|
|
10015
10190
|
args: [{ selector: 'more-button, MoreButton', standalone: true, imports: [ButtonComponent, PopoverComponent, PopoverContentComponent, TranslocoPipe, MoreComponent, BadgeComponent], template: `
|
|
10016
10191
|
<Popover class="group">
|
|
10017
10192
|
<button
|
|
10018
10193
|
variant="ghost"
|
|
10019
|
-
class="
|
|
10194
|
+
class="group-data-[open=true]:border-foreground/18 gap-1 truncate font-semibold group-data-[open=true]:border"
|
|
10020
10195
|
aria-label="more filters">
|
|
10021
10196
|
<i class="far fa-filters" aria-hidden="true"></i>
|
|
10022
10197
|
<span>{{ 'filters.moreFilters' | transloco }}</span>
|
|
10023
10198
|
|
|
10024
10199
|
@if (totalFiltersCount() > 0) {
|
|
10025
|
-
<Badge
|
|
10200
|
+
<Badge size="xs" variant="primary">
|
|
10026
10201
|
{{ totalFiltersCount() }}
|
|
10027
10202
|
</Badge>
|
|
10028
10203
|
}
|
|
@@ -10038,6 +10213,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
10038
10213
|
class FiltersBarComponent {
|
|
10039
10214
|
class = input(...(ngDevMode ? [undefined, { debugName: "class" }] : []));
|
|
10040
10215
|
position = input('bottom-start', ...(ngDevMode ? [{ debugName: "position" }] : []));
|
|
10216
|
+
morePosition = input('bottom-end', ...(ngDevMode ? [{ debugName: "morePosition" }] : []));
|
|
10041
10217
|
/**
|
|
10042
10218
|
* Filters that should be excluded from the filters bar.
|
|
10043
10219
|
* This can be used to hide specific filters from the UI.
|
|
@@ -10144,8 +10320,8 @@ class FiltersBarComponent {
|
|
|
10144
10320
|
// filtersCount is the number of filters that can be displayed before the "more filters" option is shown
|
|
10145
10321
|
this.moreFilterCount.set(count > this.filtersCount() ? this.filtersCount() : count);
|
|
10146
10322
|
}
|
|
10147
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10148
|
-
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: `
|
|
10149
10325
|
<ng-container overflowManager [direction]="direction()" [target]="el.nativeElement" (count)="adjustFiltersCount($event)">
|
|
10150
10326
|
@if (hasFilters()) {
|
|
10151
10327
|
<button
|
|
@@ -10176,13 +10352,13 @@ class FiltersBarComponent {
|
|
|
10176
10352
|
overflowStop
|
|
10177
10353
|
[class]="cn('invisible absolute', direction() === 'horizontal' ? 'right-0' : 'bottom-0', hasMoreFilters().length > 0 && 'visible')"
|
|
10178
10354
|
[count]="moreFilterCount()"
|
|
10179
|
-
[position]="
|
|
10355
|
+
[position]="morePosition()"
|
|
10180
10356
|
[excludedFilters]="excludeFilters()" />
|
|
10181
10357
|
}
|
|
10182
10358
|
</ng-container>
|
|
10183
|
-
`, 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" }] });
|
|
10184
10360
|
}
|
|
10185
|
-
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: [{
|
|
10186
10362
|
type: Component,
|
|
10187
10363
|
args: [{
|
|
10188
10364
|
selector: 'filters-bar, FiltersBar, filtersbar',
|
|
@@ -10220,7 +10396,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
10220
10396
|
overflowStop
|
|
10221
10397
|
[class]="cn('invisible absolute', direction() === 'horizontal' ? 'right-0' : 'bottom-0', hasMoreFilters().length > 0 && 'visible')"
|
|
10222
10398
|
[count]="moreFilterCount()"
|
|
10223
|
-
[position]="
|
|
10399
|
+
[position]="morePosition()"
|
|
10224
10400
|
[excludedFilters]="excludeFilters()" />
|
|
10225
10401
|
}
|
|
10226
10402
|
</ng-container>
|
|
@@ -10330,46 +10506,46 @@ class DrawerStackComponent {
|
|
|
10330
10506
|
drawer?.destroy();
|
|
10331
10507
|
}, 250);
|
|
10332
10508
|
}
|
|
10333
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10334
|
-
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"] });
|
|
10335
10511
|
}
|
|
10336
|
-
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: [{
|
|
10337
10513
|
type: Component,
|
|
10338
|
-
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"] }]
|
|
10339
10515
|
}], ctorParameters: () => [{ type: i0.DestroyRef }], propDecorators: { drawerOpened: [{
|
|
10340
10516
|
type: HostBinding,
|
|
10341
10517
|
args: ['attr.drawer-opened']
|
|
10342
10518
|
}] } });
|
|
10343
10519
|
|
|
10344
10520
|
class DrawerService {
|
|
10345
|
-
isOpened =
|
|
10346
|
-
isExtended =
|
|
10521
|
+
isOpened = signal(false, ...(ngDevMode ? [{ debugName: "isOpened" }] : []));
|
|
10522
|
+
isExtended = signal(false, ...(ngDevMode ? [{ debugName: "isExtended" }] : []));
|
|
10347
10523
|
backdrop = inject(BackdropService);
|
|
10348
10524
|
open() {
|
|
10349
|
-
this.isOpened.
|
|
10525
|
+
this.isOpened.set(true);
|
|
10350
10526
|
}
|
|
10351
10527
|
close() {
|
|
10352
10528
|
this.collapse();
|
|
10353
|
-
this.isOpened.
|
|
10529
|
+
this.isOpened.set(false);
|
|
10354
10530
|
}
|
|
10355
10531
|
toggle() {
|
|
10356
|
-
this.isOpened
|
|
10532
|
+
this.isOpened() ? this.close() : this.open();
|
|
10357
10533
|
}
|
|
10358
10534
|
extend() {
|
|
10359
|
-
this.isExtended.
|
|
10535
|
+
this.isExtended.set(true);
|
|
10360
10536
|
this.backdrop.show();
|
|
10361
10537
|
}
|
|
10362
10538
|
collapse() {
|
|
10363
10539
|
this.backdrop.hide();
|
|
10364
|
-
this.isExtended.
|
|
10540
|
+
this.isExtended.set(false);
|
|
10365
10541
|
}
|
|
10366
10542
|
toggleExtension() {
|
|
10367
|
-
this.isExtended
|
|
10543
|
+
this.isExtended() ? this.collapse() : this.extend();
|
|
10368
10544
|
}
|
|
10369
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10370
|
-
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 });
|
|
10371
10547
|
}
|
|
10372
|
-
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: [{
|
|
10373
10549
|
type: Injectable
|
|
10374
10550
|
}] });
|
|
10375
10551
|
|
|
@@ -10410,14 +10586,14 @@ class DrawerComponent {
|
|
|
10410
10586
|
afterNextRender(() => {
|
|
10411
10587
|
this.drawerGridTemplateColumns = this.element.style.gridTemplateColumns;
|
|
10412
10588
|
});
|
|
10413
|
-
|
|
10414
|
-
this.drawerOpened.set(
|
|
10415
|
-
if (!
|
|
10589
|
+
effect(() => {
|
|
10590
|
+
this.drawerOpened.set(this.drawer.isOpened());
|
|
10591
|
+
if (!this.drawer.isOpened())
|
|
10416
10592
|
this.resetGridTemplateColumns();
|
|
10417
10593
|
});
|
|
10418
|
-
|
|
10419
|
-
this.drawerExtended.set(
|
|
10420
|
-
if (!
|
|
10594
|
+
effect(() => {
|
|
10595
|
+
this.drawerExtended.set(this.drawer.isExtended());
|
|
10596
|
+
if (!this.drawer.isExtended())
|
|
10421
10597
|
this.resetGridTemplateColumns();
|
|
10422
10598
|
});
|
|
10423
10599
|
}
|
|
@@ -10430,12 +10606,12 @@ class DrawerComponent {
|
|
|
10430
10606
|
resetGridTemplateColumns() {
|
|
10431
10607
|
this.element.style.gridTemplateColumns = this.defaultDrawerGridTemplate;
|
|
10432
10608
|
}
|
|
10433
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10434
|
-
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"] });
|
|
10435
10611
|
}
|
|
10436
|
-
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: [{
|
|
10437
10613
|
type: Component,
|
|
10438
|
-
args: [{ selector: '
|
|
10614
|
+
args: [{ selector: 'Drawer, drawer', standalone: true, providers: [DrawerService], template: ``, host: {
|
|
10439
10615
|
'[attr.drawer-opened]': 'drawerOpened()',
|
|
10440
10616
|
'[attr.drawer-extended]': 'drawerExtended()'
|
|
10441
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"] }]
|
|
@@ -10456,13 +10632,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
10456
10632
|
class DrawerNavbarComponent {
|
|
10457
10633
|
drawerStack = inject(DrawerStackService);
|
|
10458
10634
|
drawerService = inject(DrawerService);
|
|
10459
|
-
isExtended =
|
|
10460
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10461
|
-
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" }] });
|
|
10462
10638
|
}
|
|
10463
|
-
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: [{
|
|
10464
10640
|
type: Component,
|
|
10465
|
-
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" }]
|
|
10466
10642
|
}] });
|
|
10467
10643
|
|
|
10468
10644
|
const searchRoute = 'search';
|
|
@@ -10470,6 +10646,7 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
10470
10646
|
queryParamsStore = inject(QueryParamsStore);
|
|
10471
10647
|
appStore = inject(AppStore);
|
|
10472
10648
|
router = inject(Router);
|
|
10649
|
+
route = inject(ActivatedRoute);
|
|
10473
10650
|
formBuilder = inject(NonNullableFormBuilder);
|
|
10474
10651
|
overlay = inject(Overlay);
|
|
10475
10652
|
transloco = inject(TranslocoService);
|
|
@@ -10491,10 +10668,6 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
10491
10668
|
title: this.formBuilder.group({
|
|
10492
10669
|
operator: this.formBuilder.control('all'),
|
|
10493
10670
|
value: this.formBuilder.control(undefined)
|
|
10494
|
-
}),
|
|
10495
|
-
location: this.formBuilder.group({
|
|
10496
|
-
operator: this.formBuilder.control('all'),
|
|
10497
|
-
value: this.formBuilder.control(undefined)
|
|
10498
10671
|
})
|
|
10499
10672
|
});
|
|
10500
10673
|
currentTab = signal('all', ...(ngDevMode ? [{ debugName: "currentTab" }] : []));
|
|
@@ -10504,17 +10677,30 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
10504
10677
|
aggregations = signal(undefined, ...(ngDevMode ? [{ debugName: "aggregations" }] : []));
|
|
10505
10678
|
tabs = computed(() => {
|
|
10506
10679
|
const routeData = this.router.config.find(c => c.path === searchRoute);
|
|
10507
|
-
return !routeData
|
|
10680
|
+
return !routeData
|
|
10681
|
+
? []
|
|
10682
|
+
: [{ path: 'all', display: 'All' }].concat(routeData.children.filter(c => !!c.path && c.path !== 'all' && c.path !== '**').map(c => ({ path: c.path, display: c.data?.['display'] })));
|
|
10508
10683
|
}, ...(ngDevMode ? [{ debugName: "tabs" }] : []));
|
|
10509
10684
|
filters = computed(() => {
|
|
10510
|
-
|
|
10685
|
+
const cjsonFilters = this.appStore
|
|
10511
10686
|
.customizationJson()
|
|
10512
10687
|
.filters?.filter(f => f.column !== '#date')
|
|
10513
10688
|
.map(f => ({
|
|
10514
10689
|
column: f.column,
|
|
10515
10690
|
alias: this.appStore.getColumnAlias(f.column),
|
|
10691
|
+
display: f.display,
|
|
10692
|
+
items: this.aggregations()?.find(a => a.column === f.column)?.items
|
|
10693
|
+
})) || [];
|
|
10694
|
+
const appStoreFilters = this.appStore
|
|
10695
|
+
.getAuthorizedFilters(this.route)
|
|
10696
|
+
.filter(f => !cjsonFilters.some(cf => cf.column === f.column))
|
|
10697
|
+
.map((f) => ({
|
|
10698
|
+
column: f.column,
|
|
10699
|
+
alias: this.appStore.getColumnAlias(f.column),
|
|
10700
|
+
display: f.display,
|
|
10516
10701
|
items: this.aggregations()?.find(a => a.column === f.column)?.items
|
|
10517
|
-
})) || []
|
|
10702
|
+
})) || [];
|
|
10703
|
+
return cjsonFilters.concat(appStoreFilters);
|
|
10518
10704
|
}, ...(ngDevMode ? [{ debugName: "filters" }] : []));
|
|
10519
10705
|
text = '';
|
|
10520
10706
|
constructor() {
|
|
@@ -10534,7 +10720,7 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
10534
10720
|
}
|
|
10535
10721
|
onSearch() {
|
|
10536
10722
|
// this params alters the query text
|
|
10537
|
-
const { content, title
|
|
10723
|
+
const { content, title } = this.form.value;
|
|
10538
10724
|
let fieldedText = [];
|
|
10539
10725
|
if (content && content.value) {
|
|
10540
10726
|
const { operator = 'any', value = '' } = content;
|
|
@@ -10546,11 +10732,6 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
10546
10732
|
const text = this.formatFilter(operator, value, 'title');
|
|
10547
10733
|
fieldedText.push(text);
|
|
10548
10734
|
}
|
|
10549
|
-
if (location && location.value) {
|
|
10550
|
-
const { operator = 'any', value = '' } = location;
|
|
10551
|
-
const text = this.formatFilter(operator, value, 'location');
|
|
10552
|
-
fieldedText.push(text);
|
|
10553
|
-
}
|
|
10554
10735
|
let text = this.text;
|
|
10555
10736
|
// now we have to join the fieldedText with the text
|
|
10556
10737
|
// if text is empty, we must remove the leading space
|
|
@@ -10612,7 +10793,7 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
10612
10793
|
}
|
|
10613
10794
|
}
|
|
10614
10795
|
}
|
|
10615
|
-
/** Format content/title
|
|
10796
|
+
/** Format content/title filters */
|
|
10616
10797
|
formatFilter(operator, value, field = '') {
|
|
10617
10798
|
const fieldStr = field ? `${field}::` : '';
|
|
10618
10799
|
switch (operator) {
|
|
@@ -10649,7 +10830,10 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
10649
10830
|
/** add item to current selection */
|
|
10650
10831
|
addItem(item, filter) {
|
|
10651
10832
|
const appliedFilter = this.appliedFilters().find(af => af.column === filter.column);
|
|
10652
|
-
if (!appliedFilter
|
|
10833
|
+
if (!appliedFilter) {
|
|
10834
|
+
this.appliedFilters.set(this.appliedFilters().concat([{ column: filter.column, values: [item] }]));
|
|
10835
|
+
}
|
|
10836
|
+
else if (!appliedFilter.values.some(v => v.value === item.value)) {
|
|
10653
10837
|
appliedFilter.values.push(item);
|
|
10654
10838
|
}
|
|
10655
10839
|
}
|
|
@@ -10679,31 +10863,19 @@ class DrawerAdvancedFiltersComponent extends DrawerComponent {
|
|
|
10679
10863
|
// todo handle tree items
|
|
10680
10864
|
return res;
|
|
10681
10865
|
}
|
|
10682
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10683
|
-
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" }] });
|
|
10684
10868
|
}
|
|
10685
|
-
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: [{
|
|
10686
10870
|
type: Component,
|
|
10687
|
-
args: [{ selector: 'advanced-filters', standalone: true, imports: [ReactiveFormsModule, TranslocoPipe, 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"] }]
|
|
10688
10872
|
}], ctorParameters: () => [] });
|
|
10689
10873
|
|
|
10690
|
-
class
|
|
10691
|
-
|
|
10692
|
-
destroyRef = inject(DestroyRef);
|
|
10693
|
-
labels = inject(AppStore).getLabels();
|
|
10694
|
-
applicationStore = inject(ApplicationStore);
|
|
10874
|
+
class EntitiesPanel {
|
|
10875
|
+
cn = cn;
|
|
10695
10876
|
appStore = inject(AppStore);
|
|
10696
|
-
selectionStore = inject(SelectionStore);
|
|
10697
10877
|
previewService = inject(PreviewService);
|
|
10698
|
-
|
|
10699
|
-
input = signal(getState(this.selectionStore).queryText || '', ...(ngDevMode ? [{ debugName: "input" }] : []));
|
|
10700
|
-
extracts = computed(() => {
|
|
10701
|
-
getState(this.applicationStore);
|
|
10702
|
-
if (!this.article())
|
|
10703
|
-
return [];
|
|
10704
|
-
return this.applicationStore.getExtracts(this.article().id);
|
|
10705
|
-
}, ...(ngDevMode ? [{ debugName: "extracts" }] : []));
|
|
10706
|
-
similarDocuments = signal([], ...(ngDevMode ? [{ debugName: "similarDocuments" }] : []));
|
|
10878
|
+
article = input.required(...(ngDevMode ? [{ debugName: "article" }] : []));
|
|
10707
10879
|
previewHighlights = computed(() => {
|
|
10708
10880
|
const highlights = this.appStore.getWebServiceByType('preview')?.highlights
|
|
10709
10881
|
?.split(',')
|
|
@@ -10717,42 +10889,10 @@ class AdvancedSearchComponent {
|
|
|
10717
10889
|
navigation = signal(undefined, ...(ngDevMode ? [{ debugName: "navigation" }] : []));
|
|
10718
10890
|
hovering = signal(undefined, ...(ngDevMode ? [{ debugName: "hovering" }] : []));
|
|
10719
10891
|
hoverIndex = computed(() => (this.navigation()?.value === this.hovering() ? this.navigation().index : 0), ...(ngDevMode ? [{ debugName: "hoverIndex" }] : []));
|
|
10720
|
-
hasLabels = computed(() => {
|
|
10721
|
-
const article = this.article(); // required as any otherwise the lines below won't compile
|
|
10722
|
-
const publicLabels = article[this.labels.public];
|
|
10723
|
-
const privateLabels = article[this.labels.private];
|
|
10724
|
-
return (publicLabels && publicLabels.length > 0) || (privateLabels && privateLabels.length > 0);
|
|
10725
|
-
}, ...(ngDevMode ? [{ debugName: "hasLabels" }] : []));
|
|
10726
|
-
loading = signal(true, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
10727
|
-
constructor() {
|
|
10728
|
-
this.previewService.events.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(event => {
|
|
10729
|
-
switch (event) {
|
|
10730
|
-
case 'fetching':
|
|
10731
|
-
this.loading.set(true);
|
|
10732
|
-
break;
|
|
10733
|
-
default:
|
|
10734
|
-
this.loading.set(false);
|
|
10735
|
-
break;
|
|
10736
|
-
}
|
|
10737
|
-
});
|
|
10738
|
-
effect(() => {
|
|
10739
|
-
const id = this.article().id;
|
|
10740
|
-
untracked(() => {
|
|
10741
|
-
const queryName = this.queryParamsStore.getQuery().name;
|
|
10742
|
-
fetchSimilarDocuments(id, queryName).then(res => this.similarDocuments.set(res.data));
|
|
10743
|
-
});
|
|
10744
|
-
});
|
|
10745
|
-
}
|
|
10746
|
-
executeSearch() {
|
|
10747
|
-
this.selectionStore.update({ queryText: this.input() });
|
|
10748
|
-
}
|
|
10749
|
-
clearInput() {
|
|
10750
|
-
this.input.set('');
|
|
10751
|
-
}
|
|
10752
10892
|
scrollTo(type, index, usePassageHighlighter = false) {
|
|
10753
10893
|
// if previewData contains "matchingpassages" then we use the passage highlighter otherwise we use "extractslocations"
|
|
10754
10894
|
const category = type || this.previewService.highlightCategory;
|
|
10755
|
-
this.previewService.events.
|
|
10895
|
+
this.previewService.events.set('scrollTo');
|
|
10756
10896
|
this.previewService.sendMessage({ action: 'select', id: `${category}_${index}`, usePassageHighlighter });
|
|
10757
10897
|
}
|
|
10758
10898
|
navigateNext(entity, data) {
|
|
@@ -10777,14 +10917,399 @@ class AdvancedSearchComponent {
|
|
|
10777
10917
|
this.scrollTo(entity, id);
|
|
10778
10918
|
}
|
|
10779
10919
|
}
|
|
10780
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10781
|
-
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" }] });
|
|
10782
11088
|
}
|
|
10783
|
-
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: [{
|
|
10784
11090
|
type: Component,
|
|
10785
|
-
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
|
+
}]
|
|
10786
11123
|
}], ctorParameters: () => [] });
|
|
10787
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
|
+
|
|
10788
11313
|
const COMPONENTS_FOR_DOCUMENT_TYPE = new InjectionToken('COMPONENTS_FOR_DOCUMENT_TYPE');
|
|
10789
11314
|
const GLOBAL_QUERY_NAME = new InjectionToken('GLOBAL_QUERY_NAME', {
|
|
10790
11315
|
factory() {
|
|
@@ -10799,69 +11324,44 @@ const GLOBAL_QUERY_NAME = new InjectionToken('GLOBAL_QUERY_NAME', {
|
|
|
10799
11324
|
class DrawerPreviewComponent extends DrawerComponent {
|
|
10800
11325
|
globalQueryName;
|
|
10801
11326
|
destroyRef;
|
|
11327
|
+
/* injections */
|
|
10802
11328
|
injector = inject(Injector);
|
|
10803
11329
|
appStore = inject(AppStore);
|
|
10804
11330
|
selectionStore = inject(SelectionStore);
|
|
10805
11331
|
queryParamsStore = inject(QueryParamsStore);
|
|
10806
11332
|
previewService = inject(PreviewService);
|
|
10807
11333
|
getComponentsForDocumentType = inject(COMPONENTS_FOR_DOCUMENT_TYPE);
|
|
11334
|
+
/* inputs */
|
|
11335
|
+
articleId = input.required(...(ngDevMode ? [{ debugName: "articleId" }] : []));
|
|
11336
|
+
/* computed signals */
|
|
10808
11337
|
queryText = computed(() => {
|
|
10809
11338
|
const { queryText } = getState(this.selectionStore);
|
|
10810
11339
|
const { text } = getState(this.queryParamsStore);
|
|
10811
11340
|
return queryText ?? text;
|
|
10812
11341
|
}, ...(ngDevMode ? [{ debugName: "queryText" }] : []));
|
|
10813
|
-
|
|
10814
|
-
|
|
10815
|
-
|
|
10816
|
-
|
|
10817
|
-
previewType = computed(() => {
|
|
10818
|
-
return this.getComponentsForDocumentType(this.article()?.docformat || '').previewComponent;
|
|
10819
|
-
}, ...(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" }] : []));
|
|
10820
11347
|
constructor(globalQueryName, destroyRef) {
|
|
10821
11348
|
super();
|
|
10822
11349
|
this.globalQueryName = globalQueryName;
|
|
10823
11350
|
this.destroyRef = destroyRef;
|
|
10824
11351
|
this.destroyRef.onDestroy(() => {
|
|
10825
|
-
|
|
10826
|
-
|
|
10827
|
-
|
|
10828
|
-
const articleId = this.articleId();
|
|
10829
|
-
const text = this.queryText();
|
|
10830
|
-
untracked(async () => {
|
|
10831
|
-
const state = getState(this.selectionStore);
|
|
10832
|
-
try {
|
|
10833
|
-
const previewData = await firstValueFrom(this.previewService.preview(articleId, {
|
|
10834
|
-
name: this.globalQueryName,
|
|
10835
|
-
text
|
|
10836
|
-
}, state.previewHighlights?.highlights));
|
|
10837
|
-
this.previewData.set(previewData);
|
|
10838
|
-
}
|
|
10839
|
-
catch (err) {
|
|
10840
|
-
this.previewData.set(undefined);
|
|
10841
|
-
if (err.status === 401) {
|
|
10842
|
-
error('preview service 401: ', err);
|
|
10843
|
-
this.drawerStack.close();
|
|
10844
|
-
runInInjectionContext(this.injector, () => signIn().then(() => {
|
|
10845
|
-
const { useCredentials } = globalConfig;
|
|
10846
|
-
if (!useCredentials) {
|
|
10847
|
-
notify.success('You have been signed in.');
|
|
10848
|
-
}
|
|
10849
|
-
}));
|
|
10850
|
-
}
|
|
10851
|
-
else {
|
|
10852
|
-
error('Error fetching preview data:', err);
|
|
10853
|
-
throw err;
|
|
10854
|
-
}
|
|
10855
|
-
}
|
|
10856
|
-
});
|
|
11352
|
+
if (this.articleId()) {
|
|
11353
|
+
this.previewService.close(this.articleId(), { name: this.globalQueryName });
|
|
11354
|
+
}
|
|
10857
11355
|
});
|
|
10858
11356
|
}
|
|
10859
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.
|
|
10860
|
-
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"] }] });
|
|
10861
11359
|
}
|
|
10862
|
-
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: [{
|
|
10863
11361
|
type: Component,
|
|
10864
|
-
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"] }]
|
|
10865
11365
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
10866
11366
|
type: Inject,
|
|
10867
11367
|
args: [GLOBAL_QUERY_NAME]
|
|
@@ -10875,5 +11375,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImpor
|
|
|
10875
11375
|
* Generated bundle index. Do not edit.
|
|
10876
11376
|
*/
|
|
10877
11377
|
|
|
10878
|
-
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 };
|
|
10879
11379
|
//# sourceMappingURL=sinequa-atomic-angular.mjs.map
|