@ecodev/natural 60.1.1 → 61.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/classes/abstract-detail.mjs +2 -3
- package/esm2022/lib/classes/abstract-editable-list.mjs +3 -5
- package/esm2022/lib/classes/abstract-list.mjs +6 -5
- package/esm2022/lib/classes/abstract-navigable-list.mjs +4 -3
- package/esm2022/lib/classes/rxjs.mjs +11 -5
- package/esm2022/lib/modules/alert/alert.service.mjs +9 -9
- package/esm2022/lib/modules/alert/confirm.component.mjs +6 -9
- package/esm2022/lib/modules/avatar/component/avatar.component.mjs +9 -9
- package/esm2022/lib/modules/columns-picker/columns-picker.component.mjs +30 -35
- package/esm2022/lib/modules/columns-picker/public-api.mjs +1 -1
- package/esm2022/lib/modules/common/directives/background-density.directive.mjs +7 -7
- package/esm2022/lib/modules/common/directives/linkable-tab.directive.mjs +16 -19
- package/esm2022/lib/modules/common/directives/src-density.directive.mjs +7 -7
- package/esm2022/lib/modules/common/pipes/enum.pipe.mjs +7 -7
- package/esm2022/lib/modules/common/public-api.mjs +2 -2
- package/esm2022/lib/modules/common/services/seo.service.mjs +13 -22
- package/esm2022/lib/modules/dialog-trigger/dialog-trigger.component.mjs +10 -10
- package/esm2022/lib/modules/dropdown-components/public-api.mjs +3 -3
- package/esm2022/lib/modules/dropdown-components/type-boolean/type-boolean.component.mjs +10 -13
- package/esm2022/lib/modules/dropdown-components/type-date/type-date.component.mjs +14 -19
- package/esm2022/lib/modules/dropdown-components/type-date-range/type-date-range.component.mjs +14 -20
- package/esm2022/lib/modules/dropdown-components/type-number/type-number.component.mjs +14 -16
- package/esm2022/lib/modules/dropdown-components/type-options/type-options.component.mjs +10 -10
- package/esm2022/lib/modules/dropdown-components/type-select/type-select.component.mjs +14 -16
- package/esm2022/lib/modules/dropdown-components/type-text/type-text.component.mjs +12 -14
- package/esm2022/lib/modules/file/abstract-file.mjs +3 -6
- package/esm2022/lib/modules/file/component/file.component.mjs +14 -17
- package/esm2022/lib/modules/file/file-drop.directive.mjs +6 -4
- package/esm2022/lib/modules/file/file.service.mjs +6 -9
- package/esm2022/lib/modules/file/public-api.mjs +1 -1
- package/esm2022/lib/modules/fixed-button-detail/fixed-button-detail.component.mjs +9 -8
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.mjs +19 -20
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.mjs +6 -6
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.mjs +8 -10
- package/esm2022/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.mjs +7 -7
- package/esm2022/lib/modules/icon/icon.directive.mjs +12 -20
- package/esm2022/lib/modules/logger/error-handler.mjs +10 -24
- package/esm2022/lib/modules/logger/public-api.mjs +2 -2
- package/esm2022/lib/modules/matomo/matomo.service.mjs +11 -19
- package/esm2022/lib/modules/panels/abstract-panel.mjs +9 -9
- package/esm2022/lib/modules/panels/panels.component.mjs +9 -8
- package/esm2022/lib/modules/panels/panels.service.mjs +13 -17
- package/esm2022/lib/modules/relations/relations.component.mjs +34 -34
- package/esm2022/lib/modules/search/dropdown-container/dropdown-container.component.mjs +12 -15
- package/esm2022/lib/modules/search/dropdown-container/dropdown.service.mjs +8 -9
- package/esm2022/lib/modules/search/facet-selector/facet-selector.component.mjs +11 -14
- package/esm2022/lib/modules/search/input/input.component.mjs +26 -27
- package/esm2022/lib/modules/search/public-api.mjs +1 -1
- package/esm2022/lib/modules/search/search/search.component.mjs +19 -20
- package/esm2022/lib/modules/select/abstract-select.component.mjs +3 -5
- package/esm2022/lib/modules/select/select/select.component.mjs +7 -5
- package/esm2022/lib/modules/select/select-enum/select-enum.component.mjs +15 -18
- package/esm2022/lib/modules/select/select-hierarchic/select-hierarchic.component.mjs +16 -19
- package/esm2022/lib/modules/sidenav/sidenav-container/sidenav-container.component.mjs +9 -10
- package/esm2022/lib/modules/sidenav/sidenav.service.mjs +18 -23
- package/esm2022/lib/services/enum.service.mjs +7 -8
- package/esm2022/lib/services/link-mutation.service.mjs +7 -8
- package/esm2022/lib/services/persistence.service.mjs +9 -19
- package/esm2022/public-api.mjs +2 -3
- package/fesm2022/ecodev-natural.mjs +377 -504
- package/fesm2022/ecodev-natural.mjs.map +1 -1
- package/lib/classes/abstract-detail.d.ts +0 -1
- package/lib/classes/abstract-editable-list.d.ts +1 -2
- package/lib/classes/abstract-list.d.ts +2 -2
- package/lib/classes/abstract-navigable-list.d.ts +2 -2
- package/lib/classes/rxjs.d.ts +9 -2
- package/lib/modules/alert/alert.service.d.ts +1 -3
- package/lib/modules/alert/confirm.component.d.ts +1 -2
- package/lib/modules/avatar/component/avatar.component.d.ts +0 -2
- package/lib/modules/columns-picker/columns-picker.component.d.ts +3 -6
- package/lib/modules/columns-picker/public-api.d.ts +1 -1
- package/lib/modules/common/directives/background-density.directive.d.ts +0 -2
- package/lib/modules/common/directives/linkable-tab.directive.d.ts +3 -5
- package/lib/modules/common/directives/src-density.directive.d.ts +0 -2
- package/lib/modules/common/pipes/enum.pipe.d.ts +0 -2
- package/lib/modules/common/public-api.d.ts +2 -1
- package/lib/modules/common/services/seo.service.d.ts +2 -3
- package/lib/modules/dialog-trigger/dialog-trigger.component.d.ts +3 -3
- package/lib/modules/dropdown-components/public-api.d.ts +9 -9
- package/lib/modules/dropdown-components/type-boolean/type-boolean.component.d.ts +1 -3
- package/lib/modules/dropdown-components/type-date/type-date.component.d.ts +1 -3
- package/lib/modules/dropdown-components/type-date-range/type-date-range.component.d.ts +2 -3
- package/lib/modules/dropdown-components/type-number/type-number.component.d.ts +1 -2
- package/lib/modules/dropdown-components/type-options/type-options.component.d.ts +3 -3
- package/lib/modules/dropdown-components/type-select/type-select.component.d.ts +4 -5
- package/lib/modules/dropdown-components/type-text/type-text.component.d.ts +1 -2
- package/lib/modules/file/abstract-file.d.ts +1 -2
- package/lib/modules/file/component/file.component.d.ts +0 -3
- package/lib/modules/file/file-drop.directive.d.ts +1 -0
- package/lib/modules/file/file.service.d.ts +0 -1
- package/lib/modules/file/public-api.d.ts +1 -1
- package/lib/modules/fixed-button-detail/fixed-button-detail.component.d.ts +1 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.component.d.ts +3 -4
- package/lib/modules/hierarchic-selector/hierarchic-selector/hierarchic-selector.service.d.ts +0 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.component.d.ts +1 -2
- package/lib/modules/hierarchic-selector/hierarchic-selector-dialog/hierarchic-selector-dialog.service.d.ts +1 -2
- package/lib/modules/icon/icon.directive.d.ts +3 -5
- package/lib/modules/logger/error-handler.d.ts +3 -4
- package/lib/modules/logger/public-api.d.ts +2 -1
- package/lib/modules/matomo/matomo.service.d.ts +2 -5
- package/lib/modules/panels/abstract-panel.d.ts +3 -2
- package/lib/modules/panels/panels.component.d.ts +1 -3
- package/lib/modules/panels/panels.service.d.ts +2 -6
- package/lib/modules/relations/relations.component.d.ts +4 -6
- package/lib/modules/search/dropdown-container/dropdown-container.component.d.ts +3 -4
- package/lib/modules/search/dropdown-container/dropdown.service.d.ts +1 -3
- package/lib/modules/search/facet-selector/facet-selector.component.d.ts +1 -2
- package/lib/modules/search/input/input.component.d.ts +1 -3
- package/lib/modules/search/public-api.d.ts +5 -5
- package/lib/modules/search/search/search.component.d.ts +0 -2
- package/lib/modules/select/abstract-select.component.d.ts +2 -3
- package/lib/modules/select/select/select.component.d.ts +3 -2
- package/lib/modules/select/select-enum/select-enum.component.d.ts +4 -4
- package/lib/modules/select/select-hierarchic/select-hierarchic.component.d.ts +6 -6
- package/lib/modules/sidenav/sidenav-container/sidenav-container.component.d.ts +0 -1
- package/lib/modules/sidenav/sidenav.service.d.ts +3 -8
- package/lib/services/enum.service.d.ts +0 -2
- package/lib/services/link-mutation.service.d.ts +0 -2
- package/lib/services/persistence.service.d.ts +2 -4
- package/package.json +1 -1
- package/public-api.d.ts +3 -3
- package/esm2022/lib/classes/abstract-controller.mjs +0 -31
- package/lib/classes/abstract-controller.d.ts +0 -21
|
@@ -1,129 +1,92 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { FormGroup, FormArray, Validators, UntypedFormGroup, UntypedFormArray, FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl, FormControlDirective, FormControlName } from '@angular/forms';
|
|
6
|
-
import * as i2$3 from '@angular/router';
|
|
2
|
+
import { inject, Component, Injectable, DestroyRef, Directive, HostBinding, HostListener, InjectionToken, ElementRef, TemplateRef, ViewEncapsulation, ViewChild, Injector, Input, EventEmitter, Output, Pipe, Optional, Inject, LOCALE_ID, APP_INITIALIZER, Self, ContentChild, EnvironmentInjector, createEnvironmentInjector, createComponent, runInInjectionContext, PLATFORM_ID, ErrorHandler, importProvidersFrom } from '@angular/core';
|
|
3
|
+
import * as i1$2 from '@angular/forms';
|
|
4
|
+
import { FormGroup, FormArray, Validators, UntypedFormGroup, UntypedFormArray, FormControl, FormsModule, ReactiveFormsModule, UntypedFormControl, FormControlDirective, FormControlName, NgControl } from '@angular/forms';
|
|
7
5
|
import { ActivatedRoute, Router, NavigationStart, NavigationEnd, RouteConfigLoadStart, RouteConfigLoadEnd, PRIMARY_OUTLET, RouterLink, NavigationError, DefaultUrlSerializer, UrlTree } from '@angular/router';
|
|
8
6
|
import { pickBy, cloneDeep, uniq, groupBy, mergeWith, defaultsDeep, omit, isEqual, kebabCase, merge, clone, pick, defaults, isEmpty, isObject, intersection, flatten, differenceWith } from 'lodash-es';
|
|
9
7
|
import * as i1 from '@angular/material/dialog';
|
|
10
|
-
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
11
|
-
import
|
|
8
|
+
import { MAT_DIALOG_DATA, MatDialogModule, MatDialog, MatDialogRef } from '@angular/material/dialog';
|
|
9
|
+
import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';
|
|
10
|
+
import * as i2 from '@angular/material/button';
|
|
12
11
|
import { MatButtonModule } from '@angular/material/button';
|
|
13
|
-
import
|
|
14
|
-
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
15
|
-
import { switchMap, first, map, filter, takeUntil as takeUntil$1, takeWhile, debounceTime as debounceTime$1, tap as tap$1, shareReplay as shareReplay$1, startWith, distinctUntilChanged, finalize as finalize$1, throttleTime } from 'rxjs/operators';
|
|
12
|
+
import { Observable, BehaviorSubject, of, timer, switchMap as switchMap$1, tap, endWith, last, EMPTY, finalize, Subject, merge as merge$1, first as first$1, take, takeUntil as takeUntil$1, map as map$1, ReplaySubject, debounceTime, raceWith, mergeMap, shareReplay, catchError, forkJoin, combineLatest, from, startWith as startWith$1, filter as filter$1, asyncScheduler } from 'rxjs';
|
|
16
13
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
17
|
-
import
|
|
14
|
+
import { switchMap, first, map, filter, takeUntil, takeWhile, debounceTime as debounceTime$1, tap as tap$1, shareReplay as shareReplay$1, startWith, distinctUntilChanged, finalize as finalize$1, throttleTime } from 'rxjs/operators';
|
|
15
|
+
import * as i2$2 from '@angular/material/table';
|
|
18
16
|
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
|
19
17
|
import { DataSource, SelectionModel } from '@angular/cdk/collections';
|
|
20
|
-
import * as
|
|
21
|
-
import { MAT_DATE_FORMATS, MatOptionModule, NativeDateAdapter, ErrorStateMatcher, MatRipple, MatRippleModule } from '@angular/material/core';
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
import * as i2$1 from '@angular/cdk/portal';
|
|
18
|
+
import * as i4 from '@angular/material/core';
|
|
19
|
+
import { DateAdapter, MAT_DATE_FORMATS, MatOptionModule, NativeDateAdapter, ErrorStateMatcher, MatRipple, MatRippleModule } from '@angular/material/core';
|
|
20
|
+
import { Overlay, OverlayConfig } from '@angular/cdk/overlay';
|
|
21
|
+
import * as i1$1 from '@angular/cdk/portal';
|
|
25
22
|
import { BasePortalOutlet, CdkPortalOutlet, PortalModule, ComponentPortal } from '@angular/cdk/portal';
|
|
23
|
+
import { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';
|
|
26
24
|
import { trigger, state, style, transition, sequence, query, animate, group } from '@angular/animations';
|
|
27
|
-
import * as i1$1 from '@angular/cdk/a11y';
|
|
28
25
|
import * as i7 from '@angular/material/checkbox';
|
|
29
26
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
30
27
|
import * as i6 from '@angular/material/datepicker';
|
|
31
28
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
32
|
-
import * as
|
|
29
|
+
import * as i5 from '@angular/material/input';
|
|
33
30
|
import { MatInputModule } from '@angular/material/input';
|
|
34
|
-
import * as i3
|
|
31
|
+
import * as i3 from '@angular/material/select';
|
|
35
32
|
import { MatSelectModule } from '@angular/material/select';
|
|
36
|
-
import * as
|
|
33
|
+
import * as i1$3 from '@angular/material/form-field';
|
|
37
34
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
38
35
|
import { ApolloLink, NetworkStatus } from '@apollo/client/core';
|
|
39
36
|
import extractFiles from 'extract-files/extractFiles.mjs';
|
|
40
37
|
import isExtractableFile from 'extract-files/isExtractableFile.mjs';
|
|
41
38
|
import { Kind, OperationTypeNode } from 'graphql/language';
|
|
42
|
-
import * as i1$4 from 'apollo-angular';
|
|
43
39
|
import { Apollo, gql } from 'apollo-angular';
|
|
44
|
-
import
|
|
45
|
-
import
|
|
46
|
-
import * as i7$1 from '@angular/material/tooltip';
|
|
40
|
+
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
|
41
|
+
import * as i6$1 from '@angular/material/tooltip';
|
|
47
42
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
48
|
-
import * as
|
|
49
|
-
import {
|
|
50
|
-
import
|
|
51
|
-
import * as
|
|
43
|
+
import * as i5$1 from '@angular/material/icon';
|
|
44
|
+
import { MatIconRegistry, MatIcon, MatIconModule } from '@angular/material/icon';
|
|
45
|
+
import { DomSanitizer, Title, Meta } from '@angular/platform-browser';
|
|
46
|
+
import * as i3$1 from '@angular/material/menu';
|
|
52
47
|
import { MatMenuModule } from '@angular/material/menu';
|
|
53
|
-
import * as
|
|
48
|
+
import * as i1$4 from '@angular/common';
|
|
54
49
|
import { CommonModule, DOCUMENT, DatePipe, isPlatformBrowser } from '@angular/common';
|
|
55
|
-
import
|
|
56
|
-
import * as i5 from '@angular/material/list';
|
|
50
|
+
import { MatTabGroup } from '@angular/material/tabs';
|
|
51
|
+
import * as i5$2 from '@angular/material/list';
|
|
57
52
|
import { MatSelectionList, MatListModule } from '@angular/material/list';
|
|
58
|
-
import * as i1$
|
|
53
|
+
import * as i1$5 from '@angular/material/autocomplete';
|
|
59
54
|
import { MatAutocompleteTrigger, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
60
55
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
61
56
|
import * as i8 from '@angular/material/progress-spinner';
|
|
62
57
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
63
58
|
import { FlatTreeControl } from '@angular/cdk/tree';
|
|
64
|
-
import * as
|
|
59
|
+
import * as i3$2 from '@angular/material/tree';
|
|
65
60
|
import { MatTreeFlattener, MatTreeFlatDataSource, MatTreeModule } from '@angular/material/tree';
|
|
66
|
-
import * as
|
|
61
|
+
import * as i7$1 from '@angular/material/chips';
|
|
67
62
|
import { MatChipsModule } from '@angular/material/chips';
|
|
68
|
-
import * as
|
|
63
|
+
import * as i5$3 from '@angular/material/divider';
|
|
69
64
|
import { MatDividerModule } from '@angular/material/divider';
|
|
70
|
-
import * as
|
|
65
|
+
import * as i2$1 from '@angular/material/button-toggle';
|
|
71
66
|
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
72
|
-
import * as
|
|
67
|
+
import * as i6$2 from '@angular/material/paginator';
|
|
73
68
|
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
74
|
-
import * as
|
|
69
|
+
import * as i1$6 from '@angular/material/sidenav';
|
|
75
70
|
import { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';
|
|
76
|
-
import
|
|
77
|
-
import { HttpHeaders } from '@angular/common/http';
|
|
71
|
+
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
78
72
|
import { HmacSHA256 } from 'crypto-es/lib/sha256';
|
|
79
73
|
|
|
80
|
-
class NaturalAbstractController {
|
|
81
|
-
constructor() {
|
|
82
|
-
/**
|
|
83
|
-
* Usage:
|
|
84
|
-
*
|
|
85
|
-
* ```ts
|
|
86
|
-
* import { takeUntil } from 'rxjs/operators';
|
|
87
|
-
* .pipe(takeUntil(this.ngUnsubscribe)) // as first pipe on observables that should be destroyed on component destroy
|
|
88
|
-
* ```
|
|
89
|
-
*
|
|
90
|
-
* @deprecated Instead of this, you should create the observable in the constructor or field initializers and use
|
|
91
|
-
* Angular native `.pipe(takeUntilDestroyed())`. And most likely subscribe at a later point. We keep this method until
|
|
92
|
-
* all existing usages (typically in `ngOnInit()`) are migrated away.
|
|
93
|
-
*/
|
|
94
|
-
this.ngUnsubscribe = new Subject();
|
|
95
|
-
}
|
|
96
|
-
ngOnDestroy() {
|
|
97
|
-
this.ngUnsubscribe.next(); // unsubscribe everybody
|
|
98
|
-
this.ngUnsubscribe.complete(); // complete the stream, because we will never emit again
|
|
99
|
-
}
|
|
100
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractController, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
101
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalAbstractController, isStandalone: true, ngImport: i0 }); }
|
|
102
|
-
}
|
|
103
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractController, decorators: [{
|
|
104
|
-
type: Directive,
|
|
105
|
-
args: [{ standalone: true }]
|
|
106
|
-
}] });
|
|
107
|
-
|
|
108
74
|
class NaturalConfirmComponent {
|
|
109
|
-
constructor(
|
|
110
|
-
this.data =
|
|
75
|
+
constructor() {
|
|
76
|
+
this.data = inject(MAT_DIALOG_DATA);
|
|
111
77
|
}
|
|
112
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalConfirmComponent, deps: [
|
|
113
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalConfirmComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>{{ data.title }}</h2>\n<mat-dialog-content\n ><p class=\"mat-body\">{{ data.message }}</p></mat-dialog-content\n>\n<mat-dialog-actions align=\"end\">\n <button [mat-dialog-close]=\"false\" mat-button>{{ data.cancelText }}</button>\n <button [mat-dialog-close]=\"true\" mat-stroked-button cdkFocusInitial>{{ data.confirmText }}</button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-content{max-width:40em}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
78
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
79
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalConfirmComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<h2 mat-dialog-title>{{ data.title }}</h2>\n<mat-dialog-content\n ><p class=\"mat-body\">{{ data.message }}</p></mat-dialog-content\n>\n<mat-dialog-actions align=\"end\">\n <button [mat-dialog-close]=\"false\" mat-button>{{ data.cancelText }}</button>\n <button [mat-dialog-close]=\"true\" mat-stroked-button cdkFocusInitial>{{ data.confirmText }}</button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-content{max-width:40em}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
114
80
|
}
|
|
115
81
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalConfirmComponent, decorators: [{
|
|
116
82
|
type: Component,
|
|
117
83
|
args: [{ standalone: true, imports: [MatDialogModule, MatButtonModule], template: "<h2 mat-dialog-title>{{ data.title }}</h2>\n<mat-dialog-content\n ><p class=\"mat-body\">{{ data.message }}</p></mat-dialog-content\n>\n<mat-dialog-actions align=\"end\">\n <button [mat-dialog-close]=\"false\" mat-button>{{ data.cancelText }}</button>\n <button [mat-dialog-close]=\"true\" mat-stroked-button cdkFocusInitial>{{ data.confirmText }}</button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-content{max-width:40em}\n"] }]
|
|
118
|
-
}]
|
|
119
|
-
type: Inject,
|
|
120
|
-
args: [MAT_DIALOG_DATA]
|
|
121
|
-
}] }] });
|
|
84
|
+
}] });
|
|
122
85
|
|
|
123
86
|
class NaturalAlertService {
|
|
124
|
-
constructor(
|
|
125
|
-
this.dialog =
|
|
126
|
-
this.snackBar =
|
|
87
|
+
constructor() {
|
|
88
|
+
this.dialog = inject(MatDialog);
|
|
89
|
+
this.snackBar = inject(MatSnackBar);
|
|
127
90
|
}
|
|
128
91
|
/**
|
|
129
92
|
* Show an informative message in a snack bar
|
|
@@ -160,7 +123,7 @@ class NaturalAlertService {
|
|
|
160
123
|
});
|
|
161
124
|
return dialog.afterClosed();
|
|
162
125
|
}
|
|
163
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAlertService, deps: [
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
164
127
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAlertService, providedIn: 'root' }); }
|
|
165
128
|
}
|
|
166
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAlertService, decorators: [{
|
|
@@ -168,11 +131,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
168
131
|
args: [{
|
|
169
132
|
providedIn: 'root',
|
|
170
133
|
}]
|
|
171
|
-
}]
|
|
134
|
+
}] });
|
|
172
135
|
|
|
173
|
-
class NaturalAbstractPanel
|
|
136
|
+
class NaturalAbstractPanel {
|
|
174
137
|
constructor() {
|
|
175
|
-
|
|
138
|
+
this.destroyRef = inject(DestroyRef);
|
|
176
139
|
/**
|
|
177
140
|
* The data property is the container where the resolved content is stored
|
|
178
141
|
* When loading a component from a panel opening (dialog), receives the data provided by the service
|
|
@@ -205,7 +168,7 @@ class NaturalAbstractPanel extends NaturalAbstractController {
|
|
|
205
168
|
if (this.panelData?.data) {
|
|
206
169
|
if (this.panelData.data.model instanceof Observable) {
|
|
207
170
|
// Subscribe to model to know when Apollo cache is changed, so we can reflect it into `data.model`
|
|
208
|
-
this.panelData.data.model.pipe(
|
|
171
|
+
this.panelData.data.model.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(model => {
|
|
209
172
|
this.data = {
|
|
210
173
|
...this.data,
|
|
211
174
|
...this.panelData?.data,
|
|
@@ -221,8 +184,8 @@ class NaturalAbstractPanel extends NaturalAbstractController {
|
|
|
221
184
|
}
|
|
222
185
|
}
|
|
223
186
|
}
|
|
224
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractPanel, deps:
|
|
225
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalAbstractPanel, isStandalone: true, host: { listeners: { "click": "clickPanel()" }, properties: { "class.isFrontPanel": "this.isFrontPanel", "class.isPanel": "this.isPanel" } },
|
|
187
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
188
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalAbstractPanel, isStandalone: true, host: { listeners: { "click": "clickPanel()" }, properties: { "class.isFrontPanel": "this.isFrontPanel", "class.isPanel": "this.isPanel" } }, ngImport: i0 }); }
|
|
226
189
|
}
|
|
227
190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractPanel, decorators: [{
|
|
228
191
|
type: Directive,
|
|
@@ -2389,7 +2352,6 @@ class NaturalAbstractDetail extends NaturalAbstractPanel {
|
|
|
2389
2352
|
this.router = inject(Router);
|
|
2390
2353
|
this.route = inject(ActivatedRoute);
|
|
2391
2354
|
this._dialogData = inject(MAT_DIALOG_DATA, { optional: true });
|
|
2392
|
-
this.destroyRef = inject(DestroyRef);
|
|
2393
2355
|
/**
|
|
2394
2356
|
* Once set, this must not change anymore, especially not right after the creation mutation,
|
|
2395
2357
|
* so the form does not switch from creation mode to update mode without an actual reload of
|
|
@@ -2585,9 +2547,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
2585
2547
|
*
|
|
2586
2548
|
* @dynamic
|
|
2587
2549
|
*/
|
|
2588
|
-
class NaturalAbstractEditableList
|
|
2550
|
+
class NaturalAbstractEditableList {
|
|
2589
2551
|
constructor(service) {
|
|
2590
|
-
super();
|
|
2591
2552
|
this.service = service;
|
|
2592
2553
|
this.formArray = new UntypedFormArray([]);
|
|
2593
2554
|
this.variablesManager = new NaturalQueryVariablesManager();
|
|
@@ -2649,7 +2610,7 @@ class NaturalAbstractEditableList extends NaturalAbstractController {
|
|
|
2649
2610
|
validateAllFormControls(this.form);
|
|
2650
2611
|
}
|
|
2651
2612
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractEditableList, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2652
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalAbstractEditableList, isStandalone: true,
|
|
2613
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalAbstractEditableList, isStandalone: true, ngImport: i0 }); }
|
|
2653
2614
|
}
|
|
2654
2615
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractEditableList, decorators: [{
|
|
2655
2616
|
type: Directive,
|
|
@@ -2870,11 +2831,11 @@ function throwMatDialogContentAlreadyAttachedError() {
|
|
|
2870
2831
|
}
|
|
2871
2832
|
const NATURAL_DROPDOWN_CONTAINER_DATA = new InjectionToken('NaturalDropdownContainerData');
|
|
2872
2833
|
class NaturalDropdownContainerComponent extends BasePortalOutlet {
|
|
2873
|
-
constructor(
|
|
2834
|
+
constructor() {
|
|
2874
2835
|
super();
|
|
2875
|
-
this.elementRef =
|
|
2876
|
-
this.focusTrapFactory =
|
|
2877
|
-
this.data =
|
|
2836
|
+
this.elementRef = inject(ElementRef);
|
|
2837
|
+
this.focusTrapFactory = inject(ConfigurableFocusTrapFactory);
|
|
2838
|
+
this.data = inject(NATURAL_DROPDOWN_CONTAINER_DATA);
|
|
2878
2839
|
this.closed = new Subject();
|
|
2879
2840
|
/** Current state of the panel animation. */
|
|
2880
2841
|
this.panelAnimationState = 'void';
|
|
@@ -2927,16 +2888,13 @@ class NaturalDropdownContainerComponent extends BasePortalOutlet {
|
|
|
2927
2888
|
this.focusTrap.destroy();
|
|
2928
2889
|
}
|
|
2929
2890
|
}
|
|
2930
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownContainerComponent, deps: [
|
|
2931
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalDropdownContainerComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet />\n </div>\n\n @if (data.showValidateButton) {\n <div class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n }\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{display:flex;flex:none;flex-direction:row;justify-content:flex-end;margin:5px}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type:
|
|
2891
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2892
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalDropdownContainerComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "portalOutlet", first: true, predicate: CdkPortalOutlet, descendants: true, static: true }, { propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet />\n </div>\n\n @if (data.showValidateButton) {\n <div class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n }\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{display:flex;flex:none;flex-direction:row;justify-content:flex-end;margin:5px}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1$1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2932
2893
|
}
|
|
2933
2894
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownContainerComponent, decorators: [{
|
|
2934
2895
|
type: Component,
|
|
2935
2896
|
args: [{ encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, animations: [naturalDropdownAnimations.transformMenu, naturalDropdownAnimations.fadeInItems], standalone: true, imports: [PortalModule, MatButtonModule], template: "<div\n (@transformMenu.done)=\"onAnimationDone($event)\"\n [@transformMenu]=\"panelAnimationState\"\n class=\"natural-dropdown-container mat-elevation-z2\"\n role=\"menu\"\n tabindex=\"-1\"\n>\n <div class=\"natural-dropdown-container-content\">\n <ng-template cdkPortalOutlet />\n </div>\n\n @if (data.showValidateButton) {\n <div class=\"natural-dropdown-validate-button\">\n <button (click)=\"close()\" color=\"primary\" mat-raised-button i18n>Valider</button>\n </div>\n }\n</div>\n", styles: [".natural-dropdown-container{display:flex;flex-direction:column;border-radius:2px;height:100%}.natural-dropdown-container-content{flex:1;padding:5px;overflow:auto}.natural-dropdown-container .natural-dropdown-validate-button{display:flex;flex:none;flex-direction:row;justify-content:flex-end;margin:5px}\n"] }]
|
|
2936
|
-
}], ctorParameters: () => [
|
|
2937
|
-
type: Inject,
|
|
2938
|
-
args: [NATURAL_DROPDOWN_CONTAINER_DATA]
|
|
2939
|
-
}] }], propDecorators: { portalOutlet: [{
|
|
2897
|
+
}], ctorParameters: () => [], propDecorators: { portalOutlet: [{
|
|
2940
2898
|
type: ViewChild,
|
|
2941
2899
|
args: [CdkPortalOutlet, { static: true }]
|
|
2942
2900
|
}], templateRef: [{
|
|
@@ -2965,9 +2923,9 @@ class NaturalDropdownRef {
|
|
|
2965
2923
|
|
|
2966
2924
|
const NATURAL_DROPDOWN_DATA = new InjectionToken('NaturalDropdownData');
|
|
2967
2925
|
class NaturalDropdownService {
|
|
2968
|
-
constructor(
|
|
2969
|
-
this.overlay =
|
|
2970
|
-
this.injector =
|
|
2926
|
+
constructor() {
|
|
2927
|
+
this.overlay = inject(Overlay);
|
|
2928
|
+
this.injector = inject(Injector);
|
|
2971
2929
|
}
|
|
2972
2930
|
open(component, connectedElement, customProviders, showValidateButton) {
|
|
2973
2931
|
// Container data
|
|
@@ -3007,7 +2965,7 @@ class NaturalDropdownService {
|
|
|
3007
2965
|
// When click on backdrop, validate result.. ?
|
|
3008
2966
|
overlayRef
|
|
3009
2967
|
.backdropClick()
|
|
3010
|
-
.pipe(takeUntil
|
|
2968
|
+
.pipe(takeUntil(dropdownContainer.closed))
|
|
3011
2969
|
.subscribe(() => dropdownContainer.close());
|
|
3012
2970
|
return dropdownRef;
|
|
3013
2971
|
}
|
|
@@ -3038,7 +2996,7 @@ class NaturalDropdownService {
|
|
|
3038
2996
|
},
|
|
3039
2997
|
]);
|
|
3040
2998
|
}
|
|
3041
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownService, deps: [
|
|
2999
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3042
3000
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownService, providedIn: 'root' }); }
|
|
3043
3001
|
}
|
|
3044
3002
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDropdownService, decorators: [{
|
|
@@ -3046,7 +3004,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
3046
3004
|
args: [{
|
|
3047
3005
|
providedIn: 'root',
|
|
3048
3006
|
}]
|
|
3049
|
-
}]
|
|
3007
|
+
}] });
|
|
3050
3008
|
|
|
3051
3009
|
const possibleComparableOperators = [
|
|
3052
3010
|
{
|
|
@@ -3125,9 +3083,9 @@ function dateMax(dateAdapter, max) {
|
|
|
3125
3083
|
}
|
|
3126
3084
|
|
|
3127
3085
|
class TypeDateComponent {
|
|
3128
|
-
constructor(
|
|
3129
|
-
this.dateAdapter =
|
|
3130
|
-
this.dateFormats =
|
|
3086
|
+
constructor() {
|
|
3087
|
+
this.dateAdapter = inject(DateAdapter);
|
|
3088
|
+
this.dateFormats = inject(MAT_DATE_FORMATS);
|
|
3131
3089
|
this.renderedValue = new BehaviorSubject('');
|
|
3132
3090
|
this.operatorCtrl = new FormControl('equal', { nonNullable: true });
|
|
3133
3091
|
this.valueCtrl = new FormControl(null);
|
|
@@ -3142,6 +3100,7 @@ class TypeDateComponent {
|
|
|
3142
3100
|
min: null,
|
|
3143
3101
|
max: null,
|
|
3144
3102
|
};
|
|
3103
|
+
const data = inject(NATURAL_DROPDOWN_DATA);
|
|
3145
3104
|
this.configuration = { ...this.defaults, ...data.configuration };
|
|
3146
3105
|
this.todayCtrl.valueChanges.pipe(takeUntilDestroyed()).subscribe(isToday => {
|
|
3147
3106
|
if (isToday) {
|
|
@@ -3257,8 +3216,8 @@ class TypeDateComponent {
|
|
|
3257
3216
|
return '';
|
|
3258
3217
|
}
|
|
3259
3218
|
}
|
|
3260
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeDateComponent, deps: [
|
|
3261
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeDateComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label i18n>Date</mat-label>\n <input\n [formControl]=\"valueCtrl\"\n [matDatepicker]=\"value\"\n [max]=\"configuration.max\"\n [min]=\"configuration.min\"\n [required]=\"true\"\n matInput\n />\n <mat-datepicker-toggle [for]=\"value\" matIconSuffix />\n <mat-datepicker #value />\n @if (valueCtrl.hasError('min')) {\n <mat-error>< {{ configuration.min }}</mat-error>\n }\n @if (valueCtrl.hasError('max')) {\n <mat-error>> {{ configuration.max }}</mat-error>\n }\n @if (valueCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n </mat-form-field>\n\n <mat-checkbox [formControl]=\"todayCtrl\" i18n>Aujourd'hui</mat-checkbox>\n</form>\n", styles: ["form{display:grid;grid:auto auto/4em auto;grid-gap:0 1em}form>mat-checkbox{grid-column-start:2;margin-bottom:.3em}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
3219
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeDateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3220
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeDateComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label i18n>Date</mat-label>\n <input\n [formControl]=\"valueCtrl\"\n [matDatepicker]=\"value\"\n [max]=\"configuration.max\"\n [min]=\"configuration.min\"\n [required]=\"true\"\n matInput\n />\n <mat-datepicker-toggle [for]=\"value\" matIconSuffix />\n <mat-datepicker #value />\n @if (valueCtrl.hasError('min')) {\n <mat-error>< {{ configuration.min }}</mat-error>\n }\n @if (valueCtrl.hasError('max')) {\n <mat-error>> {{ configuration.max }}</mat-error>\n }\n @if (valueCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n </mat-form-field>\n\n <mat-checkbox [formControl]=\"todayCtrl\" i18n>Aujourd'hui</mat-checkbox>\n</form>\n", styles: ["form{display:grid;grid:auto auto/4em auto;grid-gap:0 1em}form>mat-checkbox{grid-column-start:2;margin-bottom:.3em}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] }); }
|
|
3262
3221
|
}
|
|
3263
3222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeDateComponent, decorators: [{
|
|
3264
3223
|
type: Component,
|
|
@@ -3272,13 +3231,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
3272
3231
|
MatDatepickerModule,
|
|
3273
3232
|
MatCheckboxModule,
|
|
3274
3233
|
], template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label i18n>Date</mat-label>\n <input\n [formControl]=\"valueCtrl\"\n [matDatepicker]=\"value\"\n [max]=\"configuration.max\"\n [min]=\"configuration.min\"\n [required]=\"true\"\n matInput\n />\n <mat-datepicker-toggle [for]=\"value\" matIconSuffix />\n <mat-datepicker #value />\n @if (valueCtrl.hasError('min')) {\n <mat-error>< {{ configuration.min }}</mat-error>\n }\n @if (valueCtrl.hasError('max')) {\n <mat-error>> {{ configuration.max }}</mat-error>\n }\n @if (valueCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n </mat-form-field>\n\n <mat-checkbox [formControl]=\"todayCtrl\" i18n>Aujourd'hui</mat-checkbox>\n</form>\n", styles: ["form{display:grid;grid:auto auto/4em auto;grid-gap:0 1em}form>mat-checkbox{grid-column-start:2;margin-bottom:.3em}\n"] }]
|
|
3275
|
-
}], ctorParameters: () => [
|
|
3276
|
-
type: Inject,
|
|
3277
|
-
args: [NATURAL_DROPDOWN_DATA]
|
|
3278
|
-
}] }, { type: i1$3.DateAdapter }, { type: undefined, decorators: [{
|
|
3279
|
-
type: Inject,
|
|
3280
|
-
args: [MAT_DATE_FORMATS]
|
|
3281
|
-
}] }] });
|
|
3234
|
+
}], ctorParameters: () => [] });
|
|
3282
3235
|
|
|
3283
3236
|
function toGraphQLDoctrineFilter(facets, selections) {
|
|
3284
3237
|
selections = deepClone(selections);
|
|
@@ -3551,12 +3504,10 @@ const memoryLocalStorageProvider = {
|
|
|
3551
3504
|
|
|
3552
3505
|
const NATURAL_PERSISTENCE_VALIDATOR = new InjectionToken('Validator for persisted value retrieved from NaturalPersistenceService. If returns false, the persisted value will never be returned.');
|
|
3553
3506
|
class NaturalPersistenceService {
|
|
3554
|
-
constructor(
|
|
3555
|
-
this.router =
|
|
3556
|
-
this.sessionStorage =
|
|
3557
|
-
this.isValid =
|
|
3558
|
-
// By default, anything is valid
|
|
3559
|
-
this.isValid = this.isValid ?? (() => true);
|
|
3507
|
+
constructor() {
|
|
3508
|
+
this.router = inject(Router);
|
|
3509
|
+
this.sessionStorage = inject(SESSION_STORAGE);
|
|
3510
|
+
this.isValid = inject(NATURAL_PERSISTENCE_VALIDATOR, { optional: true }) ?? (() => true); // By default, anything is valid
|
|
3560
3511
|
}
|
|
3561
3512
|
/**
|
|
3562
3513
|
* Persist in url and local storage the given value with the given key.
|
|
@@ -3653,7 +3604,7 @@ class NaturalPersistenceService {
|
|
|
3653
3604
|
}
|
|
3654
3605
|
return this.isValid(key, storageKey, result) ? result : null;
|
|
3655
3606
|
}
|
|
3656
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPersistenceService, deps: [
|
|
3607
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPersistenceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3657
3608
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPersistenceService, providedIn: 'root' }); }
|
|
3658
3609
|
}
|
|
3659
3610
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPersistenceService, decorators: [{
|
|
@@ -3661,15 +3612,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
3661
3612
|
args: [{
|
|
3662
3613
|
providedIn: 'root',
|
|
3663
3614
|
}]
|
|
3664
|
-
}]
|
|
3665
|
-
type: Inject,
|
|
3666
|
-
args: [SESSION_STORAGE]
|
|
3667
|
-
}] }, { type: undefined, decorators: [{
|
|
3668
|
-
type: Optional
|
|
3669
|
-
}, {
|
|
3670
|
-
type: Inject,
|
|
3671
|
-
args: [NATURAL_PERSISTENCE_VALIDATOR]
|
|
3672
|
-
}] }] });
|
|
3615
|
+
}] });
|
|
3673
3616
|
|
|
3674
3617
|
/**
|
|
3675
3618
|
* A NaturalDataSource will connect immediately, in order to know as soon as possible if
|
|
@@ -3683,7 +3626,7 @@ class NaturalDataSource extends DataSource {
|
|
|
3683
3626
|
this.ngUnsubscribe = new Subject();
|
|
3684
3627
|
if (value instanceof Observable) {
|
|
3685
3628
|
this.internalData = new BehaviorSubject(null);
|
|
3686
|
-
value.pipe(takeUntil
|
|
3629
|
+
value.pipe(takeUntil(this.ngUnsubscribe)).subscribe(res => (this.data = res));
|
|
3687
3630
|
}
|
|
3688
3631
|
else {
|
|
3689
3632
|
this.internalData = new BehaviorSubject(value);
|
|
@@ -3702,7 +3645,7 @@ class NaturalDataSource extends DataSource {
|
|
|
3702
3645
|
this.internalData.next(data);
|
|
3703
3646
|
}
|
|
3704
3647
|
connect() {
|
|
3705
|
-
return this.internalData.pipe(takeUntil
|
|
3648
|
+
return this.internalData.pipe(takeUntil(this.ngUnsubscribe), map(data => (data ? data.items : [])));
|
|
3706
3649
|
}
|
|
3707
3650
|
disconnect() {
|
|
3708
3651
|
this.ngUnsubscribe.next(); // unsubscribe everybody
|
|
@@ -3838,12 +3781,12 @@ class NaturalAbstractList extends NaturalAbstractPanel {
|
|
|
3838
3781
|
// But we need parameters from url after NavigationEnd. So proceed in two steps with a flag.
|
|
3839
3782
|
let isPopState = false;
|
|
3840
3783
|
this.router.events
|
|
3841
|
-
.pipe(
|
|
3784
|
+
.pipe(takeUntilDestroyed(this.destroyRef), filter(event => event instanceof NavigationStart && event.navigationTrigger === 'popstate'))
|
|
3842
3785
|
.subscribe(() => {
|
|
3843
3786
|
isPopState = true;
|
|
3844
3787
|
});
|
|
3845
3788
|
this.router.events
|
|
3846
|
-
.pipe(
|
|
3789
|
+
.pipe(takeUntilDestroyed(this.destroyRef), filter(event => event instanceof NavigationEnd && isPopState))
|
|
3847
3790
|
.subscribe(() => {
|
|
3848
3791
|
isPopState = false; // reset flag
|
|
3849
3792
|
this.naturalSearchSelections = fromUrl(this.persistenceService.getFromUrl('ns', this.route));
|
|
@@ -4054,7 +3997,7 @@ class NaturalAbstractList extends NaturalAbstractPanel {
|
|
|
4054
3997
|
// the casting and resolve things in a better way, but that's too much work for now
|
|
4055
3998
|
return this.service
|
|
4056
3999
|
.watchAll(this.variablesManager)
|
|
4057
|
-
.pipe(
|
|
4000
|
+
.pipe(takeUntilDestroyed(this.destroyRef));
|
|
4058
4001
|
}
|
|
4059
4002
|
initFromPersisted() {
|
|
4060
4003
|
if (!this.persistSearch || this.isPanel) {
|
|
@@ -4212,7 +4155,7 @@ class NaturalAbstractNavigableList extends NaturalAbstractList {
|
|
|
4212
4155
|
super.ngOnInit();
|
|
4213
4156
|
}
|
|
4214
4157
|
getDataObservable() {
|
|
4215
|
-
return this.service.watchAll(this.variablesManager).pipe(
|
|
4158
|
+
return this.service.watchAll(this.variablesManager).pipe(takeUntilDestroyed(this.destroyRef), map(result => {
|
|
4216
4159
|
// On each data arriving, we query children count to show/hide chevron
|
|
4217
4160
|
const navigableItems = result.items.map(item => {
|
|
4218
4161
|
const navigableItem = {
|
|
@@ -4347,10 +4290,16 @@ function createHttpLink(httpLink, httpBatchLink, options) {
|
|
|
4347
4290
|
* Typical usage in a component would be:
|
|
4348
4291
|
*
|
|
4349
4292
|
* ```ts
|
|
4293
|
+
* cancellableTimeout(inject(DestroyRef)).subscribe(myCallback);
|
|
4294
|
+
* ```
|
|
4295
|
+
*
|
|
4296
|
+
* or
|
|
4297
|
+
*
|
|
4298
|
+
* ```ts
|
|
4350
4299
|
* cancellableTimeout(this.ngUnsubscribe).subscribe(myCallback);
|
|
4351
4300
|
* ```
|
|
4352
4301
|
*
|
|
4353
|
-
* Instead of the more error
|
|
4302
|
+
* Instead of the more error-prone:
|
|
4354
4303
|
*
|
|
4355
4304
|
* ```ts
|
|
4356
4305
|
* public foo(): void {
|
|
@@ -4366,9 +4315,7 @@ function createHttpLink(httpLink, httpBatchLink, options) {
|
|
|
4366
4315
|
* ```
|
|
4367
4316
|
*/
|
|
4368
4317
|
function cancellableTimeout(canceller, milliSeconds = 0) {
|
|
4369
|
-
return timer(milliSeconds).pipe(take(1), takeUntil(canceller), map$1(() =>
|
|
4370
|
-
return;
|
|
4371
|
-
}));
|
|
4318
|
+
return timer(milliSeconds).pipe(take(1), canceller instanceof DestroyRef ? takeUntilDestroyed(canceller) : takeUntil$1(canceller), map$1(() => undefined));
|
|
4372
4319
|
}
|
|
4373
4320
|
/**
|
|
4374
4321
|
* For debugging purpose only, will dump in console everything that happen to
|
|
@@ -5049,8 +4996,8 @@ const enumTypeQuery = gql `
|
|
|
5049
4996
|
}
|
|
5050
4997
|
`;
|
|
5051
4998
|
class NaturalEnumService {
|
|
5052
|
-
constructor(
|
|
5053
|
-
this.apollo =
|
|
4999
|
+
constructor() {
|
|
5000
|
+
this.apollo = inject(Apollo);
|
|
5054
5001
|
}
|
|
5055
5002
|
/**
|
|
5056
5003
|
* Return a list of observable enumerables considering the given name
|
|
@@ -5089,7 +5036,7 @@ class NaturalEnumService {
|
|
|
5089
5036
|
return '';
|
|
5090
5037
|
}));
|
|
5091
5038
|
}
|
|
5092
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalEnumService, deps: [
|
|
5039
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalEnumService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5093
5040
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalEnumService, providedIn: 'root' }); }
|
|
5094
5041
|
}
|
|
5095
5042
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalEnumService, decorators: [{
|
|
@@ -5097,7 +5044,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
5097
5044
|
args: [{
|
|
5098
5045
|
providedIn: 'root',
|
|
5099
5046
|
}]
|
|
5100
|
-
}]
|
|
5047
|
+
}] });
|
|
5101
5048
|
|
|
5102
5049
|
/**
|
|
5103
5050
|
* Query to get list of mutations
|
|
@@ -5120,8 +5067,8 @@ const queriesQuery = gql `
|
|
|
5120
5067
|
}
|
|
5121
5068
|
`;
|
|
5122
5069
|
class NaturalLinkMutationService {
|
|
5123
|
-
constructor(
|
|
5124
|
-
this.apollo =
|
|
5070
|
+
constructor() {
|
|
5071
|
+
this.apollo = inject(Apollo);
|
|
5125
5072
|
}
|
|
5126
5073
|
/**
|
|
5127
5074
|
* Link two objects together
|
|
@@ -5234,7 +5181,7 @@ class NaturalLinkMutationService {
|
|
|
5234
5181
|
}
|
|
5235
5182
|
}`;
|
|
5236
5183
|
}
|
|
5237
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalLinkMutationService, deps: [
|
|
5184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalLinkMutationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5238
5185
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalLinkMutationService, providedIn: 'root' }); }
|
|
5239
5186
|
}
|
|
5240
5187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalLinkMutationService, decorators: [{
|
|
@@ -5242,7 +5189,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
5242
5189
|
args: [{
|
|
5243
5190
|
providedIn: 'root',
|
|
5244
5191
|
}]
|
|
5245
|
-
}]
|
|
5192
|
+
}] });
|
|
5246
5193
|
|
|
5247
5194
|
const patterns = [
|
|
5248
5195
|
/^(?<day>\d{1,2})\.(?<month>\d{1,2})\.(?<year>\d{4}|\d{2})$/,
|
|
@@ -5327,13 +5274,14 @@ const naturalRegistered = Symbol('Natural icon registered');
|
|
|
5327
5274
|
* ```
|
|
5328
5275
|
*/
|
|
5329
5276
|
class NaturalIconDirective {
|
|
5330
|
-
constructor(
|
|
5331
|
-
this.matIconRegistry =
|
|
5332
|
-
this.domSanitizer =
|
|
5333
|
-
this.config =
|
|
5334
|
-
this.matIconComponent =
|
|
5277
|
+
constructor() {
|
|
5278
|
+
this.matIconRegistry = inject(MatIconRegistry);
|
|
5279
|
+
this.domSanitizer = inject(DomSanitizer);
|
|
5280
|
+
this.config = inject(NATURAL_ICONS_CONFIG, { optional: true });
|
|
5281
|
+
this.matIconComponent = inject(MatIcon, { host: true, self: true });
|
|
5335
5282
|
this._size = undefined;
|
|
5336
5283
|
this.classes = '';
|
|
5284
|
+
const config = this.config;
|
|
5337
5285
|
this.registerIcons(config ?? {});
|
|
5338
5286
|
}
|
|
5339
5287
|
set naturalIcon(value) {
|
|
@@ -5371,7 +5319,7 @@ class NaturalIconDirective {
|
|
|
5371
5319
|
}
|
|
5372
5320
|
}
|
|
5373
5321
|
}
|
|
5374
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalIconDirective, deps: [
|
|
5322
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5375
5323
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalIconDirective, isStandalone: true, selector: "mat-icon[naturalIcon]", inputs: { naturalIcon: "naturalIcon", size: "size" }, host: { properties: { "style.font-size.px": "this._size", "style.min-height.px": "this._size", "style.min-width.px": "this._size", "class": "this.classes" } }, ngImport: i0 }); }
|
|
5376
5324
|
}
|
|
5377
5325
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalIconDirective, decorators: [{
|
|
@@ -5380,16 +5328,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
5380
5328
|
selector: 'mat-icon[naturalIcon]',
|
|
5381
5329
|
standalone: true,
|
|
5382
5330
|
}]
|
|
5383
|
-
}], ctorParameters: () => [
|
|
5384
|
-
type: Optional
|
|
5385
|
-
}, {
|
|
5386
|
-
type: Inject,
|
|
5387
|
-
args: [NATURAL_ICONS_CONFIG]
|
|
5388
|
-
}] }, { type: i1$5.MatIcon, decorators: [{
|
|
5389
|
-
type: Host
|
|
5390
|
-
}, {
|
|
5391
|
-
type: Self
|
|
5392
|
-
}] }], propDecorators: { _size: [{
|
|
5331
|
+
}], ctorParameters: () => [], propDecorators: { _size: [{
|
|
5393
5332
|
type: HostBinding,
|
|
5394
5333
|
args: ['style.font-size.px']
|
|
5395
5334
|
}, {
|
|
@@ -5409,6 +5348,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
5409
5348
|
}] } });
|
|
5410
5349
|
|
|
5411
5350
|
class NaturalColumnsPickerComponent {
|
|
5351
|
+
constructor() {
|
|
5352
|
+
this.destroyRef = inject(DestroyRef);
|
|
5353
|
+
this.breakpointObserver = inject(BreakpointObserver);
|
|
5354
|
+
this._availableColumns = [];
|
|
5355
|
+
this.buttons = [];
|
|
5356
|
+
/**
|
|
5357
|
+
* Emit a list of valid and selected column keys whenever the selection changes
|
|
5358
|
+
*/
|
|
5359
|
+
this.selectionChange = new EventEmitter();
|
|
5360
|
+
/**
|
|
5361
|
+
* Displayed options in the dropdown menu
|
|
5362
|
+
*/
|
|
5363
|
+
this.displayedColumns = [];
|
|
5364
|
+
this.isMobile = this.breakpointObserver.observe(Breakpoints.XSmall).pipe(map$1(result => result.matches));
|
|
5365
|
+
}
|
|
5412
5366
|
/**
|
|
5413
5367
|
* Set all the columns that are available.
|
|
5414
5368
|
*/
|
|
@@ -5439,21 +5393,6 @@ class NaturalColumnsPickerComponent {
|
|
|
5439
5393
|
col.checked = columns.includes(col.id);
|
|
5440
5394
|
});
|
|
5441
5395
|
}
|
|
5442
|
-
constructor(breakpointObserver) {
|
|
5443
|
-
this.breakpointObserver = breakpointObserver;
|
|
5444
|
-
this._availableColumns = [];
|
|
5445
|
-
this.buttons = [];
|
|
5446
|
-
/**
|
|
5447
|
-
* Emit a list of valid and selected column keys whenever the selection changes
|
|
5448
|
-
*/
|
|
5449
|
-
this.selectionChange = new EventEmitter();
|
|
5450
|
-
/**
|
|
5451
|
-
* Displayed options in the dropdown menu
|
|
5452
|
-
*/
|
|
5453
|
-
this.displayedColumns = [];
|
|
5454
|
-
this.ngUnsubscribe = new Subject();
|
|
5455
|
-
this.isMobile = this.breakpointObserver.observe(Breakpoints.XSmall).pipe(map$1(result => result.matches));
|
|
5456
|
-
}
|
|
5457
5396
|
initColumns() {
|
|
5458
5397
|
this._availableColumns?.forEach(col => {
|
|
5459
5398
|
col.checked = this._selections?.length ? this._selections.includes(col.id) : col.checked;
|
|
@@ -5467,7 +5406,7 @@ class NaturalColumnsPickerComponent {
|
|
|
5467
5406
|
}
|
|
5468
5407
|
ngOnChanges(changes) {
|
|
5469
5408
|
// Unfortunately need a timeout to avoid an ExpressionChangedAfterItHasBeenCheckedError on /state/4989/process
|
|
5470
|
-
cancellableTimeout(this.
|
|
5409
|
+
cancellableTimeout(this.destroyRef).subscribe(() => {
|
|
5471
5410
|
if (changes.availableColumns) {
|
|
5472
5411
|
this.initColumns();
|
|
5473
5412
|
this.updateColumns();
|
|
@@ -5477,10 +5416,6 @@ class NaturalColumnsPickerComponent {
|
|
|
5477
5416
|
}
|
|
5478
5417
|
});
|
|
5479
5418
|
}
|
|
5480
|
-
ngOnDestroy() {
|
|
5481
|
-
this.ngUnsubscribe.next(); // unsubscribe everybody
|
|
5482
|
-
this.ngUnsubscribe.complete(); // complete the stream, because we will never emit again
|
|
5483
|
-
}
|
|
5484
5419
|
defaultTrue(value) {
|
|
5485
5420
|
return value ?? true;
|
|
5486
5421
|
}
|
|
@@ -5499,8 +5434,8 @@ class NaturalColumnsPickerComponent {
|
|
|
5499
5434
|
const visibleButtons = this.buttons?.reduce((sum, button) => (this.defaultTrue(button.show) ? 1 : 0), 0) ?? 0;
|
|
5500
5435
|
return visibleButtons > 0;
|
|
5501
5436
|
}
|
|
5502
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalColumnsPickerComponent, deps: [
|
|
5503
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalColumnsPickerComponent, isStandalone: true, selector: "natural-columns-picker", inputs: { buttons: "buttons", availableColumns: "availableColumns", selections: "selections" }, outputs: { selectionChange: "selectionChange" }, usesOnChanges: true, ngImport: i0, template: "<div>\n @if ((isMobile | async) && someVisibleButtons()) {\n <button mat-icon-button [matMenuTriggerFor]=\"mobileMenu\">\n <mat-icon naturalIcon=\"more_vert\" />\n </button>\n <mat-menu #mobileMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (button of buttons; track button) {\n @if (button.href) {\n <a\n mat-menu-item\n [href]=\"defaultTrue(button.show) && button.href\"\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [ngClass]=\"needMargin(button)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </a>\n }\n @if (defaultTrue(button.show) && !button.href && !button.buttons) {\n <button\n mat-menu-item\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [ngClass]=\"needMargin(button)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </button>\n }\n @if (defaultTrue(button.show) && button.buttons) {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subMenu\"\n (click)=\"button.click?.(button, $event)\"\n [ngClass]=\"needMargin(button)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </button>\n <mat-menu #subMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (subButton of button.buttons; track subButton) {\n <a\n mat-menu-item\n [disabled]=\"subButton.disabled\"\n (click)=\"subButton.click(subButton, $event)\"\n >\n {{ subButton.label }}\n </a>\n }\n </ng-template>\n </mat-menu>\n }\n }\n @if (displayedColumns.length) {\n <button [matMenuTriggerFor]=\"columnMenu\" mat-menu-item [ngClass]=\"needMargin(null)\">\n <span i18n>Colonnes</span>\n </button>\n }\n </ng-template>\n </mat-menu>\n } @else {\n @for (button of buttons; track button) {\n @if (button.href) {\n <a\n mat-icon-button\n [href]=\"defaultTrue(button.show) && button.href\"\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </a>\n }\n @if (defaultTrue(button.show) && !button.href && !button.buttons) {\n <button\n mat-icon-button\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </button>\n }\n @if (defaultTrue(button.show) && button.buttons) {\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent>\n @for (subButton of button.buttons; track subButton) {\n <a\n mat-menu-item\n [disabled]=\"subButton.disabled\"\n (click)=\"subButton.click(subButton, $event)\"\n >\n {{ subButton.label }}\n </a>\n }\n </ng-template>\n </mat-menu>\n }\n }\n @if (displayedColumns.length) {\n <button\n [matMenuTriggerFor]=\"columnMenu\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner les colonnes\"\n >\n <mat-icon naturalIcon=\"view_column\" />\n </button>\n }\n }\n</div>\n\n<mat-menu #columnMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (column of displayedColumns; track column) {\n <div (click)=\"$event.stopPropagation(); column.checked = !column.checked; updateColumns()\" mat-menu-item>\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"updateColumns()\"\n [(ngModel)]=\"column.checked\"\n >{{ column.label }}</mat-checkbox\n >\n </div>\n }\n </ng-template>\n</mat-menu>\n", styles: [".align-with-checkbox{padding-left:61px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
5437
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalColumnsPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5438
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalColumnsPickerComponent, isStandalone: true, selector: "natural-columns-picker", inputs: { buttons: "buttons", availableColumns: "availableColumns", selections: "selections" }, outputs: { selectionChange: "selectionChange" }, usesOnChanges: true, ngImport: i0, template: "<div>\n @if ((isMobile | async) && someVisibleButtons()) {\n <button mat-icon-button [matMenuTriggerFor]=\"mobileMenu\">\n <mat-icon naturalIcon=\"more_vert\" />\n </button>\n <mat-menu #mobileMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (button of buttons; track button) {\n @if (button.href) {\n <a\n mat-menu-item\n [href]=\"defaultTrue(button.show) && button.href\"\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [ngClass]=\"needMargin(button)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </a>\n }\n @if (defaultTrue(button.show) && !button.href && !button.buttons) {\n <button\n mat-menu-item\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [ngClass]=\"needMargin(button)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </button>\n }\n @if (defaultTrue(button.show) && button.buttons) {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subMenu\"\n (click)=\"button.click?.(button, $event)\"\n [ngClass]=\"needMargin(button)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </button>\n <mat-menu #subMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (subButton of button.buttons; track subButton) {\n <a\n mat-menu-item\n [disabled]=\"subButton.disabled\"\n (click)=\"subButton.click(subButton, $event)\"\n >\n {{ subButton.label }}\n </a>\n }\n </ng-template>\n </mat-menu>\n }\n }\n @if (displayedColumns.length) {\n <button [matMenuTriggerFor]=\"columnMenu\" mat-menu-item [ngClass]=\"needMargin(null)\">\n <span i18n>Colonnes</span>\n </button>\n }\n </ng-template>\n </mat-menu>\n } @else {\n @for (button of buttons; track button) {\n @if (button.href) {\n <a\n mat-icon-button\n [href]=\"defaultTrue(button.show) && button.href\"\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </a>\n }\n @if (defaultTrue(button.show) && !button.href && !button.buttons) {\n <button\n mat-icon-button\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </button>\n }\n @if (defaultTrue(button.show) && button.buttons) {\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent>\n @for (subButton of button.buttons; track subButton) {\n <a\n mat-menu-item\n [disabled]=\"subButton.disabled\"\n (click)=\"subButton.click(subButton, $event)\"\n >\n {{ subButton.label }}\n </a>\n }\n </ng-template>\n </mat-menu>\n }\n }\n @if (displayedColumns.length) {\n <button\n [matMenuTriggerFor]=\"columnMenu\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner les colonnes\"\n >\n <mat-icon naturalIcon=\"view_column\" />\n </button>\n }\n }\n</div>\n\n<mat-menu #columnMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (column of displayedColumns; track column) {\n <div (click)=\"$event.stopPropagation(); column.checked = !column.checked; updateColumns()\" mat-menu-item>\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"updateColumns()\"\n [(ngModel)]=\"column.checked\"\n >{{ column.label }}</mat-checkbox\n >\n </div>\n }\n </ng-template>\n</mat-menu>\n", styles: [".align-with-checkbox{padding-left:61px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i3$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3$1.MatMenuContent, selector: "ng-template[matMenuContent]" }, { kind: "directive", type: i3$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
5504
5439
|
}
|
|
5505
5440
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalColumnsPickerComponent, decorators: [{
|
|
5506
5441
|
type: Component,
|
|
@@ -5514,7 +5449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
5514
5449
|
MatTooltipModule,
|
|
5515
5450
|
FormsModule,
|
|
5516
5451
|
], template: "<div>\n @if ((isMobile | async) && someVisibleButtons()) {\n <button mat-icon-button [matMenuTriggerFor]=\"mobileMenu\">\n <mat-icon naturalIcon=\"more_vert\" />\n </button>\n <mat-menu #mobileMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (button of buttons; track button) {\n @if (button.href) {\n <a\n mat-menu-item\n [href]=\"defaultTrue(button.show) && button.href\"\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [ngClass]=\"needMargin(button)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </a>\n }\n @if (defaultTrue(button.show) && !button.href && !button.buttons) {\n <button\n mat-menu-item\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [ngClass]=\"needMargin(button)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </button>\n }\n @if (defaultTrue(button.show) && button.buttons) {\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"subMenu\"\n (click)=\"button.click?.(button, $event)\"\n [ngClass]=\"needMargin(button)\"\n >\n @if (useCheckbox(button)) {\n <mat-checkbox [checked]=\"button.checked\" />\n }\n {{ button.label }}\n </button>\n <mat-menu #subMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (subButton of button.buttons; track subButton) {\n <a\n mat-menu-item\n [disabled]=\"subButton.disabled\"\n (click)=\"subButton.click(subButton, $event)\"\n >\n {{ subButton.label }}\n </a>\n }\n </ng-template>\n </mat-menu>\n }\n }\n @if (displayedColumns.length) {\n <button [matMenuTriggerFor]=\"columnMenu\" mat-menu-item [ngClass]=\"needMargin(null)\">\n <span i18n>Colonnes</span>\n </button>\n }\n </ng-template>\n </mat-menu>\n } @else {\n @for (button of buttons; track button) {\n @if (button.href) {\n <a\n mat-icon-button\n [href]=\"defaultTrue(button.show) && button.href\"\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </a>\n }\n @if (defaultTrue(button.show) && !button.href && !button.buttons) {\n <button\n mat-icon-button\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </button>\n }\n @if (defaultTrue(button.show) && button.buttons) {\n <button\n mat-icon-button\n [matMenuTriggerFor]=\"menu\"\n (click)=\"button.click?.(button, $event)\"\n [disabled]=\"button.disabled\"\n [color]=\"color(button)\"\n [matTooltip]=\"button.label\"\n >\n <mat-icon [naturalIcon]=\"button.icon\" />\n </button>\n <mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent>\n @for (subButton of button.buttons; track subButton) {\n <a\n mat-menu-item\n [disabled]=\"subButton.disabled\"\n (click)=\"subButton.click(subButton, $event)\"\n >\n {{ subButton.label }}\n </a>\n }\n </ng-template>\n </mat-menu>\n }\n }\n @if (displayedColumns.length) {\n <button\n [matMenuTriggerFor]=\"columnMenu\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"S\u00E9lectionner les colonnes\"\n >\n <mat-icon naturalIcon=\"view_column\" />\n </button>\n }\n }\n</div>\n\n<mat-menu #columnMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (column of displayedColumns; track column) {\n <div (click)=\"$event.stopPropagation(); column.checked = !column.checked; updateColumns()\" mat-menu-item>\n <mat-checkbox\n (click)=\"$event.stopPropagation()\"\n (change)=\"updateColumns()\"\n [(ngModel)]=\"column.checked\"\n >{{ column.label }}</mat-checkbox\n >\n </div>\n }\n </ng-template>\n</mat-menu>\n", styles: [".align-with-checkbox{padding-left:61px}\n"] }]
|
|
5517
|
-
}],
|
|
5452
|
+
}], propDecorators: { buttons: [{
|
|
5518
5453
|
type: Input
|
|
5519
5454
|
}], availableColumns: [{
|
|
5520
5455
|
type: Input
|
|
@@ -5545,18 +5480,18 @@ function getTabId(tab) {
|
|
|
5545
5480
|
* </mat-tab-group>
|
|
5546
5481
|
* ```
|
|
5547
5482
|
*/
|
|
5548
|
-
class NaturalLinkableTabDirective
|
|
5549
|
-
constructor(
|
|
5550
|
-
|
|
5551
|
-
this.component =
|
|
5552
|
-
this.route =
|
|
5553
|
-
this.router =
|
|
5483
|
+
class NaturalLinkableTabDirective {
|
|
5484
|
+
constructor() {
|
|
5485
|
+
this.destroyRef = inject(DestroyRef);
|
|
5486
|
+
this.component = inject(MatTabGroup);
|
|
5487
|
+
this.route = inject(ActivatedRoute);
|
|
5488
|
+
this.router = inject(Router);
|
|
5554
5489
|
/**
|
|
5555
5490
|
* If false, disables the persistent navigation
|
|
5556
5491
|
*/
|
|
5557
5492
|
this.naturalLinkableTab = true;
|
|
5558
5493
|
this.isLoadingRouteConfig = false;
|
|
5559
|
-
router.events.pipe(takeUntilDestroyed()).subscribe(event => {
|
|
5494
|
+
this.router.events.pipe(takeUntilDestroyed()).subscribe(event => {
|
|
5560
5495
|
if (event instanceof RouteConfigLoadStart) {
|
|
5561
5496
|
this.isLoadingRouteConfig = true;
|
|
5562
5497
|
}
|
|
@@ -5570,7 +5505,7 @@ class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
5570
5505
|
return;
|
|
5571
5506
|
}
|
|
5572
5507
|
// When url params change, update the mat-tab-group selected tab
|
|
5573
|
-
this.route.fragment.pipe(
|
|
5508
|
+
this.route.fragment.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(fragment => {
|
|
5574
5509
|
// Get index of tab that matches wanted name
|
|
5575
5510
|
const tabIndex = this.getTabIndex(fragment);
|
|
5576
5511
|
// If tab index is valid (>= 0) go to given fragment
|
|
@@ -5580,7 +5515,7 @@ class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
5580
5515
|
}
|
|
5581
5516
|
});
|
|
5582
5517
|
// When mat-tab-groups selected tab change, update url
|
|
5583
|
-
this.component.selectedTabChange.pipe(
|
|
5518
|
+
this.component.selectedTabChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(event => {
|
|
5584
5519
|
if (this.isLoadingRouteConfig) {
|
|
5585
5520
|
return;
|
|
5586
5521
|
}
|
|
@@ -5602,8 +5537,8 @@ class NaturalLinkableTabDirective extends NaturalAbstractController {
|
|
|
5602
5537
|
getTabIndex(fragment) {
|
|
5603
5538
|
return this.component._tabs.toArray().findIndex(tab => fragment === getTabId(tab));
|
|
5604
5539
|
}
|
|
5605
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalLinkableTabDirective, deps: [
|
|
5606
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalLinkableTabDirective, isStandalone: true, selector: "mat-tab-group[naturalLinkableTab]", inputs: { naturalLinkableTab: "naturalLinkableTab" },
|
|
5540
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalLinkableTabDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5541
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalLinkableTabDirective, isStandalone: true, selector: "mat-tab-group[naturalLinkableTab]", inputs: { naturalLinkableTab: "naturalLinkableTab" }, ngImport: i0 }); }
|
|
5607
5542
|
}
|
|
5608
5543
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalLinkableTabDirective, decorators: [{
|
|
5609
5544
|
type: Directive,
|
|
@@ -5611,7 +5546,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
5611
5546
|
selector: 'mat-tab-group[naturalLinkableTab]',
|
|
5612
5547
|
standalone: true,
|
|
5613
5548
|
}]
|
|
5614
|
-
}], ctorParameters: () => [
|
|
5549
|
+
}], ctorParameters: () => [], propDecorators: { naturalLinkableTab: [{
|
|
5615
5550
|
type: Input
|
|
5616
5551
|
}] } });
|
|
5617
5552
|
|
|
@@ -5657,13 +5592,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
5657
5592
|
* Usage would be: {{ element.priority | enum: 'Priority' | async }}
|
|
5658
5593
|
*/
|
|
5659
5594
|
class NaturalEnumPipe {
|
|
5660
|
-
constructor(
|
|
5661
|
-
this.enumService =
|
|
5595
|
+
constructor() {
|
|
5596
|
+
this.enumService = inject(NaturalEnumService);
|
|
5662
5597
|
}
|
|
5663
5598
|
transform(value, enumName) {
|
|
5664
5599
|
return this.enumService.getValueName(value, enumName);
|
|
5665
5600
|
}
|
|
5666
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalEnumPipe, deps: [
|
|
5601
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalEnumPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
5667
5602
|
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.3", ngImport: i0, type: NaturalEnumPipe, isStandalone: true, name: "enum" }); }
|
|
5668
5603
|
}
|
|
5669
5604
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalEnumPipe, decorators: [{
|
|
@@ -5672,7 +5607,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
5672
5607
|
name: 'enum',
|
|
5673
5608
|
standalone: true,
|
|
5674
5609
|
}]
|
|
5675
|
-
}]
|
|
5610
|
+
}] });
|
|
5676
5611
|
|
|
5677
5612
|
function isDate(value) {
|
|
5678
5613
|
return value instanceof Date && !isNaN(value.valueOf());
|
|
@@ -5834,6 +5769,9 @@ function densities(src, forImageSet) {
|
|
|
5834
5769
|
return result;
|
|
5835
5770
|
}
|
|
5836
5771
|
class NaturalSrcDensityDirective {
|
|
5772
|
+
constructor() {
|
|
5773
|
+
this.elementRef = inject(ElementRef);
|
|
5774
|
+
}
|
|
5837
5775
|
/**
|
|
5838
5776
|
* Automatically apply image selection based on screen density.
|
|
5839
5777
|
*
|
|
@@ -5866,10 +5804,7 @@ class NaturalSrcDensityDirective {
|
|
|
5866
5804
|
this.elementRef.nativeElement.src = src;
|
|
5867
5805
|
this.elementRef.nativeElement.srcset = densities(src, false);
|
|
5868
5806
|
}
|
|
5869
|
-
|
|
5870
|
-
this.elementRef = elementRef;
|
|
5871
|
-
}
|
|
5872
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSrcDensityDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5807
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSrcDensityDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5873
5808
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalSrcDensityDirective, isStandalone: true, selector: "img[naturalSrcDensity]", inputs: { naturalSrcDensity: "naturalSrcDensity" }, ngImport: i0 }); }
|
|
5874
5809
|
}
|
|
5875
5810
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSrcDensityDirective, decorators: [{
|
|
@@ -5878,12 +5813,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
5878
5813
|
selector: 'img[naturalSrcDensity]',
|
|
5879
5814
|
standalone: true,
|
|
5880
5815
|
}]
|
|
5881
|
-
}],
|
|
5816
|
+
}], propDecorators: { naturalSrcDensity: [{
|
|
5882
5817
|
type: Input,
|
|
5883
5818
|
args: [{ required: true }]
|
|
5884
5819
|
}] } });
|
|
5885
5820
|
|
|
5886
5821
|
class NaturalBackgroundDensityDirective {
|
|
5822
|
+
constructor() {
|
|
5823
|
+
this.elementRef = inject(ElementRef);
|
|
5824
|
+
}
|
|
5887
5825
|
/**
|
|
5888
5826
|
* Automatically apply background image selection based on screen density.
|
|
5889
5827
|
*
|
|
@@ -5928,10 +5866,7 @@ class NaturalBackgroundDensityDirective {
|
|
|
5928
5866
|
this.elementRef.nativeElement.style.backgroundImage = responsive;
|
|
5929
5867
|
}
|
|
5930
5868
|
}
|
|
5931
|
-
|
|
5932
|
-
this.elementRef = elementRef;
|
|
5933
|
-
}
|
|
5934
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalBackgroundDensityDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5869
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalBackgroundDensityDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
5935
5870
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalBackgroundDensityDirective, isStandalone: true, selector: "[naturalBackgroundDensity]", inputs: { naturalBackgroundDensity: "naturalBackgroundDensity" }, ngImport: i0 }); }
|
|
5936
5871
|
}
|
|
5937
5872
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalBackgroundDensityDirective, decorators: [{
|
|
@@ -5940,16 +5875,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
5940
5875
|
selector: '[naturalBackgroundDensity]',
|
|
5941
5876
|
standalone: true,
|
|
5942
5877
|
}]
|
|
5943
|
-
}],
|
|
5878
|
+
}], propDecorators: { naturalBackgroundDensity: [{
|
|
5944
5879
|
type: Input,
|
|
5945
5880
|
args: [{ required: true }]
|
|
5946
5881
|
}] } });
|
|
5947
5882
|
|
|
5948
5883
|
class NaturalDialogTriggerComponent {
|
|
5949
|
-
constructor(
|
|
5950
|
-
this.dialog =
|
|
5951
|
-
this.route =
|
|
5952
|
-
this.router =
|
|
5884
|
+
constructor() {
|
|
5885
|
+
this.dialog = inject(MatDialog);
|
|
5886
|
+
this.route = inject(ActivatedRoute);
|
|
5887
|
+
this.router = inject(Router);
|
|
5953
5888
|
// Data from activated route
|
|
5954
5889
|
this.triggerConfig = this.route.snapshot.data.trigger;
|
|
5955
5890
|
// Get data relative to dialog service configuration
|
|
@@ -6000,7 +5935,7 @@ class NaturalDialogTriggerComponent {
|
|
|
6000
5935
|
this.router.navigate(['.'], { relativeTo: this.route.parent });
|
|
6001
5936
|
}
|
|
6002
5937
|
}
|
|
6003
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDialogTriggerComponent, deps: [
|
|
5938
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDialogTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6004
5939
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalDialogTriggerComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
|
|
6005
5940
|
}
|
|
6006
5941
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDialogTriggerComponent, decorators: [{
|
|
@@ -6009,7 +5944,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
6009
5944
|
template: '',
|
|
6010
5945
|
standalone: true,
|
|
6011
5946
|
}]
|
|
6012
|
-
}], ctorParameters: () => [
|
|
5947
|
+
}], ctorParameters: () => [] });
|
|
6013
5948
|
|
|
6014
5949
|
const NATURAL_SEO_CONFIG = new InjectionToken('Configuration for SEO service');
|
|
6015
5950
|
function stripTags(str) {
|
|
@@ -6030,15 +5965,16 @@ function stripTags(str) {
|
|
|
6030
5965
|
* configured for it in the routing.
|
|
6031
5966
|
*/
|
|
6032
5967
|
class NaturalSeoService {
|
|
6033
|
-
constructor(
|
|
6034
|
-
this.router =
|
|
6035
|
-
this.titleService =
|
|
6036
|
-
this.metaTagService =
|
|
6037
|
-
this.document =
|
|
6038
|
-
this.locale =
|
|
5968
|
+
constructor() {
|
|
5969
|
+
this.router = inject(Router);
|
|
5970
|
+
this.titleService = inject(Title);
|
|
5971
|
+
this.metaTagService = inject(Meta);
|
|
5972
|
+
this.document = inject(DOCUMENT);
|
|
5973
|
+
this.locale = inject(LOCALE_ID);
|
|
6039
5974
|
this.config = {
|
|
6040
5975
|
applicationName: '',
|
|
6041
5976
|
};
|
|
5977
|
+
const configToken = inject(NATURAL_SEO_CONFIG);
|
|
6042
5978
|
combineLatest({
|
|
6043
5979
|
config: configToken instanceof Observable ? configToken.pipe(startWith$1(this.config)) : of(configToken),
|
|
6044
5980
|
navigationEnd: this.router.events.pipe(filter$1(event => event instanceof NavigationEnd)),
|
|
@@ -6226,7 +6162,7 @@ class NaturalSeoService {
|
|
|
6226
6162
|
}
|
|
6227
6163
|
return of(seo);
|
|
6228
6164
|
}
|
|
6229
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSeoService, deps: [
|
|
6165
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSeoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6230
6166
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSeoService, providedIn: 'root' }); }
|
|
6231
6167
|
}
|
|
6232
6168
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSeoService, decorators: [{
|
|
@@ -6234,16 +6170,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
6234
6170
|
args: [{
|
|
6235
6171
|
providedIn: 'root',
|
|
6236
6172
|
}]
|
|
6237
|
-
}], ctorParameters: () => [
|
|
6238
|
-
type: Inject,
|
|
6239
|
-
args: [NATURAL_SEO_CONFIG]
|
|
6240
|
-
}] }, { type: i2$3.Router }, { type: i2$4.Title }, { type: i2$4.Meta }, { type: Document, decorators: [{
|
|
6241
|
-
type: Inject,
|
|
6242
|
-
args: [DOCUMENT]
|
|
6243
|
-
}] }, { type: undefined, decorators: [{
|
|
6244
|
-
type: Inject,
|
|
6245
|
-
args: [LOCALE_ID]
|
|
6246
|
-
}] }] });
|
|
6173
|
+
}], ctorParameters: () => [] });
|
|
6247
6174
|
|
|
6248
6175
|
/**
|
|
6249
6176
|
* Configure and starts `NaturalSeoService`
|
|
@@ -6311,7 +6238,7 @@ class NaturalDetailHeaderComponent {
|
|
|
6311
6238
|
return this.getRootLink().concat([id]);
|
|
6312
6239
|
}
|
|
6313
6240
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDetailHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6314
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalDetailHeaderComponent, isStandalone: true, selector: "natural-detail-header", inputs: { currentBaseUrl: "currentBaseUrl", isPanel: "isPanel", icon: "icon", label: "label", rootLabel: "rootLabel", newLabel: "newLabel", model: "model", breadcrumbs: "breadcrumbs", listRoute: "listRoute", listFragment: "listFragment", link: "link" }, ngImport: i0, template: "<div class=\"breadcrumb\">\n @if (rootLabel || label) {\n <a [routerLink]=\"isPanel ? [] : getRootLink()\" [fragment]=\"listFragment\" color=\"primary\" mat-button>{{\n rootLabel || label\n }}</a>\n }\n @for (parent of breadcrumbs; track parent.id) {\n /\n <a [routerLink]=\"isPanel ? [] : getLink(parent.id)\" color=\"primary\" mat-button>\n {{ parent?.fullName || parent?.name }}</a\n >\n }\n</div>\n\n<div class=\"body\">\n @if (icon) {\n <div style=\"width: 30px\">\n <mat-icon [naturalIcon]=\"icon\" />\n </div>\n }\n @if (!model.id) {\n <div class=\"mat-headline-5 nat-no-margin newLabel\">{{ newLabel }}</div>\n }\n @if (model.id) {\n <div class=\"mat-headline-5 nat-no-margin label\">{{ model.name || model.fullName || label }}</div>\n }\n <div>\n <ng-content />\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host .breadcrumb,:host .body{display:flex;flex-direction:row;align-items:center}:host .breadcrumb{position:relative;top:5px}:host .body{min-height:40px}:host .body>*:not(:last-child){margin-right:5px}:host .body .label,:host .body .newLabel{flex:1}@media screen and (max-width: 600px){:host .body{flex-direction:column;align-items:flex-start}:host .body>*:not(:last-child){margin-bottom:10px!important}:host .body mat-icon{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
6241
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalDetailHeaderComponent, isStandalone: true, selector: "natural-detail-header", inputs: { currentBaseUrl: "currentBaseUrl", isPanel: "isPanel", icon: "icon", label: "label", rootLabel: "rootLabel", newLabel: "newLabel", model: "model", breadcrumbs: "breadcrumbs", listRoute: "listRoute", listFragment: "listFragment", link: "link" }, ngImport: i0, template: "<div class=\"breadcrumb\">\n @if (rootLabel || label) {\n <a [routerLink]=\"isPanel ? [] : getRootLink()\" [fragment]=\"listFragment\" color=\"primary\" mat-button>{{\n rootLabel || label\n }}</a>\n }\n @for (parent of breadcrumbs; track parent.id) {\n /\n <a [routerLink]=\"isPanel ? [] : getLink(parent.id)\" color=\"primary\" mat-button>\n {{ parent?.fullName || parent?.name }}</a\n >\n }\n</div>\n\n<div class=\"body\">\n @if (icon) {\n <div style=\"width: 30px\">\n <mat-icon [naturalIcon]=\"icon\" />\n </div>\n }\n @if (!model.id) {\n <div class=\"mat-headline-5 nat-no-margin newLabel\">{{ newLabel }}</div>\n }\n @if (model.id) {\n <div class=\"mat-headline-5 nat-no-margin label\">{{ model.name || model.fullName || label }}</div>\n }\n <div>\n <ng-content />\n </div>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host .breadcrumb,:host .body{display:flex;flex-direction:row;align-items:center}:host .breadcrumb{position:relative;top:5px}:host .body{min-height:40px}:host .body>*:not(:last-child){margin-right:5px}:host .body .label,:host .body .newLabel{flex:1}@media screen and (max-width: 600px){:host .body{flex-direction:column;align-items:flex-start}:host .body>*:not(:last-child){margin-bottom:10px!important}:host .body mat-icon{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }] }); }
|
|
6315
6242
|
}
|
|
6316
6243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalDetailHeaderComponent, decorators: [{
|
|
6317
6244
|
type: Component,
|
|
@@ -6345,9 +6272,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
6345
6272
|
* Public API Surface of natural
|
|
6346
6273
|
*/
|
|
6347
6274
|
|
|
6348
|
-
class TypeSelectComponent
|
|
6349
|
-
constructor(
|
|
6350
|
-
|
|
6275
|
+
class TypeSelectComponent {
|
|
6276
|
+
constructor() {
|
|
6277
|
+
this.destroyRef = inject(DestroyRef);
|
|
6351
6278
|
this.renderedValue = new BehaviorSubject('');
|
|
6352
6279
|
this.requireValueCtrl = false;
|
|
6353
6280
|
this.operators = possibleDiscreteOperators;
|
|
@@ -6363,6 +6290,7 @@ class TypeSelectComponent extends NaturalAbstractController {
|
|
|
6363
6290
|
multiple: true,
|
|
6364
6291
|
operators: true,
|
|
6365
6292
|
};
|
|
6293
|
+
const data = inject(NATURAL_DROPDOWN_DATA);
|
|
6366
6294
|
this.configuration = { ...this.defaults, ...data.configuration };
|
|
6367
6295
|
// Immediately initValidators and everytime the operator change later
|
|
6368
6296
|
this.operatorCtrl.valueChanges.pipe(startWith(null)).subscribe(() => this.initValidators());
|
|
@@ -6434,7 +6362,7 @@ class TypeSelectComponent extends NaturalAbstractController {
|
|
|
6434
6362
|
const items$ = Array.isArray(this.configuration.items)
|
|
6435
6363
|
? of(this.configuration.items)
|
|
6436
6364
|
: this.configuration.items;
|
|
6437
|
-
return items$.pipe(
|
|
6365
|
+
return items$.pipe(takeUntilDestroyed(this.destroyRef), map(items => {
|
|
6438
6366
|
this.items = items;
|
|
6439
6367
|
// Reload selection, according to possible values from configuration
|
|
6440
6368
|
const possibleIds = this.items.map(item => this.getId(item));
|
|
@@ -6489,16 +6417,13 @@ class TypeSelectComponent extends NaturalAbstractController {
|
|
|
6489
6417
|
throw new Error('Unsupported operator key: ' + key);
|
|
6490
6418
|
}
|
|
6491
6419
|
}
|
|
6492
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeSelectComponent, deps: [
|
|
6493
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeSelectComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "list", first: true, predicate: MatSelectionList, descendants: true }],
|
|
6420
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6421
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeSelectComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "list", first: true, predicate: MatSelectionList, descendants: true }], ngImport: i0, template: "<form [formGroup]=\"form\">\n @if (configuration.operators) {\n <mat-form-field style=\"max-width: 7em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n\n @if (requireValueCtrl) {\n <mat-selection-list [formControl]=\"valueCtrl\">\n @for (item of items; track item) {\n <mat-list-option [value]=\"getId(item)\" togglePosition=\"before\">\n {{ getDisplay(item) }}\n </mat-list-option>\n }\n </mat-selection-list>\n }\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i5$2.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i5$2.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }] }); }
|
|
6494
6422
|
}
|
|
6495
6423
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeSelectComponent, decorators: [{
|
|
6496
6424
|
type: Component,
|
|
6497
6425
|
args: [{ standalone: true, imports: [FormsModule, ReactiveFormsModule, MatFormFieldModule, MatSelectModule, MatOptionModule, MatListModule], template: "<form [formGroup]=\"form\">\n @if (configuration.operators) {\n <mat-form-field style=\"max-width: 7em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n\n @if (requireValueCtrl) {\n <mat-selection-list [formControl]=\"valueCtrl\">\n @for (item of items; track item) {\n <mat-list-option [value]=\"getId(item)\" togglePosition=\"before\">\n {{ getDisplay(item) }}\n </mat-list-option>\n }\n </mat-selection-list>\n }\n</form>\n" }]
|
|
6498
|
-
}], ctorParameters: () => [
|
|
6499
|
-
type: Inject,
|
|
6500
|
-
args: [NATURAL_DROPDOWN_DATA]
|
|
6501
|
-
}] }], propDecorators: { list: [{
|
|
6426
|
+
}], ctorParameters: () => [], propDecorators: { list: [{
|
|
6502
6427
|
type: ViewChild,
|
|
6503
6428
|
args: [MatSelectionList, { static: false }]
|
|
6504
6429
|
}] } });
|
|
@@ -6614,7 +6539,7 @@ class ExternalFormControlMatcher extends ErrorStateMatcher {
|
|
|
6614
6539
|
return false;
|
|
6615
6540
|
}
|
|
6616
6541
|
}
|
|
6617
|
-
class AbstractSelect
|
|
6542
|
+
class AbstractSelect {
|
|
6618
6543
|
/**
|
|
6619
6544
|
* If the field is required
|
|
6620
6545
|
*/
|
|
@@ -6626,7 +6551,6 @@ class AbstractSelect extends NaturalAbstractController {
|
|
|
6626
6551
|
return !!this._required;
|
|
6627
6552
|
}
|
|
6628
6553
|
constructor(ngControl) {
|
|
6629
|
-
super();
|
|
6630
6554
|
this.ngControl = ngControl;
|
|
6631
6555
|
/**
|
|
6632
6556
|
* Mat-hint
|
|
@@ -6758,13 +6682,13 @@ class AbstractSelect extends NaturalAbstractController {
|
|
|
6758
6682
|
}
|
|
6759
6683
|
this.internalCtrl.updateValueAndValidity();
|
|
6760
6684
|
}
|
|
6761
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: AbstractSelect, deps: [{ token:
|
|
6762
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: AbstractSelect, isStandalone: true, inputs: { placeholder: "placeholder", hint: "hint", required: "required", navigateTo: "navigateTo", clearLabel: "clearLabel", showIcon: "showIcon", icon: "icon", displayWith: "displayWith", disabled: "disabled" }, outputs: { selectionChange: "selectionChange", blur: "blur" },
|
|
6685
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: AbstractSelect, deps: [{ token: i1$2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
6686
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: AbstractSelect, isStandalone: true, inputs: { placeholder: "placeholder", hint: "hint", required: "required", navigateTo: "navigateTo", clearLabel: "clearLabel", showIcon: "showIcon", icon: "icon", displayWith: "displayWith", disabled: "disabled" }, outputs: { selectionChange: "selectionChange", blur: "blur" }, ngImport: i0 }); }
|
|
6763
6687
|
}
|
|
6764
6688
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: AbstractSelect, decorators: [{
|
|
6765
6689
|
type: Directive,
|
|
6766
6690
|
args: [{ standalone: true }]
|
|
6767
|
-
}], ctorParameters: () => [{ type:
|
|
6691
|
+
}], ctorParameters: () => [{ type: i1$2.NgControl, decorators: [{
|
|
6768
6692
|
type: Optional
|
|
6769
6693
|
}, {
|
|
6770
6694
|
type: Self
|
|
@@ -6827,6 +6751,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
6827
6751
|
class NaturalSelectComponent extends AbstractSelect {
|
|
6828
6752
|
constructor() {
|
|
6829
6753
|
super(...arguments);
|
|
6754
|
+
this.destroyRef = inject(DestroyRef);
|
|
6830
6755
|
/**
|
|
6831
6756
|
* If false, allows to input free string without selecting an option from autocomplete suggestions
|
|
6832
6757
|
*/
|
|
@@ -6887,7 +6812,7 @@ class NaturalSelectComponent extends AbstractSelect {
|
|
|
6887
6812
|
}
|
|
6888
6813
|
ngAfterViewInit() {
|
|
6889
6814
|
this.internalCtrl.valueChanges
|
|
6890
|
-
.pipe(
|
|
6815
|
+
.pipe(takeUntilDestroyed(this.destroyRef), distinctUntilChanged(), debounceTime$1(300))
|
|
6891
6816
|
.subscribe(val => this.search(val));
|
|
6892
6817
|
}
|
|
6893
6818
|
onInternalFormChange() {
|
|
@@ -6946,7 +6871,7 @@ class NaturalSelectComponent extends AbstractSelect {
|
|
|
6946
6871
|
return;
|
|
6947
6872
|
}
|
|
6948
6873
|
// Init query, and when query results arrive, finish loading, and count items
|
|
6949
|
-
this.items = this.service.watchAll(this.variablesManager).pipe(
|
|
6874
|
+
this.items = this.service.watchAll(this.variablesManager).pipe(takeUntilDestroyed(this.destroyRef), finalize$1(() => (this.loading = false)), map(data => {
|
|
6950
6875
|
this.loading = false;
|
|
6951
6876
|
this.nbTotal = data.length;
|
|
6952
6877
|
const nbListed = Math.min(data.length, this.pageSize);
|
|
@@ -7029,7 +6954,7 @@ class NaturalSelectComponent extends AbstractSelect {
|
|
|
7029
6954
|
return this.variablesManager.variables.value;
|
|
7030
6955
|
}
|
|
7031
6956
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
7032
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalSelectComponent, isStandalone: true, selector: "natural-select", inputs: { service: "service", optionRequired: "optionRequired", searchField: "searchField", searchOperator: "searchOperator", filter: "filter", disabled: "disabled" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "autoTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Autocomplete menu -->\n<mat-autocomplete\n #ac=\"matAutocomplete\"\n (optionSelected)=\"propagateValue($event.option.value)\"\n [displayWith]=\"getDisplayFn()\"\n panelWidth=\"auto !important\"\n>\n @for (item of items | async; track $index) {\n <mat-option [value]=\"item\">\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultACItem\"\n />\n </mat-option>\n }\n @if (hasMoreItems) {\n <div class=\"mat-caption\" i18n style=\"padding: 5px 10px\">Saisir pour chercher parmi {{ nbTotal }} r\u00E9sultats</div>\n }\n</mat-autocomplete>\n\n<ng-template #defaultACItem let-item=\"item\">\n <span>{{ getDisplayFn()(item) }}</span>\n</ng-template>\n\n<!-- Input for autocomplete -->\n<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n\n <input\n (blur)=\"onBlur()\"\n (change)=\"onInternalFormChange()\"\n (click)=\"autoTrigger.openPanel()\"\n (focus)=\"startSearch()\"\n (keydown.esc)=\"reset()\"\n (keydown.enter)=\"onKeyEnter()\"\n [formControl]=\"internalCtrl\"\n [matAutocomplete]=\"ac\"\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n [errorStateMatcher]=\"matcher\"\n />\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <!-- Meta data -->\n @if (!loading && showIcon) {\n <mat-icon [naturalIcon]=\"icon\" matIconPrefix />\n }\n\n @if (loading) {\n <div class=\"loading-wrapper\" matIconPrefix>\n <mat-progress-spinner [diameter]=\"21\" [strokeWidth]=\"5\" mode=\"indeterminate\" />\n </div>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.pristine && internalCtrl.value && internalCtrl.enabled && !clearLabel) {\n <button (click)=\"clear()\" mat-icon-button i18n-matTooltip matTooltip=\"D\u00E9s\u00E9lectionner\">\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.dirty && internalCtrl.enabled && optionRequired) {\n <button (click)=\"reset()\" mat-icon-button i18n-matTooltip matTooltip=\"Annuler la recherche\">\n <mat-icon naturalIcon=\"undo\" />\n </button>\n }\n @if (internalCtrl.pristine && internalCtrl.value && navigateTo) {\n <button\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n >\n <mat-icon naturalIcon=\"open_in_browser\" />\n </button>\n }\n </div>\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n\n<!-- Additional (un)select/(un)link buttons for more visual cohesion with natural-relations --><!-- [clearLabel] and/or [selectLabel] has to be given as attribute input -->\n@if (showClearButton()) {\n <div class=\"external-buttons\">\n @if (showClearButton()) {\n <button (click)=\"clear()\" color=\"warn\" mat-button>{{ clearLabel }}</button>\n }\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host>mat-autocomplete{margin-bottom:0!important}:host .external-buttons{display:flex;flex-direction:row}:host .external-buttons>*:not(:last-child){margin-right:10px}:host .loading-wrapper{display:flex;justify-content:center;align-items:center;width:48px;height:48px}\n"], dependencies: [{ kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1$
|
|
6957
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalSelectComponent, isStandalone: true, selector: "natural-select", inputs: { service: "service", optionRequired: "optionRequired", searchField: "searchField", searchOperator: "searchOperator", filter: "filter", disabled: "disabled" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "autoTrigger", first: true, predicate: MatAutocompleteTrigger, descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- Autocomplete menu -->\n<mat-autocomplete\n #ac=\"matAutocomplete\"\n (optionSelected)=\"propagateValue($event.option.value)\"\n [displayWith]=\"getDisplayFn()\"\n panelWidth=\"auto !important\"\n>\n @for (item of items | async; track $index) {\n <mat-option [value]=\"item\">\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultACItem\"\n />\n </mat-option>\n }\n @if (hasMoreItems) {\n <div class=\"mat-caption\" i18n style=\"padding: 5px 10px\">Saisir pour chercher parmi {{ nbTotal }} r\u00E9sultats</div>\n }\n</mat-autocomplete>\n\n<ng-template #defaultACItem let-item=\"item\">\n <span>{{ getDisplayFn()(item) }}</span>\n</ng-template>\n\n<!-- Input for autocomplete -->\n<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n\n <input\n (blur)=\"onBlur()\"\n (change)=\"onInternalFormChange()\"\n (click)=\"autoTrigger.openPanel()\"\n (focus)=\"startSearch()\"\n (keydown.esc)=\"reset()\"\n (keydown.enter)=\"onKeyEnter()\"\n [formControl]=\"internalCtrl\"\n [matAutocomplete]=\"ac\"\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n [errorStateMatcher]=\"matcher\"\n />\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <!-- Meta data -->\n @if (!loading && showIcon) {\n <mat-icon [naturalIcon]=\"icon\" matIconPrefix />\n }\n\n @if (loading) {\n <div class=\"loading-wrapper\" matIconPrefix>\n <mat-progress-spinner [diameter]=\"21\" [strokeWidth]=\"5\" mode=\"indeterminate\" />\n </div>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.pristine && internalCtrl.value && internalCtrl.enabled && !clearLabel) {\n <button (click)=\"clear()\" mat-icon-button i18n-matTooltip matTooltip=\"D\u00E9s\u00E9lectionner\">\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.dirty && internalCtrl.enabled && optionRequired) {\n <button (click)=\"reset()\" mat-icon-button i18n-matTooltip matTooltip=\"Annuler la recherche\">\n <mat-icon naturalIcon=\"undo\" />\n </button>\n }\n @if (internalCtrl.pristine && internalCtrl.value && navigateTo) {\n <button\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n >\n <mat-icon naturalIcon=\"open_in_browser\" />\n </button>\n }\n </div>\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n\n<!-- Additional (un)select/(un)link buttons for more visual cohesion with natural-relations --><!-- [clearLabel] and/or [selectLabel] has to be given as attribute input -->\n@if (showClearButton()) {\n <div class=\"external-buttons\">\n @if (showClearButton()) {\n <button (click)=\"clear()\" color=\"warn\" mat-button>{{ clearLabel }}</button>\n }\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host>mat-autocomplete{margin-bottom:0!important}:host .external-buttons{display:flex;flex-direction:row}:host .external-buttons>*:not(:last-child){margin-right:10px}:host .loading-wrapper{display:flex;justify-content:center;align-items:center;width:48px;height:48px}\n"], dependencies: [{ kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1$5.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1$5.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$3.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i1$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
7033
6958
|
}
|
|
7034
6959
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectComponent, decorators: [{
|
|
7035
6960
|
type: Component,
|
|
@@ -7090,7 +7015,7 @@ class TypeNaturalSelectComponent extends AbstractAssociationSelectComponent {
|
|
|
7090
7015
|
return selectedName;
|
|
7091
7016
|
}
|
|
7092
7017
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeNaturalSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
7093
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeNaturalSelectComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field style=\"max-width: 7em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n @if (configuration && requireValueCtrl) {\n <natural-select\n style=\"display: inline\"\n [formControl]=\"valueCtrl\"\n [placeholder]=\"configuration.placeholder\"\n [service]=\"configuration.service\"\n [filter]=\"configuration.filter\"\n />\n }\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
7018
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeNaturalSelectComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field style=\"max-width: 7em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n @if (configuration && requireValueCtrl) {\n <natural-select\n style=\"display: inline\"\n [formControl]=\"valueCtrl\"\n [placeholder]=\"configuration.placeholder\"\n [service]=\"configuration.service\"\n [filter]=\"configuration.filter\"\n />\n }\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "component", type: NaturalSelectComponent, selector: "natural-select", inputs: ["service", "optionRequired", "searchField", "searchOperator", "filter", "disabled"] }] }); }
|
|
7094
7019
|
}
|
|
7095
7020
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeNaturalSelectComponent, decorators: [{
|
|
7096
7021
|
type: Component,
|
|
@@ -7113,11 +7038,12 @@ let InvalidWithValueStateMatcher$1 = class InvalidWithValueStateMatcher {
|
|
|
7113
7038
|
}
|
|
7114
7039
|
};
|
|
7115
7040
|
class TypeTextComponent {
|
|
7116
|
-
constructor(
|
|
7117
|
-
this.dropdownRef =
|
|
7041
|
+
constructor() {
|
|
7042
|
+
this.dropdownRef = inject(NaturalDropdownRef);
|
|
7118
7043
|
this.renderedValue = new BehaviorSubject('');
|
|
7119
7044
|
this.formCtrl = new FormControl('', { nonNullable: true });
|
|
7120
7045
|
this.matcher = new InvalidWithValueStateMatcher$1();
|
|
7046
|
+
const data = inject(NATURAL_DROPDOWN_DATA);
|
|
7121
7047
|
this.formCtrl.valueChanges.subscribe(value => {
|
|
7122
7048
|
this.renderedValue.next(value === null ? '' : this.formCtrl.value + '');
|
|
7123
7049
|
});
|
|
@@ -7146,20 +7072,17 @@ class TypeTextComponent {
|
|
|
7146
7072
|
this.dropdownRef.close(); // undefined value, discard changes / prevent to add a condition (on new fields
|
|
7147
7073
|
}
|
|
7148
7074
|
}
|
|
7149
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeTextComponent, deps: [
|
|
7150
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeTextComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n (keydown.enter)=\"close()\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"formCtrl\"\n [required]=\"true\"\n matInput\n type=\"text\"\n autocomplete=\"off\"\n />\n @if (formCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n</mat-form-field>\n", styles: [":host input::-webkit-outer-spin-button,:host input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type:
|
|
7075
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7076
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeTextComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n (keydown.enter)=\"close()\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"formCtrl\"\n [required]=\"true\"\n matInput\n type=\"text\"\n autocomplete=\"off\"\n />\n @if (formCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n</mat-form-field>\n", styles: [":host input::-webkit-outer-spin-button,:host input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
7151
7077
|
}
|
|
7152
7078
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeTextComponent, decorators: [{
|
|
7153
7079
|
type: Component,
|
|
7154
7080
|
args: [{ standalone: true, imports: [MatFormFieldModule, MatInputModule, FormsModule, ReactiveFormsModule], template: "<mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n (keydown.enter)=\"close()\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"formCtrl\"\n [required]=\"true\"\n matInput\n type=\"text\"\n autocomplete=\"off\"\n />\n @if (formCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n</mat-form-field>\n", styles: [":host input::-webkit-outer-spin-button,:host input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"] }]
|
|
7155
|
-
}], ctorParameters: () => [
|
|
7156
|
-
type: Inject,
|
|
7157
|
-
args: [NATURAL_DROPDOWN_DATA]
|
|
7158
|
-
}] }, { type: NaturalDropdownRef }] });
|
|
7081
|
+
}], ctorParameters: () => [] });
|
|
7159
7082
|
|
|
7160
7083
|
class TypeNumberComponent {
|
|
7161
|
-
constructor(
|
|
7162
|
-
this.dropdownRef =
|
|
7084
|
+
constructor() {
|
|
7085
|
+
this.dropdownRef = inject(NaturalDropdownRef);
|
|
7163
7086
|
this.renderedValue = new BehaviorSubject('');
|
|
7164
7087
|
this.operatorCtrl = new FormControl('equal', { nonNullable: true });
|
|
7165
7088
|
this.valueCtrl = new FormControl();
|
|
@@ -7174,6 +7097,7 @@ class TypeNumberComponent {
|
|
|
7174
7097
|
max: null,
|
|
7175
7098
|
step: null,
|
|
7176
7099
|
};
|
|
7100
|
+
const data = inject(NATURAL_DROPDOWN_DATA);
|
|
7177
7101
|
this.configuration = { ...this.defaults, ...data.configuration };
|
|
7178
7102
|
merge$1(this.operatorCtrl.valueChanges, this.valueCtrl.valueChanges).subscribe(() => {
|
|
7179
7103
|
const rendered = this.getRenderedValue();
|
|
@@ -7239,16 +7163,13 @@ class TypeNumberComponent {
|
|
|
7239
7163
|
return operator.label + ' ' + this.valueCtrl.value;
|
|
7240
7164
|
}
|
|
7241
7165
|
}
|
|
7242
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeNumberComponent, deps: [
|
|
7243
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeNumberComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field style=\"max-width: 4em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n (keydown.enter)=\"close()\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"valueCtrl\"\n [attr.max]=\"configuration.max\"\n [attr.min]=\"configuration.min\"\n [required]=\"true\"\n [step]=\"configuration.step\"\n matInput\n type=\"number\"\n />\n @if (valueCtrl.hasError('min')) {\n <mat-error>< {{ configuration.min }}</mat-error>\n }\n @if (valueCtrl.hasError('max')) {\n <mat-error>> {{ configuration.max }}</mat-error>\n }\n </mat-form-field>\n</form>\n", styles: [":host input::-webkit-outer-spin-button,:host input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
7166
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeNumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7167
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeNumberComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field style=\"max-width: 4em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n (keydown.enter)=\"close()\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"valueCtrl\"\n [attr.max]=\"configuration.max\"\n [attr.min]=\"configuration.min\"\n [required]=\"true\"\n [step]=\"configuration.step\"\n matInput\n type=\"number\"\n />\n @if (valueCtrl.hasError('min')) {\n <mat-error>< {{ configuration.min }}</mat-error>\n }\n @if (valueCtrl.hasError('max')) {\n <mat-error>> {{ configuration.max }}</mat-error>\n }\n </mat-form-field>\n</form>\n", styles: [":host input::-webkit-outer-spin-button,:host input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.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$2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
|
|
7244
7168
|
}
|
|
7245
7169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeNumberComponent, decorators: [{
|
|
7246
7170
|
type: Component,
|
|
7247
7171
|
args: [{ standalone: true, imports: [FormsModule, ReactiveFormsModule, MatFormFieldModule, MatSelectModule, MatOptionModule, MatInputModule], template: "<form [formGroup]=\"form\">\n <mat-form-field style=\"max-width: 4em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label i18n>Valeur</mat-label>\n <input\n (keydown.enter)=\"close()\"\n [errorStateMatcher]=\"matcher\"\n [formControl]=\"valueCtrl\"\n [attr.max]=\"configuration.max\"\n [attr.min]=\"configuration.min\"\n [required]=\"true\"\n [step]=\"configuration.step\"\n matInput\n type=\"number\"\n />\n @if (valueCtrl.hasError('min')) {\n <mat-error>< {{ configuration.min }}</mat-error>\n }\n @if (valueCtrl.hasError('max')) {\n <mat-error>> {{ configuration.max }}</mat-error>\n }\n </mat-form-field>\n</form>\n", styles: [":host input::-webkit-outer-spin-button,:host input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}\n"] }]
|
|
7248
|
-
}], ctorParameters: () => [
|
|
7249
|
-
type: Inject,
|
|
7250
|
-
args: [NATURAL_DROPDOWN_DATA]
|
|
7251
|
-
}] }, { type: NaturalDropdownRef }] });
|
|
7172
|
+
}], ctorParameters: () => [] });
|
|
7252
7173
|
|
|
7253
7174
|
class HierarchicFlatNode {
|
|
7254
7175
|
constructor(node, name, level = 0, expandable = false, selectable = true, deselectable = true) {
|
|
@@ -7274,8 +7195,8 @@ class HierarchicModelNode {
|
|
|
7274
7195
|
}
|
|
7275
7196
|
|
|
7276
7197
|
class NaturalHierarchicSelectorService {
|
|
7277
|
-
constructor(
|
|
7278
|
-
this.injector =
|
|
7198
|
+
constructor() {
|
|
7199
|
+
this.injector = inject(Injector);
|
|
7279
7200
|
/**
|
|
7280
7201
|
* Stores the global result of the tree
|
|
7281
7202
|
* This observable contains Node.
|
|
@@ -7511,22 +7432,22 @@ class NaturalHierarchicSelectorService {
|
|
|
7511
7432
|
const node = this.dataChange.value.find(n => n.model.id === item.id && n.model.__typename === item.__typename);
|
|
7512
7433
|
return node || new HierarchicModelNode(item, configuration);
|
|
7513
7434
|
}
|
|
7514
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorService, deps: [
|
|
7435
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
7515
7436
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorService, providedIn: 'root' }); }
|
|
7516
7437
|
}
|
|
7517
7438
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorService, decorators: [{
|
|
7518
7439
|
type: Injectable,
|
|
7519
7440
|
args: [{ providedIn: 'root' }]
|
|
7520
|
-
}]
|
|
7441
|
+
}] });
|
|
7521
7442
|
|
|
7522
7443
|
class FacetSelectorComponent {
|
|
7523
|
-
constructor(
|
|
7524
|
-
this.data =
|
|
7525
|
-
this.dropdownRef =
|
|
7444
|
+
constructor() {
|
|
7445
|
+
this.data = inject(NATURAL_DROPDOWN_DATA);
|
|
7446
|
+
this.dropdownRef = inject(NaturalDropdownRef);
|
|
7526
7447
|
// Never has a real value
|
|
7527
7448
|
this.renderedValue = new BehaviorSubject('');
|
|
7449
|
+
this.facets = this.data.configuration.facets;
|
|
7528
7450
|
this.selection = null;
|
|
7529
|
-
this.facets = data.configuration.facets;
|
|
7530
7451
|
}
|
|
7531
7452
|
/**
|
|
7532
7453
|
* Get value, including rich object types
|
|
@@ -7551,16 +7472,13 @@ class FacetSelectorComponent {
|
|
|
7551
7472
|
isDirty() {
|
|
7552
7473
|
return true;
|
|
7553
7474
|
}
|
|
7554
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: FacetSelectorComponent, deps: [
|
|
7555
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: FacetSelectorComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if (data.title) {\n <div class=\"dropdown-title mat-body-2\">{{ data.title }}</div>\n}\n<mat-nav-list>\n @for (facet of facets; track $index) {\n <mat-list-item (click)=\"selection = facet; close()\">\n <a>{{ facet.display }}</a>\n </mat-list-item>\n }\n</mat-nav-list>\n", styles: [".mat-nav-list{padding:0}.dropdown-title{opacity:.7;padding:5px;font-variant:all-small-caps;font-size:18px}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i5.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }] }); }
|
|
7475
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: FacetSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7476
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: FacetSelectorComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if (data.title) {\n <div class=\"dropdown-title mat-body-2\">{{ data.title }}</div>\n}\n<mat-nav-list>\n @for (facet of facets; track $index) {\n <mat-list-item (click)=\"selection = facet; close()\">\n <a>{{ facet.display }}</a>\n </mat-list-item>\n }\n</mat-nav-list>\n", styles: [".mat-nav-list{padding:0}.dropdown-title{opacity:.7;padding:5px;font-variant:all-small-caps;font-size:18px}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i5$2.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i5$2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }] }); }
|
|
7556
7477
|
}
|
|
7557
7478
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: FacetSelectorComponent, decorators: [{
|
|
7558
7479
|
type: Component,
|
|
7559
7480
|
args: [{ standalone: true, imports: [MatListModule], template: "@if (data.title) {\n <div class=\"dropdown-title mat-body-2\">{{ data.title }}</div>\n}\n<mat-nav-list>\n @for (facet of facets; track $index) {\n <mat-list-item (click)=\"selection = facet; close()\">\n <a>{{ facet.display }}</a>\n </mat-list-item>\n }\n</mat-nav-list>\n", styles: [".mat-nav-list{padding:0}.dropdown-title{opacity:.7;padding:5px;font-variant:all-small-caps;font-size:18px}\n"] }]
|
|
7560
|
-
}]
|
|
7561
|
-
type: Inject,
|
|
7562
|
-
args: [NATURAL_DROPDOWN_DATA]
|
|
7563
|
-
}] }, { type: NaturalDropdownRef }] });
|
|
7481
|
+
}] });
|
|
7564
7482
|
|
|
7565
7483
|
// Required to check invalid fields when initializing natural-search
|
|
7566
7484
|
class AlwaysErrorStateMatcher {
|
|
@@ -7577,20 +7495,10 @@ function isComponentValid(component) {
|
|
|
7577
7495
|
};
|
|
7578
7496
|
}
|
|
7579
7497
|
class NaturalInputComponent {
|
|
7580
|
-
|
|
7581
|
-
|
|
7582
|
-
|
|
7583
|
-
|
|
7584
|
-
*/
|
|
7585
|
-
focus() {
|
|
7586
|
-
this.neutralizeDropdownOpening = true;
|
|
7587
|
-
this.input.nativeElement.focus();
|
|
7588
|
-
this.neutralizeDropdownOpening = false;
|
|
7589
|
-
}
|
|
7590
|
-
constructor(element, dropdownService, injector) {
|
|
7591
|
-
this.element = element;
|
|
7592
|
-
this.dropdownService = dropdownService;
|
|
7593
|
-
this.injector = injector;
|
|
7498
|
+
constructor() {
|
|
7499
|
+
this.element = inject(ElementRef);
|
|
7500
|
+
this.dropdownService = inject(NaturalDropdownService);
|
|
7501
|
+
this.injector = inject(EnvironmentInjector);
|
|
7594
7502
|
/**
|
|
7595
7503
|
* Name of the field on which do a global search (without facet)
|
|
7596
7504
|
*/
|
|
@@ -7647,6 +7555,16 @@ class NaturalInputComponent {
|
|
|
7647
7555
|
*/
|
|
7648
7556
|
this.neutralizeDropdownOpening = false;
|
|
7649
7557
|
}
|
|
7558
|
+
/**
|
|
7559
|
+
* Custom management for taking the focus from parent context
|
|
7560
|
+
* When focusing manually on the <input>, a dropdown is opened
|
|
7561
|
+
* But when the focus is given from angular in a parent context (like a dialog) the dropdown would open and we don't want it.
|
|
7562
|
+
*/
|
|
7563
|
+
focus() {
|
|
7564
|
+
this.neutralizeDropdownOpening = true;
|
|
7565
|
+
this.input.nativeElement.focus();
|
|
7566
|
+
this.neutralizeDropdownOpening = false;
|
|
7567
|
+
}
|
|
7650
7568
|
ngOnChanges() {
|
|
7651
7569
|
if (!this.facets && this.selection) {
|
|
7652
7570
|
setTimeout(() => this.clear());
|
|
@@ -7853,8 +7771,8 @@ class NaturalInputComponent {
|
|
|
7853
7771
|
}
|
|
7854
7772
|
return selection;
|
|
7855
7773
|
}
|
|
7856
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalInputComponent, deps: [
|
|
7857
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalInputComponent, isStandalone: true, selector: "natural-input", inputs: { placeholder: "placeholder", searchFieldName: "searchFieldName", selection: "selection", facets: "facets", dropdownTitle: "dropdownTitle" }, outputs: { selectionChange: "selectionChange", cleared: "cleared" }, host: { listeners: { "focus": "focus()" } }, viewQueries: [{ propertyName: "ripple", first: true, predicate: MatRipple, descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!-- click condition should match to allow click action only when no other button is visible -->\n<mat-form-field #field matRipple (click)=\"!selection && !(facet && !selection) ? openDropdown() : null\">\n @if (facet) {\n <mat-label>{{ facet.display }}</mat-label>\n }\n @if (!facet) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input\n #input\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n autocomplete=\"off\"\n matInput\n type=\"text\"\n />\n\n @if (!facet && !selection) {\n <mat-icon naturalIcon=\"search\" matIconPrefix />\n }\n\n @if (selection) {\n <button (click)=\"clear()\" mat-icon-button matIconSuffix>\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n\n @if (facet && !selection) {\n <button (click)=\"clear()\" mat-icon-button matIconSuffix>\n <mat-icon naturalIcon=\"undo\" />\n </button>\n }\n</mat-form-field>\n<div class=\"hide\">{{ formCtrl.value ? formCtrl.value : facet ? facet.display : placeholder }}</div>\n", styles: [":host{display:flex;position:relative;flex-direction:column;border-top-right-radius:4px;border-top-left-radius:4px;overflow:hidden}:host .hide{margin:0 50px 0 10px;height:0;color:transparent;font-size:inherit;font-family:Roboto,Helvetica Neue,sans-serif;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type:
|
|
7774
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7775
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalInputComponent, isStandalone: true, selector: "natural-input", inputs: { placeholder: "placeholder", searchFieldName: "searchFieldName", selection: "selection", facets: "facets", dropdownTitle: "dropdownTitle" }, outputs: { selectionChange: "selectionChange", cleared: "cleared" }, host: { listeners: { "focus": "focus()" } }, viewQueries: [{ propertyName: "ripple", first: true, predicate: MatRipple, descendants: true, static: true }, { propertyName: "input", first: true, predicate: ["input"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!-- click condition should match to allow click action only when no other button is visible -->\n<mat-form-field #field matRipple (click)=\"!selection && !(facet && !selection) ? openDropdown() : null\">\n @if (facet) {\n <mat-label>{{ facet.display }}</mat-label>\n }\n @if (!facet) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input\n #input\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n autocomplete=\"off\"\n matInput\n type=\"text\"\n />\n\n @if (!facet && !selection) {\n <mat-icon naturalIcon=\"search\" matIconPrefix />\n }\n\n @if (selection) {\n <button (click)=\"clear()\" mat-icon-button matIconSuffix>\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n\n @if (facet && !selection) {\n <button (click)=\"clear()\" mat-icon-button matIconSuffix>\n <mat-icon naturalIcon=\"undo\" />\n </button>\n }\n</mat-form-field>\n<div class=\"hide\">{{ formCtrl.value ? formCtrl.value : facet ? facet.display : placeholder }}</div>\n", styles: [":host{display:flex;position:relative;flex-direction:column;border-top-right-radius:4px;border-top-left-radius:4px;overflow:hidden}:host .hide{margin:0 50px 0 10px;height:0;color:transparent;font-size:inherit;font-family:Roboto,Helvetica Neue,sans-serif;white-space:nowrap}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$3.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i1$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i4.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
|
|
7858
7776
|
}
|
|
7859
7777
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalInputComponent, decorators: [{
|
|
7860
7778
|
type: Component,
|
|
@@ -7868,7 +7786,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
7868
7786
|
NaturalIconDirective,
|
|
7869
7787
|
MatButtonModule,
|
|
7870
7788
|
], template: "<!-- click condition should match to allow click action only when no other button is visible -->\n<mat-form-field #field matRipple (click)=\"!selection && !(facet && !selection) ? openDropdown() : null\">\n @if (facet) {\n <mat-label>{{ facet.display }}</mat-label>\n }\n @if (!facet) {\n <mat-label>{{ placeholder }}</mat-label>\n }\n\n <input\n #input\n (blur)=\"search($event)\"\n (keydown.enter)=\"search($event)\"\n [attr.size]=\"length\"\n [errorStateMatcher]=\"errorMatcher\"\n [formControl]=\"formCtrl\"\n [readonly]=\"(isDropdown() && !!selection) || isFlag()\"\n autocomplete=\"off\"\n matInput\n type=\"text\"\n />\n\n @if (!facet && !selection) {\n <mat-icon naturalIcon=\"search\" matIconPrefix />\n }\n\n @if (selection) {\n <button (click)=\"clear()\" mat-icon-button matIconSuffix>\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n\n @if (facet && !selection) {\n <button (click)=\"clear()\" mat-icon-button matIconSuffix>\n <mat-icon naturalIcon=\"undo\" />\n </button>\n }\n</mat-form-field>\n<div class=\"hide\">{{ formCtrl.value ? formCtrl.value : facet ? facet.display : placeholder }}</div>\n", styles: [":host{display:flex;position:relative;flex-direction:column;border-top-right-radius:4px;border-top-left-radius:4px;overflow:hidden}:host .hide{margin:0 50px 0 10px;height:0;color:transparent;font-size:inherit;font-family:Roboto,Helvetica Neue,sans-serif;white-space:nowrap}\n"] }]
|
|
7871
|
-
}],
|
|
7789
|
+
}], propDecorators: { ripple: [{
|
|
7872
7790
|
type: ViewChild,
|
|
7873
7791
|
args: [MatRipple, { static: true }]
|
|
7874
7792
|
}], input: [{
|
|
@@ -7943,14 +7861,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
7943
7861
|
}] } });
|
|
7944
7862
|
|
|
7945
7863
|
class NaturalSearchComponent {
|
|
7946
|
-
|
|
7947
|
-
|
|
7948
|
-
*/
|
|
7949
|
-
set selections(selections) {
|
|
7950
|
-
this.innerSelections = selections?.[0] ? deepClone(selections) : [[]];
|
|
7951
|
-
}
|
|
7952
|
-
constructor(breakpointObserver) {
|
|
7953
|
-
this.breakpointObserver = breakpointObserver;
|
|
7864
|
+
constructor() {
|
|
7865
|
+
this.breakpointObserver = inject(BreakpointObserver);
|
|
7954
7866
|
/**
|
|
7955
7867
|
* Placeholder for last input (the free search input)
|
|
7956
7868
|
*/
|
|
@@ -7977,6 +7889,12 @@ class NaturalSearchComponent {
|
|
|
7977
7889
|
this.innerSelections = [[]];
|
|
7978
7890
|
this.isMobile = this.breakpointObserver.observe(Breakpoints.XSmall).pipe(map$1(result => result.matches));
|
|
7979
7891
|
}
|
|
7892
|
+
/**
|
|
7893
|
+
* Input to display at component initialisation
|
|
7894
|
+
*/
|
|
7895
|
+
set selections(selections) {
|
|
7896
|
+
this.innerSelections = selections?.[0] ? deepClone(selections) : [[]];
|
|
7897
|
+
}
|
|
7980
7898
|
ngOnChanges() {
|
|
7981
7899
|
if (!this.facets) {
|
|
7982
7900
|
this.facets = [];
|
|
@@ -8001,8 +7919,8 @@ class NaturalSearchComponent {
|
|
|
8001
7919
|
this.innerSelections = [[]];
|
|
8002
7920
|
this.selectionChange.emit([[]]);
|
|
8003
7921
|
}
|
|
8004
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSearchComponent, deps: [
|
|
8005
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalSearchComponent, isStandalone: true, selector: "natural-search", inputs: { placeholder: "placeholder", facets: "facets", multipleGroups: "multipleGroups", dropdownTitle: "dropdownTitle", selections: "selections" }, outputs: { selectionChange: "selectionChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"natural-search\" [ngClass]=\"{mobile: isMobile | async, hasMultipleGroups: innerSelections.length > 1}\">\n <div class=\"groupsWrapper\">\n @for (groupSelections of innerSelections; track $index) {\n <div class=\"groupWrapper\">\n <natural-group\n (selectionChange)=\"updateGroup($event, $index)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n [selections]=\"groupSelections\"\n [dropdownTitle]=\"dropdownTitle\"\n />\n <div class=\"endOfRowButton\">\n @if (innerSelections.length > 1) {\n <button\n (click)=\"removeGroup($index)\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Supprimer ce groupe\"\n >\n <mat-icon naturalIcon=\"remove\" />\n </button>\n }\n </div>\n </div>\n @if (!$last) {\n <mat-divider />\n }\n }\n </div>\n\n <div class=\"endOfRowButton\">\n @if (multipleGroups) {\n <button (click)=\"addGroup()\" mat-icon-button i18n-matTooltip matTooltip=\"Ajouter un groupe\">\n <mat-icon naturalIcon=\"add\" />\n </button>\n }\n\n <button\n (click)=\"clear()\"\n mat-icon-button\n class=\"clear-button\"\n i18n-matTooltip\n matTooltip=\"Annuler la recherche\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n </div>\n</div>\n", styles: [".natural-search{display:flex;flex-direction:row;align-items:flex-end}.natural-search .groupsWrapper{display:flex;flex:1;flex-direction:column;min-width:0}.natural-search .groupWrapper{display:flex;flex-direction:row;margin-bottom:10px;min-width:0}.natural-search .groupWrapper natural-group{flex:1;max-width:100%}.natural-search .groupWrapper:last-of-type{margin-bottom:0}.natural-search .endOfRowButton{display:flex;flex-direction:row;align-items:center;margin-bottom:15px;height:53px}.natural-search mat-divider{margin:-10px 0 10px}.natural-search.mobile .clear-button{display:none}.natural-search.mobile.hasMultipleGroups{flex-direction:column;align-items:stretch}.natural-search.mobile.hasMultipleGroups .endOfRowButton{flex-direction:row-reverse;margin-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
7922
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7923
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalSearchComponent, isStandalone: true, selector: "natural-search", inputs: { placeholder: "placeholder", facets: "facets", multipleGroups: "multipleGroups", dropdownTitle: "dropdownTitle", selections: "selections" }, outputs: { selectionChange: "selectionChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"natural-search\" [ngClass]=\"{mobile: isMobile | async, hasMultipleGroups: innerSelections.length > 1}\">\n <div class=\"groupsWrapper\">\n @for (groupSelections of innerSelections; track $index) {\n <div class=\"groupWrapper\">\n <natural-group\n (selectionChange)=\"updateGroup($event, $index)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n [selections]=\"groupSelections\"\n [dropdownTitle]=\"dropdownTitle\"\n />\n <div class=\"endOfRowButton\">\n @if (innerSelections.length > 1) {\n <button\n (click)=\"removeGroup($index)\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Supprimer ce groupe\"\n >\n <mat-icon naturalIcon=\"remove\" />\n </button>\n }\n </div>\n </div>\n @if (!$last) {\n <mat-divider />\n }\n }\n </div>\n\n <div class=\"endOfRowButton\">\n @if (multipleGroups) {\n <button (click)=\"addGroup()\" mat-icon-button i18n-matTooltip matTooltip=\"Ajouter un groupe\">\n <mat-icon naturalIcon=\"add\" />\n </button>\n }\n\n <button\n (click)=\"clear()\"\n mat-icon-button\n class=\"clear-button\"\n i18n-matTooltip\n matTooltip=\"Annuler la recherche\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n </div>\n</div>\n", styles: [".natural-search{display:flex;flex-direction:row;align-items:flex-end}.natural-search .groupsWrapper{display:flex;flex:1;flex-direction:column;min-width:0}.natural-search .groupWrapper{display:flex;flex-direction:row;margin-bottom:10px;min-width:0}.natural-search .groupWrapper natural-group{flex:1;max-width:100%}.natural-search .groupWrapper:last-of-type{margin-bottom:0}.natural-search .endOfRowButton{display:flex;flex-direction:row;align-items:center;margin-bottom:15px;height:53px}.natural-search mat-divider{margin:-10px 0 10px}.natural-search.mobile .clear-button{display:none}.natural-search.mobile.hasMultipleGroups{flex-direction:column;align-items:stretch}.natural-search.mobile.hasMultipleGroups .endOfRowButton{flex-direction:row-reverse;margin-bottom:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "component", type: NaturalGroupComponent, selector: "natural-group", inputs: ["dropdownTitle", "placeholder", "facets", "selections"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i5$3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }] }); }
|
|
8006
7924
|
}
|
|
8007
7925
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSearchComponent, decorators: [{
|
|
8008
7926
|
type: Component,
|
|
@@ -8015,7 +7933,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
8015
7933
|
NaturalIconDirective,
|
|
8016
7934
|
MatDividerModule,
|
|
8017
7935
|
], template: "<div class=\"natural-search\" [ngClass]=\"{mobile: isMobile | async, hasMultipleGroups: innerSelections.length > 1}\">\n <div class=\"groupsWrapper\">\n @for (groupSelections of innerSelections; track $index) {\n <div class=\"groupWrapper\">\n <natural-group\n (selectionChange)=\"updateGroup($event, $index)\"\n [facets]=\"facets\"\n [placeholder]=\"placeholder\"\n [selections]=\"groupSelections\"\n [dropdownTitle]=\"dropdownTitle\"\n />\n <div class=\"endOfRowButton\">\n @if (innerSelections.length > 1) {\n <button\n (click)=\"removeGroup($index)\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Supprimer ce groupe\"\n >\n <mat-icon naturalIcon=\"remove\" />\n </button>\n }\n </div>\n </div>\n @if (!$last) {\n <mat-divider />\n }\n }\n </div>\n\n <div class=\"endOfRowButton\">\n @if (multipleGroups) {\n <button (click)=\"addGroup()\" mat-icon-button i18n-matTooltip matTooltip=\"Ajouter un groupe\">\n <mat-icon naturalIcon=\"add\" />\n </button>\n }\n\n <button\n (click)=\"clear()\"\n mat-icon-button\n class=\"clear-button\"\n i18n-matTooltip\n matTooltip=\"Annuler la recherche\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n </div>\n</div>\n", styles: [".natural-search{display:flex;flex-direction:row;align-items:flex-end}.natural-search .groupsWrapper{display:flex;flex:1;flex-direction:column;min-width:0}.natural-search .groupWrapper{display:flex;flex-direction:row;margin-bottom:10px;min-width:0}.natural-search .groupWrapper natural-group{flex:1;max-width:100%}.natural-search .groupWrapper:last-of-type{margin-bottom:0}.natural-search .endOfRowButton{display:flex;flex-direction:row;align-items:center;margin-bottom:15px;height:53px}.natural-search mat-divider{margin:-10px 0 10px}.natural-search.mobile .clear-button{display:none}.natural-search.mobile.hasMultipleGroups{flex-direction:column;align-items:stretch}.natural-search.mobile.hasMultipleGroups .endOfRowButton{flex-direction:row-reverse;margin-bottom:0}\n"] }]
|
|
8018
|
-
}],
|
|
7936
|
+
}], propDecorators: { placeholder: [{
|
|
8019
7937
|
type: Input
|
|
8020
7938
|
}], facets: [{
|
|
8021
7939
|
type: Input
|
|
@@ -8029,10 +7947,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
8029
7947
|
type: Input
|
|
8030
7948
|
}] } });
|
|
8031
7949
|
|
|
8032
|
-
class NaturalHierarchicSelectorComponent
|
|
8033
|
-
constructor(
|
|
8034
|
-
|
|
8035
|
-
this.hierarchicSelectorService =
|
|
7950
|
+
class NaturalHierarchicSelectorComponent {
|
|
7951
|
+
constructor() {
|
|
7952
|
+
this.destroyRef = inject(DestroyRef);
|
|
7953
|
+
this.hierarchicSelectorService = inject(NaturalHierarchicSelectorService);
|
|
8036
7954
|
/**
|
|
8037
7955
|
* If multiple or single item selection
|
|
8038
7956
|
*/
|
|
@@ -8099,7 +8017,7 @@ class NaturalHierarchicSelectorComponent extends NaturalAbstractController {
|
|
|
8099
8017
|
// Update dataSource when receiving new list -> we assign the whole tree
|
|
8100
8018
|
// The treeControl and treeFlattener will generate the displayed tree
|
|
8101
8019
|
this.hierarchicSelectorService.dataChange
|
|
8102
|
-
.pipe(
|
|
8020
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
8103
8021
|
.subscribe(data => (this.dataSource.data = data));
|
|
8104
8022
|
// Prevent empty screen on first load and init NaturalHierarchicSelectorService with inputted configuration
|
|
8105
8023
|
let variables;
|
|
@@ -8345,8 +8263,8 @@ class NaturalHierarchicSelectorComponent extends NaturalAbstractController {
|
|
|
8345
8263
|
getMapKey(model) {
|
|
8346
8264
|
return model.__typename + '-' + model.id;
|
|
8347
8265
|
}
|
|
8348
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorComponent, deps: [
|
|
8349
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalHierarchicSelectorComponent, isStandalone: true, selector: "natural-hierarchic-selector", inputs: { displayWith: "displayWith", config: "config", multiple: "multiple", selected: "selected", allowUnselect: "allowUnselect", filters: "filters", searchFacets: "searchFacets", searchSelections: "searchSelections" }, outputs: { searchSelectionChange: "searchSelectionChange", selectionChange: "selectionChange" }, providers: [NaturalHierarchicSelectorService],
|
|
8266
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8267
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalHierarchicSelectorComponent, isStandalone: true, selector: "natural-hierarchic-selector", inputs: { displayWith: "displayWith", config: "config", multiple: "multiple", selected: "selected", allowUnselect: "allowUnselect", filters: "filters", searchFacets: "searchFacets", searchSelections: "searchSelections" }, outputs: { searchSelectionChange: "searchSelectionChange", selectionChange: "selectionChange" }, providers: [NaturalHierarchicSelectorService], usesOnChanges: true, ngImport: i0, template: "<div [style.margin-bottom.px]=\"20\">\n <natural-search (selectionChange)=\"search($event)\" [facets]=\"searchFacets\" [selections]=\"searchSelections\" />\n</div>\n\n<div class=\"body\">\n @if (loading) {\n <mat-progress-spinner [diameter]=\"36\" mode=\"indeterminate\" style=\"margin: 10px\" />\n }\n\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <mat-tree-node *matTreeNodeDef=\"let node\" [ngClass]=\"{leaf: !node.expandable}\" matTreeNodePadding>\n @if (node.expandable) {\n <button\n (click)=\"loadChildren(node)\"\n [attr.aria-label]=\"'toggle ' + node.name\"\n mat-icon-button\n matTreeNodeToggle\n >\n @if (node.loading) {\n <mat-progress-spinner [diameter]=\"24\" [strokeWidth]=\"5\" mode=\"indeterminate\" />\n }\n @if (!node.loading) {\n <mat-icon [naturalIcon]=\"treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'\" />\n }\n </button>\n }\n\n <mat-checkbox\n (change)=\"toggleFlatNode(node)\"\n [checked]=\"flatNodesSelection.isSelected(node)\"\n [disabled]=\"!isNodeTogglable(node)\"\n style=\"margin-right: 10px\"\n >\n @if (node.node.config.icon) {\n <mat-icon [naturalIcon]=\"node.node.config.icon\" style=\"margin-right: 10px\" />\n }\n <span>{{ node.name }}</span>\n </mat-checkbox>\n </mat-tree-node>\n </mat-tree>\n\n <mat-chip-listbox aria-orientation=\"vertical\" class=\"mat-mdc-chip-set-stacked\">\n @for (node of selectedNodes; track node.model.id) {\n <mat-chip-option (removed)=\"unselectModelNode(node)\" [removable]=\"true\" [selectable]=\"false\">\n @if (node.config.icon) {\n <mat-icon [naturalIcon]=\"node.config.icon\" />\n }\n <div class=\"mat-body chip-label\">{{ node.model.name || node.model.fullName }}</div>\n <button matChipRemove>\n <mat-icon naturalIcon=\"cancel\" />\n </button>\n </mat-chip-option>\n }\n </mat-chip-listbox>\n</div>\n\n@if (!loading && !dataSource.data.length) {\n <div i18n>Aucun r\u00E9sultat</div>\n}\n", styles: [":host{display:block}:host ul,:host li{-webkit-margin-before:0;-webkit-margin-after:0;list-style-type:none}:host mat-icon{width:18px;height:18px;font-size:18px}:host .mat-tree-node.leaf{margin-left:48px}:host .body{display:flex;flex-direction:row;justify-content:space-between}:host .body mat-tree{flex:66}:host .body mat-chip-listbox{flex:33}:host mat-tree{flex-shrink:0}:host mat-chip-listbox{margin-left:10px}\n"], dependencies: [{ kind: "component", type: NaturalSearchComponent, selector: "natural-search", inputs: ["placeholder", "facets", "multipleGroups", "dropdownTitle", "selections"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i3$2.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i3$2.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i3$2.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i3$2.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i3$2.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i7$1.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i7$1.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i7$1.MatChipRemove, selector: "[matChipRemove]" }] }); }
|
|
8350
8268
|
}
|
|
8351
8269
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorComponent, decorators: [{
|
|
8352
8270
|
type: Component,
|
|
@@ -8361,7 +8279,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
8361
8279
|
MatCheckboxModule,
|
|
8362
8280
|
MatChipsModule,
|
|
8363
8281
|
], template: "<div [style.margin-bottom.px]=\"20\">\n <natural-search (selectionChange)=\"search($event)\" [facets]=\"searchFacets\" [selections]=\"searchSelections\" />\n</div>\n\n<div class=\"body\">\n @if (loading) {\n <mat-progress-spinner [diameter]=\"36\" mode=\"indeterminate\" style=\"margin: 10px\" />\n }\n\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <mat-tree-node *matTreeNodeDef=\"let node\" [ngClass]=\"{leaf: !node.expandable}\" matTreeNodePadding>\n @if (node.expandable) {\n <button\n (click)=\"loadChildren(node)\"\n [attr.aria-label]=\"'toggle ' + node.name\"\n mat-icon-button\n matTreeNodeToggle\n >\n @if (node.loading) {\n <mat-progress-spinner [diameter]=\"24\" [strokeWidth]=\"5\" mode=\"indeterminate\" />\n }\n @if (!node.loading) {\n <mat-icon [naturalIcon]=\"treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'\" />\n }\n </button>\n }\n\n <mat-checkbox\n (change)=\"toggleFlatNode(node)\"\n [checked]=\"flatNodesSelection.isSelected(node)\"\n [disabled]=\"!isNodeTogglable(node)\"\n style=\"margin-right: 10px\"\n >\n @if (node.node.config.icon) {\n <mat-icon [naturalIcon]=\"node.node.config.icon\" style=\"margin-right: 10px\" />\n }\n <span>{{ node.name }}</span>\n </mat-checkbox>\n </mat-tree-node>\n </mat-tree>\n\n <mat-chip-listbox aria-orientation=\"vertical\" class=\"mat-mdc-chip-set-stacked\">\n @for (node of selectedNodes; track node.model.id) {\n <mat-chip-option (removed)=\"unselectModelNode(node)\" [removable]=\"true\" [selectable]=\"false\">\n @if (node.config.icon) {\n <mat-icon [naturalIcon]=\"node.config.icon\" />\n }\n <div class=\"mat-body chip-label\">{{ node.model.name || node.model.fullName }}</div>\n <button matChipRemove>\n <mat-icon naturalIcon=\"cancel\" />\n </button>\n </mat-chip-option>\n }\n </mat-chip-listbox>\n</div>\n\n@if (!loading && !dataSource.data.length) {\n <div i18n>Aucun r\u00E9sultat</div>\n}\n", styles: [":host{display:block}:host ul,:host li{-webkit-margin-before:0;-webkit-margin-after:0;list-style-type:none}:host mat-icon{width:18px;height:18px;font-size:18px}:host .mat-tree-node.leaf{margin-left:48px}:host .body{display:flex;flex-direction:row;justify-content:space-between}:host .body mat-tree{flex:66}:host .body mat-chip-listbox{flex:33}:host mat-tree{flex-shrink:0}:host mat-chip-listbox{margin-left:10px}\n"] }]
|
|
8364
|
-
}],
|
|
8282
|
+
}], propDecorators: { displayWith: [{
|
|
8365
8283
|
type: Input
|
|
8366
8284
|
}], config: [{
|
|
8367
8285
|
type: Input,
|
|
@@ -8435,7 +8353,7 @@ class TypeHierarchicSelectorComponent extends AbstractAssociationSelectComponent
|
|
|
8435
8353
|
return selection[this.configuration.key].length ? selection : null;
|
|
8436
8354
|
}
|
|
8437
8355
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeHierarchicSelectorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
8438
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeHierarchicSelectorComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field style=\"max-width: 7em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n @if (requireValueCtrl) {\n <natural-hierarchic-selector\n (selectionChange)=\"selectionChange($event)\"\n [config]=\"configuration.config\"\n [filters]=\"configuration.filters\"\n [multiple]=\"true\"\n [selected]=\"valueCtrl.value || {}\"\n style=\"margin-right: 20px\"\n />\n }\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
8356
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeHierarchicSelectorComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field style=\"max-width: 7em; margin-right: 1em\">\n <mat-label i18n=\"Mathematical operator < > =\">Op\u00E9rateur</mat-label>\n <mat-select [formControl]=\"operatorCtrl\" [required]=\"true\" panelWidth=\"\">\n @for (item of operators; track item) {\n <mat-option [value]=\"item.key\">\n {{ item.label }}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n\n @if (requireValueCtrl) {\n <natural-hierarchic-selector\n (selectionChange)=\"selectionChange($event)\"\n [config]=\"configuration.config\"\n [filters]=\"configuration.filters\"\n [multiple]=\"true\"\n [selected]=\"valueCtrl.value || {}\"\n style=\"margin-right: 20px\"\n />\n }\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "component", type: NaturalHierarchicSelectorComponent, selector: "natural-hierarchic-selector", inputs: ["displayWith", "config", "multiple", "selected", "allowUnselect", "filters", "searchFacets", "searchSelections"], outputs: ["searchSelectionChange", "selectionChange"] }] }); }
|
|
8439
8357
|
}
|
|
8440
8358
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeHierarchicSelectorComponent, decorators: [{
|
|
8441
8359
|
type: Component,
|
|
@@ -8480,9 +8398,9 @@ function toGreaterThanFrom(dateAdapter) {
|
|
|
8480
8398
|
* If you need optional bounding date, then use `TypeDateComponent` instead.
|
|
8481
8399
|
*/
|
|
8482
8400
|
class TypeDateRangeComponent {
|
|
8483
|
-
constructor(
|
|
8484
|
-
this.dateAdapter =
|
|
8485
|
-
this.dateFormats =
|
|
8401
|
+
constructor() {
|
|
8402
|
+
this.dateAdapter = inject(DateAdapter);
|
|
8403
|
+
this.dateFormats = inject(MAT_DATE_FORMATS);
|
|
8486
8404
|
this.renderedValue = new BehaviorSubject('');
|
|
8487
8405
|
this.matcher = new InvalidWithValueStateMatcher();
|
|
8488
8406
|
this.fromCtrl = new FormControl(null);
|
|
@@ -8495,6 +8413,7 @@ class TypeDateRangeComponent {
|
|
|
8495
8413
|
min: null,
|
|
8496
8414
|
max: null,
|
|
8497
8415
|
};
|
|
8416
|
+
const data = inject(NATURAL_DROPDOWN_DATA);
|
|
8498
8417
|
this.configuration = { ...this.defaults, ...data.configuration };
|
|
8499
8418
|
merge$1(this.fromCtrl.valueChanges, this.toCtrl.valueChanges).subscribe(() => {
|
|
8500
8419
|
this.renderedValue.next(this.getRenderedValue());
|
|
@@ -8559,29 +8478,23 @@ class TypeDateRangeComponent {
|
|
|
8559
8478
|
return '';
|
|
8560
8479
|
}
|
|
8561
8480
|
}
|
|
8562
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeDateRangeComponent, deps: [
|
|
8563
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeDateRangeComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <input\n matInput\n [matDatepicker]=\"from\"\n placeholder=\"De\"\n i18n-placeholder\n [formControl]=\"fromCtrl\"\n [errorStateMatcher]=\"matcher\"\n [min]=\"configuration.min\"\n [max]=\"configuration.max\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"from\" />\n <mat-datepicker #from />\n @if (form.hasError('toGreaterThanFrom')) {\n <mat-error>{{ render(fromCtrl.value) }} > {{ render(toCtrl.value) }}</mat-error>\n }\n @if (fromCtrl.hasError('min') && !form.hasError('toGreaterThanFrom')) {\n <mat-error>< {{ configuration.min }}</mat-error>\n }\n @if (fromCtrl.hasError('max') && !form.hasError('toGreaterThanFrom')) {\n <mat-error>> {{ configuration.max }}</mat-error>\n }\n @if (fromCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <input\n matInput\n [matDatepicker]=\"to\"\n placeholder=\"\u00E0\"\n i18n-placeholder\n [formControl]=\"toCtrl\"\n [errorStateMatcher]=\"matcher\"\n [min]=\"configuration.min\"\n [max]=\"configuration.max\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"to\" />\n <mat-datepicker #to />\n @if (toCtrl.hasError('min') && !form.hasError('toGreaterThanFrom')) {\n <mat-error> < {{ configuration.min }}</mat-error>\n }\n @if (toCtrl.hasError('max') && !form.hasError('toGreaterThanFrom')) {\n <mat-error> > {{ configuration.max }}</mat-error>\n }\n @if (toCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n </mat-form-field>\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
8481
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeDateRangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8482
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeDateRangeComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <input\n matInput\n [matDatepicker]=\"from\"\n placeholder=\"De\"\n i18n-placeholder\n [formControl]=\"fromCtrl\"\n [errorStateMatcher]=\"matcher\"\n [min]=\"configuration.min\"\n [max]=\"configuration.max\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"from\" />\n <mat-datepicker #from />\n @if (form.hasError('toGreaterThanFrom')) {\n <mat-error>{{ render(fromCtrl.value) }} > {{ render(toCtrl.value) }}</mat-error>\n }\n @if (fromCtrl.hasError('min') && !form.hasError('toGreaterThanFrom')) {\n <mat-error>< {{ configuration.min }}</mat-error>\n }\n @if (fromCtrl.hasError('max') && !form.hasError('toGreaterThanFrom')) {\n <mat-error>> {{ configuration.max }}</mat-error>\n }\n @if (fromCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <input\n matInput\n [matDatepicker]=\"to\"\n placeholder=\"\u00E0\"\n i18n-placeholder\n [formControl]=\"toCtrl\"\n [errorStateMatcher]=\"matcher\"\n [min]=\"configuration.min\"\n [max]=\"configuration.max\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"to\" />\n <mat-datepicker #to />\n @if (toCtrl.hasError('min') && !form.hasError('toGreaterThanFrom')) {\n <mat-error> < {{ configuration.min }}</mat-error>\n }\n @if (toCtrl.hasError('max') && !form.hasError('toGreaterThanFrom')) {\n <mat-error> > {{ configuration.max }}</mat-error>\n }\n @if (toCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n </mat-form-field>\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
|
|
8564
8483
|
}
|
|
8565
8484
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeDateRangeComponent, decorators: [{
|
|
8566
8485
|
type: Component,
|
|
8567
8486
|
args: [{ standalone: true, imports: [FormsModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatDatepickerModule], template: "<form [formGroup]=\"form\">\n <mat-form-field>\n <input\n matInput\n [matDatepicker]=\"from\"\n placeholder=\"De\"\n i18n-placeholder\n [formControl]=\"fromCtrl\"\n [errorStateMatcher]=\"matcher\"\n [min]=\"configuration.min\"\n [max]=\"configuration.max\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"from\" />\n <mat-datepicker #from />\n @if (form.hasError('toGreaterThanFrom')) {\n <mat-error>{{ render(fromCtrl.value) }} > {{ render(toCtrl.value) }}</mat-error>\n }\n @if (fromCtrl.hasError('min') && !form.hasError('toGreaterThanFrom')) {\n <mat-error>< {{ configuration.min }}</mat-error>\n }\n @if (fromCtrl.hasError('max') && !form.hasError('toGreaterThanFrom')) {\n <mat-error>> {{ configuration.max }}</mat-error>\n }\n @if (fromCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n </mat-form-field>\n\n <mat-form-field>\n <input\n matInput\n [matDatepicker]=\"to\"\n placeholder=\"\u00E0\"\n i18n-placeholder\n [formControl]=\"toCtrl\"\n [errorStateMatcher]=\"matcher\"\n [min]=\"configuration.min\"\n [max]=\"configuration.max\"\n />\n <mat-datepicker-toggle matIconSuffix [for]=\"to\" />\n <mat-datepicker #to />\n @if (toCtrl.hasError('min') && !form.hasError('toGreaterThanFrom')) {\n <mat-error> < {{ configuration.min }}</mat-error>\n }\n @if (toCtrl.hasError('max') && !form.hasError('toGreaterThanFrom')) {\n <mat-error> > {{ configuration.max }}</mat-error>\n }\n @if (toCtrl.hasError('required')) {\n <mat-error>*</mat-error>\n }\n </mat-form-field>\n</form>\n" }]
|
|
8568
|
-
}], ctorParameters: () => [
|
|
8569
|
-
type: Inject,
|
|
8570
|
-
args: [NATURAL_DROPDOWN_DATA]
|
|
8571
|
-
}] }, { type: i1$3.DateAdapter }, { type: undefined, decorators: [{
|
|
8572
|
-
type: Inject,
|
|
8573
|
-
args: [MAT_DATE_FORMATS]
|
|
8574
|
-
}] }] });
|
|
8487
|
+
}], ctorParameters: () => [] });
|
|
8575
8488
|
|
|
8576
8489
|
class TypeOptionsComponent {
|
|
8577
|
-
constructor(data
|
|
8490
|
+
constructor(data) {
|
|
8578
8491
|
this.data = data;
|
|
8579
|
-
this.dropdownRef = dropdownRef;
|
|
8580
8492
|
this.renderedValue = new BehaviorSubject('');
|
|
8581
8493
|
this.formControl = new FormControl({}, { nonNullable: true });
|
|
8582
8494
|
this.defaults = {
|
|
8583
8495
|
options: [],
|
|
8584
8496
|
};
|
|
8497
|
+
this.dropdownRef = inject(NaturalDropdownRef);
|
|
8585
8498
|
this.configuration = { ...this.defaults, ...data.configuration };
|
|
8586
8499
|
if (!this.configuration.options.length) {
|
|
8587
8500
|
throw new Error('TypeOptions need options, empty array or null given');
|
|
@@ -8614,8 +8527,8 @@ class TypeOptionsComponent {
|
|
|
8614
8527
|
isDirty() {
|
|
8615
8528
|
return this.formControl.dirty;
|
|
8616
8529
|
}
|
|
8617
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeOptionsComponent, deps: [{ token: NATURAL_DROPDOWN_DATA }
|
|
8618
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeOptionsComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<mat-button-toggle-group [formControl]=\"formControl\">\n @for (option of configuration.options; track option) {\n <mat-button-toggle [value]=\"option\">{{ option.display }}</mat-button-toggle>\n }\n</mat-button-toggle-group>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
8530
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeOptionsComponent, deps: [{ token: NATURAL_DROPDOWN_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8531
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeOptionsComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<mat-button-toggle-group [formControl]=\"formControl\">\n @for (option of configuration.options; track option) {\n <mat-button-toggle [value]=\"option\">{{ option.display }}</mat-button-toggle>\n }\n</mat-button-toggle-group>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i2$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i2$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }] }); }
|
|
8619
8532
|
}
|
|
8620
8533
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeOptionsComponent, decorators: [{
|
|
8621
8534
|
type: Component,
|
|
@@ -8623,10 +8536,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
8623
8536
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
8624
8537
|
type: Inject,
|
|
8625
8538
|
args: [NATURAL_DROPDOWN_DATA]
|
|
8626
|
-
}] }
|
|
8539
|
+
}] }] });
|
|
8627
8540
|
|
|
8628
8541
|
class TypeBooleanComponent extends TypeOptionsComponent {
|
|
8629
|
-
constructor(
|
|
8542
|
+
constructor() {
|
|
8543
|
+
const data = inject(NATURAL_DROPDOWN_DATA);
|
|
8630
8544
|
// Set up options from hardcoded conditions with custom labels from config
|
|
8631
8545
|
const configuration = {
|
|
8632
8546
|
options: [
|
|
@@ -8644,18 +8558,15 @@ class TypeBooleanComponent extends TypeOptionsComponent {
|
|
|
8644
8558
|
...data,
|
|
8645
8559
|
...{ configuration: configuration },
|
|
8646
8560
|
};
|
|
8647
|
-
super(typeOptionsData
|
|
8561
|
+
super(typeOptionsData);
|
|
8648
8562
|
}
|
|
8649
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeBooleanComponent, deps: [
|
|
8650
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeBooleanComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<mat-button-toggle-group [formControl]=\"formControl\">\n @for (option of configuration.options; track option) {\n <mat-button-toggle [value]=\"option\">{{ option.display }}</mat-button-toggle>\n }\n</mat-button-toggle-group>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
8563
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeBooleanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8564
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: TypeBooleanComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<mat-button-toggle-group [formControl]=\"formControl\">\n @for (option of configuration.options; track option) {\n <mat-button-toggle [value]=\"option\">{{ option.display }}</mat-button-toggle>\n }\n</mat-button-toggle-group>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i2$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i2$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }] }); }
|
|
8651
8565
|
}
|
|
8652
8566
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: TypeBooleanComponent, decorators: [{
|
|
8653
8567
|
type: Component,
|
|
8654
8568
|
args: [{ standalone: true, imports: [FormsModule, ReactiveFormsModule, CommonModule, MatButtonToggleModule], template: "<mat-button-toggle-group [formControl]=\"formControl\">\n @for (option of configuration.options; track option) {\n <mat-button-toggle [value]=\"option\">{{ option.display }}</mat-button-toggle>\n }\n</mat-button-toggle-group>\n" }]
|
|
8655
|
-
}], ctorParameters: () => [
|
|
8656
|
-
type: Inject,
|
|
8657
|
-
args: [NATURAL_DROPDOWN_DATA]
|
|
8658
|
-
}] }, { type: NaturalDropdownRef }] });
|
|
8569
|
+
}], ctorParameters: () => [] });
|
|
8659
8570
|
|
|
8660
8571
|
/*
|
|
8661
8572
|
* Public API Surface of natural-search dropdown components
|
|
@@ -8792,8 +8703,8 @@ function eventToFiles(event) {
|
|
|
8792
8703
|
|
|
8793
8704
|
// @dynamic
|
|
8794
8705
|
class NaturalFileService {
|
|
8795
|
-
constructor(
|
|
8796
|
-
this.document =
|
|
8706
|
+
constructor() {
|
|
8707
|
+
this.document = inject(DOCUMENT);
|
|
8797
8708
|
/**
|
|
8798
8709
|
* Allow to subscribe to selected files in the entire application. So a
|
|
8799
8710
|
* child component is able to receive a file that was dropped on a parent
|
|
@@ -8821,7 +8732,7 @@ class NaturalFileService {
|
|
|
8821
8732
|
}
|
|
8822
8733
|
return null;
|
|
8823
8734
|
}
|
|
8824
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFileService, deps: [
|
|
8735
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
8825
8736
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFileService, providedIn: 'root' }); }
|
|
8826
8737
|
}
|
|
8827
8738
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFileService, decorators: [{
|
|
@@ -8829,10 +8740,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
8829
8740
|
args: [{
|
|
8830
8741
|
providedIn: 'root',
|
|
8831
8742
|
}]
|
|
8832
|
-
}]
|
|
8833
|
-
type: Inject,
|
|
8834
|
-
args: [DOCUMENT]
|
|
8835
|
-
}] }] });
|
|
8743
|
+
}] });
|
|
8836
8744
|
|
|
8837
8745
|
/**
|
|
8838
8746
|
* A master base set of logic intended to support file select/drag/drop operations
|
|
@@ -8843,9 +8751,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
8843
8751
|
*
|
|
8844
8752
|
* @dynamic
|
|
8845
8753
|
*/
|
|
8846
|
-
class NaturalAbstractFile
|
|
8754
|
+
class NaturalAbstractFile {
|
|
8847
8755
|
constructor(element, naturalFileService, document) {
|
|
8848
|
-
super();
|
|
8849
8756
|
this.element = element;
|
|
8850
8757
|
this.naturalFileService = naturalFileService;
|
|
8851
8758
|
this.document = document;
|
|
@@ -8895,7 +8802,6 @@ class NaturalAbstractFile extends NaturalAbstractController {
|
|
|
8895
8802
|
this.filesChange = new EventEmitter();
|
|
8896
8803
|
}
|
|
8897
8804
|
ngOnDestroy() {
|
|
8898
|
-
super.ngOnDestroy();
|
|
8899
8805
|
delete this.fileElement; // faster memory release of dom element
|
|
8900
8806
|
}
|
|
8901
8807
|
ngOnInit() {
|
|
@@ -9027,7 +8933,7 @@ class NaturalAbstractFile extends NaturalAbstractController {
|
|
|
9027
8933
|
}));
|
|
9028
8934
|
}
|
|
9029
8935
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractFile, deps: [{ token: i0.ElementRef }, { token: NaturalFileService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
9030
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalAbstractFile, isStandalone: true, inputs: { multiple: "multiple", accept: "accept", maxSize: "maxSize", fileSelectionDisabled: "fileSelectionDisabled", selectable: "selectable", broadcast: "broadcast" }, outputs: { fileChange: "fileChange", filesChange: "filesChange" }, host: { listeners: { "change": "onChange($event)" } },
|
|
8936
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.3", type: NaturalAbstractFile, isStandalone: true, inputs: { multiple: "multiple", accept: "accept", maxSize: "maxSize", fileSelectionDisabled: "fileSelectionDisabled", selectable: "selectable", broadcast: "broadcast" }, outputs: { fileChange: "fileChange", filesChange: "filesChange" }, host: { listeners: { "change": "onChange($event)" } }, usesOnChanges: true, ngImport: i0 }); }
|
|
9031
8937
|
}
|
|
9032
8938
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAbstractFile, decorators: [{
|
|
9033
8939
|
type: Directive,
|
|
@@ -9072,6 +8978,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
9072
8978
|
class NaturalFileDropDirective extends NaturalAbstractFile {
|
|
9073
8979
|
constructor() {
|
|
9074
8980
|
super(...arguments);
|
|
8981
|
+
this.destroyRef = inject(DestroyRef);
|
|
9075
8982
|
this.fileOverClass = false;
|
|
9076
8983
|
/**
|
|
9077
8984
|
* Emits whenever files are being dragged over
|
|
@@ -9086,7 +8993,7 @@ class NaturalFileDropDirective extends NaturalAbstractFile {
|
|
|
9086
8993
|
// It's not absolutely perfect and if dragging slowly and precisely we can
|
|
9087
8994
|
// still see flicker, but it should be better for most normal usages.
|
|
9088
8995
|
this.rawFileOver
|
|
9089
|
-
.pipe(
|
|
8996
|
+
.pipe(takeUntilDestroyed(this.destroyRef), throttleTime(200, asyncScheduler, {
|
|
9090
8997
|
leading: true,
|
|
9091
8998
|
trailing: true,
|
|
9092
8999
|
}))
|
|
@@ -9190,10 +9097,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
9190
9097
|
|
|
9191
9098
|
// @dynamic
|
|
9192
9099
|
class NaturalFileComponent {
|
|
9193
|
-
constructor(
|
|
9194
|
-
this.naturalFileService =
|
|
9195
|
-
this.alertService =
|
|
9196
|
-
this.document =
|
|
9100
|
+
constructor() {
|
|
9101
|
+
this.naturalFileService = inject(NaturalFileService);
|
|
9102
|
+
this.alertService = inject(NaturalAlertService);
|
|
9103
|
+
this.document = inject(DOCUMENT);
|
|
9197
9104
|
this.height = 250;
|
|
9198
9105
|
this.action = null;
|
|
9199
9106
|
this.backgroundSize = 'contain';
|
|
@@ -9298,8 +9205,8 @@ class NaturalFileComponent {
|
|
|
9298
9205
|
reader.readAsBinaryString(file);
|
|
9299
9206
|
return subject.asObservable();
|
|
9300
9207
|
}
|
|
9301
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFileComponent, deps: [
|
|
9302
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalFileComponent, isStandalone: true, selector: "natural-file", inputs: { height: "height", action: "action", backgroundSize: "backgroundSize", accept: "accept", uploader: "uploader", model: "model", formCtrl: "formCtrl" }, outputs: { modelChange: "modelChange" }, host: { properties: { "style.height.px": "this.height" } }, usesOnChanges: true, ngImport: i0, template: "<a\n (fileChange)=\"upload($event)\"\n naturalFileDrop\n [selectable]=\"true\"\n [accept]=\"accept\"\n [attr.href]=\"getDownloadLink()\"\n [class.has-action]=\"!!action\"\n [class.suggest-upload]=\"!model && action === 'upload'\"\n [fileSelectionDisabled]=\"action !== 'upload'\"\n [matRippleDisabled]=\"!action\"\n [naturalBackgroundDensity]=\"imagePreview\"\n [style.backgroundSize]=\"backgroundSize\"\n matRipple\n target=\"_blank\"\n>\n @if (filePreview) {\n <div class=\"file-preview\">\n <mat-icon [size]=\"height * 0.33\" naturalIcon=\"attachment\" />\n {{ filePreview | uppercase }}\n </div>\n }\n\n <div class=\"action-overlay\">\n @if (action === 'upload') {\n <mat-icon [size]=\"height * 0.66\" naturalIcon=\"cloud_upload\" />\n }\n @if (action === 'download') {\n <mat-icon [size]=\"height * 0.66\" naturalIcon=\"get_app\" />\n }\n {{ action | capitalize }}\n </div>\n</a>\n", styles: [":host{display:flex;position:relative;flex-direction:row;overflow:hidden}:host>a{position:relative;flex:1;background-position:center;background-repeat:no-repeat}:host>a.has-action{cursor:pointer}:host>a.has-action.suggest-upload .action-overlay{opacity:.66}:host>a.has-action:hover .action-overlay,:host>a.has-action.natural-file-over .action-overlay{opacity:1}:host .action-overlay,:host .file-preview{display:flex;position:absolute;inset:0;flex-direction:column;justify-content:center;align-items:center;font-size:36px;line-height:1.3em;text-align:center}:host .action-overlay{opacity:0}:host .action-overlay>div{display:flex;position:absolute;inset:0;justify-content:center;align-items:center;opacity:0}\n"], dependencies: [{ kind: "directive", type: NaturalFileDropDirective, selector: ":not([naturalFileSelect])[naturalFileDrop]", outputs: ["fileOver"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type:
|
|
9208
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9209
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalFileComponent, isStandalone: true, selector: "natural-file", inputs: { height: "height", action: "action", backgroundSize: "backgroundSize", accept: "accept", uploader: "uploader", model: "model", formCtrl: "formCtrl" }, outputs: { modelChange: "modelChange" }, host: { properties: { "style.height.px": "this.height" } }, usesOnChanges: true, ngImport: i0, template: "<a\n (fileChange)=\"upload($event)\"\n naturalFileDrop\n [selectable]=\"true\"\n [accept]=\"accept\"\n [attr.href]=\"getDownloadLink()\"\n [class.has-action]=\"!!action\"\n [class.suggest-upload]=\"!model && action === 'upload'\"\n [fileSelectionDisabled]=\"action !== 'upload'\"\n [matRippleDisabled]=\"!action\"\n [naturalBackgroundDensity]=\"imagePreview\"\n [style.backgroundSize]=\"backgroundSize\"\n matRipple\n target=\"_blank\"\n>\n @if (filePreview) {\n <div class=\"file-preview\">\n <mat-icon [size]=\"height * 0.33\" naturalIcon=\"attachment\" />\n {{ filePreview | uppercase }}\n </div>\n }\n\n <div class=\"action-overlay\">\n @if (action === 'upload') {\n <mat-icon [size]=\"height * 0.66\" naturalIcon=\"cloud_upload\" />\n }\n @if (action === 'download') {\n <mat-icon [size]=\"height * 0.66\" naturalIcon=\"get_app\" />\n }\n {{ action | capitalize }}\n </div>\n</a>\n", styles: [":host{display:flex;position:relative;flex-direction:row;overflow:hidden}:host>a{position:relative;flex:1;background-position:center;background-repeat:no-repeat}:host>a.has-action{cursor:pointer}:host>a.has-action.suggest-upload .action-overlay{opacity:.66}:host>a.has-action:hover .action-overlay,:host>a.has-action.natural-file-over .action-overlay{opacity:1}:host .action-overlay,:host .file-preview{display:flex;position:absolute;inset:0;flex-direction:column;justify-content:center;align-items:center;font-size:36px;line-height:1.3em;text-align:center}:host .action-overlay{opacity:0}:host .action-overlay>div{display:flex;position:absolute;inset:0;justify-content:center;align-items:center;opacity:0}\n"], dependencies: [{ kind: "directive", type: NaturalFileDropDirective, selector: ":not([naturalFileSelect])[naturalFileDrop]", outputs: ["fileOver"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i4.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$4.UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "pipe", type: NaturalCapitalizePipe, name: "capitalize" }, { kind: "directive", type: NaturalBackgroundDensityDirective, selector: "[naturalBackgroundDensity]", inputs: ["naturalBackgroundDensity"] }] }); }
|
|
9303
9210
|
}
|
|
9304
9211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFileComponent, decorators: [{
|
|
9305
9212
|
type: Component,
|
|
@@ -9312,10 +9219,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
9312
9219
|
NaturalCapitalizePipe,
|
|
9313
9220
|
NaturalBackgroundDensityDirective,
|
|
9314
9221
|
], template: "<a\n (fileChange)=\"upload($event)\"\n naturalFileDrop\n [selectable]=\"true\"\n [accept]=\"accept\"\n [attr.href]=\"getDownloadLink()\"\n [class.has-action]=\"!!action\"\n [class.suggest-upload]=\"!model && action === 'upload'\"\n [fileSelectionDisabled]=\"action !== 'upload'\"\n [matRippleDisabled]=\"!action\"\n [naturalBackgroundDensity]=\"imagePreview\"\n [style.backgroundSize]=\"backgroundSize\"\n matRipple\n target=\"_blank\"\n>\n @if (filePreview) {\n <div class=\"file-preview\">\n <mat-icon [size]=\"height * 0.33\" naturalIcon=\"attachment\" />\n {{ filePreview | uppercase }}\n </div>\n }\n\n <div class=\"action-overlay\">\n @if (action === 'upload') {\n <mat-icon [size]=\"height * 0.66\" naturalIcon=\"cloud_upload\" />\n }\n @if (action === 'download') {\n <mat-icon [size]=\"height * 0.66\" naturalIcon=\"get_app\" />\n }\n {{ action | capitalize }}\n </div>\n</a>\n", styles: [":host{display:flex;position:relative;flex-direction:row;overflow:hidden}:host>a{position:relative;flex:1;background-position:center;background-repeat:no-repeat}:host>a.has-action{cursor:pointer}:host>a.has-action.suggest-upload .action-overlay{opacity:.66}:host>a.has-action:hover .action-overlay,:host>a.has-action.natural-file-over .action-overlay{opacity:1}:host .action-overlay,:host .file-preview{display:flex;position:absolute;inset:0;flex-direction:column;justify-content:center;align-items:center;font-size:36px;line-height:1.3em;text-align:center}:host .action-overlay{opacity:0}:host .action-overlay>div{display:flex;position:absolute;inset:0;justify-content:center;align-items:center;opacity:0}\n"] }]
|
|
9315
|
-
}],
|
|
9316
|
-
type: Inject,
|
|
9317
|
-
args: [DOCUMENT]
|
|
9318
|
-
}] }], propDecorators: { height: [{
|
|
9222
|
+
}], propDecorators: { height: [{
|
|
9319
9223
|
type: HostBinding,
|
|
9320
9224
|
args: ['style.height.px']
|
|
9321
9225
|
}, {
|
|
@@ -9347,7 +9251,7 @@ class NaturalFixedButtonComponent {
|
|
|
9347
9251
|
this.disabled = false;
|
|
9348
9252
|
}
|
|
9349
9253
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFixedButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9350
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalFixedButtonComponent, isStandalone: true, selector: "natural-fixed-button", inputs: { icon: "icon", link: "link", color: "color", disabled: "disabled" }, ngImport: i0, template: "<button [color]=\"color\" [disabled]=\"disabled\" [routerLink]=\"link\" mat-fab>\n <mat-icon [naturalIcon]=\"icon\" />\n</button>\n", styles: [":host{position:fixed!important;right:32px;bottom:32px;z-index:999}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
9254
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalFixedButtonComponent, isStandalone: true, selector: "natural-fixed-button", inputs: { icon: "icon", link: "link", color: "color", disabled: "disabled" }, ngImport: i0, template: "<button [color]=\"color\" [disabled]=\"disabled\" [routerLink]=\"link\" mat-fab>\n <mat-icon [naturalIcon]=\"icon\" />\n</button>\n", styles: [":host{position:fixed!important;right:32px;bottom:32px;z-index:999}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }] }); }
|
|
9351
9255
|
}
|
|
9352
9256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFixedButtonComponent, decorators: [{
|
|
9353
9257
|
type: Component,
|
|
@@ -9378,11 +9282,12 @@ class NaturalFixedButtonDetailComponent {
|
|
|
9378
9282
|
this.canChange = false;
|
|
9379
9283
|
}
|
|
9380
9284
|
}
|
|
9381
|
-
constructor(
|
|
9285
|
+
constructor() {
|
|
9382
9286
|
this.canChange = true;
|
|
9383
9287
|
this.isCreation = false;
|
|
9384
9288
|
this.create = new EventEmitter();
|
|
9385
9289
|
this.delete = new EventEmitter();
|
|
9290
|
+
const route = inject(ActivatedRoute);
|
|
9386
9291
|
route.params.pipe(takeUntilDestroyed()).subscribe(() => (this.canChange = true));
|
|
9387
9292
|
}
|
|
9388
9293
|
clickCreate() {
|
|
@@ -9395,13 +9300,13 @@ class NaturalFixedButtonDetailComponent {
|
|
|
9395
9300
|
this.delete.emit();
|
|
9396
9301
|
}
|
|
9397
9302
|
}
|
|
9398
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFixedButtonDetailComponent, deps: [
|
|
9399
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalFixedButtonDetailComponent, isStandalone: true, selector: "natural-fixed-button-detail", inputs: { model: "model", form: "form" }, outputs: { create: "create", delete: "delete" }, ngImport: i0, template: "@if (isCreation) {\n <natural-fixed-button\n (click)=\"clickCreate()\"\n [disabled]=\"form.disabled\"\n [color]=\"form.valid ? 'accent' : 'warn'\"\n class=\"detail-speed-dial\"\n icon=\"save\"\n />\n}\n\n@if (!isCreation && (!model.permissions || model.permissions.delete)) {\n <natural-fixed-button\n (click)=\"clickDelete()\"\n [disabled]=\"form.disabled\"\n class=\"detail-speed-dial\"\n color=\"warn\"\n icon=\"delete_forever\"\n i18n-matTooltip\n matTooltip=\"Supprimer d\u00E9finitivement\"\n matTooltipPosition=\"left\"\n />\n}\n", styles: [""], dependencies: [{ kind: "component", type: NaturalFixedButtonComponent, selector: "natural-fixed-button", inputs: ["icon", "link", "color", "disabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type:
|
|
9303
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFixedButtonDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9304
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalFixedButtonDetailComponent, isStandalone: true, selector: "natural-fixed-button-detail", inputs: { model: "model", form: "form" }, outputs: { create: "create", delete: "delete" }, ngImport: i0, template: "@if (isCreation) {\n <natural-fixed-button\n (click)=\"clickCreate()\"\n [disabled]=\"form.disabled\"\n [color]=\"form.valid ? 'accent' : 'warn'\"\n class=\"detail-speed-dial\"\n icon=\"save\"\n />\n}\n\n@if (!isCreation && (!model.permissions || model.permissions.delete)) {\n <natural-fixed-button\n (click)=\"clickDelete()\"\n [disabled]=\"form.disabled\"\n class=\"detail-speed-dial\"\n color=\"warn\"\n icon=\"delete_forever\"\n i18n-matTooltip\n matTooltip=\"Supprimer d\u00E9finitivement\"\n matTooltipPosition=\"left\"\n />\n}\n", styles: [""], dependencies: [{ kind: "component", type: NaturalFixedButtonComponent, selector: "natural-fixed-button", inputs: ["icon", "link", "color", "disabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] }); }
|
|
9400
9305
|
}
|
|
9401
9306
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalFixedButtonDetailComponent, decorators: [{
|
|
9402
9307
|
type: Component,
|
|
9403
9308
|
args: [{ selector: 'natural-fixed-button-detail', standalone: true, imports: [NaturalFixedButtonComponent, MatTooltipModule], template: "@if (isCreation) {\n <natural-fixed-button\n (click)=\"clickCreate()\"\n [disabled]=\"form.disabled\"\n [color]=\"form.valid ? 'accent' : 'warn'\"\n class=\"detail-speed-dial\"\n icon=\"save\"\n />\n}\n\n@if (!isCreation && (!model.permissions || model.permissions.delete)) {\n <natural-fixed-button\n (click)=\"clickDelete()\"\n [disabled]=\"form.disabled\"\n class=\"detail-speed-dial\"\n color=\"warn\"\n icon=\"delete_forever\"\n i18n-matTooltip\n matTooltip=\"Supprimer d\u00E9finitivement\"\n matTooltipPosition=\"left\"\n />\n}\n" }]
|
|
9404
|
-
}], ctorParameters: () => [
|
|
9309
|
+
}], ctorParameters: () => [], propDecorators: { model: [{
|
|
9405
9310
|
type: Input,
|
|
9406
9311
|
args: [{ required: true }]
|
|
9407
9312
|
}], form: [{
|
|
@@ -9418,8 +9323,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
9418
9323
|
*/
|
|
9419
9324
|
|
|
9420
9325
|
class NaturalHierarchicSelectorDialogComponent {
|
|
9421
|
-
constructor(
|
|
9422
|
-
this.dialogRef =
|
|
9326
|
+
constructor() {
|
|
9327
|
+
this.dialogRef = inject(MatDialogRef);
|
|
9328
|
+
const data = inject(MAT_DIALOG_DATA);
|
|
9423
9329
|
this.config = defaults(data, { multiple: true, allowUnselect: true });
|
|
9424
9330
|
this.searchSelectionsOutput = this.config.searchSelections;
|
|
9425
9331
|
}
|
|
@@ -9430,20 +9336,17 @@ class NaturalHierarchicSelectorDialogComponent {
|
|
|
9430
9336
|
};
|
|
9431
9337
|
this.dialogRef.close(result);
|
|
9432
9338
|
}
|
|
9433
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorDialogComponent, deps: [
|
|
9434
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalHierarchicSelectorDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<h2 i18n mat-dialog-title>S\u00E9lection</h2>\n\n<mat-dialog-content>\n <natural-hierarchic-selector\n (selectionChange)=\"config.hierarchicSelection = $event\"\n [selected]=\"config.hierarchicSelection ?? {}\"\n [config]=\"config.hierarchicConfig\"\n [filters]=\"config.hierarchicFilters\"\n [multiple]=\"config.multiple ?? false\"\n [allowUnselect]=\"config.allowUnselect ?? true\"\n [searchFacets]=\"config.searchFacets ?? []\"\n [searchSelections]=\"config.searchSelections ?? []\"\n (searchSelectionChange)=\"searchSelectionsOutput = $event\"\n />\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button mat-dialog-close mat-button i18n>Annuler</button>\n <button (click)=\"close(config.hierarchicSelection)\" color=\"primary\" mat-raised-button\n ><span i18n>Valider</span>\n </button>\n</mat-dialog-actions>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: NaturalHierarchicSelectorComponent, selector: "natural-hierarchic-selector", inputs: ["displayWith", "config", "multiple", "selected", "allowUnselect", "filters", "searchFacets", "searchSelections"], outputs: ["searchSelectionChange", "selectionChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type:
|
|
9339
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9340
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalHierarchicSelectorDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<h2 i18n mat-dialog-title>S\u00E9lection</h2>\n\n<mat-dialog-content>\n <natural-hierarchic-selector\n (selectionChange)=\"config.hierarchicSelection = $event\"\n [selected]=\"config.hierarchicSelection ?? {}\"\n [config]=\"config.hierarchicConfig\"\n [filters]=\"config.hierarchicFilters\"\n [multiple]=\"config.multiple ?? false\"\n [allowUnselect]=\"config.allowUnselect ?? true\"\n [searchFacets]=\"config.searchFacets ?? []\"\n [searchSelections]=\"config.searchSelections ?? []\"\n (searchSelectionChange)=\"searchSelectionsOutput = $event\"\n />\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button mat-dialog-close mat-button i18n>Annuler</button>\n <button (click)=\"close(config.hierarchicSelection)\" color=\"primary\" mat-raised-button\n ><span i18n>Valider</span>\n </button>\n</mat-dialog-actions>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: NaturalHierarchicSelectorComponent, selector: "natural-hierarchic-selector", inputs: ["displayWith", "config", "multiple", "selected", "allowUnselect", "filters", "searchFacets", "searchSelections"], outputs: ["searchSelectionChange", "selectionChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
|
|
9435
9341
|
}
|
|
9436
9342
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorDialogComponent, decorators: [{
|
|
9437
9343
|
type: Component,
|
|
9438
9344
|
args: [{ standalone: true, imports: [MatDialogModule, NaturalHierarchicSelectorComponent, MatButtonModule], template: "<h2 i18n mat-dialog-title>S\u00E9lection</h2>\n\n<mat-dialog-content>\n <natural-hierarchic-selector\n (selectionChange)=\"config.hierarchicSelection = $event\"\n [selected]=\"config.hierarchicSelection ?? {}\"\n [config]=\"config.hierarchicConfig\"\n [filters]=\"config.hierarchicFilters\"\n [multiple]=\"config.multiple ?? false\"\n [allowUnselect]=\"config.allowUnselect ?? true\"\n [searchFacets]=\"config.searchFacets ?? []\"\n [searchSelections]=\"config.searchSelections ?? []\"\n (searchSelectionChange)=\"searchSelectionsOutput = $event\"\n />\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button mat-dialog-close mat-button i18n>Annuler</button>\n <button (click)=\"close(config.hierarchicSelection)\" color=\"primary\" mat-raised-button\n ><span i18n>Valider</span>\n </button>\n</mat-dialog-actions>\n" }]
|
|
9439
|
-
}], ctorParameters: () => [
|
|
9440
|
-
type: Inject,
|
|
9441
|
-
args: [MAT_DIALOG_DATA]
|
|
9442
|
-
}] }, { type: i1.MatDialogRef }] });
|
|
9345
|
+
}], ctorParameters: () => [] });
|
|
9443
9346
|
|
|
9444
9347
|
class NaturalHierarchicSelectorDialogService {
|
|
9445
|
-
constructor(
|
|
9446
|
-
this.dialog =
|
|
9348
|
+
constructor() {
|
|
9349
|
+
this.dialog = inject(MatDialog);
|
|
9447
9350
|
}
|
|
9448
9351
|
open(hierarchicConfig, dialogConfig) {
|
|
9449
9352
|
const defaultDialogConfig = {
|
|
@@ -9452,13 +9355,13 @@ class NaturalHierarchicSelectorDialogService {
|
|
|
9452
9355
|
};
|
|
9453
9356
|
return this.dialog.open(NaturalHierarchicSelectorDialogComponent, defaults(dialogConfig, defaultDialogConfig));
|
|
9454
9357
|
}
|
|
9455
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorDialogService, deps: [
|
|
9358
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9456
9359
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorDialogService, providedIn: 'root' }); }
|
|
9457
9360
|
}
|
|
9458
9361
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalHierarchicSelectorDialogService, decorators: [{
|
|
9459
9362
|
type: Injectable,
|
|
9460
9363
|
args: [{ providedIn: 'root' }]
|
|
9461
|
-
}]
|
|
9364
|
+
}] });
|
|
9462
9365
|
|
|
9463
9366
|
/*
|
|
9464
9367
|
* Public API Surface of natural
|
|
@@ -9602,11 +9505,11 @@ class NaturalPanelsService {
|
|
|
9602
9505
|
static get opened() {
|
|
9603
9506
|
return this._opened;
|
|
9604
9507
|
}
|
|
9605
|
-
constructor(
|
|
9606
|
-
this.router =
|
|
9607
|
-
this.dialog =
|
|
9608
|
-
this.injector =
|
|
9609
|
-
this.hooksConfig =
|
|
9508
|
+
constructor() {
|
|
9509
|
+
this.router = inject(Router);
|
|
9510
|
+
this.dialog = inject(MatDialog);
|
|
9511
|
+
this.injector = inject(Injector);
|
|
9512
|
+
this.hooksConfig = inject(PanelsHooksConfig);
|
|
9610
9513
|
this.panelWidth = '960px';
|
|
9611
9514
|
/**
|
|
9612
9515
|
* Stream that emits when all open dialog have finished closing
|
|
@@ -9640,6 +9543,7 @@ class NaturalPanelsService {
|
|
|
9640
9543
|
* Used to change panels stack orientation on small screens
|
|
9641
9544
|
*/
|
|
9642
9545
|
this.isVertical = false;
|
|
9546
|
+
const breakpointObserver = inject(BreakpointObserver);
|
|
9643
9547
|
// Watch media to know if display panels horizontally or vertically
|
|
9644
9548
|
breakpointObserver
|
|
9645
9549
|
.observe(Breakpoints.XSmall)
|
|
@@ -9883,7 +9787,7 @@ class NaturalPanelsService {
|
|
|
9883
9787
|
dialog.updatePosition(position);
|
|
9884
9788
|
}
|
|
9885
9789
|
}
|
|
9886
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPanelsService, deps: [
|
|
9790
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPanelsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9887
9791
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPanelsService, providedIn: 'root' }); }
|
|
9888
9792
|
}
|
|
9889
9793
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPanelsService, decorators: [{
|
|
@@ -9891,22 +9795,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
9891
9795
|
args: [{
|
|
9892
9796
|
providedIn: 'root',
|
|
9893
9797
|
}]
|
|
9894
|
-
}], ctorParameters: () => [
|
|
9895
|
-
type: Inject,
|
|
9896
|
-
args: [PanelsHooksConfig]
|
|
9897
|
-
}] }, { type: i1$6.BreakpointObserver }] });
|
|
9798
|
+
}], ctorParameters: () => [] });
|
|
9898
9799
|
|
|
9899
9800
|
class NaturalPanelsComponent {
|
|
9900
9801
|
// PanelsComponent is kind of a "ghost" component to respond to an url matcher in route config,
|
|
9901
9802
|
// An UrlMatcher (matcher attribute) is required to catch urls with an undefined number of params in url after a given param /panels/
|
|
9902
|
-
constructor(
|
|
9903
|
-
this.panelsService =
|
|
9803
|
+
constructor() {
|
|
9804
|
+
this.panelsService = inject(NaturalPanelsService);
|
|
9805
|
+
const route = inject(ActivatedRoute);
|
|
9904
9806
|
this.panelsService.start(route);
|
|
9905
9807
|
}
|
|
9906
9808
|
ngOnDestroy() {
|
|
9907
9809
|
this.panelsService.stop();
|
|
9908
9810
|
}
|
|
9909
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPanelsComponent, deps: [
|
|
9811
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPanelsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9910
9812
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalPanelsComponent, isStandalone: true, selector: "natural-panels", ngImport: i0, template: '', isInline: true }); }
|
|
9911
9813
|
}
|
|
9912
9814
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalPanelsComponent, decorators: [{
|
|
@@ -9916,7 +9818,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
9916
9818
|
template: '',
|
|
9917
9819
|
standalone: true,
|
|
9918
9820
|
}]
|
|
9919
|
-
}], ctorParameters: () => [
|
|
9821
|
+
}], ctorParameters: () => [] });
|
|
9920
9822
|
|
|
9921
9823
|
/**
|
|
9922
9824
|
* Url fallback matcher to be used instead of `path: '**'` when Panel system
|
|
@@ -9944,24 +9846,11 @@ const fallbackIfNoOpenedPanels = (segments) => {
|
|
|
9944
9846
|
* </natural-relations>
|
|
9945
9847
|
* ```
|
|
9946
9848
|
*/
|
|
9947
|
-
class NaturalRelationsComponent
|
|
9948
|
-
|
|
9949
|
-
|
|
9950
|
-
|
|
9951
|
-
|
|
9952
|
-
this._service = service;
|
|
9953
|
-
this.loading = true;
|
|
9954
|
-
const items$ = this._service.watchAll(this.variablesManager).pipe(takeUntil(this.ngUnsubscribe), tap({
|
|
9955
|
-
next: () => (this.loading = false),
|
|
9956
|
-
complete: () => (this.loading = false),
|
|
9957
|
-
error: () => (this.loading = false),
|
|
9958
|
-
}));
|
|
9959
|
-
this.dataSource = new NaturalDataSource(items$);
|
|
9960
|
-
}
|
|
9961
|
-
constructor(linkMutationService, hierarchicSelectorDialog) {
|
|
9962
|
-
super();
|
|
9963
|
-
this.linkMutationService = linkMutationService;
|
|
9964
|
-
this.hierarchicSelectorDialog = hierarchicSelectorDialog;
|
|
9849
|
+
class NaturalRelationsComponent {
|
|
9850
|
+
constructor() {
|
|
9851
|
+
this.destroyRef = inject(DestroyRef);
|
|
9852
|
+
this.linkMutationService = inject(NaturalLinkMutationService);
|
|
9853
|
+
this.hierarchicSelectorDialog = inject(NaturalHierarchicSelectorDialogService);
|
|
9965
9854
|
/**
|
|
9966
9855
|
* The placeholder used in the button to add a new relation
|
|
9967
9856
|
*/
|
|
@@ -9990,6 +9879,19 @@ class NaturalRelationsComponent extends NaturalAbstractController {
|
|
|
9990
9879
|
this.variablesManager = new NaturalQueryVariablesManager();
|
|
9991
9880
|
this.removing = new Set();
|
|
9992
9881
|
}
|
|
9882
|
+
get service() {
|
|
9883
|
+
return this._service;
|
|
9884
|
+
}
|
|
9885
|
+
set service(service) {
|
|
9886
|
+
this._service = service;
|
|
9887
|
+
this.loading = true;
|
|
9888
|
+
const items$ = this._service.watchAll(this.variablesManager).pipe(takeUntilDestroyed(this.destroyRef), tap({
|
|
9889
|
+
next: () => (this.loading = false),
|
|
9890
|
+
complete: () => (this.loading = false),
|
|
9891
|
+
error: () => (this.loading = false),
|
|
9892
|
+
}));
|
|
9893
|
+
this.dataSource = new NaturalDataSource(items$);
|
|
9894
|
+
}
|
|
9993
9895
|
/**
|
|
9994
9896
|
* The filter used to filter relations
|
|
9995
9897
|
*
|
|
@@ -10086,8 +9988,8 @@ class NaturalRelationsComponent extends NaturalAbstractController {
|
|
|
10086
9988
|
}
|
|
10087
9989
|
return this.hierarchicSelectorConfig.find(c => !!c.selectableAtKey)?.selectableAtKey;
|
|
10088
9990
|
}
|
|
10089
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalRelationsComponent, deps: [
|
|
10090
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalRelationsComponent, isStandalone: true, selector: "natural-relations", inputs: { service: "service", placeholder: "placeholder", autocompleteSelectorFilter: "autocompleteSelectorFilter", displayWith: "displayWith", disabled: "disabled", main: "main", hierarchicSelectorFilters: "hierarchicSelectorFilters", hierarchicSelectorConfig: "hierarchicSelectorConfig", otherName: "otherName", filter: "filter" }, outputs: { selectionChange: "selectionChange" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "select", first: true, predicate: NaturalSelectComponent, descendants: true }],
|
|
9991
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalRelationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9992
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalRelationsComponent, isStandalone: true, selector: "natural-relations", inputs: { service: "service", placeholder: "placeholder", autocompleteSelectorFilter: "autocompleteSelectorFilter", displayWith: "displayWith", disabled: "disabled", main: "main", hierarchicSelectorFilters: "hierarchicSelectorFilters", hierarchicSelectorConfig: "hierarchicSelectorConfig", otherName: "otherName", filter: "filter" }, outputs: { selectionChange: "selectionChange" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "select", first: true, predicate: NaturalSelectComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"body\">\n <ng-template #defaultNameCell let-item=\"item\">\n {{ getDisplayFn()(item) }}\n </ng-template>\n\n <table [dataSource]=\"dataSource\" class=\"natural-row-click\" mat-table>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row style=\"display: none\"></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns\" mat-row></tr>\n\n <ng-container matColumnDef=\"name\">\n <th *matHeaderCellDef i18n mat-header-cell>Titre</th>\n <td *matCellDef=\"let item\" mat-cell>\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultNameCell\"\n />\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"unlink\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n @if (!disabled) {\n <button\n (click)=\"removeRelation(element)\"\n [disabled]=\"removing.has(element)\"\n color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n >\n <mat-icon naturalIcon=\"link_off\" />\n </button>\n }\n </td>\n </ng-container>\n </table>\n\n @if (dataSource.data && (dataSource.data.length || 0) > (dataSource.data.pageSize || 0)) {\n <mat-paginator\n (page)=\"pagination($event)\"\n [length]=\"dataSource.data.length || 0\"\n [pageIndex]=\"dataSource.data.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource.data.pageSize || 0\"\n />\n }\n\n @if (!loading && dataSource.data?.length === 0) {\n <div class=\"nat-margin-vertical mat-body\">\n <span i18n>Aucun r\u00E9sultat</span>\n </div>\n }\n\n @if (loading) {\n <mat-progress-spinner [diameter]=\"40\" class=\"loading\" mode=\"indeterminate\" />\n }\n</div>\n\n@if (!disabled) {\n @if (hierarchicSelectorConfig) {\n <div>\n <button (click)=\"openNaturalHierarchicSelector()\" color=\"primary\" mat-flat-button>{{ placeholder }}</button>\n </div>\n } @else {\n <natural-select\n (selectionChange)=\"addRelations([$event])\"\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter\"\n [placeholder]=\"placeholder\"\n [service]=\"service\"\n [showIcon]=\"false\"\n />\n }\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .body{display:flex;flex-direction:column}:host .loading{margin:20px auto}:host .mat-column-unlink{width:2.5em}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2$2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2$2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2$2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2$2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2$2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2$2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2$2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2$2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2$2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2$2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i6$2.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i8.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: NaturalSelectComponent, selector: "natural-select", inputs: ["service", "optionRequired", "searchField", "searchOperator", "filter", "disabled"] }] }); }
|
|
10091
9993
|
}
|
|
10092
9994
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalRelationsComponent, decorators: [{
|
|
10093
9995
|
type: Component,
|
|
@@ -10102,7 +10004,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
10102
10004
|
MatProgressSpinnerModule,
|
|
10103
10005
|
NaturalSelectComponent,
|
|
10104
10006
|
], template: "<div class=\"body\">\n <ng-template #defaultNameCell let-item=\"item\">\n {{ getDisplayFn()(item) }}\n </ng-template>\n\n <table [dataSource]=\"dataSource\" class=\"natural-row-click\" mat-table>\n <tr *matHeaderRowDef=\"displayedColumns\" mat-header-row style=\"display: none\"></tr>\n <tr *matRowDef=\"let row; columns: displayedColumns\" mat-row></tr>\n\n <ng-container matColumnDef=\"name\">\n <th *matHeaderCellDef i18n mat-header-cell>Titre</th>\n <td *matCellDef=\"let item\" mat-cell>\n <ng-template\n [ngTemplateOutletContext]=\"{item: item}\"\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultNameCell\"\n />\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"unlink\">\n <th *matHeaderCellDef mat-header-cell></th>\n <td *matCellDef=\"let element\" mat-cell>\n @if (!disabled) {\n <button\n (click)=\"removeRelation(element)\"\n [disabled]=\"removing.has(element)\"\n color=\"warn\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Dissocier\"\n >\n <mat-icon naturalIcon=\"link_off\" />\n </button>\n }\n </td>\n </ng-container>\n </table>\n\n @if (dataSource.data && (dataSource.data.length || 0) > (dataSource.data.pageSize || 0)) {\n <mat-paginator\n (page)=\"pagination($event)\"\n [length]=\"dataSource.data.length || 0\"\n [pageIndex]=\"dataSource.data.pageIndex || 0\"\n [pageSizeOptions]=\"pageSizeOptions\"\n [pageSize]=\"dataSource.data.pageSize || 0\"\n />\n }\n\n @if (!loading && dataSource.data?.length === 0) {\n <div class=\"nat-margin-vertical mat-body\">\n <span i18n>Aucun r\u00E9sultat</span>\n </div>\n }\n\n @if (loading) {\n <mat-progress-spinner [diameter]=\"40\" class=\"loading\" mode=\"indeterminate\" />\n }\n</div>\n\n@if (!disabled) {\n @if (hierarchicSelectorConfig) {\n <div>\n <button (click)=\"openNaturalHierarchicSelector()\" color=\"primary\" mat-flat-button>{{ placeholder }}</button>\n </div>\n } @else {\n <natural-select\n (selectionChange)=\"addRelations([$event])\"\n [displayWith]=\"$any(getDisplayFn())\"\n [filter]=\"autocompleteSelectorFilter\"\n [placeholder]=\"placeholder\"\n [service]=\"service\"\n [showIcon]=\"false\"\n />\n }\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .body{display:flex;flex-direction:column}:host .loading{margin:20px auto}:host .mat-column-unlink{width:2.5em}\n"] }]
|
|
10105
|
-
}],
|
|
10007
|
+
}], propDecorators: { select: [{
|
|
10106
10008
|
type: ViewChild,
|
|
10107
10009
|
args: [NaturalSelectComponent]
|
|
10108
10010
|
}], itemTemplate: [{
|
|
@@ -10139,9 +10041,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
10139
10041
|
*/
|
|
10140
10042
|
|
|
10141
10043
|
class NaturalSelectEnumComponent extends AbstractSelect {
|
|
10142
|
-
constructor(
|
|
10044
|
+
constructor() {
|
|
10045
|
+
const ngControl = inject(NgControl, { optional: true, self: true });
|
|
10143
10046
|
super(ngControl);
|
|
10144
|
-
this.enumService =
|
|
10047
|
+
this.enumService = inject(NaturalEnumService);
|
|
10145
10048
|
/**
|
|
10146
10049
|
* Whether the user should be allowed to select multiple options
|
|
10147
10050
|
*/
|
|
@@ -10154,17 +10057,13 @@ class NaturalSelectEnumComponent extends AbstractSelect {
|
|
|
10154
10057
|
getDisplayFn() {
|
|
10155
10058
|
throw new Error('This should never be called');
|
|
10156
10059
|
}
|
|
10157
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectEnumComponent, deps: [
|
|
10158
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalSelectEnumComponent, isStandalone: true, selector: "natural-select-enum", inputs: { enumName: "enumName", nullLabel: "nullLabel", optionDisabled: "optionDisabled", multiple: "multiple" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n <mat-select\n (selectionChange)=\"propagateValue($event.value)\"\n [formControl]=\"internalCtrl\"\n (blur)=\"onBlur()\"\n [errorStateMatcher]=\"matcher\"\n [multiple]=\"multiple\"\n >\n @if (nullLabel) {\n <mat-option [value]=\"null\">{{ nullLabel }}</mat-option>\n }\n @for (item of items | async; track item.value) {\n <mat-option [value]=\"item.value\" [disabled]=\"optionDisabled ? optionDisabled(item) : false\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type:
|
|
10060
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectEnumComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10061
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalSelectEnumComponent, isStandalone: true, selector: "natural-select-enum", inputs: { enumName: "enumName", nullLabel: "nullLabel", optionDisabled: "optionDisabled", multiple: "multiple" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n <mat-select\n (selectionChange)=\"propagateValue($event.value)\"\n [formControl]=\"internalCtrl\"\n (blur)=\"onBlur()\"\n [errorStateMatcher]=\"matcher\"\n [multiple]=\"multiple\"\n >\n @if (nullLabel) {\n <mat-option [value]=\"null\">{{ nullLabel }}</mat-option>\n }\n @for (item of items | async; track item.value) {\n <mat-option [value]=\"item.value\" [disabled]=\"optionDisabled ? optionDisabled(item) : false\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatOptionModule }] }); }
|
|
10159
10062
|
}
|
|
10160
10063
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectEnumComponent, decorators: [{
|
|
10161
10064
|
type: Component,
|
|
10162
10065
|
args: [{ selector: 'natural-select-enum', standalone: true, imports: [MatFormFieldModule, MatSelectModule, FormsModule, ReactiveFormsModule, CommonModule, MatOptionModule], template: "<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n <mat-select\n (selectionChange)=\"propagateValue($event.value)\"\n [formControl]=\"internalCtrl\"\n (blur)=\"onBlur()\"\n [errorStateMatcher]=\"matcher\"\n [multiple]=\"multiple\"\n >\n @if (nullLabel) {\n <mat-option [value]=\"null\">{{ nullLabel }}</mat-option>\n }\n @for (item of items | async; track item.value) {\n <mat-option [value]=\"item.value\" [disabled]=\"optionDisabled ? optionDisabled(item) : false\">\n {{ item.name }}\n </mat-option>\n }\n </mat-select>\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n", styles: [":host{display:flex;flex-direction:column}\n"] }]
|
|
10163
|
-
}], ctorParameters: () => [
|
|
10164
|
-
type: Optional
|
|
10165
|
-
}, {
|
|
10166
|
-
type: Self
|
|
10167
|
-
}] }], propDecorators: { enumName: [{
|
|
10066
|
+
}], ctorParameters: () => [], propDecorators: { enumName: [{
|
|
10168
10067
|
type: Input,
|
|
10169
10068
|
args: [{ required: true }]
|
|
10170
10069
|
}], nullLabel: [{
|
|
@@ -10201,9 +10100,10 @@ function defaultDisplayFn(item) {
|
|
|
10201
10100
|
* ```
|
|
10202
10101
|
*/
|
|
10203
10102
|
class NaturalSelectHierarchicComponent extends AbstractSelect {
|
|
10204
|
-
constructor(
|
|
10103
|
+
constructor() {
|
|
10104
|
+
const ngControl = inject(NgControl, { optional: true, self: true });
|
|
10205
10105
|
super(ngControl);
|
|
10206
|
-
this.hierarchicSelectorDialogService =
|
|
10106
|
+
this.hierarchicSelectorDialogService = inject(NaturalHierarchicSelectorDialogService);
|
|
10207
10107
|
/**
|
|
10208
10108
|
* Configuration for hierarchic relations
|
|
10209
10109
|
*
|
|
@@ -10283,8 +10183,8 @@ class NaturalSelectHierarchicComponent extends AbstractSelect {
|
|
|
10283
10183
|
getSelectKey() {
|
|
10284
10184
|
return this.config?.find(c => !!c.selectableAtKey)?.selectableAtKey;
|
|
10285
10185
|
}
|
|
10286
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectHierarchicComponent, deps: [
|
|
10287
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalSelectHierarchicComponent, isStandalone: true, selector: "natural-select-hierarchic", inputs: { selectLabel: "selectLabel", config: "config", filters: "filters" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n\n <!-- Input for hierarchical selector -->\n <input\n (blur)=\"blur.emit()\"\n (focus)=\"openDialog()\"\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n />\n\n <!-- Meta data -->\n @if (showIcon) {\n <mat-icon [naturalIcon]=\"icon\" matIconPrefix />\n }\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.value && internalCtrl.enabled && !clearLabel) {\n <button\n (click)=\"clear(); $event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"D\u00E9s\u00E9lectionner\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.value && navigateTo) {\n <button\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n >\n <mat-icon naturalIcon=\"open_in_browser\" />\n </button>\n }\n </div>\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n\n<!-- Additional (un)select/(un)link buttons for more visual cohesion with natural-relations --><!-- [clearLabel] and/or [selectLabel] has to be given as attribute input -->\n@if (showSelectButton() || showClearButton()) {\n <div class=\"external-buttons\">\n @if (showSelectButton()) {\n <button (click)=\"openDialog()\" color=\"primary\" mat-flat-button>{{ selectLabel }}</button>\n }\n @if (showClearButton()) {\n <button (click)=\"clear()\" color=\"warn\" mat-button>{{ clearLabel }}</button>\n }\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .external-buttons{display:flex;flex-direction:row}:host .external-buttons>*:not(:last-child){margin-right:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type:
|
|
10186
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectHierarchicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10187
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalSelectHierarchicComponent, isStandalone: true, selector: "natural-select-hierarchic", inputs: { selectLabel: "selectLabel", config: "config", filters: "filters" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n\n <!-- Input for hierarchical selector -->\n <input\n (blur)=\"blur.emit()\"\n (focus)=\"openDialog()\"\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n />\n\n <!-- Meta data -->\n @if (showIcon) {\n <mat-icon [naturalIcon]=\"icon\" matIconPrefix />\n }\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.value && internalCtrl.enabled && !clearLabel) {\n <button\n (click)=\"clear(); $event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"D\u00E9s\u00E9lectionner\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.value && navigateTo) {\n <button\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n >\n <mat-icon naturalIcon=\"open_in_browser\" />\n </button>\n }\n </div>\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n\n<!-- Additional (un)select/(un)link buttons for more visual cohesion with natural-relations --><!-- [clearLabel] and/or [selectLabel] has to be given as attribute input -->\n@if (showSelectButton() || showClearButton()) {\n <div class=\"external-buttons\">\n @if (showSelectButton()) {\n <button (click)=\"openDialog()\" color=\"primary\" mat-flat-button>{{ selectLabel }}</button>\n }\n @if (showClearButton()) {\n <button (click)=\"clear()\" color=\"warn\" mat-button>{{ clearLabel }}</button>\n }\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .external-buttons{display:flex;flex-direction:row}:host .external-buttons>*:not(:last-child){margin-right:10px}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$3.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i1$3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.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$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i6$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
10288
10188
|
}
|
|
10289
10189
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSelectHierarchicComponent, decorators: [{
|
|
10290
10190
|
type: Component,
|
|
@@ -10299,11 +10199,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
10299
10199
|
MatTooltipModule,
|
|
10300
10200
|
RouterLink,
|
|
10301
10201
|
], template: "<mat-form-field>\n <mat-label>{{ placeholder }}</mat-label>\n\n <!-- Input for hierarchical selector -->\n <input\n (blur)=\"blur.emit()\"\n (focus)=\"openDialog()\"\n [formControl]=\"internalCtrl\"\n [errorStateMatcher]=\"matcher\"\n aria-label=\"Recherche et s\u00E9lection\"\n i18n-aria-label\n matInput\n />\n\n <!-- Meta data -->\n @if (showIcon) {\n <mat-icon [naturalIcon]=\"icon\" matIconPrefix />\n }\n\n @if (hint) {\n <mat-hint>{{ hint }}</mat-hint>\n }\n\n <!-- Clear button -->\n <div matIconSuffix>\n @if (internalCtrl.value && internalCtrl.enabled && !clearLabel) {\n <button\n (click)=\"clear(); $event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"D\u00E9s\u00E9lectionner\"\n >\n <mat-icon naturalIcon=\"close\" />\n </button>\n }\n @if (internalCtrl.value && navigateTo) {\n <button\n [routerLink]=\"navigateTo\"\n (click)=\"$event.stopPropagation()\"\n mat-icon-button\n i18n-matTooltip\n matTooltip=\"Naviguer vers\"\n >\n <mat-icon naturalIcon=\"open_in_browser\" />\n </button>\n }\n </div>\n\n @if (hasRequiredError()) {\n <mat-error i18n>Ce champ est requis</mat-error>\n }\n</mat-form-field>\n\n<!-- Additional (un)select/(un)link buttons for more visual cohesion with natural-relations --><!-- [clearLabel] and/or [selectLabel] has to be given as attribute input -->\n@if (showSelectButton() || showClearButton()) {\n <div class=\"external-buttons\">\n @if (showSelectButton()) {\n <button (click)=\"openDialog()\" color=\"primary\" mat-flat-button>{{ selectLabel }}</button>\n }\n @if (showClearButton()) {\n <button (click)=\"clear()\" color=\"warn\" mat-button>{{ clearLabel }}</button>\n }\n </div>\n}\n", styles: [":host{display:flex;flex-direction:column}:host>*:not(:last-child){margin-bottom:20px}:host .external-buttons{display:flex;flex-direction:row}:host .external-buttons>*:not(:last-child){margin-right:10px}\n"] }]
|
|
10302
|
-
}], ctorParameters: () => [
|
|
10303
|
-
type: Optional
|
|
10304
|
-
}, {
|
|
10305
|
-
type: Self
|
|
10306
|
-
}] }], propDecorators: { selectLabel: [{
|
|
10202
|
+
}], ctorParameters: () => [], propDecorators: { selectLabel: [{
|
|
10307
10203
|
type: Input
|
|
10308
10204
|
}], config: [{
|
|
10309
10205
|
type: Input
|
|
@@ -10378,13 +10274,13 @@ function assert(value) {
|
|
|
10378
10274
|
* https://github.com/angular/material2/issues/6743
|
|
10379
10275
|
* Maybe the better is to wait next release
|
|
10380
10276
|
*/
|
|
10381
|
-
class NaturalSidenavService
|
|
10382
|
-
constructor(
|
|
10383
|
-
|
|
10384
|
-
this.breakpointObserver =
|
|
10385
|
-
this.router =
|
|
10386
|
-
this.sessionStorage =
|
|
10387
|
-
this.naturalSidenavStackService =
|
|
10277
|
+
class NaturalSidenavService {
|
|
10278
|
+
constructor() {
|
|
10279
|
+
this.destroyRef = inject(DestroyRef);
|
|
10280
|
+
this.breakpointObserver = inject(BreakpointObserver);
|
|
10281
|
+
this.router = inject(Router);
|
|
10282
|
+
this.sessionStorage = inject(SESSION_STORAGE);
|
|
10283
|
+
this.naturalSidenavStackService = inject(NaturalSidenavStackService);
|
|
10388
10284
|
/**
|
|
10389
10285
|
* Navigation modes
|
|
10390
10286
|
* First is for desktop view
|
|
@@ -10446,7 +10342,7 @@ class NaturalSidenavService extends NaturalAbstractController {
|
|
|
10446
10342
|
let oldIsBig = null;
|
|
10447
10343
|
this.breakpointObserver
|
|
10448
10344
|
.observe([Breakpoints.XSmall, Breakpoints.Small])
|
|
10449
|
-
.pipe(
|
|
10345
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
10450
10346
|
.subscribe(r => {
|
|
10451
10347
|
this._isMobileView = r.matches;
|
|
10452
10348
|
const isBig = !this._isMobileView;
|
|
@@ -10467,7 +10363,7 @@ class NaturalSidenavService extends NaturalAbstractController {
|
|
|
10467
10363
|
});
|
|
10468
10364
|
if (autoClose) {
|
|
10469
10365
|
this.router.events
|
|
10470
|
-
.pipe(
|
|
10366
|
+
.pipe(takeUntilDestroyed(this.destroyRef), filter(e => e instanceof NavigationEnd))
|
|
10471
10367
|
.subscribe(() => {
|
|
10472
10368
|
this.navItemClicked();
|
|
10473
10369
|
});
|
|
@@ -10546,16 +10442,13 @@ class NaturalSidenavService extends NaturalAbstractController {
|
|
|
10546
10442
|
this.sessionStorage.setItem(this.openedStorageKeyWithName, this.opened ? 'true' : 'false');
|
|
10547
10443
|
}
|
|
10548
10444
|
}
|
|
10549
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavService, deps: [
|
|
10445
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
10550
10446
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavService, providedIn: 'root' }); }
|
|
10551
10447
|
}
|
|
10552
10448
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavService, decorators: [{
|
|
10553
10449
|
type: Injectable,
|
|
10554
10450
|
args: [{ providedIn: 'root' }]
|
|
10555
|
-
}]
|
|
10556
|
-
type: Inject,
|
|
10557
|
-
args: [SESSION_STORAGE]
|
|
10558
|
-
}] }, { type: NaturalSidenavStackService }] });
|
|
10451
|
+
}] });
|
|
10559
10452
|
|
|
10560
10453
|
class NaturalSidenavComponent {
|
|
10561
10454
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -10571,8 +10464,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
10571
10464
|
}] });
|
|
10572
10465
|
|
|
10573
10466
|
class NaturalSidenavContainerComponent {
|
|
10574
|
-
constructor(
|
|
10575
|
-
this.sidenavService =
|
|
10467
|
+
constructor() {
|
|
10468
|
+
this.sidenavService = inject(NaturalSidenavService);
|
|
10576
10469
|
/**
|
|
10577
10470
|
* The side that the drawer is attached to
|
|
10578
10471
|
*/
|
|
@@ -10622,13 +10515,13 @@ class NaturalSidenavContainerComponent {
|
|
|
10622
10515
|
toggleMinimized() {
|
|
10623
10516
|
this.sidenavService.toggleMinimized();
|
|
10624
10517
|
}
|
|
10625
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavContainerComponent, deps: [
|
|
10626
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalSidenavContainerComponent, isStandalone: true, selector: "natural-sidenav-container", inputs: { name: "name", position: "position", mobileAutoClose: "mobileAutoClose", minimizedWidth: "minimizedWidth", noScroll: "noScroll" }, host: { properties: { "attr.no-scroll": "this.noScroll" } }, providers: [NaturalSidenavService], viewQueries: [{ propertyName: "menuSidenav", first: true, predicate: MatSidenav, descendants: true, static: true }], ngImport: i0, template: "<mat-sidenav-container (backdropClick)=\"sidenavService.setOpened(false)\">\n <mat-sidenav\n [mode]=\"sidenavService.activeMode\"\n [ngClass]=\"sidenavService.isMinimized ? 'menuMinimized' : ''\"\n [opened]=\"sidenavService.isOpened\"\n [style.min-width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [style.width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [position]=\"position\"\n >\n <ng-content select=\"natural-sidenav\" />\n </mat-sidenav>\n\n <mat-sidenav-content>\n <div>\n <ng-content select=\"natural-sidenav-content\" />\n </div>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [":host{display:flex;flex-direction:column}:host mat-sidenav-container{display:flex;flex:1;flex-direction:column}:host mat-sidenav-content>div{overflow:auto}:host .menuMinimized{overflow-x:hidden}:host .buttons{display:flex;flex-direction:row;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type:
|
|
10518
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10519
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.3", type: NaturalSidenavContainerComponent, isStandalone: true, selector: "natural-sidenav-container", inputs: { name: "name", position: "position", mobileAutoClose: "mobileAutoClose", minimizedWidth: "minimizedWidth", noScroll: "noScroll" }, host: { properties: { "attr.no-scroll": "this.noScroll" } }, providers: [NaturalSidenavService], viewQueries: [{ propertyName: "menuSidenav", first: true, predicate: MatSidenav, descendants: true, static: true }], ngImport: i0, template: "<mat-sidenav-container (backdropClick)=\"sidenavService.setOpened(false)\">\n <mat-sidenav\n [mode]=\"sidenavService.activeMode\"\n [ngClass]=\"sidenavService.isMinimized ? 'menuMinimized' : ''\"\n [opened]=\"sidenavService.isOpened\"\n [style.min-width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [style.width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [position]=\"position\"\n >\n <ng-content select=\"natural-sidenav\" />\n </mat-sidenav>\n\n <mat-sidenav-content>\n <div>\n <ng-content select=\"natural-sidenav-content\" />\n </div>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [":host{display:flex;flex-direction:column}:host mat-sidenav-container{display:flex;flex:1;flex-direction:column}:host mat-sidenav-content>div{overflow:auto}:host .menuMinimized{overflow-x:hidden}:host .buttons{display:flex;flex-direction:row;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i1$6.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i1$6.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i1$6.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
10627
10520
|
}
|
|
10628
10521
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalSidenavContainerComponent, decorators: [{
|
|
10629
10522
|
type: Component,
|
|
10630
10523
|
args: [{ selector: 'natural-sidenav-container', providers: [NaturalSidenavService], standalone: true, imports: [MatSidenavModule, CommonModule], template: "<mat-sidenav-container (backdropClick)=\"sidenavService.setOpened(false)\">\n <mat-sidenav\n [mode]=\"sidenavService.activeMode\"\n [ngClass]=\"sidenavService.isMinimized ? 'menuMinimized' : ''\"\n [opened]=\"sidenavService.isOpened\"\n [style.min-width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [style.width.px]=\"sidenavService.isMinimized && minimizedWidth ? minimizedWidth : null\"\n [position]=\"position\"\n >\n <ng-content select=\"natural-sidenav\" />\n </mat-sidenav>\n\n <mat-sidenav-content>\n <div>\n <ng-content select=\"natural-sidenav-content\" />\n </div>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [":host{display:flex;flex-direction:column}:host mat-sidenav-container{display:flex;flex:1;flex-direction:column}:host mat-sidenav-content>div{overflow:auto}:host .menuMinimized{overflow-x:hidden}:host .buttons{display:flex;flex-direction:row;justify-content:flex-end}\n"] }]
|
|
10631
|
-
}],
|
|
10524
|
+
}], propDecorators: { name: [{
|
|
10632
10525
|
type: Input,
|
|
10633
10526
|
args: [{ required: true }]
|
|
10634
10527
|
}], position: [{
|
|
@@ -10718,7 +10611,7 @@ class NaturalTableButtonComponent {
|
|
|
10718
10611
|
}
|
|
10719
10612
|
}
|
|
10720
10613
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalTableButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10721
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalTableButtonComponent, isStandalone: true, selector: "natural-table-button", inputs: { queryParams: "queryParams", queryParamsHandling: "queryParamsHandling", label: "label", icon: "icon", href: "href", navigate: "navigate", fragment: "fragment", preserveFragment: "preserveFragment", disabled: "disabled", raised: "raised", color: "color" }, outputs: { buttonClick: "buttonClick" }, usesOnChanges: true, ngImport: i0, template: "<!-- Because directives can't be applied conditionally (routerLink, mat-button and mat-icon-button), we have to use different elements -->\n\n<!-- Edge case of a button without any kind of link at all -->\n@if (type === 'none') {\n <span>\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n @if (label) {\n <span>{{ label }}</span>\n }\n </span>\n}\n\n@if (!raised) {\n <!-- App routed link with label... -->\n @if (type === 'routerLink' && label) {\n <a\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n [disabled]=\"disabled\"\n mat-button\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'routerLink' && !label) {\n <a\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n [disabled]=\"disabled\"\n mat-icon-button\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n <!-- Click with label... -->\n @if (type === 'click' && label) {\n <a [color]=\"color\" (click)=\"buttonClick.emit($event)\" [disabled]=\"disabled\" mat-button>\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'click' && !label) {\n <a (click)=\"buttonClick.emit($event)\" [disabled]=\"disabled\" mat-icon-button>\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n <!-- External link with label... -->\n @if (type === 'href' && label) {\n <a [attr.href]=\"href\" [color]=\"color\" [disabled]=\"disabled\" mat-button target=\"_blank\">\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'href' && !label) {\n <a [attr.href]=\"href\" [color]=\"color\" [disabled]=\"disabled\" mat-icon-button target=\"_blank\">\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n}\n\n@if (raised) {\n <!-- App routed link with label... -->\n @if (type === 'routerLink' && label) {\n <a\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n [disabled]=\"disabled\"\n mat-raised-button\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'routerLink' && !label) {\n <a\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n [disabled]=\"disabled\"\n mat-icon-button\n class=\"mat-elevation-z4\"\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n <!-- Click with label... -->\n @if (type === 'click' && label) {\n <a [color]=\"color\" [disabled]=\"disabled\" (click)=\"buttonClick.emit($event)\" mat-raised-button>\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'click' && !label) {\n <a\n [color]=\"color\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick.emit($event)\"\n mat-icon-button\n class=\"mat-elevation-z4\"\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n <!-- External link with label... -->\n @if (type === 'href' && label) {\n <a [attr.href]=\"href\" [color]=\"color\" [disabled]=\"disabled\" mat-raised-button target=\"_blank\">\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'href' && !label) {\n <a\n [attr.href]=\"href\"\n [color]=\"color\"\n [disabled]=\"disabled\"\n mat-icon-button\n class=\"mat-elevation-z4\"\n target=\"_blank\"\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n}\n", styles: ["natural-table-button{display:flex;flex:1;flex-direction:row;justify-content:flex-start;align-items:center}natural-table-button mat-icon:not(:last-child){margin-right:5px}natural-table-button a.mat-mdc-button{display:flex;flex:1;flex-direction:row;justify-content:flex-start;align-items:center}natural-table-button a.mat-mdc-button .mdc-button__label{display:flex;flex-direction:row;align-items:center}natural-table-button>span{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:0 8px}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type:
|
|
10614
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalTableButtonComponent, isStandalone: true, selector: "natural-table-button", inputs: { queryParams: "queryParams", queryParamsHandling: "queryParamsHandling", label: "label", icon: "icon", href: "href", navigate: "navigate", fragment: "fragment", preserveFragment: "preserveFragment", disabled: "disabled", raised: "raised", color: "color" }, outputs: { buttonClick: "buttonClick" }, usesOnChanges: true, ngImport: i0, template: "<!-- Because directives can't be applied conditionally (routerLink, mat-button and mat-icon-button), we have to use different elements -->\n\n<!-- Edge case of a button without any kind of link at all -->\n@if (type === 'none') {\n <span>\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n @if (label) {\n <span>{{ label }}</span>\n }\n </span>\n}\n\n@if (!raised) {\n <!-- App routed link with label... -->\n @if (type === 'routerLink' && label) {\n <a\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n [disabled]=\"disabled\"\n mat-button\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'routerLink' && !label) {\n <a\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n [disabled]=\"disabled\"\n mat-icon-button\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n <!-- Click with label... -->\n @if (type === 'click' && label) {\n <a [color]=\"color\" (click)=\"buttonClick.emit($event)\" [disabled]=\"disabled\" mat-button>\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'click' && !label) {\n <a (click)=\"buttonClick.emit($event)\" [disabled]=\"disabled\" mat-icon-button>\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n <!-- External link with label... -->\n @if (type === 'href' && label) {\n <a [attr.href]=\"href\" [color]=\"color\" [disabled]=\"disabled\" mat-button target=\"_blank\">\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'href' && !label) {\n <a [attr.href]=\"href\" [color]=\"color\" [disabled]=\"disabled\" mat-icon-button target=\"_blank\">\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n}\n\n@if (raised) {\n <!-- App routed link with label... -->\n @if (type === 'routerLink' && label) {\n <a\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n [disabled]=\"disabled\"\n mat-raised-button\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'routerLink' && !label) {\n <a\n [color]=\"color\"\n [queryParams]=\"queryParams\"\n [queryParamsHandling]=\"queryParamsHandling\"\n [routerLink]=\"navigate\"\n [fragment]=\"fragment\"\n [preserveFragment]=\"preserveFragment\"\n [disabled]=\"disabled\"\n mat-icon-button\n class=\"mat-elevation-z4\"\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n <!-- Click with label... -->\n @if (type === 'click' && label) {\n <a [color]=\"color\" [disabled]=\"disabled\" (click)=\"buttonClick.emit($event)\" mat-raised-button>\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'click' && !label) {\n <a\n [color]=\"color\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick.emit($event)\"\n mat-icon-button\n class=\"mat-elevation-z4\"\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n <!-- External link with label... -->\n @if (type === 'href' && label) {\n <a [attr.href]=\"href\" [color]=\"color\" [disabled]=\"disabled\" mat-raised-button target=\"_blank\">\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n <span>{{ label }}</span>\n </a>\n }\n <!-- ... and without label -->\n @if (type === 'href' && !label) {\n <a\n [attr.href]=\"href\"\n [color]=\"color\"\n [disabled]=\"disabled\"\n mat-icon-button\n class=\"mat-elevation-z4\"\n target=\"_blank\"\n >\n @if (icon) {\n <mat-icon [naturalIcon]=\"icon\" />\n }\n </a>\n }\n}\n", styles: ["natural-table-button{display:flex;flex:1;flex-direction:row;justify-content:flex-start;align-items:center}natural-table-button mat-icon:not(:last-child){margin-right:5px}natural-table-button a.mat-mdc-button{display:flex;flex:1;flex-direction:row;justify-content:flex-start;align-items:center}natural-table-button a.mat-mdc-button .mdc-button__label{display:flex;flex-direction:row;align-items:center}natural-table-button>span{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;padding:0 8px}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: NaturalIconDirective, selector: "mat-icon[naturalIcon]", inputs: ["naturalIcon", "size"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
10722
10615
|
}
|
|
10723
10616
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalTableButtonComponent, decorators: [{
|
|
10724
10617
|
type: Component,
|
|
@@ -11120,8 +11013,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
11120
11013
|
* Show an avatar from different sources
|
|
11121
11014
|
*/
|
|
11122
11015
|
class NaturalAvatarComponent {
|
|
11123
|
-
constructor(
|
|
11124
|
-
this.avatarService =
|
|
11016
|
+
constructor() {
|
|
11017
|
+
this.avatarService = inject(AvatarService);
|
|
11125
11018
|
this.size = 50;
|
|
11126
11019
|
this.decorated = true;
|
|
11127
11020
|
this.textSizeRatio = 2.25;
|
|
@@ -11237,7 +11130,7 @@ class NaturalAvatarComponent {
|
|
|
11237
11130
|
height: this.size + 'px',
|
|
11238
11131
|
};
|
|
11239
11132
|
}
|
|
11240
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAvatarComponent, deps: [
|
|
11133
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11241
11134
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.3", type: NaturalAvatarComponent, isStandalone: true, selector: "natural-avatar", inputs: { image: "image", initials: "initials", gravatar: "gravatar", size: "size", decorated: "decorated", textSizeRatio: "textSizeRatio", bgColor: "bgColor", fgColor: "fgColor", borderRadius: "borderRadius", textMaximumLength: "textMaximumLength" }, host: { properties: { "style.height.px": "this.size", "style.width.px": "this.size", "class.decorated": "this.decorated" } }, usesOnChanges: true, ngImport: i0, template: `
|
|
11242
11135
|
<div class="avatar-container" [ngStyle]="hostStyle">
|
|
11243
11136
|
@if (avatarSrc) {
|
|
@@ -11257,7 +11150,7 @@ class NaturalAvatarComponent {
|
|
|
11257
11150
|
</div>
|
|
11258
11151
|
}
|
|
11259
11152
|
</div>
|
|
11260
|
-
`, isInline: true, styles: [":host{display:block}:host.decorated{position:relative}:host.decorated .avatar-container:before{position:absolute;inset:0;border-radius:50%;background:linear-gradient(345deg,#fff0 25%,#ffffff54);content:\"\"}:host.decorated .avatar-content{text-shadow:0 1px 0 rgba(0,0,0,.6)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type:
|
|
11153
|
+
`, isInline: true, styles: [":host{display:block}:host.decorated{position:relative}:host.decorated .avatar-container:before{position:absolute;inset:0;border-radius:50%;background:linear-gradient(345deg,#fff0 25%,#ffffff54);content:\"\"}:host.decorated .avatar-content{text-shadow:0 1px 0 rgba(0,0,0,.6)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
11261
11154
|
}
|
|
11262
11155
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalAvatarComponent, decorators: [{
|
|
11263
11156
|
type: Component,
|
|
@@ -11281,7 +11174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
11281
11174
|
}
|
|
11282
11175
|
</div>
|
|
11283
11176
|
`, standalone: true, imports: [CommonModule], styles: [":host{display:block}:host.decorated{position:relative}:host.decorated .avatar-container:before{position:absolute;inset:0;border-radius:50%;background:linear-gradient(345deg,#fff0 25%,#ffffff54);content:\"\"}:host.decorated .avatar-content{text-shadow:0 1px 0 rgba(0,0,0,.6)}\n"] }]
|
|
11284
|
-
}],
|
|
11177
|
+
}], propDecorators: { image: [{
|
|
11285
11178
|
type: Input
|
|
11286
11179
|
}], initials: [{
|
|
11287
11180
|
type: Input
|
|
@@ -11322,14 +11215,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
11322
11215
|
* @dynamic
|
|
11323
11216
|
*/
|
|
11324
11217
|
class NaturalMatomoService {
|
|
11325
|
-
constructor(
|
|
11326
|
-
this.router =
|
|
11327
|
-
this.document =
|
|
11328
|
-
this.
|
|
11329
|
-
this.
|
|
11218
|
+
constructor() {
|
|
11219
|
+
this.router = inject(Router);
|
|
11220
|
+
this.document = inject(DOCUMENT);
|
|
11221
|
+
this.titleService = inject(Title);
|
|
11222
|
+
this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
|
|
11330
11223
|
this.subscription = null;
|
|
11331
11224
|
this.referrerUrl = '';
|
|
11332
|
-
this.isBrowser = isPlatformBrowser(platformId);
|
|
11333
11225
|
const window = this.document.defaultView;
|
|
11334
11226
|
if (!window) {
|
|
11335
11227
|
throw new Error('Could not init MatomoService `window` is undefined');
|
|
@@ -11397,7 +11289,7 @@ class NaturalMatomoService {
|
|
|
11397
11289
|
this.referrerUrl = currentUrl;
|
|
11398
11290
|
});
|
|
11399
11291
|
}
|
|
11400
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalMatomoService, deps: [
|
|
11292
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalMatomoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11401
11293
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalMatomoService, providedIn: 'root' }); }
|
|
11402
11294
|
}
|
|
11403
11295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalMatomoService, decorators: [{
|
|
@@ -11405,13 +11297,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
11405
11297
|
args: [{
|
|
11406
11298
|
providedIn: 'root',
|
|
11407
11299
|
}]
|
|
11408
|
-
}], ctorParameters: () => [
|
|
11409
|
-
type: Inject,
|
|
11410
|
-
args: [DOCUMENT]
|
|
11411
|
-
}] }, { type: undefined, decorators: [{
|
|
11412
|
-
type: Inject,
|
|
11413
|
-
args: [PLATFORM_ID]
|
|
11414
|
-
}] }, { type: i2$4.Title }] });
|
|
11300
|
+
}], ctorParameters: () => [] });
|
|
11415
11301
|
|
|
11416
11302
|
/*
|
|
11417
11303
|
* Public API Surface of natural
|
|
@@ -11429,12 +11315,12 @@ const NaturalLoggerConfigExtra = new InjectionToken('Class that may provide extr
|
|
|
11429
11315
|
* ```
|
|
11430
11316
|
*/
|
|
11431
11317
|
class NaturalErrorHandler extends ErrorHandler {
|
|
11432
|
-
constructor(
|
|
11318
|
+
constructor() {
|
|
11433
11319
|
super();
|
|
11434
|
-
this.http =
|
|
11435
|
-
this.document =
|
|
11436
|
-
this.url =
|
|
11437
|
-
this.loggerExtra =
|
|
11320
|
+
this.http = inject(HttpClient);
|
|
11321
|
+
this.document = inject(DOCUMENT);
|
|
11322
|
+
this.url = inject(NaturalLoggerConfigUrl, { optional: true });
|
|
11323
|
+
this.loggerExtra = inject(NaturalLoggerConfigExtra, { optional: true });
|
|
11438
11324
|
}
|
|
11439
11325
|
handleError(error) {
|
|
11440
11326
|
console.error(error);
|
|
@@ -11489,7 +11375,7 @@ class NaturalErrorHandler extends ErrorHandler {
|
|
|
11489
11375
|
.subscribe();
|
|
11490
11376
|
}
|
|
11491
11377
|
}
|
|
11492
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalErrorHandler, deps: [
|
|
11378
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalErrorHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11493
11379
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalErrorHandler, providedIn: 'root' }); }
|
|
11494
11380
|
}
|
|
11495
11381
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImport: i0, type: NaturalErrorHandler, decorators: [{
|
|
@@ -11497,20 +11383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.3", ngImpor
|
|
|
11497
11383
|
args: [{
|
|
11498
11384
|
providedIn: 'root',
|
|
11499
11385
|
}]
|
|
11500
|
-
}], ctorParameters: () => [
|
|
11501
|
-
type: Inject,
|
|
11502
|
-
args: [DOCUMENT]
|
|
11503
|
-
}] }, { type: undefined, decorators: [{
|
|
11504
|
-
type: Optional
|
|
11505
|
-
}, {
|
|
11506
|
-
type: Inject,
|
|
11507
|
-
args: [NaturalLoggerConfigUrl]
|
|
11508
|
-
}] }, { type: undefined, decorators: [{
|
|
11509
|
-
type: Optional
|
|
11510
|
-
}, {
|
|
11511
|
-
type: Inject,
|
|
11512
|
-
args: [NaturalLoggerConfigExtra]
|
|
11513
|
-
}] }] });
|
|
11386
|
+
}], ctorParameters: () => [] });
|
|
11514
11387
|
|
|
11515
11388
|
function provideErrorHandler(url, extraService) {
|
|
11516
11389
|
const providers = [
|
|
@@ -11636,5 +11509,5 @@ function graphqlQuerySigner(key) {
|
|
|
11636
11509
|
* Generated bundle index. Do not edit.
|
|
11637
11510
|
*/
|
|
11638
11511
|
|
|
11639
|
-
export { AvatarService, InvalidWithValueStateMatcher$1 as InvalidWithValueStateMatcher, LOCAL_STORAGE, NATURAL_DROPDOWN_DATA, NATURAL_ICONS_CONFIG, NATURAL_PERSISTENCE_VALIDATOR, NATURAL_SEO_CONFIG,
|
|
11512
|
+
export { AvatarService, InvalidWithValueStateMatcher$1 as InvalidWithValueStateMatcher, LOCAL_STORAGE, NATURAL_DROPDOWN_DATA, NATURAL_ICONS_CONFIG, NATURAL_PERSISTENCE_VALIDATOR, NATURAL_SEO_CONFIG, NaturalAbstractDetail, NaturalAbstractEditableList, NaturalAbstractList, NaturalAbstractModelService, NaturalAbstractNavigableList, NaturalAbstractPanel, NaturalAlertService, NaturalAvatarComponent, NaturalBackgroundDensityDirective, NaturalCapitalizePipe, NaturalColumnsPickerComponent, NaturalConfirmComponent, NaturalDataSource, NaturalDebounceService, NaturalDetailHeaderComponent, NaturalDialogTriggerComponent, NaturalDropdownRef, NaturalEllipsisPipe, NaturalEnumPipe, NaturalEnumService, NaturalErrorHandler, NaturalFileComponent, NaturalFileDropDirective, NaturalFileSelectDirective, NaturalFileService, NaturalFixedButtonComponent, NaturalFixedButtonDetailComponent, NaturalHierarchicSelectorComponent, NaturalHierarchicSelectorDialogComponent, NaturalHierarchicSelectorDialogService, NaturalHierarchicSelectorService, NaturalHttpPrefixDirective, NaturalIconDirective, NaturalLinkMutationService, NaturalLinkableTabDirective, NaturalLoggerConfigExtra, NaturalLoggerConfigUrl, NaturalMatomoService, NaturalMemoryStorage, NaturalPanelsComponent, NaturalPanelsService, NaturalPersistenceService, NaturalQueryVariablesManager, NaturalRelationsComponent, NaturalSearchComponent, NaturalSelectComponent, NaturalSelectEnumComponent, NaturalSelectHierarchicComponent, NaturalSeoService, NaturalSidenavComponent, NaturalSidenavContainerComponent, NaturalSidenavContentComponent, NaturalSidenavService, NaturalSidenavStackService, NaturalSrcDensityDirective, NaturalStampComponent, NaturalSwissParsingDateAdapter, NaturalTableButtonComponent, NaturalTimeAgoPipe, PanelsHooksConfig, SESSION_STORAGE, SortingOrder, TypeBooleanComponent, TypeDateComponent, TypeDateRangeComponent, TypeHierarchicSelectorComponent, TypeNaturalSelectComponent, TypeNumberComponent, TypeOptionsComponent, TypeSelectComponent, TypeTextComponent, available, cancellableTimeout, collectErrors, copyToClipboard, createHttpLink, debug, decimal, deepFreeze, deliverableEmail, ensureHttpPrefix, fallbackIfNoOpenedPanels, formatIsoDate, formatIsoDateTime, fromUrl, getForegroundColor, graphqlQuerySigner, ifValid, integer, localStorageFactory, localStorageProvider, makePlural, memoryLocalStorageProvider, memorySessionStorageProvider, mergeOverrideArray, money, naturalPanelsUrlMatcher, naturalProviders, possibleComparableOperators, provideErrorHandler, provideIcons, providePanels, provideSeo, relationsToIds, replaceObjectKeepingReference, replaceOperatorByField, replaceOperatorByName, sessionStorageFactory, sessionStorageProvider, toGraphQLDoctrineFilter, toNavigationParameters, toUrl, unique, upperCaseFirstLetter, urlValidator, validTlds, validateAllFormControls, validateColumns, validatePagination, validateSorting, wrapLike, wrapPrefix, wrapSuffix };
|
|
11640
11513
|
//# sourceMappingURL=ecodev-natural.mjs.map
|